/******/ (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, {
/******/ 				configurable: false,
/******/ 				enumerable: true,
/******/ 				get: getter
/******/ 			});
/******/ 		}
/******/ 	};
/******/
/******/ 	// 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 = 85);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports) {

eval("if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n      constructor: {\n        value: ctor,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    var TempCtor = function () {}\n    TempCtor.prototype = superCtor.prototype\n    ctor.prototype = new TempCtor()\n    ctor.prototype.constructor = ctor\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9pbmhlcml0cy9pbmhlcml0c19icm93c2VyLmpzPzJjMmUiXSwic291cmNlc0NvbnRlbnQiOlsiaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gIC8vIGltcGxlbWVudGF0aW9uIGZyb20gc3RhbmRhcmQgbm9kZS5qcyAndXRpbCcgbW9kdWxlXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICBjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDdG9yLnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IGN0b3IsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG59IGVsc2Uge1xuICAvLyBvbGQgc2Nob29sIHNoaW0gZm9yIG9sZCBicm93c2Vyc1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge31cbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlXG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKVxuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvclxuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9pbmhlcml0cy9pbmhlcml0c19icm93c2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///0\n");

/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(5)\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zYWZlLWJ1ZmZlci9pbmRleC5qcz81Zjc5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vZGUvbm8tZGVwcmVjYXRlZC1hcGkgKi9cbnZhciBidWZmZXIgPSByZXF1aXJlKCdidWZmZXInKVxudmFyIEJ1ZmZlciA9IGJ1ZmZlci5CdWZmZXJcblxuLy8gYWx0ZXJuYXRpdmUgdG8gdXNpbmcgT2JqZWN0LmtleXMgZm9yIG9sZCBicm93c2Vyc1xuZnVuY3Rpb24gY29weVByb3BzIChzcmMsIGRzdCkge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgZHN0W2tleV0gPSBzcmNba2V5XVxuICB9XG59XG5pZiAoQnVmZmVyLmZyb20gJiYgQnVmZmVyLmFsbG9jICYmIEJ1ZmZlci5hbGxvY1Vuc2FmZSAmJiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KSB7XG4gIG1vZHVsZS5leHBvcnRzID0gYnVmZmVyXG59IGVsc2Uge1xuICAvLyBDb3B5IHByb3BlcnRpZXMgZnJvbSByZXF1aXJlKCdidWZmZXInKVxuICBjb3B5UHJvcHMoYnVmZmVyLCBleHBvcnRzKVxuICBleHBvcnRzLkJ1ZmZlciA9IFNhZmVCdWZmZXJcbn1cblxuZnVuY3Rpb24gU2FmZUJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuLy8gQ29weSBzdGF0aWMgbWV0aG9kcyBmcm9tIEJ1ZmZlclxuY29weVByb3BzKEJ1ZmZlciwgU2FmZUJ1ZmZlcilcblxuU2FmZUJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5TYWZlQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICB2YXIgYnVmID0gQnVmZmVyKHNpemUpXG4gIGlmIChmaWxsICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykge1xuICAgICAgYnVmLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGJ1Zi5maWxsKDApXG4gIH1cbiAgcmV0dXJuIGJ1ZlxufVxuXG5TYWZlQnVmZmVyLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBCdWZmZXIoc2l6ZSlcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlci5TbG93QnVmZmVyKHNpemUpXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9zYWZlLWJ1ZmZlci9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n");

/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Helper = exports.Resources = exports.HTMLOperate = exports.StringUtil = exports.Sequence = exports.Graphics = exports.AuxiliaryLine = exports.Archor = exports.Api = undefined;\n\nvar _Api = __webpack_require__(87);\n\nvar _Api2 = _interopRequireDefault(_Api);\n\nvar _Archor = __webpack_require__(88);\n\nvar _Archor2 = _interopRequireDefault(_Archor);\n\nvar _AuxiliaryLine = __webpack_require__(89);\n\nvar _AuxiliaryLine2 = _interopRequireDefault(_AuxiliaryLine);\n\nvar _Graphics = __webpack_require__(44);\n\nvar _Graphics2 = _interopRequireDefault(_Graphics);\n\nvar _Sequence = __webpack_require__(90);\n\nvar _Sequence2 = _interopRequireDefault(_Sequence);\n\nvar _StringUtil = __webpack_require__(91);\n\nvar _StringUtil2 = _interopRequireDefault(_StringUtil);\n\nvar _HTMLOperate = __webpack_require__(92);\n\nvar _HTMLOperate2 = _interopRequireDefault(_HTMLOperate);\n\nvar _Resources = __webpack_require__(93);\n\nvar _Resources2 = _interopRequireDefault(_Resources);\n\nvar _Helper = __webpack_require__(94);\n\nvar _Helper2 = _interopRequireDefault(_Helper);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Api = _Api2.default;\nexports.Archor = _Archor2.default;\nexports.AuxiliaryLine = _AuxiliaryLine2.default;\nexports.Graphics = _Graphics2.default;\nexports.Sequence = _Sequence2.default;\nexports.StringUtil = _StringUtil2.default;\nexports.HTMLOperate = _HTMLOperate2.default;\nexports.Resources = _Resources2.default;\nexports.Helper = _Helper2.default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9zcmMvdXRpbGl0eS9pbmRleC5qcz84ZGYxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBcGkgZnJvbSAnLi9BcGknO1xyXG5pbXBvcnQgQXJjaG9yIGZyb20gJy4vQXJjaG9yJztcclxuaW1wb3J0IEF1eGlsaWFyeUxpbmUgZnJvbSAnLi9BdXhpbGlhcnlMaW5lJztcclxuaW1wb3J0IEdyYXBoaWNzIGZyb20gJy4vR3JhcGhpY3MnO1xyXG5pbXBvcnQgU2VxdWVuY2UgZnJvbSAnLi9TZXF1ZW5jZSc7XHJcbmltcG9ydCBTdHJpbmdVdGlsIGZyb20gJy4vU3RyaW5nVXRpbCc7XHJcbmltcG9ydCBIVE1MT3BlcmF0ZSBmcm9tICcuL0hUTUxPcGVyYXRlJztcclxuaW1wb3J0IFJlc291cmNlcyBmcm9tICcuL1Jlc291cmNlcyc7XHJcbmltcG9ydCBIZWxwZXIgZnJvbSAnLi9IZWxwZXInO1xyXG5cclxuZXhwb3J0IHtBcGksIEFyY2hvciwgQXV4aWxpYXJ5TGluZSwgR3JhcGhpY3MsIFNlcXVlbmNlLCBTdHJpbmdVdGlsLCBIVE1MT3BlcmF0ZSwgUmVzb3VyY2VzLCBIZWxwZXJ9O1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvdXRpbGl0eS9pbmRleC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///2\n");

/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Element = function () {\n    function Element() {\n        _classCallCheck(this, Element);\n\n        this.key = \"\";\n        this.width = 50;\n        this.height = 50;\n        this.id = \"\";\n        this.x = 0;\n        this.y = 0;\n        this.left = 0;\n        this.top = 0;\n        this.xByElement = 0;\n        this.yByElement = 0;\n        this._handlePointX = 0;\n        this._handlePointY = 0;\n        this.belong = null;\n        this.isEdit = false;\n        this.borderWidth = 1;\n\n        //鍏敤灞炴€n        // this.panelWidth=0;\n        this.isshowlabel = true;\n        this.labelvalue = \"榛樿鏍囩锛歕";\n        this.isblock = \"false\";\n        this.labelWidth = 70;\n        this.processprevalue = \"\"; //鐢ㄤ締瀛樺劜闋侀潰涓婂凡淇濆瓨鐨勫瓧娈电殑name鍜寁alue绲勬垚鐨勬暩绲勫瓧绗︿覆\n\n    }\n\n    _createClass(Element, [{\n        key: \"setProps\",\n        value: function setProps(newProps) {\n            var isCloneProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n            if (isCloneProps) {\n                this.oldProps = this.cloneProps(this);\n            }\n\n            if ((newProps['font'] || newProps['paragraph']) && !newProps['mode']) {\n                if (newProps['font']) {\n                    Object.assign(this.font, newProps['font']);\n                } else if (newProps['paragraph']) {\n                    Object.assign(this.paragraph, newProps['paragraph']);\n                }\n            } else {\n                //娉ㄦ剰锛佹鏂规硶瀵逛竴灞傛爲缁撴瀯鍚堝苟娌¢棶棰橈紝浣嗚嫢鏄璞¢噷鐨勫睘鎬ц繕鏄竴涓璞★紝鍒欒繘琛屽悎骞舵椂锛岃灞炴€ч噷鐨勫璞′細琚鐩栬€岄潪鍚堝苟鎿嶄綔\n                Object.assign(this, newProps);\n            }\n\n            //鍦ㄥ睘鎬у悎骞跺畬鎴愬悗鍗曠嫭瀵圭浉瀵逛簬鐢诲竷宸︿笂瑙掔殑y(this.y)鍜屾墦鍗版椂杈撳嚭鐨剏(this.printedY)杩涜璋冩暣\n            if (typeof newProps.printedY === 'undefined') {\n                this.printedY = this.y - this.prevChunkBaseline;\n            } else {\n                this.y = this.prevChunkBaseline + this.printedY;\n            }\n        }\n    }, {\n        key: \"getProp\",\n        value: function getProp(prop) {\n            if (this[prop] !== null && this[prop] !== undefined) {\n                return this[prop];\n            } else if (this.font[prop] !== null && this.font[prop] !== undefined) {\n                return this.font[prop];\n            } else if (this.paragraph[prop] !== null && this.paragraph[prop] !== undefined) {\n                return this.paragraph[prop];\n            }\n\n            return undefined;\n        }\n    }, {\n        key: \"changeElementPosition\",\n        value: function changeElementPosition(position) {\n\n            if ((typeof position === \"undefined\" ? \"undefined\" : _typeof(position)) != 'object') {\n                return false;\n            }\n\n            var movedX = void 0,\n                movedY = 0;\n            var elementPos = {};\n\n            if (position.x && !position.y) {\n                movedX = position.x - this._handlePointX;\n                elementPos.x = this.x + movedX;\n\n                this.setProps({ x: elementPos.x, _handlePointX: position.x });\n            } else if (position.y && !position.x) {\n                movedY = position.y - this._handlePointY;\n                elementPos.y = this.y + movedY;\n\n                this.setProps({ y: elementPos.y, _handlePointY: position.y });\n            } else if (position.y && position.x) {\n                movedX = position.x - this._handlePointX;\n                movedY = position.y - this._handlePointY;\n                elementPos.x = this.x + movedX;\n                elementPos.y = this.y + movedY;\n\n                this.setProps({ x: elementPos.x, y: elementPos.y, _handlePointX: position.x, _handlePointY: position.y });\n            } else {\n                return false;\n            }\n        }\n    }, {\n        key: \"parseHtml\",\n        value: function parseHtml(html) {\n            var root = $(html)[0];\n            //鏍峰紡\n            // console.log(style);\n            var obj = {};\n\n            for (var key in root.attributes) {\n                switch (root.attributes[key].name) {\n                    case \"style\":\n                        var style = root.attributes[root.attributes[key].name].value;\n\n                        do {\n\n                            var i = style.indexOf(\":\");\n                            var key2 = style.slice(0, i);\n                            style = style.slice(i + 1);\n\n                            var j = style.indexOf(\";\");\n                            var val = style.slice(0, j);\n                            style = style.slice(j + 1);\n                            if (key2 == \"min-width\" || key2 == \"min-height\" || key2 == \"z-index\") {\n                                if (key2 == \"min-width\") {\n                                    obj[\"smallwidth\"] = parseFloat(val);\n                                } else if (key2 == \"min-height\") {\n                                    obj[\"height\"] = parseFloat(val);\n                                } else {\n                                    obj[key2] = parseFloat(val);\n                                }\n                            } else {\n                                obj[key2] = val;\n                            }\n                        } while (style.length != 0);\n                        break;\n                    case \"refreshfields\":\n                        var refreshfields = root.attributes[root.attributes[key].name].value.split(\";\");\n                        if (refreshfields == \"\") {\n                            obj.refreshfields = [];\n                        } else {\n                            obj.refreshfields = refreshfields;\n                        }\n                        break;\n                    case \"mapping\":\n                        obj.mapping = JSON.parse(root.attributes[key].value.replace(/'/g, \"\\\"\"));\n                        break;\n                    case \"relstr\":\n                        obj.relstr = JSON.parse(root.attributes[key].value.replace(/'/g, \"\\\"\"));\n                        break;\n                    default:\n\n                        if (root.attributes[key].name && root.attributes[key].value) {\n                            if (root.attributes[key].name == \"minwidth\") {\n                                obj[\"width\"] = parseFloat(root.attributes[key].value);\n                            } else if (root.attributes[key].name == \"fixationheight\") {\n                                obj[\"fixationheight\"] = parseFloat(root.attributes[key].value);\n                            } else if (root.attributes[key].name == \"nodeid\") {\n                                obj[\"id\"] = root.attributes[key].value;\n                            } else {\n                                obj[root.attributes[key].name] = root.attributes[key].value;\n                            }\n                        }\n                        break;\n                }\n            }\n            var value = root.innerHTML;\n            obj[\"value\"] = value;\n            this.setProps(obj);\n            console.log(obj);\n        }\n    }]);\n\n    return Element;\n}();\n\nexports.default = Element;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9zcmMvZm9ybS9jb21wb25lbnQvRWxlbWVudC5qcz9kNTU3Il0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEVsZW1lbnQge1xyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgICAgICB0aGlzLmtleT1cIlwiO1xyXG4gICAgICAgIHRoaXMud2lkdGg9NTA7XHJcbiAgICAgICAgdGhpcy5oZWlnaHQ9NTA7XHJcbiAgICAgICAgdGhpcy5pZD1cIlwiO1xyXG4gICAgICAgIHRoaXMueD0wO1xyXG4gICAgICAgIHRoaXMueT0wO1xyXG4gICAgICAgIHRoaXMubGVmdD0wO1xyXG4gICAgICAgIHRoaXMudG9wPTA7XHJcbiAgICAgICAgdGhpcy54QnlFbGVtZW50PTA7XHJcbiAgICAgICAgdGhpcy55QnlFbGVtZW50PTA7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlUG9pbnRYPTA7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlUG9pbnRZPTA7XHJcbiAgICAgICAgdGhpcy5iZWxvbmc9bnVsbDtcclxuICAgICAgICB0aGlzLmlzRWRpdD1mYWxzZTtcclxuICAgICAgICB0aGlzLmJvcmRlcldpZHRoPTE7XHJcblxyXG4gICAgICAgIC8v5YWs55So5bGe5oCnXHJcbiAgICAgICAgLy8gdGhpcy5wYW5lbFdpZHRoPTA7XHJcbiAgICAgICAgdGhpcy5pc3Nob3dsYWJlbD10cnVlO1xyXG4gICAgICAgIHRoaXMubGFiZWx2YWx1ZT1cIum7mOiupOagh+etvu+8mlwiO1xyXG4gICAgICAgIHRoaXMuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgdGhpcy5sYWJlbFdpZHRoPTcwO1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc3ByZXZhbHVlPVwiXCI7Ly/nlKjkvoblrZjlhLLpoIHpnaLkuIrlt7Lkv53lrZjnmoTlrZfmrrXnmoRuYW1l5ZKMdmFsdWXntYTmiJDnmoTmlbjntYTlrZfnrKbkuLJcclxuXHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICBzZXRQcm9wcyhuZXdQcm9wcywgaXNDbG9uZVByb3BzID0gZmFsc2UpIHtcclxuICAgICAgICBpZihpc0Nsb25lUHJvcHMpIHtcclxuICAgICAgICAgICAgdGhpcy5vbGRQcm9wcyA9IHRoaXMuY2xvbmVQcm9wcyh0aGlzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYoKG5ld1Byb3BzWydmb250J10gfHwgbmV3UHJvcHNbJ3BhcmFncmFwaCddKSAmJiAhbmV3UHJvcHNbJ21vZGUnXSkge1xyXG4gICAgICAgICAgICBpZihuZXdQcm9wc1snZm9udCddKSB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuZm9udCwgbmV3UHJvcHNbJ2ZvbnQnXSk7XHRcclxuICAgICAgICAgICAgfSBlbHNlIGlmKG5ld1Byb3BzWydwYXJhZ3JhcGgnXSkge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLnBhcmFncmFwaCwgbmV3UHJvcHNbJ3BhcmFncmFwaCddKTtcdFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy/ms6jmhI/vvIHmraTmlrnms5Xlr7nkuIDlsYLmoJHnu5PmnoTlkIjlubbmsqHpl67popjvvIzkvYboi6XmmK/lr7nosaHph4znmoTlsZ7mgKfov5jmmK/kuIDkuKrlr7nosaHvvIzliJnov5vooYzlkIjlubbml7bvvIzor6XlsZ7mgKfph4znmoTlr7nosaHkvJrooqvopobnm5bogIzpnZ7lkIjlubbmk43kvZxcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBuZXdQcm9wcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8v5Zyo5bGe5oCn5ZCI5bm25a6M5oiQ5ZCO5Y2V54us5a+555u45a+55LqO55S75biD5bem5LiK6KeS55qEeSh0aGlzLnkp5ZKM5omT5Y2w5pe26L6T5Ye655qEeSh0aGlzLnByaW50ZWRZKei/m+ihjOiwg+aVtFxyXG4gICAgICAgIGlmKHR5cGVvZiBuZXdQcm9wcy5wcmludGVkWSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgdGhpcy5wcmludGVkWSA9IHRoaXMueSAtIHRoaXMucHJldkNodW5rQmFzZWxpbmU7XHRcclxuICAgICAgICB9IGVsc2UgIHtcclxuICAgICAgICAgICAgdGhpcy55ID0gdGhpcy5wcmV2Q2h1bmtCYXNlbGluZSArIHRoaXMucHJpbnRlZFk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0UHJvcChwcm9wKSB7XHJcblx0XHRpZih0aGlzW3Byb3BdICE9PSBudWxsICYmIHRoaXNbcHJvcF0gIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0ICByZXR1cm4gdGhpc1twcm9wXTtcdFxyXG5cdFx0fSBlbHNlIGlmKHRoaXMuZm9udFtwcm9wXSAhPT0gbnVsbCAmJiB0aGlzLmZvbnRbcHJvcF0gIT09IHVuZGVmaW5lZCkge1xyXG5cdFx0ICByZXR1cm4gdGhpcy5mb250W3Byb3BdO1xyXG5cdFx0fSBlbHNlIGlmKHRoaXMucGFyYWdyYXBoW3Byb3BdICE9PSBudWxsICYmIHRoaXMucGFyYWdyYXBoW3Byb3BdICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMucGFyYWdyYXBoW3Byb3BdO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHRyZXR1cm4gKHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcbiAgICBjaGFuZ2VFbGVtZW50UG9zaXRpb24ocG9zaXRpb24pIHtcclxuXHRcdFxyXG5cdFx0aWYodHlwZW9mIHBvc2l0aW9uICE9ICdvYmplY3QnKSB7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0bGV0IG1vdmVkWCwgbW92ZWRZID0gMDtcclxuXHRcdGxldCBlbGVtZW50UG9zID0ge307XHJcblxyXG5cdFx0aWYocG9zaXRpb24ueCAmJiAhcG9zaXRpb24ueSkge1xyXG5cdFx0XHRtb3ZlZFggPSBwb3NpdGlvbi54IC0gdGhpcy5faGFuZGxlUG9pbnRYO1xyXG5cdFx0XHRlbGVtZW50UG9zLnggPSB0aGlzLnggKyBtb3ZlZFg7XHJcblx0XHRcdFxyXG5cdFx0XHR0aGlzLnNldFByb3BzKHt4OiBlbGVtZW50UG9zLngsIF9oYW5kbGVQb2ludFg6IHBvc2l0aW9uLnh9KTtcclxuXHRcdH0gZWxzZSBpZihwb3NpdGlvbi55ICYmICFwb3NpdGlvbi54KSB7XHJcblx0XHRcdG1vdmVkWSA9IHBvc2l0aW9uLnkgLSB0aGlzLl9oYW5kbGVQb2ludFk7XHJcblx0XHRcdGVsZW1lbnRQb3MueSA9IHRoaXMueSArIG1vdmVkWTtcclxuXHRcdFx0XHJcblx0XHRcdHRoaXMuc2V0UHJvcHMoe3k6IGVsZW1lbnRQb3MueSwgX2hhbmRsZVBvaW50WTogcG9zaXRpb24ueX0pO1xyXG5cdFx0fSBlbHNlIGlmKHBvc2l0aW9uLnkgJiYgcG9zaXRpb24ueCkge1xyXG5cdFx0XHRtb3ZlZFggPSBwb3NpdGlvbi54IC0gdGhpcy5faGFuZGxlUG9pbnRYO1xyXG5cdFx0XHRtb3ZlZFkgPSBwb3NpdGlvbi55IC0gdGhpcy5faGFuZGxlUG9pbnRZO1xyXG5cdFx0XHRlbGVtZW50UG9zLnggPSB0aGlzLnggKyBtb3ZlZFg7XHJcblx0XHRcdGVsZW1lbnRQb3MueSA9IHRoaXMueSArIG1vdmVkWTtcclxuXHRcdFx0XHJcblx0XHRcdHRoaXMuc2V0UHJvcHMoe3g6IGVsZW1lbnRQb3MueCwgeTogZWxlbWVudFBvcy55LCBfaGFuZGxlUG9pbnRYOiBwb3NpdGlvbi54LCBfaGFuZGxlUG9pbnRZOiBwb3NpdGlvbi55fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcbiAgICB9XHJcbiAgICBwYXJzZUh0bWwoaHRtbCl7XHJcbiAgICAgICAgbGV0IHJvb3Q9JChodG1sKVswXTtcclxuICAgICAgICAvL+agt+W8j1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHN0eWxlKTtcclxuICAgICAgICBsZXQgb2JqPXt9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIGZvcihsZXQga2V5IGluIHJvb3QuYXR0cmlidXRlcyl7XHJcbiAgICAgICAgICAgIHN3aXRjaChyb290LmF0dHJpYnV0ZXNba2V5XS5uYW1lKXtcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJzdHlsZVwiOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzdHlsZT1yb290LmF0dHJpYnV0ZXNbcm9vdC5hdHRyaWJ1dGVzW2tleV0ubmFtZV0udmFsdWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGRve1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGk9c3R5bGUuaW5kZXhPZihcIjpcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrZXkyID0gc3R5bGUuc2xpY2UoMCxpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9c3R5bGUuc2xpY2UoaSsxKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBqPXN0eWxlLmluZGV4T2YoXCI7XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsPXN0eWxlLnNsaWNlKDAsaik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXN0eWxlLnNsaWNlKGorMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGtleTI9PVwibWluLXdpZHRoXCJ8fCBrZXkyPT1cIm1pbi1oZWlnaHRcIiB8fCBrZXkyPT1cInotaW5kZXhcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihrZXkyPT1cIm1pbi13aWR0aFwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpbXCJzbWFsbHdpZHRoXCJdPXBhcnNlRmxvYXQodmFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmKGtleTI9PVwibWluLWhlaWdodFwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpbXCJoZWlnaHRcIl09cGFyc2VGbG9hdCh2YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqW2tleTJdPXBhcnNlRmxvYXQodmFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpba2V5Ml09dmFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH13aGlsZShzdHlsZS5sZW5ndGghPTApO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwicmVmcmVzaGZpZWxkc1wiOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCByZWZyZXNoZmllbGRzPXJvb3QuYXR0cmlidXRlc1tyb290LmF0dHJpYnV0ZXNba2V5XS5uYW1lXS52YWx1ZS5zcGxpdChcIjtcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYocmVmcmVzaGZpZWxkcz09XCJcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai5yZWZyZXNoZmllbGRzPVtdXHJcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai5yZWZyZXNoZmllbGRzPXJlZnJlc2hmaWVsZHM7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwibWFwcGluZ1wiOlxyXG4gICAgICAgICAgICAgICAgICAgIG9iai5tYXBwaW5nPUpTT04ucGFyc2Uocm9vdC5hdHRyaWJ1dGVzW2tleV0udmFsdWUucmVwbGFjZSgvJy9nLFwiXFxcIlwiKSlcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcInJlbHN0clwiOlxyXG4gICAgICAgICAgICAgICAgICAgIG9iai5yZWxzdHI9SlNPTi5wYXJzZShyb290LmF0dHJpYnV0ZXNba2V5XS52YWx1ZS5yZXBsYWNlKC8nL2csXCJcXFwiXCIpKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZihyb290LmF0dHJpYnV0ZXNba2V5XS5uYW1lJiZyb290LmF0dHJpYnV0ZXNba2V5XS52YWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJvb3QuYXR0cmlidXRlc1trZXldLm5hbWU9PVwibWlud2lkdGhcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpbXCJ3aWR0aFwiXSA9IHBhcnNlRmxvYXQocm9vdC5hdHRyaWJ1dGVzW2tleV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmKHJvb3QuYXR0cmlidXRlc1trZXldLm5hbWU9PVwiZml4YXRpb25oZWlnaHRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpbXCJmaXhhdGlvbmhlaWdodFwiXSA9IHBhcnNlRmxvYXQocm9vdC5hdHRyaWJ1dGVzW2tleV0udmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmKHJvb3QuYXR0cmlidXRlc1trZXldLm5hbWU9PVwibm9kZWlkXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqW1wiaWRcIl0gPSByb290LmF0dHJpYnV0ZXNba2V5XS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ialtyb290LmF0dHJpYnV0ZXNba2V5XS5uYW1lXT1yb290LmF0dHJpYnV0ZXNba2V5XS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHZhbHVlPXJvb3QuaW5uZXJIVE1MO1xyXG4gICAgICAgIG9ialtcInZhbHVlXCJdPXZhbHVlO1xyXG4gICAgICAgIHRoaXMuc2V0UHJvcHMob2JqKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhvYmopXHJcbiAgICB9XHJcbiAgICBcclxufVxyXG5leHBvcnQgZGVmYXVsdCBFbGVtZW50O1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9jb21wb25lbnQvRWxlbWVudC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBeERBO0FBMERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3\n");

/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) {\n  'use strict';\n\n  // Utils\n  function assert (val, msg) {\n    if (!val) throw new Error(msg || 'Assertion failed');\n  }\n\n  // Could use `inherits` module, but don't want to move from single file\n  // architecture yet.\n  function inherits (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    var TempCtor = function () {};\n    TempCtor.prototype = superCtor.prototype;\n    ctor.prototype = new TempCtor();\n    ctor.prototype.constructor = ctor;\n  }\n\n  // BN\n\n  function BN (number, base, endian) {\n    if (BN.isBN(number)) {\n      return number;\n    }\n\n    this.negative = 0;\n    this.words = null;\n    this.length = 0;\n\n    // Reduction context\n    this.red = null;\n\n    if (number !== null) {\n      if (base === 'le' || base === 'be') {\n        endian = base;\n        base = 10;\n      }\n\n      this._init(number || 0, base || 10, endian || 'be');\n    }\n  }\n  if (typeof module === 'object') {\n    module.exports = BN;\n  } else {\n    exports.BN = BN;\n  }\n\n  BN.BN = BN;\n  BN.wordSize = 26;\n\n  var Buffer;\n  try {\n    Buffer = __webpack_require__(167).Buffer;\n  } catch (e) {\n  }\n\n  BN.isBN = function isBN (num) {\n    if (num instanceof BN) {\n      return true;\n    }\n\n    return num !== null && typeof num === 'object' &&\n      num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n  };\n\n  BN.max = function max (left, right) {\n    if (left.cmp(right) > 0) return left;\n    return right;\n  };\n\n  BN.min = function min (left, right) {\n    if (left.cmp(right) < 0) return left;\n    return right;\n  };\n\n  BN.prototype._init = function init (number, base, endian) {\n    if (typeof number === 'number') {\n      return this._initNumber(number, base, endian);\n    }\n\n    if (typeof number === 'object') {\n      return this._initArray(number, base, endian);\n    }\n\n    if (base === 'hex') {\n      base = 16;\n    }\n    assert(base === (base | 0) && base >= 2 && base <= 36);\n\n    number = number.toString().replace(/\\s+/g, '');\n    var start = 0;\n    if (number[0] === '-') {\n      start++;\n    }\n\n    if (base === 16) {\n      this._parseHex(number, start);\n    } else {\n      this._parseBase(number, base, start);\n    }\n\n    if (number[0] === '-') {\n      this.negative = 1;\n    }\n\n    this.strip();\n\n    if (endian !== 'le') return;\n\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initNumber = function _initNumber (number, base, endian) {\n    if (number < 0) {\n      this.negative = 1;\n      number = -number;\n    }\n    if (number < 0x4000000) {\n      this.words = [ number & 0x3ffffff ];\n      this.length = 1;\n    } else if (number < 0x10000000000000) {\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff\n      ];\n      this.length = 2;\n    } else {\n      assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n      this.words = [\n        number & 0x3ffffff,\n        (number / 0x4000000) & 0x3ffffff,\n        1\n      ];\n      this.length = 3;\n    }\n\n    if (endian !== 'le') return;\n\n    // Reverse the bytes\n    this._initArray(this.toArray(), base, endian);\n  };\n\n  BN.prototype._initArray = function _initArray (number, base, endian) {\n    // Perhaps a Uint8Array\n    assert(typeof number.length === 'number');\n    if (number.length <= 0) {\n      this.words = [ 0 ];\n      this.length = 1;\n      return this;\n    }\n\n    this.length = Math.ceil(number.length / 3);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    var off = 0;\n    if (endian === 'be') {\n      for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n        w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    } else if (endian === 'le') {\n      for (i = 0, j = 0; i < number.length; i += 3) {\n        w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n        this.words[j] |= (w << off) & 0x3ffffff;\n        this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n        off += 24;\n        if (off >= 26) {\n          off -= 26;\n          j++;\n        }\n      }\n    }\n    return this.strip();\n  };\n\n  function parseHex (str, start, end) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r <<= 4;\n\n      // 'a' - 'f'\n      if (c >= 49 && c <= 54) {\n        r |= c - 49 + 0xa;\n\n      // 'A' - 'F'\n      } else if (c >= 17 && c <= 22) {\n        r |= c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r |= c & 0xf;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseHex = function _parseHex (number, start) {\n    // Create possibly bigger array to ensure that it fits the number\n    this.length = Math.ceil((number.length - start) / 6);\n    this.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      this.words[i] = 0;\n    }\n\n    var j, w;\n    // Scan 24-bit chunks and add them to the number\n    var off = 0;\n    for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n      w = parseHex(number, i, i + 6);\n      this.words[j] |= (w << off) & 0x3ffffff;\n      // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n      this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n      off += 24;\n      if (off >= 26) {\n        off -= 26;\n        j++;\n      }\n    }\n    if (i + 6 !== start) {\n      w = parseHex(number, start, i + 6);\n      this.words[j] |= (w << off) & 0x3ffffff;\n      this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n    }\n    this.strip();\n  };\n\n  function parseBase (str, start, end, mul) {\n    var r = 0;\n    var len = Math.min(str.length, end);\n    for (var i = start; i < len; i++) {\n      var c = str.charCodeAt(i) - 48;\n\n      r *= mul;\n\n      // 'a'\n      if (c >= 49) {\n        r += c - 49 + 0xa;\n\n      // 'A'\n      } else if (c >= 17) {\n        r += c - 17 + 0xa;\n\n      // '0' - '9'\n      } else {\n        r += c;\n      }\n    }\n    return r;\n  }\n\n  BN.prototype._parseBase = function _parseBase (number, base, start) {\n    // Initialize as zero\n    this.words = [ 0 ];\n    this.length = 1;\n\n    // Find length of limb in base\n    for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n      limbLen++;\n    }\n    limbLen--;\n    limbPow = (limbPow / base) | 0;\n\n    var total = number.length - start;\n    var mod = total % limbLen;\n    var end = Math.min(total, total - mod) + start;\n\n    var word = 0;\n    for (var i = start; i < end; i += limbLen) {\n      word = parseBase(number, i, i + limbLen, base);\n\n      this.imuln(limbPow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n\n    if (mod !== 0) {\n      var pow = 1;\n      word = parseBase(number, i, number.length, base);\n\n      for (i = 0; i < mod; i++) {\n        pow *= base;\n      }\n\n      this.imuln(pow);\n      if (this.words[0] + word < 0x4000000) {\n        this.words[0] += word;\n      } else {\n        this._iaddn(word);\n      }\n    }\n  };\n\n  BN.prototype.copy = function copy (dest) {\n    dest.words = new Array(this.length);\n    for (var i = 0; i < this.length; i++) {\n      dest.words[i] = this.words[i];\n    }\n    dest.length = this.length;\n    dest.negative = this.negative;\n    dest.red = this.red;\n  };\n\n  BN.prototype.clone = function clone () {\n    var r = new BN(null);\n    this.copy(r);\n    return r;\n  };\n\n  BN.prototype._expand = function _expand (size) {\n    while (this.length < size) {\n      this.words[this.length++] = 0;\n    }\n    return this;\n  };\n\n  // Remove leading `0` from `this`\n  BN.prototype.strip = function strip () {\n    while (this.length > 1 && this.words[this.length - 1] === 0) {\n      this.length--;\n    }\n    return this._normSign();\n  };\n\n  BN.prototype._normSign = function _normSign () {\n    // -0 = 0\n    if (this.length === 1 && this.words[0] === 0) {\n      this.negative = 0;\n    }\n    return this;\n  };\n\n  BN.prototype.inspect = function inspect () {\n    return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n  };\n\n  /*\n\n  var zeros = [];\n  var groupSizes = [];\n  var groupBases = [];\n\n  var s = '';\n  var i = -1;\n  while (++i < BN.wordSize) {\n    zeros[i] = s;\n    s += '0';\n  }\n  groupSizes[0] = 0;\n  groupSizes[1] = 0;\n  groupBases[0] = 0;\n  groupBases[1] = 0;\n  var base = 2 - 1;\n  while (++base < 36 + 1) {\n    var groupSize = 0;\n    var groupBase = 1;\n    while (groupBase < (1 << BN.wordSize) / base) {\n      groupBase *= base;\n      groupSize += 1;\n    }\n    groupSizes[base] = groupSize;\n    groupBases[base] = groupBase;\n  }\n\n  */\n\n  var zeros = [\n    '',\n    '0',\n    '00',\n    '000',\n    '0000',\n    '00000',\n    '000000',\n    '0000000',\n    '00000000',\n    '000000000',\n    '0000000000',\n    '00000000000',\n    '000000000000',\n    '0000000000000',\n    '00000000000000',\n    '000000000000000',\n    '0000000000000000',\n    '00000000000000000',\n    '000000000000000000',\n    '0000000000000000000',\n    '00000000000000000000',\n    '000000000000000000000',\n    '0000000000000000000000',\n    '00000000000000000000000',\n    '000000000000000000000000',\n    '0000000000000000000000000'\n  ];\n\n  var groupSizes = [\n    0, 0,\n    25, 16, 12, 11, 10, 9, 8,\n    8, 7, 7, 7, 7, 6, 6,\n    6, 6, 6, 6, 6, 5, 5,\n    5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5\n  ];\n\n  var groupBases = [\n    0, 0,\n    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n  ];\n\n  BN.prototype.toString = function toString (base, padding) {\n    base = base || 10;\n    padding = padding | 0 || 1;\n\n    var out;\n    if (base === 16 || base === 'hex') {\n      out = '';\n      var off = 0;\n      var carry = 0;\n      for (var i = 0; i < this.length; i++) {\n        var w = this.words[i];\n        var word = (((w << off) | carry) & 0xffffff).toString(16);\n        carry = (w >>> (24 - off)) & 0xffffff;\n        if (carry !== 0 || i !== this.length - 1) {\n          out = zeros[6 - word.length] + word + out;\n        } else {\n          out = word + out;\n        }\n        off += 2;\n        if (off >= 26) {\n          off -= 26;\n          i--;\n        }\n      }\n      if (carry !== 0) {\n        out = carry.toString(16) + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    if (base === (base | 0) && base >= 2 && base <= 36) {\n      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n      var groupSize = groupSizes[base];\n      // var groupBase = Math.pow(base, groupSize);\n      var groupBase = groupBases[base];\n      out = '';\n      var c = this.clone();\n      c.negative = 0;\n      while (!c.isZero()) {\n        var r = c.modn(groupBase).toString(base);\n        c = c.idivn(groupBase);\n\n        if (!c.isZero()) {\n          out = zeros[groupSize - r.length] + r + out;\n        } else {\n          out = r + out;\n        }\n      }\n      if (this.isZero()) {\n        out = '0' + out;\n      }\n      while (out.length % padding !== 0) {\n        out = '0' + out;\n      }\n      if (this.negative !== 0) {\n        out = '-' + out;\n      }\n      return out;\n    }\n\n    assert(false, 'Base should be between 2 and 36');\n  };\n\n  BN.prototype.toNumber = function toNumber () {\n    var ret = this.words[0];\n    if (this.length === 2) {\n      ret += this.words[1] * 0x4000000;\n    } else if (this.length === 3 && this.words[2] === 0x01) {\n      // NOTE: at this stage it is known that the top bit is set\n      ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n    } else if (this.length > 2) {\n      assert(false, 'Number can only safely store up to 53 bits');\n    }\n    return (this.negative !== 0) ? -ret : ret;\n  };\n\n  BN.prototype.toJSON = function toJSON () {\n    return this.toString(16);\n  };\n\n  BN.prototype.toBuffer = function toBuffer (endian, length) {\n    assert(typeof Buffer !== 'undefined');\n    return this.toArrayLike(Buffer, endian, length);\n  };\n\n  BN.prototype.toArray = function toArray (endian, length) {\n    return this.toArrayLike(Array, endian, length);\n  };\n\n  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n    var byteLength = this.byteLength();\n    var reqLength = length || Math.max(1, byteLength);\n    assert(byteLength <= reqLength, 'byte array longer than desired length');\n    assert(reqLength > 0, 'Requested array length <= 0');\n\n    this.strip();\n    var littleEndian = endian === 'le';\n    var res = new ArrayType(reqLength);\n\n    var b, i;\n    var q = this.clone();\n    if (!littleEndian) {\n      // Assume big-endian\n      for (i = 0; i < reqLength - byteLength; i++) {\n        res[i] = 0;\n      }\n\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[reqLength - i - 1] = b;\n      }\n    } else {\n      for (i = 0; !q.isZero(); i++) {\n        b = q.andln(0xff);\n        q.iushrn(8);\n\n        res[i] = b;\n      }\n\n      for (; i < reqLength; i++) {\n        res[i] = 0;\n      }\n    }\n\n    return res;\n  };\n\n  if (Math.clz32) {\n    BN.prototype._countBits = function _countBits (w) {\n      return 32 - Math.clz32(w);\n    };\n  } else {\n    BN.prototype._countBits = function _countBits (w) {\n      var t = w;\n      var r = 0;\n      if (t >= 0x1000) {\n        r += 13;\n        t >>>= 13;\n      }\n      if (t >= 0x40) {\n        r += 7;\n        t >>>= 7;\n      }\n      if (t >= 0x8) {\n        r += 4;\n        t >>>= 4;\n      }\n      if (t >= 0x02) {\n        r += 2;\n        t >>>= 2;\n      }\n      return r + t;\n    };\n  }\n\n  BN.prototype._zeroBits = function _zeroBits (w) {\n    // Short-cut\n    if (w === 0) return 26;\n\n    var t = w;\n    var r = 0;\n    if ((t & 0x1fff) === 0) {\n      r += 13;\n      t >>>= 13;\n    }\n    if ((t & 0x7f) === 0) {\n      r += 7;\n      t >>>= 7;\n    }\n    if ((t & 0xf) === 0) {\n      r += 4;\n      t >>>= 4;\n    }\n    if ((t & 0x3) === 0) {\n      r += 2;\n      t >>>= 2;\n    }\n    if ((t & 0x1) === 0) {\n      r++;\n    }\n    return r;\n  };\n\n  // Return number of used bits in a BN\n  BN.prototype.bitLength = function bitLength () {\n    var w = this.words[this.length - 1];\n    var hi = this._countBits(w);\n    return (this.length - 1) * 26 + hi;\n  };\n\n  function toBitArray (num) {\n    var w = new Array(num.bitLength());\n\n    for (var bit = 0; bit < w.length; bit++) {\n      var off = (bit / 26) | 0;\n      var wbit = bit % 26;\n\n      w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n    }\n\n    return w;\n  }\n\n  // Number of trailing zero bits\n  BN.prototype.zeroBits = function zeroBits () {\n    if (this.isZero()) return 0;\n\n    var r = 0;\n    for (var i = 0; i < this.length; i++) {\n      var b = this._zeroBits(this.words[i]);\n      r += b;\n      if (b !== 26) break;\n    }\n    return r;\n  };\n\n  BN.prototype.byteLength = function byteLength () {\n    return Math.ceil(this.bitLength() / 8);\n  };\n\n  BN.prototype.toTwos = function toTwos (width) {\n    if (this.negative !== 0) {\n      return this.abs().inotn(width).iaddn(1);\n    }\n    return this.clone();\n  };\n\n  BN.prototype.fromTwos = function fromTwos (width) {\n    if (this.testn(width - 1)) {\n      return this.notn(width).iaddn(1).ineg();\n    }\n    return this.clone();\n  };\n\n  BN.prototype.isNeg = function isNeg () {\n    return this.negative !== 0;\n  };\n\n  // Return negative clone of `this`\n  BN.prototype.neg = function neg () {\n    return this.clone().ineg();\n  };\n\n  BN.prototype.ineg = function ineg () {\n    if (!this.isZero()) {\n      this.negative ^= 1;\n    }\n\n    return this;\n  };\n\n  // Or `num` with `this` in-place\n  BN.prototype.iuor = function iuor (num) {\n    while (this.length < num.length) {\n      this.words[this.length++] = 0;\n    }\n\n    for (var i = 0; i < num.length; i++) {\n      this.words[i] = this.words[i] | num.words[i];\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ior = function ior (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuor(num);\n  };\n\n  // Or `num` with `this`\n  BN.prototype.or = function or (num) {\n    if (this.length > num.length) return this.clone().ior(num);\n    return num.clone().ior(this);\n  };\n\n  BN.prototype.uor = function uor (num) {\n    if (this.length > num.length) return this.clone().iuor(num);\n    return num.clone().iuor(this);\n  };\n\n  // And `num` with `this` in-place\n  BN.prototype.iuand = function iuand (num) {\n    // b = min-length(num, this)\n    var b;\n    if (this.length > num.length) {\n      b = num;\n    } else {\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = this.words[i] & num.words[i];\n    }\n\n    this.length = b.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.iand = function iand (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuand(num);\n  };\n\n  // And `num` with `this`\n  BN.prototype.and = function and (num) {\n    if (this.length > num.length) return this.clone().iand(num);\n    return num.clone().iand(this);\n  };\n\n  BN.prototype.uand = function uand (num) {\n    if (this.length > num.length) return this.clone().iuand(num);\n    return num.clone().iuand(this);\n  };\n\n  // Xor `num` with `this` in-place\n  BN.prototype.iuxor = function iuxor (num) {\n    // a.length > b.length\n    var a;\n    var b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    for (var i = 0; i < b.length; i++) {\n      this.words[i] = a.words[i] ^ b.words[i];\n    }\n\n    if (this !== a) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = a.length;\n\n    return this.strip();\n  };\n\n  BN.prototype.ixor = function ixor (num) {\n    assert((this.negative | num.negative) === 0);\n    return this.iuxor(num);\n  };\n\n  // Xor `num` with `this`\n  BN.prototype.xor = function xor (num) {\n    if (this.length > num.length) return this.clone().ixor(num);\n    return num.clone().ixor(this);\n  };\n\n  BN.prototype.uxor = function uxor (num) {\n    if (this.length > num.length) return this.clone().iuxor(num);\n    return num.clone().iuxor(this);\n  };\n\n  // Not ``this`` with ``width`` bitwidth\n  BN.prototype.inotn = function inotn (width) {\n    assert(typeof width === 'number' && width >= 0);\n\n    var bytesNeeded = Math.ceil(width / 26) | 0;\n    var bitsLeft = width % 26;\n\n    // Extend the buffer with leading zeroes\n    this._expand(bytesNeeded);\n\n    if (bitsLeft > 0) {\n      bytesNeeded--;\n    }\n\n    // Handle complete words\n    for (var i = 0; i < bytesNeeded; i++) {\n      this.words[i] = ~this.words[i] & 0x3ffffff;\n    }\n\n    // Handle the residue\n    if (bitsLeft > 0) {\n      this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n    }\n\n    // And remove leading zeroes\n    return this.strip();\n  };\n\n  BN.prototype.notn = function notn (width) {\n    return this.clone().inotn(width);\n  };\n\n  // Set `bit` of `this`\n  BN.prototype.setn = function setn (bit, val) {\n    assert(typeof bit === 'number' && bit >= 0);\n\n    var off = (bit / 26) | 0;\n    var wbit = bit % 26;\n\n    this._expand(off + 1);\n\n    if (val) {\n      this.words[off] = this.words[off] | (1 << wbit);\n    } else {\n      this.words[off] = this.words[off] & ~(1 << wbit);\n    }\n\n    return this.strip();\n  };\n\n  // Add `num` to `this` in-place\n  BN.prototype.iadd = function iadd (num) {\n    var r;\n\n    // negative + positive\n    if (this.negative !== 0 && num.negative === 0) {\n      this.negative = 0;\n      r = this.isub(num);\n      this.negative ^= 1;\n      return this._normSign();\n\n    // positive + negative\n    } else if (this.negative === 0 && num.negative !== 0) {\n      num.negative = 0;\n      r = this.isub(num);\n      num.negative = 1;\n      return r._normSign();\n    }\n\n    // a.length > b.length\n    var a, b;\n    if (this.length > num.length) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      this.words[i] = r & 0x3ffffff;\n      carry = r >>> 26;\n    }\n\n    this.length = a.length;\n    if (carry !== 0) {\n      this.words[this.length] = carry;\n      this.length++;\n    // Copy the rest of the words\n    } else if (a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    return this;\n  };\n\n  // Add `num` to `this`\n  BN.prototype.add = function add (num) {\n    var res;\n    if (num.negative !== 0 && this.negative === 0) {\n      num.negative = 0;\n      res = this.sub(num);\n      num.negative ^= 1;\n      return res;\n    } else if (num.negative === 0 && this.negative !== 0) {\n      this.negative = 0;\n      res = num.sub(this);\n      this.negative = 1;\n      return res;\n    }\n\n    if (this.length > num.length) return this.clone().iadd(num);\n\n    return num.clone().iadd(this);\n  };\n\n  // Subtract `num` from `this` in-place\n  BN.prototype.isub = function isub (num) {\n    // this - (-num) = this + num\n    if (num.negative !== 0) {\n      num.negative = 0;\n      var r = this.iadd(num);\n      num.negative = 1;\n      return r._normSign();\n\n    // -this - num = -(this + num)\n    } else if (this.negative !== 0) {\n      this.negative = 0;\n      this.iadd(num);\n      this.negative = 1;\n      return this._normSign();\n    }\n\n    // At this point both numbers are positive\n    var cmp = this.cmp(num);\n\n    // Optimization - zeroify\n    if (cmp === 0) {\n      this.negative = 0;\n      this.length = 1;\n      this.words[0] = 0;\n      return this;\n    }\n\n    // a > b\n    var a, b;\n    if (cmp > 0) {\n      a = this;\n      b = num;\n    } else {\n      a = num;\n      b = this;\n    }\n\n    var carry = 0;\n    for (var i = 0; i < b.length; i++) {\n      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n    for (; carry !== 0 && i < a.length; i++) {\n      r = (a.words[i] | 0) + carry;\n      carry = r >> 26;\n      this.words[i] = r & 0x3ffffff;\n    }\n\n    // Copy rest of the words\n    if (carry === 0 && i < a.length && a !== this) {\n      for (; i < a.length; i++) {\n        this.words[i] = a.words[i];\n      }\n    }\n\n    this.length = Math.max(this.length, i);\n\n    if (a !== this) {\n      this.negative = 1;\n    }\n\n    return this.strip();\n  };\n\n  // Subtract `num` from `this`\n  BN.prototype.sub = function sub (num) {\n    return this.clone().isub(num);\n  };\n\n  function smallMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    var len = (self.length + num.length) | 0;\n    out.length = len;\n    len = (len - 1) | 0;\n\n    // Peel one iteration (compiler can't do it, because of code complexity)\n    var a = self.words[0] | 0;\n    var b = num.words[0] | 0;\n    var r = a * b;\n\n    var lo = r & 0x3ffffff;\n    var carry = (r / 0x4000000) | 0;\n    out.words[0] = lo;\n\n    for (var k = 1; k < len; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = carry >>> 26;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = (k - j) | 0;\n        a = self.words[i] | 0;\n        b = num.words[j] | 0;\n        r = a * b + rword;\n        ncarry += (r / 0x4000000) | 0;\n        rword = r & 0x3ffffff;\n      }\n      out.words[k] = rword | 0;\n      carry = ncarry | 0;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry | 0;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  // TODO(indutny): it may be reasonable to omit it for users who don't need\n  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n  // multiplication (like elliptic secp256k1).\n  var comb10MulTo = function comb10MulTo (self, num, out) {\n    var a = self.words;\n    var b = num.words;\n    var o = out.words;\n    var c = 0;\n    var lo;\n    var mid;\n    var hi;\n    var a0 = a[0] | 0;\n    var al0 = a0 & 0x1fff;\n    var ah0 = a0 >>> 13;\n    var a1 = a[1] | 0;\n    var al1 = a1 & 0x1fff;\n    var ah1 = a1 >>> 13;\n    var a2 = a[2] | 0;\n    var al2 = a2 & 0x1fff;\n    var ah2 = a2 >>> 13;\n    var a3 = a[3] | 0;\n    var al3 = a3 & 0x1fff;\n    var ah3 = a3 >>> 13;\n    var a4 = a[4] | 0;\n    var al4 = a4 & 0x1fff;\n    var ah4 = a4 >>> 13;\n    var a5 = a[5] | 0;\n    var al5 = a5 & 0x1fff;\n    var ah5 = a5 >>> 13;\n    var a6 = a[6] | 0;\n    var al6 = a6 & 0x1fff;\n    var ah6 = a6 >>> 13;\n    var a7 = a[7] | 0;\n    var al7 = a7 & 0x1fff;\n    var ah7 = a7 >>> 13;\n    var a8 = a[8] | 0;\n    var al8 = a8 & 0x1fff;\n    var ah8 = a8 >>> 13;\n    var a9 = a[9] | 0;\n    var al9 = a9 & 0x1fff;\n    var ah9 = a9 >>> 13;\n    var b0 = b[0] | 0;\n    var bl0 = b0 & 0x1fff;\n    var bh0 = b0 >>> 13;\n    var b1 = b[1] | 0;\n    var bl1 = b1 & 0x1fff;\n    var bh1 = b1 >>> 13;\n    var b2 = b[2] | 0;\n    var bl2 = b2 & 0x1fff;\n    var bh2 = b2 >>> 13;\n    var b3 = b[3] | 0;\n    var bl3 = b3 & 0x1fff;\n    var bh3 = b3 >>> 13;\n    var b4 = b[4] | 0;\n    var bl4 = b4 & 0x1fff;\n    var bh4 = b4 >>> 13;\n    var b5 = b[5] | 0;\n    var bl5 = b5 & 0x1fff;\n    var bh5 = b5 >>> 13;\n    var b6 = b[6] | 0;\n    var bl6 = b6 & 0x1fff;\n    var bh6 = b6 >>> 13;\n    var b7 = b[7] | 0;\n    var bl7 = b7 & 0x1fff;\n    var bh7 = b7 >>> 13;\n    var b8 = b[8] | 0;\n    var bl8 = b8 & 0x1fff;\n    var bh8 = b8 >>> 13;\n    var b9 = b[9] | 0;\n    var bl9 = b9 & 0x1fff;\n    var bh9 = b9 >>> 13;\n\n    out.negative = self.negative ^ num.negative;\n    out.length = 19;\n    /* k = 0 */\n    lo = Math.imul(al0, bl0);\n    mid = Math.imul(al0, bh0);\n    mid = (mid + Math.imul(ah0, bl0)) | 0;\n    hi = Math.imul(ah0, bh0);\n    var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n    w0 &= 0x3ffffff;\n    /* k = 1 */\n    lo = Math.imul(al1, bl0);\n    mid = Math.imul(al1, bh0);\n    mid = (mid + Math.imul(ah1, bl0)) | 0;\n    hi = Math.imul(ah1, bh0);\n    lo = (lo + Math.imul(al0, bl1)) | 0;\n    mid = (mid + Math.imul(al0, bh1)) | 0;\n    mid = (mid + Math.imul(ah0, bl1)) | 0;\n    hi = (hi + Math.imul(ah0, bh1)) | 0;\n    var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n    w1 &= 0x3ffffff;\n    /* k = 2 */\n    lo = Math.imul(al2, bl0);\n    mid = Math.imul(al2, bh0);\n    mid = (mid + Math.imul(ah2, bl0)) | 0;\n    hi = Math.imul(ah2, bh0);\n    lo = (lo + Math.imul(al1, bl1)) | 0;\n    mid = (mid + Math.imul(al1, bh1)) | 0;\n    mid = (mid + Math.imul(ah1, bl1)) | 0;\n    hi = (hi + Math.imul(ah1, bh1)) | 0;\n    lo = (lo + Math.imul(al0, bl2)) | 0;\n    mid = (mid + Math.imul(al0, bh2)) | 0;\n    mid = (mid + Math.imul(ah0, bl2)) | 0;\n    hi = (hi + Math.imul(ah0, bh2)) | 0;\n    var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n    w2 &= 0x3ffffff;\n    /* k = 3 */\n    lo = Math.imul(al3, bl0);\n    mid = Math.imul(al3, bh0);\n    mid = (mid + Math.imul(ah3, bl0)) | 0;\n    hi = Math.imul(ah3, bh0);\n    lo = (lo + Math.imul(al2, bl1)) | 0;\n    mid = (mid + Math.imul(al2, bh1)) | 0;\n    mid = (mid + Math.imul(ah2, bl1)) | 0;\n    hi = (hi + Math.imul(ah2, bh1)) | 0;\n    lo = (lo + Math.imul(al1, bl2)) | 0;\n    mid = (mid + Math.imul(al1, bh2)) | 0;\n    mid = (mid + Math.imul(ah1, bl2)) | 0;\n    hi = (hi + Math.imul(ah1, bh2)) | 0;\n    lo = (lo + Math.imul(al0, bl3)) | 0;\n    mid = (mid + Math.imul(al0, bh3)) | 0;\n    mid = (mid + Math.imul(ah0, bl3)) | 0;\n    hi = (hi + Math.imul(ah0, bh3)) | 0;\n    var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n    w3 &= 0x3ffffff;\n    /* k = 4 */\n    lo = Math.imul(al4, bl0);\n    mid = Math.imul(al4, bh0);\n    mid = (mid + Math.imul(ah4, bl0)) | 0;\n    hi = Math.imul(ah4, bh0);\n    lo = (lo + Math.imul(al3, bl1)) | 0;\n    mid = (mid + Math.imul(al3, bh1)) | 0;\n    mid = (mid + Math.imul(ah3, bl1)) | 0;\n    hi = (hi + Math.imul(ah3, bh1)) | 0;\n    lo = (lo + Math.imul(al2, bl2)) | 0;\n    mid = (mid + Math.imul(al2, bh2)) | 0;\n    mid = (mid + Math.imul(ah2, bl2)) | 0;\n    hi = (hi + Math.imul(ah2, bh2)) | 0;\n    lo = (lo + Math.imul(al1, bl3)) | 0;\n    mid = (mid + Math.imul(al1, bh3)) | 0;\n    mid = (mid + Math.imul(ah1, bl3)) | 0;\n    hi = (hi + Math.imul(ah1, bh3)) | 0;\n    lo = (lo + Math.imul(al0, bl4)) | 0;\n    mid = (mid + Math.imul(al0, bh4)) | 0;\n    mid = (mid + Math.imul(ah0, bl4)) | 0;\n    hi = (hi + Math.imul(ah0, bh4)) | 0;\n    var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n    w4 &= 0x3ffffff;\n    /* k = 5 */\n    lo = Math.imul(al5, bl0);\n    mid = Math.imul(al5, bh0);\n    mid = (mid + Math.imul(ah5, bl0)) | 0;\n    hi = Math.imul(ah5, bh0);\n    lo = (lo + Math.imul(al4, bl1)) | 0;\n    mid = (mid + Math.imul(al4, bh1)) | 0;\n    mid = (mid + Math.imul(ah4, bl1)) | 0;\n    hi = (hi + Math.imul(ah4, bh1)) | 0;\n    lo = (lo + Math.imul(al3, bl2)) | 0;\n    mid = (mid + Math.imul(al3, bh2)) | 0;\n    mid = (mid + Math.imul(ah3, bl2)) | 0;\n    hi = (hi + Math.imul(ah3, bh2)) | 0;\n    lo = (lo + Math.imul(al2, bl3)) | 0;\n    mid = (mid + Math.imul(al2, bh3)) | 0;\n    mid = (mid + Math.imul(ah2, bl3)) | 0;\n    hi = (hi + Math.imul(ah2, bh3)) | 0;\n    lo = (lo + Math.imul(al1, bl4)) | 0;\n    mid = (mid + Math.imul(al1, bh4)) | 0;\n    mid = (mid + Math.imul(ah1, bl4)) | 0;\n    hi = (hi + Math.imul(ah1, bh4)) | 0;\n    lo = (lo + Math.imul(al0, bl5)) | 0;\n    mid = (mid + Math.imul(al0, bh5)) | 0;\n    mid = (mid + Math.imul(ah0, bl5)) | 0;\n    hi = (hi + Math.imul(ah0, bh5)) | 0;\n    var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n    w5 &= 0x3ffffff;\n    /* k = 6 */\n    lo = Math.imul(al6, bl0);\n    mid = Math.imul(al6, bh0);\n    mid = (mid + Math.imul(ah6, bl0)) | 0;\n    hi = Math.imul(ah6, bh0);\n    lo = (lo + Math.imul(al5, bl1)) | 0;\n    mid = (mid + Math.imul(al5, bh1)) | 0;\n    mid = (mid + Math.imul(ah5, bl1)) | 0;\n    hi = (hi + Math.imul(ah5, bh1)) | 0;\n    lo = (lo + Math.imul(al4, bl2)) | 0;\n    mid = (mid + Math.imul(al4, bh2)) | 0;\n    mid = (mid + Math.imul(ah4, bl2)) | 0;\n    hi = (hi + Math.imul(ah4, bh2)) | 0;\n    lo = (lo + Math.imul(al3, bl3)) | 0;\n    mid = (mid + Math.imul(al3, bh3)) | 0;\n    mid = (mid + Math.imul(ah3, bl3)) | 0;\n    hi = (hi + Math.imul(ah3, bh3)) | 0;\n    lo = (lo + Math.imul(al2, bl4)) | 0;\n    mid = (mid + Math.imul(al2, bh4)) | 0;\n    mid = (mid + Math.imul(ah2, bl4)) | 0;\n    hi = (hi + Math.imul(ah2, bh4)) | 0;\n    lo = (lo + Math.imul(al1, bl5)) | 0;\n    mid = (mid + Math.imul(al1, bh5)) | 0;\n    mid = (mid + Math.imul(ah1, bl5)) | 0;\n    hi = (hi + Math.imul(ah1, bh5)) | 0;\n    lo = (lo + Math.imul(al0, bl6)) | 0;\n    mid = (mid + Math.imul(al0, bh6)) | 0;\n    mid = (mid + Math.imul(ah0, bl6)) | 0;\n    hi = (hi + Math.imul(ah0, bh6)) | 0;\n    var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n    w6 &= 0x3ffffff;\n    /* k = 7 */\n    lo = Math.imul(al7, bl0);\n    mid = Math.imul(al7, bh0);\n    mid = (mid + Math.imul(ah7, bl0)) | 0;\n    hi = Math.imul(ah7, bh0);\n    lo = (lo + Math.imul(al6, bl1)) | 0;\n    mid = (mid + Math.imul(al6, bh1)) | 0;\n    mid = (mid + Math.imul(ah6, bl1)) | 0;\n    hi = (hi + Math.imul(ah6, bh1)) | 0;\n    lo = (lo + Math.imul(al5, bl2)) | 0;\n    mid = (mid + Math.imul(al5, bh2)) | 0;\n    mid = (mid + Math.imul(ah5, bl2)) | 0;\n    hi = (hi + Math.imul(ah5, bh2)) | 0;\n    lo = (lo + Math.imul(al4, bl3)) | 0;\n    mid = (mid + Math.imul(al4, bh3)) | 0;\n    mid = (mid + Math.imul(ah4, bl3)) | 0;\n    hi = (hi + Math.imul(ah4, bh3)) | 0;\n    lo = (lo + Math.imul(al3, bl4)) | 0;\n    mid = (mid + Math.imul(al3, bh4)) | 0;\n    mid = (mid + Math.imul(ah3, bl4)) | 0;\n    hi = (hi + Math.imul(ah3, bh4)) | 0;\n    lo = (lo + Math.imul(al2, bl5)) | 0;\n    mid = (mid + Math.imul(al2, bh5)) | 0;\n    mid = (mid + Math.imul(ah2, bl5)) | 0;\n    hi = (hi + Math.imul(ah2, bh5)) | 0;\n    lo = (lo + Math.imul(al1, bl6)) | 0;\n    mid = (mid + Math.imul(al1, bh6)) | 0;\n    mid = (mid + Math.imul(ah1, bl6)) | 0;\n    hi = (hi + Math.imul(ah1, bh6)) | 0;\n    lo = (lo + Math.imul(al0, bl7)) | 0;\n    mid = (mid + Math.imul(al0, bh7)) | 0;\n    mid = (mid + Math.imul(ah0, bl7)) | 0;\n    hi = (hi + Math.imul(ah0, bh7)) | 0;\n    var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n    w7 &= 0x3ffffff;\n    /* k = 8 */\n    lo = Math.imul(al8, bl0);\n    mid = Math.imul(al8, bh0);\n    mid = (mid + Math.imul(ah8, bl0)) | 0;\n    hi = Math.imul(ah8, bh0);\n    lo = (lo + Math.imul(al7, bl1)) | 0;\n    mid = (mid + Math.imul(al7, bh1)) | 0;\n    mid = (mid + Math.imul(ah7, bl1)) | 0;\n    hi = (hi + Math.imul(ah7, bh1)) | 0;\n    lo = (lo + Math.imul(al6, bl2)) | 0;\n    mid = (mid + Math.imul(al6, bh2)) | 0;\n    mid = (mid + Math.imul(ah6, bl2)) | 0;\n    hi = (hi + Math.imul(ah6, bh2)) | 0;\n    lo = (lo + Math.imul(al5, bl3)) | 0;\n    mid = (mid + Math.imul(al5, bh3)) | 0;\n    mid = (mid + Math.imul(ah5, bl3)) | 0;\n    hi = (hi + Math.imul(ah5, bh3)) | 0;\n    lo = (lo + Math.imul(al4, bl4)) | 0;\n    mid = (mid + Math.imul(al4, bh4)) | 0;\n    mid = (mid + Math.imul(ah4, bl4)) | 0;\n    hi = (hi + Math.imul(ah4, bh4)) | 0;\n    lo = (lo + Math.imul(al3, bl5)) | 0;\n    mid = (mid + Math.imul(al3, bh5)) | 0;\n    mid = (mid + Math.imul(ah3, bl5)) | 0;\n    hi = (hi + Math.imul(ah3, bh5)) | 0;\n    lo = (lo + Math.imul(al2, bl6)) | 0;\n    mid = (mid + Math.imul(al2, bh6)) | 0;\n    mid = (mid + Math.imul(ah2, bl6)) | 0;\n    hi = (hi + Math.imul(ah2, bh6)) | 0;\n    lo = (lo + Math.imul(al1, bl7)) | 0;\n    mid = (mid + Math.imul(al1, bh7)) | 0;\n    mid = (mid + Math.imul(ah1, bl7)) | 0;\n    hi = (hi + Math.imul(ah1, bh7)) | 0;\n    lo = (lo + Math.imul(al0, bl8)) | 0;\n    mid = (mid + Math.imul(al0, bh8)) | 0;\n    mid = (mid + Math.imul(ah0, bl8)) | 0;\n    hi = (hi + Math.imul(ah0, bh8)) | 0;\n    var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n    w8 &= 0x3ffffff;\n    /* k = 9 */\n    lo = Math.imul(al9, bl0);\n    mid = Math.imul(al9, bh0);\n    mid = (mid + Math.imul(ah9, bl0)) | 0;\n    hi = Math.imul(ah9, bh0);\n    lo = (lo + Math.imul(al8, bl1)) | 0;\n    mid = (mid + Math.imul(al8, bh1)) | 0;\n    mid = (mid + Math.imul(ah8, bl1)) | 0;\n    hi = (hi + Math.imul(ah8, bh1)) | 0;\n    lo = (lo + Math.imul(al7, bl2)) | 0;\n    mid = (mid + Math.imul(al7, bh2)) | 0;\n    mid = (mid + Math.imul(ah7, bl2)) | 0;\n    hi = (hi + Math.imul(ah7, bh2)) | 0;\n    lo = (lo + Math.imul(al6, bl3)) | 0;\n    mid = (mid + Math.imul(al6, bh3)) | 0;\n    mid = (mid + Math.imul(ah6, bl3)) | 0;\n    hi = (hi + Math.imul(ah6, bh3)) | 0;\n    lo = (lo + Math.imul(al5, bl4)) | 0;\n    mid = (mid + Math.imul(al5, bh4)) | 0;\n    mid = (mid + Math.imul(ah5, bl4)) | 0;\n    hi = (hi + Math.imul(ah5, bh4)) | 0;\n    lo = (lo + Math.imul(al4, bl5)) | 0;\n    mid = (mid + Math.imul(al4, bh5)) | 0;\n    mid = (mid + Math.imul(ah4, bl5)) | 0;\n    hi = (hi + Math.imul(ah4, bh5)) | 0;\n    lo = (lo + Math.imul(al3, bl6)) | 0;\n    mid = (mid + Math.imul(al3, bh6)) | 0;\n    mid = (mid + Math.imul(ah3, bl6)) | 0;\n    hi = (hi + Math.imul(ah3, bh6)) | 0;\n    lo = (lo + Math.imul(al2, bl7)) | 0;\n    mid = (mid + Math.imul(al2, bh7)) | 0;\n    mid = (mid + Math.imul(ah2, bl7)) | 0;\n    hi = (hi + Math.imul(ah2, bh7)) | 0;\n    lo = (lo + Math.imul(al1, bl8)) | 0;\n    mid = (mid + Math.imul(al1, bh8)) | 0;\n    mid = (mid + Math.imul(ah1, bl8)) | 0;\n    hi = (hi + Math.imul(ah1, bh8)) | 0;\n    lo = (lo + Math.imul(al0, bl9)) | 0;\n    mid = (mid + Math.imul(al0, bh9)) | 0;\n    mid = (mid + Math.imul(ah0, bl9)) | 0;\n    hi = (hi + Math.imul(ah0, bh9)) | 0;\n    var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n    w9 &= 0x3ffffff;\n    /* k = 10 */\n    lo = Math.imul(al9, bl1);\n    mid = Math.imul(al9, bh1);\n    mid = (mid + Math.imul(ah9, bl1)) | 0;\n    hi = Math.imul(ah9, bh1);\n    lo = (lo + Math.imul(al8, bl2)) | 0;\n    mid = (mid + Math.imul(al8, bh2)) | 0;\n    mid = (mid + Math.imul(ah8, bl2)) | 0;\n    hi = (hi + Math.imul(ah8, bh2)) | 0;\n    lo = (lo + Math.imul(al7, bl3)) | 0;\n    mid = (mid + Math.imul(al7, bh3)) | 0;\n    mid = (mid + Math.imul(ah7, bl3)) | 0;\n    hi = (hi + Math.imul(ah7, bh3)) | 0;\n    lo = (lo + Math.imul(al6, bl4)) | 0;\n    mid = (mid + Math.imul(al6, bh4)) | 0;\n    mid = (mid + Math.imul(ah6, bl4)) | 0;\n    hi = (hi + Math.imul(ah6, bh4)) | 0;\n    lo = (lo + Math.imul(al5, bl5)) | 0;\n    mid = (mid + Math.imul(al5, bh5)) | 0;\n    mid = (mid + Math.imul(ah5, bl5)) | 0;\n    hi = (hi + Math.imul(ah5, bh5)) | 0;\n    lo = (lo + Math.imul(al4, bl6)) | 0;\n    mid = (mid + Math.imul(al4, bh6)) | 0;\n    mid = (mid + Math.imul(ah4, bl6)) | 0;\n    hi = (hi + Math.imul(ah4, bh6)) | 0;\n    lo = (lo + Math.imul(al3, bl7)) | 0;\n    mid = (mid + Math.imul(al3, bh7)) | 0;\n    mid = (mid + Math.imul(ah3, bl7)) | 0;\n    hi = (hi + Math.imul(ah3, bh7)) | 0;\n    lo = (lo + Math.imul(al2, bl8)) | 0;\n    mid = (mid + Math.imul(al2, bh8)) | 0;\n    mid = (mid + Math.imul(ah2, bl8)) | 0;\n    hi = (hi + Math.imul(ah2, bh8)) | 0;\n    lo = (lo + Math.imul(al1, bl9)) | 0;\n    mid = (mid + Math.imul(al1, bh9)) | 0;\n    mid = (mid + Math.imul(ah1, bl9)) | 0;\n    hi = (hi + Math.imul(ah1, bh9)) | 0;\n    var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n    w10 &= 0x3ffffff;\n    /* k = 11 */\n    lo = Math.imul(al9, bl2);\n    mid = Math.imul(al9, bh2);\n    mid = (mid + Math.imul(ah9, bl2)) | 0;\n    hi = Math.imul(ah9, bh2);\n    lo = (lo + Math.imul(al8, bl3)) | 0;\n    mid = (mid + Math.imul(al8, bh3)) | 0;\n    mid = (mid + Math.imul(ah8, bl3)) | 0;\n    hi = (hi + Math.imul(ah8, bh3)) | 0;\n    lo = (lo + Math.imul(al7, bl4)) | 0;\n    mid = (mid + Math.imul(al7, bh4)) | 0;\n    mid = (mid + Math.imul(ah7, bl4)) | 0;\n    hi = (hi + Math.imul(ah7, bh4)) | 0;\n    lo = (lo + Math.imul(al6, bl5)) | 0;\n    mid = (mid + Math.imul(al6, bh5)) | 0;\n    mid = (mid + Math.imul(ah6, bl5)) | 0;\n    hi = (hi + Math.imul(ah6, bh5)) | 0;\n    lo = (lo + Math.imul(al5, bl6)) | 0;\n    mid = (mid + Math.imul(al5, bh6)) | 0;\n    mid = (mid + Math.imul(ah5, bl6)) | 0;\n    hi = (hi + Math.imul(ah5, bh6)) | 0;\n    lo = (lo + Math.imul(al4, bl7)) | 0;\n    mid = (mid + Math.imul(al4, bh7)) | 0;\n    mid = (mid + Math.imul(ah4, bl7)) | 0;\n    hi = (hi + Math.imul(ah4, bh7)) | 0;\n    lo = (lo + Math.imul(al3, bl8)) | 0;\n    mid = (mid + Math.imul(al3, bh8)) | 0;\n    mid = (mid + Math.imul(ah3, bl8)) | 0;\n    hi = (hi + Math.imul(ah3, bh8)) | 0;\n    lo = (lo + Math.imul(al2, bl9)) | 0;\n    mid = (mid + Math.imul(al2, bh9)) | 0;\n    mid = (mid + Math.imul(ah2, bl9)) | 0;\n    hi = (hi + Math.imul(ah2, bh9)) | 0;\n    var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n    w11 &= 0x3ffffff;\n    /* k = 12 */\n    lo = Math.imul(al9, bl3);\n    mid = Math.imul(al9, bh3);\n    mid = (mid + Math.imul(ah9, bl3)) | 0;\n    hi = Math.imul(ah9, bh3);\n    lo = (lo + Math.imul(al8, bl4)) | 0;\n    mid = (mid + Math.imul(al8, bh4)) | 0;\n    mid = (mid + Math.imul(ah8, bl4)) | 0;\n    hi = (hi + Math.imul(ah8, bh4)) | 0;\n    lo = (lo + Math.imul(al7, bl5)) | 0;\n    mid = (mid + Math.imul(al7, bh5)) | 0;\n    mid = (mid + Math.imul(ah7, bl5)) | 0;\n    hi = (hi + Math.imul(ah7, bh5)) | 0;\n    lo = (lo + Math.imul(al6, bl6)) | 0;\n    mid = (mid + Math.imul(al6, bh6)) | 0;\n    mid = (mid + Math.imul(ah6, bl6)) | 0;\n    hi = (hi + Math.imul(ah6, bh6)) | 0;\n    lo = (lo + Math.imul(al5, bl7)) | 0;\n    mid = (mid + Math.imul(al5, bh7)) | 0;\n    mid = (mid + Math.imul(ah5, bl7)) | 0;\n    hi = (hi + Math.imul(ah5, bh7)) | 0;\n    lo = (lo + Math.imul(al4, bl8)) | 0;\n    mid = (mid + Math.imul(al4, bh8)) | 0;\n    mid = (mid + Math.imul(ah4, bl8)) | 0;\n    hi = (hi + Math.imul(ah4, bh8)) | 0;\n    lo = (lo + Math.imul(al3, bl9)) | 0;\n    mid = (mid + Math.imul(al3, bh9)) | 0;\n    mid = (mid + Math.imul(ah3, bl9)) | 0;\n    hi = (hi + Math.imul(ah3, bh9)) | 0;\n    var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n    w12 &= 0x3ffffff;\n    /* k = 13 */\n    lo = Math.imul(al9, bl4);\n    mid = Math.imul(al9, bh4);\n    mid = (mid + Math.imul(ah9, bl4)) | 0;\n    hi = Math.imul(ah9, bh4);\n    lo = (lo + Math.imul(al8, bl5)) | 0;\n    mid = (mid + Math.imul(al8, bh5)) | 0;\n    mid = (mid + Math.imul(ah8, bl5)) | 0;\n    hi = (hi + Math.imul(ah8, bh5)) | 0;\n    lo = (lo + Math.imul(al7, bl6)) | 0;\n    mid = (mid + Math.imul(al7, bh6)) | 0;\n    mid = (mid + Math.imul(ah7, bl6)) | 0;\n    hi = (hi + Math.imul(ah7, bh6)) | 0;\n    lo = (lo + Math.imul(al6, bl7)) | 0;\n    mid = (mid + Math.imul(al6, bh7)) | 0;\n    mid = (mid + Math.imul(ah6, bl7)) | 0;\n    hi = (hi + Math.imul(ah6, bh7)) | 0;\n    lo = (lo + Math.imul(al5, bl8)) | 0;\n    mid = (mid + Math.imul(al5, bh8)) | 0;\n    mid = (mid + Math.imul(ah5, bl8)) | 0;\n    hi = (hi + Math.imul(ah5, bh8)) | 0;\n    lo = (lo + Math.imul(al4, bl9)) | 0;\n    mid = (mid + Math.imul(al4, bh9)) | 0;\n    mid = (mid + Math.imul(ah4, bl9)) | 0;\n    hi = (hi + Math.imul(ah4, bh9)) | 0;\n    var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n    w13 &= 0x3ffffff;\n    /* k = 14 */\n    lo = Math.imul(al9, bl5);\n    mid = Math.imul(al9, bh5);\n    mid = (mid + Math.imul(ah9, bl5)) | 0;\n    hi = Math.imul(ah9, bh5);\n    lo = (lo + Math.imul(al8, bl6)) | 0;\n    mid = (mid + Math.imul(al8, bh6)) | 0;\n    mid = (mid + Math.imul(ah8, bl6)) | 0;\n    hi = (hi + Math.imul(ah8, bh6)) | 0;\n    lo = (lo + Math.imul(al7, bl7)) | 0;\n    mid = (mid + Math.imul(al7, bh7)) | 0;\n    mid = (mid + Math.imul(ah7, bl7)) | 0;\n    hi = (hi + Math.imul(ah7, bh7)) | 0;\n    lo = (lo + Math.imul(al6, bl8)) | 0;\n    mid = (mid + Math.imul(al6, bh8)) | 0;\n    mid = (mid + Math.imul(ah6, bl8)) | 0;\n    hi = (hi + Math.imul(ah6, bh8)) | 0;\n    lo = (lo + Math.imul(al5, bl9)) | 0;\n    mid = (mid + Math.imul(al5, bh9)) | 0;\n    mid = (mid + Math.imul(ah5, bl9)) | 0;\n    hi = (hi + Math.imul(ah5, bh9)) | 0;\n    var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n    w14 &= 0x3ffffff;\n    /* k = 15 */\n    lo = Math.imul(al9, bl6);\n    mid = Math.imul(al9, bh6);\n    mid = (mid + Math.imul(ah9, bl6)) | 0;\n    hi = Math.imul(ah9, bh6);\n    lo = (lo + Math.imul(al8, bl7)) | 0;\n    mid = (mid + Math.imul(al8, bh7)) | 0;\n    mid = (mid + Math.imul(ah8, bl7)) | 0;\n    hi = (hi + Math.imul(ah8, bh7)) | 0;\n    lo = (lo + Math.imul(al7, bl8)) | 0;\n    mid = (mid + Math.imul(al7, bh8)) | 0;\n    mid = (mid + Math.imul(ah7, bl8)) | 0;\n    hi = (hi + Math.imul(ah7, bh8)) | 0;\n    lo = (lo + Math.imul(al6, bl9)) | 0;\n    mid = (mid + Math.imul(al6, bh9)) | 0;\n    mid = (mid + Math.imul(ah6, bl9)) | 0;\n    hi = (hi + Math.imul(ah6, bh9)) | 0;\n    var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n    w15 &= 0x3ffffff;\n    /* k = 16 */\n    lo = Math.imul(al9, bl7);\n    mid = Math.imul(al9, bh7);\n    mid = (mid + Math.imul(ah9, bl7)) | 0;\n    hi = Math.imul(ah9, bh7);\n    lo = (lo + Math.imul(al8, bl8)) | 0;\n    mid = (mid + Math.imul(al8, bh8)) | 0;\n    mid = (mid + Math.imul(ah8, bl8)) | 0;\n    hi = (hi + Math.imul(ah8, bh8)) | 0;\n    lo = (lo + Math.imul(al7, bl9)) | 0;\n    mid = (mid + Math.imul(al7, bh9)) | 0;\n    mid = (mid + Math.imul(ah7, bl9)) | 0;\n    hi = (hi + Math.imul(ah7, bh9)) | 0;\n    var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n    w16 &= 0x3ffffff;\n    /* k = 17 */\n    lo = Math.imul(al9, bl8);\n    mid = Math.imul(al9, bh8);\n    mid = (mid + Math.imul(ah9, bl8)) | 0;\n    hi = Math.imul(ah9, bh8);\n    lo = (lo + Math.imul(al8, bl9)) | 0;\n    mid = (mid + Math.imul(al8, bh9)) | 0;\n    mid = (mid + Math.imul(ah8, bl9)) | 0;\n    hi = (hi + Math.imul(ah8, bh9)) | 0;\n    var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n    w17 &= 0x3ffffff;\n    /* k = 18 */\n    lo = Math.imul(al9, bl9);\n    mid = Math.imul(al9, bh9);\n    mid = (mid + Math.imul(ah9, bl9)) | 0;\n    hi = Math.imul(ah9, bh9);\n    var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n    c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n    w18 &= 0x3ffffff;\n    o[0] = w0;\n    o[1] = w1;\n    o[2] = w2;\n    o[3] = w3;\n    o[4] = w4;\n    o[5] = w5;\n    o[6] = w6;\n    o[7] = w7;\n    o[8] = w8;\n    o[9] = w9;\n    o[10] = w10;\n    o[11] = w11;\n    o[12] = w12;\n    o[13] = w13;\n    o[14] = w14;\n    o[15] = w15;\n    o[16] = w16;\n    o[17] = w17;\n    o[18] = w18;\n    if (c !== 0) {\n      o[19] = c;\n      out.length++;\n    }\n    return out;\n  };\n\n  // Polyfill comb\n  if (!Math.imul) {\n    comb10MulTo = smallMulTo;\n  }\n\n  function bigMulTo (self, num, out) {\n    out.negative = num.negative ^ self.negative;\n    out.length = self.length + num.length;\n\n    var carry = 0;\n    var hncarry = 0;\n    for (var k = 0; k < out.length - 1; k++) {\n      // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n      // note that ncarry could be >= 0x3ffffff\n      var ncarry = hncarry;\n      hncarry = 0;\n      var rword = carry & 0x3ffffff;\n      var maxJ = Math.min(k, num.length - 1);\n      for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n        var i = k - j;\n        var a = self.words[i] | 0;\n        var b = num.words[j] | 0;\n        var r = a * b;\n\n        var lo = r & 0x3ffffff;\n        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n        lo = (lo + rword) | 0;\n        rword = lo & 0x3ffffff;\n        ncarry = (ncarry + (lo >>> 26)) | 0;\n\n        hncarry += ncarry >>> 26;\n        ncarry &= 0x3ffffff;\n      }\n      out.words[k] = rword;\n      carry = ncarry;\n      ncarry = hncarry;\n    }\n    if (carry !== 0) {\n      out.words[k] = carry;\n    } else {\n      out.length--;\n    }\n\n    return out.strip();\n  }\n\n  function jumboMulTo (self, num, out) {\n    var fftm = new FFTM();\n    return fftm.mulp(self, num, out);\n  }\n\n  BN.prototype.mulTo = function mulTo (num, out) {\n    var res;\n    var len = this.length + num.length;\n    if (this.length === 10 && num.length === 10) {\n      res = comb10MulTo(this, num, out);\n    } else if (len < 63) {\n      res = smallMulTo(this, num, out);\n    } else if (len < 1024) {\n      res = bigMulTo(this, num, out);\n    } else {\n      res = jumboMulTo(this, num, out);\n    }\n\n    return res;\n  };\n\n  // Cooley-Tukey algorithm for FFT\n  // slightly revisited to rely on looping instead of recursion\n\n  function FFTM (x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  FFTM.prototype.makeRBT = function makeRBT (N) {\n    var t = new Array(N);\n    var l = BN.prototype._countBits(N) - 1;\n    for (var i = 0; i < N; i++) {\n      t[i] = this.revBin(i, l, N);\n    }\n\n    return t;\n  };\n\n  // Returns binary-reversed representation of `x`\n  FFTM.prototype.revBin = function revBin (x, l, N) {\n    if (x === 0 || x === N - 1) return x;\n\n    var rb = 0;\n    for (var i = 0; i < l; i++) {\n      rb |= (x & 1) << (l - i - 1);\n      x >>= 1;\n    }\n\n    return rb;\n  };\n\n  // Performs \"tweedling\" phase, therefore 'emulating'\n  // behaviour of the recursive algorithm\n  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n    for (var i = 0; i < N; i++) {\n      rtws[i] = rws[rbt[i]];\n      itws[i] = iws[rbt[i]];\n    }\n  };\n\n  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n    this.permute(rbt, rws, iws, rtws, itws, N);\n\n    for (var s = 1; s < N; s <<= 1) {\n      var l = s << 1;\n\n      var rtwdf = Math.cos(2 * Math.PI / l);\n      var itwdf = Math.sin(2 * Math.PI / l);\n\n      for (var p = 0; p < N; p += l) {\n        var rtwdf_ = rtwdf;\n        var itwdf_ = itwdf;\n\n        for (var j = 0; j < s; j++) {\n          var re = rtws[p + j];\n          var ie = itws[p + j];\n\n          var ro = rtws[p + j + s];\n          var io = itws[p + j + s];\n\n          var rx = rtwdf_ * ro - itwdf_ * io;\n\n          io = rtwdf_ * io + itwdf_ * ro;\n          ro = rx;\n\n          rtws[p + j] = re + ro;\n          itws[p + j] = ie + io;\n\n          rtws[p + j + s] = re - ro;\n          itws[p + j + s] = ie - io;\n\n          /* jshint maxdepth : false */\n          if (j !== l) {\n            rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n            rtwdf_ = rx;\n          }\n        }\n      }\n    }\n  };\n\n  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n    var N = Math.max(m, n) | 1;\n    var odd = N & 1;\n    var i = 0;\n    for (N = N / 2 | 0; N; N = N >>> 1) {\n      i++;\n    }\n\n    return 1 << i + 1 + odd;\n  };\n\n  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n    if (N <= 1) return;\n\n    for (var i = 0; i < N / 2; i++) {\n      var t = rws[i];\n\n      rws[i] = rws[N - i - 1];\n      rws[N - i - 1] = t;\n\n      t = iws[i];\n\n      iws[i] = -iws[N - i - 1];\n      iws[N - i - 1] = -t;\n    }\n  };\n\n  FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n    var carry = 0;\n    for (var i = 0; i < N / 2; i++) {\n      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n        Math.round(ws[2 * i] / N) +\n        carry;\n\n      ws[i] = w & 0x3ffffff;\n\n      if (w < 0x4000000) {\n        carry = 0;\n      } else {\n        carry = w / 0x4000000 | 0;\n      }\n    }\n\n    return ws;\n  };\n\n  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n    var carry = 0;\n    for (var i = 0; i < len; i++) {\n      carry = carry + (ws[i] | 0);\n\n      rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n      rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n    }\n\n    // Pad with zeroes\n    for (i = 2 * len; i < N; ++i) {\n      rws[i] = 0;\n    }\n\n    assert(carry === 0);\n    assert((carry & ~0x1fff) === 0);\n  };\n\n  FFTM.prototype.stub = function stub (N) {\n    var ph = new Array(N);\n    for (var i = 0; i < N; i++) {\n      ph[i] = 0;\n    }\n\n    return ph;\n  };\n\n  FFTM.prototype.mulp = function mulp (x, y, out) {\n    var N = 2 * this.guessLen13b(x.length, y.length);\n\n    var rbt = this.makeRBT(N);\n\n    var _ = this.stub(N);\n\n    var rws = new Array(N);\n    var rwst = new Array(N);\n    var iwst = new Array(N);\n\n    var nrws = new Array(N);\n    var nrwst = new Array(N);\n    var niwst = new Array(N);\n\n    var rmws = out.words;\n    rmws.length = N;\n\n    this.convert13b(x.words, x.length, rws, N);\n    this.convert13b(y.words, y.length, nrws, N);\n\n    this.transform(rws, _, rwst, iwst, N, rbt);\n    this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n    for (var i = 0; i < N; i++) {\n      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n      rwst[i] = rx;\n    }\n\n    this.conjugate(rwst, iwst, N);\n    this.transform(rwst, iwst, rmws, _, N, rbt);\n    this.conjugate(rmws, _, N);\n    this.normalize13b(rmws, N);\n\n    out.negative = x.negative ^ y.negative;\n    out.length = x.length + y.length;\n    return out.strip();\n  };\n\n  // Multiply `this` by `num`\n  BN.prototype.mul = function mul (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return this.mulTo(num, out);\n  };\n\n  // Multiply employing FFT\n  BN.prototype.mulf = function mulf (num) {\n    var out = new BN(null);\n    out.words = new Array(this.length + num.length);\n    return jumboMulTo(this, num, out);\n  };\n\n  // In-place Multiplication\n  BN.prototype.imul = function imul (num) {\n    return this.clone().mulTo(num, this);\n  };\n\n  BN.prototype.imuln = function imuln (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n\n    // Carry\n    var carry = 0;\n    for (var i = 0; i < this.length; i++) {\n      var w = (this.words[i] | 0) * num;\n      var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n      carry >>= 26;\n      carry += (w / 0x4000000) | 0;\n      // NOTE: lo is 27bit maximum\n      carry += lo >>> 26;\n      this.words[i] = lo & 0x3ffffff;\n    }\n\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n\n    return this;\n  };\n\n  BN.prototype.muln = function muln (num) {\n    return this.clone().imuln(num);\n  };\n\n  // `this` * `this`\n  BN.prototype.sqr = function sqr () {\n    return this.mul(this);\n  };\n\n  // `this` * `this` in-place\n  BN.prototype.isqr = function isqr () {\n    return this.imul(this.clone());\n  };\n\n  // Math.pow(`this`, `num`)\n  BN.prototype.pow = function pow (num) {\n    var w = toBitArray(num);\n    if (w.length === 0) return new BN(1);\n\n    // Skip leading zeroes\n    var res = this;\n    for (var i = 0; i < w.length; i++, res = res.sqr()) {\n      if (w[i] !== 0) break;\n    }\n\n    if (++i < w.length) {\n      for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n        if (w[i] === 0) continue;\n\n        res = res.mul(q);\n      }\n    }\n\n    return res;\n  };\n\n  // Shift-left in-place\n  BN.prototype.iushln = function iushln (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n    var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n    var i;\n\n    if (r !== 0) {\n      var carry = 0;\n\n      for (i = 0; i < this.length; i++) {\n        var newCarry = this.words[i] & carryMask;\n        var c = ((this.words[i] | 0) - newCarry) << r;\n        this.words[i] = c | carry;\n        carry = newCarry >>> (26 - r);\n      }\n\n      if (carry) {\n        this.words[i] = carry;\n        this.length++;\n      }\n    }\n\n    if (s !== 0) {\n      for (i = this.length - 1; i >= 0; i--) {\n        this.words[i + s] = this.words[i];\n      }\n\n      for (i = 0; i < s; i++) {\n        this.words[i] = 0;\n      }\n\n      this.length += s;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishln = function ishln (bits) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushln(bits);\n  };\n\n  // Shift-right in-place\n  // NOTE: `hint` is a lowest bit before trailing zeroes\n  // NOTE: if `extended` is present - it will be filled with destroyed bits\n  BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var h;\n    if (hint) {\n      h = (hint - (hint % 26)) / 26;\n    } else {\n      h = 0;\n    }\n\n    var r = bits % 26;\n    var s = Math.min((bits - r) / 26, this.length);\n    var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n    var maskedWords = extended;\n\n    h -= s;\n    h = Math.max(0, h);\n\n    // Extended mode, copy masked part\n    if (maskedWords) {\n      for (var i = 0; i < s; i++) {\n        maskedWords.words[i] = this.words[i];\n      }\n      maskedWords.length = s;\n    }\n\n    if (s === 0) {\n      // No-op, we should not move anything at all\n    } else if (this.length > s) {\n      this.length -= s;\n      for (i = 0; i < this.length; i++) {\n        this.words[i] = this.words[i + s];\n      }\n    } else {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    var carry = 0;\n    for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n      var word = this.words[i] | 0;\n      this.words[i] = (carry << (26 - r)) | (word >>> r);\n      carry = word & mask;\n    }\n\n    // Push carried bits as a mask\n    if (maskedWords && carry !== 0) {\n      maskedWords.words[maskedWords.length++] = carry;\n    }\n\n    if (this.length === 0) {\n      this.words[0] = 0;\n      this.length = 1;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n    // TODO(indutny): implement me\n    assert(this.negative === 0);\n    return this.iushrn(bits, hint, extended);\n  };\n\n  // Shift-left\n  BN.prototype.shln = function shln (bits) {\n    return this.clone().ishln(bits);\n  };\n\n  BN.prototype.ushln = function ushln (bits) {\n    return this.clone().iushln(bits);\n  };\n\n  // Shift-right\n  BN.prototype.shrn = function shrn (bits) {\n    return this.clone().ishrn(bits);\n  };\n\n  BN.prototype.ushrn = function ushrn (bits) {\n    return this.clone().iushrn(bits);\n  };\n\n  // Test if n bit is set\n  BN.prototype.testn = function testn (bit) {\n    assert(typeof bit === 'number' && bit >= 0);\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) return false;\n\n    // Check bit and return\n    var w = this.words[s];\n\n    return !!(w & q);\n  };\n\n  // Return only lowers bits of number (in-place)\n  BN.prototype.imaskn = function imaskn (bits) {\n    assert(typeof bits === 'number' && bits >= 0);\n    var r = bits % 26;\n    var s = (bits - r) / 26;\n\n    assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n    if (this.length <= s) {\n      return this;\n    }\n\n    if (r !== 0) {\n      s++;\n    }\n    this.length = Math.min(s, this.length);\n\n    if (r !== 0) {\n      var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n      this.words[this.length - 1] &= mask;\n    }\n\n    return this.strip();\n  };\n\n  // Return only lowers bits of number\n  BN.prototype.maskn = function maskn (bits) {\n    return this.clone().imaskn(bits);\n  };\n\n  // Add plain number `num` to `this`\n  BN.prototype.iaddn = function iaddn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.isubn(-num);\n\n    // Possible sign change\n    if (this.negative !== 0) {\n      if (this.length === 1 && (this.words[0] | 0) < num) {\n        this.words[0] = num - (this.words[0] | 0);\n        this.negative = 0;\n        return this;\n      }\n\n      this.negative = 0;\n      this.isubn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    // Add without checks\n    return this._iaddn(num);\n  };\n\n  BN.prototype._iaddn = function _iaddn (num) {\n    this.words[0] += num;\n\n    // Carry\n    for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n      this.words[i] -= 0x4000000;\n      if (i === this.length - 1) {\n        this.words[i + 1] = 1;\n      } else {\n        this.words[i + 1]++;\n      }\n    }\n    this.length = Math.max(this.length, i + 1);\n\n    return this;\n  };\n\n  // Subtract plain number `num` from `this`\n  BN.prototype.isubn = function isubn (num) {\n    assert(typeof num === 'number');\n    assert(num < 0x4000000);\n    if (num < 0) return this.iaddn(-num);\n\n    if (this.negative !== 0) {\n      this.negative = 0;\n      this.iaddn(num);\n      this.negative = 1;\n      return this;\n    }\n\n    this.words[0] -= num;\n\n    if (this.length === 1 && this.words[0] < 0) {\n      this.words[0] = -this.words[0];\n      this.negative = 1;\n    } else {\n      // Carry\n      for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n        this.words[i] += 0x4000000;\n        this.words[i + 1] -= 1;\n      }\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.addn = function addn (num) {\n    return this.clone().iaddn(num);\n  };\n\n  BN.prototype.subn = function subn (num) {\n    return this.clone().isubn(num);\n  };\n\n  BN.prototype.iabs = function iabs () {\n    this.negative = 0;\n\n    return this;\n  };\n\n  BN.prototype.abs = function abs () {\n    return this.clone().iabs();\n  };\n\n  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n    var len = num.length + shift;\n    var i;\n\n    this._expand(len);\n\n    var w;\n    var carry = 0;\n    for (i = 0; i < num.length; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      var right = (num.words[i] | 0) * mul;\n      w -= right & 0x3ffffff;\n      carry = (w >> 26) - ((right / 0x4000000) | 0);\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n    for (; i < this.length - shift; i++) {\n      w = (this.words[i + shift] | 0) + carry;\n      carry = w >> 26;\n      this.words[i + shift] = w & 0x3ffffff;\n    }\n\n    if (carry === 0) return this.strip();\n\n    // Subtraction overflow\n    assert(carry === -1);\n    carry = 0;\n    for (i = 0; i < this.length; i++) {\n      w = -(this.words[i] | 0) + carry;\n      carry = w >> 26;\n      this.words[i] = w & 0x3ffffff;\n    }\n    this.negative = 1;\n\n    return this.strip();\n  };\n\n  BN.prototype._wordDiv = function _wordDiv (num, mode) {\n    var shift = this.length - num.length;\n\n    var a = this.clone();\n    var b = num;\n\n    // Normalize\n    var bhi = b.words[b.length - 1] | 0;\n    var bhiBits = this._countBits(bhi);\n    shift = 26 - bhiBits;\n    if (shift !== 0) {\n      b = b.ushln(shift);\n      a.iushln(shift);\n      bhi = b.words[b.length - 1] | 0;\n    }\n\n    // Initialize quotient\n    var m = a.length - b.length;\n    var q;\n\n    if (mode !== 'mod') {\n      q = new BN(null);\n      q.length = m + 1;\n      q.words = new Array(q.length);\n      for (var i = 0; i < q.length; i++) {\n        q.words[i] = 0;\n      }\n    }\n\n    var diff = a.clone()._ishlnsubmul(b, 1, m);\n    if (diff.negative === 0) {\n      a = diff;\n      if (q) {\n        q.words[m] = 1;\n      }\n    }\n\n    for (var j = m - 1; j >= 0; j--) {\n      var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n        (a.words[b.length + j - 1] | 0);\n\n      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n      // (0x7ffffff)\n      qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n      a._ishlnsubmul(b, qj, j);\n      while (a.negative !== 0) {\n        qj--;\n        a.negative = 0;\n        a._ishlnsubmul(b, 1, j);\n        if (!a.isZero()) {\n          a.negative ^= 1;\n        }\n      }\n      if (q) {\n        q.words[j] = qj;\n      }\n    }\n    if (q) {\n      q.strip();\n    }\n    a.strip();\n\n    // Denormalize\n    if (mode !== 'div' && shift !== 0) {\n      a.iushrn(shift);\n    }\n\n    return {\n      div: q || null,\n      mod: a\n    };\n  };\n\n  // NOTE: 1) `mode` can be set to `mod` to request mod only,\n  //       to `div` to request div only, or be absent to\n  //       request both div & mod\n  //       2) `positive` is true if unsigned mod is requested\n  BN.prototype.divmod = function divmod (num, mode, positive) {\n    assert(!num.isZero());\n\n    if (this.isZero()) {\n      return {\n        div: new BN(0),\n        mod: new BN(0)\n      };\n    }\n\n    var div, mod, res;\n    if (this.negative !== 0 && num.negative === 0) {\n      res = this.neg().divmod(num, mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.iadd(num);\n        }\n      }\n\n      return {\n        div: div,\n        mod: mod\n      };\n    }\n\n    if (this.negative === 0 && num.negative !== 0) {\n      res = this.divmod(num.neg(), mode);\n\n      if (mode !== 'mod') {\n        div = res.div.neg();\n      }\n\n      return {\n        div: div,\n        mod: res.mod\n      };\n    }\n\n    if ((this.negative & num.negative) !== 0) {\n      res = this.neg().divmod(num.neg(), mode);\n\n      if (mode !== 'div') {\n        mod = res.mod.neg();\n        if (positive && mod.negative !== 0) {\n          mod.isub(num);\n        }\n      }\n\n      return {\n        div: res.div,\n        mod: mod\n      };\n    }\n\n    // Both numbers are positive at this point\n\n    // Strip both numbers to approximate shift value\n    if (num.length > this.length || this.cmp(num) < 0) {\n      return {\n        div: new BN(0),\n        mod: this\n      };\n    }\n\n    // Very short reduction\n    if (num.length === 1) {\n      if (mode === 'div') {\n        return {\n          div: this.divn(num.words[0]),\n          mod: null\n        };\n      }\n\n      if (mode === 'mod') {\n        return {\n          div: null,\n          mod: new BN(this.modn(num.words[0]))\n        };\n      }\n\n      return {\n        div: this.divn(num.words[0]),\n        mod: new BN(this.modn(num.words[0]))\n      };\n    }\n\n    return this._wordDiv(num, mode);\n  };\n\n  // Find `this` / `num`\n  BN.prototype.div = function div (num) {\n    return this.divmod(num, 'div', false).div;\n  };\n\n  // Find `this` % `num`\n  BN.prototype.mod = function mod (num) {\n    return this.divmod(num, 'mod', false).mod;\n  };\n\n  BN.prototype.umod = function umod (num) {\n    return this.divmod(num, 'mod', true).mod;\n  };\n\n  // Find Round(`this` / `num`)\n  BN.prototype.divRound = function divRound (num) {\n    var dm = this.divmod(num);\n\n    // Fast case - exact division\n    if (dm.mod.isZero()) return dm.div;\n\n    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n    var half = num.ushrn(1);\n    var r2 = num.andln(1);\n    var cmp = mod.cmp(half);\n\n    // Round down\n    if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n    // Round up\n    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n  };\n\n  BN.prototype.modn = function modn (num) {\n    assert(num <= 0x3ffffff);\n    var p = (1 << 26) % num;\n\n    var acc = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      acc = (p * acc + (this.words[i] | 0)) % num;\n    }\n\n    return acc;\n  };\n\n  // In-place division by number\n  BN.prototype.idivn = function idivn (num) {\n    assert(num <= 0x3ffffff);\n\n    var carry = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var w = (this.words[i] | 0) + carry * 0x4000000;\n      this.words[i] = (w / num) | 0;\n      carry = w % num;\n    }\n\n    return this.strip();\n  };\n\n  BN.prototype.divn = function divn (num) {\n    return this.clone().idivn(num);\n  };\n\n  BN.prototype.egcd = function egcd (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var x = this;\n    var y = p.clone();\n\n    if (x.negative !== 0) {\n      x = x.umod(p);\n    } else {\n      x = x.clone();\n    }\n\n    // A * x + B * y = x\n    var A = new BN(1);\n    var B = new BN(0);\n\n    // C * x + D * y = y\n    var C = new BN(0);\n    var D = new BN(1);\n\n    var g = 0;\n\n    while (x.isEven() && y.isEven()) {\n      x.iushrn(1);\n      y.iushrn(1);\n      ++g;\n    }\n\n    var yp = y.clone();\n    var xp = x.clone();\n\n    while (!x.isZero()) {\n      for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        x.iushrn(i);\n        while (i-- > 0) {\n          if (A.isOdd() || B.isOdd()) {\n            A.iadd(yp);\n            B.isub(xp);\n          }\n\n          A.iushrn(1);\n          B.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        y.iushrn(j);\n        while (j-- > 0) {\n          if (C.isOdd() || D.isOdd()) {\n            C.iadd(yp);\n            D.isub(xp);\n          }\n\n          C.iushrn(1);\n          D.iushrn(1);\n        }\n      }\n\n      if (x.cmp(y) >= 0) {\n        x.isub(y);\n        A.isub(C);\n        B.isub(D);\n      } else {\n        y.isub(x);\n        C.isub(A);\n        D.isub(B);\n      }\n    }\n\n    return {\n      a: C,\n      b: D,\n      gcd: y.iushln(g)\n    };\n  };\n\n  // This is reduced incarnation of the binary EEA\n  // above, designated to invert members of the\n  // _prime_ fields F(p) at a maximal speed\n  BN.prototype._invmp = function _invmp (p) {\n    assert(p.negative === 0);\n    assert(!p.isZero());\n\n    var a = this;\n    var b = p.clone();\n\n    if (a.negative !== 0) {\n      a = a.umod(p);\n    } else {\n      a = a.clone();\n    }\n\n    var x1 = new BN(1);\n    var x2 = new BN(0);\n\n    var delta = b.clone();\n\n    while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n      for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n      if (i > 0) {\n        a.iushrn(i);\n        while (i-- > 0) {\n          if (x1.isOdd()) {\n            x1.iadd(delta);\n          }\n\n          x1.iushrn(1);\n        }\n      }\n\n      for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n      if (j > 0) {\n        b.iushrn(j);\n        while (j-- > 0) {\n          if (x2.isOdd()) {\n            x2.iadd(delta);\n          }\n\n          x2.iushrn(1);\n        }\n      }\n\n      if (a.cmp(b) >= 0) {\n        a.isub(b);\n        x1.isub(x2);\n      } else {\n        b.isub(a);\n        x2.isub(x1);\n      }\n    }\n\n    var res;\n    if (a.cmpn(1) === 0) {\n      res = x1;\n    } else {\n      res = x2;\n    }\n\n    if (res.cmpn(0) < 0) {\n      res.iadd(p);\n    }\n\n    return res;\n  };\n\n  BN.prototype.gcd = function gcd (num) {\n    if (this.isZero()) return num.abs();\n    if (num.isZero()) return this.abs();\n\n    var a = this.clone();\n    var b = num.clone();\n    a.negative = 0;\n    b.negative = 0;\n\n    // Remove common factor of two\n    for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n      a.iushrn(1);\n      b.iushrn(1);\n    }\n\n    do {\n      while (a.isEven()) {\n        a.iushrn(1);\n      }\n      while (b.isEven()) {\n        b.iushrn(1);\n      }\n\n      var r = a.cmp(b);\n      if (r < 0) {\n        // Swap `a` and `b` to make `a` always bigger than `b`\n        var t = a;\n        a = b;\n        b = t;\n      } else if (r === 0 || b.cmpn(1) === 0) {\n        break;\n      }\n\n      a.isub(b);\n    } while (true);\n\n    return b.iushln(shift);\n  };\n\n  // Invert number in the field F(num)\n  BN.prototype.invm = function invm (num) {\n    return this.egcd(num).a.umod(num);\n  };\n\n  BN.prototype.isEven = function isEven () {\n    return (this.words[0] & 1) === 0;\n  };\n\n  BN.prototype.isOdd = function isOdd () {\n    return (this.words[0] & 1) === 1;\n  };\n\n  // And first word and num\n  BN.prototype.andln = function andln (num) {\n    return this.words[0] & num;\n  };\n\n  // Increment at the bit position in-line\n  BN.prototype.bincn = function bincn (bit) {\n    assert(typeof bit === 'number');\n    var r = bit % 26;\n    var s = (bit - r) / 26;\n    var q = 1 << r;\n\n    // Fast case: bit is much higher than all existing words\n    if (this.length <= s) {\n      this._expand(s + 1);\n      this.words[s] |= q;\n      return this;\n    }\n\n    // Add bit and propagate, if needed\n    var carry = q;\n    for (var i = s; carry !== 0 && i < this.length; i++) {\n      var w = this.words[i] | 0;\n      w += carry;\n      carry = w >>> 26;\n      w &= 0x3ffffff;\n      this.words[i] = w;\n    }\n    if (carry !== 0) {\n      this.words[i] = carry;\n      this.length++;\n    }\n    return this;\n  };\n\n  BN.prototype.isZero = function isZero () {\n    return this.length === 1 && this.words[0] === 0;\n  };\n\n  BN.prototype.cmpn = function cmpn (num) {\n    var negative = num < 0;\n\n    if (this.negative !== 0 && !negative) return -1;\n    if (this.negative === 0 && negative) return 1;\n\n    this.strip();\n\n    var res;\n    if (this.length > 1) {\n      res = 1;\n    } else {\n      if (negative) {\n        num = -num;\n      }\n\n      assert(num <= 0x3ffffff, 'Number is too big');\n\n      var w = this.words[0] | 0;\n      res = w === num ? 0 : w < num ? -1 : 1;\n    }\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Compare two numbers and return:\n  // 1 - if `this` > `num`\n  // 0 - if `this` == `num`\n  // -1 - if `this` < `num`\n  BN.prototype.cmp = function cmp (num) {\n    if (this.negative !== 0 && num.negative === 0) return -1;\n    if (this.negative === 0 && num.negative !== 0) return 1;\n\n    var res = this.ucmp(num);\n    if (this.negative !== 0) return -res | 0;\n    return res;\n  };\n\n  // Unsigned comparison\n  BN.prototype.ucmp = function ucmp (num) {\n    // At this point both numbers have the same sign\n    if (this.length > num.length) return 1;\n    if (this.length < num.length) return -1;\n\n    var res = 0;\n    for (var i = this.length - 1; i >= 0; i--) {\n      var a = this.words[i] | 0;\n      var b = num.words[i] | 0;\n\n      if (a === b) continue;\n      if (a < b) {\n        res = -1;\n      } else if (a > b) {\n        res = 1;\n      }\n      break;\n    }\n    return res;\n  };\n\n  BN.prototype.gtn = function gtn (num) {\n    return this.cmpn(num) === 1;\n  };\n\n  BN.prototype.gt = function gt (num) {\n    return this.cmp(num) === 1;\n  };\n\n  BN.prototype.gten = function gten (num) {\n    return this.cmpn(num) >= 0;\n  };\n\n  BN.prototype.gte = function gte (num) {\n    return this.cmp(num) >= 0;\n  };\n\n  BN.prototype.ltn = function ltn (num) {\n    return this.cmpn(num) === -1;\n  };\n\n  BN.prototype.lt = function lt (num) {\n    return this.cmp(num) === -1;\n  };\n\n  BN.prototype.lten = function lten (num) {\n    return this.cmpn(num) <= 0;\n  };\n\n  BN.prototype.lte = function lte (num) {\n    return this.cmp(num) <= 0;\n  };\n\n  BN.prototype.eqn = function eqn (num) {\n    return this.cmpn(num) === 0;\n  };\n\n  BN.prototype.eq = function eq (num) {\n    return this.cmp(num) === 0;\n  };\n\n  //\n  // A reduce context, could be using montgomery or something better, depending\n  // on the `m` itself.\n  //\n  BN.red = function red (num) {\n    return new Red(num);\n  };\n\n  BN.prototype.toRed = function toRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    assert(this.negative === 0, 'red works only with positives');\n    return ctx.convertTo(this)._forceRed(ctx);\n  };\n\n  BN.prototype.fromRed = function fromRed () {\n    assert(this.red, 'fromRed works only with numbers in reduction context');\n    return this.red.convertFrom(this);\n  };\n\n  BN.prototype._forceRed = function _forceRed (ctx) {\n    this.red = ctx;\n    return this;\n  };\n\n  BN.prototype.forceRed = function forceRed (ctx) {\n    assert(!this.red, 'Already a number in reduction context');\n    return this._forceRed(ctx);\n  };\n\n  BN.prototype.redAdd = function redAdd (num) {\n    assert(this.red, 'redAdd works only with red numbers');\n    return this.red.add(this, num);\n  };\n\n  BN.prototype.redIAdd = function redIAdd (num) {\n    assert(this.red, 'redIAdd works only with red numbers');\n    return this.red.iadd(this, num);\n  };\n\n  BN.prototype.redSub = function redSub (num) {\n    assert(this.red, 'redSub works only with red numbers');\n    return this.red.sub(this, num);\n  };\n\n  BN.prototype.redISub = function redISub (num) {\n    assert(this.red, 'redISub works only with red numbers');\n    return this.red.isub(this, num);\n  };\n\n  BN.prototype.redShl = function redShl (num) {\n    assert(this.red, 'redShl works only with red numbers');\n    return this.red.shl(this, num);\n  };\n\n  BN.prototype.redMul = function redMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.mul(this, num);\n  };\n\n  BN.prototype.redIMul = function redIMul (num) {\n    assert(this.red, 'redMul works only with red numbers');\n    this.red._verify2(this, num);\n    return this.red.imul(this, num);\n  };\n\n  BN.prototype.redSqr = function redSqr () {\n    assert(this.red, 'redSqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqr(this);\n  };\n\n  BN.prototype.redISqr = function redISqr () {\n    assert(this.red, 'redISqr works only with red numbers');\n    this.red._verify1(this);\n    return this.red.isqr(this);\n  };\n\n  // Square root over p\n  BN.prototype.redSqrt = function redSqrt () {\n    assert(this.red, 'redSqrt works only with red numbers');\n    this.red._verify1(this);\n    return this.red.sqrt(this);\n  };\n\n  BN.prototype.redInvm = function redInvm () {\n    assert(this.red, 'redInvm works only with red numbers');\n    this.red._verify1(this);\n    return this.red.invm(this);\n  };\n\n  // Return negative clone of `this` % `red modulo`\n  BN.prototype.redNeg = function redNeg () {\n    assert(this.red, 'redNeg works only with red numbers');\n    this.red._verify1(this);\n    return this.red.neg(this);\n  };\n\n  BN.prototype.redPow = function redPow (num) {\n    assert(this.red && !num.red, 'redPow(normalNum)');\n    this.red._verify1(this);\n    return this.red.pow(this, num);\n  };\n\n  // Prime numbers with efficient reduction\n  var primes = {\n    k256: null,\n    p224: null,\n    p192: null,\n    p25519: null\n  };\n\n  // Pseudo-Mersenne prime\n  function MPrime (name, p) {\n    // P = 2 ^ N - K\n    this.name = name;\n    this.p = new BN(p, 16);\n    this.n = this.p.bitLength();\n    this.k = new BN(1).iushln(this.n).isub(this.p);\n\n    this.tmp = this._tmp();\n  }\n\n  MPrime.prototype._tmp = function _tmp () {\n    var tmp = new BN(null);\n    tmp.words = new Array(Math.ceil(this.n / 13));\n    return tmp;\n  };\n\n  MPrime.prototype.ireduce = function ireduce (num) {\n    // Assumes that `num` is less than `P^2`\n    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n    var r = num;\n    var rlen;\n\n    do {\n      this.split(r, this.tmp);\n      r = this.imulK(r);\n      r = r.iadd(this.tmp);\n      rlen = r.bitLength();\n    } while (rlen > this.n);\n\n    var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n    if (cmp === 0) {\n      r.words[0] = 0;\n      r.length = 1;\n    } else if (cmp > 0) {\n      r.isub(this.p);\n    } else {\n      r.strip();\n    }\n\n    return r;\n  };\n\n  MPrime.prototype.split = function split (input, out) {\n    input.iushrn(this.n, 0, out);\n  };\n\n  MPrime.prototype.imulK = function imulK (num) {\n    return num.imul(this.k);\n  };\n\n  function K256 () {\n    MPrime.call(\n      this,\n      'k256',\n      'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n  }\n  inherits(K256, MPrime);\n\n  K256.prototype.split = function split (input, output) {\n    // 256 = 9 * 26 + 22\n    var mask = 0x3fffff;\n\n    var outLen = Math.min(input.length, 9);\n    for (var i = 0; i < outLen; i++) {\n      output.words[i] = input.words[i];\n    }\n    output.length = outLen;\n\n    if (input.length <= 9) {\n      input.words[0] = 0;\n      input.length = 1;\n      return;\n    }\n\n    // Shift by 9 limbs\n    var prev = input.words[9];\n    output.words[output.length++] = prev & mask;\n\n    for (i = 10; i < input.length; i++) {\n      var next = input.words[i] | 0;\n      input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n      prev = next;\n    }\n    prev >>>= 22;\n    input.words[i - 10] = prev;\n    if (prev === 0 && input.length > 10) {\n      input.length -= 10;\n    } else {\n      input.length -= 9;\n    }\n  };\n\n  K256.prototype.imulK = function imulK (num) {\n    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n    num.words[num.length] = 0;\n    num.words[num.length + 1] = 0;\n    num.length += 2;\n\n    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n    var lo = 0;\n    for (var i = 0; i < num.length; i++) {\n      var w = num.words[i] | 0;\n      lo += w * 0x3d1;\n      num.words[i] = lo & 0x3ffffff;\n      lo = w * 0x40 + ((lo / 0x4000000) | 0);\n    }\n\n    // Fast length reduction\n    if (num.words[num.length - 1] === 0) {\n      num.length--;\n      if (num.words[num.length - 1] === 0) {\n        num.length--;\n      }\n    }\n    return num;\n  };\n\n  function P224 () {\n    MPrime.call(\n      this,\n      'p224',\n      'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n  }\n  inherits(P224, MPrime);\n\n  function P192 () {\n    MPrime.call(\n      this,\n      'p192',\n      'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n  }\n  inherits(P192, MPrime);\n\n  function P25519 () {\n    // 2 ^ 255 - 19\n    MPrime.call(\n      this,\n      '25519',\n      '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n  }\n  inherits(P25519, MPrime);\n\n  P25519.prototype.imulK = function imulK (num) {\n    // K = 0x13\n    var carry = 0;\n    for (var i = 0; i < num.length; i++) {\n      var hi = (num.words[i] | 0) * 0x13 + carry;\n      var lo = hi & 0x3ffffff;\n      hi >>>= 26;\n\n      num.words[i] = lo;\n      carry = hi;\n    }\n    if (carry !== 0) {\n      num.words[num.length++] = carry;\n    }\n    return num;\n  };\n\n  // Exported mostly for testing purposes, use plain name instead\n  BN._prime = function prime (name) {\n    // Cached version of prime\n    if (primes[name]) return primes[name];\n\n    var prime;\n    if (name === 'k256') {\n      prime = new K256();\n    } else if (name === 'p224') {\n      prime = new P224();\n    } else if (name === 'p192') {\n      prime = new P192();\n    } else if (name === 'p25519') {\n      prime = new P25519();\n    } else {\n      throw new Error('Unknown prime ' + name);\n    }\n    primes[name] = prime;\n\n    return prime;\n  };\n\n  //\n  // Base reduction engine\n  //\n  function Red (m) {\n    if (typeof m === 'string') {\n      var prime = BN._prime(m);\n      this.m = prime.p;\n      this.prime = prime;\n    } else {\n      assert(m.gtn(1), 'modulus must be greater than 1');\n      this.m = m;\n      this.prime = null;\n    }\n  }\n\n  Red.prototype._verify1 = function _verify1 (a) {\n    assert(a.negative === 0, 'red works only with positives');\n    assert(a.red, 'red works only with red numbers');\n  };\n\n  Red.prototype._verify2 = function _verify2 (a, b) {\n    assert((a.negative | b.negative) === 0, 'red works only with positives');\n    assert(a.red && a.red === b.red,\n      'red works only with red numbers');\n  };\n\n  Red.prototype.imod = function imod (a) {\n    if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n    return a.umod(this.m)._forceRed(this);\n  };\n\n  Red.prototype.neg = function neg (a) {\n    if (a.isZero()) {\n      return a.clone();\n    }\n\n    return this.m.sub(a)._forceRed(this);\n  };\n\n  Red.prototype.add = function add (a, b) {\n    this._verify2(a, b);\n\n    var res = a.add(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.iadd = function iadd (a, b) {\n    this._verify2(a, b);\n\n    var res = a.iadd(b);\n    if (res.cmp(this.m) >= 0) {\n      res.isub(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.sub = function sub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.sub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res._forceRed(this);\n  };\n\n  Red.prototype.isub = function isub (a, b) {\n    this._verify2(a, b);\n\n    var res = a.isub(b);\n    if (res.cmpn(0) < 0) {\n      res.iadd(this.m);\n    }\n    return res;\n  };\n\n  Red.prototype.shl = function shl (a, num) {\n    this._verify1(a);\n    return this.imod(a.ushln(num));\n  };\n\n  Red.prototype.imul = function imul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.imul(b));\n  };\n\n  Red.prototype.mul = function mul (a, b) {\n    this._verify2(a, b);\n    return this.imod(a.mul(b));\n  };\n\n  Red.prototype.isqr = function isqr (a) {\n    return this.imul(a, a.clone());\n  };\n\n  Red.prototype.sqr = function sqr (a) {\n    return this.mul(a, a);\n  };\n\n  Red.prototype.sqrt = function sqrt (a) {\n    if (a.isZero()) return a.clone();\n\n    var mod3 = this.m.andln(3);\n    assert(mod3 % 2 === 1);\n\n    // Fast case\n    if (mod3 === 3) {\n      var pow = this.m.add(new BN(1)).iushrn(2);\n      return this.pow(a, pow);\n    }\n\n    // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n    //\n    // Find Q and S, that Q * 2 ^ S = (P - 1)\n    var q = this.m.subn(1);\n    var s = 0;\n    while (!q.isZero() && q.andln(1) === 0) {\n      s++;\n      q.iushrn(1);\n    }\n    assert(!q.isZero());\n\n    var one = new BN(1).toRed(this);\n    var nOne = one.redNeg();\n\n    // Find quadratic non-residue\n    // NOTE: Max is such because of generalized Riemann hypothesis.\n    var lpow = this.m.subn(1).iushrn(1);\n    var z = this.m.bitLength();\n    z = new BN(2 * z * z).toRed(this);\n\n    while (this.pow(z, lpow).cmp(nOne) !== 0) {\n      z.redIAdd(nOne);\n    }\n\n    var c = this.pow(z, q);\n    var r = this.pow(a, q.addn(1).iushrn(1));\n    var t = this.pow(a, q);\n    var m = s;\n    while (t.cmp(one) !== 0) {\n      var tmp = t;\n      for (var i = 0; tmp.cmp(one) !== 0; i++) {\n        tmp = tmp.redSqr();\n      }\n      assert(i < m);\n      var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n      r = r.redMul(b);\n      c = b.redSqr();\n      t = t.redMul(c);\n      m = i;\n    }\n\n    return r;\n  };\n\n  Red.prototype.invm = function invm (a) {\n    var inv = a._invmp(this.m);\n    if (inv.negative !== 0) {\n      inv.negative = 0;\n      return this.imod(inv).redNeg();\n    } else {\n      return this.imod(inv);\n    }\n  };\n\n  Red.prototype.pow = function pow (a, num) {\n    if (num.isZero()) return new BN(1).toRed(this);\n    if (num.cmpn(1) === 0) return a.clone();\n\n    var windowSize = 4;\n    var wnd = new Array(1 << windowSize);\n    wnd[0] = new BN(1).toRed(this);\n    wnd[1] = a;\n    for (var i = 2; i < wnd.length; i++) {\n      wnd[i] = this.mul(wnd[i - 1], a);\n    }\n\n    var res = wnd[0];\n    var current = 0;\n    var currentLen = 0;\n    var start = num.bitLength() % 26;\n    if (start === 0) {\n      start = 26;\n    }\n\n    for (i = num.length - 1; i >= 0; i--) {\n      var word = num.words[i];\n      for (var j = start - 1; j >= 0; j--) {\n        var bit = (word >> j) & 1;\n        if (res !== wnd[0]) {\n          res = this.sqr(res);\n        }\n\n        if (bit === 0 && current === 0) {\n          currentLen = 0;\n          continue;\n        }\n\n        current <<= 1;\n        current |= bit;\n        currentLen++;\n        if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n        res = this.mul(res, wnd[current]);\n        currentLen = 0;\n        current = 0;\n      }\n      start = 26;\n    }\n\n    return res;\n  };\n\n  Red.prototype.convertTo = function convertTo (num) {\n    var r = num.umod(this.m);\n\n    return r === num ? r.clone() : r;\n  };\n\n  Red.prototype.convertFrom = function convertFrom (num) {\n    var res = num.clone();\n    res.red = null;\n    return res;\n  };\n\n  //\n  // Montgomery method engine\n  //\n\n  BN.mont = function mont (num) {\n    return new Mont(num);\n  };\n\n  function Mont (m) {\n    Red.call(this, m);\n\n    this.shift = this.m.bitLength();\n    if (this.shift % 26 !== 0) {\n      this.shift += 26 - (this.shift % 26);\n    }\n\n    this.r = new BN(1).iushln(this.shift);\n    this.r2 = this.imod(this.r.sqr());\n    this.rinv = this.r._invmp(this.m);\n\n    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n    this.minv = this.minv.umod(this.r);\n    this.minv = this.r.sub(this.minv);\n  }\n  inherits(Mont, Red);\n\n  Mont.prototype.convertTo = function convertTo (num) {\n    return this.imod(num.ushln(this.shift));\n  };\n\n  Mont.prototype.convertFrom = function convertFrom (num) {\n    var r = this.imod(num.mul(this.rinv));\n    r.red = null;\n    return r;\n  };\n\n  Mont.prototype.imul = function imul (a, b) {\n    if (a.isZero() || b.isZero()) {\n      a.words[0] = 0;\n      a.length = 1;\n      return a;\n    }\n\n    var t = a.imul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.mul = function mul (a, b) {\n    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n    var t = a.mul(b);\n    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n    var u = t.isub(c).iushrn(this.shift);\n    var res = u;\n    if (u.cmp(this.m) >= 0) {\n      res = u.isub(this.m);\n    } else if (u.cmpn(0) < 0) {\n      res = u.iadd(this.m);\n    }\n\n    return res._forceRed(this);\n  };\n\n  Mont.prototype.invm = function invm (a) {\n    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n    var res = this.imod(a._invmp(this.m).mul(this.r2));\n    return res._forceRed(this);\n  };\n})(typeof module === 'undefined' || module, this);\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(166)(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9ibi5qcy9saWIvYm4uanM/ODFlYiJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gVXRpbHNcbiAgZnVuY3Rpb24gYXNzZXJ0ICh2YWwsIG1zZykge1xuICAgIGlmICghdmFsKSB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG4gIH1cblxuICAvLyBDb3VsZCB1c2UgYGluaGVyaXRzYCBtb2R1bGUsIGJ1dCBkb24ndCB3YW50IHRvIG1vdmUgZnJvbSBzaW5nbGUgZmlsZVxuICAvLyBhcmNoaXRlY3R1cmUgeWV0LlxuICBmdW5jdGlvbiBpbmhlcml0cyAoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3I7XG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge307XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZTtcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpO1xuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvcjtcbiAgfVxuXG4gIC8vIEJOXG5cbiAgZnVuY3Rpb24gQk4gKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKEJOLmlzQk4obnVtYmVyKSkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB0aGlzLndvcmRzID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICAvLyBSZWR1Y3Rpb24gY29udGV4dFxuICAgIHRoaXMucmVkID0gbnVsbDtcblxuICAgIGlmIChudW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGlmIChiYXNlID09PSAnbGUnIHx8IGJhc2UgPT09ICdiZScpIHtcbiAgICAgICAgZW5kaWFuID0gYmFzZTtcbiAgICAgICAgYmFzZSA9IDEwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbml0KG51bWJlciB8fCAwLCBiYXNlIHx8IDEwLCBlbmRpYW4gfHwgJ2JlJyk7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gQk47XG4gIH0gZWxzZSB7XG4gICAgZXhwb3J0cy5CTiA9IEJOO1xuICB9XG5cbiAgQk4uQk4gPSBCTjtcbiAgQk4ud29yZFNpemUgPSAyNjtcblxuICB2YXIgQnVmZmVyO1xuICB0cnkge1xuICAgIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbiAgfSBjYXRjaCAoZSkge1xuICB9XG5cbiAgQk4uaXNCTiA9IGZ1bmN0aW9uIGlzQk4gKG51bSkge1xuICAgIGlmIChudW0gaW5zdGFuY2VvZiBCTikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bSAhPT0gbnVsbCAmJiB0eXBlb2YgbnVtID09PSAnb2JqZWN0JyAmJlxuICAgICAgbnVtLmNvbnN0cnVjdG9yLndvcmRTaXplID09PSBCTi53b3JkU2l6ZSAmJiBBcnJheS5pc0FycmF5KG51bS53b3Jkcyk7XG4gIH07XG5cbiAgQk4ubWF4ID0gZnVuY3Rpb24gbWF4IChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPiAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ubWluID0gZnVuY3Rpb24gbWluIChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPCAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdCAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0TnVtYmVyKG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0QXJyYXkobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAnaGV4Jykge1xuICAgICAgYmFzZSA9IDE2O1xuICAgIH1cbiAgICBhc3NlcnQoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNik7XG5cbiAgICBudW1iZXIgPSBudW1iZXIudG9TdHJpbmcoKS5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGlmIChudW1iZXJbMF0gPT09ICctJykge1xuICAgICAgc3RhcnQrKztcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gMTYpIHtcbiAgICAgIHRoaXMuX3BhcnNlSGV4KG51bWJlciwgc3RhcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9wYXJzZUJhc2UobnVtYmVyLCBiYXNlLCBzdGFydCk7XG4gICAgfVxuXG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0TnVtYmVyID0gZnVuY3Rpb24gX2luaXROdW1iZXIgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDB4NDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgbnVtYmVyICYgMHgzZmZmZmZmIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPCAweDEwMDAwMDAwMDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobnVtYmVyIDwgMHgyMDAwMDAwMDAwMDAwMCk7IC8vIDIgXiA1MyAodW5zYWZlKVxuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZixcbiAgICAgICAgMVxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICAvLyBSZXZlcnNlIHRoZSBieXRlc1xuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXRBcnJheSA9IGZ1bmN0aW9uIF9pbml0QXJyYXkgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgLy8gUGVyaGFwcyBhIFVpbnQ4QXJyYXlcbiAgICBhc3NlcnQodHlwZW9mIG51bWJlci5sZW5ndGggPT09ICdudW1iZXInKTtcbiAgICBpZiAobnVtYmVyLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbChudW1iZXIubGVuZ3RoIC8gMyk7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMSwgaiA9IDA7IGkgPj0gMDsgaSAtPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgLSAxXSA8PCA4KSB8IChudW1iZXJbaSAtIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpICsgMV0gPDwgOCkgfCAobnVtYmVyW2kgKyAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUhleCAoc3RyLCBzdGFydCwgZW5kKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgPDw9IDQ7XG5cbiAgICAgIC8vICdhJyAtICdmJ1xuICAgICAgaWYgKGMgPj0gNDkgJiYgYyA8PSA1NCkge1xuICAgICAgICByIHw9IGMgLSA0OSArIDB4YTtcblxuICAgICAgLy8gJ0EnIC0gJ0YnXG4gICAgICB9IGVsc2UgaWYgKGMgPj0gMTcgJiYgYyA8PSAyMikge1xuICAgICAgICByIHw9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByIHw9IGMgJiAweGY7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUhleCA9IGZ1bmN0aW9uIF9wYXJzZUhleCAobnVtYmVyLCBzdGFydCkge1xuICAgIC8vIENyZWF0ZSBwb3NzaWJseSBiaWdnZXIgYXJyYXkgdG8gZW5zdXJlIHRoYXQgaXQgZml0cyB0aGUgbnVtYmVyXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwoKG51bWJlci5sZW5ndGggLSBzdGFydCkgLyA2KTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIHZhciBqLCB3O1xuICAgIC8vIFNjYW4gMjQtYml0IGNodW5rcyBhbmQgYWRkIHRoZW0gdG8gdGhlIG51bWJlclxuICAgIHZhciBvZmYgPSAwO1xuICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSA2LCBqID0gMDsgaSA+PSBzdGFydDsgaSAtPSA2KSB7XG4gICAgICB3ID0gcGFyc2VIZXgobnVtYmVyLCBpLCBpICsgNik7XG4gICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAvLyBOT1RFOiBgMHgzZmZmZmZgIGlzIGludGVudGlvbmFsIGhlcmUsIDI2Yml0cyBtYXggc2hpZnQgKyAyNGJpdCBoZXggbGltYlxuICAgICAgdGhpcy53b3Jkc1tqICsgMV0gfD0gdyA+Pj4gKDI2IC0gb2ZmKSAmIDB4M2ZmZmZmO1xuICAgICAgb2ZmICs9IDI0O1xuICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgIGorKztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGkgKyA2ICE9PSBzdGFydCkge1xuICAgICAgdyA9IHBhcnNlSGV4KG51bWJlciwgc3RhcnQsIGkgKyA2KTtcbiAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgIHRoaXMud29yZHNbaiArIDFdIHw9IHcgPj4+ICgyNiAtIG9mZikgJiAweDNmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlQmFzZSAoc3RyLCBzdGFydCwgZW5kLCBtdWwpIHtcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKHN0ci5sZW5ndGgsIGVuZCk7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBjID0gc3RyLmNoYXJDb2RlQXQoaSkgLSA0ODtcblxuICAgICAgciAqPSBtdWw7XG5cbiAgICAgIC8vICdhJ1xuICAgICAgaWYgKGMgPj0gNDkpIHtcbiAgICAgICAgciArPSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3KSB7XG4gICAgICAgIHIgKz0gYyAtIDE3ICsgMHhhO1xuXG4gICAgICAvLyAnMCcgLSAnOSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIgKz0gYztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlQmFzZSA9IGZ1bmN0aW9uIF9wYXJzZUJhc2UgKG51bWJlciwgYmFzZSwgc3RhcnQpIHtcbiAgICAvLyBJbml0aWFsaXplIGFzIHplcm9cbiAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuXG4gICAgLy8gRmluZCBsZW5ndGggb2YgbGltYiBpbiBiYXNlXG4gICAgZm9yICh2YXIgbGltYkxlbiA9IDAsIGxpbWJQb3cgPSAxOyBsaW1iUG93IDw9IDB4M2ZmZmZmZjsgbGltYlBvdyAqPSBiYXNlKSB7XG4gICAgICBsaW1iTGVuKys7XG4gICAgfVxuICAgIGxpbWJMZW4tLTtcbiAgICBsaW1iUG93ID0gKGxpbWJQb3cgLyBiYXNlKSB8IDA7XG5cbiAgICB2YXIgdG90YWwgPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgdmFyIG1vZCA9IHRvdGFsICUgbGltYkxlbjtcbiAgICB2YXIgZW5kID0gTWF0aC5taW4odG90YWwsIHRvdGFsIC0gbW9kKSArIHN0YXJ0O1xuXG4gICAgdmFyIHdvcmQgPSAwO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSBsaW1iTGVuKSB7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgaSArIGxpbWJMZW4sIGJhc2UpO1xuXG4gICAgICB0aGlzLmltdWxuKGxpbWJQb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2QgIT09IDApIHtcbiAgICAgIHZhciBwb3cgPSAxO1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIG51bWJlci5sZW5ndGgsIGJhc2UpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbW9kOyBpKyspIHtcbiAgICAgICAgcG93ICo9IGJhc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW11bG4ocG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5IChkZXN0KSB7XG4gICAgZGVzdC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXN0LndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICB9XG4gICAgZGVzdC5sZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICBkZXN0Lm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICBkZXN0LnJlZCA9IHRoaXMucmVkO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICB2YXIgciA9IG5ldyBCTihudWxsKTtcbiAgICB0aGlzLmNvcHkocik7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9leHBhbmQgPSBmdW5jdGlvbiBfZXhwYW5kIChzaXplKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgc2l6ZSkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFJlbW92ZSBsZWFkaW5nIGAwYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3RyaXAgPSBmdW5jdGlvbiBzdHJpcCAoKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoID4gMSAmJiB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fbm9ybVNpZ24gPSBmdW5jdGlvbiBfbm9ybVNpZ24gKCkge1xuICAgIC8vIC0wID0gMFxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICByZXR1cm4gKHRoaXMucmVkID8gJzxCTi1SOiAnIDogJzxCTjogJykgKyB0aGlzLnRvU3RyaW5nKDE2KSArICc+JztcbiAgfTtcblxuICAvKlxuXG4gIHZhciB6ZXJvcyA9IFtdO1xuICB2YXIgZ3JvdXBTaXplcyA9IFtdO1xuICB2YXIgZ3JvdXBCYXNlcyA9IFtdO1xuXG4gIHZhciBzID0gJyc7XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBCTi53b3JkU2l6ZSkge1xuICAgIHplcm9zW2ldID0gcztcbiAgICBzICs9ICcwJztcbiAgfVxuICBncm91cFNpemVzWzBdID0gMDtcbiAgZ3JvdXBTaXplc1sxXSA9IDA7XG4gIGdyb3VwQmFzZXNbMF0gPSAwO1xuICBncm91cEJhc2VzWzFdID0gMDtcbiAgdmFyIGJhc2UgPSAyIC0gMTtcbiAgd2hpbGUgKCsrYmFzZSA8IDM2ICsgMSkge1xuICAgIHZhciBncm91cFNpemUgPSAwO1xuICAgIHZhciBncm91cEJhc2UgPSAxO1xuICAgIHdoaWxlIChncm91cEJhc2UgPCAoMSA8PCBCTi53b3JkU2l6ZSkgLyBiYXNlKSB7XG4gICAgICBncm91cEJhc2UgKj0gYmFzZTtcbiAgICAgIGdyb3VwU2l6ZSArPSAxO1xuICAgIH1cbiAgICBncm91cFNpemVzW2Jhc2VdID0gZ3JvdXBTaXplO1xuICAgIGdyb3VwQmFzZXNbYmFzZV0gPSBncm91cEJhc2U7XG4gIH1cblxuICAqL1xuXG4gIHZhciB6ZXJvcyA9IFtcbiAgICAnJyxcbiAgICAnMCcsXG4gICAgJzAwJyxcbiAgICAnMDAwJyxcbiAgICAnMDAwMCcsXG4gICAgJzAwMDAwJyxcbiAgICAnMDAwMDAwJyxcbiAgICAnMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCdcbiAgXTtcblxuICB2YXIgZ3JvdXBTaXplcyA9IFtcbiAgICAwLCAwLFxuICAgIDI1LCAxNiwgMTIsIDExLCAxMCwgOSwgOCxcbiAgICA4LCA3LCA3LCA3LCA3LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1XG4gIF07XG5cbiAgdmFyIGdyb3VwQmFzZXMgPSBbXG4gICAgMCwgMCxcbiAgICAzMzU1NDQzMiwgNDMwNDY3MjEsIDE2Nzc3MjE2LCA0ODgyODEyNSwgNjA0NjYxNzYsIDQwMzUzNjA3LCAxNjc3NzIxNixcbiAgICA0MzA0NjcyMSwgMTAwMDAwMDAsIDE5NDg3MTcxLCAzNTgzMTgwOCwgNjI3NDg1MTcsIDc1Mjk1MzYsIDExMzkwNjI1LFxuICAgIDE2Nzc3MjE2LCAyNDEzNzU2OSwgMzQwMTIyMjQsIDQ3MDQ1ODgxLCA2NDAwMDAwMCwgNDA4NDEwMSwgNTE1MzYzMixcbiAgICA2NDM2MzQzLCA3OTYyNjI0LCA5NzY1NjI1LCAxMTg4MTM3NiwgMTQzNDg5MDcsIDE3MjEwMzY4LCAyMDUxMTE0OSxcbiAgICAyNDMwMDAwMCwgMjg2MjkxNTEsIDMzNTU0NDMyLCAzOTEzNTM5MywgNDU0MzU0MjQsIDUyNTIxODc1LCA2MDQ2NjE3NlxuICBdO1xuXG4gIEJOLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nIChiYXNlLCBwYWRkaW5nKSB7XG4gICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgcGFkZGluZyA9IHBhZGRpbmcgfCAwIHx8IDE7XG5cbiAgICB2YXIgb3V0O1xuICAgIGlmIChiYXNlID09PSAxNiB8fCBiYXNlID09PSAnaGV4Jykge1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgb2ZmID0gMDtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldO1xuICAgICAgICB2YXIgd29yZCA9ICgoKHcgPDwgb2ZmKSB8IGNhcnJ5KSAmIDB4ZmZmZmZmKS50b1N0cmluZygxNik7XG4gICAgICAgIGNhcnJ5ID0gKHcgPj4+ICgyNCAtIG9mZikpICYgMHhmZmZmZmY7XG4gICAgICAgIGlmIChjYXJyeSAhPT0gMCB8fCBpICE9PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1s2IC0gd29yZC5sZW5ndGhdICsgd29yZCArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSB3b3JkICsgb3V0O1xuICAgICAgICB9XG4gICAgICAgIG9mZiArPSAyO1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICAgIG91dCA9IGNhcnJ5LnRvU3RyaW5nKDE2KSArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KSB7XG4gICAgICAvLyB2YXIgZ3JvdXBTaXplID0gTWF0aC5mbG9vcihCTi53b3JkU2l6ZSAqIE1hdGguTE4yIC8gTWF0aC5sb2coYmFzZSkpO1xuICAgICAgdmFyIGdyb3VwU2l6ZSA9IGdyb3VwU2l6ZXNbYmFzZV07XG4gICAgICAvLyB2YXIgZ3JvdXBCYXNlID0gTWF0aC5wb3coYmFzZSwgZ3JvdXBTaXplKTtcbiAgICAgIHZhciBncm91cEJhc2UgPSBncm91cEJhc2VzW2Jhc2VdO1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgYyA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGMubmVnYXRpdmUgPSAwO1xuICAgICAgd2hpbGUgKCFjLmlzWmVybygpKSB7XG4gICAgICAgIHZhciByID0gYy5tb2RuKGdyb3VwQmFzZSkudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIGMgPSBjLmlkaXZuKGdyb3VwQmFzZSk7XG5cbiAgICAgICAgaWYgKCFjLmlzWmVybygpKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbZ3JvdXBTaXplIC0gci5sZW5ndGhdICsgciArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSByICsgb3V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBhc3NlcnQoZmFsc2UsICdCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Jyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvTnVtYmVyID0gZnVuY3Rpb24gdG9OdW1iZXIgKCkge1xuICAgIHZhciByZXQgPSB0aGlzLndvcmRzWzBdO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0ICs9IHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA9PT0gMyAmJiB0aGlzLndvcmRzWzJdID09PSAweDAxKSB7XG4gICAgICAvLyBOT1RFOiBhdCB0aGlzIHN0YWdlIGl0IGlzIGtub3duIHRoYXQgdGhlIHRvcCBiaXQgaXMgc2V0XG4gICAgICByZXQgKz0gMHgxMDAwMDAwMDAwMDAwMCArICh0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gMikge1xuICAgICAgYXNzZXJ0KGZhbHNlLCAnTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzJyk7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgPyAtcmV0IDogcmV0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKDE2KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9CdWZmZXIgPSBmdW5jdGlvbiB0b0J1ZmZlciAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpO1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEJ1ZmZlciwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gdG9BcnJheSAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5TGlrZSA9IGZ1bmN0aW9uIHRvQXJyYXlMaWtlIChBcnJheVR5cGUsIGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgdmFyIGJ5dGVMZW5ndGggPSB0aGlzLmJ5dGVMZW5ndGgoKTtcbiAgICB2YXIgcmVxTGVuZ3RoID0gbGVuZ3RoIHx8IE1hdGgubWF4KDEsIGJ5dGVMZW5ndGgpO1xuICAgIGFzc2VydChieXRlTGVuZ3RoIDw9IHJlcUxlbmd0aCwgJ2J5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgnKTtcbiAgICBhc3NlcnQocmVxTGVuZ3RoID4gMCwgJ1JlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCcpO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuICAgIHZhciBsaXR0bGVFbmRpYW4gPSBlbmRpYW4gPT09ICdsZSc7XG4gICAgdmFyIHJlcyA9IG5ldyBBcnJheVR5cGUocmVxTGVuZ3RoKTtcblxuICAgIHZhciBiLCBpO1xuICAgIHZhciBxID0gdGhpcy5jbG9uZSgpO1xuICAgIGlmICghbGl0dGxlRW5kaWFuKSB7XG4gICAgICAvLyBBc3N1bWUgYmlnLWVuZGlhblxuICAgICAgZm9yIChpID0gMDsgaSA8IHJlcUxlbmd0aCAtIGJ5dGVMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbcmVxTGVuZ3RoIC0gaSAtIDFdID0gYjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW2ldID0gYjtcbiAgICAgIH1cblxuICAgICAgZm9yICg7IGkgPCByZXFMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgaWYgKE1hdGguY2x6MzIpIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHJldHVybiAzMiAtIE1hdGguY2x6MzIodyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHZhciB0ID0gdztcbiAgICAgIHZhciByID0gMDtcbiAgICAgIGlmICh0ID49IDB4MTAwMCkge1xuICAgICAgICByICs9IDEzO1xuICAgICAgICB0ID4+Pj0gMTM7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDQwKSB7XG4gICAgICAgIHIgKz0gNztcbiAgICAgICAgdCA+Pj49IDc7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDgpIHtcbiAgICAgICAgciArPSA0O1xuICAgICAgICB0ID4+Pj0gNDtcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4MDIpIHtcbiAgICAgICAgciArPSAyO1xuICAgICAgICB0ID4+Pj0gMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByICsgdDtcbiAgICB9O1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl96ZXJvQml0cyA9IGZ1bmN0aW9uIF96ZXJvQml0cyAodykge1xuICAgIC8vIFNob3J0LWN1dFxuICAgIGlmICh3ID09PSAwKSByZXR1cm4gMjY7XG5cbiAgICB2YXIgdCA9IHc7XG4gICAgdmFyIHIgPSAwO1xuICAgIGlmICgodCAmIDB4MWZmZikgPT09IDApIHtcbiAgICAgIHIgKz0gMTM7XG4gICAgICB0ID4+Pj0gMTM7XG4gICAgfVxuICAgIGlmICgodCAmIDB4N2YpID09PSAwKSB7XG4gICAgICByICs9IDc7XG4gICAgICB0ID4+Pj0gNztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHhmKSA9PT0gMCkge1xuICAgICAgciArPSA0O1xuICAgICAgdCA+Pj49IDQ7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MykgPT09IDApIHtcbiAgICAgIHIgKz0gMjtcbiAgICAgIHQgPj4+PSAyO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDEpID09PSAwKSB7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIC8vIFJldHVybiBudW1iZXIgb2YgdXNlZCBiaXRzIGluIGEgQk5cbiAgQk4ucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uIGJpdExlbmd0aCAoKSB7XG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV07XG4gICAgdmFyIGhpID0gdGhpcy5fY291bnRCaXRzKHcpO1xuICAgIHJldHVybiAodGhpcy5sZW5ndGggLSAxKSAqIDI2ICsgaGk7XG4gIH07XG5cbiAgZnVuY3Rpb24gdG9CaXRBcnJheSAobnVtKSB7XG4gICAgdmFyIHcgPSBuZXcgQXJyYXkobnVtLmJpdExlbmd0aCgpKTtcblxuICAgIGZvciAodmFyIGJpdCA9IDA7IGJpdCA8IHcubGVuZ3RoOyBiaXQrKykge1xuICAgICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgICAgd1tiaXRdID0gKG51bS53b3Jkc1tvZmZdICYgKDEgPDwgd2JpdCkpID4+PiB3Yml0O1xuICAgIH1cblxuICAgIHJldHVybiB3O1xuICB9XG5cbiAgLy8gTnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0c1xuICBCTi5wcm90b3R5cGUuemVyb0JpdHMgPSBmdW5jdGlvbiB6ZXJvQml0cyAoKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiAwO1xuXG4gICAgdmFyIHIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGIgPSB0aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2ldKTtcbiAgICAgIHIgKz0gYjtcbiAgICAgIGlmIChiICE9PSAyNikgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ieXRlTGVuZ3RoID0gZnVuY3Rpb24gYnl0ZUxlbmd0aCAoKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpIC8gOCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvVHdvcyA9IGZ1bmN0aW9uIHRvVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWJzKCkuaW5vdG4od2lkdGgpLmlhZGRuKDEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tVHdvcyA9IGZ1bmN0aW9uIGZyb21Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLnRlc3RuKHdpZHRoIC0gMSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdG4od2lkdGgpLmlhZGRuKDEpLmluZWcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiBpc05lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmUgIT09IDA7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5lZyA9IGZ1bmN0aW9uIGluZWcgKCkge1xuICAgIGlmICghdGhpcy5pc1plcm8oKSkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdW9yID0gZnVuY3Rpb24gaXVvciAobnVtKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldIHwgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlvciA9IGZ1bmN0aW9uIGlvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVvcihudW0pO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pb3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVvciA9IGZ1bmN0aW9uIHVvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdWFuZCA9IGZ1bmN0aW9uIGl1YW5kIChudW0pIHtcbiAgICAvLyBiID0gbWluLWxlbmd0aChudW0sIHRoaXMpXG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSAmIG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGIubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFuZCA9IGZ1bmN0aW9uIGlhbmQgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1YW5kKG51bSk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiBhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYW5kKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51YW5kID0gZnVuY3Rpb24gdWFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdWFuZCh0aGlzKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1eG9yID0gZnVuY3Rpb24gaXV4b3IgKG51bSkge1xuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYTtcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldIF4gYi53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcyAhPT0gYSkge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5peG9yID0gZnVuY3Rpb24gaXhvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXV4b3IobnVtKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIHhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5peG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml4b3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnV4b3IgPSBmdW5jdGlvbiB1eG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1eG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1eG9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIE5vdCBgYHRoaXNgYCB3aXRoIGBgd2lkdGhgYCBiaXR3aWR0aFxuICBCTi5wcm90b3R5cGUuaW5vdG4gPSBmdW5jdGlvbiBpbm90biAod2lkdGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyAmJiB3aWR0aCA+PSAwKTtcblxuICAgIHZhciBieXRlc05lZWRlZCA9IE1hdGguY2VpbCh3aWR0aCAvIDI2KSB8IDA7XG4gICAgdmFyIGJpdHNMZWZ0ID0gd2lkdGggJSAyNjtcblxuICAgIC8vIEV4dGVuZCB0aGUgYnVmZmVyIHdpdGggbGVhZGluZyB6ZXJvZXNcbiAgICB0aGlzLl9leHBhbmQoYnl0ZXNOZWVkZWQpO1xuXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgYnl0ZXNOZWVkZWQtLTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgY29tcGxldGUgd29yZHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzTmVlZGVkOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIHJlc2lkdWVcbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAoMHgzZmZmZmZmID4+ICgyNiAtIGJpdHNMZWZ0KSk7XG4gICAgfVxuXG4gICAgLy8gQW5kIHJlbW92ZSBsZWFkaW5nIHplcm9lc1xuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm5vdG4gPSBmdW5jdGlvbiBub3RuICh3aWR0aCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5vdG4od2lkdGgpO1xuICB9O1xuXG4gIC8vIFNldCBgYml0YCBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNldG4gPSBmdW5jdGlvbiBzZXRuIChiaXQsIHZhbCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG5cbiAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgIHRoaXMuX2V4cGFuZChvZmYgKyAxKTtcblxuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSB8ICgxIDw8IHdiaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gJiB+KDEgPDwgd2JpdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAobnVtKSB7XG4gICAgdmFyIHI7XG5cbiAgICAvLyBuZWdhdGl2ZSArIHBvc2l0aXZlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gcG9zaXRpdmUgKyBuZWdhdGl2ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhLCBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAvLyBDb3B5IHRoZSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIH0gZWxzZSBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAobnVtKSB7XG4gICAgdmFyIHJlcztcbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwICYmIHRoaXMubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSB0aGlzLnN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSBpZiAobnVtLm5lZ2F0aXZlID09PSAwICYmIHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gbnVtLnN1Yih0aGlzKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGQobnVtKTtcblxuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYWRkKHRoaXMpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAobnVtKSB7XG4gICAgLy8gdGhpcyAtICgtbnVtKSA9IHRoaXMgKyBudW1cbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgdmFyIHIgPSB0aGlzLmlhZGQobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcblxuICAgIC8vIC10aGlzIC0gbnVtID0gLSh0aGlzICsgbnVtKVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGQobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlXG4gICAgdmFyIGNtcCA9IHRoaXMuY21wKG51bSk7XG5cbiAgICAvLyBPcHRpbWl6YXRpb24gLSB6ZXJvaWZ5XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIGEgPiBiXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGNtcCA+IDApIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSAtIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBDb3B5IHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgaWYgKGNhcnJ5ID09PSAwICYmIGkgPCBhLmxlbmd0aCAmJiBhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSk7XG5cbiAgICBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBzbWFsbE11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgdmFyIGxlbiA9IChzZWxmLmxlbmd0aCArIG51bS5sZW5ndGgpIHwgMDtcbiAgICBvdXQubGVuZ3RoID0gbGVuO1xuICAgIGxlbiA9IChsZW4gLSAxKSB8IDA7XG5cbiAgICAvLyBQZWVsIG9uZSBpdGVyYXRpb24gKGNvbXBpbGVyIGNhbid0IGRvIGl0LCBiZWNhdXNlIG9mIGNvZGUgY29tcGxleGl0eSlcbiAgICB2YXIgYSA9IHNlbGYud29yZHNbMF0gfCAwO1xuICAgIHZhciBiID0gbnVtLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICB2YXIgY2FycnkgPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgIG91dC53b3Jkc1swXSA9IGxvO1xuXG4gICAgZm9yICh2YXIgayA9IDE7IGsgPCBsZW47IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBjYXJyeSA+Pj4gMjY7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IChrIC0gaikgfCAwO1xuICAgICAgICBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICByID0gYSAqIGIgKyByd29yZDtcbiAgICAgICAgbmNhcnJ5ICs9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkIHwgMDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5IHwgMDtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeSB8IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICAvLyBUT0RPKGluZHV0bnkpOiBpdCBtYXkgYmUgcmVhc29uYWJsZSB0byBvbWl0IGl0IGZvciB1c2VycyB3aG8gZG9uJ3QgbmVlZFxuICAvLyB0byB3b3JrIHdpdGggMjU2LWJpdCBudW1iZXJzLCBvdGhlcndpc2UgaXQgZ2l2ZXMgMjAlIGltcHJvdmVtZW50IGZvciAyNTYtYml0XG4gIC8vIG11bHRpcGxpY2F0aW9uIChsaWtlIGVsbGlwdGljIHNlY3AyNTZrMSkuXG4gIHZhciBjb21iMTBNdWxUbyA9IGZ1bmN0aW9uIGNvbWIxME11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBhID0gc2VsZi53b3JkcztcbiAgICB2YXIgYiA9IG51bS53b3JkcztcbiAgICB2YXIgbyA9IG91dC53b3JkcztcbiAgICB2YXIgYyA9IDA7XG4gICAgdmFyIGxvO1xuICAgIHZhciBtaWQ7XG4gICAgdmFyIGhpO1xuICAgIHZhciBhMCA9IGFbMF0gfCAwO1xuICAgIHZhciBhbDAgPSBhMCAmIDB4MWZmZjtcbiAgICB2YXIgYWgwID0gYTAgPj4+IDEzO1xuICAgIHZhciBhMSA9IGFbMV0gfCAwO1xuICAgIHZhciBhbDEgPSBhMSAmIDB4MWZmZjtcbiAgICB2YXIgYWgxID0gYTEgPj4+IDEzO1xuICAgIHZhciBhMiA9IGFbMl0gfCAwO1xuICAgIHZhciBhbDIgPSBhMiAmIDB4MWZmZjtcbiAgICB2YXIgYWgyID0gYTIgPj4+IDEzO1xuICAgIHZhciBhMyA9IGFbM10gfCAwO1xuICAgIHZhciBhbDMgPSBhMyAmIDB4MWZmZjtcbiAgICB2YXIgYWgzID0gYTMgPj4+IDEzO1xuICAgIHZhciBhNCA9IGFbNF0gfCAwO1xuICAgIHZhciBhbDQgPSBhNCAmIDB4MWZmZjtcbiAgICB2YXIgYWg0ID0gYTQgPj4+IDEzO1xuICAgIHZhciBhNSA9IGFbNV0gfCAwO1xuICAgIHZhciBhbDUgPSBhNSAmIDB4MWZmZjtcbiAgICB2YXIgYWg1ID0gYTUgPj4+IDEzO1xuICAgIHZhciBhNiA9IGFbNl0gfCAwO1xuICAgIHZhciBhbDYgPSBhNiAmIDB4MWZmZjtcbiAgICB2YXIgYWg2ID0gYTYgPj4+IDEzO1xuICAgIHZhciBhNyA9IGFbN10gfCAwO1xuICAgIHZhciBhbDcgPSBhNyAmIDB4MWZmZjtcbiAgICB2YXIgYWg3ID0gYTcgPj4+IDEzO1xuICAgIHZhciBhOCA9IGFbOF0gfCAwO1xuICAgIHZhciBhbDggPSBhOCAmIDB4MWZmZjtcbiAgICB2YXIgYWg4ID0gYTggPj4+IDEzO1xuICAgIHZhciBhOSA9IGFbOV0gfCAwO1xuICAgIHZhciBhbDkgPSBhOSAmIDB4MWZmZjtcbiAgICB2YXIgYWg5ID0gYTkgPj4+IDEzO1xuICAgIHZhciBiMCA9IGJbMF0gfCAwO1xuICAgIHZhciBibDAgPSBiMCAmIDB4MWZmZjtcbiAgICB2YXIgYmgwID0gYjAgPj4+IDEzO1xuICAgIHZhciBiMSA9IGJbMV0gfCAwO1xuICAgIHZhciBibDEgPSBiMSAmIDB4MWZmZjtcbiAgICB2YXIgYmgxID0gYjEgPj4+IDEzO1xuICAgIHZhciBiMiA9IGJbMl0gfCAwO1xuICAgIHZhciBibDIgPSBiMiAmIDB4MWZmZjtcbiAgICB2YXIgYmgyID0gYjIgPj4+IDEzO1xuICAgIHZhciBiMyA9IGJbM10gfCAwO1xuICAgIHZhciBibDMgPSBiMyAmIDB4MWZmZjtcbiAgICB2YXIgYmgzID0gYjMgPj4+IDEzO1xuICAgIHZhciBiNCA9IGJbNF0gfCAwO1xuICAgIHZhciBibDQgPSBiNCAmIDB4MWZmZjtcbiAgICB2YXIgYmg0ID0gYjQgPj4+IDEzO1xuICAgIHZhciBiNSA9IGJbNV0gfCAwO1xuICAgIHZhciBibDUgPSBiNSAmIDB4MWZmZjtcbiAgICB2YXIgYmg1ID0gYjUgPj4+IDEzO1xuICAgIHZhciBiNiA9IGJbNl0gfCAwO1xuICAgIHZhciBibDYgPSBiNiAmIDB4MWZmZjtcbiAgICB2YXIgYmg2ID0gYjYgPj4+IDEzO1xuICAgIHZhciBiNyA9IGJbN10gfCAwO1xuICAgIHZhciBibDcgPSBiNyAmIDB4MWZmZjtcbiAgICB2YXIgYmg3ID0gYjcgPj4+IDEzO1xuICAgIHZhciBiOCA9IGJbOF0gfCAwO1xuICAgIHZhciBibDggPSBiOCAmIDB4MWZmZjtcbiAgICB2YXIgYmg4ID0gYjggPj4+IDEzO1xuICAgIHZhciBiOSA9IGJbOV0gfCAwO1xuICAgIHZhciBibDkgPSBiOSAmIDB4MWZmZjtcbiAgICB2YXIgYmg5ID0gYjkgPj4+IDEzO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0gc2VsZi5uZWdhdGl2ZSBeIG51bS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gMTk7XG4gICAgLyogayA9IDAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDAsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMCwgYmgwKTtcbiAgICB2YXIgdzAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcwID4+PiAyNikpIHwgMDtcbiAgICB3MCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDEsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDEpKSB8IDA7XG4gICAgdmFyIHcxID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MSA+Pj4gMjYpKSB8IDA7XG4gICAgdzEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwyLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDIsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDIsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMikpIHwgMDtcbiAgICB2YXIgdzIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcyID4+PiAyNikpIHwgMDtcbiAgICB3MiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDMsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMykpIHwgMDtcbiAgICB2YXIgdzMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHczID4+PiAyNikpIHwgMDtcbiAgICB3MyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDQsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDQpKSB8IDA7XG4gICAgdmFyIHc0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NCA+Pj4gMjYpKSB8IDA7XG4gICAgdzQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw1LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDUsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDUsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNSkpIHwgMDtcbiAgICB2YXIgdzUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc1ID4+PiAyNikpIHwgMDtcbiAgICB3NSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDYsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNikpIHwgMDtcbiAgICB2YXIgdzYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc2ID4+PiAyNikpIHwgMDtcbiAgICB3NiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDcsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDcpKSB8IDA7XG4gICAgdmFyIHc3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NyA+Pj4gMjYpKSB8IDA7XG4gICAgdzcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw4LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDgsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDgsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOCkpIHwgMDtcbiAgICB2YXIgdzggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc4ID4+PiAyNikpIHwgMDtcbiAgICB3OCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDkgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzkgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc5ID4+PiAyNikpIHwgMDtcbiAgICB3OSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDEpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTAgPj4+IDI2KSkgfCAwO1xuICAgIHcxMCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDExICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDIpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMSA+Pj4gMjYpKSB8IDA7XG4gICAgdzExICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgzKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwzKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgzKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTIgPj4+IDI2KSkgfCAwO1xuICAgIHcxMiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDQpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEzID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTMgPj4+IDI2KSkgfCAwO1xuICAgIHcxMyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDUpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg2KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw2KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg2KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTUgPj4+IDI2KSkgfCAwO1xuICAgIHcxNSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDcpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTYgPj4+IDI2KSkgfCAwO1xuICAgIHcxNiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDgpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNyA+Pj4gMjYpKSB8IDA7XG4gICAgdzE3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg5KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw5KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg5KTtcbiAgICB2YXIgdzE4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTggPj4+IDI2KSkgfCAwO1xuICAgIHcxOCAmPSAweDNmZmZmZmY7XG4gICAgb1swXSA9IHcwO1xuICAgIG9bMV0gPSB3MTtcbiAgICBvWzJdID0gdzI7XG4gICAgb1szXSA9IHczO1xuICAgIG9bNF0gPSB3NDtcbiAgICBvWzVdID0gdzU7XG4gICAgb1s2XSA9IHc2O1xuICAgIG9bN10gPSB3NztcbiAgICBvWzhdID0gdzg7XG4gICAgb1s5XSA9IHc5O1xuICAgIG9bMTBdID0gdzEwO1xuICAgIG9bMTFdID0gdzExO1xuICAgIG9bMTJdID0gdzEyO1xuICAgIG9bMTNdID0gdzEzO1xuICAgIG9bMTRdID0gdzE0O1xuICAgIG9bMTVdID0gdzE1O1xuICAgIG9bMTZdID0gdzE2O1xuICAgIG9bMTddID0gdzE3O1xuICAgIG9bMThdID0gdzE4O1xuICAgIGlmIChjICE9PSAwKSB7XG4gICAgICBvWzE5XSA9IGM7XG4gICAgICBvdXQubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH07XG5cbiAgLy8gUG9seWZpbGwgY29tYlxuICBpZiAoIU1hdGguaW11bCkge1xuICAgIGNvbWIxME11bFRvID0gc21hbGxNdWxUbztcbiAgfVxuXG4gIGZ1bmN0aW9uIGJpZ011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aDtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgdmFyIGhuY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb3V0Lmxlbmd0aCAtIDE7IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBobmNhcnJ5O1xuICAgICAgaG5jYXJyeSA9IDA7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IGsgLSBqO1xuICAgICAgICB2YXIgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICB2YXIgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHZhciByID0gYSAqIGI7XG5cbiAgICAgICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArICgociAvIDB4NDAwMDAwMCkgfCAwKSkgfCAwO1xuICAgICAgICBsbyA9IChsbyArIHJ3b3JkKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAobG8gPj4+IDI2KSkgfCAwO1xuXG4gICAgICAgIGhuY2FycnkgKz0gbmNhcnJ5ID4+PiAyNjtcbiAgICAgICAgbmNhcnJ5ICY9IDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkO1xuICAgICAgY2FycnkgPSBuY2Fycnk7XG4gICAgICBuY2FycnkgPSBobmNhcnJ5O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgZnVuY3Rpb24ganVtYm9NdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgZmZ0bSA9IG5ldyBGRlRNKCk7XG4gICAgcmV0dXJuIGZmdG0ubXVscChzZWxmLCBudW0sIG91dCk7XG4gIH1cblxuICBCTi5wcm90b3R5cGUubXVsVG8gPSBmdW5jdGlvbiBtdWxUbyAobnVtLCBvdXQpIHtcbiAgICB2YXIgcmVzO1xuICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCArIG51bS5sZW5ndGg7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxMCAmJiBudW0ubGVuZ3RoID09PSAxMCkge1xuICAgICAgcmVzID0gY29tYjEwTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgNjMpIHtcbiAgICAgIHJlcyA9IHNtYWxsTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgMTAyNCkge1xuICAgICAgcmVzID0gYmlnTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvb2xleS1UdWtleSBhbGdvcml0aG0gZm9yIEZGVFxuICAvLyBzbGlnaHRseSByZXZpc2l0ZWQgdG8gcmVseSBvbiBsb29waW5nIGluc3RlYWQgb2YgcmVjdXJzaW9uXG5cbiAgZnVuY3Rpb24gRkZUTSAoeCwgeSkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIEZGVE0ucHJvdG90eXBlLm1ha2VSQlQgPSBmdW5jdGlvbiBtYWtlUkJUIChOKSB7XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGwgPSBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyhOKSAtIDE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHRbaV0gPSB0aGlzLnJldkJpbihpLCBsLCBOKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGJpbmFyeS1yZXZlcnNlZCByZXByZXNlbnRhdGlvbiBvZiBgeGBcbiAgRkZUTS5wcm90b3R5cGUucmV2QmluID0gZnVuY3Rpb24gcmV2QmluICh4LCBsLCBOKSB7XG4gICAgaWYgKHggPT09IDAgfHwgeCA9PT0gTiAtIDEpIHJldHVybiB4O1xuXG4gICAgdmFyIHJiID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgcmIgfD0gKHggJiAxKSA8PCAobCAtIGkgLSAxKTtcbiAgICAgIHggPj49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJiO1xuICB9O1xuXG4gIC8vIFBlcmZvcm1zIFwidHdlZWRsaW5nXCIgcGhhc2UsIHRoZXJlZm9yZSAnZW11bGF0aW5nJ1xuICAvLyBiZWhhdmlvdXIgb2YgdGhlIHJlY3Vyc2l2ZSBhbGdvcml0aG1cbiAgRkZUTS5wcm90b3R5cGUucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUgKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcnR3c1tpXSA9IHJ3c1tyYnRbaV1dO1xuICAgICAgaXR3c1tpXSA9IGl3c1tyYnRbaV1dO1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiB0cmFuc2Zvcm0gKHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOLCByYnQpIHtcbiAgICB0aGlzLnBlcm11dGUocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTik7XG5cbiAgICBmb3IgKHZhciBzID0gMTsgcyA8IE47IHMgPDw9IDEpIHtcbiAgICAgIHZhciBsID0gcyA8PCAxO1xuXG4gICAgICB2YXIgcnR3ZGYgPSBNYXRoLmNvcygyICogTWF0aC5QSSAvIGwpO1xuICAgICAgdmFyIGl0d2RmID0gTWF0aC5zaW4oMiAqIE1hdGguUEkgLyBsKTtcblxuICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBOOyBwICs9IGwpIHtcbiAgICAgICAgdmFyIHJ0d2RmXyA9IHJ0d2RmO1xuICAgICAgICB2YXIgaXR3ZGZfID0gaXR3ZGY7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzOyBqKyspIHtcbiAgICAgICAgICB2YXIgcmUgPSBydHdzW3AgKyBqXTtcbiAgICAgICAgICB2YXIgaWUgPSBpdHdzW3AgKyBqXTtcblxuICAgICAgICAgIHZhciBybyA9IHJ0d3NbcCArIGogKyBzXTtcbiAgICAgICAgICB2YXIgaW8gPSBpdHdzW3AgKyBqICsgc107XG5cbiAgICAgICAgICB2YXIgcnggPSBydHdkZl8gKiBybyAtIGl0d2RmXyAqIGlvO1xuXG4gICAgICAgICAgaW8gPSBydHdkZl8gKiBpbyArIGl0d2RmXyAqIHJvO1xuICAgICAgICAgIHJvID0gcng7XG5cbiAgICAgICAgICBydHdzW3AgKyBqXSA9IHJlICsgcm87XG4gICAgICAgICAgaXR3c1twICsgal0gPSBpZSArIGlvO1xuXG4gICAgICAgICAgcnR3c1twICsgaiArIHNdID0gcmUgLSBybztcbiAgICAgICAgICBpdHdzW3AgKyBqICsgc10gPSBpZSAtIGlvO1xuXG4gICAgICAgICAgLyoganNoaW50IG1heGRlcHRoIDogZmFsc2UgKi9cbiAgICAgICAgICBpZiAoaiAhPT0gbCkge1xuICAgICAgICAgICAgcnggPSBydHdkZiAqIHJ0d2RmXyAtIGl0d2RmICogaXR3ZGZfO1xuXG4gICAgICAgICAgICBpdHdkZl8gPSBydHdkZiAqIGl0d2RmXyArIGl0d2RmICogcnR3ZGZfO1xuICAgICAgICAgICAgcnR3ZGZfID0gcng7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmd1ZXNzTGVuMTNiID0gZnVuY3Rpb24gZ3Vlc3NMZW4xM2IgKG4sIG0pIHtcbiAgICB2YXIgTiA9IE1hdGgubWF4KG0sIG4pIHwgMTtcbiAgICB2YXIgb2RkID0gTiAmIDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoTiA9IE4gLyAyIHwgMDsgTjsgTiA9IE4gPj4+IDEpIHtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICByZXR1cm4gMSA8PCBpICsgMSArIG9kZDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb25qdWdhdGUgPSBmdW5jdGlvbiBjb25qdWdhdGUgKHJ3cywgaXdzLCBOKSB7XG4gICAgaWYgKE4gPD0gMSkgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdCA9IHJ3c1tpXTtcblxuICAgICAgcndzW2ldID0gcndzW04gLSBpIC0gMV07XG4gICAgICByd3NbTiAtIGkgLSAxXSA9IHQ7XG5cbiAgICAgIHQgPSBpd3NbaV07XG5cbiAgICAgIGl3c1tpXSA9IC1pd3NbTiAtIGkgLSAxXTtcbiAgICAgIGl3c1tOIC0gaSAtIDFdID0gLXQ7XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm5vcm1hbGl6ZTEzYiA9IGZ1bmN0aW9uIG5vcm1hbGl6ZTEzYiAod3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHcgPSBNYXRoLnJvdW5kKHdzWzIgKiBpICsgMV0gLyBOKSAqIDB4MjAwMCArXG4gICAgICAgIE1hdGgucm91bmQod3NbMiAqIGldIC8gTikgK1xuICAgICAgICBjYXJyeTtcblxuICAgICAgd3NbaV0gPSB3ICYgMHgzZmZmZmZmO1xuXG4gICAgICBpZiAodyA8IDB4NDAwMDAwMCkge1xuICAgICAgICBjYXJyeSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJyeSA9IHcgLyAweDQwMDAwMDAgfCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB3cztcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb252ZXJ0MTNiID0gZnVuY3Rpb24gY29udmVydDEzYiAod3MsIGxlbiwgcndzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjYXJyeSA9IGNhcnJ5ICsgKHdzW2ldIHwgMCk7XG5cbiAgICAgIHJ3c1syICogaV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgICByd3NbMiAqIGkgKyAxXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICB9XG5cbiAgICAvLyBQYWQgd2l0aCB6ZXJvZXNcbiAgICBmb3IgKGkgPSAyICogbGVuOyBpIDwgTjsgKytpKSB7XG4gICAgICByd3NbaV0gPSAwO1xuICAgIH1cblxuICAgIGFzc2VydChjYXJyeSA9PT0gMCk7XG4gICAgYXNzZXJ0KChjYXJyeSAmIH4weDFmZmYpID09PSAwKTtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5zdHViID0gZnVuY3Rpb24gc3R1YiAoTikge1xuICAgIHZhciBwaCA9IG5ldyBBcnJheShOKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcGhbaV0gPSAwO1xuICAgIH1cblxuICAgIHJldHVybiBwaDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5tdWxwID0gZnVuY3Rpb24gbXVscCAoeCwgeSwgb3V0KSB7XG4gICAgdmFyIE4gPSAyICogdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCwgeS5sZW5ndGgpO1xuXG4gICAgdmFyIHJidCA9IHRoaXMubWFrZVJCVChOKTtcblxuICAgIHZhciBfID0gdGhpcy5zdHViKE4pO1xuXG4gICAgdmFyIHJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgcndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBucndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBucndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbml3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgcm13cyA9IG91dC53b3JkcztcbiAgICBybXdzLmxlbmd0aCA9IE47XG5cbiAgICB0aGlzLmNvbnZlcnQxM2IoeC53b3JkcywgeC5sZW5ndGgsIHJ3cywgTik7XG4gICAgdGhpcy5jb252ZXJ0MTNiKHkud29yZHMsIHkubGVuZ3RoLCBucndzLCBOKTtcblxuICAgIHRoaXMudHJhbnNmb3JtKHJ3cywgXywgcndzdCwgaXdzdCwgTiwgcmJ0KTtcbiAgICB0aGlzLnRyYW5zZm9ybShucndzLCBfLCBucndzdCwgbml3c3QsIE4sIHJidCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdmFyIHJ4ID0gcndzdFtpXSAqIG5yd3N0W2ldIC0gaXdzdFtpXSAqIG5pd3N0W2ldO1xuICAgICAgaXdzdFtpXSA9IHJ3c3RbaV0gKiBuaXdzdFtpXSArIGl3c3RbaV0gKiBucndzdFtpXTtcbiAgICAgIHJ3c3RbaV0gPSByeDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmp1Z2F0ZShyd3N0LCBpd3N0LCBOKTtcbiAgICB0aGlzLnRyYW5zZm9ybShyd3N0LCBpd3N0LCBybXdzLCBfLCBOLCByYnQpO1xuICAgIHRoaXMuY29uanVnYXRlKHJtd3MsIF8sIE4pO1xuICAgIHRoaXMubm9ybWFsaXplMTNiKHJtd3MsIE4pO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0geC5uZWdhdGl2ZSBeIHkubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHgubGVuZ3RoICsgeS5sZW5ndGg7XG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGB0aGlzYCBieSBgbnVtYFxuICBCTi5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiB0aGlzLm11bFRvKG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBlbXBsb3lpbmcgRkZUXG4gIEJOLnByb3RvdHlwZS5tdWxmID0gZnVuY3Rpb24gbXVsZiAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgTXVsdGlwbGljYXRpb25cbiAgQk4ucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKG51bSwgdGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmltdWxuID0gZnVuY3Rpb24gaW11bG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG5cbiAgICAvLyBDYXJyeVxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKiBudW07XG4gICAgICB2YXIgbG8gPSAodyAmIDB4M2ZmZmZmZikgKyAoY2FycnkgJiAweDNmZmZmZmYpO1xuICAgICAgY2FycnkgPj49IDI2O1xuICAgICAgY2FycnkgKz0gKHcgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgIC8vIE5PVEU6IGxvIGlzIDI3Yml0IG1heGltdW1cbiAgICAgIGNhcnJ5ICs9IGxvID4+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm11bG4gPSBmdW5jdGlvbiBtdWxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKG51bSk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLm11bCh0aGlzKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSk7XG4gIH07XG5cbiAgLy8gTWF0aC5wb3coYHRoaXNgLCBgbnVtYClcbiAgQk4ucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAobnVtKSB7XG4gICAgdmFyIHcgPSB0b0JpdEFycmF5KG51bSk7XG4gICAgaWYgKHcubGVuZ3RoID09PSAwKSByZXR1cm4gbmV3IEJOKDEpO1xuXG4gICAgLy8gU2tpcCBsZWFkaW5nIHplcm9lc1xuICAgIHZhciByZXMgPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdy5sZW5ndGg7IGkrKywgcmVzID0gcmVzLnNxcigpKSB7XG4gICAgICBpZiAod1tpXSAhPT0gMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKCsraSA8IHcubGVuZ3RoKSB7XG4gICAgICBmb3IgKHZhciBxID0gcmVzLnNxcigpOyBpIDwgdy5sZW5ndGg7IGkrKywgcSA9IHEuc3FyKCkpIHtcbiAgICAgICAgaWYgKHdbaV0gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHJlcy5tdWwocSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0IGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXNobG4gPSBmdW5jdGlvbiBpdXNobG4gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG4gICAgdmFyIGNhcnJ5TWFzayA9ICgweDNmZmZmZmYgPj4+ICgyNiAtIHIpKSA8PCAoMjYgLSByKTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbmV3Q2FycnkgPSB0aGlzLndvcmRzW2ldICYgY2FycnlNYXNrO1xuICAgICAgICB2YXIgYyA9ICgodGhpcy53b3Jkc1tpXSB8IDApIC0gbmV3Q2FycnkpIDw8IHI7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjIHwgY2Fycnk7XG4gICAgICAgIGNhcnJ5ID0gbmV3Q2FycnkgPj4+ICgyNiAtIHIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2FycnkpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzICE9PSAwKSB7XG4gICAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIHNdID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggKz0gcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hsbiA9IGZ1bmN0aW9uIGlzaGxuIChiaXRzKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodCBpbi1wbGFjZVxuICAvLyBOT1RFOiBgaGludGAgaXMgYSBsb3dlc3QgYml0IGJlZm9yZSB0cmFpbGluZyB6ZXJvZXNcbiAgLy8gTk9URTogaWYgYGV4dGVuZGVkYCBpcyBwcmVzZW50IC0gaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBkZXN0cm95ZWQgYml0c1xuICBCTi5wcm90b3R5cGUuaXVzaHJuID0gZnVuY3Rpb24gaXVzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgaDtcbiAgICBpZiAoaGludCkge1xuICAgICAgaCA9IChoaW50IC0gKGhpbnQgJSAyNikpIC8gMjY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGggPSAwO1xuICAgIH1cblxuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gTWF0aC5taW4oKGJpdHMgLSByKSAvIDI2LCB0aGlzLmxlbmd0aCk7XG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgdmFyIG1hc2tlZFdvcmRzID0gZXh0ZW5kZWQ7XG5cbiAgICBoIC09IHM7XG4gICAgaCA9IE1hdGgubWF4KDAsIGgpO1xuXG4gICAgLy8gRXh0ZW5kZWQgbW9kZSwgY29weSBtYXNrZWQgcGFydFxuICAgIGlmIChtYXNrZWRXb3Jkcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgbWFza2VkV29yZHMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuICAgICAgbWFza2VkV29yZHMubGVuZ3RoID0gcztcbiAgICB9XG5cbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgLy8gTm8tb3AsIHdlIHNob3VsZCBub3QgbW92ZSBhbnl0aGluZyBhdCBhbGxcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gcykge1xuICAgICAgdGhpcy5sZW5ndGggLT0gcztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2kgKyBzXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiAoY2FycnkgIT09IDAgfHwgaSA+PSBoKTsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IChjYXJyeSA8PCAoMjYgLSByKSkgfCAod29yZCA+Pj4gcik7XG4gICAgICBjYXJyeSA9IHdvcmQgJiBtYXNrO1xuICAgIH1cblxuICAgIC8vIFB1c2ggY2FycmllZCBiaXRzIGFzIGEgbWFza1xuICAgIGlmIChtYXNrZWRXb3JkcyAmJiBjYXJyeSAhPT0gMCkge1xuICAgICAgbWFza2VkV29yZHMud29yZHNbbWFza2VkV29yZHMubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hybiA9IGZ1bmN0aW9uIGlzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNocm4oYml0cywgaGludCwgZXh0ZW5kZWQpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnRcbiAgQk4ucHJvdG90eXBlLnNobG4gPSBmdW5jdGlvbiBzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNobG4gPSBmdW5jdGlvbiB1c2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0XG4gIEJOLnByb3RvdHlwZS5zaHJuID0gZnVuY3Rpb24gc2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaHJuID0gZnVuY3Rpb24gdXNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiaXRzKTtcbiAgfTtcblxuICAvLyBUZXN0IGlmIG4gYml0IGlzIHNldFxuICBCTi5wcm90b3R5cGUudGVzdG4gPSBmdW5jdGlvbiB0ZXN0biAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBiaXQgYW5kIHJldHVyblxuICAgIHZhciB3ID0gdGhpcy53b3Jkc1tzXTtcblxuICAgIHJldHVybiAhISh3ICYgcSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyIChpbi1wbGFjZSlcbiAgQk4ucHJvdG90eXBlLmltYXNrbiA9IGZ1bmN0aW9uIGltYXNrbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcblxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAnaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzJyk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHMrKztcbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1pbihzLCB0aGlzLmxlbmd0aCk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gJj0gbWFzaztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlclxuICBCTi5wcm90b3R5cGUubWFza24gPSBmdW5jdGlvbiBtYXNrbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGJpdHMpO1xuICB9O1xuXG4gIC8vIEFkZCBwbGFpbiBudW1iZXIgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pYWRkbiA9IGZ1bmN0aW9uIGlhZGRuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pc3VibigtbnVtKTtcblxuICAgIC8vIFBvc3NpYmxlIHNpZ24gY2hhbmdlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiAodGhpcy53b3Jkc1swXSB8IDApIDwgbnVtKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gPSBudW0gLSAodGhpcy53b3Jkc1swXSB8IDApO1xuICAgICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pc3VibihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aG91dCBjaGVja3NcbiAgICByZXR1cm4gdGhpcy5faWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lhZGRuID0gZnVuY3Rpb24gX2lhZGRuIChudW0pIHtcbiAgICB0aGlzLndvcmRzWzBdICs9IG51bTtcblxuICAgIC8vIENhcnJ5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldID49IDB4NDAwMDAwMDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldIC09IDB4NDAwMDAwMDtcbiAgICAgIGlmIChpID09PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0rKztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSArIDEpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgcGxhaW4gbnVtYmVyIGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pc3VibiA9IGZ1bmN0aW9uIGlzdWJuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pYWRkbigtbnVtKTtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZG4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy53b3Jkc1swXSAtPSBudW07XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA8IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAtdGhpcy53b3Jkc1swXTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDYXJyeVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldIDwgMDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gKz0gMHg0MDAwMDAwO1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSAtPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFkZG4gPSBmdW5jdGlvbiBhZGRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnN1Ym4gPSBmdW5jdGlvbiBzdWJuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhYnMgPSBmdW5jdGlvbiBpYWJzICgpIHtcbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiBhYnMgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFicygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faXNobG5zdWJtdWwgPSBmdW5jdGlvbiBfaXNobG5zdWJtdWwgKG51bSwgbXVsLCBzaGlmdCkge1xuICAgIHZhciBsZW4gPSBudW0ubGVuZ3RoICsgc2hpZnQ7XG4gICAgdmFyIGk7XG5cbiAgICB0aGlzLl9leHBhbmQobGVuKTtcblxuICAgIHZhciB3O1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgdmFyIHJpZ2h0ID0gKG51bS53b3Jkc1tpXSB8IDApICogbXVsO1xuICAgICAgdyAtPSByaWdodCAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gKHcgPj4gMjYpIC0gKChyaWdodCAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBpIDwgdGhpcy5sZW5ndGggLSBzaGlmdDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSA9PT0gMCkgcmV0dXJuIHRoaXMuc3RyaXAoKTtcblxuICAgIC8vIFN1YnRyYWN0aW9uIG92ZXJmbG93XG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAtMSk7XG4gICAgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gLSh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICB0aGlzLm5lZ2F0aXZlID0gMTtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl93b3JkRGl2ID0gZnVuY3Rpb24gX3dvcmREaXYgKG51bSwgbW9kZSkge1xuICAgIHZhciBzaGlmdCA9IHRoaXMubGVuZ3RoIC0gbnVtLmxlbmd0aDtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtO1xuXG4gICAgLy8gTm9ybWFsaXplXG4gICAgdmFyIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgdmFyIGJoaUJpdHMgPSB0aGlzLl9jb3VudEJpdHMoYmhpKTtcbiAgICBzaGlmdCA9IDI2IC0gYmhpQml0cztcbiAgICBpZiAoc2hpZnQgIT09IDApIHtcbiAgICAgIGIgPSBiLnVzaGxuKHNoaWZ0KTtcbiAgICAgIGEuaXVzaGxuKHNoaWZ0KTtcbiAgICAgIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBxdW90aWVudFxuICAgIHZhciBtID0gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAgICB2YXIgcTtcblxuICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgcSA9IG5ldyBCTihudWxsKTtcbiAgICAgIHEubGVuZ3RoID0gbSArIDE7XG4gICAgICBxLndvcmRzID0gbmV3IEFycmF5KHEubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcS5sZW5ndGg7IGkrKykge1xuICAgICAgICBxLndvcmRzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGlmZiA9IGEuY2xvbmUoKS5faXNobG5zdWJtdWwoYiwgMSwgbSk7XG4gICAgaWYgKGRpZmYubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIGEgPSBkaWZmO1xuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1ttXSA9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IG0gLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgdmFyIHFqID0gKGEud29yZHNbYi5sZW5ndGggKyBqXSB8IDApICogMHg0MDAwMDAwICtcbiAgICAgICAgKGEud29yZHNbYi5sZW5ndGggKyBqIC0gMV0gfCAwKTtcblxuICAgICAgLy8gTk9URTogKHFqIC8gYmhpKSBpcyAoMHgzZmZmZmZmICogMHg0MDAwMDAwICsgMHgzZmZmZmZmKSAvIDB4MjAwMDAwMCBtYXhcbiAgICAgIC8vICgweDdmZmZmZmYpXG4gICAgICBxaiA9IE1hdGgubWluKChxaiAvIGJoaSkgfCAwLCAweDNmZmZmZmYpO1xuXG4gICAgICBhLl9pc2hsbnN1Ym11bChiLCBxaiwgaik7XG4gICAgICB3aGlsZSAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBxai0tO1xuICAgICAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgYS5faXNobG5zdWJtdWwoYiwgMSwgaik7XG4gICAgICAgIGlmICghYS5pc1plcm8oKSkge1xuICAgICAgICAgIGEubmVnYXRpdmUgXj0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1tqXSA9IHFqO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocSkge1xuICAgICAgcS5zdHJpcCgpO1xuICAgIH1cbiAgICBhLnN0cmlwKCk7XG5cbiAgICAvLyBEZW5vcm1hbGl6ZVxuICAgIGlmIChtb2RlICE9PSAnZGl2JyAmJiBzaGlmdCAhPT0gMCkge1xuICAgICAgYS5pdXNocm4oc2hpZnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaXY6IHEgfHwgbnVsbCxcbiAgICAgIG1vZDogYVxuICAgIH07XG4gIH07XG5cbiAgLy8gTk9URTogMSkgYG1vZGVgIGNhbiBiZSBzZXQgdG8gYG1vZGAgdG8gcmVxdWVzdCBtb2Qgb25seSxcbiAgLy8gICAgICAgdG8gYGRpdmAgdG8gcmVxdWVzdCBkaXYgb25seSwgb3IgYmUgYWJzZW50IHRvXG4gIC8vICAgICAgIHJlcXVlc3QgYm90aCBkaXYgJiBtb2RcbiAgLy8gICAgICAgMikgYHBvc2l0aXZlYCBpcyB0cnVlIGlmIHVuc2lnbmVkIG1vZCBpcyByZXF1ZXN0ZWRcbiAgQk4ucHJvdG90eXBlLmRpdm1vZCA9IGZ1bmN0aW9uIGRpdm1vZCAobnVtLCBtb2RlLCBwb3NpdGl2ZSkge1xuICAgIGFzc2VydCghbnVtLmlzWmVybygpKTtcblxuICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiBuZXcgQk4oMClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRpdiwgbW9kLCByZXM7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0sIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaWFkZChudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiByZXMubW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICgodGhpcy5uZWdhdGl2ZSAmIG51bS5uZWdhdGl2ZSkgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlzdWIobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHJlcy5kaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmUgYXQgdGhpcyBwb2ludFxuXG4gICAgLy8gU3RyaXAgYm90aCBudW1iZXJzIHRvIGFwcHJveGltYXRlIHNoaWZ0IHZhbHVlXG4gICAgaWYgKG51bS5sZW5ndGggPiB0aGlzLmxlbmd0aCB8fCB0aGlzLmNtcChudW0pIDwgMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogdGhpc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBWZXJ5IHNob3J0IHJlZHVjdGlvblxuICAgIGlmIChudW0ubGVuZ3RoID09PSAxKSB7XG4gICAgICBpZiAobW9kZSA9PT0gJ2RpdicpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICAgIG1vZDogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSA9PT0gJ21vZCcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IG51bGwsXG4gICAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd29yZERpdihudW0sIG1vZGUpO1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgIC8gYG51bWBcbiAgQk4ucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uIGRpdiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ2RpdicsIGZhbHNlKS5kaXY7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgJSBgbnVtYFxuICBCTi5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgZmFsc2UpLm1vZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW1vZCA9IGZ1bmN0aW9uIHVtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCB0cnVlKS5tb2Q7XG4gIH07XG5cbiAgLy8gRmluZCBSb3VuZChgdGhpc2AgLyBgbnVtYClcbiAgQk4ucHJvdG90eXBlLmRpdlJvdW5kID0gZnVuY3Rpb24gZGl2Um91bmQgKG51bSkge1xuICAgIHZhciBkbSA9IHRoaXMuZGl2bW9kKG51bSk7XG5cbiAgICAvLyBGYXN0IGNhc2UgLSBleGFjdCBkaXZpc2lvblxuICAgIGlmIChkbS5tb2QuaXNaZXJvKCkpIHJldHVybiBkbS5kaXY7XG5cbiAgICB2YXIgbW9kID0gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0ubW9kLmlzdWIobnVtKSA6IGRtLm1vZDtcblxuICAgIHZhciBoYWxmID0gbnVtLnVzaHJuKDEpO1xuICAgIHZhciByMiA9IG51bS5hbmRsbigxKTtcbiAgICB2YXIgY21wID0gbW9kLmNtcChoYWxmKTtcblxuICAgIC8vIFJvdW5kIGRvd25cbiAgICBpZiAoY21wIDwgMCB8fCByMiA9PT0gMSAmJiBjbXAgPT09IDApIHJldHVybiBkbS5kaXY7XG5cbiAgICAvLyBSb3VuZCB1cFxuICAgIHJldHVybiBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5kaXYuaXN1Ym4oMSkgOiBkbS5kaXYuaWFkZG4oMSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm1vZG4gPSBmdW5jdGlvbiBtb2RuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG4gICAgdmFyIHAgPSAoMSA8PCAyNikgJSBudW07XG5cbiAgICB2YXIgYWNjID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgYWNjID0gKHAgKiBhY2MgKyAodGhpcy53b3Jkc1tpXSB8IDApKSAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIGRpdmlzaW9uIGJ5IG51bWJlclxuICBCTi5wcm90b3R5cGUuaWRpdm4gPSBmdW5jdGlvbiBpZGl2biAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICsgY2FycnkgKiAweDQwMDAwMDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKHcgLyBudW0pIHwgMDtcbiAgICAgIGNhcnJ5ID0gdyAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5kaXZuID0gZnVuY3Rpb24gZGl2biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lZ2NkID0gZnVuY3Rpb24gZWdjZCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIHggPSB0aGlzO1xuICAgIHZhciB5ID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKHgubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHggPSB4LnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHggPSB4LmNsb25lKCk7XG4gICAgfVxuXG4gICAgLy8gQSAqIHggKyBCICogeSA9IHhcbiAgICB2YXIgQSA9IG5ldyBCTigxKTtcbiAgICB2YXIgQiA9IG5ldyBCTigwKTtcblxuICAgIC8vIEMgKiB4ICsgRCAqIHkgPSB5XG4gICAgdmFyIEMgPSBuZXcgQk4oMCk7XG4gICAgdmFyIEQgPSBuZXcgQk4oMSk7XG5cbiAgICB2YXIgZyA9IDA7XG5cbiAgICB3aGlsZSAoeC5pc0V2ZW4oKSAmJiB5LmlzRXZlbigpKSB7XG4gICAgICB4Lml1c2hybigxKTtcbiAgICAgIHkuaXVzaHJuKDEpO1xuICAgICAgKytnO1xuICAgIH1cblxuICAgIHZhciB5cCA9IHkuY2xvbmUoKTtcbiAgICB2YXIgeHAgPSB4LmNsb25lKCk7XG5cbiAgICB3aGlsZSAoIXguaXNaZXJvKCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7ICh4LndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgeC5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEEuaXNPZGQoKSB8fCBCLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEEuaWFkZCh5cCk7XG4gICAgICAgICAgICBCLmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEEuaXVzaHJuKDEpO1xuICAgICAgICAgIEIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7ICh5LndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgeS5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEMuaXNPZGQoKSB8fCBELmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEMuaWFkZCh5cCk7XG4gICAgICAgICAgICBELmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEMuaXVzaHJuKDEpO1xuICAgICAgICAgIEQuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh4LmNtcCh5KSA+PSAwKSB7XG4gICAgICAgIHguaXN1Yih5KTtcbiAgICAgICAgQS5pc3ViKEMpO1xuICAgICAgICBCLmlzdWIoRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5LmlzdWIoeCk7XG4gICAgICAgIEMuaXN1YihBKTtcbiAgICAgICAgRC5pc3ViKEIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhOiBDLFxuICAgICAgYjogRCxcbiAgICAgIGdjZDogeS5pdXNobG4oZylcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRoaXMgaXMgcmVkdWNlZCBpbmNhcm5hdGlvbiBvZiB0aGUgYmluYXJ5IEVFQVxuICAvLyBhYm92ZSwgZGVzaWduYXRlZCB0byBpbnZlcnQgbWVtYmVycyBvZiB0aGVcbiAgLy8gX3ByaW1lXyBmaWVsZHMgRihwKSBhdCBhIG1heGltYWwgc3BlZWRcbiAgQk4ucHJvdG90eXBlLl9pbnZtcCA9IGZ1bmN0aW9uIF9pbnZtcCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIGEgPSB0aGlzO1xuICAgIHZhciBiID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGEgPSBhLnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICAgIHZhciB4MiA9IG5ldyBCTigwKTtcblxuICAgIHZhciBkZWx0YSA9IGIuY2xvbmUoKTtcblxuICAgIHdoaWxlIChhLmNtcG4oMSkgPiAwICYmIGIuY21wbigxKSA+IDApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7IChhLndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgYS5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgxLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgxLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgxLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoYi53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIGIuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmICh4Mi5pc09kZCgpKSB7XG4gICAgICAgICAgICB4Mi5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4Mi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGEuY21wKGIpID49IDApIHtcbiAgICAgICAgYS5pc3ViKGIpO1xuICAgICAgICB4MS5pc3ViKHgyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGIuaXN1YihhKTtcbiAgICAgICAgeDIuaXN1Yih4MSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlcztcbiAgICBpZiAoYS5jbXBuKDEpID09PSAwKSB7XG4gICAgICByZXMgPSB4MTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0geDI7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQocCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ2NkID0gZnVuY3Rpb24gZ2NkIChudW0pIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIG51bS5hYnMoKTtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gdGhpcy5hYnMoKTtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtLmNsb25lKCk7XG4gICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgYi5uZWdhdGl2ZSA9IDA7XG5cbiAgICAvLyBSZW1vdmUgY29tbW9uIGZhY3RvciBvZiB0d29cbiAgICBmb3IgKHZhciBzaGlmdCA9IDA7IGEuaXNFdmVuKCkgJiYgYi5pc0V2ZW4oKTsgc2hpZnQrKykge1xuICAgICAgYS5pdXNocm4oMSk7XG4gICAgICBiLml1c2hybigxKTtcbiAgICB9XG5cbiAgICBkbyB7XG4gICAgICB3aGlsZSAoYS5pc0V2ZW4oKSkge1xuICAgICAgICBhLml1c2hybigxKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgIGIuaXVzaHJuKDEpO1xuICAgICAgfVxuXG4gICAgICB2YXIgciA9IGEuY21wKGIpO1xuICAgICAgaWYgKHIgPCAwKSB7XG4gICAgICAgIC8vIFN3YXAgYGFgIGFuZCBgYmAgdG8gbWFrZSBgYWAgYWx3YXlzIGJpZ2dlciB0aGFuIGBiYFxuICAgICAgICB2YXIgdCA9IGE7XG4gICAgICAgIGEgPSBiO1xuICAgICAgICBiID0gdDtcbiAgICAgIH0gZWxzZSBpZiAociA9PT0gMCB8fCBiLmNtcG4oMSkgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGEuaXN1YihiKTtcbiAgICB9IHdoaWxlICh0cnVlKTtcblxuICAgIHJldHVybiBiLml1c2hsbihzaGlmdCk7XG4gIH07XG5cbiAgLy8gSW52ZXJ0IG51bWJlciBpbiB0aGUgZmllbGQgRihudW0pXG4gIEJOLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZWdjZChudW0pLmEudW1vZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiBpc0V2ZW4gKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uIGlzT2RkICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMTtcbiAgfTtcblxuICAvLyBBbmQgZmlyc3Qgd29yZCBhbmQgbnVtXG4gIEJOLnByb3RvdHlwZS5hbmRsbiA9IGZ1bmN0aW9uIGFuZGxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkc1swXSAmIG51bTtcbiAgfTtcblxuICAvLyBJbmNyZW1lbnQgYXQgdGhlIGJpdCBwb3NpdGlvbiBpbi1saW5lXG4gIEJOLnByb3RvdHlwZS5iaW5jbiA9IGZ1bmN0aW9uIGJpbmNuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicpO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHRoaXMuX2V4cGFuZChzICsgMSk7XG4gICAgICB0aGlzLndvcmRzW3NdIHw9IHE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgYml0IGFuZCBwcm9wYWdhdGUsIGlmIG5lZWRlZFxuICAgIHZhciBjYXJyeSA9IHE7XG4gICAgZm9yICh2YXIgaSA9IHM7IGNhcnJ5ICE9PSAwICYmIGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdyArPSBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+Pj4gMjY7XG4gICAgICB3ICY9IDB4M2ZmZmZmZjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiBpc1plcm8gKCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbXBuID0gZnVuY3Rpb24gY21wbiAobnVtKSB7XG4gICAgdmFyIG5lZ2F0aXZlID0gbnVtIDwgMDtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmICFuZWdhdGl2ZSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG5lZ2F0aXZlKSByZXR1cm4gMTtcblxuICAgIHRoaXMuc3RyaXAoKTtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gMSkge1xuICAgICAgcmVzID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5lZ2F0aXZlKSB7XG4gICAgICAgIG51bSA9IC1udW07XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmLCAnTnVtYmVyIGlzIHRvbyBiaWcnKTtcblxuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzWzBdIHwgMDtcbiAgICAgIHJlcyA9IHcgPT09IG51bSA/IDAgOiB3IDwgbnVtID8gLTEgOiAxO1xuICAgIH1cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29tcGFyZSB0d28gbnVtYmVycyBhbmQgcmV0dXJuOlxuICAvLyAxIC0gaWYgYHRoaXNgID4gYG51bWBcbiAgLy8gMCAtIGlmIGB0aGlzYCA9PSBgbnVtYFxuICAvLyAtMSAtIGlmIGB0aGlzYCA8IGBudW1gXG4gIEJOLnByb3RvdHlwZS5jbXAgPSBmdW5jdGlvbiBjbXAgKG51bSkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIDE7XG5cbiAgICB2YXIgcmVzID0gdGhpcy51Y21wKG51bSk7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFVuc2lnbmVkIGNvbXBhcmlzb25cbiAgQk4ucHJvdG90eXBlLnVjbXAgPSBmdW5jdGlvbiB1Y21wIChudW0pIHtcbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBoYXZlIHRoZSBzYW1lIHNpZ25cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSByZXR1cm4gLTE7XG5cbiAgICB2YXIgcmVzID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGEgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHZhciBiID0gbnVtLndvcmRzW2ldIHwgMDtcblxuICAgICAgaWYgKGEgPT09IGIpIGNvbnRpbnVlO1xuICAgICAgaWYgKGEgPCBiKSB7XG4gICAgICAgIHJlcyA9IC0xO1xuICAgICAgfSBlbHNlIGlmIChhID4gYikge1xuICAgICAgICByZXMgPSAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0biA9IGZ1bmN0aW9uIGd0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndCA9IGZ1bmN0aW9uIGd0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlbiA9IGZ1bmN0aW9uIGd0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGUgPSBmdW5jdGlvbiBndGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0biA9IGZ1bmN0aW9uIGx0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHQgPSBmdW5jdGlvbiBsdCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGVuID0gZnVuY3Rpb24gbHRlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZSA9IGZ1bmN0aW9uIGx0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXFuID0gZnVuY3Rpb24gZXFuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAwO1xuICB9O1xuXG4gIC8vXG4gIC8vIEEgcmVkdWNlIGNvbnRleHQsIGNvdWxkIGJlIHVzaW5nIG1vbnRnb21lcnkgb3Igc29tZXRoaW5nIGJldHRlciwgZGVwZW5kaW5nXG4gIC8vIG9uIHRoZSBgbWAgaXRzZWxmLlxuICAvL1xuICBCTi5yZWQgPSBmdW5jdGlvbiByZWQgKG51bSkge1xuICAgIHJldHVybiBuZXcgUmVkKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvUmVkID0gZnVuY3Rpb24gdG9SZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIHJldHVybiBjdHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tUmVkID0gZnVuY3Rpb24gZnJvbVJlZCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAnZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2ZvcmNlUmVkID0gZnVuY3Rpb24gX2ZvcmNlUmVkIChjdHgpIHtcbiAgICB0aGlzLnJlZCA9IGN0eDtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZm9yY2VSZWQgPSBmdW5jdGlvbiBmb3JjZVJlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkQWRkID0gZnVuY3Rpb24gcmVkQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJQWRkID0gZnVuY3Rpb24gcmVkSUFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaWFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTdWIgPSBmdW5jdGlvbiByZWRTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTdWIgPSBmdW5jdGlvbiByZWRJU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNobCA9IGZ1bmN0aW9uIHJlZFNobCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zaGwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkTXVsID0gZnVuY3Rpb24gcmVkTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElNdWwgPSBmdW5jdGlvbiByZWRJTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTcXIgPSBmdW5jdGlvbiByZWRTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FyKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3FyID0gZnVuY3Rpb24gcmVkSVNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXNxcih0aGlzKTtcbiAgfTtcblxuICAvLyBTcXVhcmUgcm9vdCBvdmVyIHBcbiAgQk4ucHJvdG90eXBlLnJlZFNxcnQgPSBmdW5jdGlvbiByZWRTcXJ0ICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXJ0KHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJbnZtID0gZnVuY3Rpb24gcmVkSW52bSAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW52bSh0aGlzKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgICUgYHJlZCBtb2R1bG9gXG4gIEJOLnByb3RvdHlwZS5yZWROZWcgPSBmdW5jdGlvbiByZWROZWcgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubmVnKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRQb3cgPSBmdW5jdGlvbiByZWRQb3cgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCAmJiAhbnVtLnJlZCwgJ3JlZFBvdyhub3JtYWxOdW0pJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnBvdyh0aGlzLCBudW0pO1xuICB9O1xuXG4gIC8vIFByaW1lIG51bWJlcnMgd2l0aCBlZmZpY2llbnQgcmVkdWN0aW9uXG4gIHZhciBwcmltZXMgPSB7XG4gICAgazI1NjogbnVsbCxcbiAgICBwMjI0OiBudWxsLFxuICAgIHAxOTI6IG51bGwsXG4gICAgcDI1NTE5OiBudWxsXG4gIH07XG5cbiAgLy8gUHNldWRvLU1lcnNlbm5lIHByaW1lXG4gIGZ1bmN0aW9uIE1QcmltZSAobmFtZSwgcCkge1xuICAgIC8vIFAgPSAyIF4gTiAtIEtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMucCA9IG5ldyBCTihwLCAxNik7XG4gICAgdGhpcy5uID0gdGhpcy5wLmJpdExlbmd0aCgpO1xuICAgIHRoaXMuayA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCk7XG5cbiAgICB0aGlzLnRtcCA9IHRoaXMuX3RtcCgpO1xuICB9XG5cbiAgTVByaW1lLnByb3RvdHlwZS5fdG1wID0gZnVuY3Rpb24gX3RtcCAoKSB7XG4gICAgdmFyIHRtcCA9IG5ldyBCTihudWxsKTtcbiAgICB0bXAud29yZHMgPSBuZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubiAvIDEzKSk7XG4gICAgcmV0dXJuIHRtcDtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmlyZWR1Y2UgPSBmdW5jdGlvbiBpcmVkdWNlIChudW0pIHtcbiAgICAvLyBBc3N1bWVzIHRoYXQgYG51bWAgaXMgbGVzcyB0aGFuIGBQXjJgXG4gICAgLy8gbnVtID0gSEkgKiAoMiBeIE4gLSBLKSArIEhJICogSyArIExPID0gSEkgKiBLICsgTE8gKG1vZCBQKVxuICAgIHZhciByID0gbnVtO1xuICAgIHZhciBybGVuO1xuXG4gICAgZG8ge1xuICAgICAgdGhpcy5zcGxpdChyLCB0aGlzLnRtcCk7XG4gICAgICByID0gdGhpcy5pbXVsSyhyKTtcbiAgICAgIHIgPSByLmlhZGQodGhpcy50bXApO1xuICAgICAgcmxlbiA9IHIuYml0TGVuZ3RoKCk7XG4gICAgfSB3aGlsZSAocmxlbiA+IHRoaXMubik7XG5cbiAgICB2YXIgY21wID0gcmxlbiA8IHRoaXMubiA/IC0xIDogci51Y21wKHRoaXMucCk7XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgci53b3Jkc1swXSA9IDA7XG4gICAgICByLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgICByLmlzdWIodGhpcy5wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgci5zdHJpcCgpO1xuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dCkge1xuICAgIGlucHV0Lml1c2hybih0aGlzLm4sIDAsIG91dCk7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICByZXR1cm4gbnVtLmltdWwodGhpcy5rKTtcbiAgfTtcblxuICBmdW5jdGlvbiBLMjU2ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnazI1NicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYnKTtcbiAgfVxuICBpbmhlcml0cyhLMjU2LCBNUHJpbWUpO1xuXG4gIEsyNTYucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXRwdXQpIHtcbiAgICAvLyAyNTYgPSA5ICogMjYgKyAyMlxuICAgIHZhciBtYXNrID0gMHgzZmZmZmY7XG5cbiAgICB2YXIgb3V0TGVuID0gTWF0aC5taW4oaW5wdXQubGVuZ3RoLCA5KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG91dExlbjsgaSsrKSB7XG4gICAgICBvdXRwdXQud29yZHNbaV0gPSBpbnB1dC53b3Jkc1tpXTtcbiAgICB9XG4gICAgb3V0cHV0Lmxlbmd0aCA9IG91dExlbjtcblxuICAgIGlmIChpbnB1dC5sZW5ndGggPD0gOSkge1xuICAgICAgaW5wdXQud29yZHNbMF0gPSAwO1xuICAgICAgaW5wdXQubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTaGlmdCBieSA5IGxpbWJzXG4gICAgdmFyIHByZXYgPSBpbnB1dC53b3Jkc1s5XTtcbiAgICBvdXRwdXQud29yZHNbb3V0cHV0Lmxlbmd0aCsrXSA9IHByZXYgJiBtYXNrO1xuXG4gICAgZm9yIChpID0gMTA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5leHQgPSBpbnB1dC53b3Jkc1tpXSB8IDA7XG4gICAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gKChuZXh0ICYgbWFzaykgPDwgNCkgfCAocHJldiA+Pj4gMjIpO1xuICAgICAgcHJldiA9IG5leHQ7XG4gICAgfVxuICAgIHByZXYgPj4+PSAyMjtcbiAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gcHJldjtcbiAgICBpZiAocHJldiA9PT0gMCAmJiBpbnB1dC5sZW5ndGggPiAxMCkge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDEwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gOTtcbiAgICB9XG4gIH07XG5cbiAgSzI1Ni5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTAwMDAwM2QxID0gWyAweDQwLCAweDNkMSBdXG4gICAgbnVtLndvcmRzW251bS5sZW5ndGhdID0gMDtcbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aCArIDFdID0gMDtcbiAgICBudW0ubGVuZ3RoICs9IDI7XG5cbiAgICAvLyBib3VuZGVkIGF0OiAweDQwICogMHgzZmZmZmZmICsgMHgzZDAgPSAweDEwMDAwMDM5MFxuICAgIHZhciBsbyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gbnVtLndvcmRzW2ldIHwgMDtcbiAgICAgIGxvICs9IHcgKiAweDNkMTtcbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgbG8gPSB3ICogMHg0MCArICgobG8gLyAweDQwMDAwMDApIHwgMCk7XG4gICAgfVxuXG4gICAgLy8gRmFzdCBsZW5ndGggcmVkdWN0aW9uXG4gICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICBmdW5jdGlvbiBQMjI0ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDIyNCcsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEnKTtcbiAgfVxuICBpbmhlcml0cyhQMjI0LCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAxOTIgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMTkyJyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicpO1xuICB9XG4gIGluaGVyaXRzKFAxOTIsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDI1NTE5ICgpIHtcbiAgICAvLyAyIF4gMjU1IC0gMTlcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnMjU1MTknLFxuICAgICAgJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnKTtcbiAgfVxuICBpbmhlcml0cyhQMjU1MTksIE1QcmltZSk7XG5cbiAgUDI1NTE5LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxM1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoaSA9IChudW0ud29yZHNbaV0gfCAwKSAqIDB4MTMgKyBjYXJyeTtcbiAgICAgIHZhciBsbyA9IGhpICYgMHgzZmZmZmZmO1xuICAgICAgaGkgPj4+PSAyNjtcblxuICAgICAgbnVtLndvcmRzW2ldID0gbG87XG4gICAgICBjYXJyeSA9IGhpO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgLy8gRXhwb3J0ZWQgbW9zdGx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB1c2UgcGxhaW4gbmFtZSBpbnN0ZWFkXG4gIEJOLl9wcmltZSA9IGZ1bmN0aW9uIHByaW1lIChuYW1lKSB7XG4gICAgLy8gQ2FjaGVkIHZlcnNpb24gb2YgcHJpbWVcbiAgICBpZiAocHJpbWVzW25hbWVdKSByZXR1cm4gcHJpbWVzW25hbWVdO1xuXG4gICAgdmFyIHByaW1lO1xuICAgIGlmIChuYW1lID09PSAnazI1NicpIHtcbiAgICAgIHByaW1lID0gbmV3IEsyNTYoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjI0Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDIyNCgpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AxOTInKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMTkyKCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDI1NTE5Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDI1NTE5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBwcmltZSAnICsgbmFtZSk7XG4gICAgfVxuICAgIHByaW1lc1tuYW1lXSA9IHByaW1lO1xuXG4gICAgcmV0dXJuIHByaW1lO1xuICB9O1xuXG4gIC8vXG4gIC8vIEJhc2UgcmVkdWN0aW9uIGVuZ2luZVxuICAvL1xuICBmdW5jdGlvbiBSZWQgKG0pIHtcbiAgICBpZiAodHlwZW9mIG0gPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgcHJpbWUgPSBCTi5fcHJpbWUobSk7XG4gICAgICB0aGlzLm0gPSBwcmltZS5wO1xuICAgICAgdGhpcy5wcmltZSA9IHByaW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobS5ndG4oMSksICdtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEnKTtcbiAgICAgIHRoaXMubSA9IG07XG4gICAgICB0aGlzLnByaW1lID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkxID0gZnVuY3Rpb24gX3ZlcmlmeTEgKGEpIHtcbiAgICBhc3NlcnQoYS5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkLCAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTIgPSBmdW5jdGlvbiBfdmVyaWZ5MiAoYSwgYikge1xuICAgIGFzc2VydCgoYS5uZWdhdGl2ZSB8IGIubmVnYXRpdmUpID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQgJiYgYS5yZWQgPT09IGIucmVkLFxuICAgICAgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltb2QgPSBmdW5jdGlvbiBpbW9kIChhKSB7XG4gICAgaWYgKHRoaXMucHJpbWUpIHJldHVybiB0aGlzLnByaW1lLmlyZWR1Y2UoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICAgIHJldHVybiBhLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIGEuY2xvbmUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tLnN1YihhKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5zdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zaGwgPSBmdW5jdGlvbiBzaGwgKGEsIG51bSkge1xuICAgIHRoaXMuX3ZlcmlmeTEoYSk7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLnVzaGxuKG51bSkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5pbXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLm11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLmltdWwoYSwgYS5jbG9uZSgpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLm11bChhLCBhKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxcnQgPSBmdW5jdGlvbiBzcXJ0IChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgbW9kMyA9IHRoaXMubS5hbmRsbigzKTtcbiAgICBhc3NlcnQobW9kMyAlIDIgPT09IDEpO1xuXG4gICAgLy8gRmFzdCBjYXNlXG4gICAgaWYgKG1vZDMgPT09IDMpIHtcbiAgICAgIHZhciBwb3cgPSB0aGlzLm0uYWRkKG5ldyBCTigxKSkuaXVzaHJuKDIpO1xuICAgICAgcmV0dXJuIHRoaXMucG93KGEsIHBvdyk7XG4gICAgfVxuXG4gICAgLy8gVG9uZWxsaS1TaGFua3MgYWxnb3JpdGhtIChUb3RhbGx5IHVub3B0aW1pemVkIGFuZCBzbG93KVxuICAgIC8vXG4gICAgLy8gRmluZCBRIGFuZCBTLCB0aGF0IFEgKiAyIF4gUyA9IChQIC0gMSlcbiAgICB2YXIgcSA9IHRoaXMubS5zdWJuKDEpO1xuICAgIHZhciBzID0gMDtcbiAgICB3aGlsZSAoIXEuaXNaZXJvKCkgJiYgcS5hbmRsbigxKSA9PT0gMCkge1xuICAgICAgcysrO1xuICAgICAgcS5pdXNocm4oMSk7XG4gICAgfVxuICAgIGFzc2VydCghcS5pc1plcm8oKSk7XG5cbiAgICB2YXIgb25lID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHZhciBuT25lID0gb25lLnJlZE5lZygpO1xuXG4gICAgLy8gRmluZCBxdWFkcmF0aWMgbm9uLXJlc2lkdWVcbiAgICAvLyBOT1RFOiBNYXggaXMgc3VjaCBiZWNhdXNlIG9mIGdlbmVyYWxpemVkIFJpZW1hbm4gaHlwb3RoZXNpcy5cbiAgICB2YXIgbHBvdyA9IHRoaXMubS5zdWJuKDEpLml1c2hybigxKTtcbiAgICB2YXIgeiA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICB6ID0gbmV3IEJOKDIgKiB6ICogeikudG9SZWQodGhpcyk7XG5cbiAgICB3aGlsZSAodGhpcy5wb3coeiwgbHBvdykuY21wKG5PbmUpICE9PSAwKSB7XG4gICAgICB6LnJlZElBZGQobk9uZSk7XG4gICAgfVxuXG4gICAgdmFyIGMgPSB0aGlzLnBvdyh6LCBxKTtcbiAgICB2YXIgciA9IHRoaXMucG93KGEsIHEuYWRkbigxKS5pdXNocm4oMSkpO1xuICAgIHZhciB0ID0gdGhpcy5wb3coYSwgcSk7XG4gICAgdmFyIG0gPSBzO1xuICAgIHdoaWxlICh0LmNtcChvbmUpICE9PSAwKSB7XG4gICAgICB2YXIgdG1wID0gdDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyB0bXAuY21wKG9uZSkgIT09IDA7IGkrKykge1xuICAgICAgICB0bXAgPSB0bXAucmVkU3FyKCk7XG4gICAgICB9XG4gICAgICBhc3NlcnQoaSA8IG0pO1xuICAgICAgdmFyIGIgPSB0aGlzLnBvdyhjLCBuZXcgQk4oMSkuaXVzaGxuKG0gLSBpIC0gMSkpO1xuXG4gICAgICByID0gci5yZWRNdWwoYik7XG4gICAgICBjID0gYi5yZWRTcXIoKTtcbiAgICAgIHQgPSB0LnJlZE11bChjKTtcbiAgICAgIG0gPSBpO1xuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICB2YXIgaW52ID0gYS5faW52bXAodGhpcy5tKTtcbiAgICBpZiAoaW52Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpbnYubmVnYXRpdmUgPSAwO1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpLnJlZE5lZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludik7XG4gICAgfVxuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChhLCBudW0pIHtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIGlmIChudW0uY21wbigxKSA9PT0gMCkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciB3aW5kb3dTaXplID0gNDtcbiAgICB2YXIgd25kID0gbmV3IEFycmF5KDEgPDwgd2luZG93U2l6ZSk7XG4gICAgd25kWzBdID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHduZFsxXSA9IGE7XG4gICAgZm9yICh2YXIgaSA9IDI7IGkgPCB3bmQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHduZFtpXSA9IHRoaXMubXVsKHduZFtpIC0gMV0sIGEpO1xuICAgIH1cblxuICAgIHZhciByZXMgPSB3bmRbMF07XG4gICAgdmFyIGN1cnJlbnQgPSAwO1xuICAgIHZhciBjdXJyZW50TGVuID0gMDtcbiAgICB2YXIgc3RhcnQgPSBudW0uYml0TGVuZ3RoKCkgJSAyNjtcbiAgICBpZiAoc3RhcnQgPT09IDApIHtcbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgZm9yIChpID0gbnVtLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IG51bS53b3Jkc1tpXTtcbiAgICAgIGZvciAodmFyIGogPSBzdGFydCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgIHZhciBiaXQgPSAod29yZCA+PiBqKSAmIDE7XG4gICAgICAgIGlmIChyZXMgIT09IHduZFswXSkge1xuICAgICAgICAgIHJlcyA9IHRoaXMuc3FyKHJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYml0ID09PSAwICYmIGN1cnJlbnQgPT09IDApIHtcbiAgICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnQgPDw9IDE7XG4gICAgICAgIGN1cnJlbnQgfD0gYml0O1xuICAgICAgICBjdXJyZW50TGVuKys7XG4gICAgICAgIGlmIChjdXJyZW50TGVuICE9PSB3aW5kb3dTaXplICYmIChpICE9PSAwIHx8IGogIT09IDApKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSB0aGlzLm11bChyZXMsIHduZFtjdXJyZW50XSk7XG4gICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICBjdXJyZW50ID0gMDtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgdmFyIHIgPSBudW0udW1vZCh0aGlzLm0pO1xuXG4gICAgcmV0dXJuIHIgPT09IG51bSA/IHIuY2xvbmUoKSA6IHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgcmVzID0gbnVtLmNsb25lKCk7XG4gICAgcmVzLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvL1xuICAvLyBNb250Z29tZXJ5IG1ldGhvZCBlbmdpbmVcbiAgLy9cblxuICBCTi5tb250ID0gZnVuY3Rpb24gbW9udCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBNb250KG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gTW9udCAobSkge1xuICAgIFJlZC5jYWxsKHRoaXMsIG0pO1xuXG4gICAgdGhpcy5zaGlmdCA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICBpZiAodGhpcy5zaGlmdCAlIDI2ICE9PSAwKSB7XG4gICAgICB0aGlzLnNoaWZ0ICs9IDI2IC0gKHRoaXMuc2hpZnQgJSAyNik7XG4gICAgfVxuXG4gICAgdGhpcy5yID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLnNoaWZ0KTtcbiAgICB0aGlzLnIyID0gdGhpcy5pbW9kKHRoaXMuci5zcXIoKSk7XG4gICAgdGhpcy5yaW52ID0gdGhpcy5yLl9pbnZtcCh0aGlzLm0pO1xuXG4gICAgdGhpcy5taW52ID0gdGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pO1xuICAgIHRoaXMubWludiA9IHRoaXMubWludi51bW9kKHRoaXMucik7XG4gICAgdGhpcy5taW52ID0gdGhpcy5yLnN1Yih0aGlzLm1pbnYpO1xuICB9XG4gIGluaGVyaXRzKE1vbnQsIFJlZCk7XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5pbW9kKG51bS51c2hsbih0aGlzLnNoaWZ0KSk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHIgPSB0aGlzLmltb2QobnVtLm11bCh0aGlzLnJpbnYpKTtcbiAgICByLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSB7XG4gICAgICBhLndvcmRzWzBdID0gMDtcbiAgICAgIGEubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiBhO1xuICAgIH1cblxuICAgIHZhciB0ID0gYS5pbXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuXG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDApLl9mb3JjZVJlZCh0aGlzKTtcblxuICAgIHZhciB0ID0gYS5tdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIC8vIChBUileLTEgKiBSXjIgPSAoQV4tMSAqIFJeLTEpICogUl4yID0gQV4tMSAqIFJcbiAgICB2YXIgcmVzID0gdGhpcy5pbW9kKGEuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKTtcbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcbn0pKHR5cGVvZiBtb2R1bGUgPT09ICd1bmRlZmluZWQnIHx8IG1vZHVsZSwgdGhpcyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ibi5qcy9saWIvYm4uanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4\n");

/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("/* WEBPACK VAR INJECTION */(function(global) {/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n\n\nvar base64 = __webpack_require__(128)\nvar ieee754 = __webpack_require__(129)\nvar isArray = __webpack_require__(50)\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9idWZmZXIvaW5kZXguanM/MTJlMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLlxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuXG4ndXNlIHN0cmljdCdcblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJ2Jhc2U2NC1qcycpXG52YXIgaWVlZTc1NCA9IHJlcXVpcmUoJ2llZWU3NTQnKVxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCdpc2FycmF5JylcblxuZXhwb3J0cy5CdWZmZXIgPSBCdWZmZXJcbmV4cG9ydHMuU2xvd0J1ZmZlciA9IFNsb3dCdWZmZXJcbmV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVMgPSA1MFxuXG4vKipcbiAqIElmIGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGA6XG4gKiAgID09PSB0cnVlICAgIFVzZSBVaW50OEFycmF5IGltcGxlbWVudGF0aW9uIChmYXN0ZXN0KVxuICogICA9PT0gZmFsc2UgICBVc2UgT2JqZWN0IGltcGxlbWVudGF0aW9uIChtb3N0IGNvbXBhdGlibGUsIGV2ZW4gSUU2KVxuICpcbiAqIEJyb3dzZXJzIHRoYXQgc3VwcG9ydCB0eXBlZCBhcnJheXMgYXJlIElFIDEwKywgRmlyZWZveCA0KywgQ2hyb21lIDcrLCBTYWZhcmkgNS4xKyxcbiAqIE9wZXJhIDExLjYrLCBpT1MgNC4yKy5cbiAqXG4gKiBEdWUgdG8gdmFyaW91cyBicm93c2VyIGJ1Z3MsIHNvbWV0aW1lcyB0aGUgT2JqZWN0IGltcGxlbWVudGF0aW9uIHdpbGwgYmUgdXNlZCBldmVuXG4gKiB3aGVuIHRoZSBicm93c2VyIHN1cHBvcnRzIHR5cGVkIGFycmF5cy5cbiAqXG4gKiBOb3RlOlxuICpcbiAqICAgLSBGaXJlZm94IDQtMjkgbGFja3Mgc3VwcG9ydCBmb3IgYWRkaW5nIG5ldyBwcm9wZXJ0aWVzIHRvIGBVaW50OEFycmF5YCBpbnN0YW5jZXMsXG4gKiAgICAgU2VlOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02OTU0MzguXG4gKlxuICogICAtIENocm9tZSA5LTEwIGlzIG1pc3NpbmcgdGhlIGBUeXBlZEFycmF5LnByb3RvdHlwZS5zdWJhcnJheWAgZnVuY3Rpb24uXG4gKlxuICogICAtIElFMTAgaGFzIGEgYnJva2VuIGBUeXBlZEFycmF5LnByb3RvdHlwZS5zdWJhcnJheWAgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhcnJheXMgb2ZcbiAqICAgICBpbmNvcnJlY3QgbGVuZ3RoIGluIHNvbWUgc2l0dWF0aW9ucy5cblxuICogV2UgZGV0ZWN0IHRoZXNlIGJ1Z2d5IGJyb3dzZXJzIGFuZCBzZXQgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYCB0byBgZmFsc2VgIHNvIHRoZXlcbiAqIGdldCB0aGUgT2JqZWN0IGltcGxlbWVudGF0aW9uLCB3aGljaCBpcyBzbG93ZXIgYnV0IGJlaGF2ZXMgY29ycmVjdGx5LlxuICovXG5CdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCA9IGdsb2JhbC5UWVBFRF9BUlJBWV9TVVBQT1JUICE9PSB1bmRlZmluZWRcbiAgPyBnbG9iYWwuVFlQRURfQVJSQVlfU1VQUE9SVFxuICA6IHR5cGVkQXJyYXlTdXBwb3J0KClcblxuLypcbiAqIEV4cG9ydCBrTWF4TGVuZ3RoIGFmdGVyIHR5cGVkIGFycmF5IHN1cHBvcnQgaXMgZGV0ZXJtaW5lZC5cbiAqL1xuZXhwb3J0cy5rTWF4TGVuZ3RoID0ga01heExlbmd0aCgpXG5cbmZ1bmN0aW9uIHR5cGVkQXJyYXlTdXBwb3J0ICgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMSlcbiAgICBhcnIuX19wcm90b19fID0ge19fcHJvdG9fXzogVWludDhBcnJheS5wcm90b3R5cGUsIGZvbzogZnVuY3Rpb24gKCkgeyByZXR1cm4gNDIgfX1cbiAgICByZXR1cm4gYXJyLmZvbygpID09PSA0MiAmJiAvLyB0eXBlZCBhcnJheSBpbnN0YW5jZXMgY2FuIGJlIGF1Z21lbnRlZFxuICAgICAgICB0eXBlb2YgYXJyLnN1YmFycmF5ID09PSAnZnVuY3Rpb24nICYmIC8vIGNocm9tZSA5LTEwIGxhY2sgYHN1YmFycmF5YFxuICAgICAgICBhcnIuc3ViYXJyYXkoMSwgMSkuYnl0ZUxlbmd0aCA9PT0gMCAvLyBpZTEwIGhhcyBicm9rZW4gYHN1YmFycmF5YFxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24ga01heExlbmd0aCAoKSB7XG4gIHJldHVybiBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVFxuICAgID8gMHg3ZmZmZmZmZlxuICAgIDogMHgzZmZmZmZmZlxufVxuXG5mdW5jdGlvbiBjcmVhdGVCdWZmZXIgKHRoYXQsIGxlbmd0aCkge1xuICBpZiAoa01heExlbmd0aCgpIDwgbGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoJylcbiAgfVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKVxuICAgIHRoYXQuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIC8vIEZhbGxiYWNrOiBSZXR1cm4gYW4gb2JqZWN0IGluc3RhbmNlIG9mIHRoZSBCdWZmZXIgY2xhc3NcbiAgICBpZiAodGhhdCA9PT0gbnVsbCkge1xuICAgICAgdGhhdCA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuICAgIH1cbiAgICB0aGF0Lmxlbmd0aCA9IGxlbmd0aFxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGhhdmUgdGhlaXJcbiAqIHByb3RvdHlwZSBjaGFuZ2VkIHRvIGBCdWZmZXIucHJvdG90eXBlYC4gRnVydGhlcm1vcmUsIGBCdWZmZXJgIGlzIGEgc3ViY2xhc3Mgb2ZcbiAqIGBVaW50OEFycmF5YCwgc28gdGhlIHJldHVybmVkIGluc3RhbmNlcyB3aWxsIGhhdmUgYWxsIHRoZSBub2RlIGBCdWZmZXJgIG1ldGhvZHNcbiAqIGFuZCB0aGUgYFVpbnQ4QXJyYXlgIG1ldGhvZHMuIFNxdWFyZSBicmFja2V0IG5vdGF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkIC0tIGl0XG4gKiByZXR1cm5zIGEgc2luZ2xlIG9jdGV0LlxuICpcbiAqIFRoZSBgVWludDhBcnJheWAgcHJvdG90eXBlIHJlbWFpbnMgdW5tb2RpZmllZC5cbiAqL1xuXG5mdW5jdGlvbiBCdWZmZXIgKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiYgISh0aGlzIGluc3RhbmNlb2YgQnVmZmVyKSkge1xuICAgIHJldHVybiBuZXcgQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgLy8gQ29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmdPck9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0lmIGVuY29kaW5nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJ1xuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gYWxsb2NVbnNhZmUodGhpcywgYXJnKVxuICB9XG4gIHJldHVybiBmcm9tKHRoaXMsIGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucG9vbFNpemUgPSA4MTkyIC8vIG5vdCB1c2VkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb25cblxuLy8gVE9ETzogTGVnYWN5LCBub3QgbmVlZGVkIGFueW1vcmUuIFJlbW92ZSBpbiBuZXh0IG1ham9yIHZlcnNpb24uXG5CdWZmZXIuX2F1Z21lbnQgPSBmdW5jdGlvbiAoYXJyKSB7XG4gIGFyci5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gZnJvbSAodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpXG4gIH1cblxuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZnJvbVN0cmluZyh0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldClcbiAgfVxuXG4gIHJldHVybiBmcm9tT2JqZWN0KHRoYXQsIHZhbHVlKVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIEJ1ZmZlcihhcmcsIGVuY29kaW5nKSBidXQgdGhyb3dzIGEgVHlwZUVycm9yXG4gKiBpZiB2YWx1ZSBpcyBhIG51bWJlci5cbiAqIEJ1ZmZlci5mcm9tKHN0clssIGVuY29kaW5nXSlcbiAqIEJ1ZmZlci5mcm9tKGFycmF5KVxuICogQnVmZmVyLmZyb20oYnVmZmVyKVxuICogQnVmZmVyLmZyb20oYXJyYXlCdWZmZXJbLCBieXRlT2Zmc2V0WywgbGVuZ3RoXV0pXG4gKiovXG5CdWZmZXIuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBmcm9tKG51bGwsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbmlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICBCdWZmZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFVpbnQ4QXJyYXkucHJvdG90eXBlXG4gIEJ1ZmZlci5fX3Byb3RvX18gPSBVaW50OEFycmF5XG4gIGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wuc3BlY2llcyAmJlxuICAgICAgQnVmZmVyW1N5bWJvbC5zcGVjaWVzXSA9PT0gQnVmZmVyKSB7XG4gICAgLy8gRml4IHN1YmFycmF5KCkgaW4gRVMyMDE2LiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL3B1bGwvOTdcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQnVmZmVyLCBTeW1ib2wuc3BlY2llcywge1xuICAgICAgdmFsdWU6IG51bGwsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFNpemUgKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9IGVsc2UgaWYgKHNpemUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG5lZ2F0aXZlJylcbiAgfVxufVxuXG5mdW5jdGlvbiBhbGxvYyAodGhhdCwgc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgYXNzZXJ0U2l6ZShzaXplKVxuICBpZiAoc2l6ZSA8PSAwKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKVxuICB9XG4gIGlmIChmaWxsICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyBPbmx5IHBheSBhdHRlbnRpb24gdG8gZW5jb2RpbmcgaWYgaXQncyBhIHN0cmluZy4gVGhpc1xuICAgIC8vIHByZXZlbnRzIGFjY2lkZW50YWxseSBzZW5kaW5nIGluIGEgbnVtYmVyIHRoYXQgd291bGRcbiAgICAvLyBiZSBpbnRlcnByZXR0ZWQgYXMgYSBzdGFydCBvZmZzZXQuXG4gICAgcmV0dXJuIHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZydcbiAgICAgID8gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgICA6IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKS5maWxsKGZpbGwpXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqIGFsbG9jKHNpemVbLCBmaWxsWywgZW5jb2RpbmddXSlcbiAqKi9cbkJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICByZXR1cm4gYWxsb2MobnVsbCwgc2l6ZSwgZmlsbCwgZW5jb2RpbmcpXG59XG5cbmZ1bmN0aW9uIGFsbG9jVW5zYWZlICh0aGF0LCBzaXplKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplIDwgMCA/IDAgOiBjaGVja2VkKHNpemUpIHwgMClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7XG4gICAgICB0aGF0W2ldID0gMFxuICAgIH1cbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG4vKipcbiAqIEVxdWl2YWxlbnQgdG8gQnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgcmV0dXJuIGFsbG9jVW5zYWZlKG51bGwsIHNpemUpXG59XG4vKipcbiAqIEVxdWl2YWxlbnQgdG8gU2xvd0J1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICovXG5CdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgcmV0dXJuIGFsbG9jVW5zYWZlKG51bGwsIHNpemUpXG59XG5cbmZ1bmN0aW9uIGZyb21TdHJpbmcgKHRoYXQsIHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycgfHwgZW5jb2RpbmcgPT09ICcnKSB7XG4gICAgZW5jb2RpbmcgPSAndXRmOCdcbiAgfVxuXG4gIGlmICghQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJlbmNvZGluZ1wiIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgZW5jb2RpbmcnKVxuICB9XG5cbiAgdmFyIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nLCBlbmNvZGluZykgfCAwXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuZ3RoKVxuXG4gIHZhciBhY3R1YWwgPSB0aGF0LndyaXRlKHN0cmluZywgZW5jb2RpbmcpXG5cbiAgaWYgKGFjdHVhbCAhPT0gbGVuZ3RoKSB7XG4gICAgLy8gV3JpdGluZyBhIGhleCBzdHJpbmcsIGZvciBleGFtcGxlLCB0aGF0IGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycyB3aWxsXG4gICAgLy8gY2F1c2UgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgaW52YWxpZCBjaGFyYWN0ZXIgdG8gYmUgaWdub3JlZC4gKGUuZy5cbiAgICAvLyAnYWJ4eGNkJyB3aWxsIGJlIHRyZWF0ZWQgYXMgJ2FiJylcbiAgICB0aGF0ID0gdGhhdC5zbGljZSgwLCBhY3R1YWwpXG4gIH1cblxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXlMaWtlICh0aGF0LCBhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoIDwgMCA/IDAgOiBjaGVja2VkKGFycmF5Lmxlbmd0aCkgfCAwXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuZ3RoKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhhdFtpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyICh0aGF0LCBhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gIGFycmF5LmJ5dGVMZW5ndGggLy8gdGhpcyB0aHJvd3MgaWYgYGFycmF5YCBpcyBub3QgYSB2YWxpZCBBcnJheUJ1ZmZlclxuXG4gIGlmIChieXRlT2Zmc2V0IDwgMCB8fCBhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdvZmZzZXRcXCcgaXMgb3V0IG9mIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQgKyAobGVuZ3RoIHx8IDApKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ2xlbmd0aFxcJyBpcyBvdXQgb2YgYm91bmRzJylcbiAgfVxuXG4gIGlmIChieXRlT2Zmc2V0ID09PSB1bmRlZmluZWQgJiYgbGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5KVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldClcbiAgfSBlbHNlIHtcbiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gYXJyYXlcbiAgICB0aGF0Ll9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICAvLyBGYWxsYmFjazogUmV0dXJuIGFuIG9iamVjdCBpbnN0YW5jZSBvZiB0aGUgQnVmZmVyIGNsYXNzXG4gICAgdGhhdCA9IGZyb21BcnJheUxpa2UodGhhdCwgYXJyYXkpXG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbU9iamVjdCAodGhhdCwgb2JqKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIob2JqKSkge1xuICAgIHZhciBsZW4gPSBjaGVja2VkKG9iai5sZW5ndGgpIHwgMFxuICAgIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuKVxuXG4gICAgaWYgKHRoYXQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhhdFxuICAgIH1cblxuICAgIG9iai5jb3B5KHRoYXQsIDAsIDAsIGxlbilcbiAgICByZXR1cm4gdGhhdFxuICB9XG5cbiAgaWYgKG9iaikge1xuICAgIGlmICgodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICBvYmouYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHx8ICdsZW5ndGgnIGluIG9iaikge1xuICAgICAgaWYgKHR5cGVvZiBvYmoubGVuZ3RoICE9PSAnbnVtYmVyJyB8fCBpc25hbihvYmoubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsIDApXG4gICAgICB9XG4gICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmopXG4gICAgfVxuXG4gICAgaWYgKG9iai50eXBlID09PSAnQnVmZmVyJyAmJiBpc0FycmF5KG9iai5kYXRhKSkge1xuICAgICAgcmV0dXJuIGZyb21BcnJheUxpa2UodGhhdCwgb2JqLmRhdGEpXG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIGFycmF5LWxpa2Ugb2JqZWN0LicpXG59XG5cbmZ1bmN0aW9uIGNoZWNrZWQgKGxlbmd0aCkge1xuICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBrTWF4TGVuZ3RoKClgIGhlcmUgYmVjYXVzZSB0aGF0IGZhaWxzIHdoZW5cbiAgLy8gbGVuZ3RoIGlzIE5hTiAod2hpY2ggaXMgb3RoZXJ3aXNlIGNvZXJjZWQgdG8gemVyby4pXG4gIGlmIChsZW5ndGggPj0ga01heExlbmd0aCgpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemU6IDB4JyArIGtNYXhMZW5ndGgoKS50b1N0cmluZygxNikgKyAnIGJ5dGVzJylcbiAgfVxuICByZXR1cm4gbGVuZ3RoIHwgMFxufVxuXG5mdW5jdGlvbiBTbG93QnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKCtsZW5ndGggIT0gbGVuZ3RoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgbGVuZ3RoID0gMFxuICB9XG4gIHJldHVybiBCdWZmZXIuYWxsb2MoK2xlbmd0aClcbn1cblxuQnVmZmVyLmlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIgKGIpIHtcbiAgcmV0dXJuICEhKGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlcilcbn1cblxuQnVmZmVyLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChhID09PSBiKSByZXR1cm4gMFxuXG4gIHZhciB4ID0gYS5sZW5ndGhcbiAgdmFyIHkgPSBiLmxlbmd0aFxuXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgIHggPSBhW2ldXG4gICAgICB5ID0gYltpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbkJ1ZmZlci5pc0VuY29kaW5nID0gZnVuY3Rpb24gaXNFbmNvZGluZyAoZW5jb2RpbmcpIHtcbiAgc3dpdGNoIChTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOlxuICAgIGNhc2UgJ3V0ZjgnOlxuICAgIGNhc2UgJ3V0Zi04JzpcbiAgICBjYXNlICdhc2NpaSc6XG4gICAgY2FzZSAnbGF0aW4xJzpcbiAgICBjYXNlICdiaW5hcnknOlxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgY2FzZSAndWNzMic6XG4gICAgY2FzZSAndWNzLTInOlxuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgIHJldHVybiB0cnVlXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbkJ1ZmZlci5jb25jYXQgPSBmdW5jdGlvbiBjb25jYXQgKGxpc3QsIGxlbmd0aCkge1xuICBpZiAoIWlzQXJyYXkobGlzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKVxuICB9XG5cbiAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuZ3RoID0gMFxuICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgICBsZW5ndGggKz0gbGlzdFtpXS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICB2YXIgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKGxlbmd0aClcbiAgdmFyIHBvcyA9IDBcbiAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgYnVmID0gbGlzdFtpXVxuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gICAgfVxuICAgIGJ1Zi5jb3B5KGJ1ZmZlciwgcG9zKVxuICAgIHBvcyArPSBidWYubGVuZ3RoXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcubGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgKEFycmF5QnVmZmVyLmlzVmlldyhzdHJpbmcpIHx8IHN0cmluZyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSkge1xuICAgIHJldHVybiBzdHJpbmcuYnl0ZUxlbmd0aFxuICB9XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIHN0cmluZyA9ICcnICsgc3RyaW5nXG4gIH1cblxuICB2YXIgbGVuID0gc3RyaW5nLmxlbmd0aFxuICBpZiAobGVuID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIFVzZSBhIGZvciBsb29wIHRvIGF2b2lkIHJlY3Vyc2lvblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIGxlbiAqIDJcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBsZW4gPj4+IDFcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aCAvLyBhc3N1bWUgdXRmOFxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuQnVmZmVyLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5cbmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcblxuICAvLyBObyBuZWVkIHRvIHZlcmlmeSB0aGF0IFwidGhpcy5sZW5ndGggPD0gTUFYX1VJTlQzMlwiIHNpbmNlIGl0J3MgYSByZWFkLW9ubHlcbiAgLy8gcHJvcGVydHkgb2YgYSB0eXBlZCBhcnJheS5cblxuICAvLyBUaGlzIGJlaGF2ZXMgbmVpdGhlciBsaWtlIFN0cmluZyBub3IgVWludDhBcnJheSBpbiB0aGF0IHdlIHNldCBzdGFydC9lbmRcbiAgLy8gdG8gdGhlaXIgdXBwZXIvbG93ZXIgYm91bmRzIGlmIHRoZSB2YWx1ZSBwYXNzZWQgaXMgb3V0IG9mIHJhbmdlLlxuICAvLyB1bmRlZmluZWQgaXMgaGFuZGxlZCBzcGVjaWFsbHkgYXMgcGVyIEVDTUEtMjYyIDZ0aCBFZGl0aW9uLFxuICAvLyBTZWN0aW9uIDEzLjMuMy43IFJ1bnRpbWUgU2VtYW50aWNzOiBLZXllZEJpbmRpbmdJbml0aWFsaXphdGlvbi5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQgfHwgc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgLy8gUmV0dXJuIGVhcmx5IGlmIHN0YXJ0ID4gdGhpcy5sZW5ndGguIERvbmUgaGVyZSB0byBwcmV2ZW50IHBvdGVudGlhbCB1aW50MzJcbiAgLy8gY29lcmNpb24gZmFpbCBiZWxvdy5cbiAgaWYgKHN0YXJ0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoZW5kIDw9IDApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIEZvcmNlIGNvZXJzaW9uIHRvIHVpbnQzMi4gVGhpcyB3aWxsIGFsc28gY29lcmNlIGZhbHNleS9OYU4gdmFsdWVzIHRvIDAuXG4gIGVuZCA+Pj49IDBcbiAgc3RhcnQgPj4+PSAwXG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1dGYxNmxlU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbi8vIFRoZSBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGBCdWZmZXIuaXNCdWZmZXJgIGFuZCBgaXMtYnVmZmVyYCAoaW4gU2FmYXJpIDUtNykgdG8gZGV0ZWN0XG4vLyBCdWZmZXIgaW5zdGFuY2VzLlxuQnVmZmVyLnByb3RvdHlwZS5faXNCdWZmZXIgPSB0cnVlXG5cbmZ1bmN0aW9uIHN3YXAgKGIsIG4sIG0pIHtcbiAgdmFyIGkgPSBiW25dXG4gIGJbbl0gPSBiW21dXG4gIGJbbV0gPSBpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDE2ID0gZnVuY3Rpb24gc3dhcDE2ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSAyICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMSlcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAzMiA9IGZ1bmN0aW9uIHN3YXAzMiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgNCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDMpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDIpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwNjQgPSBmdW5jdGlvbiBzd2FwNjQgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDggIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDgpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyA3KVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyA2KVxuICAgIHN3YXAodGhpcywgaSArIDIsIGkgKyA1KVxuICAgIHN3YXAodGhpcywgaSArIDMsIGkgKyA0KVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoKSB7XG4gIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aCB8IDBcbiAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgaWYgKHRoaXMgPT09IGIpIHJldHVybiB0cnVlXG4gIHJldHVybiBCdWZmZXIuY29tcGFyZSh0aGlzLCBiKSA9PT0gMFxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgdmFyIHN0ciA9ICcnXG4gIHZhciBtYXggPSBleHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTXG4gIGlmICh0aGlzLmxlbmd0aCA+IDApIHtcbiAgICBzdHIgPSB0aGlzLnRvU3RyaW5nKCdoZXgnLCAwLCBtYXgpLm1hdGNoKC8uezJ9L2cpLmpvaW4oJyAnKVxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG1heCkgc3RyICs9ICcgLi4uICdcbiAgfVxuICByZXR1cm4gJzxCdWZmZXIgJyArIHN0ciArICc+J1xufVxuXG5CdWZmZXIucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlICh0YXJnZXQsIHN0YXJ0LCBlbmQsIHRoaXNTdGFydCwgdGhpc0VuZCkge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIH1cblxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuZCA9IHRhcmdldCA/IHRhcmdldC5sZW5ndGggOiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc1N0YXJ0ID0gMFxuICB9XG4gIGlmICh0aGlzRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzRW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChzdGFydCA8IDAgfHwgZW5kID4gdGFyZ2V0Lmxlbmd0aCB8fCB0aGlzU3RhcnQgPCAwIHx8IHRoaXNFbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdvdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kICYmIHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAxXG4gIH1cblxuICBzdGFydCA+Pj49IDBcbiAgZW5kID4+Pj0gMFxuICB0aGlzU3RhcnQgPj4+PSAwXG4gIHRoaXNFbmQgPj4+PSAwXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCkgcmV0dXJuIDBcblxuICB2YXIgeCA9IHRoaXNFbmQgLSB0aGlzU3RhcnRcbiAgdmFyIHkgPSBlbmQgLSBzdGFydFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcblxuICB2YXIgdGhpc0NvcHkgPSB0aGlzLnNsaWNlKHRoaXNTdGFydCwgdGhpc0VuZClcbiAgdmFyIHRhcmdldENvcHkgPSB0YXJnZXQuc2xpY2Uoc3RhcnQsIGVuZClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKHRoaXNDb3B5W2ldICE9PSB0YXJnZXRDb3B5W2ldKSB7XG4gICAgICB4ID0gdGhpc0NvcHlbaV1cbiAgICAgIHkgPSB0YXJnZXRDb3B5W2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuLy8gRmluZHMgZWl0aGVyIHRoZSBmaXJzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPj0gYGJ5dGVPZmZzZXRgLFxuLy8gT1IgdGhlIGxhc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0IDw9IGBieXRlT2Zmc2V0YC5cbi8vXG4vLyBBcmd1bWVudHM6XG4vLyAtIGJ1ZmZlciAtIGEgQnVmZmVyIHRvIHNlYXJjaFxuLy8gLSB2YWwgLSBhIHN0cmluZywgQnVmZmVyLCBvciBudW1iZXJcbi8vIC0gYnl0ZU9mZnNldCAtIGFuIGluZGV4IGludG8gYGJ1ZmZlcmA7IHdpbGwgYmUgY2xhbXBlZCB0byBhbiBpbnQzMlxuLy8gLSBlbmNvZGluZyAtIGFuIG9wdGlvbmFsIGVuY29kaW5nLCByZWxldmFudCBpcyB2YWwgaXMgYSBzdHJpbmdcbi8vIC0gZGlyIC0gdHJ1ZSBmb3IgaW5kZXhPZiwgZmFsc2UgZm9yIGxhc3RJbmRleE9mXG5mdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgLy8gRW1wdHkgYnVmZmVyIG1lYW5zIG5vIG1hdGNoXG4gIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSByZXR1cm4gLTFcblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldFxuICBpZiAodHlwZW9mIGJ5dGVPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBieXRlT2Zmc2V0XG4gICAgYnl0ZU9mZnNldCA9IDBcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikge1xuICAgIGJ5dGVPZmZzZXQgPSAweDdmZmZmZmZmXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSB7XG4gICAgYnl0ZU9mZnNldCA9IC0weDgwMDAwMDAwXG4gIH1cbiAgYnl0ZU9mZnNldCA9ICtieXRlT2Zmc2V0ICAvLyBDb2VyY2UgdG8gTnVtYmVyLlxuICBpZiAoaXNOYU4oYnl0ZU9mZnNldCkpIHtcbiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCBcImZvb1wiLCBldGMsIHNlYXJjaCB3aG9sZSBidWZmZXJcbiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0OiBuZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggKyBieXRlT2Zmc2V0XG4gIGlmIChieXRlT2Zmc2V0ID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICBpZiAoZGlyKSByZXR1cm4gLTFcbiAgICBlbHNlIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoIC0gMVxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAwKSB7XG4gICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDBcbiAgICBlbHNlIHJldHVybiAtMVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIHZhbFxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICB9XG5cbiAgLy8gRmluYWxseSwgc2VhcmNoIGVpdGhlciBpbmRleE9mIChpZiBkaXIgaXMgdHJ1ZSkgb3IgbGFzdEluZGV4T2ZcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlOiBsb29raW5nIGZvciBlbXB0eSBzdHJpbmcvYnVmZmVyIGFsd2F5cyBmYWlsc1xuICAgIGlmICh2YWwubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gLTFcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDB4RkYgLy8gU2VhcmNoIGZvciBhIGJ5dGUgdmFsdWUgWzAtMjU1XVxuICAgIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJlxuICAgICAgICB0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKGRpcikge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCBbIHZhbCBdLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyJylcbn1cblxuZnVuY3Rpb24gYXJyYXlJbmRleE9mIChhcnIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICB2YXIgaW5kZXhTaXplID0gMVxuICB2YXIgYXJyTGVuZ3RoID0gYXJyLmxlbmd0aFxuICB2YXIgdmFsTGVuZ3RoID0gdmFsLmxlbmd0aFxuXG4gIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSBTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICBpZiAoZW5jb2RpbmcgPT09ICd1Y3MyJyB8fCBlbmNvZGluZyA9PT0gJ3Vjcy0yJyB8fFxuICAgICAgICBlbmNvZGluZyA9PT0gJ3V0ZjE2bGUnIHx8IGVuY29kaW5nID09PSAndXRmLTE2bGUnKSB7XG4gICAgICBpZiAoYXJyLmxlbmd0aCA8IDIgfHwgdmFsLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIC0xXG4gICAgICB9XG4gICAgICBpbmRleFNpemUgPSAyXG4gICAgICBhcnJMZW5ndGggLz0gMlxuICAgICAgdmFsTGVuZ3RoIC89IDJcbiAgICAgIGJ5dGVPZmZzZXQgLz0gMlxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWQgKGJ1ZiwgaSkge1xuICAgIGlmIChpbmRleFNpemUgPT09IDEpIHtcbiAgICAgIHJldHVybiBidWZbaV1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJ1Zi5yZWFkVUludDE2QkUoaSAqIGluZGV4U2l6ZSlcbiAgICB9XG4gIH1cblxuICB2YXIgaVxuICBpZiAoZGlyKSB7XG4gICAgdmFyIGZvdW5kSW5kZXggPSAtMVxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPCBhcnJMZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHJlYWQoYXJyLCBpKSA9PT0gcmVhZCh2YWwsIGZvdW5kSW5kZXggPT09IC0xID8gMCA6IGkgLSBmb3VuZEluZGV4KSkge1xuICAgICAgICBpZiAoZm91bmRJbmRleCA9PT0gLTEpIGZvdW5kSW5kZXggPSBpXG4gICAgICAgIGlmIChpIC0gZm91bmRJbmRleCArIDEgPT09IHZhbExlbmd0aCkgcmV0dXJuIGZvdW5kSW5kZXggKiBpbmRleFNpemVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ICE9PSAtMSkgaSAtPSBpIC0gZm91bmRJbmRleFxuICAgICAgICBmb3VuZEluZGV4ID0gLTFcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJ5dGVPZmZzZXQgKyB2YWxMZW5ndGggPiBhcnJMZW5ndGgpIGJ5dGVPZmZzZXQgPSBhcnJMZW5ndGggLSB2YWxMZW5ndGhcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGZvdW5kID0gdHJ1ZVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB2YWxMZW5ndGg7IGorKykge1xuICAgICAgICBpZiAocmVhZChhcnIsIGkgKyBqKSAhPT0gcmVhZCh2YWwsIGopKSB7XG4gICAgICAgICAgZm91bmQgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmNsdWRlcyA9IGZ1bmN0aW9uIGluY2x1ZGVzICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiB0aGlzLmluZGV4T2YodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykgIT09IC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIGluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIHRydWUpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbiBsYXN0SW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZmFsc2UpXG59XG5cbmZ1bmN0aW9uIGhleFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgb2Zmc2V0ID0gTnVtYmVyKG9mZnNldCkgfHwgMFxuICB2YXIgcmVtYWluaW5nID0gYnVmLmxlbmd0aCAtIG9mZnNldFxuICBpZiAoIWxlbmd0aCkge1xuICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICB9IGVsc2Uge1xuICAgIGxlbmd0aCA9IE51bWJlcihsZW5ndGgpXG4gICAgaWYgKGxlbmd0aCA+IHJlbWFpbmluZykge1xuICAgICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gICAgfVxuICB9XG5cbiAgLy8gbXVzdCBiZSBhbiBldmVuIG51bWJlciBvZiBkaWdpdHNcbiAgdmFyIHN0ckxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKHN0ckxlbiAlIDIgIT09IDApIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgaGV4IHN0cmluZycpXG5cbiAgaWYgKGxlbmd0aCA+IHN0ckxlbiAvIDIpIHtcbiAgICBsZW5ndGggPSBzdHJMZW4gLyAyXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIHZhciBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpXG4gICAgaWYgKGlzTmFOKHBhcnNlZCkpIHJldHVybiBpXG4gICAgYnVmW29mZnNldCArIGldID0gcGFyc2VkXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gdXRmOFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmOFRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYXNjaWlXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGFzY2lpVG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBsYXRpbjFXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBhc2NpaVdyaXRlKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYmFzZTY0V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihiYXNlNjRUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIHVjczJXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjE2bGVUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiB3cml0ZSAoc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCwgZW5jb2RpbmcpIHtcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZylcbiAgaWYgKG9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSAndXRmOCdcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgZW5jb2RpbmcpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IG9mZnNldFxuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBvZmZzZXRbLCBsZW5ndGhdWywgZW5jb2RpbmddKVxuICB9IGVsc2UgaWYgKGlzRmluaXRlKG9mZnNldCkpIHtcbiAgICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gICAgaWYgKGlzRmluaXRlKGxlbmd0aCkpIHtcbiAgICAgIGxlbmd0aCA9IGxlbmd0aCB8IDBcbiAgICAgIGlmIChlbmNvZGluZyA9PT0gdW5kZWZpbmVkKSBlbmNvZGluZyA9ICd1dGY4J1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmNvZGluZyA9IGxlbmd0aFxuICAgICAgbGVuZ3RoID0gdW5kZWZpbmVkXG4gICAgfVxuICAvLyBsZWdhY3kgd3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0LCBsZW5ndGgpIC0gcmVtb3ZlIGluIHYwLjEzXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0J1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkJ1xuICAgIClcbiAgfVxuXG4gIHZhciByZW1haW5pbmcgPSB0aGlzLmxlbmd0aCAtIG9mZnNldFxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgfHwgbGVuZ3RoID4gcmVtYWluaW5nKSBsZW5ndGggPSByZW1haW5pbmdcblxuICBpZiAoKHN0cmluZy5sZW5ndGggPiAwICYmIChsZW5ndGggPCAwIHx8IG9mZnNldCA8IDApKSB8fCBvZmZzZXQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgICByZXR1cm4gYXNjaWlXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxhdGluMVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIC8vIFdhcm5pbmc6IG1heExlbmd0aCBub3QgdGFrZW4gaW50byBhY2NvdW50IGluIGJhc2U2NFdyaXRlXG4gICAgICAgIHJldHVybiBiYXNlNjRXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdWNzMldyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0J1ZmZlcicsXG4gICAgZGF0YTogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyIHx8IHRoaXMsIDApXG4gIH1cbn1cblxuZnVuY3Rpb24gYmFzZTY0U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBpZiAoc3RhcnQgPT09IDAgJiYgZW5kID09PSBidWYubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1ZilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmLnNsaWNlKHN0YXJ0LCBlbmQpKVxuICB9XG59XG5cbmZ1bmN0aW9uIHV0ZjhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcbiAgdmFyIHJlcyA9IFtdXG5cbiAgdmFyIGkgPSBzdGFydFxuICB3aGlsZSAoaSA8IGVuZCkge1xuICAgIHZhciBmaXJzdEJ5dGUgPSBidWZbaV1cbiAgICB2YXIgY29kZVBvaW50ID0gbnVsbFxuICAgIHZhciBieXRlc1BlclNlcXVlbmNlID0gKGZpcnN0Qnl0ZSA+IDB4RUYpID8gNFxuICAgICAgOiAoZmlyc3RCeXRlID4gMHhERikgPyAzXG4gICAgICA6IChmaXJzdEJ5dGUgPiAweEJGKSA/IDJcbiAgICAgIDogMVxuXG4gICAgaWYgKGkgKyBieXRlc1BlclNlcXVlbmNlIDw9IGVuZCkge1xuICAgICAgdmFyIHNlY29uZEJ5dGUsIHRoaXJkQnl0ZSwgZm91cnRoQnl0ZSwgdGVtcENvZGVQb2ludFxuXG4gICAgICBzd2l0Y2ggKGJ5dGVzUGVyU2VxdWVuY2UpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmIChmaXJzdEJ5dGUgPCAweDgwKSB7XG4gICAgICAgICAgICBjb2RlUG9pbnQgPSBmaXJzdEJ5dGVcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHgxRikgPDwgMHg2IHwgKHNlY29uZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4QyB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKHRoaXJkQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0ZGICYmICh0ZW1wQ29kZVBvaW50IDwgMHhEODAwIHx8IHRlbXBDb2RlUG9pbnQgPiAweERGRkYpKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGZvdXJ0aEJ5dGUgPSBidWZbaSArIDNdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwICYmIChmb3VydGhCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweDEyIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweEMgfCAodGhpcmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKGZvdXJ0aEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweEZGRkYgJiYgdGVtcENvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGVQb2ludCA9PT0gbnVsbCkge1xuICAgICAgLy8gd2UgZGlkIG5vdCBnZW5lcmF0ZSBhIHZhbGlkIGNvZGVQb2ludCBzbyBpbnNlcnQgYVxuICAgICAgLy8gcmVwbGFjZW1lbnQgY2hhciAoVStGRkZEKSBhbmQgYWR2YW5jZSBvbmx5IDEgYnl0ZVxuICAgICAgY29kZVBvaW50ID0gMHhGRkZEXG4gICAgICBieXRlc1BlclNlcXVlbmNlID0gMVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50ID4gMHhGRkZGKSB7XG4gICAgICAvLyBlbmNvZGUgdG8gdXRmMTYgKHN1cnJvZ2F0ZSBwYWlyIGRhbmNlKVxuICAgICAgY29kZVBvaW50IC09IDB4MTAwMDBcbiAgICAgIHJlcy5wdXNoKGNvZGVQb2ludCA+Pj4gMTAgJiAweDNGRiB8IDB4RDgwMClcbiAgICAgIGNvZGVQb2ludCA9IDB4REMwMCB8IGNvZGVQb2ludCAmIDB4M0ZGXG4gICAgfVxuXG4gICAgcmVzLnB1c2goY29kZVBvaW50KVxuICAgIGkgKz0gYnl0ZXNQZXJTZXF1ZW5jZVxuICB9XG5cbiAgcmV0dXJuIGRlY29kZUNvZGVQb2ludHNBcnJheShyZXMpXG59XG5cbi8vIEJhc2VkIG9uIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIyNzQ3MjcyLzY4MDc0MiwgdGhlIGJyb3dzZXIgd2l0aFxuLy8gdGhlIGxvd2VzdCBsaW1pdCBpcyBDaHJvbWUsIHdpdGggMHgxMDAwMCBhcmdzLlxuLy8gV2UgZ28gMSBtYWduaXR1ZGUgbGVzcywgZm9yIHNhZmV0eVxudmFyIE1BWF9BUkdVTUVOVFNfTEVOR1RIID0gMHgxMDAwXG5cbmZ1bmN0aW9uIGRlY29kZUNvZGVQb2ludHNBcnJheSAoY29kZVBvaW50cykge1xuICB2YXIgbGVuID0gY29kZVBvaW50cy5sZW5ndGhcbiAgaWYgKGxlbiA8PSBNQVhfQVJHVU1FTlRTX0xFTkdUSCkge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgY29kZVBvaW50cykgLy8gYXZvaWQgZXh0cmEgc2xpY2UoKVxuICB9XG5cbiAgLy8gRGVjb2RlIGluIGNodW5rcyB0byBhdm9pZCBcImNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZFwiLlxuICB2YXIgcmVzID0gJydcbiAgdmFyIGkgPSAwXG4gIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoXG4gICAgICBTdHJpbmcsXG4gICAgICBjb2RlUG9pbnRzLnNsaWNlKGksIGkgKz0gTUFYX0FSR1VNRU5UU19MRU5HVEgpXG4gICAgKVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0gJiAweDdGKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gbGF0aW4xU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gaGV4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuID0gYnVmLmxlbmd0aFxuXG4gIGlmICghc3RhcnQgfHwgc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgfHwgZW5kIDwgMCB8fCBlbmQgPiBsZW4pIGVuZCA9IGxlblxuXG4gIHZhciBvdXQgPSAnJ1xuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIG91dCArPSB0b0hleChidWZbaV0pXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiB1dGYxNmxlU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgYnl0ZXMgPSBidWYuc2xpY2Uoc3RhcnQsIGVuZClcbiAgdmFyIHJlcyA9ICcnXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSArIGJ5dGVzW2kgKyAxXSAqIDI1NilcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiBzbGljZSAoc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgc3RhcnQgPSB+fnN0YXJ0XG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogfn5lbmRcblxuICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgKz0gbGVuXG4gICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIH0gZWxzZSBpZiAoc3RhcnQgPiBsZW4pIHtcbiAgICBzdGFydCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgKz0gbGVuXG4gICAgaWYgKGVuZCA8IDApIGVuZCA9IDBcbiAgfSBlbHNlIGlmIChlbmQgPiBsZW4pIHtcbiAgICBlbmQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICB2YXIgbmV3QnVmXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIG5ld0J1ZiA9IHRoaXMuc3ViYXJyYXkoc3RhcnQsIGVuZClcbiAgICBuZXdCdWYuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIHZhciBzbGljZUxlbiA9IGVuZCAtIHN0YXJ0XG4gICAgbmV3QnVmID0gbmV3IEJ1ZmZlcihzbGljZUxlbiwgdW5kZWZpbmVkKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2xpY2VMZW47ICsraSkge1xuICAgICAgbmV3QnVmW2ldID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0J1ZlxufVxuXG4vKlxuICogTmVlZCB0byBtYWtlIHN1cmUgdGhhdCBidWZmZXIgaXNuJ3QgdHJ5aW5nIHRvIHdyaXRlIG91dCBvZiBib3VuZHMuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrT2Zmc2V0IChvZmZzZXQsIGV4dCwgbGVuZ3RoKSB7XG4gIGlmICgob2Zmc2V0ICUgMSkgIT09IDAgfHwgb2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ29mZnNldCBpcyBub3QgdWludCcpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBsZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludExFID0gZnVuY3Rpb24gcmVhZFVJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF1cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludEJFID0gZnVuY3Rpb24gcmVhZFVJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcbiAgfVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF1cbiAgdmFyIG11bCA9IDFcbiAgd2hpbGUgKGJ5dGVMZW5ndGggPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50OCA9IGZ1bmN0aW9uIHJlYWRVSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkxFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCA4KSB8IHRoaXNbb2Zmc2V0ICsgMV1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyTEUgPSBmdW5jdGlvbiByZWFkVUludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKCh0aGlzW29mZnNldF0pIHxcbiAgICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSkgK1xuICAgICAgKHRoaXNbb2Zmc2V0ICsgM10gKiAweDEwMDAwMDApXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkJFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gKiAweDEwMDAwMDApICtcbiAgICAoKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgdGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50TEUgPSBmdW5jdGlvbiByZWFkSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50QkUgPSBmdW5jdGlvbiByZWFkSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgaSA9IGJ5dGVMZW5ndGhcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1pXVxuICB3aGlsZSAoaSA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50OCA9IGZ1bmN0aW9uIHJlYWRJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIGlmICghKHRoaXNbb2Zmc2V0XSAmIDB4ODApKSByZXR1cm4gKHRoaXNbb2Zmc2V0XSlcbiAgcmV0dXJuICgoMHhmZiAtIHRoaXNbb2Zmc2V0XSArIDEpICogLTEpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2TEUgPSBmdW5jdGlvbiByZWFkSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkJFID0gZnVuY3Rpb24gcmVhZEludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgMV0gfCAodGhpc1tvZmZzZXRdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0pIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSA8PCAyNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgMjQpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRMRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdExFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRCRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdEJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUxFID0gZnVuY3Rpb24gcmVhZERvdWJsZUxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCA1MiwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlQkUgPSBmdW5jdGlvbiByZWFkRG91YmxlQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCA1MiwgOClcbn1cblxuZnVuY3Rpb24gY2hlY2tJbnQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZmZlclwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKVxuICBpZiAodmFsdWUgPiBtYXggfHwgdmFsdWUgPCBtaW4pIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlVUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlVUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVVSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweGZmLCAwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB2YWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbmZ1bmN0aW9uIG9iamVjdFdyaXRlVUludDE2IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbikge1xuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDIpOyBpIDwgajsgKytpKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlICYgKDB4ZmYgPDwgKDggKiAobGl0dGxlRW5kaWFuID8gaSA6IDEgLSBpKSkpKSA+Pj5cbiAgICAgIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpICogOFxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbmZ1bmN0aW9uIG9iamVjdFdyaXRlVUludDMyIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbikge1xuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgZm9yICh2YXIgaSA9IDAsIGogPSBNYXRoLm1pbihidWYubGVuZ3RoIC0gb2Zmc2V0LCA0KTsgaSA8IGo7ICsraSkge1xuICAgIGJ1ZltvZmZzZXQgKyBpXSA9ICh2YWx1ZSA+Pj4gKGxpdHRsZUVuZGlhbiA/IGkgOiAzIC0gaSkgKiA4KSAmIDB4ZmZcbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSAwXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSAtIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gMFxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSArIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4N2YsIC0weDgwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB2YWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZiArIHZhbHVlICsgMVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmZmZmZmICsgdmFsdWUgKyAxXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5mdW5jdGlvbiBjaGVja0lFRUU3NTQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG4gIGlmIChvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuZnVuY3Rpb24gd3JpdGVGbG9hdCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA0LCAzLjQwMjgyMzQ2NjM4NTI4ODZlKzM4LCAtMy40MDI4MjM0NjYzODUyODg2ZSszOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCAyMywgNClcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0TEUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRCRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG5mdW5jdGlvbiB3cml0ZURvdWJsZSAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA4LCAxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCwgLTEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDUyLCA4KVxuICByZXR1cm4gb2Zmc2V0ICsgOFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlTEUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVCRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbi8vIGNvcHkodGFyZ2V0QnVmZmVyLCB0YXJnZXRTdGFydD0wLCBzb3VyY2VTdGFydD0wLCBzb3VyY2VFbmQ9YnVmZmVyLmxlbmd0aClcbkJ1ZmZlci5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKHRhcmdldCwgdGFyZ2V0U3RhcnQsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCFzdGFydCkgc3RhcnQgPSAwXG4gIGlmICghZW5kICYmIGVuZCAhPT0gMCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldFN0YXJ0ID49IHRhcmdldC5sZW5ndGgpIHRhcmdldFN0YXJ0ID0gdGFyZ2V0Lmxlbmd0aFxuICBpZiAoIXRhcmdldFN0YXJ0KSB0YXJnZXRTdGFydCA9IDBcbiAgaWYgKGVuZCA+IDAgJiYgZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgLy8gQ29weSAwIGJ5dGVzOyB3ZSdyZSBkb25lXG4gIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm4gMFxuICBpZiAodGFyZ2V0Lmxlbmd0aCA9PT0gMCB8fCB0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBGYXRhbCBlcnJvciBjb25kaXRpb25zXG4gIGlmICh0YXJnZXRTdGFydCA8IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIH1cbiAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+PSB0aGlzLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZVN0YXJ0IG91dCBvZiBib3VuZHMnKVxuICBpZiAoZW5kIDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZUVuZCBvdXQgb2YgYm91bmRzJylcblxuICAvLyBBcmUgd2Ugb29iP1xuICBpZiAoZW5kID4gdGhpcy5sZW5ndGgpIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgPCBlbmQgLSBzdGFydCkge1xuICAgIGVuZCA9IHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCArIHN0YXJ0XG4gIH1cblxuICB2YXIgbGVuID0gZW5kIC0gc3RhcnRcbiAgdmFyIGlcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0ICYmIHN0YXJ0IDwgdGFyZ2V0U3RhcnQgJiYgdGFyZ2V0U3RhcnQgPCBlbmQpIHtcbiAgICAvLyBkZXNjZW5kaW5nIGNvcHkgZnJvbSBlbmRcbiAgICBmb3IgKGkgPSBsZW4gLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgdGFyZ2V0W2kgKyB0YXJnZXRTdGFydF0gPSB0aGlzW2kgKyBzdGFydF1cbiAgICB9XG4gIH0gZWxzZSBpZiAobGVuIDwgMTAwMCB8fCAhQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBhc2NlbmRpbmcgY29weSBmcm9tIHN0YXJ0XG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChcbiAgICAgIHRhcmdldCxcbiAgICAgIHRoaXMuc3ViYXJyYXkoc3RhcnQsIHN0YXJ0ICsgbGVuKSxcbiAgICAgIHRhcmdldFN0YXJ0XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG4vLyBVc2FnZTpcbi8vICAgIGJ1ZmZlci5maWxsKG51bWJlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoYnVmZmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChzdHJpbmdbLCBvZmZzZXRbLCBlbmRdXVssIGVuY29kaW5nXSlcbkJ1ZmZlci5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIGZpbGwgKHZhbCwgc3RhcnQsIGVuZCwgZW5jb2RpbmcpIHtcbiAgLy8gSGFuZGxlIHN0cmluZyBjYXNlczpcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHR5cGVvZiBzdGFydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gc3RhcnRcbiAgICAgIHN0YXJ0ID0gMFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuZFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZhciBjb2RlID0gdmFsLmNoYXJDb2RlQXQoMClcbiAgICAgIGlmIChjb2RlIDwgMjU2KSB7XG4gICAgICAgIHZhbCA9IGNvZGVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZycpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnICYmICFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAyNTVcbiAgfVxuXG4gIC8vIEludmFsaWQgcmFuZ2VzIGFyZSBub3Qgc2V0IHRvIGEgZGVmYXVsdCwgc28gY2FuIHJhbmdlIGNoZWNrIGVhcmx5LlxuICBpZiAoc3RhcnQgPCAwIHx8IHRoaXMubGVuZ3RoIDwgc3RhcnQgfHwgdGhpcy5sZW5ndGggPCBlbmQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignT3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc3RhcnQgPSBzdGFydCA+Pj4gMFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IHRoaXMubGVuZ3RoIDogZW5kID4+PiAwXG5cbiAgaWYgKCF2YWwpIHZhbCA9IDBcblxuICB2YXIgaVxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgICB0aGlzW2ldID0gdmFsXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBieXRlcyA9IEJ1ZmZlci5pc0J1ZmZlcih2YWwpXG4gICAgICA/IHZhbFxuICAgICAgOiB1dGY4VG9CeXRlcyhuZXcgQnVmZmVyKHZhbCwgZW5jb2RpbmcpLnRvU3RyaW5nKCkpXG4gICAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGZvciAoaSA9IDA7IGkgPCBlbmQgLSBzdGFydDsgKytpKSB7XG4gICAgICB0aGlzW2kgKyBzdGFydF0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT1cblxudmFyIElOVkFMSURfQkFTRTY0X1JFID0gL1teK1xcLzAtOUEtWmEtei1fXS9nXG5cbmZ1bmN0aW9uIGJhc2U2NGNsZWFuIChzdHIpIHtcbiAgLy8gTm9kZSBzdHJpcHMgb3V0IGludmFsaWQgY2hhcmFjdGVycyBsaWtlIFxcbiBhbmQgXFx0IGZyb20gdGhlIHN0cmluZywgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHN0ciA9IHN0cmluZ3RyaW0oc3RyKS5yZXBsYWNlKElOVkFMSURfQkFTRTY0X1JFLCAnJylcbiAgLy8gTm9kZSBjb252ZXJ0cyBzdHJpbmdzIHdpdGggbGVuZ3RoIDwgMiB0byAnJ1xuICBpZiAoc3RyLmxlbmd0aCA8IDIpIHJldHVybiAnJ1xuICAvLyBOb2RlIGFsbG93cyBmb3Igbm9uLXBhZGRlZCBiYXNlNjQgc3RyaW5ncyAobWlzc2luZyB0cmFpbGluZyA9PT0pLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgd2hpbGUgKHN0ci5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgc3RyID0gc3RyICsgJz0nXG4gIH1cbiAgcmV0dXJuIHN0clxufVxuXG5mdW5jdGlvbiBzdHJpbmd0cmltIChzdHIpIHtcbiAgaWYgKHN0ci50cmltKSByZXR1cm4gc3RyLnRyaW0oKVxuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMrfFxccyskL2csICcnKVxufVxuXG5mdW5jdGlvbiB0b0hleCAobikge1xuICBpZiAobiA8IDE2KSByZXR1cm4gJzAnICsgbi50b1N0cmluZygxNilcbiAgcmV0dXJuIG4udG9TdHJpbmcoMTYpXG59XG5cbmZ1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7XG4gIHVuaXRzID0gdW5pdHMgfHwgSW5maW5pdHlcbiAgdmFyIGNvZGVQb2ludFxuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aFxuICB2YXIgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcbiAgdmFyIGJ5dGVzID0gW11cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgY29kZVBvaW50ID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcblxuICAgIC8vIGlzIHN1cnJvZ2F0ZSBjb21wb25lbnRcbiAgICBpZiAoY29kZVBvaW50ID4gMHhEN0ZGICYmIGNvZGVQb2ludCA8IDB4RTAwMCkge1xuICAgICAgLy8gbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICghbGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgICAvLyBubyBsZWFkIHlldFxuICAgICAgICBpZiAoY29kZVBvaW50ID4gMHhEQkZGKSB7XG4gICAgICAgICAgLy8gdW5leHBlY3RlZCB0cmFpbFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPT09IGxlbmd0aCkge1xuICAgICAgICAgIC8vIHVucGFpcmVkIGxlYWRcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gdmFsaWQgbGVhZFxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMiBsZWFkcyBpbiBhIHJvd1xuICAgICAgaWYgKGNvZGVQb2ludCA8IDB4REMwMCkge1xuICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyB2YWxpZCBzdXJyb2dhdGUgcGFpclxuICAgICAgY29kZVBvaW50ID0gKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDAgPDwgMTAgfCBjb2RlUG9pbnQgLSAweERDMDApICsgMHgxMDAwMFxuICAgIH0gZWxzZSBpZiAobGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgLy8gdmFsaWQgYm1wIGNoYXIsIGJ1dCBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgfVxuXG4gICAgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcblxuICAgIC8vIGVuY29kZSB1dGY4XG4gICAgaWYgKGNvZGVQb2ludCA8IDB4ODApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMSkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChjb2RlUG9pbnQpXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDgwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2IHwgMHhDMCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyB8IDB4RTAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDQpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDEyIHwgMHhGMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb2RlIHBvaW50JylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlUb0J5dGVzIChzdHIpIHtcbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gTm9kZSdzIGNvZGUgc2VlbXMgdG8gYmUgZG9pbmcgdGhpcyBhbmQgbm90ICYgMHg3Ri4uXG4gICAgYnl0ZUFycmF5LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMgKHN0ciwgdW5pdHMpIHtcbiAgdmFyIGMsIGhpLCBsb1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcblxuICAgIGMgPSBzdHIuY2hhckNvZGVBdChpKVxuICAgIGhpID0gYyA+PiA4XG4gICAgbG8gPSBjICUgMjU2XG4gICAgYnl0ZUFycmF5LnB1c2gobG8pXG4gICAgYnl0ZUFycmF5LnB1c2goaGkpXG4gIH1cblxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFRvQnl0ZXMgKHN0cikge1xuICByZXR1cm4gYmFzZTY0LnRvQnl0ZUFycmF5KGJhc2U2NGNsZWFuKHN0cikpXG59XG5cbmZ1bmN0aW9uIGJsaXRCdWZmZXIgKHNyYywgZHN0LCBvZmZzZXQsIGxlbmd0aCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgaWYgKChpICsgb2Zmc2V0ID49IGRzdC5sZW5ndGgpIHx8IChpID49IHNyYy5sZW5ndGgpKSBicmVha1xuICAgIGRzdFtpICsgb2Zmc2V0XSA9IHNyY1tpXVxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIGlzbmFuICh2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gdmFsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9idWZmZXIvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5\n");

/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar elliptic = exports;\n\nelliptic.version = __webpack_require__(173).version;\nelliptic.utils = __webpack_require__(174);\nelliptic.rand = __webpack_require__(72);\nelliptic.curve = __webpack_require__(26);\nelliptic.curves = __webpack_require__(179);\n\n// Protocols\nelliptic.ec = __webpack_require__(187);\nelliptic.eddsa = __webpack_require__(191);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMuanM/OTU5ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBlbGxpcHRpYyA9IGV4cG9ydHM7XG5cbmVsbGlwdGljLnZlcnNpb24gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuZWxsaXB0aWMudXRpbHMgPSByZXF1aXJlKCcuL2VsbGlwdGljL3V0aWxzJyk7XG5lbGxpcHRpYy5yYW5kID0gcmVxdWlyZSgnYnJvcmFuZCcpO1xuZWxsaXB0aWMuY3VydmUgPSByZXF1aXJlKCcuL2VsbGlwdGljL2N1cnZlJyk7XG5lbGxpcHRpYy5jdXJ2ZXMgPSByZXF1aXJlKCcuL2VsbGlwdGljL2N1cnZlcycpO1xuXG4vLyBQcm90b2NvbHNcbmVsbGlwdGljLmVjID0gcmVxdWlyZSgnLi9lbGxpcHRpYy9lYycpO1xuZWxsaXB0aWMuZWRkc2EgPSByZXF1aXJlKCcuL2VsbGlwdGljL2VkZHNhJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///6\n");

/***/ }),
/* 7 */
/***/ (function(module, exports) {

eval("module.exports = assert;\n\nfunction assert(val, msg) {\n  if (!val)\n    throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n  if (l != r)\n    throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9taW5pbWFsaXN0aWMtYXNzZXJ0L2luZGV4LmpzP2QzYzIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBhc3NlcnQ7XG5cbmZ1bmN0aW9uIGFzc2VydCh2YWwsIG1zZykge1xuICBpZiAoIXZhbClcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG59XG5cbmFzc2VydC5lcXVhbCA9IGZ1bmN0aW9uIGFzc2VydEVxdWFsKGwsIHIsIG1zZykge1xuICBpZiAobCAhPSByKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgKCdBc3NlcnRpb24gZmFpbGVkOiAnICsgbCArICcgIT0gJyArIHIpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9taW5pbWFsaXN0aWMtYXNzZXJ0L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7\n");

/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar assert = __webpack_require__(7);\nvar inherits = __webpack_require__(0);\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n  if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n    return false;\n  }\n  if (i < 0 || i + 1 >= msg.length) {\n    return false;\n  }\n  return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n  if (Array.isArray(msg))\n    return msg.slice();\n  if (!msg)\n    return [];\n  var res = [];\n  if (typeof msg === 'string') {\n    if (!enc) {\n      // Inspired by stringToUtf8ByteArray() in closure-library by Google\n      // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n      // Apache License 2.0\n      // https://github.com/google/closure-library/blob/master/LICENSE\n      var p = 0;\n      for (var i = 0; i < msg.length; i++) {\n        var c = msg.charCodeAt(i);\n        if (c < 128) {\n          res[p++] = c;\n        } else if (c < 2048) {\n          res[p++] = (c >> 6) | 192;\n          res[p++] = (c & 63) | 128;\n        } else if (isSurrogatePair(msg, i)) {\n          c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n          res[p++] = (c >> 18) | 240;\n          res[p++] = ((c >> 12) & 63) | 128;\n          res[p++] = ((c >> 6) & 63) | 128;\n          res[p++] = (c & 63) | 128;\n        } else {\n          res[p++] = (c >> 12) | 224;\n          res[p++] = ((c >> 6) & 63) | 128;\n          res[p++] = (c & 63) | 128;\n        }\n      }\n    } else if (enc === 'hex') {\n      msg = msg.replace(/[^a-z0-9]+/ig, '');\n      if (msg.length % 2 !== 0)\n        msg = '0' + msg;\n      for (i = 0; i < msg.length; i += 2)\n        res.push(parseInt(msg[i] + msg[i + 1], 16));\n    }\n  } else {\n    for (i = 0; i < msg.length; i++)\n      res[i] = msg[i] | 0;\n  }\n  return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n  var res = '';\n  for (var i = 0; i < msg.length; i++)\n    res += zero2(msg[i].toString(16));\n  return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n  var res = (w >>> 24) |\n            ((w >>> 8) & 0xff00) |\n            ((w << 8) & 0xff0000) |\n            ((w & 0xff) << 24);\n  return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n  var res = '';\n  for (var i = 0; i < msg.length; i++) {\n    var w = msg[i];\n    if (endian === 'little')\n      w = htonl(w);\n    res += zero8(w.toString(16));\n  }\n  return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n  if (word.length === 1)\n    return '0' + word;\n  else\n    return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n  if (word.length === 7)\n    return '0' + word;\n  else if (word.length === 6)\n    return '00' + word;\n  else if (word.length === 5)\n    return '000' + word;\n  else if (word.length === 4)\n    return '0000' + word;\n  else if (word.length === 3)\n    return '00000' + word;\n  else if (word.length === 2)\n    return '000000' + word;\n  else if (word.length === 1)\n    return '0000000' + word;\n  else\n    return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n  var len = end - start;\n  assert(len % 4 === 0);\n  var res = new Array(len / 4);\n  for (var i = 0, k = start; i < res.length; i++, k += 4) {\n    var w;\n    if (endian === 'big')\n      w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n    else\n      w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n    res[i] = w >>> 0;\n  }\n  return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n  var res = new Array(msg.length * 4);\n  for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n    var m = msg[i];\n    if (endian === 'big') {\n      res[k] = m >>> 24;\n      res[k + 1] = (m >>> 16) & 0xff;\n      res[k + 2] = (m >>> 8) & 0xff;\n      res[k + 3] = m & 0xff;\n    } else {\n      res[k + 3] = m >>> 24;\n      res[k + 2] = (m >>> 16) & 0xff;\n      res[k + 1] = (m >>> 8) & 0xff;\n      res[k] = m & 0xff;\n    }\n  }\n  return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n  return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n  return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n  return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n  return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n  return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n  return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n  var bh = buf[pos];\n  var bl = buf[pos + 1];\n\n  var lo = (al + bl) >>> 0;\n  var hi = (lo < al ? 1 : 0) + ah + bh;\n  buf[pos] = hi >>> 0;\n  buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n  var lo = (al + bl) >>> 0;\n  var hi = (lo < al ? 1 : 0) + ah + bh;\n  return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n  var lo = al + bl;\n  return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n  var carry = 0;\n  var lo = al;\n  lo = (lo + bl) >>> 0;\n  carry += lo < al ? 1 : 0;\n  lo = (lo + cl) >>> 0;\n  carry += lo < cl ? 1 : 0;\n  lo = (lo + dl) >>> 0;\n  carry += lo < dl ? 1 : 0;\n\n  var hi = ah + bh + ch + dh + carry;\n  return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n  var lo = al + bl + cl + dl;\n  return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n  var carry = 0;\n  var lo = al;\n  lo = (lo + bl) >>> 0;\n  carry += lo < al ? 1 : 0;\n  lo = (lo + cl) >>> 0;\n  carry += lo < cl ? 1 : 0;\n  lo = (lo + dl) >>> 0;\n  carry += lo < dl ? 1 : 0;\n  lo = (lo + el) >>> 0;\n  carry += lo < el ? 1 : 0;\n\n  var hi = ah + bh + ch + dh + eh + carry;\n  return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n  var lo = al + bl + cl + dl + el;\n\n  return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n  var r = (al << (32 - num)) | (ah >>> num);\n  return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n  var r = (ah << (32 - num)) | (al >>> num);\n  return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n  return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n  var r = (ah << (32 - num)) | (al >>> num);\n  return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3V0aWxzLmpzP2Q2NTIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZXhwb3J0cy5pbmhlcml0cyA9IGluaGVyaXRzO1xuXG5mdW5jdGlvbiBpc1N1cnJvZ2F0ZVBhaXIobXNnLCBpKSB7XG4gIGlmICgobXNnLmNoYXJDb2RlQXQoaSkgJiAweEZDMDApICE9PSAweEQ4MDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGkgPCAwIHx8IGkgKyAxID49IG1zZy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChtc2cuY2hhckNvZGVBdChpICsgMSkgJiAweEZDMDApID09PSAweERDMDA7XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkobXNnLCBlbmMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobXNnKSlcbiAgICByZXR1cm4gbXNnLnNsaWNlKCk7XG4gIGlmICghbXNnKVxuICAgIHJldHVybiBbXTtcbiAgdmFyIHJlcyA9IFtdO1xuICBpZiAodHlwZW9mIG1zZyA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIWVuYykge1xuICAgICAgLy8gSW5zcGlyZWQgYnkgc3RyaW5nVG9VdGY4Qnl0ZUFycmF5KCkgaW4gY2xvc3VyZS1saWJyYXJ5IGJ5IEdvb2dsZVxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvYmxvYi84NTk4ZDg3MjQyYWY1OWFhYzIzMzI3MDc0MmM4OTg0ZTJiMmJkYmUwL2Nsb3N1cmUvZ29vZy9jcnlwdC9jcnlwdC5qcyNMMTE3LUwxNDNcbiAgICAgIC8vIEFwYWNoZSBMaWNlbnNlIDIuMFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICAgICAgdmFyIHAgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGMgPSBtc2cuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGMgPCAxMjgpIHtcbiAgICAgICAgICByZXNbcCsrXSA9IGM7XG4gICAgICAgIH0gZWxzZSBpZiAoYyA8IDIwNDgpIHtcbiAgICAgICAgICByZXNbcCsrXSA9IChjID4+IDYpIHwgMTkyO1xuICAgICAgICAgIHJlc1twKytdID0gKGMgJiA2MykgfCAxMjg7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNTdXJyb2dhdGVQYWlyKG1zZywgaSkpIHtcbiAgICAgICAgICBjID0gMHgxMDAwMCArICgoYyAmIDB4MDNGRikgPDwgMTApICsgKG1zZy5jaGFyQ29kZUF0KCsraSkgJiAweDAzRkYpO1xuICAgICAgICAgIHJlc1twKytdID0gKGMgPj4gMTgpIHwgMjQwO1xuICAgICAgICAgIHJlc1twKytdID0gKChjID4+IDEyKSAmIDYzKSB8IDEyODtcbiAgICAgICAgICByZXNbcCsrXSA9ICgoYyA+PiA2KSAmIDYzKSB8IDEyODtcbiAgICAgICAgICByZXNbcCsrXSA9IChjICYgNjMpIHwgMTI4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc1twKytdID0gKGMgPj4gMTIpIHwgMjI0O1xuICAgICAgICAgIHJlc1twKytdID0gKChjID4+IDYpICYgNjMpIHwgMTI4O1xuICAgICAgICAgIHJlc1twKytdID0gKGMgJiA2MykgfCAxMjg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuYyA9PT0gJ2hleCcpIHtcbiAgICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgICBpZiAobXNnLmxlbmd0aCAlIDIgIT09IDApXG4gICAgICAgIG1zZyA9ICcwJyArIG1zZztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpICs9IDIpXG4gICAgICAgIHJlcy5wdXNoKHBhcnNlSW50KG1zZ1tpXSArIG1zZ1tpICsgMV0sIDE2KSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAoaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspXG4gICAgICByZXNbaV0gPSBtc2dbaV0gfCAwO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5leHBvcnRzLnRvQXJyYXkgPSB0b0FycmF5O1xuXG5mdW5jdGlvbiB0b0hleChtc2cpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICByZXMgKz0gemVybzIobXNnW2ldLnRvU3RyaW5nKDE2KSk7XG4gIHJldHVybiByZXM7XG59XG5leHBvcnRzLnRvSGV4ID0gdG9IZXg7XG5cbmZ1bmN0aW9uIGh0b25sKHcpIHtcbiAgdmFyIHJlcyA9ICh3ID4+PiAyNCkgfFxuICAgICAgICAgICAgKCh3ID4+PiA4KSAmIDB4ZmYwMCkgfFxuICAgICAgICAgICAgKCh3IDw8IDgpICYgMHhmZjAwMDApIHxcbiAgICAgICAgICAgICgodyAmIDB4ZmYpIDw8IDI0KTtcbiAgcmV0dXJuIHJlcyA+Pj4gMDtcbn1cbmV4cG9ydHMuaHRvbmwgPSBodG9ubDtcblxuZnVuY3Rpb24gdG9IZXgzMihtc2csIGVuZGlhbikge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHcgPSBtc2dbaV07XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2xpdHRsZScpXG4gICAgICB3ID0gaHRvbmwodyk7XG4gICAgcmVzICs9IHplcm84KHcudG9TdHJpbmcoMTYpKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuZXhwb3J0cy50b0hleDMyID0gdG9IZXgzMjtcblxuZnVuY3Rpb24gemVybzIod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbmV4cG9ydHMuemVybzIgPSB6ZXJvMjtcblxuZnVuY3Rpb24gemVybzgod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDcpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA2KVxuICAgIHJldHVybiAnMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDUpXG4gICAgcmV0dXJuICcwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDQpXG4gICAgcmV0dXJuICcwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAzKVxuICAgIHJldHVybiAnMDAwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDIpXG4gICAgcmV0dXJuICcwMDAwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwMDAwMDAwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbmV4cG9ydHMuemVybzggPSB6ZXJvODtcblxuZnVuY3Rpb24gam9pbjMyKG1zZywgc3RhcnQsIGVuZCwgZW5kaWFuKSB7XG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydDtcbiAgYXNzZXJ0KGxlbiAlIDQgPT09IDApO1xuICB2YXIgcmVzID0gbmV3IEFycmF5KGxlbiAvIDQpO1xuICBmb3IgKHZhciBpID0gMCwgayA9IHN0YXJ0OyBpIDwgcmVzLmxlbmd0aDsgaSsrLCBrICs9IDQpIHtcbiAgICB2YXIgdztcbiAgICBpZiAoZW5kaWFuID09PSAnYmlnJylcbiAgICAgIHcgPSAobXNnW2tdIDw8IDI0KSB8IChtc2dbayArIDFdIDw8IDE2KSB8IChtc2dbayArIDJdIDw8IDgpIHwgbXNnW2sgKyAzXTtcbiAgICBlbHNlXG4gICAgICB3ID0gKG1zZ1trICsgM10gPDwgMjQpIHwgKG1zZ1trICsgMl0gPDwgMTYpIHwgKG1zZ1trICsgMV0gPDwgOCkgfCBtc2dba107XG4gICAgcmVzW2ldID0gdyA+Pj4gMDtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuZXhwb3J0cy5qb2luMzIgPSBqb2luMzI7XG5cbmZ1bmN0aW9uIHNwbGl0MzIobXNnLCBlbmRpYW4pIHtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShtc2cubGVuZ3RoICogNCk7XG4gIGZvciAodmFyIGkgPSAwLCBrID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKywgayArPSA0KSB7XG4gICAgdmFyIG0gPSBtc2dbaV07XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JpZycpIHtcbiAgICAgIHJlc1trXSA9IG0gPj4+IDI0O1xuICAgICAgcmVzW2sgKyAxXSA9IChtID4+PiAxNikgJiAweGZmO1xuICAgICAgcmVzW2sgKyAyXSA9IChtID4+PiA4KSAmIDB4ZmY7XG4gICAgICByZXNbayArIDNdID0gbSAmIDB4ZmY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1trICsgM10gPSBtID4+PiAyNDtcbiAgICAgIHJlc1trICsgMl0gPSAobSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgIHJlc1trICsgMV0gPSAobSA+Pj4gOCkgJiAweGZmO1xuICAgICAgcmVzW2tdID0gbSAmIDB4ZmY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG5leHBvcnRzLnNwbGl0MzIgPSBzcGxpdDMyO1xuXG5mdW5jdGlvbiByb3RyMzIodywgYikge1xuICByZXR1cm4gKHcgPj4+IGIpIHwgKHcgPDwgKDMyIC0gYikpO1xufVxuZXhwb3J0cy5yb3RyMzIgPSByb3RyMzI7XG5cbmZ1bmN0aW9uIHJvdGwzMih3LCBiKSB7XG4gIHJldHVybiAodyA8PCBiKSB8ICh3ID4+PiAoMzIgLSBiKSk7XG59XG5leHBvcnRzLnJvdGwzMiA9IHJvdGwzMjtcblxuZnVuY3Rpb24gc3VtMzIoYSwgYikge1xuICByZXR1cm4gKGEgKyBiKSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtMzIgPSBzdW0zMjtcblxuZnVuY3Rpb24gc3VtMzJfMyhhLCBiLCBjKSB7XG4gIHJldHVybiAoYSArIGIgKyBjKSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtMzJfMyA9IHN1bTMyXzM7XG5cbmZ1bmN0aW9uIHN1bTMyXzQoYSwgYiwgYywgZCkge1xuICByZXR1cm4gKGEgKyBiICsgYyArIGQpID4+PiAwO1xufVxuZXhwb3J0cy5zdW0zMl80ID0gc3VtMzJfNDtcblxuZnVuY3Rpb24gc3VtMzJfNShhLCBiLCBjLCBkLCBlKSB7XG4gIHJldHVybiAoYSArIGIgKyBjICsgZCArIGUpID4+PiAwO1xufVxuZXhwb3J0cy5zdW0zMl81ID0gc3VtMzJfNTtcblxuZnVuY3Rpb24gc3VtNjQoYnVmLCBwb3MsIGFoLCBhbCkge1xuICB2YXIgYmggPSBidWZbcG9zXTtcbiAgdmFyIGJsID0gYnVmW3BvcyArIDFdO1xuXG4gIHZhciBsbyA9IChhbCArIGJsKSA+Pj4gMDtcbiAgdmFyIGhpID0gKGxvIDwgYWwgPyAxIDogMCkgKyBhaCArIGJoO1xuICBidWZbcG9zXSA9IGhpID4+PiAwO1xuICBidWZbcG9zICsgMV0gPSBsbztcbn1cbmV4cG9ydHMuc3VtNjQgPSBzdW02NDtcblxuZnVuY3Rpb24gc3VtNjRfaGkoYWgsIGFsLCBiaCwgYmwpIHtcbiAgdmFyIGxvID0gKGFsICsgYmwpID4+PiAwO1xuICB2YXIgaGkgPSAobG8gPCBhbCA/IDEgOiAwKSArIGFoICsgYmg7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtNjRfaGkgPSBzdW02NF9oaTtcblxuZnVuY3Rpb24gc3VtNjRfbG8oYWgsIGFsLCBiaCwgYmwpIHtcbiAgdmFyIGxvID0gYWwgKyBibDtcbiAgcmV0dXJuIGxvID4+PiAwO1xufVxuZXhwb3J0cy5zdW02NF9sbyA9IHN1bTY0X2xvO1xuXG5mdW5jdGlvbiBzdW02NF80X2hpKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCkge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgbG8gPSBhbDtcbiAgbG8gPSAobG8gKyBibCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgYWwgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBjbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgY2wgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBkbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgZGwgPyAxIDogMDtcblxuICB2YXIgaGkgPSBhaCArIGJoICsgY2ggKyBkaCArIGNhcnJ5O1xuICByZXR1cm4gaGkgPj4+IDA7XG59XG5leHBvcnRzLnN1bTY0XzRfaGkgPSBzdW02NF80X2hpO1xuXG5mdW5jdGlvbiBzdW02NF80X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCkge1xuICB2YXIgbG8gPSBhbCArIGJsICsgY2wgKyBkbDtcbiAgcmV0dXJuIGxvID4+PiAwO1xufVxuZXhwb3J0cy5zdW02NF80X2xvID0gc3VtNjRfNF9sbztcblxuZnVuY3Rpb24gc3VtNjRfNV9oaShhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwsIGVoLCBlbCkge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgbG8gPSBhbDtcbiAgbG8gPSAobG8gKyBibCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgYWwgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBjbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgY2wgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBkbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgZGwgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBlbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgZWwgPyAxIDogMDtcblxuICB2YXIgaGkgPSBhaCArIGJoICsgY2ggKyBkaCArIGVoICsgY2Fycnk7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtNjRfNV9oaSA9IHN1bTY0XzVfaGk7XG5cbmZ1bmN0aW9uIHN1bTY0XzVfbG8oYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsLCBlaCwgZWwpIHtcbiAgdmFyIGxvID0gYWwgKyBibCArIGNsICsgZGwgKyBlbDtcblxuICByZXR1cm4gbG8gPj4+IDA7XG59XG5leHBvcnRzLnN1bTY0XzVfbG8gPSBzdW02NF81X2xvO1xuXG5mdW5jdGlvbiByb3RyNjRfaGkoYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWwgPDwgKDMyIC0gbnVtKSkgfCAoYWggPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufVxuZXhwb3J0cy5yb3RyNjRfaGkgPSByb3RyNjRfaGk7XG5cbmZ1bmN0aW9uIHJvdHI2NF9sbyhhaCwgYWwsIG51bSkge1xuICB2YXIgciA9IChhaCA8PCAoMzIgLSBudW0pKSB8IChhbCA+Pj4gbnVtKTtcbiAgcmV0dXJuIHIgPj4+IDA7XG59XG5leHBvcnRzLnJvdHI2NF9sbyA9IHJvdHI2NF9sbztcblxuZnVuY3Rpb24gc2hyNjRfaGkoYWgsIGFsLCBudW0pIHtcbiAgcmV0dXJuIGFoID4+PiBudW07XG59XG5leHBvcnRzLnNocjY0X2hpID0gc2hyNjRfaGk7XG5cbmZ1bmN0aW9uIHNocjY0X2xvKGFoLCBhbCwgbnVtKSB7XG4gIHZhciByID0gKGFoIDw8ICgzMiAtIG51bSkpIHwgKGFsID4+PiBudW0pO1xuICByZXR1cm4gciA+Pj4gMDtcbn1cbmV4cG9ydHMuc2hyNjRfbG8gPSBzaHI2NF9sbztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvdXRpbHMuanNcbi8vIG1vZHVsZSBpZCA9IDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///8\n");

/***/ }),
/* 9 */
/***/ (function(module, exports) {

eval("var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8od2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanM/MzY5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZztcclxuXHJcbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXHJcbmcgPSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJuIHRoaXM7XHJcbn0pKCk7XHJcblxyXG50cnkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxyXG5cdGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSxldmFsKShcInRoaXNcIik7XHJcbn0gY2F0Y2goZSkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXHJcblx0aWYodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIilcclxuXHRcdGcgPSB3aW5kb3c7XHJcbn1cclxuXHJcbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cclxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3NcclxuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBnO1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAod2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///9\n");

/***/ }),
/* 10 */
/***/ (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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbm9kZS1saWJzLWJyb3dzZXIvbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcz85NGQ0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lciA9IG5vb3A7XG5cbnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9ub2RlLWxpYnMtYnJvd3Nlci9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAxMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///10\n");

/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {

eval("var Buffer = __webpack_require__(1).Buffer\nvar Transform = __webpack_require__(30).Transform\nvar StringDecoder = __webpack_require__(34).StringDecoder\nvar inherits = __webpack_require__(0)\n\nfunction CipherBase (hashMode) {\n  Transform.call(this)\n  this.hashMode = typeof hashMode === 'string'\n  if (this.hashMode) {\n    this[hashMode] = this._finalOrDigest\n  } else {\n    this.final = this._finalOrDigest\n  }\n  if (this._final) {\n    this.__final = this._final\n    this._final = null\n  }\n  this._decoder = null\n  this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n  if (typeof data === 'string') {\n    data = Buffer.from(data, inputEnc)\n  }\n\n  var outData = this._update(data)\n  if (this.hashMode) return this\n\n  if (outputEnc) {\n    outData = this._toString(outData, outputEnc)\n  }\n\n  return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n  throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n  throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n  throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n  var err\n  try {\n    if (this.hashMode) {\n      this._update(data)\n    } else {\n      this.push(this._update(data))\n    }\n  } catch (e) {\n    err = e\n  } finally {\n    next(err)\n  }\n}\nCipherBase.prototype._flush = function (done) {\n  var err\n  try {\n    this.push(this.__final())\n  } catch (e) {\n    err = e\n  }\n\n  done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n  var outData = this.__final() || Buffer.alloc(0)\n  if (outputEnc) {\n    outData = this._toString(outData, outputEnc, true)\n  }\n  return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n  if (!this._decoder) {\n    this._decoder = new StringDecoder(enc)\n    this._encoding = enc\n  }\n\n  if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n  var out = this._decoder.write(value)\n  if (fin) {\n    out += this._decoder.end()\n  }\n\n  return out\n}\n\nmodule.exports = CipherBase\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY2lwaGVyLWJhc2UvaW5kZXguanM/Y2ZlZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCdzdHJlYW0nKS5UcmFuc2Zvcm1cbnZhciBTdHJpbmdEZWNvZGVyID0gcmVxdWlyZSgnc3RyaW5nX2RlY29kZXInKS5TdHJpbmdEZWNvZGVyXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbmZ1bmN0aW9uIENpcGhlckJhc2UgKGhhc2hNb2RlKSB7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIHRoaXMuaGFzaE1vZGUgPSB0eXBlb2YgaGFzaE1vZGUgPT09ICdzdHJpbmcnXG4gIGlmICh0aGlzLmhhc2hNb2RlKSB7XG4gICAgdGhpc1toYXNoTW9kZV0gPSB0aGlzLl9maW5hbE9yRGlnZXN0XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5maW5hbCA9IHRoaXMuX2ZpbmFsT3JEaWdlc3RcbiAgfVxuICBpZiAodGhpcy5fZmluYWwpIHtcbiAgICB0aGlzLl9fZmluYWwgPSB0aGlzLl9maW5hbFxuICAgIHRoaXMuX2ZpbmFsID0gbnVsbFxuICB9XG4gIHRoaXMuX2RlY29kZXIgPSBudWxsXG4gIHRoaXMuX2VuY29kaW5nID0gbnVsbFxufVxuaW5oZXJpdHMoQ2lwaGVyQmFzZSwgVHJhbnNmb3JtKVxuXG5DaXBoZXJCYXNlLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSwgaW5wdXRFbmMsIG91dHB1dEVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0YSA9IEJ1ZmZlci5mcm9tKGRhdGEsIGlucHV0RW5jKVxuICB9XG5cbiAgdmFyIG91dERhdGEgPSB0aGlzLl91cGRhdGUoZGF0YSlcbiAgaWYgKHRoaXMuaGFzaE1vZGUpIHJldHVybiB0aGlzXG5cbiAgaWYgKG91dHB1dEVuYykge1xuICAgIG91dERhdGEgPSB0aGlzLl90b1N0cmluZyhvdXREYXRhLCBvdXRwdXRFbmMpXG4gIH1cblxuICByZXR1cm4gb3V0RGF0YVxufVxuXG5DaXBoZXJCYXNlLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZyA9IGZ1bmN0aW9uICgpIHt9XG5DaXBoZXJCYXNlLnByb3RvdHlwZS5nZXRBdXRoVGFnID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3RyeWluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUnKVxufVxuXG5DaXBoZXJCYXNlLnByb3RvdHlwZS5zZXRBdXRoVGFnID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3RyeWluZyB0byBzZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUnKVxufVxuXG5DaXBoZXJCYXNlLnByb3RvdHlwZS5zZXRBQUQgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcigndHJ5aW5nIHRvIHNldCBhYWQgaW4gdW5zdXBwb3J0ZWQgc3RhdGUnKVxufVxuXG5DaXBoZXJCYXNlLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGRhdGEsIF8sIG5leHQpIHtcbiAgdmFyIGVyclxuICB0cnkge1xuICAgIGlmICh0aGlzLmhhc2hNb2RlKSB7XG4gICAgICB0aGlzLl91cGRhdGUoZGF0YSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoKHRoaXMuX3VwZGF0ZShkYXRhKSlcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBlcnIgPSBlXG4gIH0gZmluYWxseSB7XG4gICAgbmV4dChlcnIpXG4gIH1cbn1cbkNpcGhlckJhc2UucHJvdG90eXBlLl9mbHVzaCA9IGZ1bmN0aW9uIChkb25lKSB7XG4gIHZhciBlcnJcbiAgdHJ5IHtcbiAgICB0aGlzLnB1c2godGhpcy5fX2ZpbmFsKCkpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBlcnIgPSBlXG4gIH1cblxuICBkb25lKGVycilcbn1cbkNpcGhlckJhc2UucHJvdG90eXBlLl9maW5hbE9yRGlnZXN0ID0gZnVuY3Rpb24gKG91dHB1dEVuYykge1xuICB2YXIgb3V0RGF0YSA9IHRoaXMuX19maW5hbCgpIHx8IEJ1ZmZlci5hbGxvYygwKVxuICBpZiAob3V0cHV0RW5jKSB7XG4gICAgb3V0RGF0YSA9IHRoaXMuX3RvU3RyaW5nKG91dERhdGEsIG91dHB1dEVuYywgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb3V0RGF0YVxufVxuXG5DaXBoZXJCYXNlLnByb3RvdHlwZS5fdG9TdHJpbmcgPSBmdW5jdGlvbiAodmFsdWUsIGVuYywgZmluKSB7XG4gIGlmICghdGhpcy5fZGVjb2Rlcikge1xuICAgIHRoaXMuX2RlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihlbmMpXG4gICAgdGhpcy5fZW5jb2RpbmcgPSBlbmNcbiAgfVxuXG4gIGlmICh0aGlzLl9lbmNvZGluZyAhPT0gZW5jKSB0aHJvdyBuZXcgRXJyb3IoJ2NhblxcJ3Qgc3dpdGNoIGVuY29kaW5ncycpXG5cbiAgdmFyIG91dCA9IHRoaXMuX2RlY29kZXIud3JpdGUodmFsdWUpXG4gIGlmIChmaW4pIHtcbiAgICBvdXQgKz0gdGhpcy5fZGVjb2Rlci5lbmQoKVxuICB9XG5cbiAgcmV0dXJuIG91dFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENpcGhlckJhc2VcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NpcGhlci1iYXNlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11\n");

/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n\n\n/*<replacement>*/\n\nvar pna = __webpack_require__(23);\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) {\n    keys.push(key);\n  }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = __webpack_require__(16);\nutil.inherits = __webpack_require__(0);\n/*</replacement>*/\n\nvar Readable = __webpack_require__(52);\nvar Writable = __webpack_require__(33);\n\nutil.inherits(Duplex, Readable);\n\n{\n  // avoid scope creep, the keys array can then be collected\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\n\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n\n  Readable.call(this, options);\n  Writable.call(this, options);\n\n  if (options && options.readable === false) this.readable = false;\n\n  if (options && options.writable === false) this.writable = false;\n\n  this.allowHalfOpen = true;\n  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n  this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // if we allow half-open state, or if the writable side ended,\n  // then we're ok.\n  if (this.allowHalfOpen || this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n  self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n  this.push(null);\n  this.end();\n\n  pna.nextTick(cb, err);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX2R1cGxleC5qcz8wZWMxIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIGR1cGxleCBzdHJlYW0gaXMganVzdCBhIHN0cmVhbSB0aGF0IGlzIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLlxuLy8gU2luY2UgSlMgZG9lc24ndCBoYXZlIG11bHRpcGxlIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UsIHRoaXMgY2xhc3Ncbi8vIHByb3RvdHlwYWxseSBpbmhlcml0cyBmcm9tIFJlYWRhYmxlLCBhbmQgdGhlbiBwYXJhc2l0aWNhbGx5IGZyb21cbi8vIFdyaXRhYmxlLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIGtleXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGtleXMucHVzaChrZXkpO1xuICB9cmV0dXJuIGtleXM7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gRHVwbGV4O1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBSZWFkYWJsZSA9IHJlcXVpcmUoJy4vX3N0cmVhbV9yZWFkYWJsZScpO1xudmFyIFdyaXRhYmxlID0gcmVxdWlyZSgnLi9fc3RyZWFtX3dyaXRhYmxlJyk7XG5cbnV0aWwuaW5oZXJpdHMoRHVwbGV4LCBSZWFkYWJsZSk7XG5cbntcbiAgLy8gYXZvaWQgc2NvcGUgY3JlZXAsIHRoZSBrZXlzIGFycmF5IGNhbiB0aGVuIGJlIGNvbGxlY3RlZFxuICB2YXIga2V5cyA9IG9iamVjdEtleXMoV3JpdGFibGUucHJvdG90eXBlKTtcbiAgZm9yICh2YXIgdiA9IDA7IHYgPCBrZXlzLmxlbmd0aDsgdisrKSB7XG4gICAgdmFyIG1ldGhvZCA9IGtleXNbdl07XG4gICAgaWYgKCFEdXBsZXgucHJvdG90eXBlW21ldGhvZF0pIER1cGxleC5wcm90b3R5cGVbbWV0aG9kXSA9IFdyaXRhYmxlLnByb3RvdHlwZVttZXRob2RdO1xuICB9XG59XG5cbmZ1bmN0aW9uIER1cGxleChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKSByZXR1cm4gbmV3IER1cGxleChvcHRpb25zKTtcblxuICBSZWFkYWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICBXcml0YWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMucmVhZGFibGUgPT09IGZhbHNlKSB0aGlzLnJlYWRhYmxlID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy53cml0YWJsZSA9PT0gZmFsc2UpIHRoaXMud3JpdGFibGUgPSBmYWxzZTtcblxuICB0aGlzLmFsbG93SGFsZk9wZW4gPSB0cnVlO1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmFsbG93SGFsZk9wZW4gPT09IGZhbHNlKSB0aGlzLmFsbG93SGFsZk9wZW4gPSBmYWxzZTtcblxuICB0aGlzLm9uY2UoJ2VuZCcsIG9uZW5kKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICd3cml0YWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pO1xuXG4vLyB0aGUgbm8taGFsZi1vcGVuIGVuZm9yY2VyXG5mdW5jdGlvbiBvbmVuZCgpIHtcbiAgLy8gaWYgd2UgYWxsb3cgaGFsZi1vcGVuIHN0YXRlLCBvciBpZiB0aGUgd3JpdGFibGUgc2lkZSBlbmRlZCxcbiAgLy8gdGhlbiB3ZSdyZSBvay5cbiAgaWYgKHRoaXMuYWxsb3dIYWxmT3BlbiB8fCB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkKSByZXR1cm47XG5cbiAgLy8gbm8gbW9yZSBkYXRhIGNhbiBiZSB3cml0dGVuLlxuICAvLyBCdXQgYWxsb3cgbW9yZSB3cml0ZXMgdG8gaGFwcGVuIGluIHRoaXMgdGljay5cbiAgcG5hLm5leHRUaWNrKG9uRW5kTlQsIHRoaXMpO1xufVxuXG5mdW5jdGlvbiBvbkVuZE5UKHNlbGYpIHtcbiAgc2VsZi5lbmQoKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCAmJiB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAvLyB3ZSBpZ25vcmUgdGhlIHZhbHVlIGlmIHRoZSBzdHJlYW1cbiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTtcblxuRHVwbGV4LnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIHRoaXMucHVzaChudWxsKTtcbiAgdGhpcy5lbmQoKTtcblxuICBwbmEubmV4dFRpY2soY2IsIGVycik7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9kdXBsZXguanNcbi8vIG1vZHVsZSBpZCA9IDEyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///12\n");

/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("/* WEBPACK VAR INJECTION */(function(global, process) {\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n  throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = __webpack_require__(1).Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n  module.exports = randomBytes\n} else {\n  module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n  // phantomjs needs to throw\n  if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n  var bytes = Buffer.allocUnsafe(size)\n\n  if (size > 0) {  // getRandomValues fails on IE if size == 0\n    if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n      // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n      for (var generated = 0; generated < size; generated += MAX_BYTES) {\n        // buffer.slice automatically checks if the end is past the end of\n        // the buffer so we don't have to here\n        crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n      }\n    } else {\n      crypto.getRandomValues(bytes)\n    }\n  }\n\n  if (typeof cb === 'function') {\n    return process.nextTick(function () {\n      cb(null, bytes)\n    })\n  }\n\n  return bytes\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9), __webpack_require__(10)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmFuZG9tYnl0ZXMvYnJvd3Nlci5qcz9hY2U5Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuXG4vLyBsaW1pdCBvZiBDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKClcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9DcnlwdG8vZ2V0UmFuZG9tVmFsdWVzXG52YXIgTUFYX0JZVEVTID0gNjU1MzZcblxuLy8gTm9kZSBzdXBwb3J0cyByZXF1ZXN0aW5nIHVwIHRvIHRoaXMgbnVtYmVyIG9mIGJ5dGVzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9tYXN0ZXIvbGliL2ludGVybmFsL2NyeXB0by9yYW5kb20uanMjTDQ4XG52YXIgTUFYX1VJTlQzMiA9IDQyOTQ5NjcyOTVcblxuZnVuY3Rpb24gb2xkQnJvd3NlciAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cXG5Vc2UgQ2hyb21lLCBGaXJlZm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExJylcbn1cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgY3J5cHRvID0gZ2xvYmFsLmNyeXB0byB8fCBnbG9iYWwubXNDcnlwdG9cblxuaWYgKGNyeXB0byAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmFuZG9tQnl0ZXNcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gb2xkQnJvd3NlclxufVxuXG5mdW5jdGlvbiByYW5kb21CeXRlcyAoc2l6ZSwgY2IpIHtcbiAgLy8gcGhhbnRvbWpzIG5lZWRzIHRvIHRocm93XG4gIGlmIChzaXplID4gTUFYX1VJTlQzMikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3JlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMnKVxuXG4gIHZhciBieXRlcyA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShzaXplKVxuXG4gIGlmIChzaXplID4gMCkgeyAgLy8gZ2V0UmFuZG9tVmFsdWVzIGZhaWxzIG9uIElFIGlmIHNpemUgPT0gMFxuICAgIGlmIChzaXplID4gTUFYX0JZVEVTKSB7IC8vIHRoaXMgaXMgdGhlIG1heCBieXRlcyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzXG4gICAgICAvLyBjYW4gZG8gYXQgb25jZSBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL3dpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzXG4gICAgICBmb3IgKHZhciBnZW5lcmF0ZWQgPSAwOyBnZW5lcmF0ZWQgPCBzaXplOyBnZW5lcmF0ZWQgKz0gTUFYX0JZVEVTKSB7XG4gICAgICAgIC8vIGJ1ZmZlci5zbGljZSBhdXRvbWF0aWNhbGx5IGNoZWNrcyBpZiB0aGUgZW5kIGlzIHBhc3QgdGhlIGVuZCBvZlxuICAgICAgICAvLyB0aGUgYnVmZmVyIHNvIHdlIGRvbid0IGhhdmUgdG8gaGVyZVxuICAgICAgICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGJ5dGVzLnNsaWNlKGdlbmVyYXRlZCwgZ2VuZXJhdGVkICsgTUFYX0JZVEVTKSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhieXRlcylcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgY2IobnVsbCwgYnl0ZXMpXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmFuZG9tYnl0ZXMvYnJvd3Nlci5qc1xuLy8gbW9kdWxlIGlkID0gMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///13\n");

/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {

eval("var Buffer = __webpack_require__(1).Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n  this._block = Buffer.alloc(blockSize)\n  this._finalSize = finalSize\n  this._blockSize = blockSize\n  this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n  if (typeof data === 'string') {\n    enc = enc || 'utf8'\n    data = Buffer.from(data, enc)\n  }\n\n  var block = this._block\n  var blockSize = this._blockSize\n  var length = data.length\n  var accum = this._len\n\n  for (var offset = 0; offset < length;) {\n    var assigned = accum % blockSize\n    var remainder = Math.min(length - offset, blockSize - assigned)\n\n    for (var i = 0; i < remainder; i++) {\n      block[assigned + i] = data[offset + i]\n    }\n\n    accum += remainder\n    offset += remainder\n\n    if ((accum % blockSize) === 0) {\n      this._update(block)\n    }\n  }\n\n  this._len += length\n  return this\n}\n\nHash.prototype.digest = function (enc) {\n  var rem = this._len % this._blockSize\n\n  this._block[rem] = 0x80\n\n  // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n  // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n  this._block.fill(0, rem + 1)\n\n  if (rem >= this._finalSize) {\n    this._update(this._block)\n    this._block.fill(0)\n  }\n\n  var bits = this._len * 8\n\n  // uint32\n  if (bits <= 0xffffffff) {\n    this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n  // uint64\n  } else {\n    var lowBits = (bits & 0xffffffff) >>> 0\n    var highBits = (bits - lowBits) / 0x100000000\n\n    this._block.writeUInt32BE(highBits, this._blockSize - 8)\n    this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n  }\n\n  this._update(this._block)\n  var hash = this._hash()\n\n  return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n  throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2hhLmpzL2hhc2guanM/MGIzNCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxuLy8gcHJvdG90eXBlIGNsYXNzIGZvciBoYXNoIGZ1bmN0aW9uc1xuZnVuY3Rpb24gSGFzaCAoYmxvY2tTaXplLCBmaW5hbFNpemUpIHtcbiAgdGhpcy5fYmxvY2sgPSBCdWZmZXIuYWxsb2MoYmxvY2tTaXplKVxuICB0aGlzLl9maW5hbFNpemUgPSBmaW5hbFNpemVcbiAgdGhpcy5fYmxvY2tTaXplID0gYmxvY2tTaXplXG4gIHRoaXMuX2xlbiA9IDBcbn1cblxuSGFzaC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jID0gZW5jIHx8ICd1dGY4J1xuICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBlbmMpXG4gIH1cblxuICB2YXIgYmxvY2sgPSB0aGlzLl9ibG9ja1xuICB2YXIgYmxvY2tTaXplID0gdGhpcy5fYmxvY2tTaXplXG4gIHZhciBsZW5ndGggPSBkYXRhLmxlbmd0aFxuICB2YXIgYWNjdW0gPSB0aGlzLl9sZW5cblxuICBmb3IgKHZhciBvZmZzZXQgPSAwOyBvZmZzZXQgPCBsZW5ndGg7KSB7XG4gICAgdmFyIGFzc2lnbmVkID0gYWNjdW0gJSBibG9ja1NpemVcbiAgICB2YXIgcmVtYWluZGVyID0gTWF0aC5taW4obGVuZ3RoIC0gb2Zmc2V0LCBibG9ja1NpemUgLSBhc3NpZ25lZClcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVtYWluZGVyOyBpKyspIHtcbiAgICAgIGJsb2NrW2Fzc2lnbmVkICsgaV0gPSBkYXRhW29mZnNldCArIGldXG4gICAgfVxuXG4gICAgYWNjdW0gKz0gcmVtYWluZGVyXG4gICAgb2Zmc2V0ICs9IHJlbWFpbmRlclxuXG4gICAgaWYgKChhY2N1bSAlIGJsb2NrU2l6ZSkgPT09IDApIHtcbiAgICAgIHRoaXMuX3VwZGF0ZShibG9jaylcbiAgICB9XG4gIH1cblxuICB0aGlzLl9sZW4gKz0gbGVuZ3RoXG4gIHJldHVybiB0aGlzXG59XG5cbkhhc2gucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgdmFyIHJlbSA9IHRoaXMuX2xlbiAlIHRoaXMuX2Jsb2NrU2l6ZVxuXG4gIHRoaXMuX2Jsb2NrW3JlbV0gPSAweDgwXG5cbiAgLy8gemVybyAocmVtICsgMSkgdHJhaWxpbmcgYml0cywgd2hlcmUgKHJlbSArIDEpIGlzIHRoZSBzbWFsbGVzdFxuICAvLyBub24tbmVnYXRpdmUgc29sdXRpb24gdG8gdGhlIGVxdWF0aW9uIChsZW5ndGggKyAxICsgKHJlbSArIDEpKSA9PT0gZmluYWxTaXplIG1vZCBibG9ja1NpemVcbiAgdGhpcy5fYmxvY2suZmlsbCgwLCByZW0gKyAxKVxuXG4gIGlmIChyZW0gPj0gdGhpcy5fZmluYWxTaXplKSB7XG4gICAgdGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKVxuICAgIHRoaXMuX2Jsb2NrLmZpbGwoMClcbiAgfVxuXG4gIHZhciBiaXRzID0gdGhpcy5fbGVuICogOFxuXG4gIC8vIHVpbnQzMlxuICBpZiAoYml0cyA8PSAweGZmZmZmZmZmKSB7XG4gICAgdGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRShiaXRzLCB0aGlzLl9ibG9ja1NpemUgLSA0KVxuXG4gIC8vIHVpbnQ2NFxuICB9IGVsc2Uge1xuICAgIHZhciBsb3dCaXRzID0gKGJpdHMgJiAweGZmZmZmZmZmKSA+Pj4gMFxuICAgIHZhciBoaWdoQml0cyA9IChiaXRzIC0gbG93Qml0cykgLyAweDEwMDAwMDAwMFxuXG4gICAgdGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRShoaWdoQml0cywgdGhpcy5fYmxvY2tTaXplIC0gOClcbiAgICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKGxvd0JpdHMsIHRoaXMuX2Jsb2NrU2l6ZSAtIDQpXG4gIH1cblxuICB0aGlzLl91cGRhdGUodGhpcy5fYmxvY2spXG4gIHZhciBoYXNoID0gdGhpcy5faGFzaCgpXG5cbiAgcmV0dXJuIGVuYyA/IGhhc2gudG9TdHJpbmcoZW5jKSA6IGhhc2hcbn1cblxuSGFzaC5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdfdXBkYXRlIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MnKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2hcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3NoYS5qcy9oYXNoLmpzXG4vLyBtb2R1bGUgaWQgPSAxNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n");

/***/ }),
/* 15 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar inherits = __webpack_require__(0)\nvar MD5 = __webpack_require__(29)\nvar RIPEMD160 = __webpack_require__(35)\nvar sha = __webpack_require__(36)\nvar Base = __webpack_require__(11)\n\nfunction Hash (hash) {\n  Base.call(this, 'digest')\n\n  this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n  this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n  return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n  alg = alg.toLowerCase()\n  if (alg === 'md5') return new MD5()\n  if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n  return new Hash(sha(alg))\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3JlYXRlLWhhc2gvYnJvd3Nlci5qcz8wNTViIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIE1ENSA9IHJlcXVpcmUoJ21kNS5qcycpXG52YXIgUklQRU1EMTYwID0gcmVxdWlyZSgncmlwZW1kMTYwJylcbnZhciBzaGEgPSByZXF1aXJlKCdzaGEuanMnKVxudmFyIEJhc2UgPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG5cbmZ1bmN0aW9uIEhhc2ggKGhhc2gpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2ggPSBoYXNoXG59XG5cbmluaGVyaXRzKEhhc2gsIEJhc2UpXG5cbkhhc2gucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxufVxuXG5IYXNoLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9oYXNoLmRpZ2VzdCgpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlSGFzaCAoYWxnKSB7XG4gIGFsZyA9IGFsZy50b0xvd2VyQ2FzZSgpXG4gIGlmIChhbGcgPT09ICdtZDUnKSByZXR1cm4gbmV3IE1ENSgpXG4gIGlmIChhbGcgPT09ICdybWQxNjAnIHx8IGFsZyA9PT0gJ3JpcGVtZDE2MCcpIHJldHVybiBuZXcgUklQRU1EMTYwKClcblxuICByZXR1cm4gbmV3IEhhc2goc2hhKGFsZykpXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jcmVhdGUtaGFzaC9icm93c2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///15\n");

/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n  if (Array.isArray) {\n    return Array.isArray(arg);\n  }\n  return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5).Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS11dGlsLWlzL2xpYi91dGlsLmpzPzhjZTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIE5PVEU6IFRoZXNlIHR5cGUgY2hlY2tpbmcgZnVuY3Rpb25zIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIGBpbnN0YW5jZW9mYFxuLy8gYmVjYXVzZSBpdCBpcyBmcmFnaWxlIGFuZCBjYW4gYmUgZWFzaWx5IGZha2VkIHdpdGggYE9iamVjdC5jcmVhdGUoKWAuXG5cbmZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXJnKTtcbiAgfVxuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcoYXJnKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn1cbmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJztcbn1cbmV4cG9ydHMuaXNCb29sZWFuID0gaXNCb29sZWFuO1xuXG5mdW5jdGlvbiBpc051bGwoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbCA9IGlzTnVsbDtcblxuZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydHMuaXNOdW1iZXIgPSBpc051bWJlcjtcblxuZnVuY3Rpb24gaXNTdHJpbmcoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3RyaW5nJztcbn1cbmV4cG9ydHMuaXNTdHJpbmcgPSBpc1N0cmluZztcblxuZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cbmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDtcblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbmV4cG9ydHMuaXNVbmRlZmluZWQgPSBpc1VuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNSZWdFeHAocmUpIHtcbiAgcmV0dXJuIG9iamVjdFRvU3RyaW5nKHJlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5leHBvcnRzLmlzUmVnRXhwID0gaXNSZWdFeHA7XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xufVxuZXhwb3J0cy5pc09iamVjdCA9IGlzT2JqZWN0O1xuXG5mdW5jdGlvbiBpc0RhdGUoZCkge1xuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcoZCkgPT09ICdbb2JqZWN0IERhdGVdJztcbn1cbmV4cG9ydHMuaXNEYXRlID0gaXNEYXRlO1xuXG5mdW5jdGlvbiBpc0Vycm9yKGUpIHtcbiAgcmV0dXJuIChvYmplY3RUb1N0cmluZyhlKSA9PT0gJ1tvYmplY3QgRXJyb3JdJyB8fCBlIGluc3RhbmNlb2YgRXJyb3IpO1xufVxuZXhwb3J0cy5pc0Vycm9yID0gaXNFcnJvcjtcblxuZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7XG59XG5leHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuXG5mdW5jdGlvbiBpc1ByaW1pdGl2ZShhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbCB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnIHx8ICAvLyBFUzYgc3ltYm9sXG4gICAgICAgICB0eXBlb2YgYXJnID09PSAndW5kZWZpbmVkJztcbn1cbmV4cG9ydHMuaXNQcmltaXRpdmUgPSBpc1ByaW1pdGl2ZTtcblxuZXhwb3J0cy5pc0J1ZmZlciA9IEJ1ZmZlci5pc0J1ZmZlcjtcblxuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcobykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS11dGlsLWlzL2xpYi91dGlsLmpzXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///16\n");

/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(Buffer) {module.exports = function xor (a, b) {\n  var length = Math.min(a.length, b.length)\n  var buffer = new Buffer(length)\n\n  for (var i = 0; i < length; ++i) {\n    buffer[i] = a[i] ^ b[i]\n  }\n\n  return buffer\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5).Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYnVmZmVyLXhvci9pbmRleC5qcz8xZjYzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24geG9yIChhLCBiKSB7XG4gIHZhciBsZW5ndGggPSBNYXRoLm1pbihhLmxlbmd0aCwgYi5sZW5ndGgpXG4gIHZhciBidWZmZXIgPSBuZXcgQnVmZmVyKGxlbmd0aClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgYnVmZmVyW2ldID0gYVtpXSBeIGJbaV1cbiAgfVxuXG4gIHJldHVybiBidWZmZXJcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2J1ZmZlci14b3IvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///17\n");

/***/ }),
/* 18 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(8);\nvar assert = __webpack_require__(7);\n\nfunction BlockHash() {\n  this.pending = null;\n  this.pendingTotal = 0;\n  this.blockSize = this.constructor.blockSize;\n  this.outSize = this.constructor.outSize;\n  this.hmacStrength = this.constructor.hmacStrength;\n  this.padLength = this.constructor.padLength / 8;\n  this.endian = 'big';\n\n  this._delta8 = this.blockSize / 8;\n  this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n  // Convert message to array, pad it, and join into 32bit blocks\n  msg = utils.toArray(msg, enc);\n  if (!this.pending)\n    this.pending = msg;\n  else\n    this.pending = this.pending.concat(msg);\n  this.pendingTotal += msg.length;\n\n  // Enough data, try updating\n  if (this.pending.length >= this._delta8) {\n    msg = this.pending;\n\n    // Process pending data in blocks\n    var r = msg.length % this._delta8;\n    this.pending = msg.slice(msg.length - r, msg.length);\n    if (this.pending.length === 0)\n      this.pending = null;\n\n    msg = utils.join32(msg, 0, msg.length - r, this.endian);\n    for (var i = 0; i < msg.length; i += this._delta32)\n      this._update(msg, i, i + this._delta32);\n  }\n\n  return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n  this.update(this._pad());\n  assert(this.pending === null);\n\n  return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n  var len = this.pendingTotal;\n  var bytes = this._delta8;\n  var k = bytes - ((len + this.padLength) % bytes);\n  var res = new Array(k + this.padLength);\n  res[0] = 0x80;\n  for (var i = 1; i < k; i++)\n    res[i] = 0;\n\n  // Append length\n  len <<= 3;\n  if (this.endian === 'big') {\n    for (var t = 8; t < this.padLength; t++)\n      res[i++] = 0;\n\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = (len >>> 24) & 0xff;\n    res[i++] = (len >>> 16) & 0xff;\n    res[i++] = (len >>> 8) & 0xff;\n    res[i++] = len & 0xff;\n  } else {\n    res[i++] = len & 0xff;\n    res[i++] = (len >>> 8) & 0xff;\n    res[i++] = (len >>> 16) & 0xff;\n    res[i++] = (len >>> 24) & 0xff;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n    res[i++] = 0;\n\n    for (t = 8; t < this.padLength; t++)\n      res[i++] = 0;\n  }\n\n  return res;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9jb21tb24uanM/NjEyMCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbmZ1bmN0aW9uIEJsb2NrSGFzaCgpIHtcbiAgdGhpcy5wZW5kaW5nID0gbnVsbDtcbiAgdGhpcy5wZW5kaW5nVG90YWwgPSAwO1xuICB0aGlzLmJsb2NrU2l6ZSA9IHRoaXMuY29uc3RydWN0b3IuYmxvY2tTaXplO1xuICB0aGlzLm91dFNpemUgPSB0aGlzLmNvbnN0cnVjdG9yLm91dFNpemU7XG4gIHRoaXMuaG1hY1N0cmVuZ3RoID0gdGhpcy5jb25zdHJ1Y3Rvci5obWFjU3RyZW5ndGg7XG4gIHRoaXMucGFkTGVuZ3RoID0gdGhpcy5jb25zdHJ1Y3Rvci5wYWRMZW5ndGggLyA4O1xuICB0aGlzLmVuZGlhbiA9ICdiaWcnO1xuXG4gIHRoaXMuX2RlbHRhOCA9IHRoaXMuYmxvY2tTaXplIC8gODtcbiAgdGhpcy5fZGVsdGEzMiA9IHRoaXMuYmxvY2tTaXplIC8gMzI7XG59XG5leHBvcnRzLkJsb2NrSGFzaCA9IEJsb2NrSGFzaDtcblxuQmxvY2tIYXNoLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUobXNnLCBlbmMpIHtcbiAgLy8gQ29udmVydCBtZXNzYWdlIHRvIGFycmF5LCBwYWQgaXQsIGFuZCBqb2luIGludG8gMzJiaXQgYmxvY2tzXG4gIG1zZyA9IHV0aWxzLnRvQXJyYXkobXNnLCBlbmMpO1xuICBpZiAoIXRoaXMucGVuZGluZylcbiAgICB0aGlzLnBlbmRpbmcgPSBtc2c7XG4gIGVsc2VcbiAgICB0aGlzLnBlbmRpbmcgPSB0aGlzLnBlbmRpbmcuY29uY2F0KG1zZyk7XG4gIHRoaXMucGVuZGluZ1RvdGFsICs9IG1zZy5sZW5ndGg7XG5cbiAgLy8gRW5vdWdoIGRhdGEsIHRyeSB1cGRhdGluZ1xuICBpZiAodGhpcy5wZW5kaW5nLmxlbmd0aCA+PSB0aGlzLl9kZWx0YTgpIHtcbiAgICBtc2cgPSB0aGlzLnBlbmRpbmc7XG5cbiAgICAvLyBQcm9jZXNzIHBlbmRpbmcgZGF0YSBpbiBibG9ja3NcbiAgICB2YXIgciA9IG1zZy5sZW5ndGggJSB0aGlzLl9kZWx0YTg7XG4gICAgdGhpcy5wZW5kaW5nID0gbXNnLnNsaWNlKG1zZy5sZW5ndGggLSByLCBtc2cubGVuZ3RoKTtcbiAgICBpZiAodGhpcy5wZW5kaW5nLmxlbmd0aCA9PT0gMClcbiAgICAgIHRoaXMucGVuZGluZyA9IG51bGw7XG5cbiAgICBtc2cgPSB1dGlscy5qb2luMzIobXNnLCAwLCBtc2cubGVuZ3RoIC0gciwgdGhpcy5lbmRpYW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSB0aGlzLl9kZWx0YTMyKVxuICAgICAgdGhpcy5fdXBkYXRlKG1zZywgaSwgaSArIHRoaXMuX2RlbHRhMzIpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5CbG9ja0hhc2gucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgdGhpcy51cGRhdGUodGhpcy5fcGFkKCkpO1xuICBhc3NlcnQodGhpcy5wZW5kaW5nID09PSBudWxsKTtcblxuICByZXR1cm4gdGhpcy5fZGlnZXN0KGVuYyk7XG59O1xuXG5CbG9ja0hhc2gucHJvdG90eXBlLl9wYWQgPSBmdW5jdGlvbiBwYWQoKSB7XG4gIHZhciBsZW4gPSB0aGlzLnBlbmRpbmdUb3RhbDtcbiAgdmFyIGJ5dGVzID0gdGhpcy5fZGVsdGE4O1xuICB2YXIgayA9IGJ5dGVzIC0gKChsZW4gKyB0aGlzLnBhZExlbmd0aCkgJSBieXRlcyk7XG4gIHZhciByZXMgPSBuZXcgQXJyYXkoayArIHRoaXMucGFkTGVuZ3RoKTtcbiAgcmVzWzBdID0gMHg4MDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBrOyBpKyspXG4gICAgcmVzW2ldID0gMDtcblxuICAvLyBBcHBlbmQgbGVuZ3RoXG4gIGxlbiA8PD0gMztcbiAgaWYgKHRoaXMuZW5kaWFuID09PSAnYmlnJykge1xuICAgIGZvciAodmFyIHQgPSA4OyB0IDwgdGhpcy5wYWRMZW5ndGg7IHQrKylcbiAgICAgIHJlc1tpKytdID0gMDtcblxuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDI0KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAxNikgJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gOCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gbGVuICYgMHhmZjtcbiAgfSBlbHNlIHtcbiAgICByZXNbaSsrXSA9IGxlbiAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiA4KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAxNikgJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMjQpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG5cbiAgICBmb3IgKHQgPSA4OyB0IDwgdGhpcy5wYWRMZW5ndGg7IHQrKylcbiAgICAgIHJlc1tpKytdID0gMDtcbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9jb21tb24uanNcbi8vIG1vZHVsZSBpZCA9IDE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///18\n");

/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {

eval("var asn1 = exports;\n\nasn1.bignum = __webpack_require__(4);\n\nasn1.define = __webpack_require__(195).define;\nasn1.base = __webpack_require__(20);\nasn1.constants = __webpack_require__(78);\nasn1.decoders = __webpack_require__(201);\nasn1.encoders = __webpack_require__(203);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS5qcz8yODMxIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBhc24xID0gZXhwb3J0cztcblxuYXNuMS5iaWdudW0gPSByZXF1aXJlKCdibi5qcycpO1xuXG5hc24xLmRlZmluZSA9IHJlcXVpcmUoJy4vYXNuMS9hcGknKS5kZWZpbmU7XG5hc24xLmJhc2UgPSByZXF1aXJlKCcuL2FzbjEvYmFzZScpO1xuYXNuMS5jb25zdGFudHMgPSByZXF1aXJlKCcuL2FzbjEvY29uc3RhbnRzJyk7XG5hc24xLmRlY29kZXJzID0gcmVxdWlyZSgnLi9hc24xL2RlY29kZXJzJyk7XG5hc24xLmVuY29kZXJzID0gcmVxdWlyZSgnLi9hc24xL2VuY29kZXJzJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xLmpzXG4vLyBtb2R1bGUgaWQgPSAxOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///19\n");

/***/ }),
/* 20 */
/***/ (function(module, exports, __webpack_require__) {

eval("var base = exports;\n\nbase.Reporter = __webpack_require__(198).Reporter;\nbase.DecoderBuffer = __webpack_require__(77).DecoderBuffer;\nbase.EncoderBuffer = __webpack_require__(77).EncoderBuffer;\nbase.Node = __webpack_require__(199);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL2luZGV4LmpzP2RkNGIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2UgPSBleHBvcnRzO1xuXG5iYXNlLlJlcG9ydGVyID0gcmVxdWlyZSgnLi9yZXBvcnRlcicpLlJlcG9ydGVyO1xuYmFzZS5EZWNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi9idWZmZXInKS5EZWNvZGVyQnVmZmVyO1xuYmFzZS5FbmNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi9idWZmZXInKS5FbmNvZGVyQnVmZmVyO1xuYmFzZS5Ob2RlID0gcmVxdWlyZSgnLi9ub2RlJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2Jhc2UvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDIwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///20\n");

/***/ }),
/* 21 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar layout = function () {\n    function layout() {\n        _classCallCheck(this, layout);\n\n        this.key = \"\";\n        this.width = 300;\n        this.height = 200;\n        this.id = \"\";\n        this.x = 0;\n        this.y = 0;\n        this.tlx = 0; //璁板綍宸︿笂瑙掔殑鍧愭爣\n        this.tly = 0;\n        this.blx = 0;\n        this.bly = 0;\n        this.left = 0; //鏂逛究鍒濆鍖栨嬁鍒扮殑鏁版嵁瀛樺偍\n        this.top = 0;\n        this.xByElement = 0;\n        this.yByElement = 0;\n        this._handlePointX = 0;\n        this._handlePointY = 0;\n        this.borderWidth = 1;\n    }\n\n    _createClass(layout, [{\n        key: \"setProps\",\n        value: function setProps(newProps) {\n            var isCloneProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n            if (isCloneProps) {\n                this.oldProps = this.cloneProps(this);\n            }\n\n            if ((newProps['font'] || newProps['paragraph']) && !newProps['mode']) {\n                if (newProps['font']) {\n                    Object.assign(this.font, newProps['font']);\n                } else if (newProps['paragraph']) {\n                    Object.assign(this.paragraph, newProps['paragraph']);\n                }\n            } else {\n                //娉ㄦ剰锛佹鏂规硶瀵逛竴灞傛爲缁撴瀯鍚堝苟娌¢棶棰橈紝浣嗚嫢鏄璞¢噷鐨勫睘鎬ц繕鏄竴涓璞★紝鍒欒繘琛屽悎骞舵椂锛岃灞炴€ч噷鐨勫璞′細琚鐩栬€岄潪鍚堝苟鎿嶄綔\n                Object.assign(this, newProps);\n            }\n\n            //鍦ㄥ睘鎬у悎骞跺畬鎴愬悗鍗曠嫭瀵圭浉瀵逛簬鐢诲竷宸︿笂瑙掔殑y(this.y)鍜屾墦鍗版椂杈撳嚭鐨剏(this.printedY)杩涜璋冩暣\n            if (typeof newProps.printedY === 'undefined') {\n                this.printedY = this.y - this.prevChunkBaseline;\n            } else {\n                this.y = this.prevChunkBaseline + this.printedY;\n            }\n        }\n    }, {\n        key: \"getProp\",\n        value: function getProp(prop) {\n            if (this[prop] !== null && this[prop] !== undefined) {\n                return this[prop];\n            } else if (this.font[prop] !== null && this.font[prop] !== undefined) {\n                return this.font[prop];\n            } else if (this.paragraph[prop] !== null && this.paragraph[prop] !== undefined) {\n                return this.paragraph[prop];\n            }\n\n            return undefined;\n        }\n    }, {\n        key: \"isSelected\",\n        value: function isSelected(x, y) {\n            if (x >= this.x && x <= this.x + this.width && y >= this.y && y <= this.y + this.height) {\n                return true;\n            }\n            return false;\n        }\n    }, {\n        key: \"changeElementPosition\",\n        value: function changeElementPosition(position) {\n\n            if ((typeof position === \"undefined\" ? \"undefined\" : _typeof(position)) != 'object') {\n                return false;\n            }\n\n            var movedX = void 0,\n                movedY = 0;\n            var elementPos = {};\n\n            if (position.x && !position.y) {\n                movedX = position.x - this._handlePointX;\n                elementPos.x = this.x + movedX;\n\n                this.setProps({ x: elementPos.x, _handlePointX: position.x });\n            } else if (position.y && !position.x) {\n                movedY = position.y - this._handlePointY;\n                elementPos.y = this.y + movedY;\n\n                this.setProps({ y: elementPos.y, _handlePointY: position.y });\n            } else if (position.y && position.x) {\n                movedX = position.x - this._handlePointX;\n                movedY = position.y - this._handlePointY;\n                elementPos.x = this.x + movedX;\n                elementPos.y = this.y + movedY;\n\n                this.setProps({ x: elementPos.x, y: elementPos.y, _handlePointX: position.x, _handlePointY: position.y });\n            } else {\n                return false;\n            }\n        }\n    }, {\n        key: \"getnoUseHeight\",\n        value: function getnoUseHeight() {\n            if (this.element.length > 0) {\n                var nowBigHeight = 0;\n                for (var i = 0; i < this.element.length; i++) {\n                    var y = this.element[i].y;\n                    var bigHeight = this.element[i].height;\n\n                    if (this.element[i + 1]) {\n                        if (this.element[i].height < this.element[i + 1].height && y == this.element[i + 1].y) {\n                            bigHeight = this.element[i + 1].height;\n                        }\n                        if (y != this.element[i + 1].y) {\n                            nowBigHeight += bigHeight;\n                            bigHeight = 0;\n                        }\n                    }\n                    if (bigHeight != 0 && nowBigHeight == 0) {\n                        nowBigHeight = bigHeight;\n                    }\n                }\n                return this.height - nowBigHeight;\n            } else {\n                return this.height;\n            }\n        }\n    }]);\n\n    return layout;\n}();\n\nexports.default = layout;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2Zvcm0vTGF5b3V0L2xheW91dC5qcz8xY2Y1Il0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIGxheW91dHtcclxuICAgIGNvbnN0cnVjdG9yKCl7XHJcbiAgICAgICAgdGhpcy5rZXk9XCJcIjtcclxuICAgICAgICB0aGlzLndpZHRoPTMwMDtcclxuICAgICAgICB0aGlzLmhlaWdodD0yMDA7XHJcbiAgICAgICAgdGhpcy5pZD1cIlwiO1xyXG4gICAgICAgIHRoaXMueD0wO1xyXG4gICAgICAgIHRoaXMueT0wO1xyXG4gICAgICAgIHRoaXMudGx4PTA7Ly/orrDlvZXlt6bkuIrop5LnmoTlnZDmoIdcclxuICAgICAgICB0aGlzLnRseT0wO1xyXG4gICAgICAgIHRoaXMuYmx4PTA7XHJcbiAgICAgICAgdGhpcy5ibHk9MDtcclxuICAgICAgICB0aGlzLmxlZnQ9MDsvL+aWueS+v+WIneWni+WMluaLv+WIsOeahOaVsOaNruWtmOWCqFxyXG4gICAgICAgIHRoaXMudG9wPTA7XHJcbiAgICAgICAgdGhpcy54QnlFbGVtZW50PTA7XHJcbiAgICAgICAgdGhpcy55QnlFbGVtZW50PTA7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlUG9pbnRYPTA7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlUG9pbnRZPTA7XHJcbiAgICAgICAgdGhpcy5ib3JkZXJXaWR0aD0xO1xyXG4gICAgfVxyXG4gICAgc2V0UHJvcHMobmV3UHJvcHMsIGlzQ2xvbmVQcm9wcyA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYoaXNDbG9uZVByb3BzKSB7XHJcbiAgICAgICAgICAgIHRoaXMub2xkUHJvcHMgPSB0aGlzLmNsb25lUHJvcHModGhpcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKChuZXdQcm9wc1snZm9udCddIHx8IG5ld1Byb3BzWydwYXJhZ3JhcGgnXSkgJiYgIW5ld1Byb3BzWydtb2RlJ10pIHtcclxuICAgICAgICAgICAgaWYobmV3UHJvcHNbJ2ZvbnQnXSkge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmZvbnQsIG5ld1Byb3BzWydmb250J10pO1x0XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZihuZXdQcm9wc1sncGFyYWdyYXBoJ10pIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5wYXJhZ3JhcGgsIG5ld1Byb3BzWydwYXJhZ3JhcGgnXSk7XHRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8v5rOo5oSP77yB5q2k5pa55rOV5a+55LiA5bGC5qCR57uT5p6E5ZCI5bm25rKh6Zeu6aKY77yM5L2G6Iul5piv5a+56LGh6YeM55qE5bGe5oCn6L+Y5piv5LiA5Liq5a+56LGh77yM5YiZ6L+b6KGM5ZCI5bm25pe277yM6K+l5bGe5oCn6YeM55qE5a+56LGh5Lya6KKr6KaG55uW6ICM6Z2e5ZCI5bm25pON5L2cXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgbmV3UHJvcHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAvL+WcqOWxnuaAp+WQiOW5tuWujOaIkOWQjuWNleeLrOWvueebuOWvueS6jueUu+W4g+W3puS4iuinkueahHkodGhpcy55KeWSjOaJk+WNsOaXtui+k+WHuueahHkodGhpcy5wcmludGVkWSnov5vooYzosIPmlbRcclxuICAgICAgICBpZih0eXBlb2YgbmV3UHJvcHMucHJpbnRlZFkgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJpbnRlZFkgPSB0aGlzLnkgLSB0aGlzLnByZXZDaHVua0Jhc2VsaW5lO1x0XHJcbiAgICAgICAgfSBlbHNlICB7XHJcbiAgICAgICAgICAgIHRoaXMueSA9IHRoaXMucHJldkNodW5rQmFzZWxpbmUgKyB0aGlzLnByaW50ZWRZO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldFByb3AocHJvcCkge1xyXG5cdFx0aWYodGhpc1twcm9wXSAhPT0gbnVsbCAmJiB0aGlzW3Byb3BdICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdCAgcmV0dXJuIHRoaXNbcHJvcF07XHRcclxuXHRcdH0gZWxzZSBpZih0aGlzLmZvbnRbcHJvcF0gIT09IG51bGwgJiYgdGhpcy5mb250W3Byb3BdICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdCAgcmV0dXJuIHRoaXMuZm9udFtwcm9wXTtcclxuXHRcdH0gZWxzZSBpZih0aGlzLnBhcmFncmFwaFtwcm9wXSAhPT0gbnVsbCAmJiB0aGlzLnBhcmFncmFwaFtwcm9wXSAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLnBhcmFncmFwaFtwcm9wXTtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0cmV0dXJuICh1bmRlZmluZWQpO1xyXG4gICAgfVxyXG4gICAgaXNTZWxlY3RlZCh4LCB5KSB7XHJcblx0XHRpZih4ID49IHRoaXMueCAmJiB4IDw9IHRoaXMueCArIHRoaXMud2lkdGggJiYgeSA+PSB0aGlzLnkgJiYgeSA8PSB0aGlzLnkgKyB0aGlzLmhlaWdodCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuICAgIGNoYW5nZUVsZW1lbnRQb3NpdGlvbihwb3NpdGlvbikge1xyXG5cdFx0XHJcblx0XHRpZih0eXBlb2YgcG9zaXRpb24gIT0gJ29iamVjdCcpIHtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHRsZXQgbW92ZWRYLCBtb3ZlZFkgPSAwO1xyXG5cdFx0bGV0IGVsZW1lbnRQb3MgPSB7fTtcclxuXHJcblx0XHRpZihwb3NpdGlvbi54ICYmICFwb3NpdGlvbi55KSB7XHJcblx0XHRcdG1vdmVkWCA9IHBvc2l0aW9uLnggLSB0aGlzLl9oYW5kbGVQb2ludFg7XHJcblx0XHRcdGVsZW1lbnRQb3MueCA9IHRoaXMueCArIG1vdmVkWDtcclxuXHRcdFx0XHJcblx0XHRcdHRoaXMuc2V0UHJvcHMoe3g6IGVsZW1lbnRQb3MueCwgX2hhbmRsZVBvaW50WDogcG9zaXRpb24ueH0pO1xyXG5cdFx0fSBlbHNlIGlmKHBvc2l0aW9uLnkgJiYgIXBvc2l0aW9uLngpIHtcclxuXHRcdFx0bW92ZWRZID0gcG9zaXRpb24ueSAtIHRoaXMuX2hhbmRsZVBvaW50WTtcclxuXHRcdFx0ZWxlbWVudFBvcy55ID0gdGhpcy55ICsgbW92ZWRZO1xyXG5cdFx0XHRcclxuXHRcdFx0dGhpcy5zZXRQcm9wcyh7eTogZWxlbWVudFBvcy55LCBfaGFuZGxlUG9pbnRZOiBwb3NpdGlvbi55fSk7XHJcblx0XHR9IGVsc2UgaWYocG9zaXRpb24ueSAmJiBwb3NpdGlvbi54KSB7XHJcblx0XHRcdG1vdmVkWCA9IHBvc2l0aW9uLnggLSB0aGlzLl9oYW5kbGVQb2ludFg7XHJcblx0XHRcdG1vdmVkWSA9IHBvc2l0aW9uLnkgLSB0aGlzLl9oYW5kbGVQb2ludFk7XHJcblx0XHRcdGVsZW1lbnRQb3MueCA9IHRoaXMueCArIG1vdmVkWDtcclxuXHRcdFx0ZWxlbWVudFBvcy55ID0gdGhpcy55ICsgbW92ZWRZO1xyXG5cdFx0XHRcclxuXHRcdFx0dGhpcy5zZXRQcm9wcyh7eDogZWxlbWVudFBvcy54LCB5OiBlbGVtZW50UG9zLnksIF9oYW5kbGVQb2ludFg6IHBvc2l0aW9uLngsIF9oYW5kbGVQb2ludFk6IHBvc2l0aW9uLnl9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuICAgIH1cclxuICAgIGdldG5vVXNlSGVpZ2h0KCl7XHJcbiAgICAgICAgaWYodGhpcy5lbGVtZW50Lmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgbGV0IG5vd0JpZ0hlaWdodD0wO1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMuZWxlbWVudC5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCB5PXRoaXMuZWxlbWVudFtpXS55O1xyXG4gICAgICAgICAgICAgICAgbGV0IGJpZ0hlaWdodD10aGlzLmVsZW1lbnRbaV0uaGVpZ2h0O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFtpKzFdKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbaV0uaGVpZ2h0PHRoaXMuZWxlbWVudFtpKzFdLmhlaWdodCAmJiB5PT10aGlzLmVsZW1lbnRbaSsxXS55KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmlnSGVpZ2h0PXRoaXMuZWxlbWVudFtpKzFdLmhlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoeSE9dGhpcy5lbGVtZW50W2krMV0ueSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vd0JpZ0hlaWdodCs9YmlnSGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiaWdIZWlnaHQ9MDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihiaWdIZWlnaHQhPTAgJiYgbm93QmlnSGVpZ2h0PT0wKXtcclxuICAgICAgICAgICAgICAgICAgICBub3dCaWdIZWlnaHQ9YmlnSGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oZWlnaHQtbm93QmlnSGVpZ2h0O1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgbGF5b3V0O1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9MYXlvdXQvbGF5b3V0LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///21\n");

/***/ }),
/* 22 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Informationfeedbackfield = exports.Flowreminderhistoryfield = exports.Flowhistoryfield = exports.Htmleditorfield = exports.Genericwordfield = exports.Mapfield = exports.Qrcodefield = exports.Weixinrecordfield = exports.Weixingpsfield = exports.Onlinetakephotofield = exports.Imageuploadfield = exports.Attachment = exports.Surveyfield = exports.Includefield = exports.Calctextfield = exports.Tabfield = exports.Viewdialogfield = exports.Button = exports.Suggestfield = exports.Userfield = exports.Treedepartmentfield = exports.Selectaboutfield = exports.Dept = exports.Select = exports.Data = exports.Checkbox = exports.Radio = exports.Textarea = exports.Input = exports.Element = undefined;\n\nvar _Element = __webpack_require__(3);\n\nvar _Element2 = _interopRequireDefault(_Element);\n\nvar _Input = __webpack_require__(97);\n\nvar _Input2 = _interopRequireDefault(_Input);\n\nvar _Textarea = __webpack_require__(98);\n\nvar _Textarea2 = _interopRequireDefault(_Textarea);\n\nvar _Radio = __webpack_require__(99);\n\nvar _Radio2 = _interopRequireDefault(_Radio);\n\nvar _Checkbox = __webpack_require__(100);\n\nvar _Checkbox2 = _interopRequireDefault(_Checkbox);\n\nvar _Data = __webpack_require__(101);\n\nvar _Data2 = _interopRequireDefault(_Data);\n\nvar _Select = __webpack_require__(102);\n\nvar _Select2 = _interopRequireDefault(_Select);\n\nvar _Dept = __webpack_require__(103);\n\nvar _Dept2 = _interopRequireDefault(_Dept);\n\nvar _Selectaboutfield = __webpack_require__(104);\n\nvar _Selectaboutfield2 = _interopRequireDefault(_Selectaboutfield);\n\nvar _Treedepartmentfield = __webpack_require__(105);\n\nvar _Treedepartmentfield2 = _interopRequireDefault(_Treedepartmentfield);\n\nvar _Userfield = __webpack_require__(106);\n\nvar _Userfield2 = _interopRequireDefault(_Userfield);\n\nvar _Suggestfield = __webpack_require__(107);\n\nvar _Suggestfield2 = _interopRequireDefault(_Suggestfield);\n\nvar _Button = __webpack_require__(108);\n\nvar _Button2 = _interopRequireDefault(_Button);\n\nvar _Viewdialogfield = __webpack_require__(109);\n\nvar _Viewdialogfield2 = _interopRequireDefault(_Viewdialogfield);\n\nvar _Tabfield = __webpack_require__(110);\n\nvar _Tabfield2 = _interopRequireDefault(_Tabfield);\n\nvar _Calctextfield = __webpack_require__(111);\n\nvar _Calctextfield2 = _interopRequireDefault(_Calctextfield);\n\nvar _Includefield = __webpack_require__(112);\n\nvar _Includefield2 = _interopRequireDefault(_Includefield);\n\nvar _Surveyfield = __webpack_require__(113);\n\nvar _Surveyfield2 = _interopRequireDefault(_Surveyfield);\n\nvar _Attachment = __webpack_require__(114);\n\nvar _Attachment2 = _interopRequireDefault(_Attachment);\n\nvar _Imageuploadfield = __webpack_require__(115);\n\nvar _Imageuploadfield2 = _interopRequireDefault(_Imageuploadfield);\n\nvar _Onlinetakephotofield = __webpack_require__(116);\n\nvar _Onlinetakephotofield2 = _interopRequireDefault(_Onlinetakephotofield);\n\nvar _Weixingpsfield = __webpack_require__(117);\n\nvar _Weixingpsfield2 = _interopRequireDefault(_Weixingpsfield);\n\nvar _Weixinrecordfield = __webpack_require__(118);\n\nvar _Weixinrecordfield2 = _interopRequireDefault(_Weixinrecordfield);\n\nvar _Qrcodefield = __webpack_require__(119);\n\nvar _Qrcodefield2 = _interopRequireDefault(_Qrcodefield);\n\nvar _Mapfield = __webpack_require__(120);\n\nvar _Mapfield2 = _interopRequireDefault(_Mapfield);\n\nvar _Genericwordfield = __webpack_require__(121);\n\nvar _Genericwordfield2 = _interopRequireDefault(_Genericwordfield);\n\nvar _Htmleditorfield = __webpack_require__(122);\n\nvar _Htmleditorfield2 = _interopRequireDefault(_Htmleditorfield);\n\nvar _Flowhistoryfield = __webpack_require__(123);\n\nvar _Flowhistoryfield2 = _interopRequireDefault(_Flowhistoryfield);\n\nvar _Flowreminderhistoryfield = __webpack_require__(124);\n\nvar _Flowreminderhistoryfield2 = _interopRequireDefault(_Flowreminderhistoryfield);\n\nvar _Informationfeedbackfield = __webpack_require__(125);\n\nvar _Informationfeedbackfield2 = _interopRequireDefault(_Informationfeedbackfield);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Element = _Element2.default;\nexports.Input = _Input2.default;\nexports.Textarea = _Textarea2.default;\nexports.Radio = _Radio2.default;\nexports.Checkbox = _Checkbox2.default;\nexports.Data = _Data2.default;\nexports.Select = _Select2.default;\nexports.Dept = _Dept2.default;\nexports.Selectaboutfield = _Selectaboutfield2.default;\nexports.Treedepartmentfield = _Treedepartmentfield2.default;\nexports.Userfield = _Userfield2.default;\nexports.Suggestfield = _Suggestfield2.default;\nexports.Button = _Button2.default;\nexports.Viewdialogfield = _Viewdialogfield2.default;\nexports.Tabfield = _Tabfield2.default;\nexports.Calctextfield = _Calctextfield2.default;\nexports.Includefield = _Includefield2.default;\nexports.Surveyfield = _Surveyfield2.default;\nexports.Attachment = _Attachment2.default;\nexports.Imageuploadfield = _Imageuploadfield2.default;\nexports.Onlinetakephotofield = _Onlinetakephotofield2.default;\nexports.Weixingpsfield = _Weixingpsfield2.default;\nexports.Weixinrecordfield = _Weixinrecordfield2.default;\nexports.Qrcodefield = _Qrcodefield2.default;\nexports.Mapfield = _Mapfield2.default;\nexports.Genericwordfield = _Genericwordfield2.default;\nexports.Htmleditorfield = _Htmleditorfield2.default;\nexports.Flowhistoryfield = _Flowhistoryfield2.default;\nexports.Flowreminderhistoryfield = _Flowreminderhistoryfield2.default;\nexports.Informationfeedbackfield = _Informationfeedbackfield2.default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2Zvcm0vY29tcG9uZW50L2luZGV4LmpzPzcwM2IiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVsZW1lbnQgZnJvbSBcIi4vRWxlbWVudFwiO1xyXG5pbXBvcnQgSW5wdXQgZnJvbSBcIi4vSW5wdXRcIjtcclxuaW1wb3J0IFRleHRhcmVhIGZyb20gXCIuL1RleHRhcmVhXCI7XHJcbmltcG9ydCBSYWRpbyBmcm9tIFwiLi9SYWRpb1wiO1xyXG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIi4vQ2hlY2tib3hcIjtcclxuaW1wb3J0IERhdGEgZnJvbSBcIi4vRGF0YVwiO1xyXG5pbXBvcnQgU2VsZWN0IGZyb20gXCIuL1NlbGVjdFwiO1xyXG5pbXBvcnQgRGVwdCBmcm9tIFwiLi9EZXB0XCI7XHJcbmltcG9ydCBTZWxlY3RhYm91dGZpZWxkIGZyb20gXCIuL1NlbGVjdGFib3V0ZmllbGRcIjtcclxuaW1wb3J0IFRyZWVkZXBhcnRtZW50ZmllbGQgZnJvbSBcIi4vVHJlZWRlcGFydG1lbnRmaWVsZFwiO1xyXG5pbXBvcnQgVXNlcmZpZWxkIGZyb20gXCIuL1VzZXJmaWVsZFwiO1xyXG5pbXBvcnQgU3VnZ2VzdGZpZWxkIGZyb20gXCIuL1N1Z2dlc3RmaWVsZFwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuL0J1dHRvblwiO1xyXG5pbXBvcnQgVmlld2RpYWxvZ2ZpZWxkIGZyb20gXCIuL1ZpZXdkaWFsb2dmaWVsZFwiO1xyXG5pbXBvcnQgVGFiZmllbGQgZnJvbSBcIi4vVGFiZmllbGRcIjtcclxuaW1wb3J0IENhbGN0ZXh0ZmllbGQgZnJvbSBcIi4vQ2FsY3RleHRmaWVsZFwiO1xyXG5pbXBvcnQgSW5jbHVkZWZpZWxkIGZyb20gXCIuL0luY2x1ZGVmaWVsZFwiO1xyXG5pbXBvcnQgU3VydmV5ZmllbGQgZnJvbSBcIi4vU3VydmV5ZmllbGRcIjtcclxuaW1wb3J0IEF0dGFjaG1lbnQgZnJvbSBcIi4vQXR0YWNobWVudFwiO1xyXG5pbXBvcnQgSW1hZ2V1cGxvYWRmaWVsZCBmcm9tIFwiLi9JbWFnZXVwbG9hZGZpZWxkXCI7XHJcbmltcG9ydCBPbmxpbmV0YWtlcGhvdG9maWVsZCBmcm9tIFwiLi9PbmxpbmV0YWtlcGhvdG9maWVsZFwiO1xyXG5pbXBvcnQgV2VpeGluZ3BzZmllbGQgZnJvbSBcIi4vV2VpeGluZ3BzZmllbGRcIjtcclxuaW1wb3J0IFdlaXhpbnJlY29yZGZpZWxkIGZyb20gXCIuL1dlaXhpbnJlY29yZGZpZWxkXCI7XHJcbmltcG9ydCBRcmNvZGVmaWVsZCBmcm9tIFwiLi9RcmNvZGVmaWVsZFwiO1xyXG5pbXBvcnQgTWFwZmllbGQgZnJvbSBcIi4vTWFwZmllbGRcIjtcclxuaW1wb3J0IEdlbmVyaWN3b3JkZmllbGQgZnJvbSBcIi4vR2VuZXJpY3dvcmRmaWVsZFwiO1xyXG5pbXBvcnQgSHRtbGVkaXRvcmZpZWxkIGZyb20gXCIuL0h0bWxlZGl0b3JmaWVsZFwiO1xyXG5pbXBvcnQgRmxvd2hpc3RvcnlmaWVsZCBmcm9tIFwiLi9GbG93aGlzdG9yeWZpZWxkXCI7XHJcbmltcG9ydCBGbG93cmVtaW5kZXJoaXN0b3J5ZmllbGQgZnJvbSBcIi4vRmxvd3JlbWluZGVyaGlzdG9yeWZpZWxkXCI7XHJcbmltcG9ydCBJbmZvcm1hdGlvbmZlZWRiYWNrZmllbGQgZnJvbSBcIi4vSW5mb3JtYXRpb25mZWVkYmFja2ZpZWxkXCI7XHJcblxyXG5leHBvcnQge1xyXG4gIEVsZW1lbnQsXHJcbiAgSW5wdXQsXHJcbiAgVGV4dGFyZWEsXHJcbiAgUmFkaW8sXHJcbiAgQ2hlY2tib3gsXHJcbiAgRGF0YSxcclxuICBTZWxlY3QsXHJcbiAgRGVwdCxcclxuICBTZWxlY3RhYm91dGZpZWxkLFxyXG4gIFRyZWVkZXBhcnRtZW50ZmllbGQsXHJcbiAgVXNlcmZpZWxkLFxyXG4gIFN1Z2dlc3RmaWVsZCxcclxuICBCdXR0b24sXHJcbiAgVmlld2RpYWxvZ2ZpZWxkLFxyXG4gIFRhYmZpZWxkLFxyXG4gIENhbGN0ZXh0ZmllbGQsXHJcbiAgSW5jbHVkZWZpZWxkLFxyXG4gIFN1cnZleWZpZWxkLFxyXG4gIEF0dGFjaG1lbnQsXHJcbiAgSW1hZ2V1cGxvYWRmaWVsZCxcclxuICBPbmxpbmV0YWtlcGhvdG9maWVsZCxcclxuICBXZWl4aW5ncHNmaWVsZCxcclxuICBXZWl4aW5yZWNvcmRmaWVsZCxcclxuICBRcmNvZGVmaWVsZCxcclxuICBNYXBmaWVsZCxcclxuICBHZW5lcmljd29yZGZpZWxkLFxyXG4gIEh0bWxlZGl0b3JmaWVsZCxcclxuICBGbG93aGlzdG9yeWZpZWxkLFxyXG4gIEZsb3dyZW1pbmRlcmhpc3RvcnlmaWVsZCxcclxuICBJbmZvcm1hdGlvbmZlZWRiYWNrZmllbGRcclxufTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9mb3JtL2NvbXBvbmVudC9pbmRleC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///22\n");

/***/ }),
/* 23 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("/* WEBPACK VAR INJECTION */(function(process) {\n\nif (!process.version ||\n    process.version.indexOf('v0.') === 0 ||\n    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n  module.exports = { nextTick: nextTick };\n} else {\n  module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('\"callback\" argument must be a function');\n  }\n  var len = arguments.length;\n  var args, i;\n  switch (len) {\n  case 0:\n  case 1:\n    return process.nextTick(fn);\n  case 2:\n    return process.nextTick(function afterTickOne() {\n      fn.call(null, arg1);\n    });\n  case 3:\n    return process.nextTick(function afterTickTwo() {\n      fn.call(null, arg1, arg2);\n    });\n  case 4:\n    return process.nextTick(function afterTickThree() {\n      fn.call(null, arg1, arg2, arg3);\n    });\n  default:\n    args = new Array(len - 1);\n    i = 0;\n    while (i < args.length) {\n      args[i++] = arguments[i];\n    }\n    return process.nextTick(function afterTick() {\n      fn.apply(null, args);\n    });\n  }\n}\n\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(10)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy1uZXh0aWNrLWFyZ3MvaW5kZXguanM/Y2E5OSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmlmICghcHJvY2Vzcy52ZXJzaW9uIHx8XG4gICAgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YwLicpID09PSAwIHx8XG4gICAgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YxLicpID09PSAwICYmIHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCd2MS44LicpICE9PSAwKSB7XG4gIG1vZHVsZS5leHBvcnRzID0geyBuZXh0VGljazogbmV4dFRpY2sgfTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcHJvY2Vzc1xufVxuXG5mdW5jdGlvbiBuZXh0VGljayhmbiwgYXJnMSwgYXJnMiwgYXJnMykge1xuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJjYWxsYmFja1wiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB9XG4gIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgYXJncywgaTtcbiAgc3dpdGNoIChsZW4pIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZm4pO1xuICBjYXNlIDI6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrT25lKCkge1xuICAgICAgZm4uY2FsbChudWxsLCBhcmcxKTtcbiAgICB9KTtcbiAgY2FzZSAzOlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGlja1R3bygpIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSwgYXJnMik7XG4gICAgfSk7XG4gIGNhc2UgNDpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tUaHJlZSgpIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSwgYXJnMiwgYXJnMyk7XG4gICAgfSk7XG4gIGRlZmF1bHQ6XG4gICAgYXJncyA9IG5ldyBBcnJheShsZW4gLSAxKTtcbiAgICBpID0gMDtcbiAgICB3aGlsZSAoaSA8IGFyZ3MubGVuZ3RoKSB7XG4gICAgICBhcmdzW2krK10gPSBhcmd1bWVudHNbaV07XG4gICAgfVxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGljaygpIHtcbiAgICAgIGZuLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH0pO1xuICB9XG59XG5cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MtbmV4dGljay1hcmdzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///23\n");

/***/ }),
/* 24 */
/***/ (function(module, exports, __webpack_require__) {

eval("// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = __webpack_require__(1).Buffer\n\nfunction asUInt32Array (buf) {\n  if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n  var len = (buf.length / 4) | 0\n  var out = new Array(len)\n\n  for (var i = 0; i < len; i++) {\n    out[i] = buf.readUInt32BE(i * 4)\n  }\n\n  return out\n}\n\nfunction scrubVec (v) {\n  for (var i = 0; i < v.length; v++) {\n    v[i] = 0\n  }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n  var SUB_MIX0 = SUB_MIX[0]\n  var SUB_MIX1 = SUB_MIX[1]\n  var SUB_MIX2 = SUB_MIX[2]\n  var SUB_MIX3 = SUB_MIX[3]\n\n  var s0 = M[0] ^ keySchedule[0]\n  var s1 = M[1] ^ keySchedule[1]\n  var s2 = M[2] ^ keySchedule[2]\n  var s3 = M[3] ^ keySchedule[3]\n  var t0, t1, t2, t3\n  var ksRow = 4\n\n  for (var round = 1; round < nRounds; round++) {\n    t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n    t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n    t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n    t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n    s0 = t0\n    s1 = t1\n    s2 = t2\n    s3 = t3\n  }\n\n  t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n  t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n  t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n  t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n  t0 = t0 >>> 0\n  t1 = t1 >>> 0\n  t2 = t2 >>> 0\n  t3 = t3 >>> 0\n\n  return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n  // Compute double table\n  var d = new Array(256)\n  for (var j = 0; j < 256; j++) {\n    if (j < 128) {\n      d[j] = j << 1\n    } else {\n      d[j] = (j << 1) ^ 0x11b\n    }\n  }\n\n  var SBOX = []\n  var INV_SBOX = []\n  var SUB_MIX = [[], [], [], []]\n  var INV_SUB_MIX = [[], [], [], []]\n\n  // Walk GF(2^8)\n  var x = 0\n  var xi = 0\n  for (var i = 0; i < 256; ++i) {\n    // Compute sbox\n    var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n    sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n    SBOX[x] = sx\n    INV_SBOX[sx] = x\n\n    // Compute multiplication\n    var x2 = d[x]\n    var x4 = d[x2]\n    var x8 = d[x4]\n\n    // Compute sub bytes, mix columns tables\n    var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n    SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n    SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n    SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n    SUB_MIX[3][x] = t\n\n    // Compute inv sub bytes, inv mix columns tables\n    t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n    INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n    INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n    INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n    INV_SUB_MIX[3][sx] = t\n\n    if (x === 0) {\n      x = xi = 1\n    } else {\n      x = x2 ^ d[d[d[x8 ^ x2]]]\n      xi ^= d[d[xi]]\n    }\n  }\n\n  return {\n    SBOX: SBOX,\n    INV_SBOX: INV_SBOX,\n    SUB_MIX: SUB_MIX,\n    INV_SUB_MIX: INV_SUB_MIX\n  }\n})()\n\nfunction AES (key) {\n  this._key = asUInt32Array(key)\n  this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n  var keyWords = this._key\n  var keySize = keyWords.length\n  var nRounds = keySize + 6\n  var ksRows = (nRounds + 1) * 4\n\n  var keySchedule = []\n  for (var k = 0; k < keySize; k++) {\n    keySchedule[k] = keyWords[k]\n  }\n\n  for (k = keySize; k < ksRows; k++) {\n    var t = keySchedule[k - 1]\n\n    if (k % keySize === 0) {\n      t = (t << 8) | (t >>> 24)\n      t =\n        (G.SBOX[t >>> 24] << 24) |\n        (G.SBOX[(t >>> 16) & 0xff] << 16) |\n        (G.SBOX[(t >>> 8) & 0xff] << 8) |\n        (G.SBOX[t & 0xff])\n\n      t ^= RCON[(k / keySize) | 0] << 24\n    } else if (keySize > 6 && k % keySize === 4) {\n      t =\n        (G.SBOX[t >>> 24] << 24) |\n        (G.SBOX[(t >>> 16) & 0xff] << 16) |\n        (G.SBOX[(t >>> 8) & 0xff] << 8) |\n        (G.SBOX[t & 0xff])\n    }\n\n    keySchedule[k] = keySchedule[k - keySize] ^ t\n  }\n\n  var invKeySchedule = []\n  for (var ik = 0; ik < ksRows; ik++) {\n    var ksR = ksRows - ik\n    var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n    if (ik < 4 || ksR <= 4) {\n      invKeySchedule[ik] = tt\n    } else {\n      invKeySchedule[ik] =\n        G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n        G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n        G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n        G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n    }\n  }\n\n  this._nRounds = nRounds\n  this._keySchedule = keySchedule\n  this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n  M = asUInt32Array(M)\n  return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n  var out = this.encryptBlockRaw(M)\n  var buf = Buffer.allocUnsafe(16)\n  buf.writeUInt32BE(out[0], 0)\n  buf.writeUInt32BE(out[1], 4)\n  buf.writeUInt32BE(out[2], 8)\n  buf.writeUInt32BE(out[3], 12)\n  return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n  M = asUInt32Array(M)\n\n  // swap\n  var m1 = M[1]\n  M[1] = M[3]\n  M[3] = m1\n\n  var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n  var buf = Buffer.allocUnsafe(16)\n  buf.writeUInt32BE(out[0], 0)\n  buf.writeUInt32BE(out[3], 4)\n  buf.writeUInt32BE(out[2], 8)\n  buf.writeUInt32BE(out[1], 12)\n  return buf\n}\n\nAES.prototype.scrub = function () {\n  scrubVec(this._keySchedule)\n  scrubVec(this._invKeySchedule)\n  scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYWVzLmpzPzA0NDYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gYmFzZWQgb24gdGhlIGFlcyBpbXBsaW1lbnRhdGlvbiBpbiB0cmlwbGUgc2VjXG4vLyBodHRwczovL2dpdGh1Yi5jb20va2V5YmFzZS90cmlwbGVzZWNcbi8vIHdoaWNoIGlzIGluIHR1cm4gYmFzZWQgb24gdGhlIG9uZSBmcm9tIGNyeXB0by1qc1xuLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jcnlwdG8tanMvXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG5mdW5jdGlvbiBhc1VJbnQzMkFycmF5IChidWYpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgYnVmID0gQnVmZmVyLmZyb20oYnVmKVxuXG4gIHZhciBsZW4gPSAoYnVmLmxlbmd0aCAvIDQpIHwgMFxuICB2YXIgb3V0ID0gbmV3IEFycmF5KGxlbilcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgb3V0W2ldID0gYnVmLnJlYWRVSW50MzJCRShpICogNClcbiAgfVxuXG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gc2NydWJWZWMgKHYpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgdisrKSB7XG4gICAgdltpXSA9IDBcbiAgfVxufVxuXG5mdW5jdGlvbiBjcnlwdEJsb2NrIChNLCBrZXlTY2hlZHVsZSwgU1VCX01JWCwgU0JPWCwgblJvdW5kcykge1xuICB2YXIgU1VCX01JWDAgPSBTVUJfTUlYWzBdXG4gIHZhciBTVUJfTUlYMSA9IFNVQl9NSVhbMV1cbiAgdmFyIFNVQl9NSVgyID0gU1VCX01JWFsyXVxuICB2YXIgU1VCX01JWDMgPSBTVUJfTUlYWzNdXG5cbiAgdmFyIHMwID0gTVswXSBeIGtleVNjaGVkdWxlWzBdXG4gIHZhciBzMSA9IE1bMV0gXiBrZXlTY2hlZHVsZVsxXVxuICB2YXIgczIgPSBNWzJdIF4ga2V5U2NoZWR1bGVbMl1cbiAgdmFyIHMzID0gTVszXSBeIGtleVNjaGVkdWxlWzNdXG4gIHZhciB0MCwgdDEsIHQyLCB0M1xuICB2YXIga3NSb3cgPSA0XG5cbiAgZm9yICh2YXIgcm91bmQgPSAxOyByb3VuZCA8IG5Sb3VuZHM7IHJvdW5kKyspIHtcbiAgICB0MCA9IFNVQl9NSVgwW3MwID4+PiAyNF0gXiBTVUJfTUlYMVsoczEgPj4+IDE2KSAmIDB4ZmZdIF4gU1VCX01JWDJbKHMyID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWDNbczMgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDEgPSBTVUJfTUlYMFtzMSA+Pj4gMjRdIF4gU1VCX01JWDFbKHMyID4+PiAxNikgJiAweGZmXSBeIFNVQl9NSVgyWyhzMyA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVgzW3MwICYgMHhmZl0gXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICAgIHQyID0gU1VCX01JWDBbczIgPj4+IDI0XSBeIFNVQl9NSVgxWyhzMyA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYMlsoczAgPj4+IDgpICYgMHhmZl0gXiBTVUJfTUlYM1tzMSAmIDB4ZmZdIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgICB0MyA9IFNVQl9NSVgwW3MzID4+PiAyNF0gXiBTVUJfTUlYMVsoczAgPj4+IDE2KSAmIDB4ZmZdIF4gU1VCX01JWDJbKHMxID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWDNbczIgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgczAgPSB0MFxuICAgIHMxID0gdDFcbiAgICBzMiA9IHQyXG4gICAgczMgPSB0M1xuICB9XG5cbiAgdDAgPSAoKFNCT1hbczAgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczEgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMiA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczMgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICB0MSA9ICgoU0JPWFtzMSA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMiA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMzID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMCAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gIHQyID0gKChTQk9YW3MyID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMzID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczAgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MxICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgdDMgPSAoKFNCT1hbczMgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczAgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMSA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczIgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICB0MCA9IHQwID4+PiAwXG4gIHQxID0gdDEgPj4+IDBcbiAgdDIgPSB0MiA+Pj4gMFxuICB0MyA9IHQzID4+PiAwXG5cbiAgcmV0dXJuIFt0MCwgdDEsIHQyLCB0M11cbn1cblxuLy8gQUVTIGNvbnN0YW50c1xudmFyIFJDT04gPSBbMHgwMCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgxYiwgMHgzNl1cbnZhciBHID0gKGZ1bmN0aW9uICgpIHtcbiAgLy8gQ29tcHV0ZSBkb3VibGUgdGFibGVcbiAgdmFyIGQgPSBuZXcgQXJyYXkoMjU2KVxuICBmb3IgKHZhciBqID0gMDsgaiA8IDI1NjsgaisrKSB7XG4gICAgaWYgKGogPCAxMjgpIHtcbiAgICAgIGRbal0gPSBqIDw8IDFcbiAgICB9IGVsc2Uge1xuICAgICAgZFtqXSA9IChqIDw8IDEpIF4gMHgxMWJcbiAgICB9XG4gIH1cblxuICB2YXIgU0JPWCA9IFtdXG4gIHZhciBJTlZfU0JPWCA9IFtdXG4gIHZhciBTVUJfTUlYID0gW1tdLCBbXSwgW10sIFtdXVxuICB2YXIgSU5WX1NVQl9NSVggPSBbW10sIFtdLCBbXSwgW11dXG5cbiAgLy8gV2FsayBHRigyXjgpXG4gIHZhciB4ID0gMFxuICB2YXIgeGkgPSAwXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpIHtcbiAgICAvLyBDb21wdXRlIHNib3hcbiAgICB2YXIgc3ggPSB4aSBeICh4aSA8PCAxKSBeICh4aSA8PCAyKSBeICh4aSA8PCAzKSBeICh4aSA8PCA0KVxuICAgIHN4ID0gKHN4ID4+PiA4KSBeIChzeCAmIDB4ZmYpIF4gMHg2M1xuICAgIFNCT1hbeF0gPSBzeFxuICAgIElOVl9TQk9YW3N4XSA9IHhcblxuICAgIC8vIENvbXB1dGUgbXVsdGlwbGljYXRpb25cbiAgICB2YXIgeDIgPSBkW3hdXG4gICAgdmFyIHg0ID0gZFt4Ml1cbiAgICB2YXIgeDggPSBkW3g0XVxuXG4gICAgLy8gQ29tcHV0ZSBzdWIgYnl0ZXMsIG1peCBjb2x1bW5zIHRhYmxlc1xuICAgIHZhciB0ID0gKGRbc3hdICogMHgxMDEpIF4gKHN4ICogMHgxMDEwMTAwKVxuICAgIFNVQl9NSVhbMF1beF0gPSAodCA8PCAyNCkgfCAodCA+Pj4gOClcbiAgICBTVUJfTUlYWzFdW3hdID0gKHQgPDwgMTYpIHwgKHQgPj4+IDE2KVxuICAgIFNVQl9NSVhbMl1beF0gPSAodCA8PCA4KSB8ICh0ID4+PiAyNClcbiAgICBTVUJfTUlYWzNdW3hdID0gdFxuXG4gICAgLy8gQ29tcHV0ZSBpbnYgc3ViIGJ5dGVzLCBpbnYgbWl4IGNvbHVtbnMgdGFibGVzXG4gICAgdCA9ICh4OCAqIDB4MTAxMDEwMSkgXiAoeDQgKiAweDEwMDAxKSBeICh4MiAqIDB4MTAxKSBeICh4ICogMHgxMDEwMTAwKVxuICAgIElOVl9TVUJfTUlYWzBdW3N4XSA9ICh0IDw8IDI0KSB8ICh0ID4+PiA4KVxuICAgIElOVl9TVUJfTUlYWzFdW3N4XSA9ICh0IDw8IDE2KSB8ICh0ID4+PiAxNilcbiAgICBJTlZfU1VCX01JWFsyXVtzeF0gPSAodCA8PCA4KSB8ICh0ID4+PiAyNClcbiAgICBJTlZfU1VCX01JWFszXVtzeF0gPSB0XG5cbiAgICBpZiAoeCA9PT0gMCkge1xuICAgICAgeCA9IHhpID0gMVxuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geDIgXiBkW2RbZFt4OCBeIHgyXV1dXG4gICAgICB4aSBePSBkW2RbeGldXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgU0JPWDogU0JPWCxcbiAgICBJTlZfU0JPWDogSU5WX1NCT1gsXG4gICAgU1VCX01JWDogU1VCX01JWCxcbiAgICBJTlZfU1VCX01JWDogSU5WX1NVQl9NSVhcbiAgfVxufSkoKVxuXG5mdW5jdGlvbiBBRVMgKGtleSkge1xuICB0aGlzLl9rZXkgPSBhc1VJbnQzMkFycmF5KGtleSlcbiAgdGhpcy5fcmVzZXQoKVxufVxuXG5BRVMuYmxvY2tTaXplID0gNCAqIDRcbkFFUy5rZXlTaXplID0gMjU2IC8gOFxuQUVTLnByb3RvdHlwZS5ibG9ja1NpemUgPSBBRVMuYmxvY2tTaXplXG5BRVMucHJvdG90eXBlLmtleVNpemUgPSBBRVMua2V5U2l6ZVxuQUVTLnByb3RvdHlwZS5fcmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBrZXlXb3JkcyA9IHRoaXMuX2tleVxuICB2YXIga2V5U2l6ZSA9IGtleVdvcmRzLmxlbmd0aFxuICB2YXIgblJvdW5kcyA9IGtleVNpemUgKyA2XG4gIHZhciBrc1Jvd3MgPSAoblJvdW5kcyArIDEpICogNFxuXG4gIHZhciBrZXlTY2hlZHVsZSA9IFtdXG4gIGZvciAodmFyIGsgPSAwOyBrIDwga2V5U2l6ZTsgaysrKSB7XG4gICAga2V5U2NoZWR1bGVba10gPSBrZXlXb3Jkc1trXVxuICB9XG5cbiAgZm9yIChrID0ga2V5U2l6ZTsgayA8IGtzUm93czsgaysrKSB7XG4gICAgdmFyIHQgPSBrZXlTY2hlZHVsZVtrIC0gMV1cblxuICAgIGlmIChrICUga2V5U2l6ZSA9PT0gMCkge1xuICAgICAgdCA9ICh0IDw8IDgpIHwgKHQgPj4+IDI0KVxuICAgICAgdCA9XG4gICAgICAgIChHLlNCT1hbdCA+Pj4gMjRdIDw8IDI0KSB8XG4gICAgICAgIChHLlNCT1hbKHQgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8XG4gICAgICAgIChHLlNCT1hbKHQgPj4+IDgpICYgMHhmZl0gPDwgOCkgfFxuICAgICAgICAoRy5TQk9YW3QgJiAweGZmXSlcblxuICAgICAgdCBePSBSQ09OWyhrIC8ga2V5U2l6ZSkgfCAwXSA8PCAyNFxuICAgIH0gZWxzZSBpZiAoa2V5U2l6ZSA+IDYgJiYgayAlIGtleVNpemUgPT09IDQpIHtcbiAgICAgIHQgPVxuICAgICAgICAoRy5TQk9YW3QgPj4+IDI0XSA8PCAyNCkgfFxuICAgICAgICAoRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXSA8PCAxNikgfFxuICAgICAgICAoRy5TQk9YWyh0ID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHxcbiAgICAgICAgKEcuU0JPWFt0ICYgMHhmZl0pXG4gICAgfVxuXG4gICAga2V5U2NoZWR1bGVba10gPSBrZXlTY2hlZHVsZVtrIC0ga2V5U2l6ZV0gXiB0XG4gIH1cblxuICB2YXIgaW52S2V5U2NoZWR1bGUgPSBbXVxuICBmb3IgKHZhciBpayA9IDA7IGlrIDwga3NSb3dzOyBpaysrKSB7XG4gICAgdmFyIGtzUiA9IGtzUm93cyAtIGlrXG4gICAgdmFyIHR0ID0ga2V5U2NoZWR1bGVba3NSIC0gKGlrICUgNCA/IDAgOiA0KV1cblxuICAgIGlmIChpayA8IDQgfHwga3NSIDw9IDQpIHtcbiAgICAgIGludktleVNjaGVkdWxlW2lrXSA9IHR0XG4gICAgfSBlbHNlIHtcbiAgICAgIGludktleVNjaGVkdWxlW2lrXSA9XG4gICAgICAgIEcuSU5WX1NVQl9NSVhbMF1bRy5TQk9YW3R0ID4+PiAyNF1dIF5cbiAgICAgICAgRy5JTlZfU1VCX01JWFsxXVtHLlNCT1hbKHR0ID4+PiAxNikgJiAweGZmXV0gXlxuICAgICAgICBHLklOVl9TVUJfTUlYWzJdW0cuU0JPWFsodHQgPj4+IDgpICYgMHhmZl1dIF5cbiAgICAgICAgRy5JTlZfU1VCX01JWFszXVtHLlNCT1hbdHQgJiAweGZmXV1cbiAgICB9XG4gIH1cblxuICB0aGlzLl9uUm91bmRzID0gblJvdW5kc1xuICB0aGlzLl9rZXlTY2hlZHVsZSA9IGtleVNjaGVkdWxlXG4gIHRoaXMuX2ludktleVNjaGVkdWxlID0gaW52S2V5U2NoZWR1bGVcbn1cblxuQUVTLnByb3RvdHlwZS5lbmNyeXB0QmxvY2tSYXcgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYXNVSW50MzJBcnJheShNKVxuICByZXR1cm4gY3J5cHRCbG9jayhNLCB0aGlzLl9rZXlTY2hlZHVsZSwgRy5TVUJfTUlYLCBHLlNCT1gsIHRoaXMuX25Sb3VuZHMpXG59XG5cbkFFUy5wcm90b3R5cGUuZW5jcnlwdEJsb2NrID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIG91dCA9IHRoaXMuZW5jcnlwdEJsb2NrUmF3KE0pXG4gIHZhciBidWYgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMTYpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFswXSwgMClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCA0KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMl0sIDgpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFszXSwgMTIpXG4gIHJldHVybiBidWZcbn1cblxuQUVTLnByb3RvdHlwZS5kZWNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYXNVSW50MzJBcnJheShNKVxuXG4gIC8vIHN3YXBcbiAgdmFyIG0xID0gTVsxXVxuICBNWzFdID0gTVszXVxuICBNWzNdID0gbTFcblxuICB2YXIgb3V0ID0gY3J5cHRCbG9jayhNLCB0aGlzLl9pbnZLZXlTY2hlZHVsZSwgRy5JTlZfU1VCX01JWCwgRy5JTlZfU0JPWCwgdGhpcy5fblJvdW5kcylcbiAgdmFyIGJ1ZiA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgxNilcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzBdLCAwKVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDQpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsyXSwgOClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCAxMilcbiAgcmV0dXJuIGJ1ZlxufVxuXG5BRVMucHJvdG90eXBlLnNjcnViID0gZnVuY3Rpb24gKCkge1xuICBzY3J1YlZlYyh0aGlzLl9rZXlTY2hlZHVsZSlcbiAgc2NydWJWZWModGhpcy5faW52S2V5U2NoZWR1bGUpXG4gIHNjcnViVmVjKHRoaXMuX2tleSlcbn1cblxubW9kdWxlLmV4cG9ydHMuQUVTID0gQUVTXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9hZXMuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///24\n");

/***/ }),
/* 25 */
/***/ (function(module, exports, __webpack_require__) {

eval("var Buffer = __webpack_require__(1).Buffer\nvar MD5 = __webpack_require__(29)\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n  if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n  if (salt) {\n    if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n    if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n  }\n\n  var keyLen = keyBits / 8\n  var key = Buffer.alloc(keyLen)\n  var iv = Buffer.alloc(ivLen || 0)\n  var tmp = Buffer.alloc(0)\n\n  while (keyLen > 0 || ivLen > 0) {\n    var hash = new MD5()\n    hash.update(tmp)\n    hash.update(password)\n    if (salt) hash.update(salt)\n    tmp = hash.digest()\n\n    var used = 0\n\n    if (keyLen > 0) {\n      var keyStart = key.length - keyLen\n      used = Math.min(keyLen, tmp.length)\n      tmp.copy(key, keyStart, 0, used)\n      keyLen -= used\n    }\n\n    if (used < tmp.length && ivLen > 0) {\n      var ivStart = iv.length - ivLen\n      var length = Math.min(ivLen, tmp.length - used)\n      tmp.copy(iv, ivStart, used, used + length)\n      ivLen -= length\n    }\n  }\n\n  tmp.fill(0)\n  return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZXZwX2J5dGVzdG9rZXkvaW5kZXguanM/MGEwYyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBNRDUgPSByZXF1aXJlKCdtZDUuanMnKVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbmZ1bmN0aW9uIEVWUF9CeXRlc1RvS2V5IChwYXNzd29yZCwgc2FsdCwga2V5Qml0cywgaXZMZW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocGFzc3dvcmQpKSBwYXNzd29yZCA9IEJ1ZmZlci5mcm9tKHBhc3N3b3JkLCAnYmluYXJ5JylcbiAgaWYgKHNhbHQpIHtcbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihzYWx0KSkgc2FsdCA9IEJ1ZmZlci5mcm9tKHNhbHQsICdiaW5hcnknKVxuICAgIGlmIChzYWx0Lmxlbmd0aCAhPT0gOCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NhbHQgc2hvdWxkIGJlIEJ1ZmZlciB3aXRoIDggYnl0ZSBsZW5ndGgnKVxuICB9XG5cbiAgdmFyIGtleUxlbiA9IGtleUJpdHMgLyA4XG4gIHZhciBrZXkgPSBCdWZmZXIuYWxsb2Moa2V5TGVuKVxuICB2YXIgaXYgPSBCdWZmZXIuYWxsb2MoaXZMZW4gfHwgMClcbiAgdmFyIHRtcCA9IEJ1ZmZlci5hbGxvYygwKVxuXG4gIHdoaWxlIChrZXlMZW4gPiAwIHx8IGl2TGVuID4gMCkge1xuICAgIHZhciBoYXNoID0gbmV3IE1ENSgpXG4gICAgaGFzaC51cGRhdGUodG1wKVxuICAgIGhhc2gudXBkYXRlKHBhc3N3b3JkKVxuICAgIGlmIChzYWx0KSBoYXNoLnVwZGF0ZShzYWx0KVxuICAgIHRtcCA9IGhhc2guZGlnZXN0KClcblxuICAgIHZhciB1c2VkID0gMFxuXG4gICAgaWYgKGtleUxlbiA+IDApIHtcbiAgICAgIHZhciBrZXlTdGFydCA9IGtleS5sZW5ndGggLSBrZXlMZW5cbiAgICAgIHVzZWQgPSBNYXRoLm1pbihrZXlMZW4sIHRtcC5sZW5ndGgpXG4gICAgICB0bXAuY29weShrZXksIGtleVN0YXJ0LCAwLCB1c2VkKVxuICAgICAga2V5TGVuIC09IHVzZWRcbiAgICB9XG5cbiAgICBpZiAodXNlZCA8IHRtcC5sZW5ndGggJiYgaXZMZW4gPiAwKSB7XG4gICAgICB2YXIgaXZTdGFydCA9IGl2Lmxlbmd0aCAtIGl2TGVuXG4gICAgICB2YXIgbGVuZ3RoID0gTWF0aC5taW4oaXZMZW4sIHRtcC5sZW5ndGggLSB1c2VkKVxuICAgICAgdG1wLmNvcHkoaXYsIGl2U3RhcnQsIHVzZWQsIHVzZWQgKyBsZW5ndGgpXG4gICAgICBpdkxlbiAtPSBsZW5ndGhcbiAgICB9XG4gIH1cblxuICB0bXAuZmlsbCgwKVxuICByZXR1cm4geyBrZXk6IGtleSwgaXY6IGl2IH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBFVlBfQnl0ZXNUb0tleVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZXZwX2J5dGVzdG9rZXkvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///25\n");

/***/ }),
/* 26 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar curve = exports;\n\ncurve.base = __webpack_require__(175);\ncurve.short = __webpack_require__(176);\ncurve.mont = __webpack_require__(177);\ncurve.edwards = __webpack_require__(178);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2luZGV4LmpzP2I1MWIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmUgPSBleHBvcnRzO1xuXG5jdXJ2ZS5iYXNlID0gcmVxdWlyZSgnLi9iYXNlJyk7XG5jdXJ2ZS5zaG9ydCA9IHJlcXVpcmUoJy4vc2hvcnQnKTtcbmN1cnZlLm1vbnQgPSByZXF1aXJlKCcuL21vbnQnKTtcbmN1cnZlLmVkd2FyZHMgPSByZXF1aXJlKCcuL2Vkd2FyZHMnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMjZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///26\n");

/***/ }),
/* 27 */
/***/ (function(module, exports, __webpack_require__) {

eval("var asn1 = __webpack_require__(194)\nvar aesid = __webpack_require__(206)\nvar fixProc = __webpack_require__(207)\nvar ciphers = __webpack_require__(38)\nvar compat = __webpack_require__(61)\nvar Buffer = __webpack_require__(1).Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n  var password\n  if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n    password = buffer.passphrase\n    buffer = buffer.key\n  }\n  if (typeof buffer === 'string') {\n    buffer = Buffer.from(buffer)\n  }\n\n  var stripped = fixProc(buffer, password)\n\n  var type = stripped.tag\n  var data = stripped.data\n  var subtype, ndata\n  switch (type) {\n    case 'CERTIFICATE':\n      ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n      // falls through\n    case 'PUBLIC KEY':\n      if (!ndata) {\n        ndata = asn1.PublicKey.decode(data, 'der')\n      }\n      subtype = ndata.algorithm.algorithm.join('.')\n      switch (subtype) {\n        case '1.2.840.113549.1.1.1':\n          return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n        case '1.2.840.10045.2.1':\n          ndata.subjectPrivateKey = ndata.subjectPublicKey\n          return {\n            type: 'ec',\n            data: ndata\n          }\n        case '1.2.840.10040.4.1':\n          ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n          return {\n            type: 'dsa',\n            data: ndata.algorithm.params\n          }\n        default: throw new Error('unknown key id ' + subtype)\n      }\n      throw new Error('unknown key type ' + type)\n    case 'ENCRYPTED PRIVATE KEY':\n      data = asn1.EncryptedPrivateKey.decode(data, 'der')\n      data = decrypt(data, password)\n      // falls through\n    case 'PRIVATE KEY':\n      ndata = asn1.PrivateKey.decode(data, 'der')\n      subtype = ndata.algorithm.algorithm.join('.')\n      switch (subtype) {\n        case '1.2.840.113549.1.1.1':\n          return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n        case '1.2.840.10045.2.1':\n          return {\n            curve: ndata.algorithm.curve,\n            privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n          }\n        case '1.2.840.10040.4.1':\n          ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n          return {\n            type: 'dsa',\n            params: ndata.algorithm.params\n          }\n        default: throw new Error('unknown key id ' + subtype)\n      }\n      throw new Error('unknown key type ' + type)\n    case 'RSA PUBLIC KEY':\n      return asn1.RSAPublicKey.decode(data, 'der')\n    case 'RSA PRIVATE KEY':\n      return asn1.RSAPrivateKey.decode(data, 'der')\n    case 'DSA PRIVATE KEY':\n      return {\n        type: 'dsa',\n        params: asn1.DSAPrivateKey.decode(data, 'der')\n      }\n    case 'EC PRIVATE KEY':\n      data = asn1.ECPrivateKey.decode(data, 'der')\n      return {\n        curve: data.parameters.value,\n        privateKey: data.privateKey\n      }\n    default: throw new Error('unknown key type ' + type)\n  }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n  var salt = data.algorithm.decrypt.kde.kdeparams.salt\n  var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n  var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n  var iv = data.algorithm.decrypt.cipher.iv\n  var cipherText = data.subjectPrivateKey\n  var keylen = parseInt(algo.split('-')[1], 10) / 8\n  var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n  var cipher = ciphers.createDecipheriv(algo, key, iv)\n  var out = []\n  out.push(cipher.update(cipherText))\n  out.push(cipher.final())\n  return Buffer.concat(out)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9pbmRleC5qcz84ZTQ4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBhc24xID0gcmVxdWlyZSgnLi9hc24xJylcbnZhciBhZXNpZCA9IHJlcXVpcmUoJy4vYWVzaWQuanNvbicpXG52YXIgZml4UHJvYyA9IHJlcXVpcmUoJy4vZml4UHJvYycpXG52YXIgY2lwaGVycyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzJylcbnZhciBjb21wYXQgPSByZXF1aXJlKCdwYmtkZjInKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlS2V5c1xuXG5mdW5jdGlvbiBwYXJzZUtleXMgKGJ1ZmZlcikge1xuICB2YXIgcGFzc3dvcmRcbiAgaWYgKHR5cGVvZiBidWZmZXIgPT09ICdvYmplY3QnICYmICFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSkge1xuICAgIHBhc3N3b3JkID0gYnVmZmVyLnBhc3NwaHJhc2VcbiAgICBidWZmZXIgPSBidWZmZXIua2V5XG4gIH1cbiAgaWYgKHR5cGVvZiBidWZmZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgYnVmZmVyID0gQnVmZmVyLmZyb20oYnVmZmVyKVxuICB9XG5cbiAgdmFyIHN0cmlwcGVkID0gZml4UHJvYyhidWZmZXIsIHBhc3N3b3JkKVxuXG4gIHZhciB0eXBlID0gc3RyaXBwZWQudGFnXG4gIHZhciBkYXRhID0gc3RyaXBwZWQuZGF0YVxuICB2YXIgc3VidHlwZSwgbmRhdGFcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnQ0VSVElGSUNBVEUnOlxuICAgICAgbmRhdGEgPSBhc24xLmNlcnRpZmljYXRlLmRlY29kZShkYXRhLCAnZGVyJykudGJzQ2VydGlmaWNhdGUuc3ViamVjdFB1YmxpY0tleUluZm9cbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICBjYXNlICdQVUJMSUMgS0VZJzpcbiAgICAgIGlmICghbmRhdGEpIHtcbiAgICAgICAgbmRhdGEgPSBhc24xLlB1YmxpY0tleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICB9XG4gICAgICBzdWJ0eXBlID0gbmRhdGEuYWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKCcuJylcbiAgICAgIHN3aXRjaCAoc3VidHlwZSkge1xuICAgICAgICBjYXNlICcxLjIuODQwLjExMzU0OS4xLjEuMSc6XG4gICAgICAgICAgcmV0dXJuIGFzbjEuUlNBUHVibGljS2V5LmRlY29kZShuZGF0YS5zdWJqZWN0UHVibGljS2V5LmRhdGEsICdkZXInKVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQ1LjIuMSc6XG4gICAgICAgICAgbmRhdGEuc3ViamVjdFByaXZhdGVLZXkgPSBuZGF0YS5zdWJqZWN0UHVibGljS2V5XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdlYycsXG4gICAgICAgICAgICBkYXRhOiBuZGF0YVxuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0MC40LjEnOlxuICAgICAgICAgIG5kYXRhLmFsZ29yaXRobS5wYXJhbXMucHViX2tleSA9IGFzbjEuRFNBcGFyYW0uZGVjb2RlKG5kYXRhLnN1YmplY3RQdWJsaWNLZXkuZGF0YSwgJ2RlcicpXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdkc2EnLFxuICAgICAgICAgICAgZGF0YTogbmRhdGEuYWxnb3JpdGhtLnBhcmFtc1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSBpZCAnICsgc3VidHlwZSlcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgdHlwZSAnICsgdHlwZSlcbiAgICBjYXNlICdFTkNSWVBURUQgUFJJVkFURSBLRVknOlxuICAgICAgZGF0YSA9IGFzbjEuRW5jcnlwdGVkUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICBkYXRhID0gZGVjcnlwdChkYXRhLCBwYXNzd29yZClcbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICBjYXNlICdQUklWQVRFIEtFWSc6XG4gICAgICBuZGF0YSA9IGFzbjEuUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICBzdWJ0eXBlID0gbmRhdGEuYWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKCcuJylcbiAgICAgIHN3aXRjaCAoc3VidHlwZSkge1xuICAgICAgICBjYXNlICcxLjIuODQwLjExMzU0OS4xLjEuMSc6XG4gICAgICAgICAgcmV0dXJuIGFzbjEuUlNBUHJpdmF0ZUtleS5kZWNvZGUobmRhdGEuc3ViamVjdFByaXZhdGVLZXksICdkZXInKVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQ1LjIuMSc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGN1cnZlOiBuZGF0YS5hbGdvcml0aG0uY3VydmUsXG4gICAgICAgICAgICBwcml2YXRlS2V5OiBhc24xLkVDUHJpdmF0ZUtleS5kZWNvZGUobmRhdGEuc3ViamVjdFByaXZhdGVLZXksICdkZXInKS5wcml2YXRlS2V5XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQwLjQuMSc6XG4gICAgICAgICAgbmRhdGEuYWxnb3JpdGhtLnBhcmFtcy5wcml2X2tleSA9IGFzbjEuRFNBcGFyYW0uZGVjb2RlKG5kYXRhLnN1YmplY3RQcml2YXRlS2V5LCAnZGVyJylcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2RzYScsXG4gICAgICAgICAgICBwYXJhbXM6IG5kYXRhLmFsZ29yaXRobS5wYXJhbXNcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgaWQgJyArIHN1YnR5cGUpXG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IHR5cGUgJyArIHR5cGUpXG4gICAgY2FzZSAnUlNBIFBVQkxJQyBLRVknOlxuICAgICAgcmV0dXJuIGFzbjEuUlNBUHVibGljS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICBjYXNlICdSU0EgUFJJVkFURSBLRVknOlxuICAgICAgcmV0dXJuIGFzbjEuUlNBUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgY2FzZSAnRFNBIFBSSVZBVEUgS0VZJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdkc2EnLFxuICAgICAgICBwYXJhbXM6IGFzbjEuRFNBUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICB9XG4gICAgY2FzZSAnRUMgUFJJVkFURSBLRVknOlxuICAgICAgZGF0YSA9IGFzbjEuRUNQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGN1cnZlOiBkYXRhLnBhcmFtZXRlcnMudmFsdWUsXG4gICAgICAgIHByaXZhdGVLZXk6IGRhdGEucHJpdmF0ZUtleVxuICAgICAgfVxuICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgdHlwZSAnICsgdHlwZSlcbiAgfVxufVxucGFyc2VLZXlzLnNpZ25hdHVyZSA9IGFzbjEuc2lnbmF0dXJlXG5mdW5jdGlvbiBkZWNyeXB0IChkYXRhLCBwYXNzd29yZCkge1xuICB2YXIgc2FsdCA9IGRhdGEuYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5zYWx0XG4gIHZhciBpdGVycyA9IHBhcnNlSW50KGRhdGEuYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5pdGVycy50b1N0cmluZygpLCAxMClcbiAgdmFyIGFsZ28gPSBhZXNpZFtkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5hbGdvLmpvaW4oJy4nKV1cbiAgdmFyIGl2ID0gZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuaXZcbiAgdmFyIGNpcGhlclRleHQgPSBkYXRhLnN1YmplY3RQcml2YXRlS2V5XG4gIHZhciBrZXlsZW4gPSBwYXJzZUludChhbGdvLnNwbGl0KCctJylbMV0sIDEwKSAvIDhcbiAgdmFyIGtleSA9IGNvbXBhdC5wYmtkZjJTeW5jKHBhc3N3b3JkLCBzYWx0LCBpdGVycywga2V5bGVuLCAnc2hhMScpXG4gIHZhciBjaXBoZXIgPSBjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXYoYWxnbywga2V5LCBpdilcbiAgdmFyIG91dCA9IFtdXG4gIG91dC5wdXNoKGNpcGhlci51cGRhdGUoY2lwaGVyVGV4dCkpXG4gIG91dC5wdXNoKGNpcGhlci5maW5hbCgpKVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9wYXJzZS1hc24xL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///27\n");

/***/ }),
/* 28 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _utility = __webpack_require__(2);\n\nvar _index = __webpack_require__(22);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar TdLayout = function () {\n    function TdLayout() {\n        _classCallCheck(this, TdLayout);\n\n        this.type = \"\";\n        this.text = \"tdLayout\";\n        this.cursor = \"default\";\n        this.childrens = [];\n        this.x = 0;\n        this.y = 0;\n        this.id = _utility.Sequence.createUuid();\n        this.parent = null;\n        this.width = 0;\n        this.height = 0;\n        this.colspan = 1;\n        this.rowspan = 1;\n        this.rowIndex = 0;\n        this.colIndex = 0;\n        this.hide = false;\n    }\n\n    _createClass(TdLayout, [{\n        key: 'paint',\n        value: function paint() {\n            //console.log(panel);\n            var h = '<td ' + 'style=\"' + 'border:1px solid #ccc' + '\"' + 'height=\"' + this.height + '\"' + 'width=\"' + this.width + '\"' + 'id=\"' + this.id + '\"' + 'colspan=\"' + this.colspan + '\"' + 'rowspan=\"' + this.rowspan + '\"' + '>' + '</td>';\n\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-cloud';\n            node.uuid = this.id;\n            node.instance = this;\n            if (this.childrens.length > 0) {\n                node.nodes = [];\n                for (var i = 0, len = this.childrens.length; i < len; i++) {\n                    var data = this.childrens[i].getNodeConfigInfo();\n                    node.nodes.push(data);\n                }\n            }\n            return node;\n        }\n    }, {\n        key: 'parseHtml',\n        value: function parseHtml(html) {\n            var that = this;\n            var root = $(html)[0];\n            var traversalNode = function traversalNode(htmlNode) {\n                var tagName = htmlNode.tagName;\n\n                switch (tagName) {\n                    case 'F-INPUT':\n                        var input = new _index.Input();\n                        input.belongId = that.id;\n                        input.parseHtml(htmlNode);\n                        that.childrens.push(input);\n                        break;\n                    default:\n                        // console.log(\"no\");\n                        break;\n\n                }\n            };\n            if (root.hasChildNodes()) {\n\n                for (var i = 0; i < root.children.length; i++) {\n                    traversalNode(root.children[i]);\n                }\n            }\n        }\n    }, {\n        key: 'getParent',\n        value: function getParent() {\n            return this.parent;\n        }\n    }]);\n\n    return TdLayout;\n}();\n\nexports.default = TdLayout;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2Zvcm0vTGF5b3V0L1RkTGF5b3V0LmpzPzcxMmIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXF1ZW5jZX0gZnJvbSAnLi4vLi4vdXRpbGl0eSc7XHJcbmltcG9ydCB7SW5wdXR9IGZyb20gJy4uL2NvbXBvbmVudC9pbmRleCc7XHJcbmNsYXNzIFRkTGF5b3V0IHtcclxuICAgIGNvbnN0cnVjdG9yKCl7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy50eXBlPVwiXCI7XHJcbiAgICAgICAgdGhpcy50ZXh0PVwidGRMYXlvdXRcIjtcclxuICAgICAgICB0aGlzLmN1cnNvcj1cImRlZmF1bHRcIjtcclxuICAgICAgICB0aGlzLmNoaWxkcmVucz1bXTtcclxuICAgICAgICB0aGlzLng9MDtcclxuICAgICAgICB0aGlzLnk9MDtcclxuICAgICAgICB0aGlzLmlkPVNlcXVlbmNlLmNyZWF0ZVV1aWQoKTtcclxuICAgICAgICB0aGlzLnBhcmVudD1udWxsO1xyXG4gICAgICAgIHRoaXMud2lkdGg9MDtcclxuICAgICAgICB0aGlzLmhlaWdodD0wO1xyXG4gICAgICAgIHRoaXMuY29sc3Bhbj0xO1xyXG4gICAgICAgIHRoaXMucm93c3Bhbj0xO1xyXG4gICAgICAgIHRoaXMucm93SW5kZXg9MDtcclxuICAgICAgICB0aGlzLmNvbEluZGV4PTA7XHJcbiAgICAgICAgdGhpcy5oaWRlPWZhbHNlO1xyXG4gICAgfVxyXG4gICAgcGFpbnQoKXtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKHBhbmVsKTtcclxuICAgICAgICBsZXQgaD1gPHRkIGArXHJcbiAgICAgICAgYHN0eWxlPVwiYCtcclxuICAgICAgICBgYm9yZGVyOjFweCBzb2xpZCAjY2NjYCtcclxuICAgICAgICBgXCJgK1xyXG4gICAgICAgIGBoZWlnaHQ9XCJgK1xyXG4gICAgICAgIHRoaXMuaGVpZ2h0K1xyXG4gICAgICAgIGBcImArXHJcbiAgICAgICAgYHdpZHRoPVwiYCtcclxuICAgICAgICB0aGlzLndpZHRoK1xyXG4gICAgICAgIGBcImArXHJcbiAgICAgICAgYGlkPVwiYCtcclxuICAgICAgICB0aGlzLmlkK1xyXG4gICAgICAgIGBcImArXHJcbiAgICAgICAgYGNvbHNwYW49XCJgK1xyXG4gICAgICAgIHRoaXMuY29sc3BhbitcclxuICAgICAgICBgXCJgK1xyXG4gICAgICAgIGByb3dzcGFuPVwiYCtcclxuICAgICAgICB0aGlzLnJvd3NwYW4rXHJcbiAgICAgICAgYFwiYCtcclxuICAgICAgICBgPmArXHJcbiAgICAgICAgYDwvdGQ+YFxyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBoO1xyXG4gICAgfVxyXG4gICAgZ2V0Tm9kZUNvbmZpZ0luZm8oKXtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgbm9kZSA9IHt9O1xyXG5cdFx0bm9kZS50ZXh0ID0gdGhpcy50ZXh0O1xyXG5cdFx0bm9kZS5pY29uID0gJ2dseXBoaWNvbiBnbHlwaGljb24tY2xvdWQnO1xyXG5cdFx0bm9kZS51dWlkID0gdGhpcy5pZDtcdFxyXG4gICAgICAgIG5vZGUuaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgIGlmKHRoaXMuY2hpbGRyZW5zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0bm9kZS5ub2RlcyA9IFtdXHJcblx0XHRcdGZvcihsZXQgaSA9IDAsIGxlbiA9IHRoaXMuY2hpbGRyZW5zLmxlbmd0aDtpIDwgbGVuO2krKykge1xyXG5cdFx0XHRcdGNvbnN0IGRhdGEgPSB0aGlzLmNoaWxkcmVuc1tpXS5nZXROb2RlQ29uZmlnSW5mbygpO1xyXG5cdFx0XHRcdG5vZGUubm9kZXMucHVzaChkYXRhKTtcdFxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbm9kZTtcclxuICAgIH1cclxuICAgIHBhcnNlSHRtbChodG1sKXtcclxuICAgICAgICBsZXQgdGhhdD10aGlzO1xyXG4gICAgICAgIGxldCByb290PSQoaHRtbClbMF07XHJcbiAgICAgICAgY29uc3QgdHJhdmVyc2FsTm9kZSA9IChodG1sTm9kZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7dGFnTmFtZX09aHRtbE5vZGU7XHJcbiAgICAgICAgICAgIHN3aXRjaCh0YWdOYW1lKXtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0YtSU5QVVQnOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpbnB1dCA9IG5ldyBJbnB1dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlucHV0LmJlbG9uZ0lkPXRoYXQuaWRcclxuICAgICAgICAgICAgICAgICAgICBpbnB1dC5wYXJzZUh0bWwoaHRtbE5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuY2hpbGRyZW5zLnB1c2goaW5wdXQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibm9cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHJvb3QuaGFzQ2hpbGROb2RlcygpKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwO2kgPCByb290LmNoaWxkcmVuLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgIHRyYXZlcnNhbE5vZGUocm9vdC5jaGlsZHJlbltpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXRQYXJlbnQoKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgVGRMYXlvdXQ7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9mb3JtL0xheW91dC9UZExheW91dC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXFCQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVZBO0FBWUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///28\n");

/***/ }),
/* 29 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar inherits = __webpack_require__(0)\nvar HashBase = __webpack_require__(51)\nvar Buffer = __webpack_require__(1).Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n  HashBase.call(this, 64)\n\n  // state\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n  var M = ARRAY16\n  for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n  var a = this._a\n  var b = this._b\n  var c = this._c\n  var d = this._d\n\n  a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n  d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n  c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n  b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n  a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n  d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n  c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n  b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n  a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n  d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n  c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n  b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n  a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n  d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n  c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n  b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n  a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n  d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n  c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n  b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n  a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n  d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n  c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n  b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n  a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n  d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n  c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n  b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n  a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n  d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n  c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n  b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n  a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n  d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n  c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n  b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n  a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n  d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n  c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n  b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n  a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n  d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n  c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n  b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n  a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n  d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n  c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n  b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n  a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n  d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n  c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n  b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n  a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n  d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n  c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n  b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n  a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n  d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n  c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n  b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n  a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n  d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n  c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n  b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n  this._a = (this._a + a) | 0\n  this._b = (this._b + b) | 0\n  this._c = (this._c + c) | 0\n  this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n  // create padding and handle blocks\n  this._block[this._blockOffset++] = 0x80\n  if (this._blockOffset > 56) {\n    this._block.fill(0, this._blockOffset, 64)\n    this._update()\n    this._blockOffset = 0\n  }\n\n  this._block.fill(0, this._blockOffset, 56)\n  this._block.writeUInt32LE(this._length[0], 56)\n  this._block.writeUInt32LE(this._length[1], 60)\n  this._update()\n\n  // produce result\n  var buffer = Buffer.allocUnsafe(16)\n  buffer.writeInt32LE(this._a, 0)\n  buffer.writeInt32LE(this._b, 4)\n  buffer.writeInt32LE(this._c, 8)\n  buffer.writeInt32LE(this._d, 12)\n  return buffer\n}\n\nfunction rotl (x, n) {\n  return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n  return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n  return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n  return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n  return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbWQ1LmpzL2luZGV4LmpzPzc4MmMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaEJhc2UgPSByZXF1aXJlKCdoYXNoLWJhc2UnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBBUlJBWTE2ID0gbmV3IEFycmF5KDE2KVxuXG5mdW5jdGlvbiBNRDUgKCkge1xuICBIYXNoQmFzZS5jYWxsKHRoaXMsIDY0KVxuXG4gIC8vIHN0YXRlXG4gIHRoaXMuX2EgPSAweDY3NDUyMzAxXG4gIHRoaXMuX2IgPSAweGVmY2RhYjg5XG4gIHRoaXMuX2MgPSAweDk4YmFkY2ZlXG4gIHRoaXMuX2QgPSAweDEwMzI1NDc2XG59XG5cbmluaGVyaXRzKE1ENSwgSGFzaEJhc2UpXG5cbk1ENS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIE0gPSBBUlJBWTE2XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgTVtpXSA9IHRoaXMuX2Jsb2NrLnJlYWRJbnQzMkxFKGkgKiA0KVxuXG4gIHZhciBhID0gdGhpcy5fYVxuICB2YXIgYiA9IHRoaXMuX2JcbiAgdmFyIGMgPSB0aGlzLl9jXG4gIHZhciBkID0gdGhpcy5fZFxuXG4gIGEgPSBmbkYoYSwgYiwgYywgZCwgTVswXSwgMHhkNzZhYTQ3OCwgNylcbiAgZCA9IGZuRihkLCBhLCBiLCBjLCBNWzFdLCAweGU4YzdiNzU2LCAxMilcbiAgYyA9IGZuRihjLCBkLCBhLCBiLCBNWzJdLCAweDI0MjA3MGRiLCAxNylcbiAgYiA9IGZuRihiLCBjLCBkLCBhLCBNWzNdLCAweGMxYmRjZWVlLCAyMilcbiAgYSA9IGZuRihhLCBiLCBjLCBkLCBNWzRdLCAweGY1N2MwZmFmLCA3KVxuICBkID0gZm5GKGQsIGEsIGIsIGMsIE1bNV0sIDB4NDc4N2M2MmEsIDEyKVxuICBjID0gZm5GKGMsIGQsIGEsIGIsIE1bNl0sIDB4YTgzMDQ2MTMsIDE3KVxuICBiID0gZm5GKGIsIGMsIGQsIGEsIE1bN10sIDB4ZmQ0Njk1MDEsIDIyKVxuICBhID0gZm5GKGEsIGIsIGMsIGQsIE1bOF0sIDB4Njk4MDk4ZDgsIDcpXG4gIGQgPSBmbkYoZCwgYSwgYiwgYywgTVs5XSwgMHg4YjQ0ZjdhZiwgMTIpXG4gIGMgPSBmbkYoYywgZCwgYSwgYiwgTVsxMF0sIDB4ZmZmZjViYjEsIDE3KVxuICBiID0gZm5GKGIsIGMsIGQsIGEsIE1bMTFdLCAweDg5NWNkN2JlLCAyMilcbiAgYSA9IGZuRihhLCBiLCBjLCBkLCBNWzEyXSwgMHg2YjkwMTEyMiwgNylcbiAgZCA9IGZuRihkLCBhLCBiLCBjLCBNWzEzXSwgMHhmZDk4NzE5MywgMTIpXG4gIGMgPSBmbkYoYywgZCwgYSwgYiwgTVsxNF0sIDB4YTY3OTQzOGUsIDE3KVxuICBiID0gZm5GKGIsIGMsIGQsIGEsIE1bMTVdLCAweDQ5YjQwODIxLCAyMilcblxuICBhID0gZm5HKGEsIGIsIGMsIGQsIE1bMV0sIDB4ZjYxZTI1NjIsIDUpXG4gIGQgPSBmbkcoZCwgYSwgYiwgYywgTVs2XSwgMHhjMDQwYjM0MCwgOSlcbiAgYyA9IGZuRyhjLCBkLCBhLCBiLCBNWzExXSwgMHgyNjVlNWE1MSwgMTQpXG4gIGIgPSBmbkcoYiwgYywgZCwgYSwgTVswXSwgMHhlOWI2YzdhYSwgMjApXG4gIGEgPSBmbkcoYSwgYiwgYywgZCwgTVs1XSwgMHhkNjJmMTA1ZCwgNSlcbiAgZCA9IGZuRyhkLCBhLCBiLCBjLCBNWzEwXSwgMHgwMjQ0MTQ1MywgOSlcbiAgYyA9IGZuRyhjLCBkLCBhLCBiLCBNWzE1XSwgMHhkOGExZTY4MSwgMTQpXG4gIGIgPSBmbkcoYiwgYywgZCwgYSwgTVs0XSwgMHhlN2QzZmJjOCwgMjApXG4gIGEgPSBmbkcoYSwgYiwgYywgZCwgTVs5XSwgMHgyMWUxY2RlNiwgNSlcbiAgZCA9IGZuRyhkLCBhLCBiLCBjLCBNWzE0XSwgMHhjMzM3MDdkNiwgOSlcbiAgYyA9IGZuRyhjLCBkLCBhLCBiLCBNWzNdLCAweGY0ZDUwZDg3LCAxNClcbiAgYiA9IGZuRyhiLCBjLCBkLCBhLCBNWzhdLCAweDQ1NWExNGVkLCAyMClcbiAgYSA9IGZuRyhhLCBiLCBjLCBkLCBNWzEzXSwgMHhhOWUzZTkwNSwgNSlcbiAgZCA9IGZuRyhkLCBhLCBiLCBjLCBNWzJdLCAweGZjZWZhM2Y4LCA5KVxuICBjID0gZm5HKGMsIGQsIGEsIGIsIE1bN10sIDB4Njc2ZjAyZDksIDE0KVxuICBiID0gZm5HKGIsIGMsIGQsIGEsIE1bMTJdLCAweDhkMmE0YzhhLCAyMClcblxuICBhID0gZm5IKGEsIGIsIGMsIGQsIE1bNV0sIDB4ZmZmYTM5NDIsIDQpXG4gIGQgPSBmbkgoZCwgYSwgYiwgYywgTVs4XSwgMHg4NzcxZjY4MSwgMTEpXG4gIGMgPSBmbkgoYywgZCwgYSwgYiwgTVsxMV0sIDB4NmQ5ZDYxMjIsIDE2KVxuICBiID0gZm5IKGIsIGMsIGQsIGEsIE1bMTRdLCAweGZkZTUzODBjLCAyMylcbiAgYSA9IGZuSChhLCBiLCBjLCBkLCBNWzFdLCAweGE0YmVlYTQ0LCA0KVxuICBkID0gZm5IKGQsIGEsIGIsIGMsIE1bNF0sIDB4NGJkZWNmYTksIDExKVxuICBjID0gZm5IKGMsIGQsIGEsIGIsIE1bN10sIDB4ZjZiYjRiNjAsIDE2KVxuICBiID0gZm5IKGIsIGMsIGQsIGEsIE1bMTBdLCAweGJlYmZiYzcwLCAyMylcbiAgYSA9IGZuSChhLCBiLCBjLCBkLCBNWzEzXSwgMHgyODliN2VjNiwgNClcbiAgZCA9IGZuSChkLCBhLCBiLCBjLCBNWzBdLCAweGVhYTEyN2ZhLCAxMSlcbiAgYyA9IGZuSChjLCBkLCBhLCBiLCBNWzNdLCAweGQ0ZWYzMDg1LCAxNilcbiAgYiA9IGZuSChiLCBjLCBkLCBhLCBNWzZdLCAweDA0ODgxZDA1LCAyMylcbiAgYSA9IGZuSChhLCBiLCBjLCBkLCBNWzldLCAweGQ5ZDRkMDM5LCA0KVxuICBkID0gZm5IKGQsIGEsIGIsIGMsIE1bMTJdLCAweGU2ZGI5OWU1LCAxMSlcbiAgYyA9IGZuSChjLCBkLCBhLCBiLCBNWzE1XSwgMHgxZmEyN2NmOCwgMTYpXG4gIGIgPSBmbkgoYiwgYywgZCwgYSwgTVsyXSwgMHhjNGFjNTY2NSwgMjMpXG5cbiAgYSA9IGZuSShhLCBiLCBjLCBkLCBNWzBdLCAweGY0MjkyMjQ0LCA2KVxuICBkID0gZm5JKGQsIGEsIGIsIGMsIE1bN10sIDB4NDMyYWZmOTcsIDEwKVxuICBjID0gZm5JKGMsIGQsIGEsIGIsIE1bMTRdLCAweGFiOTQyM2E3LCAxNSlcbiAgYiA9IGZuSShiLCBjLCBkLCBhLCBNWzVdLCAweGZjOTNhMDM5LCAyMSlcbiAgYSA9IGZuSShhLCBiLCBjLCBkLCBNWzEyXSwgMHg2NTViNTljMywgNilcbiAgZCA9IGZuSShkLCBhLCBiLCBjLCBNWzNdLCAweDhmMGNjYzkyLCAxMClcbiAgYyA9IGZuSShjLCBkLCBhLCBiLCBNWzEwXSwgMHhmZmVmZjQ3ZCwgMTUpXG4gIGIgPSBmbkkoYiwgYywgZCwgYSwgTVsxXSwgMHg4NTg0NWRkMSwgMjEpXG4gIGEgPSBmbkkoYSwgYiwgYywgZCwgTVs4XSwgMHg2ZmE4N2U0ZiwgNilcbiAgZCA9IGZuSShkLCBhLCBiLCBjLCBNWzE1XSwgMHhmZTJjZTZlMCwgMTApXG4gIGMgPSBmbkkoYywgZCwgYSwgYiwgTVs2XSwgMHhhMzAxNDMxNCwgMTUpXG4gIGIgPSBmbkkoYiwgYywgZCwgYSwgTVsxM10sIDB4NGUwODExYTEsIDIxKVxuICBhID0gZm5JKGEsIGIsIGMsIGQsIE1bNF0sIDB4Zjc1MzdlODIsIDYpXG4gIGQgPSBmbkkoZCwgYSwgYiwgYywgTVsxMV0sIDB4YmQzYWYyMzUsIDEwKVxuICBjID0gZm5JKGMsIGQsIGEsIGIsIE1bMl0sIDB4MmFkN2QyYmIsIDE1KVxuICBiID0gZm5JKGIsIGMsIGQsIGEsIE1bOV0sIDB4ZWI4NmQzOTEsIDIxKVxuXG4gIHRoaXMuX2EgPSAodGhpcy5fYSArIGEpIHwgMFxuICB0aGlzLl9iID0gKHRoaXMuX2IgKyBiKSB8IDBcbiAgdGhpcy5fYyA9ICh0aGlzLl9jICsgYykgfCAwXG4gIHRoaXMuX2QgPSAodGhpcy5fZCArIGQpIHwgMFxufVxuXG5NRDUucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIGNyZWF0ZSBwYWRkaW5nIGFuZCBoYW5kbGUgYmxvY2tzXG4gIHRoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdID0gMHg4MFxuICBpZiAodGhpcy5fYmxvY2tPZmZzZXQgPiA1Nikge1xuICAgIHRoaXMuX2Jsb2NrLmZpbGwoMCwgdGhpcy5fYmxvY2tPZmZzZXQsIDY0KVxuICAgIHRoaXMuX3VwZGF0ZSgpXG4gICAgdGhpcy5fYmxvY2tPZmZzZXQgPSAwXG4gIH1cblxuICB0aGlzLl9ibG9jay5maWxsKDAsIHRoaXMuX2Jsb2NrT2Zmc2V0LCA1NilcbiAgdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMF0sIDU2KVxuICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFsxXSwgNjApXG4gIHRoaXMuX3VwZGF0ZSgpXG5cbiAgLy8gcHJvZHVjZSByZXN1bHRcbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgxNilcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9hLCAwKVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2IsIDQpXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fYywgOClcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9kLCAxMilcbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiByb3RsICh4LCBuKSB7XG4gIHJldHVybiAoeCA8PCBuKSB8ICh4ID4+PiAoMzIgLSBuKSlcbn1cblxuZnVuY3Rpb24gZm5GIChhLCBiLCBjLCBkLCBtLCBrLCBzKSB7XG4gIHJldHVybiAocm90bCgoYSArICgoYiAmIGMpIHwgKCh+YikgJiBkKSkgKyBtICsgaykgfCAwLCBzKSArIGIpIHwgMFxufVxuXG5mdW5jdGlvbiBmbkcgKGEsIGIsIGMsIGQsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKChiICYgZCkgfCAoYyAmICh+ZCkpKSArIG0gKyBrKSB8IDAsIHMpICsgYikgfCAwXG59XG5cbmZ1bmN0aW9uIGZuSCAoYSwgYiwgYywgZCwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoYiBeIGMgXiBkKSArIG0gKyBrKSB8IDAsIHMpICsgYikgfCAwXG59XG5cbmZ1bmN0aW9uIGZuSSAoYSwgYiwgYywgZCwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoKGMgXiAoYiB8ICh+ZCkpKSkgKyBtICsgaykgfCAwLCBzKSArIGIpIHwgMFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1ENVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvbWQ1LmpzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///29\n");

/***/ }),
/* 30 */
/***/ (function(module, exports, __webpack_require__) {

eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = __webpack_require__(31).EventEmitter;\nvar inherits = __webpack_require__(0);\n\ninherits(Stream, EE);\nStream.Readable = __webpack_require__(32);\nStream.Writable = __webpack_require__(137);\nStream.Duplex = __webpack_require__(138);\nStream.Transform = __webpack_require__(139);\nStream.PassThrough = __webpack_require__(140);\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams.  Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n  EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n  var source = this;\n\n  function ondata(chunk) {\n    if (dest.writable) {\n      if (false === dest.write(chunk) && source.pause) {\n        source.pause();\n      }\n    }\n  }\n\n  source.on('data', ondata);\n\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume();\n    }\n  }\n\n  dest.on('drain', ondrain);\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend);\n    source.on('close', onclose);\n  }\n\n  var didOnEnd = false;\n  function onend() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    dest.end();\n  }\n\n\n  function onclose() {\n    if (didOnEnd) return;\n    didOnEnd = true;\n\n    if (typeof dest.destroy === 'function') dest.destroy();\n  }\n\n  // don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup();\n    if (EE.listenerCount(this, 'error') === 0) {\n      throw er; // Unhandled stream error in pipe.\n    }\n  }\n\n  source.on('error', onerror);\n  dest.on('error', onerror);\n\n  // remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata);\n    dest.removeListener('drain', ondrain);\n\n    source.removeListener('end', onend);\n    source.removeListener('close', onclose);\n\n    source.removeListener('error', onerror);\n    dest.removeListener('error', onerror);\n\n    source.removeListener('end', cleanup);\n    source.removeListener('close', cleanup);\n\n    dest.removeListener('close', cleanup);\n  }\n\n  source.on('end', cleanup);\n  source.on('close', cleanup);\n\n  dest.on('close', cleanup);\n\n  dest.emit('pipe', source);\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc3RyZWFtLWJyb3dzZXJpZnkvaW5kZXguanM/ZjQzMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxubW9kdWxlLmV4cG9ydHMgPSBTdHJlYW07XG5cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmluaGVyaXRzKFN0cmVhbSwgRUUpO1xuU3RyZWFtLlJlYWRhYmxlID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLmpzJyk7XG5TdHJlYW0uV3JpdGFibGUgPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vd3JpdGFibGUuanMnKTtcblN0cmVhbS5EdXBsZXggPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vZHVwbGV4LmpzJyk7XG5TdHJlYW0uVHJhbnNmb3JtID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3RyYW5zZm9ybS5qcycpO1xuU3RyZWFtLlBhc3NUaHJvdWdoID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3Bhc3N0aHJvdWdoLmpzJyk7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuNC54XG5TdHJlYW0uU3RyZWFtID0gU3RyZWFtO1xuXG5cblxuLy8gb2xkLXN0eWxlIHN0cmVhbXMuICBOb3RlIHRoYXQgdGhlIHBpcGUgbWV0aG9kICh0aGUgb25seSByZWxldmFudFxuLy8gcGFydCBvZiB0aGlzIGNsYXNzKSBpcyBvdmVycmlkZGVuIGluIHRoZSBSZWFkYWJsZSBjbGFzcy5cblxuZnVuY3Rpb24gU3RyZWFtKCkge1xuICBFRS5jYWxsKHRoaXMpO1xufVxuXG5TdHJlYW0ucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbihkZXN0LCBvcHRpb25zKSB7XG4gIHZhciBzb3VyY2UgPSB0aGlzO1xuXG4gIGZ1bmN0aW9uIG9uZGF0YShjaHVuaykge1xuICAgIGlmIChkZXN0LndyaXRhYmxlKSB7XG4gICAgICBpZiAoZmFsc2UgPT09IGRlc3Qud3JpdGUoY2h1bmspICYmIHNvdXJjZS5wYXVzZSkge1xuICAgICAgICBzb3VyY2UucGF1c2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzb3VyY2Uub24oJ2RhdGEnLCBvbmRhdGEpO1xuXG4gIGZ1bmN0aW9uIG9uZHJhaW4oKSB7XG4gICAgaWYgKHNvdXJjZS5yZWFkYWJsZSAmJiBzb3VyY2UucmVzdW1lKSB7XG4gICAgICBzb3VyY2UucmVzdW1lKCk7XG4gICAgfVxuICB9XG5cbiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKTtcblxuICAvLyBJZiB0aGUgJ2VuZCcgb3B0aW9uIGlzIG5vdCBzdXBwbGllZCwgZGVzdC5lbmQoKSB3aWxsIGJlIGNhbGxlZCB3aGVuXG4gIC8vIHNvdXJjZSBnZXRzIHRoZSAnZW5kJyBvciAnY2xvc2UnIGV2ZW50cy4gIE9ubHkgZGVzdC5lbmQoKSBvbmNlLlxuICBpZiAoIWRlc3QuX2lzU3RkaW8gJiYgKCFvcHRpb25zIHx8IG9wdGlvbnMuZW5kICE9PSBmYWxzZSkpIHtcbiAgICBzb3VyY2Uub24oJ2VuZCcsIG9uZW5kKTtcbiAgICBzb3VyY2Uub24oJ2Nsb3NlJywgb25jbG9zZSk7XG4gIH1cblxuICB2YXIgZGlkT25FbmQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgaWYgKGRpZE9uRW5kKSByZXR1cm47XG4gICAgZGlkT25FbmQgPSB0cnVlO1xuXG4gICAgZGVzdC5lbmQoKTtcbiAgfVxuXG5cbiAgZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICBpZiAoZGlkT25FbmQpIHJldHVybjtcbiAgICBkaWRPbkVuZCA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIGRlc3QuZGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykgZGVzdC5kZXN0cm95KCk7XG4gIH1cblxuICAvLyBkb24ndCBsZWF2ZSBkYW5nbGluZyBwaXBlcyB3aGVuIHRoZXJlIGFyZSBlcnJvcnMuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBjbGVhbnVwKCk7XG4gICAgaWYgKEVFLmxpc3RlbmVyQ291bnQodGhpcywgJ2Vycm9yJykgPT09IDApIHtcbiAgICAgIHRocm93IGVyOyAvLyBVbmhhbmRsZWQgc3RyZWFtIGVycm9yIGluIHBpcGUuXG4gICAgfVxuICB9XG5cbiAgc291cmNlLm9uKCdlcnJvcicsIG9uZXJyb3IpO1xuICBkZXN0Lm9uKCdlcnJvcicsIG9uZXJyb3IpO1xuXG4gIC8vIHJlbW92ZSBhbGwgdGhlIGV2ZW50IGxpc3RlbmVycyB0aGF0IHdlcmUgYWRkZWQuXG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdkcmFpbicsIG9uZHJhaW4pO1xuXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpO1xuXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIGNsZWFudXApO1xuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBjbGVhbnVwKTtcblxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgY2xlYW51cCk7XG4gIH1cblxuICBzb3VyY2Uub24oJ2VuZCcsIGNsZWFudXApO1xuICBzb3VyY2Uub24oJ2Nsb3NlJywgY2xlYW51cCk7XG5cbiAgZGVzdC5vbignY2xvc2UnLCBjbGVhbnVwKTtcblxuICBkZXN0LmVtaXQoJ3BpcGUnLCBzb3VyY2UpO1xuXG4gIC8vIEFsbG93IGZvciB1bml4LWxpa2UgdXNhZ2U6IEEucGlwZShCKS5waXBlKEMpXG4gIHJldHVybiBkZXN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAzMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n");

/***/ }),
/* 31 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction $getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return $getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = $getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  var args = [];\n  for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    ReflectApply(this.listener, this.target, args);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      if (typeof listener !== 'function') {\n        throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n      }\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      if (typeof listener !== 'function') {\n        throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n      }\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZXZlbnRzL2V2ZW50cy5qcz9iZjMwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSID0gdHlwZW9mIFJlZmxlY3QgPT09ICdvYmplY3QnID8gUmVmbGVjdCA6IG51bGxcbnZhciBSZWZsZWN0QXBwbHkgPSBSICYmIHR5cGVvZiBSLmFwcGx5ID09PSAnZnVuY3Rpb24nXG4gID8gUi5hcHBseVxuICA6IGZ1bmN0aW9uIFJlZmxlY3RBcHBseSh0YXJnZXQsIHJlY2VpdmVyLCBhcmdzKSB7XG4gICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKHRhcmdldCwgcmVjZWl2ZXIsIGFyZ3MpO1xuICB9XG5cbnZhciBSZWZsZWN0T3duS2V5c1xuaWYgKFIgJiYgdHlwZW9mIFIub3duS2V5cyA9PT0gJ2Z1bmN0aW9uJykge1xuICBSZWZsZWN0T3duS2V5cyA9IFIub3duS2V5c1xufSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gIFJlZmxlY3RPd25LZXlzID0gZnVuY3Rpb24gUmVmbGVjdE93bktleXModGFyZ2V0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldClcbiAgICAgIC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpKTtcbiAgfTtcbn0gZWxzZSB7XG4gIFJlZmxlY3RPd25LZXlzID0gZnVuY3Rpb24gUmVmbGVjdE93bktleXModGFyZ2V0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIFByb2Nlc3NFbWl0V2FybmluZyh3YXJuaW5nKSB7XG4gIGlmIChjb25zb2xlICYmIGNvbnNvbGUud2FybikgY29uc29sZS53YXJuKHdhcm5pbmcpO1xufVxuXG52YXIgTnVtYmVySXNOYU4gPSBOdW1iZXIuaXNOYU4gfHwgZnVuY3Rpb24gTnVtYmVySXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gRXZlbnRFbWl0dGVyKCkge1xuICBFdmVudEVtaXR0ZXIuaW5pdC5jYWxsKHRoaXMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFdmVudEVtaXR0ZXI7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuMTAueFxuRXZlbnRFbWl0dGVyLkV2ZW50RW1pdHRlciA9IEV2ZW50RW1pdHRlcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzID0gdW5kZWZpbmVkO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzQ291bnQgPSAwO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzID0gdW5kZWZpbmVkO1xuXG4vLyBCeSBkZWZhdWx0IEV2ZW50RW1pdHRlcnMgd2lsbCBwcmludCBhIHdhcm5pbmcgaWYgbW9yZSB0aGFuIDEwIGxpc3RlbmVycyBhcmVcbi8vIGFkZGVkIHRvIGl0LiBUaGlzIGlzIGEgdXNlZnVsIGRlZmF1bHQgd2hpY2ggaGVscHMgZmluZGluZyBtZW1vcnkgbGVha3MuXG52YXIgZGVmYXVsdE1heExpc3RlbmVycyA9IDEwO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnRFbWl0dGVyLCAnZGVmYXVsdE1heExpc3RlbmVycycsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZGVmYXVsdE1heExpc3RlbmVycztcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbihhcmcpIHtcbiAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ251bWJlcicgfHwgYXJnIDwgMCB8fCBOdW1iZXJJc05hTihhcmcpKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mIFwiZGVmYXVsdE1heExpc3RlbmVyc1wiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcgKyBhcmcgKyAnLicpO1xuICAgIH1cbiAgICBkZWZhdWx0TWF4TGlzdGVuZXJzID0gYXJnO1xuICB9XG59KTtcblxuRXZlbnRFbWl0dGVyLmluaXQgPSBmdW5jdGlvbigpIHtcblxuICBpZiAodGhpcy5fZXZlbnRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHRoaXMuX2V2ZW50cyA9PT0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHMpIHtcbiAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgfVxuXG4gIHRoaXMuX21heExpc3RlbmVycyA9IHRoaXMuX21heExpc3RlbmVycyB8fCB1bmRlZmluZWQ7XG59O1xuXG4vLyBPYnZpb3VzbHkgbm90IGFsbCBFbWl0dGVycyBzaG91bGQgYmUgbGltaXRlZCB0byAxMC4gVGhpcyBmdW5jdGlvbiBhbGxvd3Ncbi8vIHRoYXQgdG8gYmUgaW5jcmVhc2VkLiBTZXQgdG8gemVybyBmb3IgdW5saW1pdGVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbiBzZXRNYXhMaXN0ZW5lcnMobikge1xuICBpZiAodHlwZW9mIG4gIT09ICdudW1iZXInIHx8IG4gPCAwIHx8IE51bWJlcklzTmFOKG4pKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcIm5cIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnICsgbiArICcuJyk7XG4gIH1cbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiAkZ2V0TWF4TGlzdGVuZXJzKHRoYXQpIHtcbiAgaWYgKHRoYXQuX21heExpc3RlbmVycyA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycztcbiAgcmV0dXJuIHRoYXQuX21heExpc3RlbmVycztcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbiBnZXRNYXhMaXN0ZW5lcnMoKSB7XG4gIHJldHVybiAkZ2V0TWF4TGlzdGVuZXJzKHRoaXMpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24gZW1pdCh0eXBlKSB7XG4gIHZhciBhcmdzID0gW107XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgdmFyIGRvRXJyb3IgPSAodHlwZSA9PT0gJ2Vycm9yJyk7XG5cbiAgdmFyIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgaWYgKGV2ZW50cyAhPT0gdW5kZWZpbmVkKVxuICAgIGRvRXJyb3IgPSAoZG9FcnJvciAmJiBldmVudHMuZXJyb3IgPT09IHVuZGVmaW5lZCk7XG4gIGVsc2UgaWYgKCFkb0Vycm9yKVxuICAgIHJldHVybiBmYWxzZTtcblxuICAvLyBJZiB0aGVyZSBpcyBubyAnZXJyb3InIGV2ZW50IGxpc3RlbmVyIHRoZW4gdGhyb3cuXG4gIGlmIChkb0Vycm9yKSB7XG4gICAgdmFyIGVyO1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDApXG4gICAgICBlciA9IGFyZ3NbMF07XG4gICAgaWYgKGVyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIC8vIE5vdGU6IFRoZSBjb21tZW50cyBvbiB0aGUgYHRocm93YCBsaW5lcyBhcmUgaW50ZW50aW9uYWwsIHRoZXkgc2hvd1xuICAgICAgLy8gdXAgaW4gTm9kZSdzIG91dHB1dCBpZiB0aGlzIHJlc3VsdHMgaW4gYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbi5cbiAgICAgIHRocm93IGVyOyAvLyBVbmhhbmRsZWQgJ2Vycm9yJyBldmVudFxuICAgIH1cbiAgICAvLyBBdCBsZWFzdCBnaXZlIHNvbWUga2luZCBvZiBjb250ZXh0IHRvIHRoZSB1c2VyXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcignVW5oYW5kbGVkIGVycm9yLicgKyAoZXIgPyAnICgnICsgZXIubWVzc2FnZSArICcpJyA6ICcnKSk7XG4gICAgZXJyLmNvbnRleHQgPSBlcjtcbiAgICB0aHJvdyBlcnI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50XG4gIH1cblxuICB2YXIgaGFuZGxlciA9IGV2ZW50c1t0eXBlXTtcblxuICBpZiAoaGFuZGxlciA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBpZiAodHlwZW9mIGhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICBSZWZsZWN0QXBwbHkoaGFuZGxlciwgdGhpcywgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGxlbiA9IGhhbmRsZXIubGVuZ3RoO1xuICAgIHZhciBsaXN0ZW5lcnMgPSBhcnJheUNsb25lKGhhbmRsZXIsIGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSlcbiAgICAgIFJlZmxlY3RBcHBseShsaXN0ZW5lcnNbaV0sIHRoaXMsIGFyZ3MpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5mdW5jdGlvbiBfYWRkTGlzdGVuZXIodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lciwgcHJlcGVuZCkge1xuICB2YXIgbTtcbiAgdmFyIGV2ZW50cztcbiAgdmFyIGV4aXN0aW5nO1xuXG4gIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGxpc3RlbmVyKTtcbiAgfVxuXG4gIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGFyZ2V0Ll9ldmVudHNDb3VudCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgLy8gVG8gYXZvaWQgcmVjdXJzaW9uIGluIHRoZSBjYXNlIHRoYXQgdHlwZSA9PT0gXCJuZXdMaXN0ZW5lclwiISBCZWZvcmVcbiAgICAvLyBhZGRpbmcgaXQgdG8gdGhlIGxpc3RlbmVycywgZmlyc3QgZW1pdCBcIm5ld0xpc3RlbmVyXCIuXG4gICAgaWYgKGV2ZW50cy5uZXdMaXN0ZW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0YXJnZXQuZW1pdCgnbmV3TGlzdGVuZXInLCB0eXBlLFxuICAgICAgICAgICAgICAgICAgbGlzdGVuZXIubGlzdGVuZXIgPyBsaXN0ZW5lci5saXN0ZW5lciA6IGxpc3RlbmVyKTtcblxuICAgICAgLy8gUmUtYXNzaWduIGBldmVudHNgIGJlY2F1c2UgYSBuZXdMaXN0ZW5lciBoYW5kbGVyIGNvdWxkIGhhdmUgY2F1c2VkIHRoZVxuICAgICAgLy8gdGhpcy5fZXZlbnRzIHRvIGJlIGFzc2lnbmVkIHRvIGEgbmV3IG9iamVjdFxuICAgICAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG4gICAgfVxuICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdO1xuICB9XG5cbiAgaWYgKGV4aXN0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBPcHRpbWl6ZSB0aGUgY2FzZSBvZiBvbmUgbGlzdGVuZXIuIERvbid0IG5lZWQgdGhlIGV4dHJhIGFycmF5IG9iamVjdC5cbiAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXSA9IGxpc3RlbmVyO1xuICAgICsrdGFyZ2V0Ll9ldmVudHNDb3VudDtcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIGV4aXN0aW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBBZGRpbmcgdGhlIHNlY29uZCBlbGVtZW50LCBuZWVkIHRvIGNoYW5nZSB0byBhcnJheS5cbiAgICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdID1cbiAgICAgICAgcHJlcGVuZCA/IFtsaXN0ZW5lciwgZXhpc3RpbmddIDogW2V4aXN0aW5nLCBsaXN0ZW5lcl07XG4gICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGdvdCBhbiBhcnJheSwganVzdCBhcHBlbmQuXG4gICAgfSBlbHNlIGlmIChwcmVwZW5kKSB7XG4gICAgICBleGlzdGluZy51bnNoaWZ0KGxpc3RlbmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhpc3RpbmcucHVzaChsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIGxpc3RlbmVyIGxlYWtcbiAgICBtID0gJGdldE1heExpc3RlbmVycyh0YXJnZXQpO1xuICAgIGlmIChtID4gMCAmJiBleGlzdGluZy5sZW5ndGggPiBtICYmICFleGlzdGluZy53YXJuZWQpIHtcbiAgICAgIGV4aXN0aW5nLndhcm5lZCA9IHRydWU7XG4gICAgICAvLyBObyBlcnJvciBjb2RlIGZvciB0aGlzIHNpbmNlIGl0IGlzIGEgV2FybmluZ1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICB2YXIgdyA9IG5ldyBFcnJvcignUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcubGVuZ3RoICsgJyAnICsgU3RyaW5nKHR5cGUpICsgJyBsaXN0ZW5lcnMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNyZWFzZSBsaW1pdCcpO1xuICAgICAgdy5uYW1lID0gJ01heExpc3RlbmVyc0V4Y2VlZGVkV2FybmluZyc7XG4gICAgICB3LmVtaXR0ZXIgPSB0YXJnZXQ7XG4gICAgICB3LnR5cGUgPSB0eXBlO1xuICAgICAgdy5jb3VudCA9IGV4aXN0aW5nLmxlbmd0aDtcbiAgICAgIFByb2Nlc3NFbWl0V2FybmluZyh3KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyID0gZnVuY3Rpb24gYWRkTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgcmV0dXJuIF9hZGRMaXN0ZW5lcih0aGlzLCB0eXBlLCBsaXN0ZW5lciwgZmFsc2UpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyID1cbiAgICBmdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBfYWRkTGlzdGVuZXIodGhpcywgdHlwZSwgbGlzdGVuZXIsIHRydWUpO1xuICAgIH07XG5cbmZ1bmN0aW9uIG9uY2VXcmFwcGVyKCkge1xuICB2YXIgYXJncyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgYXJncy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gIGlmICghdGhpcy5maXJlZCkge1xuICAgIHRoaXMudGFyZ2V0LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSwgdGhpcy53cmFwRm4pO1xuICAgIHRoaXMuZmlyZWQgPSB0cnVlO1xuICAgIFJlZmxlY3RBcHBseSh0aGlzLmxpc3RlbmVyLCB0aGlzLnRhcmdldCwgYXJncyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX29uY2VXcmFwKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIpIHtcbiAgdmFyIHN0YXRlID0geyBmaXJlZDogZmFsc2UsIHdyYXBGbjogdW5kZWZpbmVkLCB0YXJnZXQ6IHRhcmdldCwgdHlwZTogdHlwZSwgbGlzdGVuZXI6IGxpc3RlbmVyIH07XG4gIHZhciB3cmFwcGVkID0gb25jZVdyYXBwZXIuYmluZChzdGF0ZSk7XG4gIHdyYXBwZWQubGlzdGVuZXIgPSBsaXN0ZW5lcjtcbiAgc3RhdGUud3JhcEZuID0gd3JhcHBlZDtcbiAgcmV0dXJuIHdyYXBwZWQ7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub25jZSA9IGZ1bmN0aW9uIG9uY2UodHlwZSwgbGlzdGVuZXIpIHtcbiAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgbGlzdGVuZXIpO1xuICB9XG4gIHRoaXMub24odHlwZSwgX29uY2VXcmFwKHRoaXMsIHR5cGUsIGxpc3RlbmVyKSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyID1cbiAgICBmdW5jdGlvbiBwcmVwZW5kT25jZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgbGlzdGVuZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy5wcmVwZW5kTGlzdGVuZXIodHlwZSwgX29uY2VXcmFwKHRoaXMsIHR5cGUsIGxpc3RlbmVyKSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG4vLyBFbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWYgYW5kIG9ubHkgaWYgdGhlIGxpc3RlbmVyIHdhcyByZW1vdmVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIHZhciBsaXN0LCBldmVudHMsIHBvc2l0aW9uLCBpLCBvcmlnaW5hbExpc3RlbmVyO1xuXG4gICAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgbGlzdGVuZXIpO1xuICAgICAgfVxuXG4gICAgICBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gICAgICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICBsaXN0ID0gZXZlbnRzW3R5cGVdO1xuICAgICAgaWYgKGxpc3QgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIGlmIChsaXN0ID09PSBsaXN0ZW5lciB8fCBsaXN0Lmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICBpZiAoLS10aGlzLl9ldmVudHNDb3VudCA9PT0gMClcbiAgICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgZXZlbnRzW3R5cGVdO1xuICAgICAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIpXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgbGlzdC5saXN0ZW5lciB8fCBsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGxpc3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcG9zaXRpb24gPSAtMTtcblxuICAgICAgICBmb3IgKGkgPSBsaXN0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgaWYgKGxpc3RbaV0gPT09IGxpc3RlbmVyIHx8IGxpc3RbaV0ubGlzdGVuZXIgPT09IGxpc3RlbmVyKSB7XG4gICAgICAgICAgICBvcmlnaW5hbExpc3RlbmVyID0gbGlzdFtpXS5saXN0ZW5lcjtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwb3NpdGlvbiA8IDApXG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSAwKVxuICAgICAgICAgIGxpc3Quc2hpZnQoKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgc3BsaWNlT25lKGxpc3QsIHBvc2l0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICBldmVudHNbdHlwZV0gPSBsaXN0WzBdO1xuXG4gICAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgb3JpZ2luYWxMaXN0ZW5lciB8fCBsaXN0ZW5lcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub2ZmID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPVxuICAgIGZ1bmN0aW9uIHJlbW92ZUFsbExpc3RlbmVycyh0eXBlKSB7XG4gICAgICB2YXIgbGlzdGVuZXJzLCBldmVudHMsIGk7XG5cbiAgICAgIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgICAgIGlmIChldmVudHMgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIC8vIG5vdCBsaXN0ZW5pbmcgZm9yIHJlbW92ZUxpc3RlbmVyLCBubyBuZWVkIHRvIGVtaXRcbiAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50c1t0eXBlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKC0tdGhpcy5fZXZlbnRzQ291bnQgPT09IDApXG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGRlbGV0ZSBldmVudHNbdHlwZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIC8vIGVtaXQgcmVtb3ZlTGlzdGVuZXIgZm9yIGFsbCBsaXN0ZW5lcnMgb24gYWxsIGV2ZW50c1xuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhldmVudHMpO1xuICAgICAgICB2YXIga2V5O1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3JlbW92ZUxpc3RlbmVyJykgY29udGludWU7XG4gICAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygncmVtb3ZlTGlzdGVuZXInKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgbGlzdGVuZXJzID0gZXZlbnRzW3R5cGVdO1xuXG4gICAgICBpZiAodHlwZW9mIGxpc3RlbmVycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVycyk7XG4gICAgICB9IGVsc2UgaWYgKGxpc3RlbmVycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIExJRk8gb3JkZXJcbiAgICAgICAgZm9yIChpID0gbGlzdGVuZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbmZ1bmN0aW9uIF9saXN0ZW5lcnModGFyZ2V0LCB0eXBlLCB1bndyYXApIHtcbiAgdmFyIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuXG4gIGlmIChldmVudHMgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gW107XG5cbiAgdmFyIGV2bGlzdGVuZXIgPSBldmVudHNbdHlwZV07XG4gIGlmIChldmxpc3RlbmVyID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIFtdO1xuXG4gIGlmICh0eXBlb2YgZXZsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJylcbiAgICByZXR1cm4gdW53cmFwID8gW2V2bGlzdGVuZXIubGlzdGVuZXIgfHwgZXZsaXN0ZW5lcl0gOiBbZXZsaXN0ZW5lcl07XG5cbiAgcmV0dXJuIHVud3JhcCA/XG4gICAgdW53cmFwTGlzdGVuZXJzKGV2bGlzdGVuZXIpIDogYXJyYXlDbG9uZShldmxpc3RlbmVyLCBldmxpc3RlbmVyLmxlbmd0aCk7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24gbGlzdGVuZXJzKHR5cGUpIHtcbiAgcmV0dXJuIF9saXN0ZW5lcnModGhpcywgdHlwZSwgdHJ1ZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJhd0xpc3RlbmVycyA9IGZ1bmN0aW9uIHJhd0xpc3RlbmVycyh0eXBlKSB7XG4gIHJldHVybiBfbGlzdGVuZXJzKHRoaXMsIHR5cGUsIGZhbHNlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICBpZiAodHlwZW9mIGVtaXR0ZXIubGlzdGVuZXJDb3VudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBlbWl0dGVyLmxpc3RlbmVyQ291bnQodHlwZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxpc3RlbmVyQ291bnQuY2FsbChlbWl0dGVyLCB0eXBlKTtcbiAgfVxufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lckNvdW50ID0gbGlzdGVuZXJDb3VudDtcbmZ1bmN0aW9uIGxpc3RlbmVyQ291bnQodHlwZSkge1xuICB2YXIgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuXG4gIGlmIChldmVudHMgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBldmxpc3RlbmVyID0gZXZlbnRzW3R5cGVdO1xuXG4gICAgaWYgKHR5cGVvZiBldmxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2UgaWYgKGV2bGlzdGVuZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGV2bGlzdGVuZXIubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmV2ZW50TmFtZXMgPSBmdW5jdGlvbiBldmVudE5hbWVzKCkge1xuICByZXR1cm4gdGhpcy5fZXZlbnRzQ291bnQgPiAwID8gUmVmbGVjdE93bktleXModGhpcy5fZXZlbnRzKSA6IFtdO1xufTtcblxuZnVuY3Rpb24gYXJyYXlDbG9uZShhcnIsIG4pIHtcbiAgdmFyIGNvcHkgPSBuZXcgQXJyYXkobik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKVxuICAgIGNvcHlbaV0gPSBhcnJbaV07XG4gIHJldHVybiBjb3B5O1xufVxuXG5mdW5jdGlvbiBzcGxpY2VPbmUobGlzdCwgaW5kZXgpIHtcbiAgZm9yICg7IGluZGV4ICsgMSA8IGxpc3QubGVuZ3RoOyBpbmRleCsrKVxuICAgIGxpc3RbaW5kZXhdID0gbGlzdFtpbmRleCArIDFdO1xuICBsaXN0LnBvcCgpO1xufVxuXG5mdW5jdGlvbiB1bndyYXBMaXN0ZW5lcnMoYXJyKSB7XG4gIHZhciByZXQgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmV0Lmxlbmd0aDsgKytpKSB7XG4gICAgcmV0W2ldID0gYXJyW2ldLmxpc3RlbmVyIHx8IGFycltpXTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZXZlbnRzL2V2ZW50cy5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///31\n");

/***/ }),
/* 32 */
/***/ (function(module, exports, __webpack_require__) {

eval("exports = module.exports = __webpack_require__(52);\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = __webpack_require__(33);\nexports.Duplex = __webpack_require__(12);\nexports.Transform = __webpack_require__(55);\nexports.PassThrough = __webpack_require__(136);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLWJyb3dzZXIuanM/NzEyNSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3JlYWRhYmxlLmpzJyk7XG5leHBvcnRzLlN0cmVhbSA9IGV4cG9ydHM7XG5leHBvcnRzLlJlYWRhYmxlID0gZXhwb3J0cztcbmV4cG9ydHMuV3JpdGFibGUgPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzJyk7XG5leHBvcnRzLkR1cGxleCA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fZHVwbGV4LmpzJyk7XG5leHBvcnRzLlRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzJyk7XG5leHBvcnRzLlBhc3NUaHJvdWdoID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcycpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLWJyb3dzZXIuanNcbi8vIG1vZHVsZSBpZCA9IDMyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///32\n");

/***/ }),
/* 33 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("/* WEBPACK VAR INJECTION */(function(process, setImmediate, global) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n\n\n/*<replacement>*/\n\nvar pna = __webpack_require__(23);\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = __webpack_require__(16);\nutil.inherits = __webpack_require__(0);\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: __webpack_require__(135)\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = __webpack_require__(53);\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = __webpack_require__(1).Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = __webpack_require__(54);\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n  Duplex = Duplex || __webpack_require__(12);\n\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  var isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  var hwm = options.highWaterMark;\n  var writableHwm = options.writableHighWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function () {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function (object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function (object) {\n    return object instanceof this;\n  };\n}\n\nfunction Writable(options) {\n  Duplex = Duplex || __webpack_require__(12);\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n  if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n    return new Writable(options);\n  }\n\n  this._writableState = new WritableState(options, this);\n\n  // legacy.\n  this.writable = true;\n\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n\n    if (typeof options.writev === 'function') this._writev = options.writev;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n  var er = new Error('write after end');\n  // TODO: defer error events consistently everywhere, not just the cb\n  stream.emit('error', er);\n  pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var valid = true;\n  var er = false;\n\n  if (chunk === null) {\n    er = new TypeError('May not write null values to stream');\n  } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  if (er) {\n    stream.emit('error', er);\n    pna.nextTick(cb, er);\n    valid = false;\n  }\n  return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n  if (typeof cb !== 'function') cb = nop;\n\n  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n\n  return ret;\n};\n\nWritable.prototype.cork = function () {\n  var state = this._writableState;\n\n  state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n\n  if (state.corked) {\n    state.corked--;\n\n    if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n\n  state.length += len;\n\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n\n  return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    pna.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    pna.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    stream.emit('error', er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\n\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n\n  onwriteStateUpdate(state);\n\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state);\n\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n\n    if (sync) {\n      /*<replacement>*/\n      asyncWrite(afterWrite, stream, state, finished, cb);\n      /*</replacement>*/\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      stream.emit('error', err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function') {\n      state.pendingcb++;\n      state.finalCalled = true;\n      pna.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\n\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n    }\n  }\n  return need;\n}\n\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n  if (state.corkedRequestsFree) {\n    state.corkedRequestsFree.next = corkReq;\n  } else {\n    state.corkedRequestsFree = corkReq;\n  }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  get: function () {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  this.end();\n  cb(err);\n};\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(10), __webpack_require__(133).setImmediate, __webpack_require__(9)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzP2VkZDQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIEEgYml0IHNpbXBsZXIgdGhhbiByZWFkYWJsZSBzdHJlYW1zLlxuLy8gSW1wbGVtZW50IGFuIGFzeW5jIC5fd3JpdGUoY2h1bmssIGVuY29kaW5nLCBjYiksIGFuZCBpdCdsbCBoYW5kbGUgYWxsXG4vLyB0aGUgZHJhaW4gZXZlbnQgZW1pc3Npb24gYW5kIGJ1ZmZlcmluZy5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgcG5hID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdyaXRhYmxlO1xuXG4vKiA8cmVwbGFjZW1lbnQ+ICovXG5mdW5jdGlvbiBXcml0ZVJlcShjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRoaXMuY2h1bmsgPSBjaHVuaztcbiAgdGhpcy5lbmNvZGluZyA9IGVuY29kaW5nO1xuICB0aGlzLmNhbGxiYWNrID0gY2I7XG4gIHRoaXMubmV4dCA9IG51bGw7XG59XG5cbi8vIEl0IHNlZW1zIGEgbGlua2VkIGxpc3QgYnV0IGl0IGlzIG5vdFxuLy8gdGhlcmUgd2lsbCBiZSBvbmx5IDIgb2YgdGhlc2UgZm9yIGVhY2ggc3RyZWFtXG5mdW5jdGlvbiBDb3JrZWRSZXF1ZXN0KHN0YXRlKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgdGhpcy5lbnRyeSA9IG51bGw7XG4gIHRoaXMuZmluaXNoID0gZnVuY3Rpb24gKCkge1xuICAgIG9uQ29ya2VkRmluaXNoKF90aGlzLCBzdGF0ZSk7XG4gIH07XG59XG4vKiA8L3JlcGxhY2VtZW50PiAqL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGFzeW5jV3JpdGUgPSAhcHJvY2Vzcy5icm93c2VyICYmIFsndjAuMTAnLCAndjAuOS4nXS5pbmRleE9mKHByb2Nlc3MudmVyc2lvbi5zbGljZSgwLCA1KSkgPiAtMSA/IHNldEltbWVkaWF0ZSA6IHBuYS5uZXh0VGljaztcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIER1cGxleDtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5Xcml0YWJsZS5Xcml0YWJsZVN0YXRlID0gV3JpdGFibGVTdGF0ZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGludGVybmFsVXRpbCA9IHtcbiAgZGVwcmVjYXRlOiByZXF1aXJlKCd1dGlsLWRlcHJlY2F0ZScpXG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlcjtcbnZhciBPdXJVaW50OEFycmF5ID0gZ2xvYmFsLlVpbnQ4QXJyYXkgfHwgZnVuY3Rpb24gKCkge307XG5mdW5jdGlvbiBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShjaHVuayk7XG59XG5mdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikge1xuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKG9iaikgfHwgb2JqIGluc3RhbmNlb2YgT3VyVWludDhBcnJheTtcbn1cblxuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBkZXN0cm95SW1wbCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95Jyk7XG5cbnV0aWwuaW5oZXJpdHMoV3JpdGFibGUsIFN0cmVhbSk7XG5cbmZ1bmN0aW9uIG5vcCgpIHt9XG5cbmZ1bmN0aW9uIFdyaXRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gRHVwbGV4IHN0cmVhbXMgYXJlIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLCBidXQgc2hhcmVcbiAgLy8gdGhlIHNhbWUgb3B0aW9ucyBvYmplY3QuXG4gIC8vIEhvd2V2ZXIsIHNvbWUgY2FzZXMgcmVxdWlyZSBzZXR0aW5nIG9wdGlvbnMgdG8gZGlmZmVyZW50XG4gIC8vIHZhbHVlcyBmb3IgdGhlIHJlYWRhYmxlIGFuZCB0aGUgd3JpdGFibGUgc2lkZXMgb2YgdGhlIGR1cGxleCBzdHJlYW0uXG4gIC8vIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHByb3ZpZGVkIHNlcGFyYXRlbHkgYXMgcmVhZGFibGVYWFggYW5kIHdyaXRhYmxlWFhYLlxuICB2YXIgaXNEdXBsZXggPSBzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXg7XG5cbiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHRoaXMgc3RyZWFtXG4gIC8vIGNvbnRhaW5zIGJ1ZmZlcnMgb3Igb2JqZWN0cy5cbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG5cbiAgaWYgKGlzRHVwbGV4KSB0aGlzLm9iamVjdE1vZGUgPSB0aGlzLm9iamVjdE1vZGUgfHwgISFvcHRpb25zLndyaXRhYmxlT2JqZWN0TW9kZTtcblxuICAvLyB0aGUgcG9pbnQgYXQgd2hpY2ggd3JpdGUoKSBzdGFydHMgcmV0dXJuaW5nIGZhbHNlXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgdGhhdCB3ZSBhbHdheXMgcmV0dXJuIGZhbHNlIGlmXG4gIC8vIHRoZSBlbnRpcmUgYnVmZmVyIGlzIG5vdCBmbHVzaGVkIGltbWVkaWF0ZWx5IG9uIHdyaXRlKClcbiAgdmFyIGh3bSA9IG9wdGlvbnMuaGlnaFdhdGVyTWFyaztcbiAgdmFyIHdyaXRhYmxlSHdtID0gb3B0aW9ucy53cml0YWJsZUhpZ2hXYXRlck1hcms7XG4gIHZhciBkZWZhdWx0SHdtID0gdGhpcy5vYmplY3RNb2RlID8gMTYgOiAxNiAqIDEwMjQ7XG5cbiAgaWYgKGh3bSB8fCBod20gPT09IDApIHRoaXMuaGlnaFdhdGVyTWFyayA9IGh3bTtlbHNlIGlmIChpc0R1cGxleCAmJiAod3JpdGFibGVId20gfHwgd3JpdGFibGVId20gPT09IDApKSB0aGlzLmhpZ2hXYXRlck1hcmsgPSB3cml0YWJsZUh3bTtlbHNlIHRoaXMuaGlnaFdhdGVyTWFyayA9IGRlZmF1bHRId207XG5cbiAgLy8gY2FzdCB0byBpbnRzLlxuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBNYXRoLmZsb29yKHRoaXMuaGlnaFdhdGVyTWFyayk7XG5cbiAgLy8gaWYgX2ZpbmFsIGhhcyBiZWVuIGNhbGxlZFxuICB0aGlzLmZpbmFsQ2FsbGVkID0gZmFsc2U7XG5cbiAgLy8gZHJhaW4gZXZlbnQgZmxhZy5cbiAgdGhpcy5uZWVkRHJhaW4gPSBmYWxzZTtcbiAgLy8gYXQgdGhlIHN0YXJ0IG9mIGNhbGxpbmcgZW5kKClcbiAgdGhpcy5lbmRpbmcgPSBmYWxzZTtcbiAgLy8gd2hlbiBlbmQoKSBoYXMgYmVlbiBjYWxsZWQsIGFuZCByZXR1cm5lZFxuICB0aGlzLmVuZGVkID0gZmFsc2U7XG4gIC8vIHdoZW4gJ2ZpbmlzaCcgaXMgZW1pdHRlZFxuICB0aGlzLmZpbmlzaGVkID0gZmFsc2U7XG5cbiAgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkXG4gIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG5cbiAgLy8gc2hvdWxkIHdlIGRlY29kZSBzdHJpbmdzIGludG8gYnVmZmVycyBiZWZvcmUgcGFzc2luZyB0byBfd3JpdGU/XG4gIC8vIHRoaXMgaXMgaGVyZSBzbyB0aGF0IHNvbWUgbm9kZS1jb3JlIHN0cmVhbXMgY2FuIG9wdGltaXplIHN0cmluZ1xuICAvLyBoYW5kbGluZyBhdCBhIGxvd2VyIGxldmVsLlxuICB2YXIgbm9EZWNvZGUgPSBvcHRpb25zLmRlY29kZVN0cmluZ3MgPT09IGZhbHNlO1xuICB0aGlzLmRlY29kZVN0cmluZ3MgPSAhbm9EZWNvZGU7XG5cbiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7XG5cbiAgLy8gbm90IGFuIGFjdHVhbCBidWZmZXIgd2Uga2VlcCB0cmFjayBvZiwgYnV0IGEgbWVhc3VyZW1lbnRcbiAgLy8gb2YgaG93IG11Y2ggd2UncmUgd2FpdGluZyB0byBnZXQgcHVzaGVkIHRvIHNvbWUgdW5kZXJseWluZ1xuICAvLyBzb2NrZXQgb3IgZmlsZS5cbiAgdGhpcy5sZW5ndGggPSAwO1xuXG4gIC8vIGEgZmxhZyB0byBzZWUgd2hlbiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGEgd3JpdGUuXG4gIHRoaXMud3JpdGluZyA9IGZhbHNlO1xuXG4gIC8vIHdoZW4gdHJ1ZSBhbGwgd3JpdGVzIHdpbGwgYmUgYnVmZmVyZWQgdW50aWwgLnVuY29yaygpIGNhbGxcbiAgdGhpcy5jb3JrZWQgPSAwO1xuXG4gIC8vIGEgZmxhZyB0byBiZSBhYmxlIHRvIHRlbGwgaWYgdGhlIG9ud3JpdGUgY2IgaXMgY2FsbGVkIGltbWVkaWF0ZWx5LFxuICAvLyBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlIGFueVxuICAvLyBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCB3cml0ZSBjYWxsLlxuICB0aGlzLnN5bmMgPSB0cnVlO1xuXG4gIC8vIGEgZmxhZyB0byBrbm93IGlmIHdlJ3JlIHByb2Nlc3NpbmcgcHJldmlvdXNseSBidWZmZXJlZCBpdGVtcywgd2hpY2hcbiAgLy8gbWF5IGNhbGwgdGhlIF93cml0ZSgpIGNhbGxiYWNrIGluIHRoZSBzYW1lIHRpY2ssIHNvIHRoYXQgd2UgZG9uJ3RcbiAgLy8gZW5kIHVwIGluIGFuIG92ZXJsYXBwZWQgb253cml0ZSBzaXR1YXRpb24uXG4gIHRoaXMuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlO1xuXG4gIC8vIHRoZSBjYWxsYmFjayB0aGF0J3MgcGFzc2VkIHRvIF93cml0ZShjaHVuayxjYilcbiAgdGhpcy5vbndyaXRlID0gZnVuY3Rpb24gKGVyKSB7XG4gICAgb253cml0ZShzdHJlYW0sIGVyKTtcbiAgfTtcblxuICAvLyB0aGUgY2FsbGJhY2sgdGhhdCB0aGUgdXNlciBzdXBwbGllcyB0byB3cml0ZShjaHVuayxlbmNvZGluZyxjYilcbiAgdGhpcy53cml0ZWNiID0gbnVsbDtcblxuICAvLyB0aGUgYW1vdW50IHRoYXQgaXMgYmVpbmcgd3JpdHRlbiB3aGVuIF93cml0ZSBpcyBjYWxsZWQuXG4gIHRoaXMud3JpdGVsZW4gPSAwO1xuXG4gIHRoaXMuYnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgdGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcblxuICAvLyBudW1iZXIgb2YgcGVuZGluZyB1c2VyLXN1cHBsaWVkIHdyaXRlIGNhbGxiYWNrc1xuICAvLyB0aGlzIG11c3QgYmUgMCBiZWZvcmUgJ2ZpbmlzaCcgY2FuIGJlIGVtaXR0ZWRcbiAgdGhpcy5wZW5kaW5nY2IgPSAwO1xuXG4gIC8vIGVtaXQgcHJlZmluaXNoIGlmIHRoZSBvbmx5IHRoaW5nIHdlJ3JlIHdhaXRpbmcgZm9yIGlzIF93cml0ZSBjYnNcbiAgLy8gVGhpcyBpcyByZWxldmFudCBmb3Igc3luY2hyb25vdXMgVHJhbnNmb3JtIHN0cmVhbXNcbiAgdGhpcy5wcmVmaW5pc2hlZCA9IGZhbHNlO1xuXG4gIC8vIFRydWUgaWYgdGhlIGVycm9yIHdhcyBhbHJlYWR5IGVtaXR0ZWQgYW5kIHNob3VsZCBub3QgYmUgdGhyb3duIGFnYWluXG4gIHRoaXMuZXJyb3JFbWl0dGVkID0gZmFsc2U7XG5cbiAgLy8gY291bnQgYnVmZmVyZWQgcmVxdWVzdHNcbiAgdGhpcy5idWZmZXJlZFJlcXVlc3RDb3VudCA9IDA7XG5cbiAgLy8gYWxsb2NhdGUgdGhlIGZpcnN0IENvcmtlZFJlcXVlc3QsIHRoZXJlIGlzIGFsd2F5c1xuICAvLyBvbmUgYWxsb2NhdGVkIGFuZCBmcmVlIHRvIHVzZSwgYW5kIHdlIG1haW50YWluIGF0IG1vc3QgdHdvXG4gIHRoaXMuY29ya2VkUmVxdWVzdHNGcmVlID0gbmV3IENvcmtlZFJlcXVlc3QodGhpcyk7XG59XG5cbldyaXRhYmxlU3RhdGUucHJvdG90eXBlLmdldEJ1ZmZlciA9IGZ1bmN0aW9uIGdldEJ1ZmZlcigpIHtcbiAgdmFyIGN1cnJlbnQgPSB0aGlzLmJ1ZmZlcmVkUmVxdWVzdDtcbiAgdmFyIG91dCA9IFtdO1xuICB3aGlsZSAoY3VycmVudCkge1xuICAgIG91dC5wdXNoKGN1cnJlbnQpO1xuICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn07XG5cbihmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlU3RhdGUucHJvdG90eXBlLCAnYnVmZmVyJywge1xuICAgICAgZ2V0OiBpbnRlcm5hbFV0aWwuZGVwcmVjYXRlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnVmZmVyKCk7XG4gICAgICB9LCAnX3dyaXRhYmxlU3RhdGUuYnVmZmVyIGlzIGRlcHJlY2F0ZWQuIFVzZSBfd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIgJyArICdpbnN0ZWFkLicsICdERVAwMDAzJylcbiAgICB9KTtcbiAgfSBjYXRjaCAoXykge31cbn0pKCk7XG5cbi8vIFRlc3QgX3dyaXRhYmxlU3RhdGUgZm9yIGluaGVyaXRhbmNlIHRvIGFjY291bnQgZm9yIER1cGxleCBzdHJlYW1zLFxuLy8gd2hvc2UgcHJvdG90eXBlIGNoYWluIG9ubHkgcG9pbnRzIHRvIFJlYWRhYmxlLlxudmFyIHJlYWxIYXNJbnN0YW5jZTtcbmlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5oYXNJbnN0YW5jZSAmJiB0eXBlb2YgRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0gPT09ICdmdW5jdGlvbicpIHtcbiAgcmVhbEhhc0luc3RhbmNlID0gRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZSwgU3ltYm9sLmhhc0luc3RhbmNlLCB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICAgIGlmIChyZWFsSGFzSW5zdGFuY2UuY2FsbCh0aGlzLCBvYmplY3QpKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmICh0aGlzICE9PSBXcml0YWJsZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICByZXR1cm4gb2JqZWN0ICYmIG9iamVjdC5fd3JpdGFibGVTdGF0ZSBpbnN0YW5jZW9mIFdyaXRhYmxlU3RhdGU7XG4gICAgfVxuICB9KTtcbn0gZWxzZSB7XG4gIHJlYWxIYXNJbnN0YW5jZSA9IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgdGhpcztcbiAgfTtcbn1cblxuZnVuY3Rpb24gV3JpdGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIC8vIFdyaXRhYmxlIGN0b3IgaXMgYXBwbGllZCB0byBEdXBsZXhlcywgdG9vLlxuICAvLyBgcmVhbEhhc0luc3RhbmNlYCBpcyBuZWNlc3NhcnkgYmVjYXVzZSB1c2luZyBwbGFpbiBgaW5zdGFuY2VvZmBcbiAgLy8gd291bGQgcmV0dXJuIGZhbHNlLCBhcyBubyBgX3dyaXRhYmxlU3RhdGVgIHByb3BlcnR5IGlzIGF0dGFjaGVkLlxuXG4gIC8vIFRyeWluZyB0byB1c2UgdGhlIGN1c3RvbSBgaW5zdGFuY2VvZmAgZm9yIFdyaXRhYmxlIGhlcmUgd2lsbCBhbHNvIGJyZWFrIHRoZVxuICAvLyBOb2RlLmpzIExhenlUcmFuc2Zvcm0gaW1wbGVtZW50YXRpb24sIHdoaWNoIGhhcyBhIG5vbi10cml2aWFsIGdldHRlciBmb3JcbiAgLy8gYF93cml0YWJsZVN0YXRlYCB0aGF0IHdvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uLlxuICBpZiAoIXJlYWxIYXNJbnN0YW5jZS5jYWxsKFdyaXRhYmxlLCB0aGlzKSAmJiAhKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKSB7XG4gICAgcmV0dXJuIG5ldyBXcml0YWJsZShvcHRpb25zKTtcbiAgfVxuXG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUgPSBuZXcgV3JpdGFibGVTdGF0ZShvcHRpb25zLCB0aGlzKTtcblxuICAvLyBsZWdhY3kuXG4gIHRoaXMud3JpdGFibGUgPSB0cnVlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRlID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZSA9IG9wdGlvbnMud3JpdGU7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMud3JpdGV2ID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZXYgPSBvcHRpb25zLndyaXRldjtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95O1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZpbmFsID09PSAnZnVuY3Rpb24nKSB0aGlzLl9maW5hbCA9IG9wdGlvbnMuZmluYWw7XG4gIH1cblxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn1cblxuLy8gT3RoZXJ3aXNlIHBlb3BsZSBjYW4gcGlwZSBXcml0YWJsZSBzdHJlYW1zLCB3aGljaCBpcyBqdXN0IHdyb25nLlxuV3JpdGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ0Nhbm5vdCBwaXBlLCBub3QgcmVhZGFibGUnKSk7XG59O1xuXG5mdW5jdGlvbiB3cml0ZUFmdGVyRW5kKHN0cmVhbSwgY2IpIHtcbiAgdmFyIGVyID0gbmV3IEVycm9yKCd3cml0ZSBhZnRlciBlbmQnKTtcbiAgLy8gVE9ETzogZGVmZXIgZXJyb3IgZXZlbnRzIGNvbnNpc3RlbnRseSBldmVyeXdoZXJlLCBub3QganVzdCB0aGUgY2JcbiAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICBwbmEubmV4dFRpY2soY2IsIGVyKTtcbn1cblxuLy8gQ2hlY2tzIHRoYXQgYSB1c2VyLXN1cHBsaWVkIGNodW5rIGlzIHZhbGlkLCBlc3BlY2lhbGx5IGZvciB0aGUgcGFydGljdWxhclxuLy8gbW9kZSB0aGUgc3RyZWFtIGlzIGluLiBDdXJyZW50bHkgdGhpcyBtZWFucyB0aGF0IGBudWxsYCBpcyBuZXZlciBhY2NlcHRlZFxuLy8gYW5kIHVuZGVmaW5lZC9ub24tc3RyaW5nIHZhbHVlcyBhcmUgb25seSBhbGxvd2VkIGluIG9iamVjdCBtb2RlLlxuZnVuY3Rpb24gdmFsaWRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgY2IpIHtcbiAgdmFyIHZhbGlkID0gdHJ1ZTtcbiAgdmFyIGVyID0gZmFsc2U7XG5cbiAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbScpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpO1xuICB9XG4gIGlmIChlcikge1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgICBwbmEubmV4dFRpY2soY2IsIGVyKTtcbiAgICB2YWxpZCA9IGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWxpZDtcbn1cblxuV3JpdGFibGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHJldCA9IGZhbHNlO1xuICB2YXIgaXNCdWYgPSAhc3RhdGUub2JqZWN0TW9kZSAmJiBfaXNVaW50OEFycmF5KGNodW5rKTtcblxuICBpZiAoaXNCdWYgJiYgIUJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIHtcbiAgICBjaHVuayA9IF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gZW5jb2Rpbmc7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9XG5cbiAgaWYgKGlzQnVmKSBlbmNvZGluZyA9ICdidWZmZXInO2Vsc2UgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG5cbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgY2IgPSBub3A7XG5cbiAgaWYgKHN0YXRlLmVuZGVkKSB3cml0ZUFmdGVyRW5kKHRoaXMsIGNiKTtlbHNlIGlmIChpc0J1ZiB8fCB2YWxpZENodW5rKHRoaXMsIHN0YXRlLCBjaHVuaywgY2IpKSB7XG4gICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgcmV0ID0gd3JpdGVPckJ1ZmZlcih0aGlzLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIHN0YXRlLmNvcmtlZCsrO1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLnVuY29yayA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkLS07XG5cbiAgICBpZiAoIXN0YXRlLndyaXRpbmcgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSBjbGVhckJ1ZmZlcih0aGlzLCBzdGF0ZSk7XG4gIH1cbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2RpbmcgPSBmdW5jdGlvbiBzZXREZWZhdWx0RW5jb2RpbmcoZW5jb2RpbmcpIHtcbiAgLy8gbm9kZTo6UGFyc2VFbmNvZGluZygpIHJlcXVpcmVzIGxvd2VyIGNhc2UuXG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnKSBlbmNvZGluZyA9IGVuY29kaW5nLnRvTG93ZXJDYXNlKCk7XG4gIGlmICghKFsnaGV4JywgJ3V0ZjgnLCAndXRmLTgnLCAnYXNjaWknLCAnYmluYXJ5JywgJ2Jhc2U2NCcsICd1Y3MyJywgJ3Vjcy0yJywgJ3V0ZjE2bGUnLCAndXRmLTE2bGUnLCAncmF3J10uaW5kZXhPZigoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZyk7XG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZykge1xuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgc3RhdGUuZGVjb2RlU3RyaW5ncyAhPT0gZmFsc2UgJiYgdHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgfVxuICByZXR1cm4gY2h1bms7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICd3cml0YWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pO1xuXG4vLyBpZiB3ZSdyZSBhbHJlYWR5IHdyaXRpbmcgc29tZXRoaW5nLCB0aGVuIGp1c3QgcHV0IHRoaXNcbi8vIGluIHRoZSBxdWV1ZSwgYW5kIHdhaXQgb3VyIHR1cm4uICBPdGhlcndpc2UsIGNhbGwgX3dyaXRlXG4vLyBJZiB3ZSByZXR1cm4gZmFsc2UsIHRoZW4gd2UgbmVlZCBhIGRyYWluIGV2ZW50LCBzbyBzZXQgdGhhdCBmbGFnLlxuZnVuY3Rpb24gd3JpdGVPckJ1ZmZlcihzdHJlYW0sIHN0YXRlLCBpc0J1ZiwgY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBpZiAoIWlzQnVmKSB7XG4gICAgdmFyIG5ld0NodW5rID0gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZyk7XG4gICAgaWYgKGNodW5rICE9PSBuZXdDaHVuaykge1xuICAgICAgaXNCdWYgPSB0cnVlO1xuICAgICAgZW5jb2RpbmcgPSAnYnVmZmVyJztcbiAgICAgIGNodW5rID0gbmV3Q2h1bms7XG4gICAgfVxuICB9XG4gIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcblxuICBzdGF0ZS5sZW5ndGggKz0gbGVuO1xuXG4gIHZhciByZXQgPSBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICAvLyB3ZSBtdXN0IGVuc3VyZSB0aGF0IHByZXZpb3VzIG5lZWREcmFpbiB3aWxsIG5vdCBiZSByZXNldCB0byBmYWxzZS5cbiAgaWYgKCFyZXQpIHN0YXRlLm5lZWREcmFpbiA9IHRydWU7XG5cbiAgaWYgKHN0YXRlLndyaXRpbmcgfHwgc3RhdGUuY29ya2VkKSB7XG4gICAgdmFyIGxhc3QgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSB7XG4gICAgICBjaHVuazogY2h1bmssXG4gICAgICBlbmNvZGluZzogZW5jb2RpbmcsXG4gICAgICBpc0J1ZjogaXNCdWYsXG4gICAgICBjYWxsYmFjazogY2IsXG4gICAgICBuZXh0OiBudWxsXG4gICAgfTtcbiAgICBpZiAobGFzdCkge1xuICAgICAgbGFzdC5uZXh0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9XG4gICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgKz0gMTtcbiAgfSBlbHNlIHtcbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCB3cml0ZXYsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBzdGF0ZS53cml0ZWxlbiA9IGxlbjtcbiAgc3RhdGUud3JpdGVjYiA9IGNiO1xuICBzdGF0ZS53cml0aW5nID0gdHJ1ZTtcbiAgc3RhdGUuc3luYyA9IHRydWU7XG4gIGlmICh3cml0ZXYpIHN0cmVhbS5fd3JpdGV2KGNodW5rLCBzdGF0ZS5vbndyaXRlKTtlbHNlIHN0cmVhbS5fd3JpdGUoY2h1bmssIGVuY29kaW5nLCBzdGF0ZS5vbndyaXRlKTtcbiAgc3RhdGUuc3luYyA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgc3luYywgZXIsIGNiKSB7XG4gIC0tc3RhdGUucGVuZGluZ2NiO1xuXG4gIGlmIChzeW5jKSB7XG4gICAgLy8gZGVmZXIgdGhlIGNhbGxiYWNrIGlmIHdlIGFyZSBiZWluZyBjYWxsZWQgc3luY2hyb25vdXNseVxuICAgIC8vIHRvIGF2b2lkIHBpbGluZyB1cCB0aGluZ3Mgb24gdGhlIHN0YWNrXG4gICAgcG5hLm5leHRUaWNrKGNiLCBlcik7XG4gICAgLy8gdGhpcyBjYW4gZW1pdCBmaW5pc2gsIGFuZCBpdCB3aWxsIGFsd2F5cyBoYXBwZW5cbiAgICAvLyBhZnRlciBlcnJvclxuICAgIHBuYS5uZXh0VGljayhmaW5pc2hNYXliZSwgc3RyZWFtLCBzdGF0ZSk7XG4gICAgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICB9IGVsc2Uge1xuICAgIC8vIHRoZSBjYWxsZXIgZXhwZWN0IHRoaXMgdG8gaGFwcGVuIGJlZm9yZSBpZlxuICAgIC8vIGl0IGlzIGFzeW5jXG4gICAgY2IoZXIpO1xuICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgICAvLyB0aGlzIGNhbiBlbWl0IGZpbmlzaCwgYnV0IGZpbmlzaCBtdXN0XG4gICAgLy8gYWx3YXlzIGZvbGxvdyBlcnJvclxuICAgIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGVTdGF0ZVVwZGF0ZShzdGF0ZSkge1xuICBzdGF0ZS53cml0aW5nID0gZmFsc2U7XG4gIHN0YXRlLndyaXRlY2IgPSBudWxsO1xuICBzdGF0ZS5sZW5ndGggLT0gc3RhdGUud3JpdGVsZW47XG4gIHN0YXRlLndyaXRlbGVuID0gMDtcbn1cblxuZnVuY3Rpb24gb253cml0ZShzdHJlYW0sIGVyKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHN5bmMgPSBzdGF0ZS5zeW5jO1xuICB2YXIgY2IgPSBzdGF0ZS53cml0ZWNiO1xuXG4gIG9ud3JpdGVTdGF0ZVVwZGF0ZShzdGF0ZSk7XG5cbiAgaWYgKGVyKSBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgc3luYywgZXIsIGNiKTtlbHNlIHtcbiAgICAvLyBDaGVjayBpZiB3ZSdyZSBhY3R1YWxseSByZWFkeSB0byBmaW5pc2gsIGJ1dCBkb24ndCBlbWl0IHlldFxuICAgIHZhciBmaW5pc2hlZCA9IG5lZWRGaW5pc2goc3RhdGUpO1xuXG4gICAgaWYgKCFmaW5pc2hlZCAmJiAhc3RhdGUuY29ya2VkICYmICFzdGF0ZS5idWZmZXJQcm9jZXNzaW5nICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCkge1xuICAgICAgY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHN5bmMpIHtcbiAgICAgIC8qPHJlcGxhY2VtZW50PiovXG4gICAgICBhc3luY1dyaXRlKGFmdGVyV3JpdGUsIHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYik7XG4gICAgICAvKjwvcmVwbGFjZW1lbnQ+Ki9cbiAgICB9IGVsc2Uge1xuICAgICAgYWZ0ZXJXcml0ZShzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYikge1xuICBpZiAoIWZpbmlzaGVkKSBvbndyaXRlRHJhaW4oc3RyZWFtLCBzdGF0ZSk7XG4gIHN0YXRlLnBlbmRpbmdjYi0tO1xuICBjYigpO1xuICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbn1cblxuLy8gTXVzdCBmb3JjZSBjYWxsYmFjayB0byBiZSBjYWxsZWQgb24gbmV4dFRpY2ssIHNvIHRoYXQgd2UgZG9uJ3Rcbi8vIGVtaXQgJ2RyYWluJyBiZWZvcmUgdGhlIHdyaXRlKCkgY29uc3VtZXIgZ2V0cyB0aGUgJ2ZhbHNlJyByZXR1cm5cbi8vIHZhbHVlLCBhbmQgaGFzIGEgY2hhbmNlIHRvIGF0dGFjaCBhICdkcmFpbicgbGlzdGVuZXIuXG5mdW5jdGlvbiBvbndyaXRlRHJhaW4oc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLm5lZWREcmFpbikge1xuICAgIHN0YXRlLm5lZWREcmFpbiA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdkcmFpbicpO1xuICB9XG59XG5cbi8vIGlmIHRoZXJlJ3Mgc29tZXRoaW5nIGluIHRoZSBidWZmZXIgd2FpdGluZywgdGhlbiBwcm9jZXNzIGl0XG5mdW5jdGlvbiBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKSB7XG4gIHN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgPSB0cnVlO1xuICB2YXIgZW50cnkgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3Q7XG5cbiAgaWYgKHN0cmVhbS5fd3JpdGV2ICYmIGVudHJ5ICYmIGVudHJ5Lm5leHQpIHtcbiAgICAvLyBGYXN0IGNhc2UsIHdyaXRlIGV2ZXJ5dGhpbmcgdXNpbmcgX3dyaXRldigpXG4gICAgdmFyIGwgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudDtcbiAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5KGwpO1xuICAgIHZhciBob2xkZXIgPSBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU7XG4gICAgaG9sZGVyLmVudHJ5ID0gZW50cnk7XG5cbiAgICB2YXIgY291bnQgPSAwO1xuICAgIHZhciBhbGxCdWZmZXJzID0gdHJ1ZTtcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIGJ1ZmZlcltjb3VudF0gPSBlbnRyeTtcbiAgICAgIGlmICghZW50cnkuaXNCdWYpIGFsbEJ1ZmZlcnMgPSBmYWxzZTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuICAgIGJ1ZmZlci5hbGxCdWZmZXJzID0gYWxsQnVmZmVycztcblxuICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgdHJ1ZSwgc3RhdGUubGVuZ3RoLCBidWZmZXIsICcnLCBob2xkZXIuZmluaXNoKTtcblxuICAgIC8vIGRvV3JpdGUgaXMgYWxtb3N0IGFsd2F5cyBhc3luYywgZGVmZXIgdGhlc2UgdG8gc2F2ZSBhIGJpdCBvZiB0aW1lXG4gICAgLy8gYXMgdGhlIGhvdCBwYXRoIGVuZHMgd2l0aCBkb1dyaXRlXG4gICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gICAgaWYgKGhvbGRlci5uZXh0KSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBob2xkZXIubmV4dDtcbiAgICAgIGhvbGRlci5uZXh0ID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gbmV3IENvcmtlZFJlcXVlc3Qoc3RhdGUpO1xuICAgIH1cbiAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgLy8gU2xvdyBjYXNlLCB3cml0ZSBjaHVua3Mgb25lLWJ5LW9uZVxuICAgIHdoaWxlIChlbnRyeSkge1xuICAgICAgdmFyIGNodW5rID0gZW50cnkuY2h1bms7XG4gICAgICB2YXIgZW5jb2RpbmcgPSBlbnRyeS5lbmNvZGluZztcbiAgICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgICAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuXG4gICAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQtLTtcbiAgICAgIC8vIGlmIHdlIGRpZG4ndCBjYWxsIHRoZSBvbndyaXRlIGltbWVkaWF0ZWx5LCB0aGVuXG4gICAgICAvLyBpdCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gd2FpdCB1bnRpbCBpdCBkb2VzLlxuICAgICAgLy8gYWxzbywgdGhhdCBtZWFucyB0aGF0IHRoZSBjaHVuayBhbmQgY2IgYXJlIGN1cnJlbnRseVxuICAgICAgLy8gYmVpbmcgcHJvY2Vzc2VkLCBzbyBtb3ZlIHRoZSBidWZmZXIgY291bnRlciBwYXN0IHRoZW0uXG4gICAgICBpZiAoc3RhdGUud3JpdGluZykge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW50cnkgPT09IG51bGwpIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB9XG5cbiAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID0gZW50cnk7XG4gIHN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgPSBmYWxzZTtcbn1cblxuV3JpdGFibGUucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIGNiKG5ldyBFcnJvcignX3dyaXRlKCkgaXMgbm90IGltcGxlbWVudGVkJykpO1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLl93cml0ZXYgPSBudWxsO1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAodHlwZW9mIGNodW5rID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBjaHVuaztcbiAgICBjaHVuayA9IG51bGw7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gZW5jb2Rpbmc7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9XG5cbiAgaWYgKGNodW5rICE9PSBudWxsICYmIGNodW5rICE9PSB1bmRlZmluZWQpIHRoaXMud3JpdGUoY2h1bmssIGVuY29kaW5nKTtcblxuICAvLyAuZW5kKCkgZnVsbHkgdW5jb3Jrc1xuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkID0gMTtcbiAgICB0aGlzLnVuY29yaygpO1xuICB9XG5cbiAgLy8gaWdub3JlIHVubmVjZXNzYXJ5IGVuZCgpIGNhbGxzLlxuICBpZiAoIXN0YXRlLmVuZGluZyAmJiAhc3RhdGUuZmluaXNoZWQpIGVuZFdyaXRhYmxlKHRoaXMsIHN0YXRlLCBjYik7XG59O1xuXG5mdW5jdGlvbiBuZWVkRmluaXNoKHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5lbmRpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9PT0gbnVsbCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLndyaXRpbmc7XG59XG5mdW5jdGlvbiBjYWxsRmluYWwoc3RyZWFtLCBzdGF0ZSkge1xuICBzdHJlYW0uX2ZpbmFsKGZ1bmN0aW9uIChlcnIpIHtcbiAgICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgIH1cbiAgICBzdGF0ZS5wcmVmaW5pc2hlZCA9IHRydWU7XG4gICAgc3RyZWFtLmVtaXQoJ3ByZWZpbmlzaCcpO1xuICAgIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucHJlZmluaXNoZWQgJiYgIXN0YXRlLmZpbmFsQ2FsbGVkKSB7XG4gICAgaWYgKHR5cGVvZiBzdHJlYW0uX2ZpbmFsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICAgIHN0YXRlLmZpbmFsQ2FsbGVkID0gdHJ1ZTtcbiAgICAgIHBuYS5uZXh0VGljayhjYWxsRmluYWwsIHN0cmVhbSwgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5wcmVmaW5pc2hlZCA9IHRydWU7XG4gICAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpIHtcbiAgdmFyIG5lZWQgPSBuZWVkRmluaXNoKHN0YXRlKTtcbiAgaWYgKG5lZWQpIHtcbiAgICBwcmVmaW5pc2goc3RyZWFtLCBzdGF0ZSk7XG4gICAgaWYgKHN0YXRlLnBlbmRpbmdjYiA9PT0gMCkge1xuICAgICAgc3RhdGUuZmluaXNoZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLmVtaXQoJ2ZpbmlzaCcpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmVlZDtcbn1cblxuZnVuY3Rpb24gZW5kV3JpdGFibGUoc3RyZWFtLCBzdGF0ZSwgY2IpIHtcbiAgc3RhdGUuZW5kaW5nID0gdHJ1ZTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIGlmIChjYikge1xuICAgIGlmIChzdGF0ZS5maW5pc2hlZCkgcG5hLm5leHRUaWNrKGNiKTtlbHNlIHN0cmVhbS5vbmNlKCdmaW5pc2gnLCBjYik7XG4gIH1cbiAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICBzdHJlYW0ud3JpdGFibGUgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gb25Db3JrZWRGaW5pc2goY29ya1JlcSwgc3RhdGUsIGVycikge1xuICB2YXIgZW50cnkgPSBjb3JrUmVxLmVudHJ5O1xuICBjb3JrUmVxLmVudHJ5ID0gbnVsbDtcbiAgd2hpbGUgKGVudHJ5KSB7XG4gICAgdmFyIGNiID0gZW50cnkuY2FsbGJhY2s7XG4gICAgc3RhdGUucGVuZGluZ2NiLS07XG4gICAgY2IoZXJyKTtcbiAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gIH1cbiAgaWYgKHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSkge1xuICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZS5uZXh0ID0gY29ya1JlcTtcbiAgfSBlbHNlIHtcbiAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBjb3JrUmVxO1xuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbVxuICAgIC8vIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcbiAgICBpZiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7XG5cbldyaXRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTtcbldyaXRhYmxlLnByb3RvdHlwZS5fdW5kZXN0cm95ID0gZGVzdHJveUltcGwudW5kZXN0cm95O1xuV3JpdGFibGUucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgdGhpcy5lbmQoKTtcbiAgY2IoZXJyKTtcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSAzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///33\n");

/***/ }),
/* 34 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n/*<replacement>*/\n\nvar Buffer = __webpack_require__(1).Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc3RyaW5nX2RlY29kZXIvbGliL3N0cmluZ19kZWNvZGVyLmpzPzVmODUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBpc0VuY29kaW5nID0gQnVmZmVyLmlzRW5jb2RpbmcgfHwgZnVuY3Rpb24gKGVuY29kaW5nKSB7XG4gIGVuY29kaW5nID0gJycgKyBlbmNvZGluZztcbiAgc3dpdGNoIChlbmNvZGluZyAmJiBlbmNvZGluZy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpjYXNlICd1dGY4JzpjYXNlICd1dGYtOCc6Y2FzZSAnYXNjaWknOmNhc2UgJ2JpbmFyeSc6Y2FzZSAnYmFzZTY0JzpjYXNlICd1Y3MyJzpjYXNlICd1Y3MtMic6Y2FzZSAndXRmMTZsZSc6Y2FzZSAndXRmLTE2bGUnOmNhc2UgJ3Jhdyc6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5mdW5jdGlvbiBfbm9ybWFsaXplRW5jb2RpbmcoZW5jKSB7XG4gIGlmICghZW5jKSByZXR1cm4gJ3V0ZjgnO1xuICB2YXIgcmV0cmllZDtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuYykge1xuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiAndXRmOCc7XG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gJ3V0ZjE2bGUnO1xuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiAnbGF0aW4xJztcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gZW5jO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHJldHJpZWQpIHJldHVybjsgLy8gdW5kZWZpbmVkXG4gICAgICAgIGVuYyA9ICgnJyArIGVuYykudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0cmllZCA9IHRydWU7XG4gICAgfVxuICB9XG59O1xuXG4vLyBEbyBub3QgY2FjaGUgYEJ1ZmZlci5pc0VuY29kaW5nYCB3aGVuIGNoZWNraW5nIGVuY29kaW5nIG5hbWVzIGFzIHNvbWVcbi8vIG1vZHVsZXMgbW9ua2V5LXBhdGNoIGl0IHRvIHN1cHBvcnQgYWRkaXRpb25hbCBlbmNvZGluZ3NcbmZ1bmN0aW9uIG5vcm1hbGl6ZUVuY29kaW5nKGVuYykge1xuICB2YXIgbmVuYyA9IF9ub3JtYWxpemVFbmNvZGluZyhlbmMpO1xuICBpZiAodHlwZW9mIG5lbmMgIT09ICdzdHJpbmcnICYmIChCdWZmZXIuaXNFbmNvZGluZyA9PT0gaXNFbmNvZGluZyB8fCAhaXNFbmNvZGluZyhlbmMpKSkgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jKTtcbiAgcmV0dXJuIG5lbmMgfHwgZW5jO1xufVxuXG4vLyBTdHJpbmdEZWNvZGVyIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgZWZmaWNpZW50bHkgc3BsaXR0aW5nIGEgc2VyaWVzIG9mXG4vLyBidWZmZXJzIGludG8gYSBzZXJpZXMgb2YgSlMgc3RyaW5ncyB3aXRob3V0IGJyZWFraW5nIGFwYXJ0IG11bHRpLWJ5dGVcbi8vIGNoYXJhY3RlcnMuXG5leHBvcnRzLlN0cmluZ0RlY29kZXIgPSBTdHJpbmdEZWNvZGVyO1xuZnVuY3Rpb24gU3RyaW5nRGVjb2RlcihlbmNvZGluZykge1xuICB0aGlzLmVuY29kaW5nID0gbm9ybWFsaXplRW5jb2RpbmcoZW5jb2RpbmcpO1xuICB2YXIgbmI7XG4gIHN3aXRjaCAodGhpcy5lbmNvZGluZykge1xuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgdGhpcy50ZXh0ID0gdXRmMTZUZXh0O1xuICAgICAgdGhpcy5lbmQgPSB1dGYxNkVuZDtcbiAgICAgIG5iID0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgdGhpcy5maWxsTGFzdCA9IHV0ZjhGaWxsTGFzdDtcbiAgICAgIG5iID0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICB0aGlzLnRleHQgPSBiYXNlNjRUZXh0O1xuICAgICAgdGhpcy5lbmQgPSBiYXNlNjRFbmQ7XG4gICAgICBuYiA9IDM7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhpcy53cml0ZSA9IHNpbXBsZVdyaXRlO1xuICAgICAgdGhpcy5lbmQgPSBzaW1wbGVFbmQ7XG4gICAgICByZXR1cm47XG4gIH1cbiAgdGhpcy5sYXN0TmVlZCA9IDA7XG4gIHRoaXMubGFzdFRvdGFsID0gMDtcbiAgdGhpcy5sYXN0Q2hhciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuYik7XG59XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGJ1Zikge1xuICBpZiAoYnVmLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICB2YXIgcjtcbiAgdmFyIGk7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSB7XG4gICAgciA9IHRoaXMuZmlsbExhc3QoYnVmKTtcbiAgICBpZiAociA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJyc7XG4gICAgaSA9IHRoaXMubGFzdE5lZWQ7XG4gICAgdGhpcy5sYXN0TmVlZCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgaSA9IDA7XG4gIH1cbiAgaWYgKGkgPCBidWYubGVuZ3RoKSByZXR1cm4gciA/IHIgKyB0aGlzLnRleHQoYnVmLCBpKSA6IHRoaXMudGV4dChidWYsIGkpO1xuICByZXR1cm4gciB8fCAnJztcbn07XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmVuZCA9IHV0ZjhFbmQ7XG5cbi8vIFJldHVybnMgb25seSBjb21wbGV0ZSBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS50ZXh0ID0gdXRmOFRleHQ7XG5cbi8vIEF0dGVtcHRzIHRvIGNvbXBsZXRlIGEgcGFydGlhbCBub24tVVRGLTggY2hhcmFjdGVyIHVzaW5nIGJ5dGVzIGZyb20gYSBCdWZmZXJcblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmZpbGxMYXN0ID0gZnVuY3Rpb24gKGJ1Zikge1xuICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7XG4gICAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkLCAwLCB0aGlzLmxhc3ROZWVkKTtcbiAgICByZXR1cm4gdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLCAwLCB0aGlzLmxhc3RUb3RhbCk7XG4gIH1cbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkLCAwLCBidWYubGVuZ3RoKTtcbiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoO1xufTtcblxuLy8gQ2hlY2tzIHRoZSB0eXBlIG9mIGEgVVRGLTggYnl0ZSwgd2hldGhlciBpdCdzIEFTQ0lJLCBhIGxlYWRpbmcgYnl0ZSwgb3IgYVxuLy8gY29udGludWF0aW9uIGJ5dGUuIElmIGFuIGludmFsaWQgYnl0ZSBpcyBkZXRlY3RlZCwgLTIgaXMgcmV0dXJuZWQuXG5mdW5jdGlvbiB1dGY4Q2hlY2tCeXRlKGJ5dGUpIHtcbiAgaWYgKGJ5dGUgPD0gMHg3RikgcmV0dXJuIDA7ZWxzZSBpZiAoYnl0ZSA+PiA1ID09PSAweDA2KSByZXR1cm4gMjtlbHNlIGlmIChieXRlID4+IDQgPT09IDB4MEUpIHJldHVybiAzO2Vsc2UgaWYgKGJ5dGUgPj4gMyA9PT0gMHgxRSkgcmV0dXJuIDQ7XG4gIHJldHVybiBieXRlID4+IDYgPT09IDB4MDIgPyAtMSA6IC0yO1xufVxuXG4vLyBDaGVja3MgYXQgbW9zdCAzIGJ5dGVzIGF0IHRoZSBlbmQgb2YgYSBCdWZmZXIgaW4gb3JkZXIgdG8gZGV0ZWN0IGFuXG4vLyBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyLiBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzICgyLCAzLCBvciA0KVxuLy8gbmVlZGVkIHRvIGNvbXBsZXRlIHRoZSBVVEYtOCBjaGFyYWN0ZXIgKGlmIGFwcGxpY2FibGUpIGFyZSByZXR1cm5lZC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0luY29tcGxldGUoc2VsZiwgYnVmLCBpKSB7XG4gIHZhciBqID0gYnVmLmxlbmd0aCAtIDE7XG4gIGlmIChqIDwgaSkgcmV0dXJuIDA7XG4gIHZhciBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSBzZWxmLmxhc3ROZWVkID0gbmIgLSAxO1xuICAgIHJldHVybiBuYjtcbiAgfVxuICBpZiAoLS1qIDwgaSB8fCBuYiA9PT0gLTIpIHJldHVybiAwO1xuICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSBzZWxmLmxhc3ROZWVkID0gbmIgLSAyO1xuICAgIHJldHVybiBuYjtcbiAgfVxuICBpZiAoLS1qIDwgaSB8fCBuYiA9PT0gLTIpIHJldHVybiAwO1xuICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSB7XG4gICAgICBpZiAobmIgPT09IDIpIG5iID0gMDtlbHNlIHNlbGYubGFzdE5lZWQgPSBuYiAtIDM7XG4gICAgfVxuICAgIHJldHVybiBuYjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy8gVmFsaWRhdGVzIGFzIG1hbnkgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyIGFzXG4vLyBuZWVkZWQgb3IgYXJlIGF2YWlsYWJsZS4gSWYgd2Ugc2VlIGEgbm9uLWNvbnRpbnVhdGlvbiBieXRlIHdoZXJlIHdlIGV4cGVjdFxuLy8gb25lLCB3ZSBcInJlcGxhY2VcIiB0aGUgdmFsaWRhdGVkIGNvbnRpbnVhdGlvbiBieXRlcyB3ZSd2ZSBzZWVuIHNvIGZhciB3aXRoXG4vLyBhIHNpbmdsZSBVVEYtOCByZXBsYWNlbWVudCBjaGFyYWN0ZXIgKCdcXHVmZmZkJyksIHRvIG1hdGNoIHY4J3MgVVRGLTggZGVjb2Rpbmdcbi8vIGJlaGF2aW9yLiBUaGUgY29udGludWF0aW9uIGJ5dGUgY2hlY2sgaXMgaW5jbHVkZWQgdGhyZWUgdGltZXMgaW4gdGhlIGNhc2Vcbi8vIHdoZXJlIGFsbCBvZiB0aGUgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIGNoYXJhY3RlciBleGlzdCBpbiB0aGUgc2FtZSBidWZmZXIuXG4vLyBJdCBpcyBhbHNvIGRvbmUgdGhpcyB3YXkgYXMgYSBzbGlnaHQgcGVyZm9ybWFuY2UgaW5jcmVhc2UgaW5zdGVhZCBvZiB1c2luZyBhXG4vLyBsb29wLlxuZnVuY3Rpb24gdXRmOENoZWNrRXh0cmFCeXRlcyhzZWxmLCBidWYsIHApIHtcbiAgaWYgKChidWZbMF0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgIHNlbGYubGFzdE5lZWQgPSAwO1xuICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gIH1cbiAgaWYgKHNlbGYubGFzdE5lZWQgPiAxICYmIGJ1Zi5sZW5ndGggPiAxKSB7XG4gICAgaWYgKChidWZbMV0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgICAgc2VsZi5sYXN0TmVlZCA9IDE7XG4gICAgICByZXR1cm4gJ1xcdWZmZmQnO1xuICAgIH1cbiAgICBpZiAoc2VsZi5sYXN0TmVlZCA+IDIgJiYgYnVmLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmICgoYnVmWzJdICYgMHhDMCkgIT09IDB4ODApIHtcbiAgICAgICAgc2VsZi5sYXN0TmVlZCA9IDI7XG4gICAgICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dGVtcHRzIHRvIGNvbXBsZXRlIGEgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlci5cbmZ1bmN0aW9uIHV0ZjhGaWxsTGFzdChidWYpIHtcbiAgdmFyIHAgPSB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQ7XG4gIHZhciByID0gdXRmOENoZWNrRXh0cmFCeXRlcyh0aGlzLCBidWYsIHApO1xuICBpZiAociAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcjtcbiAgaWYgKHRoaXMubGFzdE5lZWQgPD0gYnVmLmxlbmd0aCkge1xuICAgIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHAsIDAsIHRoaXMubGFzdE5lZWQpO1xuICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTtcbiAgfVxuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCBwLCAwLCBidWYubGVuZ3RoKTtcbiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoO1xufVxuXG4vLyBSZXR1cm5zIGFsbCBjb21wbGV0ZSBVVEYtOCBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyLiBJZiB0aGUgQnVmZmVyIGVuZGVkIG9uIGFcbi8vIHBhcnRpYWwgY2hhcmFjdGVyLCB0aGUgY2hhcmFjdGVyJ3MgYnl0ZXMgYXJlIGJ1ZmZlcmVkIHVudGlsIHRoZSByZXF1aXJlZFxuLy8gbnVtYmVyIG9mIGJ5dGVzIGFyZSBhdmFpbGFibGUuXG5mdW5jdGlvbiB1dGY4VGV4dChidWYsIGkpIHtcbiAgdmFyIHRvdGFsID0gdXRmOENoZWNrSW5jb21wbGV0ZSh0aGlzLCBidWYsIGkpO1xuICBpZiAoIXRoaXMubGFzdE5lZWQpIHJldHVybiBidWYudG9TdHJpbmcoJ3V0ZjgnLCBpKTtcbiAgdGhpcy5sYXN0VG90YWwgPSB0b3RhbDtcbiAgdmFyIGVuZCA9IGJ1Zi5sZW5ndGggLSAodG90YWwgLSB0aGlzLmxhc3ROZWVkKTtcbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgMCwgZW5kKTtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmOCcsIGksIGVuZCk7XG59XG5cbi8vIEZvciBVVEYtOCwgYSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgaXMgYWRkZWQgd2hlbiBlbmRpbmcgb24gYSBwYXJ0aWFsXG4vLyBjaGFyYWN0ZXIuXG5mdW5jdGlvbiB1dGY4RW5kKGJ1Zikge1xuICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSByZXR1cm4gciArICdcXHVmZmZkJztcbiAgcmV0dXJuIHI7XG59XG5cbi8vIFVURi0xNkxFIHR5cGljYWxseSBuZWVkcyB0d28gYnl0ZXMgcGVyIGNoYXJhY3RlciwgYnV0IGV2ZW4gaWYgd2UgaGF2ZSBhbiBldmVuXG4vLyBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlLCB3ZSBuZWVkIHRvIGNoZWNrIGlmIHdlIGVuZCBvbiBhIGxlYWRpbmcvaGlnaFxuLy8gc3Vycm9nYXRlLiBJbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIG5leHQgdHdvIGJ5dGVzIGluIG9yZGVyIHRvXG4vLyBkZWNvZGUgdGhlIGxhc3QgY2hhcmFjdGVyIHByb3Blcmx5LlxuZnVuY3Rpb24gdXRmMTZUZXh0KGJ1ZiwgaSkge1xuICBpZiAoKGJ1Zi5sZW5ndGggLSBpKSAlIDIgPT09IDApIHtcbiAgICB2YXIgciA9IGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGkpO1xuICAgIGlmIChyKSB7XG4gICAgICB2YXIgYyA9IHIuY2hhckNvZGVBdChyLmxlbmd0aCAtIDEpO1xuICAgICAgaWYgKGMgPj0gMHhEODAwICYmIGMgPD0gMHhEQkZGKSB7XG4gICAgICAgIHRoaXMubGFzdE5lZWQgPSAyO1xuICAgICAgICB0aGlzLmxhc3RUb3RhbCA9IDQ7XG4gICAgICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDJdO1xuICAgICAgICB0aGlzLmxhc3RDaGFyWzFdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgICAgICAgcmV0dXJuIHIuc2xpY2UoMCwgLTEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuICB0aGlzLmxhc3ROZWVkID0gMTtcbiAgdGhpcy5sYXN0VG90YWwgPSAyO1xuICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGksIGJ1Zi5sZW5ndGggLSAxKTtcbn1cblxuLy8gRm9yIFVURi0xNkxFIHdlIGRvIG5vdCBleHBsaWNpdGx5IGFwcGVuZCBzcGVjaWFsIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgaWYgd2Vcbi8vIGVuZCBvbiBhIHBhcnRpYWwgY2hhcmFjdGVyLCB3ZSBzaW1wbHkgbGV0IHY4IGhhbmRsZSB0aGF0LlxuZnVuY3Rpb24gdXRmMTZFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHtcbiAgICB2YXIgZW5kID0gdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkO1xuICAgIHJldHVybiByICsgdGhpcy5sYXN0Q2hhci50b1N0cmluZygndXRmMTZsZScsIDAsIGVuZCk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFRleHQoYnVmLCBpKSB7XG4gIHZhciBuID0gKGJ1Zi5sZW5ndGggLSBpKSAlIDM7XG4gIGlmIChuID09PSAwKSByZXR1cm4gYnVmLnRvU3RyaW5nKCdiYXNlNjQnLCBpKTtcbiAgdGhpcy5sYXN0TmVlZCA9IDMgLSBuO1xuICB0aGlzLmxhc3RUb3RhbCA9IDM7XG4gIGlmIChuID09PSAxKSB7XG4gICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMl07XG4gICAgdGhpcy5sYXN0Q2hhclsxXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIH1cbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygnYmFzZTY0JywgaSwgYnVmLmxlbmd0aCAtIG4pO1xufVxuXG5mdW5jdGlvbiBiYXNlNjRFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHJldHVybiByICsgdGhpcy5sYXN0Q2hhci50b1N0cmluZygnYmFzZTY0JywgMCwgMyAtIHRoaXMubGFzdE5lZWQpO1xuICByZXR1cm4gcjtcbn1cblxuLy8gUGFzcyBieXRlcyBvbiB0aHJvdWdoIGZvciBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MgKGUuZy4gYXNjaWksIGxhdGluMSwgaGV4KVxuZnVuY3Rpb24gc2ltcGxlV3JpdGUoYnVmKSB7XG4gIHJldHVybiBidWYudG9TdHJpbmcodGhpcy5lbmNvZGluZyk7XG59XG5cbmZ1bmN0aW9uIHNpbXBsZUVuZChidWYpIHtcbiAgcmV0dXJuIGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvc3RyaW5nX2RlY29kZXIvbGliL3N0cmluZ19kZWNvZGVyLmpzXG4vLyBtb2R1bGUgaWQgPSAzNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///34\n");

/***/ }),
/* 35 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar Buffer = __webpack_require__(5).Buffer\nvar inherits = __webpack_require__(0)\nvar HashBase = __webpack_require__(51)\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n  HashBase.call(this, 64)\n\n  // state\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n  var words = ARRAY16\n  for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n  var al = this._a | 0\n  var bl = this._b | 0\n  var cl = this._c | 0\n  var dl = this._d | 0\n  var el = this._e | 0\n\n  var ar = this._a | 0\n  var br = this._b | 0\n  var cr = this._c | 0\n  var dr = this._d | 0\n  var er = this._e | 0\n\n  // computation\n  for (var i = 0; i < 80; i += 1) {\n    var tl\n    var tr\n    if (i < 16) {\n      tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n      tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n    } else if (i < 32) {\n      tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n      tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n    } else if (i < 48) {\n      tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n      tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n    } else if (i < 64) {\n      tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n      tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n    } else { // if (i<80) {\n      tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n      tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n    }\n\n    al = el\n    el = dl\n    dl = rotl(cl, 10)\n    cl = bl\n    bl = tl\n\n    ar = er\n    er = dr\n    dr = rotl(cr, 10)\n    cr = br\n    br = tr\n  }\n\n  // update state\n  var t = (this._b + cl + dr) | 0\n  this._b = (this._c + dl + er) | 0\n  this._c = (this._d + el + ar) | 0\n  this._d = (this._e + al + br) | 0\n  this._e = (this._a + bl + cr) | 0\n  this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n  // create padding and handle blocks\n  this._block[this._blockOffset++] = 0x80\n  if (this._blockOffset > 56) {\n    this._block.fill(0, this._blockOffset, 64)\n    this._update()\n    this._blockOffset = 0\n  }\n\n  this._block.fill(0, this._blockOffset, 56)\n  this._block.writeUInt32LE(this._length[0], 56)\n  this._block.writeUInt32LE(this._length[1], 60)\n  this._update()\n\n  // produce result\n  var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n  buffer.writeInt32LE(this._a, 0)\n  buffer.writeInt32LE(this._b, 4)\n  buffer.writeInt32LE(this._c, 8)\n  buffer.writeInt32LE(this._d, 12)\n  buffer.writeInt32LE(this._e, 16)\n  return buffer\n}\n\nfunction rotl (x, n) {\n  return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n  return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmlwZW1kMTYwL2luZGV4LmpzPzJkODEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaEJhc2UgPSByZXF1aXJlKCdoYXNoLWJhc2UnKVxuXG52YXIgQVJSQVkxNiA9IG5ldyBBcnJheSgxNilcblxudmFyIHpsID0gW1xuICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LFxuICA3LCA0LCAxMywgMSwgMTAsIDYsIDE1LCAzLCAxMiwgMCwgOSwgNSwgMiwgMTQsIDExLCA4LFxuICAzLCAxMCwgMTQsIDQsIDksIDE1LCA4LCAxLCAyLCA3LCAwLCA2LCAxMywgMTEsIDUsIDEyLFxuICAxLCA5LCAxMSwgMTAsIDAsIDgsIDEyLCA0LCAxMywgMywgNywgMTUsIDE0LCA1LCA2LCAyLFxuICA0LCAwLCA1LCA5LCA3LCAxMiwgMiwgMTAsIDE0LCAxLCAzLCA4LCAxMSwgNiwgMTUsIDEzXG5dXG5cbnZhciB6ciA9IFtcbiAgNSwgMTQsIDcsIDAsIDksIDIsIDExLCA0LCAxMywgNiwgMTUsIDgsIDEsIDEwLCAzLCAxMixcbiAgNiwgMTEsIDMsIDcsIDAsIDEzLCA1LCAxMCwgMTQsIDE1LCA4LCAxMiwgNCwgOSwgMSwgMixcbiAgMTUsIDUsIDEsIDMsIDcsIDE0LCA2LCA5LCAxMSwgOCwgMTIsIDIsIDEwLCAwLCA0LCAxMyxcbiAgOCwgNiwgNCwgMSwgMywgMTEsIDE1LCAwLCA1LCAxMiwgMiwgMTMsIDksIDcsIDEwLCAxNCxcbiAgMTIsIDE1LCAxMCwgNCwgMSwgNSwgOCwgNywgNiwgMiwgMTMsIDE0LCAwLCAzLCA5LCAxMVxuXVxuXG52YXIgc2wgPSBbXG4gIDExLCAxNCwgMTUsIDEyLCA1LCA4LCA3LCA5LCAxMSwgMTMsIDE0LCAxNSwgNiwgNywgOSwgOCxcbiAgNywgNiwgOCwgMTMsIDExLCA5LCA3LCAxNSwgNywgMTIsIDE1LCA5LCAxMSwgNywgMTMsIDEyLFxuICAxMSwgMTMsIDYsIDcsIDE0LCA5LCAxMywgMTUsIDE0LCA4LCAxMywgNiwgNSwgMTIsIDcsIDUsXG4gIDExLCAxMiwgMTQsIDE1LCAxNCwgMTUsIDksIDgsIDksIDE0LCA1LCA2LCA4LCA2LCA1LCAxMixcbiAgOSwgMTUsIDUsIDExLCA2LCA4LCAxMywgMTIsIDUsIDEyLCAxMywgMTQsIDExLCA4LCA1LCA2XG5dXG5cbnZhciBzciA9IFtcbiAgOCwgOSwgOSwgMTEsIDEzLCAxNSwgMTUsIDUsIDcsIDcsIDgsIDExLCAxNCwgMTQsIDEyLCA2LFxuICA5LCAxMywgMTUsIDcsIDEyLCA4LCA5LCAxMSwgNywgNywgMTIsIDcsIDYsIDE1LCAxMywgMTEsXG4gIDksIDcsIDE1LCAxMSwgOCwgNiwgNiwgMTQsIDEyLCAxMywgNSwgMTQsIDEzLCAxMywgNywgNSxcbiAgMTUsIDUsIDgsIDExLCAxNCwgMTQsIDYsIDE0LCA2LCA5LCAxMiwgOSwgMTIsIDUsIDE1LCA4LFxuICA4LCA1LCAxMiwgOSwgMTIsIDUsIDE0LCA2LCA4LCAxMywgNiwgNSwgMTUsIDEzLCAxMSwgMTFcbl1cblxudmFyIGhsID0gWzB4MDAwMDAwMDAsIDB4NWE4Mjc5OTksIDB4NmVkOWViYTEsIDB4OGYxYmJjZGMsIDB4YTk1M2ZkNGVdXG52YXIgaHIgPSBbMHg1MGEyOGJlNiwgMHg1YzRkZDEyNCwgMHg2ZDcwM2VmMywgMHg3YTZkNzZlOSwgMHgwMDAwMDAwMF1cblxuZnVuY3Rpb24gUklQRU1EMTYwICgpIHtcbiAgSGFzaEJhc2UuY2FsbCh0aGlzLCA2NClcblxuICAvLyBzdGF0ZVxuICB0aGlzLl9hID0gMHg2NzQ1MjMwMVxuICB0aGlzLl9iID0gMHhlZmNkYWI4OVxuICB0aGlzLl9jID0gMHg5OGJhZGNmZVxuICB0aGlzLl9kID0gMHgxMDMyNTQ3NlxuICB0aGlzLl9lID0gMHhjM2QyZTFmMFxufVxuXG5pbmhlcml0cyhSSVBFTUQxNjAsIEhhc2hCYXNlKVxuXG5SSVBFTUQxNjAucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB3b3JkcyA9IEFSUkFZMTZcbiAgZm9yICh2YXIgaiA9IDA7IGogPCAxNjsgKytqKSB3b3Jkc1tqXSA9IHRoaXMuX2Jsb2NrLnJlYWRJbnQzMkxFKGogKiA0KVxuXG4gIHZhciBhbCA9IHRoaXMuX2EgfCAwXG4gIHZhciBibCA9IHRoaXMuX2IgfCAwXG4gIHZhciBjbCA9IHRoaXMuX2MgfCAwXG4gIHZhciBkbCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlbCA9IHRoaXMuX2UgfCAwXG5cbiAgdmFyIGFyID0gdGhpcy5fYSB8IDBcbiAgdmFyIGJyID0gdGhpcy5fYiB8IDBcbiAgdmFyIGNyID0gdGhpcy5fYyB8IDBcbiAgdmFyIGRyID0gdGhpcy5fZCB8IDBcbiAgdmFyIGVyID0gdGhpcy5fZSB8IDBcblxuICAvLyBjb21wdXRhdGlvblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDgwOyBpICs9IDEpIHtcbiAgICB2YXIgdGxcbiAgICB2YXIgdHJcbiAgICBpZiAoaSA8IDE2KSB7XG4gICAgICB0bCA9IGZuMShhbCwgYmwsIGNsLCBkbCwgZWwsIHdvcmRzW3psW2ldXSwgaGxbMF0sIHNsW2ldKVxuICAgICAgdHIgPSBmbjUoYXIsIGJyLCBjciwgZHIsIGVyLCB3b3Jkc1t6cltpXV0sIGhyWzBdLCBzcltpXSlcbiAgICB9IGVsc2UgaWYgKGkgPCAzMikge1xuICAgICAgdGwgPSBmbjIoYWwsIGJsLCBjbCwgZGwsIGVsLCB3b3Jkc1t6bFtpXV0sIGhsWzFdLCBzbFtpXSlcbiAgICAgIHRyID0gZm40KGFyLCBiciwgY3IsIGRyLCBlciwgd29yZHNbenJbaV1dLCBoclsxXSwgc3JbaV0pXG4gICAgfSBlbHNlIGlmIChpIDwgNDgpIHtcbiAgICAgIHRsID0gZm4zKGFsLCBibCwgY2wsIGRsLCBlbCwgd29yZHNbemxbaV1dLCBobFsyXSwgc2xbaV0pXG4gICAgICB0ciA9IGZuMyhhciwgYnIsIGNyLCBkciwgZXIsIHdvcmRzW3pyW2ldXSwgaHJbMl0sIHNyW2ldKVxuICAgIH0gZWxzZSBpZiAoaSA8IDY0KSB7XG4gICAgICB0bCA9IGZuNChhbCwgYmwsIGNsLCBkbCwgZWwsIHdvcmRzW3psW2ldXSwgaGxbM10sIHNsW2ldKVxuICAgICAgdHIgPSBmbjIoYXIsIGJyLCBjciwgZHIsIGVyLCB3b3Jkc1t6cltpXV0sIGhyWzNdLCBzcltpXSlcbiAgICB9IGVsc2UgeyAvLyBpZiAoaTw4MCkge1xuICAgICAgdGwgPSBmbjUoYWwsIGJsLCBjbCwgZGwsIGVsLCB3b3Jkc1t6bFtpXV0sIGhsWzRdLCBzbFtpXSlcbiAgICAgIHRyID0gZm4xKGFyLCBiciwgY3IsIGRyLCBlciwgd29yZHNbenJbaV1dLCBocls0XSwgc3JbaV0pXG4gICAgfVxuXG4gICAgYWwgPSBlbFxuICAgIGVsID0gZGxcbiAgICBkbCA9IHJvdGwoY2wsIDEwKVxuICAgIGNsID0gYmxcbiAgICBibCA9IHRsXG5cbiAgICBhciA9IGVyXG4gICAgZXIgPSBkclxuICAgIGRyID0gcm90bChjciwgMTApXG4gICAgY3IgPSBiclxuICAgIGJyID0gdHJcbiAgfVxuXG4gIC8vIHVwZGF0ZSBzdGF0ZVxuICB2YXIgdCA9ICh0aGlzLl9iICsgY2wgKyBkcikgfCAwXG4gIHRoaXMuX2IgPSAodGhpcy5fYyArIGRsICsgZXIpIHwgMFxuICB0aGlzLl9jID0gKHRoaXMuX2QgKyBlbCArIGFyKSB8IDBcbiAgdGhpcy5fZCA9ICh0aGlzLl9lICsgYWwgKyBicikgfCAwXG4gIHRoaXMuX2UgPSAodGhpcy5fYSArIGJsICsgY3IpIHwgMFxuICB0aGlzLl9hID0gdFxufVxuXG5SSVBFTUQxNjAucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIGNyZWF0ZSBwYWRkaW5nIGFuZCBoYW5kbGUgYmxvY2tzXG4gIHRoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdID0gMHg4MFxuICBpZiAodGhpcy5fYmxvY2tPZmZzZXQgPiA1Nikge1xuICAgIHRoaXMuX2Jsb2NrLmZpbGwoMCwgdGhpcy5fYmxvY2tPZmZzZXQsIDY0KVxuICAgIHRoaXMuX3VwZGF0ZSgpXG4gICAgdGhpcy5fYmxvY2tPZmZzZXQgPSAwXG4gIH1cblxuICB0aGlzLl9ibG9jay5maWxsKDAsIHRoaXMuX2Jsb2NrT2Zmc2V0LCA1NilcbiAgdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMF0sIDU2KVxuICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFsxXSwgNjApXG4gIHRoaXMuX3VwZGF0ZSgpXG5cbiAgLy8gcHJvZHVjZSByZXN1bHRcbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyA/IEJ1ZmZlci5hbGxvYygyMCkgOiBuZXcgQnVmZmVyKDIwKVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2EsIDApXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fYiwgNClcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9jLCA4KVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2QsIDEyKVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2UsIDE2KVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIHJvdGwgKHgsIG4pIHtcbiAgcmV0dXJuICh4IDw8IG4pIHwgKHggPj4+ICgzMiAtIG4pKVxufVxuXG5mdW5jdGlvbiBmbjEgKGEsIGIsIGMsIGQsIGUsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKGIgXiBjIF4gZCkgKyBtICsgaykgfCAwLCBzKSArIGUpIHwgMFxufVxuXG5mdW5jdGlvbiBmbjIgKGEsIGIsIGMsIGQsIGUsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKChiICYgYykgfCAoKH5iKSAmIGQpKSArIG0gKyBrKSB8IDAsIHMpICsgZSkgfCAwXG59XG5cbmZ1bmN0aW9uIGZuMyAoYSwgYiwgYywgZCwgZSwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoKGIgfCAofmMpKSBeIGQpICsgbSArIGspIHwgMCwgcykgKyBlKSB8IDBcbn1cblxuZnVuY3Rpb24gZm40IChhLCBiLCBjLCBkLCBlLCBtLCBrLCBzKSB7XG4gIHJldHVybiAocm90bCgoYSArICgoYiAmIGQpIHwgKGMgJiAofmQpKSkgKyBtICsgaykgfCAwLCBzKSArIGUpIHwgMFxufVxuXG5mdW5jdGlvbiBmbjUgKGEsIGIsIGMsIGQsIGUsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKGIgXiAoYyB8ICh+ZCkpKSArIG0gKyBrKSB8IDAsIHMpICsgZSkgfCAwXG59XG5cbm1vZHVsZS5leHBvcnRzID0gUklQRU1EMTYwXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yaXBlbWQxNjAvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDM1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///35\n");

/***/ }),
/* 36 */
/***/ (function(module, exports, __webpack_require__) {

eval("var exports = module.exports = function SHA (algorithm) {\n  algorithm = algorithm.toLowerCase()\n\n  var Algorithm = exports[algorithm]\n  if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n  return new Algorithm()\n}\n\nexports.sha = __webpack_require__(141)\nexports.sha1 = __webpack_require__(142)\nexports.sha224 = __webpack_require__(143)\nexports.sha256 = __webpack_require__(56)\nexports.sha384 = __webpack_require__(144)\nexports.sha512 = __webpack_require__(57)\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2hhLmpzL2luZGV4LmpzPzI1YTQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIFNIQSAoYWxnb3JpdGhtKSB7XG4gIGFsZ29yaXRobSA9IGFsZ29yaXRobS50b0xvd2VyQ2FzZSgpXG5cbiAgdmFyIEFsZ29yaXRobSA9IGV4cG9ydHNbYWxnb3JpdGhtXVxuICBpZiAoIUFsZ29yaXRobSkgdGhyb3cgbmV3IEVycm9yKGFsZ29yaXRobSArICcgaXMgbm90IHN1cHBvcnRlZCAod2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMpJylcblxuICByZXR1cm4gbmV3IEFsZ29yaXRobSgpXG59XG5cbmV4cG9ydHMuc2hhID0gcmVxdWlyZSgnLi9zaGEnKVxuZXhwb3J0cy5zaGExID0gcmVxdWlyZSgnLi9zaGExJylcbmV4cG9ydHMuc2hhMjI0ID0gcmVxdWlyZSgnLi9zaGEyMjQnKVxuZXhwb3J0cy5zaGEyNTYgPSByZXF1aXJlKCcuL3NoYTI1NicpXG5leHBvcnRzLnNoYTM4NCA9IHJlcXVpcmUoJy4vc2hhMzg0JylcbmV4cG9ydHMuc2hhNTEyID0gcmVxdWlyZSgnLi9zaGE1MTInKVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvc2hhLmpzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAzNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///36\n");

/***/ }),
/* 37 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nexports.utils = __webpack_require__(150);\nexports.Cipher = __webpack_require__(151);\nexports.DES = __webpack_require__(152);\nexports.CBC = __webpack_require__(153);\nexports.EDE = __webpack_require__(154);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMuanM/MDRlZiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMudXRpbHMgPSByZXF1aXJlKCcuL2Rlcy91dGlscycpO1xuZXhwb3J0cy5DaXBoZXIgPSByZXF1aXJlKCcuL2Rlcy9jaXBoZXInKTtcbmV4cG9ydHMuREVTID0gcmVxdWlyZSgnLi9kZXMvZGVzJyk7XG5leHBvcnRzLkNCQyA9IHJlcXVpcmUoJy4vZGVzL2NiYycpO1xuZXhwb3J0cy5FREUgPSByZXF1aXJlKCcuL2Rlcy9lZGUnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzLmpzXG4vLyBtb2R1bGUgaWQgPSAzN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///37\n");

/***/ }),
/* 38 */
/***/ (function(module, exports, __webpack_require__) {

eval("var ciphers = __webpack_require__(155)\nvar deciphers = __webpack_require__(163)\nvar modes = __webpack_require__(67)\n\nfunction getCiphers () {\n  return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYnJvd3Nlci5qcz9iNTc3Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBjaXBoZXJzID0gcmVxdWlyZSgnLi9lbmNyeXB0ZXInKVxudmFyIGRlY2lwaGVycyA9IHJlcXVpcmUoJy4vZGVjcnlwdGVyJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMvbGlzdC5qc29uJylcblxuZnVuY3Rpb24gZ2V0Q2lwaGVycyAoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhtb2Rlcylcbn1cblxuZXhwb3J0cy5jcmVhdGVDaXBoZXIgPSBleHBvcnRzLkNpcGhlciA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyXG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gZXhwb3J0cy5DaXBoZXJpdiA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBleHBvcnRzLkRlY2lwaGVyID0gZGVjaXBoZXJzLmNyZWF0ZURlY2lwaGVyXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyaXYgPSBleHBvcnRzLkRlY2lwaGVyaXYgPSBkZWNpcGhlcnMuY3JlYXRlRGVjaXBoZXJpdlxuZXhwb3J0cy5saXN0Q2lwaGVycyA9IGV4cG9ydHMuZ2V0Q2lwaGVycyA9IGdldENpcGhlcnNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2Jyb3dzZXIuanNcbi8vIG1vZHVsZSBpZCA9IDM4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///38\n");

/***/ }),
/* 39 */
/***/ (function(module, exports, __webpack_require__) {

eval("var modeModules = {\n  ECB: __webpack_require__(156),\n  CBC: __webpack_require__(157),\n  CFB: __webpack_require__(158),\n  CFB8: __webpack_require__(159),\n  CFB1: __webpack_require__(160),\n  OFB: __webpack_require__(161),\n  CTR: __webpack_require__(65),\n  GCM: __webpack_require__(65)\n}\n\nvar modes = __webpack_require__(67)\n\nfor (var key in modes) {\n  modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvaW5kZXguanM/MDQyOCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbW9kZU1vZHVsZXMgPSB7XG4gIEVDQjogcmVxdWlyZSgnLi9lY2InKSxcbiAgQ0JDOiByZXF1aXJlKCcuL2NiYycpLFxuICBDRkI6IHJlcXVpcmUoJy4vY2ZiJyksXG4gIENGQjg6IHJlcXVpcmUoJy4vY2ZiOCcpLFxuICBDRkIxOiByZXF1aXJlKCcuL2NmYjEnKSxcbiAgT0ZCOiByZXF1aXJlKCcuL29mYicpLFxuICBDVFI6IHJlcXVpcmUoJy4vY3RyJyksXG4gIEdDTTogcmVxdWlyZSgnLi9jdHInKVxufVxuXG52YXIgbW9kZXMgPSByZXF1aXJlKCcuL2xpc3QuanNvbicpXG5cbmZvciAodmFyIGtleSBpbiBtb2Rlcykge1xuICBtb2Rlc1trZXldLm1vZHVsZSA9IG1vZGVNb2R1bGVzW21vZGVzW2tleV0ubW9kZV1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtb2Rlc1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDM5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///39\n");

/***/ }),
/* 40 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var bn = __webpack_require__(4);\nvar randomBytes = __webpack_require__(13);\nmodule.exports = crt;\nfunction blind(priv) {\n  var r = getr(priv);\n  var blinder = r.toRed(bn.mont(priv.modulus))\n  .redPow(new bn(priv.publicExponent)).fromRed();\n  return {\n    blinder: blinder,\n    unblinder:r.invm(priv.modulus)\n  };\n}\nfunction crt(msg, priv) {\n  var blinds = blind(priv);\n  var len = priv.modulus.byteLength();\n  var mod = bn.mont(priv.modulus);\n  var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus);\n  var c1 = blinded.toRed(bn.mont(priv.prime1));\n  var c2 = blinded.toRed(bn.mont(priv.prime2));\n  var qinv = priv.coefficient;\n  var p = priv.prime1;\n  var q = priv.prime2;\n  var m1 = c1.redPow(priv.exponent1);\n  var m2 = c2.redPow(priv.exponent2);\n  m1 = m1.fromRed();\n  m2 = m2.fromRed();\n  var h = m1.isub(m2).imul(qinv).umod(p);\n  h.imul(q);\n  m2.iadd(h);\n  return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len));\n}\ncrt.getr = getr;\nfunction getr(priv) {\n  var len = priv.modulus.byteLength();\n  var r = new bn(randomBytes(len));\n  while (r.cmp(priv.modulus) >=  0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) {\n    r = new bn(randomBytes(len));\n  }\n  return r;\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5).Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1yc2EvaW5kZXguanM/OGQyNCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYm4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gY3J0O1xuZnVuY3Rpb24gYmxpbmQocHJpdikge1xuICB2YXIgciA9IGdldHIocHJpdik7XG4gIHZhciBibGluZGVyID0gci50b1JlZChibi5tb250KHByaXYubW9kdWx1cykpXG4gIC5yZWRQb3cobmV3IGJuKHByaXYucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCk7XG4gIHJldHVybiB7XG4gICAgYmxpbmRlcjogYmxpbmRlcixcbiAgICB1bmJsaW5kZXI6ci5pbnZtKHByaXYubW9kdWx1cylcbiAgfTtcbn1cbmZ1bmN0aW9uIGNydChtc2csIHByaXYpIHtcbiAgdmFyIGJsaW5kcyA9IGJsaW5kKHByaXYpO1xuICB2YXIgbGVuID0gcHJpdi5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG1vZCA9IGJuLm1vbnQocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGJsaW5kZWQgPSBuZXcgYm4obXNnKS5tdWwoYmxpbmRzLmJsaW5kZXIpLnVtb2QocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGMxID0gYmxpbmRlZC50b1JlZChibi5tb250KHByaXYucHJpbWUxKSk7XG4gIHZhciBjMiA9IGJsaW5kZWQudG9SZWQoYm4ubW9udChwcml2LnByaW1lMikpO1xuICB2YXIgcWludiA9IHByaXYuY29lZmZpY2llbnQ7XG4gIHZhciBwID0gcHJpdi5wcmltZTE7XG4gIHZhciBxID0gcHJpdi5wcmltZTI7XG4gIHZhciBtMSA9IGMxLnJlZFBvdyhwcml2LmV4cG9uZW50MSk7XG4gIHZhciBtMiA9IGMyLnJlZFBvdyhwcml2LmV4cG9uZW50Mik7XG4gIG0xID0gbTEuZnJvbVJlZCgpO1xuICBtMiA9IG0yLmZyb21SZWQoKTtcbiAgdmFyIGggPSBtMS5pc3ViKG0yKS5pbXVsKHFpbnYpLnVtb2QocCk7XG4gIGguaW11bChxKTtcbiAgbTIuaWFkZChoKTtcbiAgcmV0dXJuIG5ldyBCdWZmZXIobTIuaW11bChibGluZHMudW5ibGluZGVyKS51bW9kKHByaXYubW9kdWx1cykudG9BcnJheShmYWxzZSwgbGVuKSk7XG59XG5jcnQuZ2V0ciA9IGdldHI7XG5mdW5jdGlvbiBnZXRyKHByaXYpIHtcbiAgdmFyIGxlbiA9IHByaXYubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIHZhciByID0gbmV3IGJuKHJhbmRvbUJ5dGVzKGxlbikpO1xuICB3aGlsZSAoci5jbXAocHJpdi5tb2R1bHVzKSA+PSAgMCB8fCAhci51bW9kKHByaXYucHJpbWUxKSB8fCAhci51bW9kKHByaXYucHJpbWUyKSkge1xuICAgIHIgPSBuZXcgYm4ocmFuZG9tQnl0ZXMobGVuKSk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXJzYS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///40\n");

/***/ }),
/* 41 */
/***/ (function(module, exports, __webpack_require__) {

eval("var hash = exports;\n\nhash.utils = __webpack_require__(8);\nhash.common = __webpack_require__(18);\nhash.sha = __webpack_require__(180);\nhash.ripemd = __webpack_require__(184);\nhash.hmac = __webpack_require__(185);\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC5qcz9kY2Y2Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBoYXNoID0gZXhwb3J0cztcblxuaGFzaC51dGlscyA9IHJlcXVpcmUoJy4vaGFzaC91dGlscycpO1xuaGFzaC5jb21tb24gPSByZXF1aXJlKCcuL2hhc2gvY29tbW9uJyk7XG5oYXNoLnNoYSA9IHJlcXVpcmUoJy4vaGFzaC9zaGEnKTtcbmhhc2gucmlwZW1kID0gcmVxdWlyZSgnLi9oYXNoL3JpcGVtZCcpO1xuaGFzaC5obWFjID0gcmVxdWlyZSgnLi9oYXNoL2htYWMnKTtcblxuLy8gUHJveHkgaGFzaCBmdW5jdGlvbnMgdG8gdGhlIG1haW4gb2JqZWN0XG5oYXNoLnNoYTEgPSBoYXNoLnNoYS5zaGExO1xuaGFzaC5zaGEyNTYgPSBoYXNoLnNoYS5zaGEyNTY7XG5oYXNoLnNoYTIyNCA9IGhhc2guc2hhLnNoYTIyNDtcbmhhc2guc2hhMzg0ID0gaGFzaC5zaGEuc2hhMzg0O1xuaGFzaC5zaGE1MTIgPSBoYXNoLnNoYS5zaGE1MTI7XG5oYXNoLnJpcGVtZDE2MCA9IGhhc2gucmlwZW1kLnJpcGVtZDE2MDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2guanNcbi8vIG1vZHVsZSBpZCA9IDQxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///41\n");

/***/ }),
/* 42 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Tree = exports.FormPanel = exports.PropsPanel = exports.Menu = undefined;\n\nvar _Menu = __webpack_require__(43);\n\nvar _Menu2 = _interopRequireDefault(_Menu);\n\nvar _PropsPanel = __webpack_require__(126);\n\nvar _PropsPanel2 = _interopRequireDefault(_PropsPanel);\n\nvar _FormPanel = __webpack_require__(48);\n\nvar _FormPanel2 = _interopRequireDefault(_FormPanel);\n\nvar _Tree = __webpack_require__(49);\n\nvar _Tree2 = _interopRequireDefault(_Tree);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Menu = _Menu2.default;\nexports.PropsPanel = _PropsPanel2.default;\nexports.FormPanel = _FormPanel2.default;\nexports.Tree = _Tree2.default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2Zvcm0vdmlldy9pbmRleC5qcz9iNmI5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNZW51IGZyb20gJy4vTWVudSc7XHJcbmltcG9ydCBQcm9wc1BhbmVsIGZyb20gJy4vUHJvcHNQYW5lbCc7XHJcbmltcG9ydCBGb3JtUGFuZWwgZnJvbSAnLi9Gb3JtUGFuZWwnO1xyXG5pbXBvcnQgVHJlZSBmcm9tICcuL1RyZWUnO1xyXG5cclxuZXhwb3J0IHtNZW51LCBQcm9wc1BhbmVsLCBGb3JtUGFuZWwsIFRyZWV9O1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS92aWV3L2luZGV4LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7Ozs7QUFDQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///42\n");

/***/ }),
/* 43 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _utility = __webpack_require__(2);\n\nvar _index = __webpack_require__(45);\n\nvar _view = __webpack_require__(42);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Menu = function () {\n\t_createClass(Menu, null, [{\n\t\tkey: 'getInstance',\n\t\tvalue: function getInstance() {\n\t\t\tif (!Menu.instance || !(Menu.instance instanceof Menu)) {\n\t\t\t\tMenu.instance = new Menu();\n\t\t\t}\n\t\t\t//console.log(Tree.instance)\n\t\t\treturn Menu.instance;\n\t\t}\n\t}]);\n\n\tfunction Menu() {\n\t\t_classCallCheck(this, Menu);\n\n\t\tthis.target = null;\n\t\tthis.container = null;\n\t\tthis.form = null;\n\t\tthis.hasMenu = false;\n\t\tthis.isShowMenu = false;\n\t\tthis.api = new _utility.Api();\n\t}\n\n\t//瀵硅薄鏂规硶娉ㄥ唽\n\n\n\t_createClass(Menu, [{\n\t\tkey: 'registerFunc',\n\t\tvalue: function registerFunc(signature, callback) {\n\n\t\t\t//绛惧悕鍞竴鎬у垽鏂璡n\t\t\tif (this.func[signature] == 'undefined') {\n\t\t\t\tthis.func[signature] = callback;\n\t\t\t} else {\n\t\t\t\tthrow new Error('signature already exists');\n\t\t\t}\n\t\t}\n\n\t\t//瀵硅薄鏂规硶璋冪敤\n\n\t}, {\n\t\tkey: 'trigger',\n\t\tvalue: function trigger(signature, params) {\n\t\t\tif (this.func[signature] != 'undefined') {\n\t\t\t\tif (params != \"undefined\") {\n\t\t\t\t\tif (typeof params != 'array' && !(params instanceof Array)) {\n\t\t\t\t\t\tthis.func[signature](params);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _func;\n\n\t\t\t\t\t\t(_func = this.func)[signature].apply(_func, _toConsumableArray(params));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.func[signature]();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error('signature not registered');\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'setProps',\n\t\tvalue: function setProps(newProps) {\n\t\t\tObject.assign(this, newProps);\n\t\t}\n\t}, {\n\t\tkey: 'getProp',\n\t\tvalue: function getProp(prop) {\n\t\t\treturn this[prop];\n\t\t}\n\n\t\t//鑾峰彇榧犳爣鍧愭爣浣嶇疆\n\n\t}, {\n\t\tkey: 'getMouseCoordinate',\n\t\tvalue: function getMouseCoordinate() {\n\t\t\treturn { x: this.target.clientX, y: this.target.clientY };\n\t\t}\n\t}, {\n\t\tkey: 'showMenu',\n\t\tvalue: function showMenu(type) {\n\t\t\tif (!this.hasMenu) {\n\t\t\t\tthis.createMenu(type);\n\t\t\t} else {\n\t\t\t\tthis.updateMenu();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'createMenu',\n\t\tvalue: function createMenu(type) {\n\t\t\tconsole.log(\"menu\");\n\n\t\t\tvar _getMouseCoordinate = this.getMouseCoordinate(),\n\t\t\t    x = _getMouseCoordinate.x,\n\t\t\t    y = _getMouseCoordinate.y;\n\n\t\t\tvar api = this.api;\n\t\t\tvar that = this;\n\t\t\tvar $container = $(this.container);\n\n\t\t\tvar menu = \"\";\n\n\t\t\tapi.getTemplete('menu-tmpl').done(function (tml) {\n\t\t\t\tmenu = _utility.Helper.getInstance().handleTemplete(tml, { style: 'position:absolute;left:' + x + 'px;top:' + y + 'px;display:block', type: type }, 'menu-tmpl');\n\t\t\t\t$('body').append(menu);\n\t\t\t\tthat.setProps({ hasMenu: true, isShowMenu: true, container: $('#menu') });\n\t\t\t\tthat.registerEvent();\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: 'registerEvent',\n\t\tvalue: function registerEvent() {\n\t\t\tvar $container = $(this.container);\n\n\t\t\t$container.off('click', 'a').on('click', 'a', function (e) {\n\t\t\t\tvar $this = $(this);\n\t\t\t\tvar type = $this.text();\n\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase '澧炲姞涓€琛�':\n\t\t\t\t\t\tMenu.getInstance().insertRow();\n\t\t\t\t\t\t$this.parents('#menu').css('display', 'none');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '鍒犻櫎涓€琛�':\n\t\t\t\t\t\tMenu.getInstance().deleteRow();\n\t\t\t\t\t\t$this.parents('#menu').css('display', 'none');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '鏂板涓€鍒�':\n\t\t\t\t\t\tMenu.getInstance().insertCol();\n\t\t\t\t\t\t$this.parents('#menu').css('display', 'none');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '鍒犻櫎涓€鍒�':\n\t\t\t\t\t\tMenu.getInstance().deleteCol();\n\t\t\t\t\t\t$this.parents('#menu').css('display', 'none');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '鍚戝彸鍚堝苟鍗曞厓鏍�':\n\t\t\t\t\t\tMenu.getInstance().mergeCells(\"right\");\n\t\t\t\t\t\t$this.parents('#menu').css('display', 'none');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '鍚戜笅鍚堝苟鍗曞厓鏍�':\n\t\t\t\t\t\tMenu.getInstance().mergeCells(\"bottom\");\n\t\t\t\t\t\t$this.parents('#menu').css('display', 'none');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '鍒犻櫎':\n\t\t\t\t\t\tMenu.getInstance().delete();\n\t\t\t\t\t\t$this.parents('#menu').css('display', 'none');\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// $this.css('outline-style', 'none');\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: 'hideMenu',\n\t\tvalue: function hideMenu() {\n\t\t\tvar menu = $('#menu');\n\n\t\t\tif (menu) {\n\t\t\t\tmenu.css('display', 'none');\n\t\t\t\tthis.setProps({ isShowMenu: false });\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'updateMenu',\n\t\tvalue: function updateMenu() {\n\t\t\tvar _getMouseCoordinate2 = this.getMouseCoordinate(),\n\t\t\t    x = _getMouseCoordinate2.x,\n\t\t\t    y = _getMouseCoordinate2.y;\n\n\t\t\tvar menu = $('#menu');\n\n\t\t\tif (menu) {\n\t\t\t\tmenu.css({ left: x, top: y, display: 'block' });\n\t\t\t\tthis.setProps({ isShowMenu: true });\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'insertRow',\n\t\tvalue: function insertRow() {\n\t\t\tconsole.log(\"menuinsertRow\" + this.form._currentChunk);\n\t\t\tthis.form._currentChunk.insertRow(this.form.nowRowIndex, this.form.realRowIndex, this.form.nowColIndex, this.form.cellHaveRowspan);\n\t\t\tthis.form.repaint();\n\t\t}\n\t}, {\n\t\tkey: 'deleteRow',\n\t\tvalue: function deleteRow() {\n\t\t\tconsole.log(\"menudeleteRow\" + this.form._currentChunk);\n\t\t\tthis.form._currentChunk.deleteRow(this.form.nowRowIndex, this.form.realRowIndex, this.form.nowColIndex, this.form.cellHaveRowspan);\n\t\t\tthis.form.repaint();\n\t\t}\n\t}, {\n\t\tkey: 'insertCol',\n\t\tvalue: function insertCol() {\n\t\t\tconsole.log(\"menuinsertCol\" + this.form._currentChunk);\n\t\t\tthis.form._currentChunk.insertCol(this.form.nowRowIndex, this.form.nowColIndex);\n\t\t\tthis.form.repaint();\n\t\t}\n\t}, {\n\t\tkey: 'deleteCol',\n\t\tvalue: function deleteCol() {\n\t\t\tconsole.log(\"menudeleteCol\" + this.form._currentChunk);\n\t\t\tthis.form._currentChunk.deleteCol(this.form.nowColIndex);\n\t\t\tthis.form.repaint();\n\t\t}\n\t}, {\n\t\tkey: 'mergeCells',\n\t\tvalue: function mergeCells(mergeCellsDirection) {\n\t\t\tconsole.log(\"menumergeCells\" + this.form._currentChunk);\n\t\t\tthis.form._currentChunk.mergeCells(mergeCellsDirection, this.form.nowRowIndex, this.form.nowColIndex);\n\t\t\tthis.form.repaint();\n\t\t}\n\t}, {\n\t\tkey: 'delete',\n\t\tvalue: function _delete() {\n\t\t\t//鍒犻櫎鎺т欢\n\t\t\tif (this.form._currentChunk && !this.form._currentElem) {\n\t\t\t\t//鍒犻櫎鏈€澶栧眰鐨勫厓绱燶n\t\t\t\tconsole.log(\"menu,1\");\n\t\t\t\tthis.form.deleteChunk(this.form._currentChunk.id);\n\t\t\t\tthis.form.repaint();\n\t\t\t\tvar propsPanel = _view.PropsPanel.getInstance();\n\t\t\t\tpropsPanel.render();\n\t\t\t} else if (this.form._currentChunk && this.form._currentElem) {\n\t\t\t\tconsole.log(\"menu,2\");\n\t\t\t\tthis.form.deleteElem(this.form._currentChunk.id, this.form._currentElem.id);\n\t\t\t\tthis.form.repaint();\n\t\t\t\tvar _propsPanel = _view.PropsPanel.getInstance();\n\t\t\t\t_propsPanel.render();\n\t\t\t}\n\t\t}\n\t}]);\n\n\treturn Menu;\n}();\n\nexports.default = Menu;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2Zvcm0vdmlldy9NZW51LmpzPzhmZjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcGksIEhlbHBlcn0gZnJvbSAnLi4vLi4vdXRpbGl0eSc7XHJcbmltcG9ydCB7VGRMYXlvdXR9IGZyb20gJy4uL0xheW91dC9pbmRleCc7XHJcbmltcG9ydCB7UHJvcHNQYW5lbH0gZnJvbSAnLi4vdmlldyc7XHJcblxyXG5jbGFzcyBNZW51e1xyXG4gICAgc3RhdGljIGdldEluc3RhbmNlKCkge1xyXG5cdFx0aWYoIU1lbnUuaW5zdGFuY2UgfHwgIShNZW51Lmluc3RhbmNlIGluc3RhbmNlb2YgTWVudSkpIHtcclxuXHRcdFx0TWVudS5pbnN0YW5jZSA9IG5ldyBNZW51KCk7XHJcblx0XHR9XHJcblx0XHQvL2NvbnNvbGUubG9nKFRyZWUuaW5zdGFuY2UpXHJcblx0XHRyZXR1cm4gTWVudS5pbnN0YW5jZTtcclxuXHR9XHJcbiAgICBjb25zdHJ1Y3Rvcigpe1xyXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gbnVsbDtcclxuXHRcdHRoaXMuY29udGFpbmVyID0gbnVsbDtcclxuXHRcdHRoaXMuZm9ybSA9IG51bGw7XHJcblx0XHR0aGlzLmhhc01lbnUgPSBmYWxzZTtcclxuXHRcdHRoaXMuaXNTaG93TWVudSA9IGZhbHNlO1xyXG5cdFx0dGhpcy5hcGkgPSBuZXcgQXBpKCk7XHJcblx0fVxyXG5cdFxyXG5cdC8v5a+56LGh5pa55rOV5rOo5YaMXHJcblx0cmVnaXN0ZXJGdW5jKHNpZ25hdHVyZSwgY2FsbGJhY2spIHtcclxuXHJcblx0XHQvL+etvuWQjeWUr+S4gOaAp+WIpOaWrVxyXG5cdFx0aWYodGhpcy5mdW5jW3NpZ25hdHVyZV0gPT0gJ3VuZGVmaW5lZCcpIHtcclxuXHRcdFx0dGhpcy5mdW5jW3NpZ25hdHVyZV0gPSBjYWxsYmFjaztcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcignc2lnbmF0dXJlIGFscmVhZHkgZXhpc3RzJyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvL+WvueixoeaWueazleiwg+eUqFxyXG5cdHRyaWdnZXIoc2lnbmF0dXJlLCBwYXJhbXMpIHtcclxuXHRcdGlmKHRoaXMuZnVuY1tzaWduYXR1cmVdICE9ICd1bmRlZmluZWQnKSB7XHJcblx0XHRcdGlmKHBhcmFtcyAhPSBcInVuZGVmaW5lZFwiKSB7XHJcblx0XHRcdFx0aWYodHlwZW9mIHBhcmFtcyAhPSAnYXJyYXknICYmICEocGFyYW1zIGluc3RhbmNlb2YgQXJyYXkpKSB7XHJcblx0XHRcdFx0XHR0aGlzLmZ1bmNbc2lnbmF0dXJlXShwYXJhbXMpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR0aGlzLmZ1bmNbc2lnbmF0dXJlXSguLi5wYXJhbXMpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLmZ1bmNbc2lnbmF0dXJlXSgpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ3NpZ25hdHVyZSBub3QgcmVnaXN0ZXJlZCcpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0c2V0UHJvcHMobmV3UHJvcHMpIHtcclxuXHRcdE9iamVjdC5hc3NpZ24odGhpcywgbmV3UHJvcHMpO1xyXG5cdH1cclxuXHRcclxuXHRnZXRQcm9wKHByb3ApIHtcclxuXHRcdHJldHVybiB0aGlzW3Byb3BdO1xyXG5cdH1cclxuXHJcblx0Ly/ojrflj5bpvKDmoIflnZDmoIfkvY3nva5cclxuXHRnZXRNb3VzZUNvb3JkaW5hdGUoKSB7XHJcblx0XHRyZXR1cm4ge3g6IHRoaXMudGFyZ2V0LmNsaWVudFgsIHk6IHRoaXMudGFyZ2V0LmNsaWVudFl9O1xyXG5cdH1cclxuXHJcblx0c2hvd01lbnUodHlwZSkge1xyXG5cdFx0aWYoIXRoaXMuaGFzTWVudSkge1xyXG5cdFx0XHR0aGlzLmNyZWF0ZU1lbnUodHlwZSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnVwZGF0ZU1lbnUoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0XHJcblx0Y3JlYXRlTWVudSh0eXBlKSB7XHJcblx0XHRjb25zb2xlLmxvZyhcIm1lbnVcIilcclxuXHRcdGNvbnN0IHt4LCB5fSA9IHRoaXMuZ2V0TW91c2VDb29yZGluYXRlKCk7XHJcblx0XHRjb25zdCBhcGkgPSB0aGlzLmFwaTtcclxuXHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xyXG5cdFx0Y29uc3QgJGNvbnRhaW5lciA9ICQodGhpcy5jb250YWluZXIpO1xyXG5cclxuXHRcdGxldCBtZW51ID0gXCJcIjtcclxuXHJcblx0XHRhcGkuZ2V0VGVtcGxldGUoJ21lbnUtdG1wbCcpLmRvbmUoKHRtbCkgPT4ge1xyXG5cdFx0XHRtZW51ID0gSGVscGVyLmdldEluc3RhbmNlKCkuaGFuZGxlVGVtcGxldGUodG1sLCB7c3R5bGU6ICdwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OicreCsncHg7dG9wOicreSsncHg7ZGlzcGxheTpibG9jaycsdHlwZTp0eXBlfSwgJ21lbnUtdG1wbCcpO1xyXG4gICAgICAgICAgICAkKCdib2R5JykuYXBwZW5kKG1lbnUpO1xyXG5cdFx0XHR0aGF0LnNldFByb3BzKHtoYXNNZW51OiB0cnVlLCBpc1Nob3dNZW51OiB0cnVlLCBjb250YWluZXI6ICQoJyNtZW51Jyl9KTtcclxuXHRcdFx0dGhhdC5yZWdpc3RlckV2ZW50KCk7XHJcblx0XHR9KTtcclxuXHR9XHJcbiAgICByZWdpc3RlckV2ZW50KCkge1xyXG5cdFx0Y29uc3QgJGNvbnRhaW5lciA9ICQodGhpcy5jb250YWluZXIpO1xyXG5cclxuICAgICAgICAkY29udGFpbmVyLm9mZignY2xpY2snLCAnYScpLm9uKCdjbGljaycsICdhJywgZnVuY3Rpb24oZSkge1xyXG5cdFx0XHRjb25zdCAkdGhpcyA9ICQodGhpcyk7XHJcblx0XHRcdGNvbnN0IHR5cGUgPSAkdGhpcy50ZXh0KCk7XHJcblx0XHRcdFxyXG5cdFx0XHRzd2l0Y2godHlwZSkge1xyXG5cdFx0XHRcdGNhc2UgJ+WinuWKoOS4gOihjCc6XHJcblx0XHRcdFx0XHRNZW51LmdldEluc3RhbmNlKCkuaW5zZXJ0Um93KCk7XHJcblx0XHRcdFx0XHQkdGhpcy5wYXJlbnRzKCcjbWVudScpLmNzcygnZGlzcGxheScsICdub25lJyk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlICfliKDpmaTkuIDooYwnOlxyXG5cdFx0XHRcdFx0TWVudS5nZXRJbnN0YW5jZSgpLmRlbGV0ZVJvdygpO1xyXG5cdFx0XHRcdFx0JHRoaXMucGFyZW50cygnI21lbnUnKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSAn5paw5aKe5LiA5YiXJzpcclxuXHRcdFx0XHRcdE1lbnUuZ2V0SW5zdGFuY2UoKS5pbnNlcnRDb2woKTtcclxuXHRcdFx0XHRcdCR0aGlzLnBhcmVudHMoJyNtZW51JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgJ+WIoOmZpOS4gOWIlyc6XHJcblx0XHRcdFx0XHRNZW51LmdldEluc3RhbmNlKCkuZGVsZXRlQ29sKCk7XHJcblx0XHRcdFx0XHQkdGhpcy5wYXJlbnRzKCcjbWVudScpLmNzcygnZGlzcGxheScsICdub25lJyk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlICflkJHlj7PlkIjlubbljZXlhYPmoLwnOlxyXG5cdFx0XHRcdFx0TWVudS5nZXRJbnN0YW5jZSgpLm1lcmdlQ2VsbHMoXCJyaWdodFwiKTtcclxuXHRcdFx0XHRcdCR0aGlzLnBhcmVudHMoJyNtZW51JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgJ+WQkeS4i+WQiOW5tuWNleWFg+agvCc6XHJcblx0XHRcdFx0XHRNZW51LmdldEluc3RhbmNlKCkubWVyZ2VDZWxscyhcImJvdHRvbVwiKTtcclxuXHRcdFx0XHRcdCR0aGlzLnBhcmVudHMoJyNtZW51JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgJ+WIoOmZpCc6XHJcblx0XHRcdFx0XHRNZW51LmdldEluc3RhbmNlKCkuZGVsZXRlKClcclxuXHRcdFx0XHRcdCR0aGlzLnBhcmVudHMoJyNtZW51JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTtcclxuXHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cdFxyXG5cdFx0XHQvLyAkdGhpcy5jc3MoJ291dGxpbmUtc3R5bGUnLCAnbm9uZScpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cdGhpZGVNZW51KCkge1xyXG5cdFx0Y29uc3QgbWVudSA9ICQoJyNtZW51Jyk7XHJcblx0XHRcclxuXHRcdGlmKG1lbnUpIHtcclxuXHRcdFx0bWVudS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG5cdFx0XHR0aGlzLnNldFByb3BzKHtpc1Nob3dNZW51OiBmYWxzZX0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR1cGRhdGVNZW51KCl7XHJcblx0XHRjb25zdCB7eCwgeX0gPSB0aGlzLmdldE1vdXNlQ29vcmRpbmF0ZSgpO1xyXG5cdFx0Y29uc3QgbWVudSA9ICQoJyNtZW51Jyk7XHJcblx0XHRcclxuXHRcdGlmKG1lbnUpIHtcclxuXHRcdFx0bWVudS5jc3Moe2xlZnQ6IHgsIHRvcDogeSwgZGlzcGxheTogJ2Jsb2NrJ30pO1xyXG5cdFx0XHR0aGlzLnNldFByb3BzKHtpc1Nob3dNZW51OiB0cnVlfSk7XHJcblx0XHR9XHJcblx0fVxyXG5cdGluc2VydFJvdygpe1xyXG5cdFx0Y29uc29sZS5sb2coXCJtZW51aW5zZXJ0Um93XCIrdGhpcy5mb3JtLl9jdXJyZW50Q2h1bmspO1xyXG5cdFx0dGhpcy5mb3JtLl9jdXJyZW50Q2h1bmsuaW5zZXJ0Um93KHRoaXMuZm9ybS5ub3dSb3dJbmRleCx0aGlzLmZvcm0ucmVhbFJvd0luZGV4LHRoaXMuZm9ybS5ub3dDb2xJbmRleCx0aGlzLmZvcm0uY2VsbEhhdmVSb3dzcGFuKTtcclxuXHRcdHRoaXMuZm9ybS5yZXBhaW50KClcclxuXHR9XHJcblx0ZGVsZXRlUm93KCl7XHJcblx0XHRjb25zb2xlLmxvZyhcIm1lbnVkZWxldGVSb3dcIit0aGlzLmZvcm0uX2N1cnJlbnRDaHVuayk7XHJcblx0XHR0aGlzLmZvcm0uX2N1cnJlbnRDaHVuay5kZWxldGVSb3codGhpcy5mb3JtLm5vd1Jvd0luZGV4LHRoaXMuZm9ybS5yZWFsUm93SW5kZXgsdGhpcy5mb3JtLm5vd0NvbEluZGV4LHRoaXMuZm9ybS5jZWxsSGF2ZVJvd3NwYW4pO1xyXG5cdFx0dGhpcy5mb3JtLnJlcGFpbnQoKVxyXG5cdH1cclxuXHRpbnNlcnRDb2woKXtcclxuXHRcdGNvbnNvbGUubG9nKFwibWVudWluc2VydENvbFwiK3RoaXMuZm9ybS5fY3VycmVudENodW5rKTtcclxuXHRcdHRoaXMuZm9ybS5fY3VycmVudENodW5rLmluc2VydENvbCh0aGlzLmZvcm0ubm93Um93SW5kZXgsdGhpcy5mb3JtLm5vd0NvbEluZGV4KTtcclxuXHRcdHRoaXMuZm9ybS5yZXBhaW50KClcclxuXHR9XHJcblx0ZGVsZXRlQ29sKCl7XHJcblx0XHRjb25zb2xlLmxvZyhcIm1lbnVkZWxldGVDb2xcIit0aGlzLmZvcm0uX2N1cnJlbnRDaHVuayk7XHJcblx0XHR0aGlzLmZvcm0uX2N1cnJlbnRDaHVuay5kZWxldGVDb2wodGhpcy5mb3JtLm5vd0NvbEluZGV4KTtcclxuXHRcdHRoaXMuZm9ybS5yZXBhaW50KClcclxuXHR9XHJcblx0bWVyZ2VDZWxscyhtZXJnZUNlbGxzRGlyZWN0aW9uKXtcclxuXHRcdGNvbnNvbGUubG9nKFwibWVudW1lcmdlQ2VsbHNcIit0aGlzLmZvcm0uX2N1cnJlbnRDaHVuayk7XHJcblx0XHR0aGlzLmZvcm0uX2N1cnJlbnRDaHVuay5tZXJnZUNlbGxzKG1lcmdlQ2VsbHNEaXJlY3Rpb24sdGhpcy5mb3JtLm5vd1Jvd0luZGV4LHRoaXMuZm9ybS5ub3dDb2xJbmRleCk7XHJcblx0XHR0aGlzLmZvcm0ucmVwYWludCgpXHJcblx0fVxyXG5cdGRlbGV0ZSgpe1xyXG5cdFx0Ly/liKDpmaTmjqfku7ZcclxuXHRcdGlmKHRoaXMuZm9ybS5fY3VycmVudENodW5rICYmICF0aGlzLmZvcm0uX2N1cnJlbnRFbGVtKXtcclxuXHRcdFx0Ly/liKDpmaTmnIDlpJblsYLnmoTlhYPntKBcclxuXHRcdFx0Y29uc29sZS5sb2coXCJtZW51LDFcIilcclxuXHRcdFx0dGhpcy5mb3JtLmRlbGV0ZUNodW5rKHRoaXMuZm9ybS5fY3VycmVudENodW5rLmlkKTtcclxuXHRcdFx0dGhpcy5mb3JtLnJlcGFpbnQoKTtcclxuXHRcdFx0Y29uc3QgcHJvcHNQYW5lbCA9IFByb3BzUGFuZWwuZ2V0SW5zdGFuY2UoKTtcclxuICAgIFx0XHRwcm9wc1BhbmVsLnJlbmRlcigpO1xyXG5cclxuXHRcdH1lbHNlIGlmKHRoaXMuZm9ybS5fY3VycmVudENodW5rICYmIHRoaXMuZm9ybS5fY3VycmVudEVsZW0pe1xyXG5cdFx0XHRjb25zb2xlLmxvZyhcIm1lbnUsMlwiKTtcclxuXHRcdFx0dGhpcy5mb3JtLmRlbGV0ZUVsZW0odGhpcy5mb3JtLl9jdXJyZW50Q2h1bmsuaWQsdGhpcy5mb3JtLl9jdXJyZW50RWxlbS5pZCk7XHJcblx0XHRcdHRoaXMuZm9ybS5yZXBhaW50KCk7XHJcblx0XHRcdGNvbnN0IHByb3BzUGFuZWwgPSBQcm9wc1BhbmVsLmdldEluc3RhbmNlKCk7XHJcbiAgICBcdFx0cHJvcHNQYW5lbC5yZW5kZXIoKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgTWVudTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2Zvcm0vdmlldy9NZW51LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTs7Ozs7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQS9CQTtBQWlDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBRUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///43\n");

/***/ }),
/* 44 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\t\t\t\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n//鐢ㄦ潵閰嶇疆姣忎釜鍏冪礌鐨勫睘鎬nvar Graphics = function () {\n\t\t\t\tfunction Graphics(ctx) {\n\t\t\t\t\t\t\t\t_classCallCheck(this, Graphics);\n\n\t\t\t\t\t\t\t\tthis.ctx = ctx;\n\t\t\t\t\t\t\t\tthis.ctx.translate(0.5, 0.5);\n\t\t\t\t}\n\n\t\t\t\t_createClass(Graphics, [{\n\t\t\t\t\t\t\t\tkey: 'setColor',\n\t\t\t\t\t\t\t\tvalue: function setColor(color) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.fillStyle = color;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.strokeStyle = color;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'setFont',\n\t\t\t\t\t\t\t\tvalue: function setFont(font) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.font = font;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'setLineWidth',\n\t\t\t\t\t\t\t\tvalue: function setLineWidth(width) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.lineWidth = width;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'setShadow',\n\t\t\t\t\t\t\t\tvalue: function setShadow(color, x, y, blur) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.shadowColor = color;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.shadowOffsetX = x;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.shadowOffsetY = y;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.shadowBlur = blur;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'textAlign',\n\t\t\t\t\t\t\t\tvalue: function textAlign(align) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.textAlign = align;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'textBaseLine',\n\t\t\t\t\t\t\t\tvalue: function textBaseLine(pos) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.textBaseline = pos;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'stringWidth',\n\t\t\t\t\t\t\t\tvalue: function stringWidth(txt) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn this.ctx.measureText(txt).width;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'strokeRect',\n\t\t\t\t\t\t\t\tvalue: function strokeRect(x, y, width, height) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.strokeRect(x, y, width, height);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'translate',\n\t\t\t\t\t\t\t\tvalue: function translate(x, y) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.translate(x, y);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'fillText',\n\t\t\t\t\t\t\t\tvalue: function fillText(text, x, y) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.fillText(text, x, y);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'fillRect',\n\t\t\t\t\t\t\t\tvalue: function fillRect(x, y, width, height) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.fillRect(x, y, width, height);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'fillPolygon',\n\t\t\t\t\t\t\t\tvalue: function fillPolygon(polygon) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.beginPath();\n\t\t\t\t\t\t\t\t\t\t\t\tfor (var i = 0; i < polygon.points.length; i++) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (i == 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.moveTo(polygon.points[i].x, polygon.points[i].y);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.lineTo(polygon.points[i].x, polygon.points[i].y);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.fill();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'drawLine',\n\t\t\t\t\t\t\t\tvalue: function drawLine(x1, y1, x2, y2) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.beginPath();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.moveTo(x1, y1);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.lineTo(x2, y2);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.closePath();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.stroke();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'drawImage',\n\t\t\t\t\t\t\t\tvalue: function drawImage(image, x, y, width, height) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.drawImage(image, x, y, width, height);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'drawRect',\n\t\t\t\t\t\t\t\tvalue: function drawRect(x, y, width, height) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.strokeRect(x, y, width, height);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'drawString',\n\t\t\t\t\t\t\t\tvalue: function drawString(text, x, y) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.strokeText(text, x, y);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'drawTextWithRow',\n\t\t\t\t\t\t\t\tvalue: function drawTextWithRow(text, x, y, maxWidth, lineHeight) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (typeof text != 'string' || typeof x != 'number' || typeof y != 'number') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (typeof maxWidth == 'undefined') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxWidth = 142;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (typeof lineHeight == 'undefined') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlineHeight = 12;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t//灏嗘枃鏈媶涓哄崟涓瓧绗︽暟缁刓n\t\t\t\t\t\t\t\t\t\t\t\tvar arrText = text.split('');\n\t\t\t\t\t\t\t\t\t\t\t\tvar line = '';\n\t\t\t\t\t\t\t\t\t\t\t\tvar textLine = '';\n\n\t\t\t\t\t\t\t\t\t\t\t\tfor (var i = 0; i < arrText.length; i++) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttextLine = line + arrText[i];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar metrics = this.ctx.measureText(textLine);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar textLen = metrics.width;\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (textLen > maxWidth) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.fillText(line, x, y);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tline = arrText[i];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ty += lineHeight;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tline = textLine;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.fillText(line, x, y);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'drawArc',\n\t\t\t\t\t\t\t\tvalue: function drawArc(x, y, r, color, borderColor) {\n\t\t\t\t\t\t\t\t\t\t\t\tvar staAngle = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\t\t\t\t\t\t\t\t\t\t\t\tvar endAngle = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : Math.PI * 2;\n\t\t\t\t\t\t\t\t\t\t\t\tvar antiClockWise = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;\n\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.beginPath();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.arc(x, y, r, staAngle, endAngle, antiClockWise);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.closePath();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setColor(borderColor);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setLineWidth(1);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.stroke();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setColor(color);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.fill();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'drawEllipse',\n\t\t\t\t\t\t\t\tvalue: function drawEllipse(x, y, radiusX, radiusY, mode, color) {\n\t\t\t\t\t\t\t\t\t\t\t\tvar rotation = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;\n\t\t\t\t\t\t\t\t\t\t\t\tvar startAngle = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 0;\n\t\t\t\t\t\t\t\t\t\t\t\tvar endAngle = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : Math.PI * 2;\n\t\t\t\t\t\t\t\t\t\t\t\tvar anticlockwise = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;\n\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.beginPath();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.closePath();\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (mode == 'Opaque') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setColor(color.forecolor);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.fill();\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setColor(color.backcolor);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.stroke();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'clearRect',\n\t\t\t\t\t\t\t\tvalue: function clearRect(x, y, width, height) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.clearRect(x, y, width, height);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'getTextWidth',\n\t\t\t\t\t\t\t\tvalue: function getTextWidth(text) {\n\t\t\t\t\t\t\t\t\t\t\t\tvar textLen = this.ctx.measureText(text).width;\n\n\t\t\t\t\t\t\t\t\t\t\t\treturn textLen;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'save',\n\t\t\t\t\t\t\t\tvalue: function save() {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.save();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'restore',\n\t\t\t\t\t\t\t\tvalue: function restore() {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.ctx.restore();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}]);\n\n\t\t\t\treturn Graphics;\n}();\n\nexports.default = Graphics;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL3V0aWxpdHkvR3JhcGhpY3MuanM/NjYyMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvL+eUqOadpemFjee9ruavj+S4quWFg+e0oOeahOWxnuaAp1xyXG5jbGFzcyBHcmFwaGljcyB7XHJcbiAgICBjb25zdHJ1Y3RvcihjdHgpe1xyXG4gICAgICAgIHRoaXMuY3R4ID0gY3R4O1xyXG4gICAgICAgIHRoaXMuY3R4LnRyYW5zbGF0ZSgwLjUsIDAuNSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Q29sb3IoY29sb3Ipe1xyXG4gICAgICAgIHRoaXMuY3R4LmZpbGxTdHlsZSA9IGNvbG9yO1xyXG4gICAgICAgIHRoaXMuY3R4LnN0cm9rZVN0eWxlID0gY29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Rm9udChmb250KXtcclxuICAgICAgICB0aGlzLmN0eC5mb250ID0gZm9udDtcclxuICAgIH1cclxuXHRcclxuXHRzZXRMaW5lV2lkdGgod2lkdGgpIHtcclxuXHRcdHRoaXMuY3R4LmxpbmVXaWR0aCA9IHdpZHRoO1xyXG5cdH1cclxuXHRcclxuXHRzZXRTaGFkb3coY29sb3IsIHgsIHksIGJsdXIpIHtcclxuXHRcdHRoaXMuY3R4LnNoYWRvd0NvbG9yID0gY29sb3I7XHJcblx0XHR0aGlzLmN0eC5zaGFkb3dPZmZzZXRYID0geDtcclxuXHRcdHRoaXMuY3R4LnNoYWRvd09mZnNldFkgPSB5O1xyXG5cdFx0dGhpcy5jdHguc2hhZG93Qmx1ciA9IGJsdXI7XHJcblx0fVxyXG5cclxuICAgIHRleHRBbGlnbihhbGlnbil7XHJcbiAgICAgICAgdGhpcy5jdHgudGV4dEFsaWduID0gYWxpZ247IFxyXG4gICAgfVxyXG5cdFxyXG5cdHRleHRCYXNlTGluZShwb3MpIHtcclxuXHRcdHRoaXMuY3R4LnRleHRCYXNlbGluZSA9IHBvcztcclxuXHR9XHJcblxyXG4gICAgc3RyaW5nV2lkdGgodHh0KXtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdHgubWVhc3VyZVRleHQodHh0KS53aWR0aDtcclxuICAgIH1cclxuXHJcbiAgICBzdHJva2VSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpe1xyXG4gICAgICAgIHRoaXMuY3R4LnN0cm9rZVJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhbnNsYXRlKHgsIHkpe1xyXG4gICAgICAgIHRoaXMuY3R4LnRyYW5zbGF0ZSh4LCB5KVxyXG4gICAgfVxyXG5cclxuICAgIGZpbGxUZXh0KHRleHQsIHgsIHkpe1xyXG4gICAgICAgIHRoaXMuY3R4LmZpbGxUZXh0KHRleHQsIHgsIHkpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbGxSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpe1xyXG4gICAgICAgIHRoaXMuY3R4LmZpbGxSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbGxQb2x5Z29uKHBvbHlnb24pe1xyXG4gICAgICAgIHRoaXMuY3R4LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBwb2x5Z29uLnBvaW50cy5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKGkgPT0gMCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN0eC5tb3ZlVG8ocG9seWdvbi5wb2ludHNbaV0ueCxwb2x5Z29uLnBvaW50c1tpXS55KTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN0eC5saW5lVG8ocG9seWdvbi5wb2ludHNbaV0ueCxwb2x5Z29uLnBvaW50c1tpXS55KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN0eC5maWxsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZHJhd0xpbmUgKHgxLCB5MSwgeDIsIHkyKXsgICAgIFxyXG4gICAgICAgIHRoaXMuY3R4LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIHRoaXMuY3R4Lm1vdmVUbyh4MSwgeTEpO1xyXG4gICAgICAgIHRoaXMuY3R4LmxpbmVUbyh4MiwgeTIpO1xyXG4gICAgICAgIHRoaXMuY3R4LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIHRoaXMuY3R4LnN0cm9rZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRyYXdJbWFnZShpbWFnZSwgeCwgeSwgd2lkdGgsIGhlaWdodCl7XHJcbiAgICAgICAgdGhpcy5jdHguZHJhd0ltYWdlKGltYWdlLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICBkcmF3UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KXtcclxuICAgICAgICB0aGlzLmN0eC5zdHJva2VSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGRyYXdTdHJpbmcodGV4dCwgeCwgeSl7XHJcbiAgICAgICAgdGhpcy5jdHguc3Ryb2tlVGV4dCh0ZXh0LCB4LCB5KTtcclxuICAgIH1cclxuXHRcclxuXHRkcmF3VGV4dFdpdGhSb3codGV4dCwgeCwgeSwgbWF4V2lkdGgsIGxpbmVIZWlnaHQpIHtcclxuXHRcdGlmICh0eXBlb2YgdGV4dCAhPSAnc3RyaW5nJyB8fCB0eXBlb2YgeCAhPSAnbnVtYmVyJyB8fCB0eXBlb2YgeSAhPSAnbnVtYmVyJykge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdGlmICh0eXBlb2YgbWF4V2lkdGggPT0gJ3VuZGVmaW5lZCcpIHtcclxuXHRcdFx0bWF4V2lkdGggPSAxNDI7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdGlmKHR5cGVvZiBsaW5lSGVpZ2h0ID09ICd1bmRlZmluZWQnKSB7XHJcblx0XHRcdGxpbmVIZWlnaHQgPSAxMjtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0Ly/lsIbmlofmnKzmi4bkuLrljZXkuKrlrZfnrKbmlbDnu4RcclxuXHRcdGxldCBhcnJUZXh0ID0gdGV4dC5zcGxpdCgnJyk7XHJcblx0XHRsZXQgbGluZSA9ICcnO1xyXG5cdFx0bGV0IHRleHRMaW5lID0gJyc7XHJcblx0XHRcclxuXHRcdGZvcihsZXQgaSA9IDA7aSA8IGFyclRleHQubGVuZ3RoO2krKykge1xyXG5cdFx0XHR0ZXh0TGluZSA9IGxpbmUgKyBhcnJUZXh0W2ldO1xyXG5cdFx0XHRsZXQgbWV0cmljcyA9IHRoaXMuY3R4Lm1lYXN1cmVUZXh0KHRleHRMaW5lKTtcclxuXHRcdFx0bGV0IHRleHRMZW4gPSBtZXRyaWNzLndpZHRoO1xyXG5cdFx0XHRcclxuXHRcdFx0aWYodGV4dExlbiA+IG1heFdpZHRoKSB7XHJcblx0XHRcdFx0dGhpcy5jdHguZmlsbFRleHQobGluZSwgeCwgeSk7XHJcblx0XHRcdFx0bGluZSA9IGFyclRleHRbaV07XHJcblx0XHRcdFx0eSArPSBsaW5lSGVpZ2h0O1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGxpbmUgPSB0ZXh0TGluZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHR0aGlzLmN0eC5maWxsVGV4dChsaW5lLCB4LCB5KTtcclxuXHR9XHJcblx0XHJcbiAgICBkcmF3QXJjKHgseSxyLGNvbG9yLGJvcmRlckNvbG9yLHN0YUFuZ2xlID0gMCxlbmRBbmdsZSA9IE1hdGguUEkgKiAyLGFudGlDbG9ja1dpc2UgPSBmYWxzZSkge1xyXG5cdFx0dGhpcy5jdHguYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgdGhpcy5jdHguYXJjKHgseSxyLHN0YUFuZ2xlLGVuZEFuZ2xlLGFudGlDbG9ja1dpc2UpO1xyXG5cdFx0dGhpcy5jdHguY2xvc2VQYXRoKCk7XHJcblx0XHR0aGlzLnNldENvbG9yKGJvcmRlckNvbG9yKTtcclxuXHRcdHRoaXMuc2V0TGluZVdpZHRoKDEpO1xyXG4gICAgICAgIHRoaXMuY3R4LnN0cm9rZSgpO1xyXG5cdFx0dGhpcy5zZXRDb2xvcihjb2xvcik7XHJcblx0XHR0aGlzLmN0eC5maWxsKCk7XHJcbiAgICB9XHJcblx0XHJcblx0ZHJhd0VsbGlwc2UoeCwgeSwgcmFkaXVzWCwgcmFkaXVzWSwgbW9kZSwgY29sb3IsIHJvdGF0aW9uID0gMCwgc3RhcnRBbmdsZSA9IDAsIGVuZEFuZ2xlID0gTWF0aC5QSSAqIDIsIGFudGljbG9ja3dpc2UgPSBmYWxzZSkge1xyXG5cdFx0dGhpcy5jdHguYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgdGhpcy5jdHguZWxsaXBzZSh4LCB5LCByYWRpdXNYLCByYWRpdXNZLCByb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIGFudGljbG9ja3dpc2UpO1xyXG5cdFx0dGhpcy5jdHguY2xvc2VQYXRoKCk7XHJcblx0XHRcclxuXHRcdGlmKG1vZGUgPT0gJ09wYXF1ZScpIHtcclxuXHRcdFx0dGhpcy5zZXRDb2xvcihjb2xvci5mb3JlY29sb3IpO1xyXG5cdFx0XHR0aGlzLmN0eC5maWxsKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnNldENvbG9yKGNvbG9yLmJhY2tjb2xvcik7XHJcblx0XHRcdHRoaXMuY3R4LnN0cm9rZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRcclxuXHRjbGVhclJlY3QoeCx5LHdpZHRoLGhlaWdodCl7XHJcblx0XHR0aGlzLmN0eC5jbGVhclJlY3QoeCx5LHdpZHRoLGhlaWdodCk7XHJcblx0fVxyXG5cdFxyXG5cdGdldFRleHRXaWR0aCh0ZXh0KSB7XHJcblx0XHRjb25zdCB0ZXh0TGVuID0gdGhpcy5jdHgubWVhc3VyZVRleHQodGV4dCkud2lkdGg7XHJcblxyXG5cdFx0cmV0dXJuIHRleHRMZW47XHJcblx0fVxyXG5cdFxyXG5cdHNhdmUoKSB7XHJcblx0XHR0aGlzLmN0eC5zYXZlKCk7XHJcblx0fVxyXG5cdFxyXG5cdHJlc3RvcmUoKSB7XHJcblx0XHR0aGlzLmN0eC5yZXN0b3JlKCk7XHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBHcmFwaGljcztcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3V0aWxpdHkvR3JhcGhpY3MuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7QUFHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///44\n");

/***/ }),
/* 45 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CellLayout = exports.FlowLayout = exports.TdLayout = exports.TableLayout = exports.layout = undefined;\n\nvar _layout = __webpack_require__(21);\n\nvar _layout2 = _interopRequireDefault(_layout);\n\nvar _TableLayout = __webpack_require__(95);\n\nvar _TableLayout2 = _interopRequireDefault(_TableLayout);\n\nvar _FlowLayout = __webpack_require__(46);\n\nvar _FlowLayout2 = _interopRequireDefault(_FlowLayout);\n\nvar _TdLayout = __webpack_require__(28);\n\nvar _TdLayout2 = _interopRequireDefault(_TdLayout);\n\nvar _CellLayout = __webpack_require__(47);\n\nvar _CellLayout2 = _interopRequireDefault(_CellLayout);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.layout = _layout2.default;\nexports.TableLayout = _TableLayout2.default;\nexports.TdLayout = _TdLayout2.default;\nexports.FlowLayout = _FlowLayout2.default;\nexports.CellLayout = _CellLayout2.default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2Zvcm0vTGF5b3V0L2luZGV4LmpzPzM0NGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxheW91dCBmcm9tICcuL2xheW91dCc7XHJcbmltcG9ydCBUYWJsZUxheW91dCBmcm9tICcuL1RhYmxlTGF5b3V0JztcclxuaW1wb3J0IEZsb3dMYXlvdXQgZnJvbSAnLi9GbG93TGF5b3V0JztcclxuaW1wb3J0IFRkTGF5b3V0IGZyb20gJy4vVGRMYXlvdXQnO1xyXG5pbXBvcnQgQ2VsbExheW91dCBmcm9tICcuL0NlbGxMYXlvdXQnO1xyXG5cclxuXHJcbmV4cG9ydCB7bGF5b3V0LCBUYWJsZUxheW91dCxUZExheW91dCxGbG93TGF5b3V0LENlbGxMYXlvdXR9O1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9MYXlvdXQvaW5kZXguanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7OztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///45\n");

/***/ }),
/* 46 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _layout2 = __webpack_require__(21);\n\nvar _layout3 = _interopRequireDefault(_layout2);\n\nvar _CellLayout = __webpack_require__(47);\n\nvar _CellLayout2 = _interopRequireDefault(_CellLayout);\n\nvar _index = __webpack_require__(22);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FlowLayout = function (_layout) {\n    _inherits(FlowLayout, _layout);\n\n    function FlowLayout() {\n        _classCallCheck(this, FlowLayout);\n\n        var _this = _possibleConstructorReturn(this, (FlowLayout.__proto__ || Object.getPrototypeOf(FlowLayout)).call(this));\n\n        _this.type = \"flow\";\n        _this.text = \"FlowLayout\";\n        _this.cursor = \"default\";\n        _this.element = [];\n        _this.id = _utility.Sequence.createUuid();\n        _this.scope = 'FlowLayout';\n        _this.tableClass = \"FlowLayout\";\n        _this.width = null;\n        _this.height = 300;\n        _this.heightPre = null;\n        _this.allName = [];\n        return _this;\n    }\n\n    _createClass(FlowLayout, [{\n        key: 'init',\n        value: function init() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n            var h = '<div><f-flayout id=\"' + this.id + '\" ' + 'class=\"' + 'inlineBlock' + '\"' + 'style=\"' + 'min-width:' + this.width + 'px;' + 'min-height:' + this.height + 'px;' + 'border:1px solid #ccc;\"' + '>';\n            if (this.element.length > 0) {\n                for (var i = 0; i < this.element.length; i++) {\n                    h += this.element[i].paint();\n                }\n            }\n            h = h + '</f-flayout></div>';\n            return h;\n        }\n    }, {\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'parseHtml',\n        value: function parseHtml(html) {\n            var _this2 = this;\n\n            var root = $(html)[0];\n            //鏍峰紡\n            // console.log(style);\n            var obj = {};\n\n            for (var key in root.attributes) {\n                switch (root.attributes[key].name) {\n                    case \"style\":\n                        var style = root.attributes[root.attributes[key].name].value;\n\n                        do {\n\n                            var i = style.indexOf(\":\");\n                            var key2 = style.slice(0, i);\n                            style = style.slice(i + 1);\n\n                            var j = style.indexOf(\";\");\n                            var val = style.slice(0, j);\n                            style = style.slice(j + 1);\n                            if (key2 == \"min-width\") {\n                                obj[\"width\"] = parseFloat(val);\n                            } else if (key2 == \"min-height\") {\n                                obj[\"height\"] = parseFloat(val);\n                            } else {\n                                obj[key2] = val;\n                            }\n                        } while (style.length != 0);\n                        break;\n                    default:\n                        if (root.attributes[key].name && root.attributes[key].value) obj[root.attributes[key].name] = root.attributes[key].value;\n                        break;\n                }\n            }\n            var traversalNode = function traversalNode(htmlNode) {\n                var tagName = htmlNode.tagName;\n\n                switch (tagName) {\n                    case 'DIV':\n                        var root2 = htmlNode;\n                        var traversalNode2 = function traversalNode2(htmlNode2) {\n                            var tagName = htmlNode2.tagName;\n\n                            switch (tagName) {\n                                case 'TABLE':\n                                    var tablelayout = new TableLayout();\n                                    tablelayout.width = parseFloat(htmlNode2.getAttribute(\"width\"));\n                                    tablelayout.height = parseFloat(htmlNode2.getAttribute(\"height\"));\n                                    tablelayout.x = parseFloat(htmlNode2.getAttribute(\"panelx\"));\n                                    tablelayout.y = parseFloat(htmlNode2.getAttribute(\"panely\"));\n                                    tablelayout.parseHtml(htmlNode2);\n                                    break;\n                                case 'F-FLAYOUT':\n                                    var flowLayout = new FlowLayout();\n                                    flowLayout.width = parseFloat(htmlNode2.getAttribute(\"width\"));\n                                    flowLayout.height = parseFloat(htmlNode2.getAttribute(\"height\"));\n                                    flowLayout.parseHtml(htmlNode2);\n                                    _this2.element.push(flowLayout);\n                                    _this2.allName = [].concat(_toConsumableArray(_this2.allName), _toConsumableArray(flowLayout.getAllName()));\n\n                                    break;\n                                case 'F-CLAYOUT':\n                                    var cellLayout = new _CellLayout2.default();\n                                    cellLayout.width = parseFloat(htmlNode2.getAttribute(\"width\"));\n                                    cellLayout.height = parseFloat(htmlNode2.getAttribute(\"height\"));\n                                    cellLayout.parseHtml(htmlNode2);\n                                    _this2.element.push(cellLayout);\n                                    console.log(_this2.chunk);\n                                    _this2.allName = [].concat(_toConsumableArray(_this2.allName), _toConsumableArray(cellLayout.getAllName()));\n                                    break;\n                                case 'F-INPUT':\n                                    var inputtype = htmlNode2.getAttribute(\"classname\");\n                                    switch (inputtype) {\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.DateField\":\n                                            var data = new _index.Data();\n                                            data.parseHtml(htmlNode2);\n                                            _this2.element.push(data);\n                                            _this2.allName.push({ \"name\": data.name, \"value\": data.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.RadioField\":\n                                            var radio = new _index.Radio();\n                                            radio.parseHtml(htmlNode2);\n                                            _this2.element.push(radio);\n                                            _this2.allName.push({ \"name\": radio.name, \"value\": radio.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.CheckboxField\":\n                                            var checkbox = new _index.Checkbox();\n                                            checkbox.parseHtml(htmlNode2);\n                                            _this2.element.push(checkbox);\n                                            _this2.allName.push({ \"name\": checkbox.name, \"value\": checkbox.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.SuggestField\":\n                                            var suggestfield = new _index.Suggestfield();\n                                            suggestfield.parseHtml(htmlNode2);\n                                            suggestfield.isblock = \"false\";\n                                            _this2.element.push(suggestfield);\n                                            _this2.allName.push({ \"name\": suggestfield.name, \"value\": suggestfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.ButtonField\":\n                                            var button = new _index.Button();\n                                            button.parseHtml(htmlNode2);\n                                            button.isblock = \"true\";\n                                            _this2.element.push(button);\n                                            _this2.allName.push({ \"name\": button.name, \"value\": button.fieldtype });\n                                            break;\n                                            break;\n                                        default:\n                                            var input = new _index.Input();\n                                            input.parseHtml(htmlNode2);\n                                            _this2.element.push(input);\n                                            _this2.allName.push({ \"name\": input.name, \"value\": input.fieldtype });\n                                            break;\n                                    }\n                                    break;\n                                case 'F-TEXTAREA':\n                                    var textarea = new _index.Textarea();\n                                    textarea.parseHtml(htmlNode2);\n                                    _this2.element.push(textarea);\n                                    _this2.allName.push({ \"name\": textarea.name, \"value\": textarea.fieldtype });\n\n                                    break;\n                                // case 'F-RADIO':\n                                //     let radio = new Radio();\n                                //     radio.parseHtml(htmlNode2);\n                                //     this.element.push(radio);\n                                //     this.allName.push({\"name\":radio.name,\"value\":radio.fieldtype})\n\n                                //     break;\n                                // case 'F-CHECKBOX':\n                                //     let checkbox = new Checkbox();\n                                //     checkbox.parseHtml(htmlNode2);\n                                //     this.element.push(checkbox);\n                                //     this.allName.push({\"name\":checkbox.name,\"value\":checkbox.fieldtype})\n\n                                //     break;\n                                // case 'F-DATA':\n                                //     let data = new Data();\n                                //     data.parseHtml(htmlNode2);\n                                //     this.element.push(data);\n                                //     this.allName.push({\"name\":data.name,\"value\":data.fieldtype})\n\n                                //     break;\n                                case 'F-SELECT':\n                                    var selecttype = htmlNode2.getAttribute(\"classname\");\n                                    switch (selecttype) {\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.DepartmentField\":\n                                            var dept = new _index.Dept();\n                                            dept.parseHtml(htmlNode2);\n                                            _this2.element.push(dept);\n                                            _this2.allName.push({ \"name\": dept.name, \"value\": dept.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.SelectAboutField\":\n                                            var selectaboutfield = new _index.Selectaboutfield();\n                                            selectaboutfield.parseHtml(htmlNode2);\n                                            _this2.element.push(selectaboutfield);\n                                            _this2.allName.push({ \"name\": selectaboutfield.name, \"value\": selectaboutfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.TreeDepartmentField\":\n                                            var treedepartmentfield = new _index.Treedepartmentfield();\n                                            treedepartmentfield.parseHtml(htmlNode2);\n                                            _this2.element.push(treedepartmentfield);\n                                            _this2.allName.push({ \"name\": treedepartmentfield.name, \"value\": treedepartmentfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.UserField\":\n                                            var userfield = new _index.Userfield();\n                                            userfield.parseHtml(htmlNode2);\n                                            userfield.isblock = \"false\";\n                                            _this2.element.push(userfield);\n                                            _this2.allName.push({ \"name\": userfield.name, \"value\": userfield.fieldtype });\n                                            break;\n                                        default:\n                                            var select = new _index.Select();\n                                            select.parseHtml(htmlNode2);\n                                            _this2.element.push(select);\n                                            _this2.allName.push({ \"name\": select.name, \"value\": select.fieldtype });\n\n                                            break;\n                                    }\n                                    break;\n                                // case 'F-DEPT':\n                                //     let dept = new Dept();\n                                //     dept.parseHtml(htmlNode2);\n                                //     this.element.push(dept);\n                                //     this.allName.push({\"name\":dept.name,\"value\":dept.fieldtype})\n\n                                //     break;\n                                // case 'F-SELECTABOUTFIELD':\n                                //     let selectaboutfield = new Selectaboutfield();\n                                //     selectaboutfield.parseHtml(htmlNode2);\n                                //     this.element.push(selectaboutfield);\n                                //     this.allName.push({\"name\":selectaboutfield.name,\"value\":selectaboutfield.fieldtype})\n\n                                //     break;\n                                // case 'F-TREEDEPARTMENTFIELD':\n                                //     let treedepartmentfield = new Treedepartmentfield();\n                                //     treedepartmentfield.parseHtml(htmlNode2);\n                                //     this.element.push(treedepartmentfield);\n                                //     this.allName.push({\"name\":treedepartmentfield.name,\"value\":treedepartmentfield.fieldtype})\n\n                                //     break; \n                                // case 'F-USERFIELD':\n                                //     let userfield = new Userfield();\n                                //     userfield.parseHtml(htmlNode2);\n                                //     userfield.isblock=\"false\";\n                                //     this.element.push(userfield);\n                                //     this.allName.push({\"name\":userfield.name,\"value\":userfield.fieldtype})\n                                //     break;  \n                                // case 'F-SUGGESTFIELD':\n                                //     let suggestfield = new Suggestfield();\n                                //     suggestfield.parseHtml(htmlNode2);\n                                //     suggestfield.isblock=\"false\";\n                                //     this.element.push(suggestfield);\n                                //     this.allName.push({\"name\":suggestfield.name,\"value\":suggestfield.fieldtype})\n                                //     break; \n                                // case 'F-BUTTON':\n                                //     let button = new Button();\n                                //     button.parseHtml(htmlNode2);\n                                //     button.isblock=\"true\";\n                                //     this.element.push(button);\n                                //     this.allName.push({\"name\":button.name,\"value\":button.fieldtype})\n\n                                //     break; \n                                // case 'F-VIEWDIALOGFIELD':\n                                //     let viewdialogfield = new Viewdialogfield();\n                                //     viewdialogfield.parseHtml(htmlNode2);\n                                //     this.element.push(viewdialogfield);\n                                //     this.allName.push({\"name\":viewdialogfield.name,\"value\":viewdialogfield.fieldtype})\n\n                                //     break;\n                                case 'F-IMG':\n                                    var imgtype = htmlNode2.getAttribute(\"classname\");\n                                    switch (imgtype) {\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.TabField\":\n                                            var tabfield = new _index.Tabfield();\n                                            tabfield.parseHtml(htmlNode2);\n                                            _this2.element.push(tabfield);\n                                            _this2.allName.push({ \"name\": tabfield.name, \"value\": tabfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.ViewDialogField\":\n                                            var viewdialogfield = new _index.Viewdialogfield();\n                                            viewdialogfield.parseHtml(htmlNode2);\n                                            _this2.element.push(viewdialogfield);\n                                            _this2.allName.push({ \"name\": viewdialogfield.name, \"value\": viewdialogfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.CalctextField\":\n                                            var calctextfield = new _index.Calctextfield();\n                                            calctextfield.parseHtml(htmlNode2);\n                                            _this2.element.push(calctextfield);\n                                            _this2.allName.push({ \"name\": calctextfield.name, \"value\": calctextfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.IncludeField\":\n                                            var includefield = new _index.Includefield();\n                                            includefield.parseHtml(htmlNode2);\n                                            _this2.element.push(includefield);\n                                            _this2.allName.push({ \"name\": includefield.name, \"value\": includefield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.SurveyField\":\n                                            var surveyfield = new _index.Surveyfield();\n                                            surveyfield.parseHtml(htmlNode2);\n                                            _this2.element.push(surveyfield);\n                                            _this2.allName.push({ \"name\": surveyfield.name, \"value\": surveyfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.AttachmentUploadField\":\n                                            var attachment = new _index.Attachment();\n                                            attachment.parseHtml(htmlNode2);\n                                            _this2.element.push(attachment);\n                                            _this2.allName.push({ \"name\": attachment.name, \"value\": attachment.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.ImageUploadField\":\n                                            var imageuploadfield = new _index.Imageuploadfield();\n                                            imageuploadfield.parseHtml(htmlNode2);\n                                            _this2.element.push(imageuploadfield);\n                                            _this2.allName.push({ \"name\": imageuploadfield.name, \"value\": imageuploadfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.OnLineTakePhotoField\":\n                                            var onlinetakephotofield = new _index.Onlinetakephotofield();\n                                            onlinetakephotofield.parseHtml(htmlNode2);\n                                            _this2.element.push(onlinetakephotofield);\n                                            _this2.allName.push({ \"name\": onlinetakephotofield.name, \"value\": onlinetakephotofield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.WeixinGpsField\":\n                                            var weixingpsfield = new _index.Weixingpsfield();\n                                            weixingpsfield.parseHtml(htmlNode2);\n                                            _this2.element.push(weixingpsfield);\n                                            _this2.allName.push({ \"name\": weixingpsfield.name, \"value\": weixingpsfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.WeixinRecordField\":\n                                            var weixinrecordfield = new _index.Weixinrecordfield();\n                                            weixinrecordfield.parseHtml(htmlNode2);\n                                            _this2.element.push(weixinrecordfield);\n                                            _this2.allName.push({ \"name\": weixinrecordfield.name, \"value\": weixinrecordfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.QRCodeField\":\n                                            var qrcodefield = new _index.Qrcodefield();\n                                            qrcodefield.parseHtml(htmlNode2);\n                                            _this2.element.push(qrcodefield);\n                                            _this2.allName.push({ \"name\": qrcodefield.name, \"value\": qrcodefield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.MapField\":\n                                            var mapfield = new _index.Mapfield();\n                                            mapfield.parseHtml(htmlNode2);\n                                            _this2.element.push(mapfield);\n                                            _this2.allName.push({ \"name\": mapfield.name, \"value\": mapfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.GenericWordField\":\n                                            var genericwordfield = new _index.Genericwordfield();\n                                            genericwordfield.parseHtml(htmlNode2);\n                                            _this2.element.push(genericwordfield);\n                                            _this2.allName.push({ \"name\": genericwordfield.name, \"value\": genericwordfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.HTMLEditorField\":\n                                            var htmleditorfield = new Htmleditorfield();\n                                            htmleditorfield.parseHtml(htmlNode2);\n                                            _this2.element.push(htmleditorfield);\n                                            _this2.allName.push({ \"name\": htmleditorfield.name, \"value\": htmleditorfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.FlowHistoryField\":\n                                            var flowhistoryfield = new _index.Flowhistoryfield();\n                                            flowhistoryfield.parseHtml(htmlNode2);\n                                            _this2.element.push(flowhistoryfield);\n                                            _this2.allName.push({ \"name\": flowhistoryfield.name, \"value\": flowhistoryfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.FlowReminderHistoryField\":\n                                            var flowreminderhistoryfield = new _index.Flowreminderhistoryfield();\n                                            flowreminderhistoryfield.parseHtml(htmlNode2);\n                                            _this2.element.push(flowreminderhistoryfield);\n                                            _this2.allName.push({ \"name\": flowreminderhistoryfield.name, \"value\": flowreminderhistoryfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.InformationFeedbackField\":\n                                            var informationfeedbackfield = new _index.Informationfeedbackfield();\n                                            informationfeedbackfield.parseHtml(htmlNode2);\n                                            _this2.element.push(informationfeedbackfield);\n                                            _this2.allName.push({ \"name\": informationfeedbackfield.name, \"value\": informationfeedbackfield.fieldtype });\n\n                                            break;\n                                        default:\n                                            break;\n                                    }\n                                    break;\n                                default:\n                                    console.log(\"no2\");\n                                    break;\n\n                            }\n                        };\n                        if (root2.hasChildNodes()) {\n                            for (var k = 0; k < root2.children.length; k++) {\n                                traversalNode2(root2.children[k]);\n                            }\n                        }\n                        break;\n                    default:\n                        console.log(\"no\");\n                        break;\n\n                }\n            };\n            if (root.hasChildNodes()) {\n                for (var a = 0; a < root.children.length; a++) {\n                    traversalNode(root.children[a]);\n                }\n            }\n            this.setProps(obj);\n            this.resetChunkElemPosition();\n            console.log(obj);\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-pencil';\n            node.uuid = this.id;\n            node.instance = this;\n            if (this.element.length > 0) {\n                node.nodes = [];\n                for (var i = 0, len = this.element.length; i < len; i++) {\n                    var data = this.element[i].getNodeConfigInfo();\n                    node.nodes.push(data);\n                }\n            }\n            return node;\n        }\n    }, {\n        key: 'addElement',\n        value: function addElement(elem) {\n            if (elem.scope != \"CellLayout\" && elem.scope != \"FlowLayout\") elem.isblock = \"false\";\n            this.element.push(elem);\n            return false;\n        }\n    }, {\n        key: 'resetElementToChunk',\n        value: function resetElementToChunk() {}\n    }, {\n        key: 'resetChunkElemPosition',\n        value: function resetChunkElemPosition() {\n            var x = this.x,\n                y = this.y;\n            var bigHeight = 0;\n            for (var i = 0; i < this.element.length; i++) {\n                if (bigHeight < this.element[i].height) bigHeight = this.element[i].height;\n                this.element[i].x = x;this.element[i].y = y;\n                if (this.element[i].scope == \"FlowLayout\" || this.element[i].scope == \"CellLayout\") {\n                    this.element[i].resetChunkElemPosition();\n                }\n                x += this.element[i].width;\n\n                if (this.element[i + 1]) {\n                    if (this.element[i + 1].width + x > this.width) {\n\n                        x = 0;y = bigHeight + this.element[i].y;\n                        bigHeight = 0;\n                    }\n                }\n            }\n        }\n    }, {\n        key: 'setElementPosition',\n        value: function setElementPosition(elem) {\n            var layout = this.width;\n            var width = 0;\n            var height = 0;\n            var currentHeight = 0;\n            if (this.element.length > 0) {\n                var length = this.element.length;\n                height = this.element[0].height;\n                for (var i = 0; i < length; i++) {\n                    width += this.element[i].width;\n                    if (height == 0) {\n                        height = this.element[i].height;\n                    }\n                    if (height < this.element[i].height) {\n                        height = this.element[i].height;\n                    }\n                    if (width >= layout - 5 && this.element[i].scope != \"CellLayout\" && this.element[i].scope != \"FlowLayout\") {\n                        width = 0;\n                        i -= 1;\n                        currentHeight += height;\n                        height = 0;\n                    }\n                }\n                //灏嗙幇鏈夌殑鍏冪礌鐨勫楂樺惊鐜簡涔嬪悗锛屽彇鍒版渶楂樺拰鏈€闀跨殑锛屽啀鎷縠lem鐨勭畻涓婂幓\n                if (width + elem.width > layout) {\n                    width = 0;\n                    currentHeight += height;\n                }\n            }\n            return {\n                x: width,\n                y: currentHeight\n            };\n        }\n        //鍒ゆ柇褰撳墠榧犳爣鎸変笅鐨勪綅缃槸鍚﹀湪璇ュ竷灞€涓嬬殑鍏冪礌鍐�,杩欎釜鏂规硶鏄粰榧犳爣鎸変笅鍑虹幇灞炴€ч潰鏉夸簨浠剁敤鐨勶紝涓昏鏄幏鍙栨渶搴曞眰涓€绾х殑闈炲竷灞€鎴栬€呭竷灞€鍏冪礌\n\n    }, {\n        key: 'selectedElement',\n        value: function selectedElement(x, y) {\n            var currentElem = null;\n            // if(this.x-5<x && this.x+this.width+5>x && this.y-5<y && this.y+this.height+5>y){\n            //     currentElem=this;\n            // }\n            for (var i = 0; i < this.element.length; i++) {\n                if (this.element[i].x - 5 < x && this.element[i].x + this.element[i].width + 5 > x && this.element[i].y - 5 < y && this.element[i].y + this.element[i].height + 5 > y) {\n                    if (this.element[i].scope != \"FlowLayout\" && this.element[i].scope != \"CellLayout\") {\n                        if (this.element[i].scope == \"textarea\") {\n                            //鍗曠嫭瀵瑰琛屾枃鏈杩涜鍒ゆ柇锛屾槸鍚﹀湪澶氳鏂囨湰妗嗙殑鍙充笅瑙掕竟绾夸笂锛屽鏋滄湁鐨勮瘽锛岄偅褰撳墠灏辨病鏈夐€変腑鍏冪礌\n                            if (this.element[i].isOnBaseLine(x, y)) {\n                                return false;\n                            } else {\n                                return this.element[i];\n                            }\n                        } else {\n                            return this.element[i];\n                        }\n                    } else {\n                        currentElem = this.element[i].selectedElement(x, y);\n                    }\n                }\n            }\n            if (currentElem) {\n                return currentElem;\n            } else {\n                return null;\n            }\n        }\n        //鑾峰彇閫変腑鐨勫竷灞€,杩欎釜涓昏鏄粰甯冨眬鍐呭竷灞€鏀剧疆鍏冪礌鐢紝鑾峰彇褰撳墠甯冨眬鍐呭竷灞€\n\n    }, {\n        key: 'getSelectedElem',\n        value: function getSelectedElem(x, y) {\n            var length = this.element.length,\n                currentChunk = null;\n            for (var j = 0; j < length; j++) {\n                if (this.element[j].scope == \"FlowLayout\" || this.element[j].scope == \"CellLayout\") {\n                    if (this.element[j].x - 5 < x && this.element[j].x + this.element[j].width + 5 > x && this.element[j].y - 5 < y && this.element[j].y + this.element[j].height + 5 > y) {\n                        if (this.element[j].element.length > 0) {\n                            currentChunk = this.element[j].getSelectedElem(x, y);\n                        } else {\n                            return this.element[j];\n                        }\n                    }\n                }\n            }\n            if (currentChunk) {\n                return currentChunk;\n            } else {\n                return this;\n            }\n            // return null;\n        }\n        //鍒ゆ柇榧犳爣鎸変笅鐨勭偣鏄惁鍦ㄥ厓绱犲彉绾挎垨鑰呭厓绱犱笅鍏冪礌杈圭嚎\n\n    }, {\n        key: 'isOnBaseLine',\n        value: function isOnBaseLine(x, y) {\n            var currentChunk = null;\n            if (this.y + this.height - 5 < y && this.y + this.height + 5 > y) {\n                return this;\n            }\n            for (var i = 0; i < this.element.length; i++) {\n                if (currentChunk) {\n                    return currentChunk;\n                }\n                if (this.element[i].y + this.element[i].height - 5 < y && this.element[i].y + this.element[i].height + 5 > y) {\n                    //鍒ゆ柇鏄惁鍦ㄥ瓙鍏冪礌鐨勮竟绾夸笂,鍦ㄥ瓙鍏冪礌杈圭嚎涓婏紝鐒跺悗鍒ゆ柇鏄惁鏄痜low甯冨眬锛屾槸鐨勮瘽杩斿洖杩欎釜甯冨眬锛屼笉鏄殑璇濆垽鏂槸涓嶆槸澶氳鏂囨湰妗嗭紝鍒ゆ柇鏄笉鏄湪澶氳鏂囨湰妗嗙殑杈圭嚎\n                    if (this.element[i].scope != \"FlowLayout\" && this.element[i].scope != \"CellLayout\") {\n                        if (this.element[i].scope == \"textarea\") {\n                            currentChunk = this.element[i].isOnBaseLine(x, y);\n                        } else {\n                            return this.element[i];\n                        }\n                    } else {\n                        currentChunk = this.element[i].isOnBaseLine(x, y);\n                    }\n                } else if (this.element[i].x < x && this.element[i].x + this.element[i].width > x && this.element[i].y < y && this.element[i].y + this.element[i].height > y) {\n                    //濡傛灉涓嶅湪瀛愬厓绱犺竟绾夸笂锛屽垽鏂槸涓嶆槸鍦ㄥ瓙鍏冪礌鑼冨洿鍐�,鍐嶇湅瀛愬厓绱犳槸涓嶆槸甯冨眬鍏冪礌锛屽鏋滄槸鐨勮瘽瑕佸甯冨眬鍏冪礌鍐呯殑鍏冪礌杩涜杈圭嚎鍒ゆ柇\n                    if (this.element[i].element && this.element[i].element.length > 0) {\n                        for (var j = 0; j < this.element[i].element.length; j++) {\n                            if (this.element[i].element[j].scope != \"FlowLayout\" || this.element[i].element[j].scope != \"CellLayout\") {\n                                if (this.element[i].element[j].scope == \"textarea\") {\n                                    currentChunk = this.element[i].element[j].isOnBaseLine(x, y);\n                                } else {\n                                    //涓嶆槸甯冨眬鍏冪礌锛屼篃涓嶆槸澶氳鏂囨湰妗嗭紝灏辨病鏈夎竟绾垮垽瀹歕n                                    return null;\n                                }\n                            } else {\n                                currentChunk = this.element[i].isOnBaseLine(x, y);\n                            }\n                        }\n                    }\n                }\n            }\n            if (currentChunk) {\n                return currentChunk;\n            } else {\n                return null;\n            }\n            // if(!currentChunk){\n\n            // }\n        }\n        //鑾峰彇澶氳鏂囨湰妗嗙殑鎵€鏈変笂绾у竷灞€鍏冪礌\n        // getChangeChunk(x,y){\n        //     let arr=[],str=[];\n        //     // if(this.x<x && this.x+this.width>y && this.y<y && this.y+this.height>y){\n        //     //     arr.push(this);\n        //     // }\n        //     for(let i=0;i<this.element.length;i++){\n        //         if(this.element[i].x<x && this.element[i].x+this.element[i].width>x && this.element[i].y<y && this.element[i].y+this.element[i].height>y){\n        //             if(this.element[i].scope==\"FlowLayout\"){\n        //             arr.push(this.element[i]);\n\n        //                 str.push(this.element[i].getChangeChunk(x,y));\n        //             }\n        //         }\n        //     }\n        //     if(str.length>0){\n        //         for(let j=0;j<str.length;j++){\n        //             arr.push(str[j]);\n        //         }\n        //     }\n        //     return arr;\n        // }\n\n    }, {\n        key: 'delElem',\n        value: function delElem(_currentElemId) {\n            var delElm = null;\n            for (var j = 0; j < this.element.length; j++) {\n                if (this.element[j].id == _currentElemId) {\n                    delElm = this.element[j];\n                    this.element.splice(j, 1);\n                    // this._currentElemId=null;\n\n                    break;\n                } else if (this.element[j].element && this.element[j].element.length > 0) {\n                    delElm = this.element[j].delElem(_currentElemId);\n                }\n            }\n            if (delElm) {\n                return delElm;\n            } else {\n                return false;\n            }\n        }\n    }, {\n        key: 'addElem',\n        value: function addElem(_currentChunkId, delElm) {\n            var back = false;\n            for (var b = 0; b < this.element.length; b++) {\n                if (this.element[b].id == _currentChunkId) {\n                    if (this.element[b].scope == \"FlowLayout\") {\n                        delElm.isblock = \"false\";\n                        delElm.width = delElm.preWidth ? delElm.preWidth : delElm.width;\n                    } else if (this.element[b].scope == \"CellLayout\") {\n                        delElm.isblock = \"true\";\n                        delElm.preWidth = delElm.width;\n                        delElm.width = this.width;\n                    }\n                    this.element[b].element.push(delElm);\n                    back = true;\n                } else if (this.element[b].element && this.element[b].element.length > 0) {\n                    back = this.element[b].element.addElem(_currentChunkId, delElm);\n                }\n            }\n            if (back) {\n                return back;\n            }\n        }\n        //鍒ゆ柇瀛愬厓绱犳槸鍚︽槸绗﹀悎鏉′欢鐨勫竷灞€鍏冪礌\n\n    }, {\n        key: 'elemIsChunk',\n        value: function elemIsChunk(_currentChunkId) {\n            var isChunk = false;\n            for (var b = 0; b < this.element.length; b++) {\n                if (this.element[b].id == _currentChunkId && (this.element[b].scope == \"FlowLayout\" || this.element[b].scope == \"CellLayout\")) {\n                    isChunk = true;\n                } else if (this.element[b].element && this.element[b].element.length > 0) {\n                    isChunk = this.element[b].element.elemIsChunk(_currentChunkId);\n                }\n            }\n            return isChunk;\n        }\n    }, {\n        key: 'getAllName',\n        value: function getAllName() {\n            return this.allName;\n        }\n    }, {\n        key: 'getallDeptName',\n        value: function getallDeptName() {\n            var allDeptName = {};\n            for (var i = 0; i < this.element.length; i++) {\n                if (this.element[i].scope == \"dept\") {\n                    //let data={}\n                    allDeptName[this.element[i].name] = \"false\";\n                    //allDeptName.push(data)\n                } else if (this.element[i].scope == \"FlowLayout\" || this.element[i].scope == \"CellLayout\") {\n                    allDeptName = _extends({}, allDeptName, this.element[i].getallDeptName());\n                }\n            }\n            return allDeptName;\n        }\n    }, {\n        key: 'setAllProcesspreValue',\n        value: function setAllProcesspreValue(h) {\n            for (var i = 0; i < this.element.length; i++) {\n                if (this.element[i].scope != \"FlowLayout\" && this.element[i].scope != \"CellLayout\") {\n                    this.element[i].processprevalue = h;\n                } else {\n                    this.element[i].setAllProcesspreValue(h);\n                }\n            }\n        }\n    }, {\n        key: 'getElementLength',\n        value: function getElementLength() {\n            return this.element.length;\n        }\n    }]);\n\n    return FlowLayout;\n}(_layout3.default);\n\nexports.default = FlowLayout;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2Zvcm0vTGF5b3V0L0Zsb3dMYXlvdXQuanM/ODdhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbGF5b3V0IGZyb20gJy4vbGF5b3V0JztcclxuaW1wb3J0IENlbGxMYXlvdXQgZnJvbSAnLi9DZWxsTGF5b3V0JztcclxuaW1wb3J0IHtJbnB1dCxUZXh0YXJlYSxSYWRpbyxDaGVja2JveCxEYXRhLFNlbGVjdCxEZXB0LFNlbGVjdGFib3V0ZmllbGQsVHJlZWRlcGFydG1lbnRmaWVsZCxVc2VyZmllbGQsU3VnZ2VzdGZpZWxkLEJ1dHRvbixWaWV3ZGlhbG9nZmllbGQsVGFiZmllbGQsQ2FsY3RleHRmaWVsZCxJbmNsdWRlZmllbGQsU3VydmV5ZmllbGQsQXR0YWNobWVudCxJbWFnZXVwbG9hZGZpZWxkLE9ubGluZXRha2VwaG90b2ZpZWxkLFdlaXhpbmdwc2ZpZWxkLFdlaXhpbnJlY29yZGZpZWxkLFFyY29kZWZpZWxkLE1hcGZpZWxkLEdlbmVyaWN3b3JkZmllbGQsRmxvd2hpc3RvcnlmaWVsZCxGbG93cmVtaW5kZXJoaXN0b3J5ZmllbGQsSW5mb3JtYXRpb25mZWVkYmFja2ZpZWxkfSBmcm9tICcuLi9jb21wb25lbnQvaW5kZXgnO1xyXG5pbXBvcnQge1NlcXVlbmNlfSBmcm9tICcuLi8uLi91dGlsaXR5JztcclxuY2xhc3MgRmxvd0xheW91dCBleHRlbmRzIGxheW91dHtcclxuICAgIGNvbnN0cnVjdG9yKCl7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLnR5cGU9XCJmbG93XCI7XHJcbiAgICAgICAgdGhpcy50ZXh0PVwiRmxvd0xheW91dFwiO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yPVwiZGVmYXVsdFwiO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudD1bXTtcclxuICAgICAgICB0aGlzLmlkPVNlcXVlbmNlLmNyZWF0ZVV1aWQoKTtcclxuICAgICAgICB0aGlzLnNjb3BlPSdGbG93TGF5b3V0JztcclxuICAgICAgICB0aGlzLnRhYmxlQ2xhc3M9XCJGbG93TGF5b3V0XCI7XHJcbiAgICAgICAgdGhpcy53aWR0aD1udWxsO1xyXG4gICAgICAgIHRoaXMuaGVpZ2h0PTMwMDtcclxuICAgICAgICB0aGlzLmhlaWdodFByZT1udWxsO1xyXG4gICAgICAgIHRoaXMuYWxsTmFtZT1bXTtcclxuICAgIH1cclxuICAgIGluaXQoKXtcclxuICAgICAgICBcclxuICAgIH1cclxuICAgIHBhaW50KCl7XHJcbiAgICAgICAgbGV0IGg9YDxkaXY+PGYtZmxheW91dCBpZD1cImArXHJcbiAgICAgICAgICAgIHRoaXMuaWQrXHJcbiAgICAgICAgICAgIGBcIiBgK1xyXG4gICAgICAgICAgICBgY2xhc3M9XCJgK1xyXG4gICAgICAgICAgICBgaW5saW5lQmxvY2tgK1xyXG4gICAgICAgICAgICBgXCJgK1xyXG4gICAgICAgICAgICBgc3R5bGU9XCJgK1xyXG4gICAgICAgICAgICBgbWluLXdpZHRoOmArXHJcbiAgICAgICAgICAgIHRoaXMud2lkdGgrXHJcbiAgICAgICAgICAgIGBweDtgK1xyXG4gICAgICAgICAgICBgbWluLWhlaWdodDpgK1xyXG4gICAgICAgICAgICB0aGlzLmhlaWdodCtcclxuICAgICAgICAgICAgYHB4O2ArXHJcbiAgICAgICAgICAgIGBib3JkZXI6MXB4IHNvbGlkICNjY2M7XCJgK1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgYD5gO1xyXG4gICAgICAgICAgICBpZih0aGlzLmVsZW1lbnQubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLmVsZW1lbnQubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaCs9dGhpcy5lbGVtZW50W2ldLnBhaW50KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaD1oK2A8L2YtZmxheW91dD48L2Rpdj5gO1xyXG4gICAgICAgIHJldHVybiBoO1xyXG4gICAgfVxyXG4gICAgdG9IdG1sKCl7fVxyXG4gICAgcGFyc2VIdG1sKGh0bWwpe1xyXG4gICAgICAgIGxldCByb290PSQoaHRtbClbMF07XHJcbiAgICAgICAgLy/moLflvI9cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhzdHlsZSk7XHJcbiAgICAgICAgbGV0IG9iaj17fTtcclxuICAgICAgICBcclxuICAgICAgICBmb3IobGV0IGtleSBpbiByb290LmF0dHJpYnV0ZXMpe1xyXG4gICAgICAgICAgICBzd2l0Y2gocm9vdC5hdHRyaWJ1dGVzW2tleV0ubmFtZSl7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwic3R5bGVcIjpcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc3R5bGU9cm9vdC5hdHRyaWJ1dGVzW3Jvb3QuYXR0cmlidXRlc1trZXldLm5hbWVdLnZhbHVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBkb3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpPXN0eWxlLmluZGV4T2YoXCI6XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQga2V5MiA9IHN0eWxlLnNsaWNlKDAsaSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXN0eWxlLnNsaWNlKGkrMSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaj1zdHlsZS5pbmRleE9mKFwiO1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbD1zdHlsZS5zbGljZSgwLGopO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1zdHlsZS5zbGljZShqKzEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihrZXkyPT1cIm1pbi13aWR0aFwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ialtcIndpZHRoXCJdPXBhcnNlRmxvYXQodmFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYoa2V5Mj09XCJtaW4taGVpZ2h0XCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqW1wiaGVpZ2h0XCJdPXBhcnNlRmxvYXQodmFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpba2V5Ml09dmFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH13aGlsZShzdHlsZS5sZW5ndGghPTApO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHJvb3QuYXR0cmlidXRlc1trZXldLm5hbWUmJnJvb3QuYXR0cmlidXRlc1trZXldLnZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIG9ialtyb290LmF0dHJpYnV0ZXNba2V5XS5uYW1lXT1yb290LmF0dHJpYnV0ZXNba2V5XS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRyYXZlcnNhbE5vZGUgPSAoaHRtbE5vZGUpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qge3RhZ05hbWV9PWh0bWxOb2RlO1xyXG4gICAgICAgICAgICBzd2l0Y2godGFnTmFtZSl7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdESVYnOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCByb290Mj1odG1sTm9kZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmF2ZXJzYWxOb2RlMiA9IChodG1sTm9kZTIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qge3RhZ05hbWV9PWh0bWxOb2RlMjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHRhZ05hbWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnVEFCTEUnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0YWJsZWxheW91dCA9IG5ldyBUYWJsZUxheW91dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlbGF5b3V0LndpZHRoPXBhcnNlRmxvYXQoaHRtbE5vZGUyLmdldEF0dHJpYnV0ZShcIndpZHRoXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZWxheW91dC5oZWlnaHQ9cGFyc2VGbG9hdChodG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZWxheW91dC54PXBhcnNlRmxvYXQoaHRtbE5vZGUyLmdldEF0dHJpYnV0ZShcInBhbmVseFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVsYXlvdXQueT1wYXJzZUZsb2F0KGh0bWxOb2RlMi5nZXRBdHRyaWJ1dGUoXCJwYW5lbHlcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlbGF5b3V0LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRi1GTEFZT1VUJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmxvd0xheW91dCA9IG5ldyBGbG93TGF5b3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvd0xheW91dC53aWR0aD1wYXJzZUZsb2F0KGh0bWxOb2RlMi5nZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvd0xheW91dC5oZWlnaHQ9cGFyc2VGbG9hdChodG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG93TGF5b3V0LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKGZsb3dMYXlvdXQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZT1bLi4udGhpcy5hbGxOYW1lLC4uLmZsb3dMYXlvdXQuZ2V0QWxsTmFtZSgpXVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0YtQ0xBWU9VVCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNlbGxMYXlvdXQgPSBuZXcgQ2VsbExheW91dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxMYXlvdXQud2lkdGg9cGFyc2VGbG9hdChodG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwid2lkdGhcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxMYXlvdXQuaGVpZ2h0PXBhcnNlRmxvYXQoaHRtbE5vZGUyLmdldEF0dHJpYnV0ZShcImhlaWdodFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExheW91dC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChjZWxsTGF5b3V0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNodW5rKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZT1bLi4udGhpcy5hbGxOYW1lLC4uLmNlbGxMYXlvdXQuZ2V0QWxsTmFtZSgpXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRi1JTlBVVCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlucHV0dHlwZT1odG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwiY2xhc3NuYW1lXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGlucHV0dHlwZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5EYXRlRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gbmV3IERhdGEoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpkYXRhLm5hbWUsXCJ2YWx1ZVwiOmRhdGEuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuUmFkaW9GaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJhZGlvID0gbmV3IFJhZGlvKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpby5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKHJhZGlvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpyYWRpby5uYW1lLFwidmFsdWVcIjpyYWRpby5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5DaGVja2JveEZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hlY2tib3ggPSBuZXcgQ2hlY2tib3goKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrYm94LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2goY2hlY2tib3gpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmNoZWNrYm94Lm5hbWUsXCJ2YWx1ZVwiOmNoZWNrYm94LmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLlN1Z2dlc3RGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1Z2dlc3RmaWVsZCA9IG5ldyBTdWdnZXN0ZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Z2dlc3RmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Z2dlc3RmaWVsZC5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKHN1Z2dlc3RmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6c3VnZ2VzdGZpZWxkLm5hbWUsXCJ2YWx1ZVwiOnN1Z2dlc3RmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5CdXR0b25GaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJ1dHRvbiA9IG5ldyBCdXR0b24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5pc2Jsb2NrPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2goYnV0dG9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpidXR0b24ubmFtZSxcInZhbHVlXCI6YnV0dG9uLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbnB1dCA9IG5ldyBJbnB1dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChpbnB1dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6aW5wdXQubmFtZSxcInZhbHVlXCI6aW5wdXQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0YtVEVYVEFSRUEnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0YXJlYSA9IG5ldyBUZXh0YXJlYSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRhcmVhLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKHRleHRhcmVhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6dGV4dGFyZWEubmFtZSxcInZhbHVlXCI6dGV4dGFyZWEuZmllbGR0eXBlfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdGLVJBRElPJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBsZXQgcmFkaW8gPSBuZXcgUmFkaW8oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICByYWRpby5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmVsZW1lbnQucHVzaChyYWRpbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOnJhZGlvLm5hbWUsXCJ2YWx1ZVwiOnJhZGlvLmZpZWxkdHlwZX0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRi1DSEVDS0JPWCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbGV0IGNoZWNrYm94ID0gbmV3IENoZWNrYm94KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgY2hlY2tib3gucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5lbGVtZW50LnB1c2goY2hlY2tib3gpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpjaGVja2JveC5uYW1lLFwidmFsdWVcIjpjaGVja2JveC5maWVsZHR5cGV9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YtREFUQSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbGV0IGRhdGEgPSBuZXcgRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGRhdGEucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5lbGVtZW50LnB1c2goZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmRhdGEubmFtZSxcInZhbHVlXCI6ZGF0YS5maWVsZHR5cGV9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0YtU0VMRUNUJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0dHlwZT1odG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwiY2xhc3NuYW1lXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHNlbGVjdHR5cGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuRGVwYXJ0bWVudEZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVwdCA9IG5ldyBEZXB0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2goZGVwdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6ZGVwdC5uYW1lLFwidmFsdWVcIjpkZXB0LmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5TZWxlY3RBYm91dEZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0YWJvdXRmaWVsZCA9IG5ldyBTZWxlY3RhYm91dGZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RhYm91dGZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2goc2VsZWN0YWJvdXRmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6c2VsZWN0YWJvdXRmaWVsZC5uYW1lLFwidmFsdWVcIjpzZWxlY3RhYm91dGZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuVHJlZURlcGFydG1lbnRGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRyZWVkZXBhcnRtZW50ZmllbGQgPSBuZXcgVHJlZWRlcGFydG1lbnRmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZWRlcGFydG1lbnRmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKHRyZWVkZXBhcnRtZW50ZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOnRyZWVkZXBhcnRtZW50ZmllbGQubmFtZSxcInZhbHVlXCI6dHJlZWRlcGFydG1lbnRmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuVXNlckZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXNlcmZpZWxkID0gbmV3IFVzZXJmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcmZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcmZpZWxkLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2godXNlcmZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjp1c2VyZmllbGQubmFtZSxcInZhbHVlXCI6dXNlcmZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ID0gbmV3IFNlbGVjdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2goc2VsZWN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpzZWxlY3QubmFtZSxcInZhbHVlXCI6c2VsZWN0LmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRi1ERVBUJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBsZXQgZGVwdCA9IG5ldyBEZXB0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgZGVwdC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmVsZW1lbnQucHVzaChkZXB0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6ZGVwdC5uYW1lLFwidmFsdWVcIjpkZXB0LmZpZWxkdHlwZX0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRi1TRUxFQ1RBQk9VVEZJRUxEJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBsZXQgc2VsZWN0YWJvdXRmaWVsZCA9IG5ldyBTZWxlY3RhYm91dGZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgc2VsZWN0YWJvdXRmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmVsZW1lbnQucHVzaChzZWxlY3RhYm91dGZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6c2VsZWN0YWJvdXRmaWVsZC5uYW1lLFwidmFsdWVcIjpzZWxlY3RhYm91dGZpZWxkLmZpZWxkdHlwZX0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRi1UUkVFREVQQVJUTUVOVEZJRUxEJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBsZXQgdHJlZWRlcGFydG1lbnRmaWVsZCA9IG5ldyBUcmVlZGVwYXJ0bWVudGZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdHJlZWRlcGFydG1lbnRmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmVsZW1lbnQucHVzaCh0cmVlZGVwYXJ0bWVudGZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6dHJlZWRlcGFydG1lbnRmaWVsZC5uYW1lLFwidmFsdWVcIjp0cmVlZGVwYXJ0bWVudGZpZWxkLmZpZWxkdHlwZX0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJyZWFrOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YtVVNFUkZJRUxEJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBsZXQgdXNlcmZpZWxkID0gbmV3IFVzZXJmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHVzZXJmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB1c2VyZmllbGQuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5lbGVtZW50LnB1c2godXNlcmZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6dXNlcmZpZWxkLm5hbWUsXCJ2YWx1ZVwiOnVzZXJmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJyZWFrOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdGLVNVR0dFU1RGSUVMRCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbGV0IHN1Z2dlc3RmaWVsZCA9IG5ldyBTdWdnZXN0ZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzdWdnZXN0ZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgc3VnZ2VzdGZpZWxkLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuZWxlbWVudC5wdXNoKHN1Z2dlc3RmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOnN1Z2dlc3RmaWVsZC5uYW1lLFwidmFsdWVcIjpzdWdnZXN0ZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBicmVhazsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdGLUJVVFRPTic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbGV0IGJ1dHRvbiA9IG5ldyBCdXR0b24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBidXR0b24ucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYnV0dG9uLmlzYmxvY2s9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5lbGVtZW50LnB1c2goYnV0dG9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6YnV0dG9uLm5hbWUsXCJ2YWx1ZVwiOmJ1dHRvbi5maWVsZHR5cGV9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBicmVhazsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdGLVZJRVdESUFMT0dGSUVMRCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbGV0IHZpZXdkaWFsb2dmaWVsZCA9IG5ldyBWaWV3ZGlhbG9nZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB2aWV3ZGlhbG9nZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5lbGVtZW50LnB1c2godmlld2RpYWxvZ2ZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6dmlld2RpYWxvZ2ZpZWxkLm5hbWUsXCJ2YWx1ZVwiOnZpZXdkaWFsb2dmaWVsZC5maWVsZHR5cGV9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0YtSU1HJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1ndHlwZT1odG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwiY2xhc3NuYW1lXCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2goaW1ndHlwZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5UYWJGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRhYmZpZWxkID0gbmV3IFRhYmZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKHRhYmZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjp0YWJmaWVsZC5uYW1lLFwidmFsdWVcIjp0YWJmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLlZpZXdEaWFsb2dGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZpZXdkaWFsb2dmaWVsZCA9IG5ldyBWaWV3ZGlhbG9nZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdkaWFsb2dmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKHZpZXdkaWFsb2dmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6dmlld2RpYWxvZ2ZpZWxkLm5hbWUsXCJ2YWx1ZVwiOnZpZXdkaWFsb2dmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5DYWxjdGV4dEZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2FsY3RleHRmaWVsZCA9IG5ldyBDYWxjdGV4dGZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdGV4dGZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2goY2FsY3RleHRmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6Y2FsY3RleHRmaWVsZC5uYW1lLFwidmFsdWVcIjpjYWxjdGV4dGZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLkluY2x1ZGVGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluY2x1ZGVmaWVsZCA9IG5ldyBJbmNsdWRlZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKGluY2x1ZGVmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6aW5jbHVkZWZpZWxkLm5hbWUsXCJ2YWx1ZVwiOmluY2x1ZGVmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuU3VydmV5RmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdXJ2ZXlmaWVsZCA9IG5ldyBTdXJ2ZXlmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VydmV5ZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChzdXJ2ZXlmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6c3VydmV5ZmllbGQubmFtZSxcInZhbHVlXCI6c3VydmV5ZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5BdHRhY2htZW50VXBsb2FkRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhdHRhY2htZW50ID0gbmV3IEF0dGFjaG1lbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChhdHRhY2htZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjphdHRhY2htZW50Lm5hbWUsXCJ2YWx1ZVwiOmF0dGFjaG1lbnQuZmllbGR0eXBlfSlcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5JbWFnZVVwbG9hZEZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1hZ2V1cGxvYWRmaWVsZCA9IG5ldyBJbWFnZXVwbG9hZGZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXVwbG9hZGZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2goaW1hZ2V1cGxvYWRmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6aW1hZ2V1cGxvYWRmaWVsZC5uYW1lLFwidmFsdWVcIjppbWFnZXVwbG9hZGZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuT25MaW5lVGFrZVBob3RvRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvbmxpbmV0YWtlcGhvdG9maWVsZCA9IG5ldyBPbmxpbmV0YWtlcGhvdG9maWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25saW5ldGFrZXBob3RvZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChvbmxpbmV0YWtlcGhvdG9maWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6b25saW5ldGFrZXBob3RvZmllbGQubmFtZSxcInZhbHVlXCI6b25saW5ldGFrZXBob3RvZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuV2VpeGluR3BzRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB3ZWl4aW5ncHNmaWVsZCA9IG5ldyBXZWl4aW5ncHNmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VpeGluZ3BzZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaCh3ZWl4aW5ncHNmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6d2VpeGluZ3BzZmllbGQubmFtZSxcInZhbHVlXCI6d2VpeGluZ3BzZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLldlaXhpblJlY29yZEZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2VpeGlucmVjb3JkZmllbGQgPSBuZXcgV2VpeGlucmVjb3JkZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlaXhpbnJlY29yZGZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2god2VpeGlucmVjb3JkZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOndlaXhpbnJlY29yZGZpZWxkLm5hbWUsXCJ2YWx1ZVwiOndlaXhpbnJlY29yZGZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5RUkNvZGVGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHFyY29kZWZpZWxkID0gbmV3IFFyY29kZWZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxcmNvZGVmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKHFyY29kZWZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpxcmNvZGVmaWVsZC5uYW1lLFwidmFsdWVcIjpxcmNvZGVmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuTWFwRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXBmaWVsZCA9IG5ldyBNYXBmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChtYXBmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6bWFwZmllbGQubmFtZSxcInZhbHVlXCI6bWFwZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuR2VuZXJpY1dvcmRGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdlbmVyaWN3b3JkZmllbGQgPSBuZXcgR2VuZXJpY3dvcmRmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY3dvcmRmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKGdlbmVyaWN3b3JkZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmdlbmVyaWN3b3JkZmllbGQubmFtZSxcInZhbHVlXCI6Z2VuZXJpY3dvcmRmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5IVE1MRWRpdG9yRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBodG1sZWRpdG9yZmllbGQgPSBuZXcgSHRtbGVkaXRvcmZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sZWRpdG9yZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChodG1sZWRpdG9yZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmh0bWxlZGl0b3JmaWVsZC5uYW1lLFwidmFsdWVcIjpodG1sZWRpdG9yZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuRmxvd0hpc3RvcnlGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZsb3doaXN0b3J5ZmllbGQgPSBuZXcgRmxvd2hpc3RvcnlmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvd2hpc3RvcnlmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKGZsb3doaXN0b3J5ZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmZsb3doaXN0b3J5ZmllbGQubmFtZSxcInZhbHVlXCI6Zmxvd2hpc3RvcnlmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5GbG93UmVtaW5kZXJIaXN0b3J5RmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmbG93cmVtaW5kZXJoaXN0b3J5ZmllbGQgPSBuZXcgRmxvd3JlbWluZGVyaGlzdG9yeWZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG93cmVtaW5kZXJoaXN0b3J5ZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChmbG93cmVtaW5kZXJoaXN0b3J5ZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmZsb3dyZW1pbmRlcmhpc3RvcnlmaWVsZC5uYW1lLFwidmFsdWVcIjpmbG93cmVtaW5kZXJoaXN0b3J5ZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuSW5mb3JtYXRpb25GZWVkYmFja0ZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5mb3JtYXRpb25mZWVkYmFja2ZpZWxkID0gbmV3IEluZm9ybWF0aW9uZmVlZGJhY2tmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb25mZWVkYmFja2ZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2goaW5mb3JtYXRpb25mZWVkYmFja2ZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjppbmZvcm1hdGlvbmZlZWRiYWNrZmllbGQubmFtZSxcInZhbHVlXCI6aW5mb3JtYXRpb25mZWVkYmFja2ZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJubzJcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHJvb3QyLmhhc0NoaWxkTm9kZXMoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGsgPSAwO2sgPCByb290Mi5jaGlsZHJlbi5sZW5ndGg7aysrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWxOb2RlMihyb290Mi5jaGlsZHJlbltrXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibm9cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHJvb3QuaGFzQ2hpbGROb2RlcygpKSB7XHJcbiAgICAgICAgICAgIGZvcihsZXQgYSA9IDA7YSA8IHJvb3QuY2hpbGRyZW4ubGVuZ3RoO2ErKykge1xyXG4gICAgICAgICAgICAgICAgdHJhdmVyc2FsTm9kZShyb290LmNoaWxkcmVuW2FdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFByb3BzKG9iaik7XHJcbiAgICAgICAgdGhpcy5yZXNldENodW5rRWxlbVBvc2l0aW9uKCk7XHJcbiAgICAgICAgY29uc29sZS5sb2cob2JqKVxyXG4gICAgfVxyXG4gICAgZ2V0Tm9kZUNvbmZpZ0luZm8oKXtcclxuICAgICAgICBsZXQgbm9kZSA9IHt9O1xyXG5cdFx0bm9kZS50ZXh0ID0gdGhpcy50ZXh0O1xyXG5cdFx0bm9kZS5pY29uID0gJ2dseXBoaWNvbiBnbHlwaGljb24tcGVuY2lsJztcclxuXHRcdG5vZGUudXVpZCA9IHRoaXMuaWQ7XHRcclxuICAgICAgICBub2RlLmluc3RhbmNlID0gdGhpcztcclxuICAgICAgICBpZih0aGlzLmVsZW1lbnQubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRub2RlLm5vZGVzID0gW11cclxuXHRcdFx0Zm9yKGxldCBpID0gMCwgbGVuID0gdGhpcy5lbGVtZW50Lmxlbmd0aDtpIDwgbGVuO2krKykge1xyXG5cdFx0XHRcdGNvbnN0IGRhdGEgPSB0aGlzLmVsZW1lbnRbaV0uZ2V0Tm9kZUNvbmZpZ0luZm8oKTtcclxuXHRcdFx0XHRub2RlLm5vZGVzLnB1c2goZGF0YSk7XHRcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcbiAgICBhZGRFbGVtZW50KGVsZW0pe1xyXG4gICAgICAgIGlmKGVsZW0uc2NvcGUhPVwiQ2VsbExheW91dFwiICYmIGVsZW0uc2NvcGUhPVwiRmxvd0xheW91dFwiIClcclxuICAgICAgICBlbGVtLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKGVsZW0pO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJlc2V0RWxlbWVudFRvQ2h1bmsoKXtcclxuXHJcbiAgICB9XHJcbiAgICByZXNldENodW5rRWxlbVBvc2l0aW9uKCl7XHJcbiAgICAgICAgbGV0IHg9dGhpcy54LHk9dGhpcy55O1xyXG4gICAgICAgIGxldCBiaWdIZWlnaHQ9MDtcclxuICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMuZWxlbWVudC5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgaWYoYmlnSGVpZ2h0PHRoaXMuZWxlbWVudFtpXS5oZWlnaHQpYmlnSGVpZ2h0PXRoaXMuZWxlbWVudFtpXS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFtpXS54PXg7dGhpcy5lbGVtZW50W2ldLnk9eTtcclxuICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2ldLnNjb3BlPT1cIkZsb3dMYXlvdXRcIiB8fCB0aGlzLmVsZW1lbnRbaV0uc2NvcGU9PVwiQ2VsbExheW91dFwiKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFtpXS5yZXNldENodW5rRWxlbVBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgeCs9dGhpcy5lbGVtZW50W2ldLndpZHRoO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2krMV0pe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2krMV0ud2lkdGgreD50aGlzLndpZHRoKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB4PTA7eT1iaWdIZWlnaHQrdGhpcy5lbGVtZW50W2ldLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgYmlnSGVpZ2h0PTA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBzZXRFbGVtZW50UG9zaXRpb24oZWxlbSl7XHJcbiAgICAgICAgbGV0IGxheW91dD10aGlzLndpZHRoO1xyXG4gICAgICAgIGxldCB3aWR0aD0wO1xyXG4gICAgICAgIGxldCBoZWlnaHQ9MDtcclxuICAgICAgICBsZXQgY3VycmVudEhlaWdodD0wO1xyXG4gICAgICAgIGlmKHRoaXMuZWxlbWVudC5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgIGxldCBsZW5ndGg9dGhpcy5lbGVtZW50Lmxlbmd0aDtcclxuICAgICAgICAgICAgaGVpZ2h0PXRoaXMuZWxlbWVudFswXS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wO2k8bGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICB3aWR0aCs9dGhpcy5lbGVtZW50W2ldLndpZHRoO1xyXG4gICAgICAgICAgICAgICAgaWYoaGVpZ2h0PT0wKXtcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9dGhpcy5lbGVtZW50W2ldLmhlaWdodDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKGhlaWdodDx0aGlzLmVsZW1lbnRbaV0uaGVpZ2h0KXtcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9dGhpcy5lbGVtZW50W2ldLmhlaWdodDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKHdpZHRoPj1sYXlvdXQtNSAmJiB0aGlzLmVsZW1lbnRbaV0uc2NvcGUhPVwiQ2VsbExheW91dFwiJiYgdGhpcy5lbGVtZW50W2ldLnNjb3BlIT1cIkZsb3dMYXlvdXRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9MDtcclxuICAgICAgICAgICAgICAgICAgICBpLT0xO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRIZWlnaHQrPWhlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9MDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL+WwhueOsOacieeahOWFg+e0oOeahOWuvemrmOW+queOr+S6huS5i+WQju+8jOWPluWIsOacgOmrmOWSjOacgOmVv+eahO+8jOWGjeaLv2VsZW3nmoTnrpfkuIrljrtcclxuICAgICAgICAgICAgaWYod2lkdGgrZWxlbS53aWR0aD5sYXlvdXQpe1xyXG4gICAgICAgICAgICAgICAgd2lkdGg9MDtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRIZWlnaHQrPWhlaWdodDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB4OndpZHRoLFxyXG4gICAgICAgICAgICB5OmN1cnJlbnRIZWlnaHQsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/liKTmlq3lvZPliY3pvKDmoIfmjInkuIvnmoTkvY3nva7mmK/lkKblnKjor6XluIPlsYDkuIvnmoTlhYPntKDlhoUs6L+Z5Liq5pa55rOV5piv57uZ6byg5qCH5oyJ5LiL5Ye6546w5bGe5oCn6Z2i5p2/5LqL5Lu255So55qE77yM5Li76KaB5piv6I635Y+W5pyA5bqV5bGC5LiA57qn55qE6Z2e5biD5bGA5oiW6ICF5biD5bGA5YWD57SgXHJcbiAgICBzZWxlY3RlZEVsZW1lbnQoeCx5KXtcclxuICAgICAgICBsZXQgY3VycmVudEVsZW09bnVsbDtcclxuICAgICAgICAvLyBpZih0aGlzLngtNTx4ICYmIHRoaXMueCt0aGlzLndpZHRoKzU+eCAmJiB0aGlzLnktNTx5ICYmIHRoaXMueSt0aGlzLmhlaWdodCs1Pnkpe1xyXG4gICAgICAgIC8vICAgICBjdXJyZW50RWxlbT10aGlzO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMuZWxlbWVudC5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2ldLngtNTx4ICYmIHRoaXMuZWxlbWVudFtpXS54K3RoaXMuZWxlbWVudFtpXS53aWR0aCs1PnggJiYgdGhpcy5lbGVtZW50W2ldLnktNTx5ICYmIHRoaXMuZWxlbWVudFtpXS55K3RoaXMuZWxlbWVudFtpXS5oZWlnaHQrNT55KXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFtpXS5zY29wZSE9XCJGbG93TGF5b3V0XCIgJiYgdGhpcy5lbGVtZW50W2ldLnNjb3BlIT1cIkNlbGxMYXlvdXRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2ldLnNjb3BlPT1cInRleHRhcmVhXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL+WNleeLrOWvueWkmuihjOaWh+acrOahhui/m+ihjOWIpOaWre+8jOaYr+WQpuWcqOWkmuihjOaWh+acrOahhueahOWPs+S4i+inkui+uee6v+S4iu+8jOWmguaenOacieeahOivne+8jOmCo+W9k+WJjeWwseayoeaciemAieS4reWFg+e0oFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbaV0uaXNPbkJhc2VMaW5lKHgseSkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFtpXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RWxlbSA9IHRoaXMuZWxlbWVudFtpXS5zZWxlY3RlZEVsZW1lbnQoeCx5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY3VycmVudEVsZW0pe1xyXG4gICAgICAgICAgICByZXR1cm4gY3VycmVudEVsZW07XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v6I635Y+W6YCJ5Lit55qE5biD5bGALOi/meS4quS4u+imgeaYr+e7meW4g+WxgOWGheW4g+WxgOaUvue9ruWFg+e0oOeUqO+8jOiOt+WPluW9k+WJjeW4g+WxgOWGheW4g+WxgFxyXG4gICAgZ2V0U2VsZWN0ZWRFbGVtKHgseSl7XHJcbiAgICAgICAgbGV0IGxlbmd0aCA9IHRoaXMuZWxlbWVudC5sZW5ndGgsY3VycmVudENodW5rPW51bGw7XHJcbiAgICAgICAgZm9yKGxldCBqPTA7ajxsZW5ndGg7aisrKXtcclxuICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2pdLnNjb3BlPT1cIkZsb3dMYXlvdXRcIiB8fCB0aGlzLmVsZW1lbnRbal0uc2NvcGU9PVwiQ2VsbExheW91dFwiKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFtqXS54LTU8eCYmdGhpcy5lbGVtZW50W2pdLngrdGhpcy5lbGVtZW50W2pdLndpZHRoKzU+eCYmdGhpcy5lbGVtZW50W2pdLnktNTx5JiZ0aGlzLmVsZW1lbnRbal0ueSt0aGlzLmVsZW1lbnRbal0uaGVpZ2h0KzU+eSl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2pdLmVsZW1lbnQubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2h1bms9dGhpcy5lbGVtZW50W2pdLmdldFNlbGVjdGVkRWxlbSh4LHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50W2pdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihjdXJyZW50Q2h1bmspe1xyXG4gICAgICAgICAgICByZXR1cm4gY3VycmVudENodW5rO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICAvL+WIpOaWrem8oOagh+aMieS4i+eahOeCueaYr+WQpuWcqOWFg+e0oOWPmOe6v+aIluiAheWFg+e0oOS4i+WFg+e0oOi+uee6v1xyXG5cclxuICAgIGlzT25CYXNlTGluZSh4LHkpe1xyXG4gICAgICAgIGxldCBjdXJyZW50Q2h1bms9bnVsbDtcclxuICAgICAgICBpZiggdGhpcy55K3RoaXMuaGVpZ2h0LTU8eSAmJiB0aGlzLnkrdGhpcy5oZWlnaHQrNT55KXtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy5lbGVtZW50Lmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBpZihjdXJyZW50Q2h1bmspe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDaHVuaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbaV0ueSt0aGlzLmVsZW1lbnRbaV0uaGVpZ2h0LTU8eSAmJiB0aGlzLmVsZW1lbnRbaV0ueSt0aGlzLmVsZW1lbnRbaV0uaGVpZ2h0KzU+eSl7XHJcbiAgICAgICAgICAgICAgICAvL+WIpOaWreaYr+WQpuWcqOWtkOWFg+e0oOeahOi+uee6v+S4iizlnKjlrZDlhYPntKDovrnnur/kuIrvvIznhLblkI7liKTmlq3mmK/lkKbmmK9mbG935biD5bGA77yM5piv55qE6K+d6L+U5Zue6L+Z5Liq5biD5bGA77yM5LiN5piv55qE6K+d5Yik5pat5piv5LiN5piv5aSa6KGM5paH5pys5qGG77yM5Yik5pat5piv5LiN5piv5Zyo5aSa6KGM5paH5pys5qGG55qE6L6557q/XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbaV0uc2NvcGUhPVwiRmxvd0xheW91dFwiICYmIHRoaXMuZWxlbWVudFtpXS5zY29wZSE9XCJDZWxsTGF5b3V0XCIgKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbaV0uc2NvcGU9PVwidGV4dGFyZWFcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDaHVuayA9IHRoaXMuZWxlbWVudFtpXS5pc09uQmFzZUxpbmUoeCx5KTtcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFtpXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2h1bmsgPSB0aGlzLmVsZW1lbnRbaV0uaXNPbkJhc2VMaW5lKHgseSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1lbHNlIGlmKHRoaXMuZWxlbWVudFtpXS54PHggJiYgdGhpcy5lbGVtZW50W2ldLngrdGhpcy5lbGVtZW50W2ldLndpZHRoPnggJiYgdGhpcy5lbGVtZW50W2ldLnk8eSAmJiB0aGlzLmVsZW1lbnRbaV0ueSt0aGlzLmVsZW1lbnRbaV0uaGVpZ2h0Pnkpe1xyXG4gICAgICAgICAgICAgICAgLy/lpoLmnpzkuI3lnKjlrZDlhYPntKDovrnnur/kuIrvvIzliKTmlq3mmK/kuI3mmK/lnKjlrZDlhYPntKDojIPlm7TlhoUs5YaN55yL5a2Q5YWD57Sg5piv5LiN5piv5biD5bGA5YWD57Sg77yM5aaC5p6c5piv55qE6K+d6KaB5a+55biD5bGA5YWD57Sg5YaF55qE5YWD57Sg6L+b6KGM6L6557q/5Yik5patXHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbaV0uZWxlbWVudCAmJiB0aGlzLmVsZW1lbnRbaV0uZWxlbWVudC5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBqPTA7ajx0aGlzLmVsZW1lbnRbaV0uZWxlbWVudC5sZW5ndGg7aisrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2ldLmVsZW1lbnRbal0uc2NvcGUhPVwiRmxvd0xheW91dFwiIHx8IHRoaXMuZWxlbWVudFtpXS5lbGVtZW50W2pdLnNjb3BlIT1cIkNlbGxMYXlvdXRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbaV0uZWxlbWVudFtqXS5zY29wZT09XCJ0ZXh0YXJlYVwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2h1bmsgPSB0aGlzLmVsZW1lbnRbaV0uZWxlbWVudFtqXS5pc09uQmFzZUxpbmUoeCx5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v5LiN5piv5biD5bGA5YWD57Sg77yM5Lmf5LiN5piv5aSa6KGM5paH5pys5qGG77yM5bCx5rKh5pyJ6L6557q/5Yik5a6aXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENodW5rID0gdGhpcy5lbGVtZW50W2ldLmlzT25CYXNlTGluZSh4LHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihjdXJyZW50Q2h1bmspe1xyXG4gICAgICAgICAgICByZXR1cm4gY3VycmVudENodW5rO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYoIWN1cnJlbnRDaHVuayl7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuICAgIC8v6I635Y+W5aSa6KGM5paH5pys5qGG55qE5omA5pyJ5LiK57qn5biD5bGA5YWD57SgXHJcbiAgICAvLyBnZXRDaGFuZ2VDaHVuayh4LHkpe1xyXG4gICAgLy8gICAgIGxldCBhcnI9W10sc3RyPVtdO1xyXG4gICAgLy8gICAgIC8vIGlmKHRoaXMueDx4ICYmIHRoaXMueCt0aGlzLndpZHRoPnkgJiYgdGhpcy55PHkgJiYgdGhpcy55K3RoaXMuaGVpZ2h0Pnkpe1xyXG4gICAgLy8gICAgIC8vICAgICBhcnIucHVzaCh0aGlzKTtcclxuICAgIC8vICAgICAvLyB9XHJcbiAgICAvLyAgICAgZm9yKGxldCBpPTA7aTx0aGlzLmVsZW1lbnQubGVuZ3RoO2krKyl7XHJcbiAgICAvLyAgICAgICAgIGlmKHRoaXMuZWxlbWVudFtpXS54PHggJiYgdGhpcy5lbGVtZW50W2ldLngrdGhpcy5lbGVtZW50W2ldLndpZHRoPnggJiYgdGhpcy5lbGVtZW50W2ldLnk8eSAmJiB0aGlzLmVsZW1lbnRbaV0ueSt0aGlzLmVsZW1lbnRbaV0uaGVpZ2h0Pnkpe1xyXG4gICAgLy8gICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2ldLnNjb3BlPT1cIkZsb3dMYXlvdXRcIil7XHJcbiAgICAvLyAgICAgICAgICAgICBhcnIucHVzaCh0aGlzLmVsZW1lbnRbaV0pO1xyXG5cclxuICAgIC8vICAgICAgICAgICAgICAgICBzdHIucHVzaCh0aGlzLmVsZW1lbnRbaV0uZ2V0Q2hhbmdlQ2h1bmsoeCx5KSk7XHJcbiAgICAvLyAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgaWYoc3RyLmxlbmd0aD4wKXtcclxuICAgIC8vICAgICAgICAgZm9yKGxldCBqPTA7ajxzdHIubGVuZ3RoO2orKyl7XHJcbiAgICAvLyAgICAgICAgICAgICBhcnIucHVzaChzdHJbal0pO1xyXG4gICAgLy8gICAgICAgICB9XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHJldHVybiBhcnI7XHJcbiAgICAvLyB9XHJcbiAgICBkZWxFbGVtKF9jdXJyZW50RWxlbUlkKXtcclxuICAgICAgICBsZXQgZGVsRWxtPW51bGw7XHJcbiAgICAgICAgZm9yKGxldCBqPTA7ajx0aGlzLmVsZW1lbnQubGVuZ3RoO2orKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFtqXS5pZD09X2N1cnJlbnRFbGVtSWQpe1xyXG4gICAgICAgICAgICAgICAgZGVsRWxtPXRoaXMuZWxlbWVudFtqXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zcGxpY2UoaiwxKTtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuX2N1cnJlbnRFbGVtSWQ9bnVsbDtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfWVsc2UgaWYodGhpcy5lbGVtZW50W2pdLmVsZW1lbnQgJiYgdGhpcy5lbGVtZW50W2pdLmVsZW1lbnQubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgZGVsRWxtPXRoaXMuZWxlbWVudFtqXS5kZWxFbGVtKF9jdXJyZW50RWxlbUlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihkZWxFbG0pe1xyXG4gICAgICAgICAgICByZXR1cm4gZGVsRWxtO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWRkRWxlbShfY3VycmVudENodW5rSWQsZGVsRWxtKXtcclxuICAgICAgICBsZXQgYmFjaz1mYWxzZTtcclxuICAgICAgICBmb3IobGV0IGI9MDtiPHRoaXMuZWxlbWVudC5sZW5ndGg7YisrKXtcclxuICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2JdLmlkPT1fY3VycmVudENodW5rSWQpe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2JdLnNjb3BlPT1cIkZsb3dMYXlvdXRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsRWxtLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbEVsbS53aWR0aD1kZWxFbG0ucHJlV2lkdGg/ZGVsRWxtLnByZVdpZHRoOmRlbEVsbS53aWR0aFxyXG4gICAgICAgICAgICAgICAgfWVsc2UgaWYodGhpcy5lbGVtZW50W2JdLnNjb3BlPT1cIkNlbGxMYXlvdXRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsRWxtLmlzYmxvY2s9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsRWxtLnByZVdpZHRoPWRlbEVsbS53aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBkZWxFbG0ud2lkdGg9dGhpcy53aWR0aDtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRbYl0uZWxlbWVudC5wdXNoKGRlbEVsbSk7XHJcbiAgICAgICAgICAgICAgICBiYWNrPXRydWU7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfWVsc2UgaWYodGhpcy5lbGVtZW50W2JdLmVsZW1lbnQgJiYgdGhpcy5lbGVtZW50W2JdLmVsZW1lbnQubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgYmFjaz10aGlzLmVsZW1lbnRbYl0uZWxlbWVudC5hZGRFbGVtKF9jdXJyZW50Q2h1bmtJZCxkZWxFbG0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGJhY2spe1xyXG4gICAgICAgICAgICByZXR1cm4gYmFjaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+WIpOaWreWtkOWFg+e0oOaYr+WQpuaYr+espuWQiOadoeS7tueahOW4g+WxgOWFg+e0oFxyXG4gICAgZWxlbUlzQ2h1bmsoX2N1cnJlbnRDaHVua0lkKXtcclxuICAgICAgICBsZXQgaXNDaHVuaz1mYWxzZTtcclxuICAgICAgICBmb3IobGV0IGI9MDtiPHRoaXMuZWxlbWVudC5sZW5ndGg7YisrKXtcclxuICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2JdLmlkPT1fY3VycmVudENodW5rSWQgJiYgKHRoaXMuZWxlbWVudFtiXS5zY29wZT09XCJGbG93TGF5b3V0XCIgfHwgdGhpcy5lbGVtZW50W2JdLnNjb3BlPT1cIkNlbGxMYXlvdXRcIiApKXsgICBcclxuICAgICAgICAgICAgICAgIGlzQ2h1bms9dHJ1ZTtcclxuICAgICAgICAgICAgfWVsc2UgaWYodGhpcy5lbGVtZW50W2JdLmVsZW1lbnQgJiYgdGhpcy5lbGVtZW50W2JdLmVsZW1lbnQubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgaXNDaHVuaz10aGlzLmVsZW1lbnRbYl0uZWxlbWVudC5lbGVtSXNDaHVuayhfY3VycmVudENodW5rSWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpc0NodW5rO1xyXG4gICAgfVxyXG4gICAgZ2V0QWxsTmFtZSgpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFsbE5hbWU7XHJcbiAgICB9XHJcbiAgICBnZXRhbGxEZXB0TmFtZSgpe1xyXG4gICAgICAgIGxldCBhbGxEZXB0TmFtZT17fTtcclxuICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMuZWxlbWVudC5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2ldLnNjb3BlPT1cImRlcHRcIil7XHJcbiAgICAgICAgICAgICAgICAvL2xldCBkYXRhPXt9XHJcbiAgICAgICAgICAgICAgICBhbGxEZXB0TmFtZVt0aGlzLmVsZW1lbnRbaV0ubmFtZV09XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgLy9hbGxEZXB0TmFtZS5wdXNoKGRhdGEpXHJcbiAgICAgICAgICAgIH1lbHNlIGlmKHRoaXMuZWxlbWVudFtpXS5zY29wZT09XCJGbG93TGF5b3V0XCIgfHx0aGlzLmVsZW1lbnRbaV0uc2NvcGU9PVwiQ2VsbExheW91dFwiKXtcclxuICAgICAgICAgICAgICAgIGFsbERlcHROYW1lPXsuLi5hbGxEZXB0TmFtZSwuLi50aGlzLmVsZW1lbnRbaV0uZ2V0YWxsRGVwdE5hbWUoKX1cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFsbERlcHROYW1lXHJcbiAgICB9XHJcbiAgICBzZXRBbGxQcm9jZXNzcHJlVmFsdWUoaCl7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLmVsZW1lbnQubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFtpXS5zY29wZSE9XCJGbG93TGF5b3V0XCIgJiYgdGhpcy5lbGVtZW50W2ldLnNjb3BlIT1cIkNlbGxMYXlvdXRcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRbaV0ucHJvY2Vzc3ByZXZhbHVlPWg7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50W2ldLnNldEFsbFByb2Nlc3NwcmVWYWx1ZShoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldEVsZW1lbnRMZW5ndGgoKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50Lmxlbmd0aDtcclxuICAgIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBGbG93TGF5b3V0O1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9MYXlvdXQvRmxvd0xheW91dC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7OztBQUFBOzs7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVpBO0FBYUE7QUFDQTs7O0FBQUE7OztBQUdBO0FBQ0E7QUFnQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7OztBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBMUJBO0FBNEJBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdkNBO0FBeUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbkNBO0FBcUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBekhBO0FBMkhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE5VEE7QUFnVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQS9VQTtBQWlWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7QUFDQTs7O0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7Ozs7QUEzc0JBO0FBQ0E7QUE0c0JBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n");

/***/ }),
/* 47 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _layout2 = __webpack_require__(21);\n\nvar _layout3 = _interopRequireDefault(_layout2);\n\nvar _FlowLayout = __webpack_require__(46);\n\nvar _FlowLayout2 = _interopRequireDefault(_FlowLayout);\n\nvar _index = __webpack_require__(22);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CellLayout = function (_layout) {\n    _inherits(CellLayout, _layout);\n\n    function CellLayout() {\n        _classCallCheck(this, CellLayout);\n\n        var _this = _possibleConstructorReturn(this, (CellLayout.__proto__ || Object.getPrototypeOf(CellLayout)).call(this));\n\n        _this.type = \"flow\";\n        _this.text = \"CellLayout\";\n        _this.cursor = \"default\";\n        _this.element = [];\n        _this.id = _utility.Sequence.createUuid();\n        _this.scope = 'CellLayout';\n        _this.tableClass = \"CellLayout\";\n        _this.width = null;\n        _this.height = 300;\n        _this.heightPre = null;\n        _this.allName = [];\n        return _this;\n    }\n\n    _createClass(CellLayout, [{\n        key: 'init',\n        value: function init() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n            var h = '<div><f-clayout id=\"' + this.id + '\" ' + 'class=\"' + 'inlineBlock' + '\"' + 'style=\"' + 'min-width:' + this.width + 'px;' + 'min-height:' + this.height + 'px;' + 'border:1px solid #ccc;\"' + '>';\n            if (this.element.length > 0) {\n                for (var i = 0; i < this.element.length; i++) {\n                    h += this.element[i].paint();\n                }\n            }\n            h = h + '</f-clayout></div>';\n            return h;\n        }\n        // toHtml(){\n        //     let h=`<div class=\"inlineBlock\" id=\"${this.id}\" draggable=\"true\" style=\"min-width:${this.width}px;min-height:${this.height}px;\"><f-flayout id=\"`+\n        //         this.id+\n        //         `\" `+\n        //         `class=\"`+\n        //         `inlineBlock`+\n        //         `\"`+\n        //         `style=\"`+\n        //         `width:`+\n        //         this.width+\n        //         `px;`+\n        //         `height:`+\n        //         this.height+\n        //         `px;`+\n        //         `border:1px solid #ccc;\"`+\n        //         `\">`+\n        //         `</f-flayout></div>`;\n        //     return h;\n        // }\n\n    }, {\n        key: 'parseHtml',\n        value: function parseHtml(html) {\n            var _this2 = this;\n\n            var root = $(html)[0];\n            //鏍峰紡\n            // console.log(style);\n            var obj = {};\n\n            for (var key in root.attributes) {\n                switch (root.attributes[key].name) {\n                    case \"style\":\n                        var style = root.attributes[root.attributes[key].name].value;\n\n                        do {\n\n                            var i = style.indexOf(\":\");\n                            var key2 = style.slice(0, i);\n                            style = style.slice(i + 1);\n\n                            var j = style.indexOf(\";\");\n                            var val = style.slice(0, j);\n                            style = style.slice(j + 1);\n                            if (key2 == \"min-width\") {\n                                obj[\"width\"] = parseFloat(val);\n                            } else if (key2 == \"min-height\") {\n                                obj[\"height\"] = parseFloat(val);\n                            } else {\n                                obj[key2] = val;\n                            }\n                        } while (style.length != 0);\n                        break;\n                    default:\n                        if (root.attributes[key].name && root.attributes[key].value) obj[root.attributes[key].name] = root.attributes[key].value;\n                        break;\n                }\n            }\n            var traversalNode = function traversalNode(htmlNode) {\n                var tagName = htmlNode.tagName;\n\n                switch (tagName) {\n                    case 'DIV':\n                        var root2 = htmlNode;\n                        var traversalNode2 = function traversalNode2(htmlNode2) {\n                            var tagName = htmlNode2.tagName;\n\n                            switch (tagName) {\n                                case 'TABLE':\n                                    var tablelayout = new TableLayout();\n                                    tablelayout.width = parseFloat(htmlNode2.getAttribute(\"width\"));\n                                    tablelayout.height = parseFloat(htmlNode2.getAttribute(\"height\"));\n                                    tablelayout.x = parseFloat(htmlNode2.getAttribute(\"panelx\"));\n                                    tablelayout.y = parseFloat(htmlNode2.getAttribute(\"panely\"));\n                                    tablelayout.parseHtml(htmlNode2);\n                                    break;\n                                case 'F-FLAYOUT':\n                                    var flowLayout = new _FlowLayout2.default();\n                                    flowLayout.width = parseFloat(htmlNode2.getAttribute(\"width\"));\n                                    flowLayout.height = parseFloat(htmlNode2.getAttribute(\"height\"));\n                                    flowLayout.parseHtml(htmlNode2);\n                                    _this2.element.push(flowLayout);\n                                    _this2.allName = [].concat(_toConsumableArray(_this2.allName), _toConsumableArray(flowLayout.getAllName()));\n                                    break;\n                                case 'F-CLAYOUT':\n                                    var cellLayout = new CellLayout();\n                                    cellLayout.width = parseFloat(htmlNode2.getAttribute(\"width\"));\n                                    cellLayout.height = parseFloat(htmlNode2.getAttribute(\"height\"));\n                                    cellLayout.parseHtml(htmlNode2);\n                                    _this2.element.push(cellLayout);\n                                    _this2.allName = [].concat(_toConsumableArray(_this2.allName), _toConsumableArray(cellLayout.getAllName()));\n\n                                    break;\n                                case 'F-INPUT':\n                                    var inputtype = htmlNode2.getAttribute(\"classname\");\n                                    switch (inputtype) {\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.DateField\":\n                                            var data = new _index.Data();\n                                            data.parseHtml(htmlNode2);\n                                            data.isblock = \"false\";\n                                            _this2.element.push(data);\n                                            _this2.allName.push({ \"name\": data.name, \"value\": data.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.RadioField\":\n                                            var radio = new _index.Radio();\n                                            radio.parseHtml(htmlNode2);\n                                            radio.isblock = \"true\";\n                                            _this2.element.push(radio);\n                                            _this2.allName.push({ \"name\": radio.name, \"value\": radio.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.CheckboxField\":\n                                            var checkbox = new _index.Checkbox();\n                                            checkbox.parseHtml(htmlNode2);\n                                            checkbox.isblock = \"true\";\n                                            _this2.element.push(checkbox);\n                                            _this2.allName.push({ \"name\": checkbox.name, \"value\": checkbox.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.SuggestField\":\n                                            var suggestfield = new _index.Suggestfield();\n                                            suggestfield.parseHtml(htmlNode2);\n                                            suggestfield.isblock = \"false\";\n                                            _this2.element.push(suggestfield);\n                                            _this2.allName.push({ \"name\": suggestfield.name, \"value\": suggestfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.ButtonField\":\n                                            var button = new _index.Button();\n                                            button.parseHtml(htmlNode2);\n                                            button.isblock = \"true\";\n                                            _this2.element.push(button);\n                                            _this2.allName.push({ \"name\": button.name, \"value\": button.fieldtype });\n                                            break;\n                                        default:\n                                            var input = new _index.Input();\n                                            input.parseHtml(htmlNode2);\n                                            input.isblock = \"true\";\n                                            _this2.element.push(input);\n                                            _this2.allName.push({ \"name\": input.name, \"value\": input.fieldtype });\n                                            break;\n                                    }\n                                    break;\n                                case 'F-TEXTAREA':\n                                    var textarea = new _index.Textarea();\n                                    textarea.parseHtml(htmlNode2);\n                                    textarea.isblock = \"true\";\n                                    _this2.element.push(textarea);\n                                    _this2.allName.push({ \"name\": textarea.name, \"value\": textarea.fieldtype });\n                                    break;\n                                // case 'F-RADIO':\n                                //     let radio = new Radio();\n                                //     radio.parseHtml(htmlNode2);\n                                //     radio.isblock=\"true\";\n                                //     this.element.push(radio);\n                                //     this.allName.push({\"name\":radio.name,\"value\":radio.fieldtype})\n\n                                //     break;\n                                // case 'F-CHECKBOX':\n                                //     let checkbox = new Checkbox();\n                                //     checkbox.parseHtml(htmlNode2);\n                                //     this.element.push(checkbox);\n                                //     this.allName.push({\"name\":checkbox.name,\"value\":checkbox.fieldtype})\n\n                                //     break;\n                                // case 'F-DATA':\n                                //     let data = new Data();\n                                //     data.parseHtml(htmlNode2);\n                                //     data.isblock=\"false\";\n                                //     this.element.push(data);\n                                //     this.allName.push({\"name\":data.name,\"value\":data.fieldtype})\n\n                                //     break;\n                                case 'F-SELECT':\n                                    var selecttype = htmlNode2.getAttribute(\"classname\");\n                                    switch (selecttype) {\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.DepartmentField\":\n                                            var dept = new _index.Dept();\n                                            dept.parseHtml(htmlNode2);\n                                            dept.isblock = \"false\";\n                                            _this2.element.push(dept);\n                                            _this2.allName.push({ \"name\": dept.name, \"value\": dept.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.SelectAboutField\":\n                                            var selectaboutfield = new _index.Selectaboutfield();\n                                            selectaboutfield.parseHtml(htmlNode2);\n                                            selectaboutfield.isblock = \"false\";\n                                            _this2.element.push(selectaboutfield);\n                                            _this2.allName.push({ \"name\": selectaboutfield.name, \"value\": selectaboutfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.TreeDepartmentField\":\n                                            var treedepartmentfield = new _index.Treedepartmentfield();\n                                            treedepartmentfield.parseHtml(htmlNode2);\n                                            treedepartmentfield.isblock = \"false\";\n                                            _this2.element.push(treedepartmentfield);\n                                            _this2.allName.push({ \"name\": treedepartmentfield.name, \"value\": treedepartmentfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.UserField\":\n                                            var userfield = new _index.Userfield();\n                                            userfield.parseHtml(htmlNode2);\n                                            userfield.isblock = \"false\";\n                                            _this2.element.push(userfield);\n                                            _this2.allName.push({ \"name\": userfield.name, \"value\": userfield.fieldtype });\n                                            break;\n                                        default:\n                                            var select = new _index.Select();\n                                            select.parseHtml(htmlNode2);\n                                            select.isblock = \"false\";\n                                            _this2.element.push(select);\n                                            _this2.allName.push({ \"name\": select.name, \"value\": select.fieldtype });\n\n                                            break;\n                                    }\n                                    break;\n                                // case 'F-DEPT':\n                                //     let dept = new Dept();\n                                //     dept.parseHtml(htmlNode2);\n                                //     dept.isblock=\"false\";\n                                //     this.element.push(dept);\n                                //     this.allName.push({\"name\":dept.name,\"value\":dept.fieldtype})\n                                //     break;\n                                // case 'F-SELECTABOUTFIELD':\n                                //     let selectaboutfield = new Selectaboutfield();\n                                //     selectaboutfield.parseHtml(htmlNode2);\n                                //     selectaboutfield.isblock=\"false\";\n                                //     this.element.push(selectaboutfield);\n                                //     this.allName.push({\"name\":selectaboutfield.name,\"value\":selectaboutfield.fieldtype})\n\n                                //     break;\n                                // case 'F-TREEDEPARTMENTFIELD':\n                                //     let treedepartmentfield = new Treedepartmentfield();\n                                //     treedepartmentfield.parseHtml(htmlNode2);\n                                //     treedepartmentfield.isblock=\"false\";\n                                //     this.element.push(treedepartmentfield);\n                                //     this.allName.push({\"name\":treedepartmentfield.name,\"value\":treedepartmentfield.fieldtype})\n                                //     break;  \n                                // case 'F-USERFIELD':\n                                //     let userfield = new Userfield();\n                                //     userfield.parseHtml(htmlNode2);\n                                //     userfield.isblock=\"false\";\n                                //     this.element.push(userfield);\n                                //     this.allName.push({\"name\":userfield.name,\"value\":userfield.fieldtype})\n                                //     break; \n                                // case 'F-SUGGESTFIELD':\n                                //     let suggestfield = new Suggestfield();\n                                //     suggestfield.parseHtml(htmlNode2);\n                                //     suggestfield.isblock=\"false\";\n                                //     this.element.push(suggestfield);\n                                //     this.allName.push({\"name\":suggestfield.name,\"value\":suggestfield.fieldtype})\n                                //     break;\n                                // case 'F-BUTTON':\n                                //     let button = new Button();\n                                //     button.parseHtml(htmlNode2);\n                                //     button.isblock=\"true\";\n                                //     this.element.push(button);\n                                //     this.allName.push({\"name\":button.name,\"value\":button.fieldtype})\n\n                                //     break; \n                                // case 'F-VIEWDIALOGFIELD':\n                                //     let viewdialogfield = new Viewdialogfield();\n                                //     viewdialogfield.parseHtml(htmlNode2);\n                                //     viewdialogfield.isblock=\"true\";\n                                //     this.element.push(viewdialogfield);\n                                //     this.allName.push({\"name\":viewdialogfield.name,\"value\":viewdialogfield.fieldtype})\n                                //     break;\n                                case 'F-IMG':\n                                    var imgtype = htmlNode2.getAttribute(\"classname\");\n                                    switch (imgtype) {\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.TabField\":\n                                            var tabfield = new _index.Tabfield();\n                                            tabfield.parseHtml(htmlNode2);\n                                            tabfield.isblock = \"true\";\n                                            _this2.element.push(tabfield);\n                                            _this2.allName.push({ \"name\": tabfield.name, \"value\": tabfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.ViewDialogField\":\n                                            var viewdialogfield = new _index.Viewdialogfield();\n                                            viewdialogfield.parseHtml(htmlNode2);\n                                            viewdialogfield.isblock = \"true\";\n                                            _this2.element.push(viewdialogfield);\n                                            _this2.allName.push({ \"name\": viewdialogfield.name, \"value\": viewdialogfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.CalctextField\":\n                                            var calctextfield = new _index.Calctextfield();\n                                            calctextfield.parseHtml(htmlNode2);\n                                            calctextfield.isblock = \"true\";\n                                            _this2.element.push(calctextfield);\n                                            _this2.allName.push({ \"name\": calctextfield.name, \"value\": calctextfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.IncludeField\":\n                                            var includefield = new _index.Includefield();\n                                            includefield.parseHtml(htmlNode2);\n                                            includefield.isblock = \"true\";\n                                            _this2.element.push(includefield);\n                                            _this2.allName.push({ \"name\": includefield.name, \"value\": includefield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.SurveyField\":\n                                            var surveyfield = new _index.Surveyfield();\n                                            surveyfield.parseHtml(htmlNode2);\n                                            surveyfield.isblock = \"true\";\n                                            _this2.element.push(surveyfield);\n                                            _this2.allName.push({ \"name\": surveyfield.name, \"value\": surveyfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.AttachmentUploadField\":\n                                            var attachment = new _index.Attachment();\n                                            attachment.parseHtml(htmlNode2);\n                                            attachment.isblock = \"true\";\n                                            _this2.element.push(attachment);\n                                            _this2.allName.push({ \"name\": attachment.name, \"value\": attachment.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.ImageUploadField\":\n                                            var imageuploadfield = new _index.Imageuploadfield();\n                                            imageuploadfield.parseHtml(htmlNode2);\n                                            imageuploadfield.isblock = \"true\";\n                                            _this2.element.push(imageuploadfield);\n                                            _this2.allName.push({ \"name\": imageuploadfield.name, \"value\": imageuploadfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.OnLineTakePhotoField\":\n                                            var onlinetakephotofield = new _index.Onlinetakephotofield();\n                                            onlinetakephotofield.parseHtml(htmlNode2);\n                                            onlinetakephotofield.isblock = \"true\";\n                                            _this2.element.push(onlinetakephotofield);\n                                            _this2.allName.push({ \"name\": onlinetakephotofield.name, \"value\": onlinetakephotofield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.WeixinGpsField\":\n                                            var weixingpsfield = new _index.Weixingpsfield();\n                                            weixingpsfield.parseHtml(htmlNode2);\n                                            weixingpsfield.isblock = \"true\";\n                                            _this2.element.push(weixingpsfield);\n                                            _this2.allName.push({ \"name\": weixingpsfield.name, \"value\": weixingpsfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.WeixinRecordField\":\n                                            var weixinrecordfield = new _index.Weixinrecordfield();\n                                            weixinrecordfield.parseHtml(htmlNode2);\n                                            weixinrecordfield.isblock = \"true\";\n                                            _this2.element.push(weixinrecordfield);\n                                            _this2.allName.push({ \"name\": weixinrecordfield.name, \"value\": weixinrecordfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.QRCodeField\":\n                                            var qrcodefield = new _index.Qrcodefield();\n                                            qrcodefield.parseHtml(htmlNode2);\n                                            qrcodefield.isblock = \"true\";\n                                            _this2.element.push(qrcodefield);\n                                            _this2.allName.push({ \"name\": qrcodefield.name, \"value\": qrcodefield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.MapField\":\n                                            var mapfield = new _index.Mapfield();\n                                            mapfield.parseHtml(htmlNode2);\n                                            mapfield.isblock = \"true\";\n                                            _this2.element.push(mapfield);\n                                            _this2.allName.push({ \"name\": mapfield.name, \"value\": mapfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.GenericWordField\":\n                                            var genericwordfield = new _index.Genericwordfield();\n                                            genericwordfield.parseHtml(htmlNode2);\n                                            genericwordfield.isblock = \"true\";\n                                            _this2.element.push(genericwordfield);\n                                            _this2.allName.push({ \"name\": genericwordfield.name, \"value\": genericwordfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.HTMLEditorField\":\n                                            var htmleditorfield = new _index.Htmleditorfield();\n                                            htmleditorfield.parseHtml(htmlNode2);\n                                            htmleditorfield.isblock = \"true\";\n                                            _this2.element.push(htmleditorfield);\n                                            _this2.allName.push({ \"name\": htmleditorfield.name, \"value\": htmleditorfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.FlowHistoryField\":\n                                            var flowhistoryfield = new _index.Flowhistoryfield();\n                                            flowhistoryfield.parseHtml(htmlNode2);\n                                            flowhistoryfield.isblock = \"true\";\n                                            _this2.element.push(flowhistoryfield);\n                                            _this2.allName.push({ \"name\": flowhistoryfield.name, \"value\": flowhistoryfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.FlowReminderHistoryField\":\n                                            var flowreminderhistoryfield = new _index.Flowreminderhistoryfield();\n                                            flowreminderhistoryfield.parseHtml(htmlNode2);\n                                            flowreminderhistoryfield.isblock = \"true\";\n                                            _this2.element.push(flowreminderhistoryfield);\n                                            _this2.allName.push({ \"name\": flowreminderhistoryfield.name, \"value\": flowreminderhistoryfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.InformationFeedbackField\":\n                                            var informationfeedbackfield = new _index.Informationfeedbackfield();\n                                            informationfeedbackfield.parseHtml(htmlNode2);\n                                            informationfeedbackfield.isblock = \"true\";\n                                            _this2.element.push(informationfeedbackfield);\n                                            _this2.allName.push({ \"name\": informationfeedbackfield.name, \"value\": informationfeedbackfield.fieldtype });\n                                            break;\n                                        default:\n                                            break;\n                                    }\n                                    break;\n                                default:\n                                    console.log(\"no2\");\n                                    break;\n\n                            }\n                        };\n                        if (root2.hasChildNodes()) {\n                            for (var k = 0; k < root2.children.length; k++) {\n                                traversalNode2(root2.children[k]);\n                            }\n                        }\n                        break;\n                    default:\n                        console.log(\"no\");\n                        break;\n\n                }\n            };\n            if (root.hasChildNodes()) {\n                for (var a = 0; a < root.children.length; a++) {\n                    traversalNode(root.children[a]);\n                }\n            }\n            this.setProps(obj);\n            this.resetChunkElemPosition();\n            console.log(obj);\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-pencil';\n            node.uuid = this.id;\n            node.instance = this;\n            if (this.element.length > 0) {\n                node.nodes = [];\n                for (var i = 0, len = this.element.length; i < len; i++) {\n                    var data = this.element[i].getNodeConfigInfo();\n                    node.nodes.push(data);\n                }\n            }\n            return node;\n        }\n    }, {\n        key: 'addElement',\n        value: function addElement(elem) {\n            // elem.width=this.width;\n            if (elem.scope != \"CellLayout\" && elem.scope != \"FlowLayout\") {\n                elem.isblock = \"true\";\n                elem.preWidth = elem.width;\n                elem.width = this.width;\n            }\n\n            this.element.push(elem);\n            return false;\n        }\n    }, {\n        key: 'resetElementToChunk',\n        value: function resetElementToChunk() {}\n    }, {\n        key: 'resetChunkElemPosition',\n        value: function resetChunkElemPosition() {\n            var x = this.x,\n                y = this.y;\n            var bigHeight = 0;\n            for (var i = 0; i < this.element.length; i++) {\n                if (bigHeight < this.element[i].height) bigHeight = this.element[i].height;\n                this.element[i].x = x;this.element[i].y = y;\n                if (this.element[i].scope == \"FlowLayout\" || this.element[i].scope == \"CellLayout\") {\n                    this.element[i].resetChunkElemPosition();\n                }\n                x += this.element[i].width;\n\n                if (this.element[i + 1]) {\n                    if (this.element[i + 1].width + x > this.width) {\n\n                        x = 0;y = bigHeight + this.element[i].y;\n                        bigHeight = 0;\n                    }\n                }\n            }\n        }\n        //瀵逛簬鏂板姞杩涘竷灞€鐨勫厓绱狅紝璁剧疆x锛寉鍊糪n\n    }, {\n        key: 'setElementPosition',\n        value: function setElementPosition(elem) {\n            var x = this.width,\n                y = 0;\n            for (var i = 0; i < this.element.length; i++) {\n                y += this.element[i].height;\n            }\n            return {\n                x: x,\n                y: y\n            };\n        }\n        //鍒ゆ柇褰撳墠榧犳爣鎸変笅鐨勪綅缃槸鍚﹀湪璇ュ竷灞€涓嬬殑鍏冪礌鍐�,杩欎釜鏂规硶鏄粰榧犳爣鎸変笅鍑虹幇灞炴€ч潰鏉夸簨浠剁敤鐨勶紝涓昏鏄幏鍙栨渶搴曞眰涓€绾х殑闈炲竷灞€鎴栬€呭竷灞€鍏冪礌\n\n    }, {\n        key: 'selectedElement',\n        value: function selectedElement(x, y) {\n            var currentElem = null;\n\n            for (var i = 0; i < this.element.length; i++) {\n                if (this.element[i].x - 5 < x && this.element[i].x + this.element[i].width + 5 > x && this.element[i].y - 5 < y && this.element[i].y + this.element[i].height + 5 > y) {\n                    if (this.element[i].scope != \"FlowLayout\" && this.element[i].scope != \"CellLayout\") {\n                        if (this.element[i].scope == \"textarea\") {\n                            //鍗曠嫭瀵瑰琛屾枃鏈杩涜鍒ゆ柇锛屾槸鍚﹀湪澶氳鏂囨湰妗嗙殑鍙充笅瑙掕竟绾夸笂锛屽鏋滄湁鐨勮瘽锛岄偅褰撳墠灏辨病鏈夐€変腑鍏冪礌\n                            if (this.element[i].isOnBaseLine(x, y)) {\n                                return false;\n                            } else {\n                                return this.element[i];\n                            }\n                        } else {\n                            return this.element[i];\n                        }\n                    } else {\n                        currentElem = this.element[i].selectedElement(x, y);\n                    }\n                }\n            }\n            if (currentElem) {\n                return currentElem;\n            } else {\n                return null;\n            }\n        }\n        //鑾峰彇閫変腑鐨勫竷灞€,杩欎釜涓昏鏄粰甯冨眬鍐呭竷灞€鏀剧疆鍏冪礌鐢紝鑾峰彇褰撳墠甯冨眬鍐呭竷灞€\n\n    }, {\n        key: 'getSelectedElem',\n        value: function getSelectedElem(x, y) {\n            var length = this.element.length,\n                currentChunk = null;\n            for (var j = 0; j < length; j++) {\n                if (this.element[j].scope == \"FlowLayout\" || this.element[j].scope == \"CellLayout\") {\n                    if (this.element[j].x - 5 < x && this.element[j].x + this.element[j].width + 5 > x && this.element[j].y - 5 < y && this.element[j].y + this.element[j].height + 5 > y) {\n                        if (this.element[j].element.length > 0) {\n                            currentChunk = this.element[j].getSelectedElem(x, y);\n                        } else {\n                            return this.element[j];\n                        }\n                    }\n                }\n            }\n            if (currentChunk) {\n                return currentChunk;\n            } else {\n                return this;\n            }\n        }\n        //鍒ゆ柇榧犳爣鎸変笅鐨勭偣鏄惁鍦ㄥ厓绱犲彉绾挎垨鑰呭厓绱犱笅鍏冪礌杈圭嚎\n\n    }, {\n        key: 'isOnBaseLine',\n        value: function isOnBaseLine(x, y) {\n            var currentChunk = null;\n            if (this.y + this.height - 5 < y && this.y + this.height + 5 > y) {\n                return this;\n            }\n            for (var i = 0; i < this.element.length; i++) {\n                if (currentChunk) {\n                    return currentChunk;\n                }\n                if (this.element[i].y + this.element[i].height - 5 < y && this.element[i].y + this.element[i].height + 5 > y) {\n                    //鍒ゆ柇鏄惁鍦ㄥ瓙鍏冪礌鐨勮竟绾夸笂,鍦ㄥ瓙鍏冪礌杈圭嚎涓婏紝鐒跺悗鍒ゆ柇鏄惁鏄痜low甯冨眬锛屾槸鐨勮瘽杩斿洖杩欎釜甯冨眬锛屼笉鏄殑璇濆垽鏂槸涓嶆槸澶氳鏂囨湰妗嗭紝鍒ゆ柇鏄笉鏄湪澶氳鏂囨湰妗嗙殑杈圭嚎\n                    if (this.element[i].scope != \"FlowLayout\" || this.element[i].scope != \"CellLayout\") {\n                        if (this.element[i].scope == \"textarea\") {\n                            currentChunk = this.element[i].isOnBaseLine(x, y);\n                        } else {\n                            return this.element[i];\n                        }\n                    } else {\n                        currentChunk = this.element[i].isOnBaseLine(x, y);\n                    }\n                } else if (this.element[i].x < x && this.element[i].x + this.element[i].width > x && this.element[i].y < y && this.element[i].y + this.element[i].height > y) {\n                    //濡傛灉涓嶅湪瀛愬厓绱犺竟绾夸笂锛屽垽鏂槸涓嶆槸鍦ㄥ瓙鍏冪礌鑼冨洿鍐�,鍐嶇湅瀛愬厓绱犳槸涓嶆槸甯冨眬鍏冪礌锛屽鏋滄槸鐨勮瘽瑕佸甯冨眬鍏冪礌鍐呯殑鍏冪礌杩涜杈圭嚎鍒ゆ柇\n                    if (this.element[i].element && this.element[i].element.length > 0) {\n                        for (var j = 0; j < this.element[i].element.length; j++) {\n                            if (this.element[i].element[j].scope != \"FlowLayout\" || this.element[i].element[j].scope != \"CellLayout\") {\n                                if (this.element[i].element[j].scope == \"textarea\") {\n                                    currentChunk = this.element[i].element[j].isOnBaseLine(x, y);\n                                } else {\n                                    return null;\n                                }\n                            } else {\n                                currentChunk = this.element[i].isOnBaseLine(x, y);\n                            }\n                        }\n                    }\n                }\n            }\n            if (currentChunk) {\n                return currentChunk;\n            } else {\n                return null;\n            }\n        }\n    }, {\n        key: 'delElem',\n        value: function delElem(_currentElemId) {\n            var delElm = null;\n            for (var j = 0; j < this.element.length; j++) {\n                if (this.element[j].id == _currentElemId) {\n                    delElm = this.element[j];\n                    this.element.splice(j, 1);\n                    // this._currentElemId=null;\n\n                    break;\n                } else if (this.element[j].element && this.element[j].element.length > 0) {\n                    delElm = this.element[j].delElem(_currentElemId);\n                }\n            }\n            if (delElm) {\n                return delElm;\n            } else {\n                return false;\n            }\n        }\n    }, {\n        key: 'addElem',\n        value: function addElem(_currentChunkId, delElm) {\n            var back = false;\n            for (var b = 0; b < this.element.length; b++) {\n                if (this.element[b].id == _currentChunkId) {\n                    if (this.element[b].scope == \"FlowLayout\") {\n                        delElm.isblock = \"false\";\n                    } else if (this.element[b].scope == \"CellLayout\") {\n                        delElm.isblock = \"true\";\n                        delElm.preWidth = delElm.width;\n                        delElm.width = this.width;\n                    }\n                    this.element[b].element.push(delElm);\n                    back = true;\n                } else if (this.element[b].element && this.element[b].element.length > 0) {\n                    back = this.element[b].element.addElem(_currentChunkId, delElm);\n                }\n            }\n            if (back) {\n                return back;\n            }\n        }\n        //鍒ゆ柇瀛愬厓绱犳槸鍚︽槸绗﹀悎鏉′欢鐨勫竷灞€鍏冪礌\n\n    }, {\n        key: 'elemIsChunk',\n        value: function elemIsChunk(_currentChunkId) {\n            var isChunk = false;\n            for (var b = 0; b < this.element.length; b++) {\n                if (this.element[b].id == _currentChunkId && (this.element[b].scope == \"FlowLayout\" || this.element[b].scope == \"CellLayout\")) {\n                    isChunk = true;\n                } else if (this.element[b].element && this.element[b].element.length > 0) {\n                    isChunk = this.element[b].elemIsChunk(_currentChunkId);\n                }\n            }\n            return isChunk;\n        }\n    }, {\n        key: 'getAllName',\n        value: function getAllName() {\n            return this.allName;\n        }\n    }, {\n        key: 'getallDeptName',\n        value: function getallDeptName() {\n            var allDeptName = {};\n            for (var i = 0; i < this.element.length; i++) {\n                if (this.element[i].scope == \"dept\") {\n                    //let data={}\n                    allDeptName[this.element[i].name] = \"false\";\n                    //allDeptName.push(data)\n                } else if (this.element[i].scope == \"FlowLayout\" || this.element[i].scope == \"CellLayout\") {\n                    allDeptName = _extends({}, allDeptName, this.element[i].getallDeptName());\n                }\n            }\n            return allDeptName;\n        }\n    }, {\n        key: 'setAllProcesspreValue',\n        value: function setAllProcesspreValue(h) {\n            for (var i = 0; i < this.element.length; i++) {\n                if (this.element[i].scope != \"FlowLayout\" && this.element[i].scope != \"CellLayout\") {\n                    this.element[i].processprevalue = h;\n                } else {\n                    this.element[i].setAllProcesspreValue(h);\n                }\n            }\n        }\n    }, {\n        key: 'getElementLength',\n        value: function getElementLength() {\n            return this.element.length;\n        }\n    }]);\n\n    return CellLayout;\n}(_layout3.default);\n\nexports.default = CellLayout;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2Zvcm0vTGF5b3V0L0NlbGxMYXlvdXQuanM/NTEwZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbGF5b3V0IGZyb20gJy4vbGF5b3V0JztcclxuaW1wb3J0IEZsb3dMYXlvdXQgZnJvbSAnLi9GbG93TGF5b3V0JztcclxuXHJcbmltcG9ydCB7SW5wdXQsVGV4dGFyZWEsUmFkaW8sQ2hlY2tib3gsRGF0YSxTZWxlY3QsRGVwdCxTZWxlY3RhYm91dGZpZWxkLFRyZWVkZXBhcnRtZW50ZmllbGQsVXNlcmZpZWxkLFN1Z2dlc3RmaWVsZCxCdXR0b24sVmlld2RpYWxvZ2ZpZWxkLFRhYmZpZWxkLENhbGN0ZXh0ZmllbGQsSW5jbHVkZWZpZWxkLFN1cnZleWZpZWxkLEF0dGFjaG1lbnQsSW1hZ2V1cGxvYWRmaWVsZCxPbmxpbmV0YWtlcGhvdG9maWVsZCxXZWl4aW5ncHNmaWVsZCxXZWl4aW5yZWNvcmRmaWVsZCxRcmNvZGVmaWVsZCxNYXBmaWVsZCxHZW5lcmljd29yZGZpZWxkLEh0bWxlZGl0b3JmaWVsZCxGbG93aGlzdG9yeWZpZWxkLEZsb3dyZW1pbmRlcmhpc3RvcnlmaWVsZCxJbmZvcm1hdGlvbmZlZWRiYWNrZmllbGR9IGZyb20gJy4uL2NvbXBvbmVudC9pbmRleCc7XHJcbmltcG9ydCB7U2VxdWVuY2V9IGZyb20gJy4uLy4uL3V0aWxpdHknO1xyXG5jbGFzcyBDZWxsTGF5b3V0IGV4dGVuZHMgbGF5b3V0e1xyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMudHlwZT1cImZsb3dcIjtcclxuICAgICAgICB0aGlzLnRleHQ9XCJDZWxsTGF5b3V0XCI7XHJcbiAgICAgICAgdGhpcy5jdXJzb3I9XCJkZWZhdWx0XCI7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50PVtdO1xyXG4gICAgICAgIHRoaXMuaWQ9U2VxdWVuY2UuY3JlYXRlVXVpZCgpO1xyXG4gICAgICAgIHRoaXMuc2NvcGU9J0NlbGxMYXlvdXQnO1xyXG4gICAgICAgIHRoaXMudGFibGVDbGFzcz1cIkNlbGxMYXlvdXRcIjtcclxuICAgICAgICB0aGlzLndpZHRoPW51bGw7XHJcbiAgICAgICAgdGhpcy5oZWlnaHQ9MzAwO1xyXG4gICAgICAgIHRoaXMuaGVpZ2h0UHJlPW51bGw7XHJcbiAgICAgICAgdGhpcy5hbGxOYW1lPVtdO1xyXG4gICAgfVxyXG4gICAgaW5pdCgpe1xyXG4gICAgICAgIFxyXG4gICAgfVxyXG4gICAgcGFpbnQoKXtcclxuICAgICAgICBsZXQgaD1gPGRpdj48Zi1jbGF5b3V0IGlkPVwiYCtcclxuICAgICAgICAgICAgdGhpcy5pZCtcclxuICAgICAgICAgICAgYFwiIGArXHJcbiAgICAgICAgICAgIGBjbGFzcz1cImArXHJcbiAgICAgICAgICAgIGBpbmxpbmVCbG9ja2ArXHJcbiAgICAgICAgICAgIGBcImArXHJcbiAgICAgICAgICAgIGBzdHlsZT1cImArXHJcbiAgICAgICAgICAgIGBtaW4td2lkdGg6YCtcclxuICAgICAgICAgICAgdGhpcy53aWR0aCtcclxuICAgICAgICAgICAgYHB4O2ArXHJcbiAgICAgICAgICAgIGBtaW4taGVpZ2h0OmArXHJcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0K1xyXG4gICAgICAgICAgICBgcHg7YCtcclxuICAgICAgICAgICAgYGJvcmRlcjoxcHggc29saWQgI2NjYztcImArXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBgPmA7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudC5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMuZWxlbWVudC5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgICAgICBoKz10aGlzLmVsZW1lbnRbaV0ucGFpbnQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBoPWgrYDwvZi1jbGF5b3V0PjwvZGl2PmA7XHJcbiAgICAgICAgcmV0dXJuIGg7XHJcbiAgICB9XHJcbiAgICAvLyB0b0h0bWwoKXtcclxuICAgIC8vICAgICBsZXQgaD1gPGRpdiBjbGFzcz1cImlubGluZUJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIHN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+PGYtZmxheW91dCBpZD1cImArXHJcbiAgICAvLyAgICAgICAgIHRoaXMuaWQrXHJcbiAgICAvLyAgICAgICAgIGBcIiBgK1xyXG4gICAgLy8gICAgICAgICBgY2xhc3M9XCJgK1xyXG4gICAgLy8gICAgICAgICBgaW5saW5lQmxvY2tgK1xyXG4gICAgLy8gICAgICAgICBgXCJgK1xyXG4gICAgLy8gICAgICAgICBgc3R5bGU9XCJgK1xyXG4gICAgLy8gICAgICAgICBgd2lkdGg6YCtcclxuICAgIC8vICAgICAgICAgdGhpcy53aWR0aCtcclxuICAgIC8vICAgICAgICAgYHB4O2ArXHJcbiAgICAvLyAgICAgICAgIGBoZWlnaHQ6YCtcclxuICAgIC8vICAgICAgICAgdGhpcy5oZWlnaHQrXHJcbiAgICAvLyAgICAgICAgIGBweDtgK1xyXG4gICAgLy8gICAgICAgICBgYm9yZGVyOjFweCBzb2xpZCAjY2NjO1wiYCtcclxuICAgIC8vICAgICAgICAgYFwiPmArXHJcbiAgICAvLyAgICAgICAgIGA8L2YtZmxheW91dD48L2Rpdj5gO1xyXG4gICAgLy8gICAgIHJldHVybiBoO1xyXG4gICAgLy8gfVxyXG4gICAgcGFyc2VIdG1sKGh0bWwpe1xyXG4gICAgICAgIGxldCByb290PSQoaHRtbClbMF07XHJcbiAgICAgICAgLy/moLflvI9cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhzdHlsZSk7XHJcbiAgICAgICAgbGV0IG9iaj17fTtcclxuICAgICAgICBcclxuICAgICAgICBmb3IobGV0IGtleSBpbiByb290LmF0dHJpYnV0ZXMpe1xyXG4gICAgICAgICAgICBzd2l0Y2gocm9vdC5hdHRyaWJ1dGVzW2tleV0ubmFtZSl7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwic3R5bGVcIjpcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc3R5bGU9cm9vdC5hdHRyaWJ1dGVzW3Jvb3QuYXR0cmlidXRlc1trZXldLm5hbWVdLnZhbHVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBkb3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpPXN0eWxlLmluZGV4T2YoXCI6XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQga2V5MiA9IHN0eWxlLnNsaWNlKDAsaSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXN0eWxlLnNsaWNlKGkrMSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaj1zdHlsZS5pbmRleE9mKFwiO1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbD1zdHlsZS5zbGljZSgwLGopO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1zdHlsZS5zbGljZShqKzEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihrZXkyPT1cIm1pbi13aWR0aFwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ialtcIndpZHRoXCJdPXBhcnNlRmxvYXQodmFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYoa2V5Mj09XCJtaW4taGVpZ2h0XCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqW1wiaGVpZ2h0XCJdPXBhcnNlRmxvYXQodmFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpba2V5Ml09dmFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH13aGlsZShzdHlsZS5sZW5ndGghPTApO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHJvb3QuYXR0cmlidXRlc1trZXldLm5hbWUmJnJvb3QuYXR0cmlidXRlc1trZXldLnZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIG9ialtyb290LmF0dHJpYnV0ZXNba2V5XS5uYW1lXT1yb290LmF0dHJpYnV0ZXNba2V5XS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRyYXZlcnNhbE5vZGUgPSAoaHRtbE5vZGUpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qge3RhZ05hbWV9PWh0bWxOb2RlO1xyXG4gICAgICAgICAgICBzd2l0Y2godGFnTmFtZSl7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdESVYnOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCByb290Mj1odG1sTm9kZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmF2ZXJzYWxOb2RlMiA9IChodG1sTm9kZTIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qge3RhZ05hbWV9PWh0bWxOb2RlMjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHRhZ05hbWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnVEFCTEUnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0YWJsZWxheW91dCA9IG5ldyBUYWJsZUxheW91dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlbGF5b3V0LndpZHRoPXBhcnNlRmxvYXQoaHRtbE5vZGUyLmdldEF0dHJpYnV0ZShcIndpZHRoXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZWxheW91dC5oZWlnaHQ9cGFyc2VGbG9hdChodG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZWxheW91dC54PXBhcnNlRmxvYXQoaHRtbE5vZGUyLmdldEF0dHJpYnV0ZShcInBhbmVseFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVsYXlvdXQueT1wYXJzZUZsb2F0KGh0bWxOb2RlMi5nZXRBdHRyaWJ1dGUoXCJwYW5lbHlcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlbGF5b3V0LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRi1GTEFZT1VUJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmxvd0xheW91dCA9IG5ldyBGbG93TGF5b3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvd0xheW91dC53aWR0aD1wYXJzZUZsb2F0KGh0bWxOb2RlMi5nZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvd0xheW91dC5oZWlnaHQ9cGFyc2VGbG9hdChodG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG93TGF5b3V0LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKGZsb3dMYXlvdXQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZT1bLi4udGhpcy5hbGxOYW1lLC4uLmZsb3dMYXlvdXQuZ2V0QWxsTmFtZSgpXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRi1DTEFZT1VUJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2VsbExheW91dCA9IG5ldyBDZWxsTGF5b3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExheW91dC53aWR0aD1wYXJzZUZsb2F0KGh0bWxOb2RlMi5nZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExheW91dC5oZWlnaHQ9cGFyc2VGbG9hdChodG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsTGF5b3V0LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKGNlbGxMYXlvdXQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZT1bLi4udGhpcy5hbGxOYW1lLC4uLmNlbGxMYXlvdXQuZ2V0QWxsTmFtZSgpXVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0YtSU5QVVQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbnB1dHR5cGU9aHRtbE5vZGUyLmdldEF0dHJpYnV0ZShcImNsYXNzbmFtZVwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaChpbnB1dHR5cGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuRGF0ZUZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IG5ldyBEYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmRhdGEubmFtZSxcInZhbHVlXCI6ZGF0YS5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5SYWRpb0ZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmFkaW8gPSBuZXcgUmFkaW8oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhZGlvLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFkaW8uaXNibG9jaz1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKHJhZGlvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpyYWRpby5uYW1lLFwidmFsdWVcIjpyYWRpby5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5DaGVja2JveEZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hlY2tib3ggPSBuZXcgQ2hlY2tib3goKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrYm94LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tib3guaXNibG9jaz1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKGNoZWNrYm94KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpjaGVja2JveC5uYW1lLFwidmFsdWVcIjpjaGVja2JveC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5TdWdnZXN0RmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWdnZXN0ZmllbGQgPSBuZXcgU3VnZ2VzdGZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWdnZXN0ZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWdnZXN0ZmllbGQuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChzdWdnZXN0ZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOnN1Z2dlc3RmaWVsZC5uYW1lLFwidmFsdWVcIjpzdWdnZXN0ZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuQnV0dG9uRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBidXR0b24gPSBuZXcgQnV0dG9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24ucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24uaXNibG9jaz1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKGJ1dHRvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6YnV0dG9uLm5hbWUsXCJ2YWx1ZVwiOmJ1dHRvbi5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlucHV0ID0gbmV3IElucHV0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmlzYmxvY2s9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChpbnB1dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6aW5wdXQubmFtZSxcInZhbHVlXCI6aW5wdXQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0YtVEVYVEFSRUEnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0YXJlYSA9IG5ldyBUZXh0YXJlYSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRhcmVhLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRhcmVhLmlzYmxvY2s9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2godGV4dGFyZWEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjp0ZXh0YXJlYS5uYW1lLFwidmFsdWVcIjp0ZXh0YXJlYS5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRi1SQURJTyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbGV0IHJhZGlvID0gbmV3IFJhZGlvKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgcmFkaW8ucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgcmFkaW8uaXNibG9jaz1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmVsZW1lbnQucHVzaChyYWRpbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOnJhZGlvLm5hbWUsXCJ2YWx1ZVwiOnJhZGlvLmZpZWxkdHlwZX0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRi1DSEVDS0JPWCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbGV0IGNoZWNrYm94ID0gbmV3IENoZWNrYm94KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgY2hlY2tib3gucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5lbGVtZW50LnB1c2goY2hlY2tib3gpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpjaGVja2JveC5uYW1lLFwidmFsdWVcIjpjaGVja2JveC5maWVsZHR5cGV9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YtREFUQSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbGV0IGRhdGEgPSBuZXcgRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGRhdGEucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgZGF0YS5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmVsZW1lbnQucHVzaChkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6ZGF0YS5uYW1lLFwidmFsdWVcIjpkYXRhLmZpZWxkdHlwZX0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRi1TRUxFQ1QnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWxlY3R0eXBlPWh0bWxOb2RlMi5nZXRBdHRyaWJ1dGUoXCJjbGFzc25hbWVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHNlbGVjdHR5cGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuRGVwYXJ0bWVudEZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVwdCA9IG5ldyBEZXB0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdC5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKGRlcHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmRlcHQubmFtZSxcInZhbHVlXCI6ZGVwdC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5TZWxlY3RBYm91dEZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0YWJvdXRmaWVsZCA9IG5ldyBTZWxlY3RhYm91dGZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RhYm91dGZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0YWJvdXRmaWVsZC5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKHNlbGVjdGFib3V0ZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOnNlbGVjdGFib3V0ZmllbGQubmFtZSxcInZhbHVlXCI6c2VsZWN0YWJvdXRmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuVHJlZURlcGFydG1lbnRGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRyZWVkZXBhcnRtZW50ZmllbGQgPSBuZXcgVHJlZWRlcGFydG1lbnRmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZWRlcGFydG1lbnRmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVkZXBhcnRtZW50ZmllbGQuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaCh0cmVlZGVwYXJ0bWVudGZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjp0cmVlZGVwYXJ0bWVudGZpZWxkLm5hbWUsXCJ2YWx1ZVwiOnRyZWVkZXBhcnRtZW50ZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuVXNlckZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXNlcmZpZWxkID0gbmV3IFVzZXJmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcmZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcmZpZWxkLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2godXNlcmZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjp1c2VyZmllbGQubmFtZSxcInZhbHVlXCI6dXNlcmZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ID0gbmV3IFNlbGVjdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2goc2VsZWN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpzZWxlY3QubmFtZSxcInZhbHVlXCI6c2VsZWN0LmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YtREVQVCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbGV0IGRlcHQgPSBuZXcgRGVwdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGRlcHQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgZGVwdC5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmVsZW1lbnQucHVzaChkZXB0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6ZGVwdC5uYW1lLFwidmFsdWVcIjpkZXB0LmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdGLVNFTEVDVEFCT1VURklFTEQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGxldCBzZWxlY3RhYm91dGZpZWxkID0gbmV3IFNlbGVjdGFib3V0ZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzZWxlY3RhYm91dGZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHNlbGVjdGFib3V0ZmllbGQuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5lbGVtZW50LnB1c2goc2VsZWN0YWJvdXRmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOnNlbGVjdGFib3V0ZmllbGQubmFtZSxcInZhbHVlXCI6c2VsZWN0YWJvdXRmaWVsZC5maWVsZHR5cGV9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YtVFJFRURFUEFSVE1FTlRGSUVMRCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbGV0IHRyZWVkZXBhcnRtZW50ZmllbGQgPSBuZXcgVHJlZWRlcGFydG1lbnRmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRyZWVkZXBhcnRtZW50ZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdHJlZWRlcGFydG1lbnRmaWVsZC5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmVsZW1lbnQucHVzaCh0cmVlZGVwYXJ0bWVudGZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6dHJlZWRlcGFydG1lbnRmaWVsZC5uYW1lLFwidmFsdWVcIjp0cmVlZGVwYXJ0bWVudGZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYnJlYWs7ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YtVVNFUkZJRUxEJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBsZXQgdXNlcmZpZWxkID0gbmV3IFVzZXJmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHVzZXJmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB1c2VyZmllbGQuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5lbGVtZW50LnB1c2godXNlcmZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6dXNlcmZpZWxkLm5hbWUsXCJ2YWx1ZVwiOnVzZXJmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJyZWFrOyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YtU1VHR0VTVEZJRUxEJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBsZXQgc3VnZ2VzdGZpZWxkID0gbmV3IFN1Z2dlc3RmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHN1Z2dlc3RmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzdWdnZXN0ZmllbGQuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5lbGVtZW50LnB1c2goc3VnZ2VzdGZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6c3VnZ2VzdGZpZWxkLm5hbWUsXCJ2YWx1ZVwiOnN1Z2dlc3RmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRi1CVVRUT04nOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGxldCBidXR0b24gPSBuZXcgQnV0dG9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYnV0dG9uLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJ1dHRvbi5pc2Jsb2NrPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuZWxlbWVudC5wdXNoKGJ1dHRvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmJ1dHRvbi5uYW1lLFwidmFsdWVcIjpidXR0b24uZmllbGR0eXBlfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYnJlYWs7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRi1WSUVXRElBTE9HRklFTEQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGxldCB2aWV3ZGlhbG9nZmllbGQgPSBuZXcgVmlld2RpYWxvZ2ZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdmlld2RpYWxvZ2ZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHZpZXdkaWFsb2dmaWVsZC5pc2Jsb2NrPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuZWxlbWVudC5wdXNoKHZpZXdkaWFsb2dmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOnZpZXdkaWFsb2dmaWVsZC5uYW1lLFwidmFsdWVcIjp2aWV3ZGlhbG9nZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0YtSU1HJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1ndHlwZT1odG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwiY2xhc3NuYW1lXCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2goaW1ndHlwZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5UYWJGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRhYmZpZWxkID0gbmV3IFRhYmZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmZpZWxkLmlzYmxvY2s9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaCh0YWJmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6dGFiZmllbGQubmFtZSxcInZhbHVlXCI6dGFiZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5WaWV3RGlhbG9nRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2aWV3ZGlhbG9nZmllbGQgPSBuZXcgVmlld2RpYWxvZ2ZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3ZGlhbG9nZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3ZGlhbG9nZmllbGQuaXNibG9jaz1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKHZpZXdkaWFsb2dmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6dmlld2RpYWxvZ2ZpZWxkLm5hbWUsXCJ2YWx1ZVwiOnZpZXdkaWFsb2dmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5DYWxjdGV4dEZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2FsY3RleHRmaWVsZCA9IG5ldyBDYWxjdGV4dGZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdGV4dGZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3RleHRmaWVsZC5pc2Jsb2NrPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2goY2FsY3RleHRmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6Y2FsY3RleHRmaWVsZC5uYW1lLFwidmFsdWVcIjpjYWxjdGV4dGZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLkluY2x1ZGVGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluY2x1ZGVmaWVsZCA9IG5ldyBJbmNsdWRlZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVmaWVsZC5pc2Jsb2NrPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2goaW5jbHVkZWZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjppbmNsdWRlZmllbGQubmFtZSxcInZhbHVlXCI6aW5jbHVkZWZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLlN1cnZleUZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3VydmV5ZmllbGQgPSBuZXcgU3VydmV5ZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cnZleWZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VydmV5ZmllbGQuaXNibG9jaz1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKHN1cnZleWZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpzdXJ2ZXlmaWVsZC5uYW1lLFwidmFsdWVcIjpzdXJ2ZXlmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5BdHRhY2htZW50VXBsb2FkRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhdHRhY2htZW50ID0gbmV3IEF0dGFjaG1lbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50LmlzYmxvY2s9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChhdHRhY2htZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjphdHRhY2htZW50Lm5hbWUsXCJ2YWx1ZVwiOmF0dGFjaG1lbnQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuSW1hZ2VVcGxvYWRGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGltYWdldXBsb2FkZmllbGQgPSBuZXcgSW1hZ2V1cGxvYWRmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2V1cGxvYWRmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdldXBsb2FkZmllbGQuaXNibG9jaz1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKGltYWdldXBsb2FkZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmltYWdldXBsb2FkZmllbGQubmFtZSxcInZhbHVlXCI6aW1hZ2V1cGxvYWRmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5PbkxpbmVUYWtlUGhvdG9GaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9ubGluZXRha2VwaG90b2ZpZWxkID0gbmV3IE9ubGluZXRha2VwaG90b2ZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmxpbmV0YWtlcGhvdG9maWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubGluZXRha2VwaG90b2ZpZWxkLmlzYmxvY2s9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChvbmxpbmV0YWtlcGhvdG9maWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6b25saW5ldGFrZXBob3RvZmllbGQubmFtZSxcInZhbHVlXCI6b25saW5ldGFrZXBob3RvZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuV2VpeGluR3BzRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB3ZWl4aW5ncHNmaWVsZCA9IG5ldyBXZWl4aW5ncHNmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VpeGluZ3BzZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWl4aW5ncHNmaWVsZC5pc2Jsb2NrPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2god2VpeGluZ3BzZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOndlaXhpbmdwc2ZpZWxkLm5hbWUsXCJ2YWx1ZVwiOndlaXhpbmdwc2ZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLldlaXhpblJlY29yZEZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2VpeGlucmVjb3JkZmllbGQgPSBuZXcgV2VpeGlucmVjb3JkZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlaXhpbnJlY29yZGZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VpeGlucmVjb3JkZmllbGQuaXNibG9jaz1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKHdlaXhpbnJlY29yZGZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjp3ZWl4aW5yZWNvcmRmaWVsZC5uYW1lLFwidmFsdWVcIjp3ZWl4aW5yZWNvcmRmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5RUkNvZGVGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHFyY29kZWZpZWxkID0gbmV3IFFyY29kZWZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxcmNvZGVmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFyY29kZWZpZWxkLmlzYmxvY2s9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChxcmNvZGVmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6cXJjb2RlZmllbGQubmFtZSxcInZhbHVlXCI6cXJjb2RlZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuTWFwRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXBmaWVsZCA9IG5ldyBNYXBmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBmaWVsZC5pc2Jsb2NrPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnB1c2gobWFwZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOm1hcGZpZWxkLm5hbWUsXCJ2YWx1ZVwiOm1hcGZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLkdlbmVyaWNXb3JkRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBnZW5lcmljd29yZGZpZWxkID0gbmV3IEdlbmVyaWN3b3JkZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyaWN3b3JkZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmljd29yZGZpZWxkLmlzYmxvY2s9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChnZW5lcmljd29yZGZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpnZW5lcmljd29yZGZpZWxkLm5hbWUsXCJ2YWx1ZVwiOmdlbmVyaWN3b3JkZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuSFRNTEVkaXRvckZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbGVkaXRvcmZpZWxkID0gbmV3IEh0bWxlZGl0b3JmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbGVkaXRvcmZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbGVkaXRvcmZpZWxkLmlzYmxvY2s9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucHVzaChodG1sZWRpdG9yZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmh0bWxlZGl0b3JmaWVsZC5uYW1lLFwidmFsdWVcIjpodG1sZWRpdG9yZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuRmxvd0hpc3RvcnlGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZsb3doaXN0b3J5ZmllbGQgPSBuZXcgRmxvd2hpc3RvcnlmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvd2hpc3RvcnlmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb3doaXN0b3J5ZmllbGQuaXNibG9jaz1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKGZsb3doaXN0b3J5ZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmZsb3doaXN0b3J5ZmllbGQubmFtZSxcInZhbHVlXCI6Zmxvd2hpc3RvcnlmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5GbG93UmVtaW5kZXJIaXN0b3J5RmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmbG93cmVtaW5kZXJoaXN0b3J5ZmllbGQgPSBuZXcgRmxvd3JlbWluZGVyaGlzdG9yeWZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG93cmVtaW5kZXJoaXN0b3J5ZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG93cmVtaW5kZXJoaXN0b3J5ZmllbGQuaXNibG9jaz1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKGZsb3dyZW1pbmRlcmhpc3RvcnlmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6Zmxvd3JlbWluZGVyaGlzdG9yeWZpZWxkLm5hbWUsXCJ2YWx1ZVwiOmZsb3dyZW1pbmRlcmhpc3RvcnlmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5JbmZvcm1hdGlvbkZlZWRiYWNrRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmZvcm1hdGlvbmZlZWRiYWNrZmllbGQgPSBuZXcgSW5mb3JtYXRpb25mZWVkYmFja2ZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbmZlZWRiYWNrZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbmZlZWRiYWNrZmllbGQuaXNibG9jaz1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wdXNoKGluZm9ybWF0aW9uZmVlZGJhY2tmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6aW5mb3JtYXRpb25mZWVkYmFja2ZpZWxkLm5hbWUsXCJ2YWx1ZVwiOmluZm9ybWF0aW9uZmVlZGJhY2tmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibm8yXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZihyb290Mi5oYXNDaGlsZE5vZGVzKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBrID0gMDtrIDwgcm9vdDIuY2hpbGRyZW4ubGVuZ3RoO2srKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsTm9kZTIocm9vdDIuY2hpbGRyZW5ba10pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIm5vXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihyb290Lmhhc0NoaWxkTm9kZXMoKSkge1xyXG4gICAgICAgICAgICBmb3IobGV0IGEgPSAwO2EgPCByb290LmNoaWxkcmVuLmxlbmd0aDthKyspIHtcclxuICAgICAgICAgICAgICAgIHRyYXZlcnNhbE5vZGUocm9vdC5jaGlsZHJlblthXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXRQcm9wcyhvYmopO1xyXG4gICAgICAgIHRoaXMucmVzZXRDaHVua0VsZW1Qb3NpdGlvbigpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKG9iailcclxuICAgIH1cclxuICAgIGdldE5vZGVDb25maWdJbmZvKCl7XHJcbiAgICAgICAgbGV0IG5vZGUgPSB7fTtcclxuXHRcdG5vZGUudGV4dCA9IHRoaXMudGV4dDtcclxuXHRcdG5vZGUuaWNvbiA9ICdnbHlwaGljb24gZ2x5cGhpY29uLXBlbmNpbCc7XHJcblx0XHRub2RlLnV1aWQgPSB0aGlzLmlkO1x0XHJcbiAgICAgICAgbm9kZS5pbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgaWYodGhpcy5lbGVtZW50Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0bm9kZS5ub2RlcyA9IFtdXHJcblx0XHRcdGZvcihsZXQgaSA9IDAsIGxlbiA9IHRoaXMuZWxlbWVudC5sZW5ndGg7aSA8IGxlbjtpKyspIHtcclxuXHRcdFx0XHRjb25zdCBkYXRhID0gdGhpcy5lbGVtZW50W2ldLmdldE5vZGVDb25maWdJbmZvKCk7XHJcblx0XHRcdFx0bm9kZS5ub2Rlcy5wdXNoKGRhdGEpO1x0XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBub2RlO1xyXG4gICAgfVxyXG4gICAgYWRkRWxlbWVudChlbGVtKXtcclxuICAgICAgICAvLyBlbGVtLndpZHRoPXRoaXMud2lkdGg7XHJcbiAgICAgICAgaWYoZWxlbS5zY29wZSE9XCJDZWxsTGF5b3V0XCIgJiYgZWxlbS5zY29wZSE9XCJGbG93TGF5b3V0XCIgKXtcclxuICAgICAgICAgICAgZWxlbS5pc2Jsb2NrPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICBlbGVtLnByZVdpZHRoPWVsZW0ud2lkdGg7XHJcbiAgICAgICAgICAgIGVsZW0ud2lkdGg9dGhpcy53aWR0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5lbGVtZW50LnB1c2goZWxlbSk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmVzZXRFbGVtZW50VG9DaHVuaygpe1xyXG5cclxuICAgIH1cclxuICAgIHJlc2V0Q2h1bmtFbGVtUG9zaXRpb24oKXtcclxuICAgICAgICBsZXQgeD10aGlzLngseT10aGlzLnk7XHJcbiAgICAgICAgbGV0IGJpZ0hlaWdodD0wO1xyXG4gICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy5lbGVtZW50Lmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBpZihiaWdIZWlnaHQ8dGhpcy5lbGVtZW50W2ldLmhlaWdodCliaWdIZWlnaHQ9dGhpcy5lbGVtZW50W2ldLmhlaWdodDtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50W2ldLng9eDt0aGlzLmVsZW1lbnRbaV0ueT15O1xyXG4gICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbaV0uc2NvcGU9PVwiRmxvd0xheW91dFwiIHx8IHRoaXMuZWxlbWVudFtpXS5zY29wZT09XCJDZWxsTGF5b3V0XCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50W2ldLnJlc2V0Q2h1bmtFbGVtUG9zaXRpb24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB4Kz10aGlzLmVsZW1lbnRbaV0ud2lkdGg7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbaSsxXSl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbaSsxXS53aWR0aCt4PnRoaXMud2lkdGgpe1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHg9MDt5PWJpZ0hlaWdodCt0aGlzLmVsZW1lbnRbaV0ueTtcclxuICAgICAgICAgICAgICAgICAgICBiaWdIZWlnaHQ9MDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5a+55LqO5paw5Yqg6L+b5biD5bGA55qE5YWD57Sg77yM6K6+572ueO+8jHnlgLxcclxuICAgIHNldEVsZW1lbnRQb3NpdGlvbihlbGVtKXtcclxuICAgICAgICBsZXQgeD10aGlzLndpZHRoLHk9MDtcclxuICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMuZWxlbWVudC5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgeSs9dGhpcy5lbGVtZW50W2ldLmhlaWdodDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgeDp4LFxyXG4gICAgICAgICAgICB5OnksXHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgfVxyXG4gICAgLy/liKTmlq3lvZPliY3pvKDmoIfmjInkuIvnmoTkvY3nva7mmK/lkKblnKjor6XluIPlsYDkuIvnmoTlhYPntKDlhoUs6L+Z5Liq5pa55rOV5piv57uZ6byg5qCH5oyJ5LiL5Ye6546w5bGe5oCn6Z2i5p2/5LqL5Lu255So55qE77yM5Li76KaB5piv6I635Y+W5pyA5bqV5bGC5LiA57qn55qE6Z2e5biD5bGA5oiW6ICF5biD5bGA5YWD57SgXHJcbiAgICBzZWxlY3RlZEVsZW1lbnQoeCx5KXtcclxuICAgICAgICBsZXQgY3VycmVudEVsZW09bnVsbDtcclxuXHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLmVsZW1lbnQubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFtpXS54LTU8eCAmJiB0aGlzLmVsZW1lbnRbaV0ueCt0aGlzLmVsZW1lbnRbaV0ud2lkdGgrNT54ICYmIHRoaXMuZWxlbWVudFtpXS55LTU8eSAmJiB0aGlzLmVsZW1lbnRbaV0ueSt0aGlzLmVsZW1lbnRbaV0uaGVpZ2h0KzU+eSl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbaV0uc2NvcGUhPVwiRmxvd0xheW91dFwiICYmIHRoaXMuZWxlbWVudFtpXS5zY29wZSE9XCJDZWxsTGF5b3V0XCIpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFtpXS5zY29wZT09XCJ0ZXh0YXJlYVwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy/ljZXni6zlr7nlpJrooYzmlofmnKzmoYbov5vooYzliKTmlq3vvIzmmK/lkKblnKjlpJrooYzmlofmnKzmoYbnmoTlj7PkuIvop5Lovrnnur/kuIrvvIzlpoLmnpzmnInnmoTor53vvIzpgqPlvZPliY3lsLHmsqHmnInpgInkuK3lhYPntKBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2ldLmlzT25CYXNlTGluZSh4LHkpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50W2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW0gPSB0aGlzLmVsZW1lbnRbaV0uc2VsZWN0ZWRFbGVtZW50KHgseSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGN1cnJlbnRFbGVtKXtcclxuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRFbGVtO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+iOt+WPlumAieS4reeahOW4g+WxgCzov5nkuKrkuLvopoHmmK/nu5nluIPlsYDlhoXluIPlsYDmlL7nva7lhYPntKDnlKjvvIzojrflj5blvZPliY3luIPlsYDlhoXluIPlsYBcclxuICAgIGdldFNlbGVjdGVkRWxlbSh4LHkpe1xyXG4gICAgICAgIGxldCBsZW5ndGggPSB0aGlzLmVsZW1lbnQubGVuZ3RoLGN1cnJlbnRDaHVuaz1udWxsO1xyXG4gICAgICAgIGZvcihsZXQgaj0wO2o8bGVuZ3RoO2orKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFtqXS5zY29wZT09XCJGbG93TGF5b3V0XCIgfHwgdGhpcy5lbGVtZW50W2pdLnNjb3BlPT1cIkNlbGxMYXlvdXRcIil7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbal0ueC01PHgmJnRoaXMuZWxlbWVudFtqXS54K3RoaXMuZWxlbWVudFtqXS53aWR0aCs1PngmJnRoaXMuZWxlbWVudFtqXS55LTU8eSYmdGhpcy5lbGVtZW50W2pdLnkrdGhpcy5lbGVtZW50W2pdLmhlaWdodCs1Pnkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFtqXS5lbGVtZW50Lmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENodW5rPXRoaXMuZWxlbWVudFtqXS5nZXRTZWxlY3RlZEVsZW0oeCx5KTtcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFtqXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9ICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY3VycmVudENodW5rKXtcclxuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDaHVuaztcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/liKTmlq3pvKDmoIfmjInkuIvnmoTngrnmmK/lkKblnKjlhYPntKDlj5jnur/miJbogIXlhYPntKDkuIvlhYPntKDovrnnur9cclxuXHJcbiAgICBpc09uQmFzZUxpbmUoeCx5KXtcclxuICAgICAgICBsZXQgY3VycmVudENodW5rPW51bGw7XHJcbiAgICAgICAgaWYoIHRoaXMueSt0aGlzLmhlaWdodC01PHkgJiYgdGhpcy55K3RoaXMuaGVpZ2h0KzU+eSl7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMuZWxlbWVudC5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgaWYoY3VycmVudENodW5rKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q2h1bms7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2ldLnkrdGhpcy5lbGVtZW50W2ldLmhlaWdodC01PHkgJiYgdGhpcy5lbGVtZW50W2ldLnkrdGhpcy5lbGVtZW50W2ldLmhlaWdodCs1Pnkpe1xyXG4gICAgICAgICAgICAgICAgLy/liKTmlq3mmK/lkKblnKjlrZDlhYPntKDnmoTovrnnur/kuIos5Zyo5a2Q5YWD57Sg6L6557q/5LiK77yM54S25ZCO5Yik5pat5piv5ZCm5pivZmxvd+W4g+WxgO+8jOaYr+eahOivnei/lOWbnui/meS4quW4g+WxgO+8jOS4jeaYr+eahOivneWIpOaWreaYr+S4jeaYr+WkmuihjOaWh+acrOahhu+8jOWIpOaWreaYr+S4jeaYr+WcqOWkmuihjOaWh+acrOahhueahOi+uee6v1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2ldLnNjb3BlIT1cIkZsb3dMYXlvdXRcIiB8fCB0aGlzLmVsZW1lbnRbaV0uc2NvcGUhPVwiQ2VsbExheW91dFwiKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbaV0uc2NvcGU9PVwidGV4dGFyZWFcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDaHVuayA9IHRoaXMuZWxlbWVudFtpXS5pc09uQmFzZUxpbmUoeCx5KTtcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFtpXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2h1bmsgPSB0aGlzLmVsZW1lbnRbaV0uaXNPbkJhc2VMaW5lKHgseSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1lbHNlIGlmKHRoaXMuZWxlbWVudFtpXS54PHggJiYgdGhpcy5lbGVtZW50W2ldLngrdGhpcy5lbGVtZW50W2ldLndpZHRoPnggJiYgdGhpcy5lbGVtZW50W2ldLnk8eSAmJiB0aGlzLmVsZW1lbnRbaV0ueSt0aGlzLmVsZW1lbnRbaV0uaGVpZ2h0Pnkpe1xyXG4gICAgICAgICAgICAgICAgLy/lpoLmnpzkuI3lnKjlrZDlhYPntKDovrnnur/kuIrvvIzliKTmlq3mmK/kuI3mmK/lnKjlrZDlhYPntKDojIPlm7TlhoUs5YaN55yL5a2Q5YWD57Sg5piv5LiN5piv5biD5bGA5YWD57Sg77yM5aaC5p6c5piv55qE6K+d6KaB5a+55biD5bGA5YWD57Sg5YaF55qE5YWD57Sg6L+b6KGM6L6557q/5Yik5patXHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbaV0uZWxlbWVudCAmJiB0aGlzLmVsZW1lbnRbaV0uZWxlbWVudC5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBqPTA7ajx0aGlzLmVsZW1lbnRbaV0uZWxlbWVudC5sZW5ndGg7aisrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2ldLmVsZW1lbnRbal0uc2NvcGUhPVwiRmxvd0xheW91dFwiIHx8dGhpcy5lbGVtZW50W2ldLmVsZW1lbnRbal0uc2NvcGUhPVwiQ2VsbExheW91dFwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFtpXS5lbGVtZW50W2pdLnNjb3BlPT1cInRleHRhcmVhXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDaHVuayA9IHRoaXMuZWxlbWVudFtpXS5lbGVtZW50W2pdLmlzT25CYXNlTGluZSh4LHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENodW5rID0gdGhpcy5lbGVtZW50W2ldLmlzT25CYXNlTGluZSh4LHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihjdXJyZW50Q2h1bmspe1xyXG4gICAgICAgICAgICByZXR1cm4gY3VycmVudENodW5rO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGRlbEVsZW0oX2N1cnJlbnRFbGVtSWQpe1xyXG4gICAgICAgIGxldCBkZWxFbG09bnVsbDtcclxuICAgICAgICBmb3IobGV0IGo9MDtqPHRoaXMuZWxlbWVudC5sZW5ndGg7aisrKXtcclxuICAgICAgICAgICAgaWYodGhpcy5lbGVtZW50W2pdLmlkPT1fY3VycmVudEVsZW1JZCl7XHJcbiAgICAgICAgICAgICAgICBkZWxFbG09dGhpcy5lbGVtZW50W2pdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNwbGljZShqLDEpO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5fY3VycmVudEVsZW1JZD1udWxsO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZih0aGlzLmVsZW1lbnRbal0uZWxlbWVudCAmJiB0aGlzLmVsZW1lbnRbal0uZWxlbWVudC5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICBkZWxFbG09dGhpcy5lbGVtZW50W2pdLmRlbEVsZW0oX2N1cnJlbnRFbGVtSWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGRlbEVsbSl7XHJcbiAgICAgICAgICAgIHJldHVybiBkZWxFbG07XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhZGRFbGVtKF9jdXJyZW50Q2h1bmtJZCxkZWxFbG0pe1xyXG4gICAgICAgIGxldCBiYWNrPWZhbHNlO1xyXG4gICAgICAgIGZvcihsZXQgYj0wO2I8dGhpcy5lbGVtZW50Lmxlbmd0aDtiKyspe1xyXG4gICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbYl0uaWQ9PV9jdXJyZW50Q2h1bmtJZCl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbYl0uc2NvcGU9PVwiRmxvd0xheW91dFwiKXtcclxuICAgICAgICAgICAgICAgICAgICBkZWxFbG0uaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICB9ZWxzZSBpZih0aGlzLmVsZW1lbnRbYl0uc2NvcGU9PVwiQ2VsbExheW91dFwiKXtcclxuICAgICAgICAgICAgICAgICAgICBkZWxFbG0uaXNibG9jaz1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICBkZWxFbG0ucHJlV2lkdGg9ZGVsRWxtLndpZHRoO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbEVsbS53aWR0aD10aGlzLndpZHRoO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50W2JdLmVsZW1lbnQucHVzaChkZWxFbG0pO1xyXG4gICAgICAgICAgICAgICAgYmFjaz10cnVlO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1lbHNlIGlmKHRoaXMuZWxlbWVudFtiXS5lbGVtZW50ICYmIHRoaXMuZWxlbWVudFtiXS5lbGVtZW50Lmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgIGJhY2s9dGhpcy5lbGVtZW50W2JdLmVsZW1lbnQuYWRkRWxlbShfY3VycmVudENodW5rSWQsZGVsRWxtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihiYWNrKXtcclxuICAgICAgICAgICAgcmV0dXJuIGJhY2s7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/liKTmlq3lrZDlhYPntKDmmK/lkKbmmK/nrKblkIjmnaHku7bnmoTluIPlsYDlhYPntKBcclxuICAgIGVsZW1Jc0NodW5rKF9jdXJyZW50Q2h1bmtJZCl7XHJcbiAgICAgICAgbGV0IGlzQ2h1bms9ZmFsc2U7XHJcbiAgICAgICAgZm9yKGxldCBiPTA7Yjx0aGlzLmVsZW1lbnQubGVuZ3RoO2IrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFtiXS5pZD09X2N1cnJlbnRDaHVua0lkICYmICh0aGlzLmVsZW1lbnRbYl0uc2NvcGU9PVwiRmxvd0xheW91dFwiIHx8IHRoaXMuZWxlbWVudFtiXS5zY29wZT09XCJDZWxsTGF5b3V0XCIgKSl7ICAgXHJcbiAgICAgICAgICAgICAgICBpc0NodW5rPXRydWU7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmKHRoaXMuZWxlbWVudFtiXS5lbGVtZW50ICYmIHRoaXMuZWxlbWVudFtiXS5lbGVtZW50Lmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgIGlzQ2h1bms9dGhpcy5lbGVtZW50W2JdLmVsZW1Jc0NodW5rKF9jdXJyZW50Q2h1bmtJZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGlzQ2h1bms7XHJcbiAgICB9XHJcbiAgICBnZXRBbGxOYW1lKCl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxsTmFtZTtcclxuICAgIH1cclxuICAgIGdldGFsbERlcHROYW1lKCl7XHJcbiAgICAgICAgbGV0IGFsbERlcHROYW1lPXt9O1xyXG4gICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy5lbGVtZW50Lmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBpZih0aGlzLmVsZW1lbnRbaV0uc2NvcGU9PVwiZGVwdFwiKXtcclxuICAgICAgICAgICAgICAgIC8vbGV0IGRhdGE9e31cclxuICAgICAgICAgICAgICAgIGFsbERlcHROYW1lW3RoaXMuZWxlbWVudFtpXS5uYW1lXT1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAvL2FsbERlcHROYW1lLnB1c2goZGF0YSlcclxuICAgICAgICAgICAgfWVsc2UgaWYodGhpcy5lbGVtZW50W2ldLnNjb3BlPT1cIkZsb3dMYXlvdXRcInx8IHRoaXMuZWxlbWVudFtpXS5zY29wZT09XCJDZWxsTGF5b3V0XCIgKXtcclxuICAgICAgICAgICAgICAgIGFsbERlcHROYW1lPXsuLi5hbGxEZXB0TmFtZSwuLi50aGlzLmVsZW1lbnRbaV0uZ2V0YWxsRGVwdE5hbWUoKX1cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFsbERlcHROYW1lXHJcbiAgICB9XHJcbiAgICBzZXRBbGxQcm9jZXNzcHJlVmFsdWUoaCl7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLmVsZW1lbnQubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFtpXS5zY29wZSE9XCJGbG93TGF5b3V0XCIgJiYgdGhpcy5lbGVtZW50W2ldLnNjb3BlIT1cIkNlbGxMYXlvdXRcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRbaV0ucHJvY2Vzc3ByZXZhbHVlPWg7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50W2ldLnNldEFsbFByb2Nlc3NwcmVWYWx1ZShoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldEVsZW1lbnRMZW5ndGgoKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50Lmxlbmd0aDtcclxuICAgIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBDZWxsTGF5b3V0O1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9MYXlvdXQvQ2VsbExheW91dC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7OztBQUFBOzs7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVpBO0FBYUE7QUFDQTs7O0FBQUE7OztBQUdBO0FBQ0E7QUFnQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBMUJBO0FBNEJBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFDQTtBQTRDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBdENBO0FBd0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFIQTtBQTRIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdlVBO0FBeVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF4VkE7QUEwVkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7OztBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTs7OztBQXZyQkE7QUFDQTtBQXdyQkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///47\n");

/***/ }),
/* 48 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _index = __webpack_require__(22);\n\nvar _index2 = __webpack_require__(45);\n\nvar _Tree = __webpack_require__(49);\n\nvar _Tree2 = _interopRequireDefault(_Tree);\n\nvar _Menu = __webpack_require__(43);\n\nvar _Menu2 = _interopRequireDefault(_Menu);\n\nvar _crypto = __webpack_require__(127);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar FormPanel = function () {\n    function FormPanel(panel) {\n        _classCallCheck(this, FormPanel);\n\n        this.panel = panel;\n        this.chunk = [];\n        this.elem = null;\n        this.width = null;\n        this.isAllowDraw = false;\n        this._currentElem = null;\n        this._currentChunk = null;\n        this._currentElemId = null; //鎷栨嫿鐨勬椂鍊欑敤鏉ヤ繚瀛樺厓绱爄d\n        this._currentChunkId = null; //鎷栨嫿鐨勬椂鍊欎繚瀛樹箣鍚庢斁缃殑鍖哄煙id\n        this._currentOnline = null; //褰撳墠鍦ㄩ偅涓厓绱犵殑瀛愬厓绱犵殑杈圭嚎涓奬n        this._statues = FormPanel.ACTION_NORMAL;\n        this.cells = []; //褰撳墠榧犳爣鎵€鍦╰able甯冨眬鍏冪礌鐨則d鐨勭粍鍚圽n        this.insertBefore = true; //鍦ㄤ笂鏂硅繕鏄笅鏂规彃鍏n        this.table = []; //褰撳墠榧犳爣鎵€鍦ㄧ殑table鐨勪俊鎭痋n        this.rows = []; //褰撳墠榧犳爣鎵€鍦ㄧ殑table鐨勪俊鎭痋n        this.nowRowIndex = null; //褰撳墠榧犳爣鍧愬湪鐨則d鐨則r\n        this.nowColIndex = null; //褰撳墠榧犳爣鎵€鍦ㄧ殑td鐨勫垪鏁癨n        this.realRowIndex = null; //褰撳墠榧犳爣鎵€鍦ㄧ殑tr\n        this.cellHaveRowspan = false; //褰撳墠榧犳爣鎵€鍦ㄥ崟鍏冩牸鏄惁鏈夎鍚堝苟鍗曞厓鏍糪n        this._currentPropElem = null; //缁欏睘鎬ч潰鏉跨敤鐨勶紝褰撳墠鐨勯紶鏍囨墍鍦ㄥ厓绱燶n        this.changeChunk = []; //澶氳鏂囨湰妗嗙Щ鍔ㄧ殑鏃跺€欏簲璇ヨ窡鐫€绉诲姩鐨勫竷灞€鍏冪礌\n\n        this.allName = []; //鍊艰璁$殑閮ㄥ垎鐢ㄦ潵鑾峰彇鎵€鏈夊凡淇濆瓨鐨勯潪甯冨眬鎺т欢鐨勫悕瀛楀拰fieldtype\n        this.num = 0; //鐢ㄦ潵璁℃暟\n    }\n    //娣诲姞鍗曡鏂囨湰妗哱n\n\n    _createClass(FormPanel, [{\n        key: 'addInput',\n        value: function addInput() {\n            var elem = new _index.Input();\n            this.num++;\n            elem.name = \"鍗曡鏂囨湰妗哱" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addTextarea',\n        value: function addTextarea() {\n            var elem = new _index.Textarea();\n            this.num++;\n            elem.name = \"澶氳鏂囨湰妗哱" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addRadio',\n        value: function addRadio() {\n            var elem = new _index.Radio();\n            this.num++;\n            elem.name = \"鍗曢€夋\" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addCheckbox',\n        value: function addCheckbox() {\n            var elem = new _index.Checkbox();\n            this.num++;\n            elem.name = \"澶嶉€夋\" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addData',\n        value: function addData() {\n            var elem = new _index.Data();\n            this.num++;\n            elem.name = \"鏃ユ湡閫夋嫨妗哱" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addSelect',\n        value: function addSelect() {\n            var elem = new _index.Select();\n            this.num++;\n            elem.name = \"涓嬫媺妗哱" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addDept',\n        value: function addDept() {\n            var elem = new _index.Dept();\n            this.num++;\n            elem.name = \"閮ㄩ棬閫夋嫨妗哱" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addSelectaboutfield',\n        value: function addSelectaboutfield() {\n            var elem = new _index.Selectaboutfield();\n            this.num++;\n            elem.name = \"宸﹀彸閫夋嫨妗哱" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addTreedepartmentfield',\n        value: function addTreedepartmentfield() {\n            var elem = new _index.Treedepartmentfield();\n            this.num++;\n            elem.name = \"鏍戝舰閮ㄩ棬閫夋嫨妗哱" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addUserfield',\n        value: function addUserfield() {\n            var elem = new _index.Userfield();\n            this.num++;\n            elem.name = \"鐢ㄦ埛閫夋嫨妗哱" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addSuggestfield',\n        value: function addSuggestfield() {\n            var elem = new _index.Suggestfield();\n            this.num++;\n            elem.name = \"鏅鸿兘鎼滅储鎻愮ず妗哱" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addButton',\n        value: function addButton() {\n            var elem = new _index.Button();\n            this.num++;\n            elem.name = \"鎸夐挳\" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addViewdialogfield',\n        value: function addViewdialogfield() {\n            var elem = new _index.Viewdialogfield();\n            this.num++;\n            elem.name = \"瑙嗗浘閫夋嫨妗哱" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addTabfield',\n        value: function addTabfield() {\n            var elem = new _index.Tabfield();\n            this.num++;\n            elem.name = \"閫夐」鍗" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addCalctextfield',\n        value: function addCalctextfield() {\n            var elem = new _index.Calctextfield();\n            this.num++;\n            elem.name = \"璁$畻鑴氭湰\" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addIncludefield',\n        value: function addIncludefield() {\n            var elem = new _index.Includefield();\n            this.num++;\n            elem.name = \"鍖呭惈鍏冪礌\" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addSurveyfield',\n        value: function addSurveyfield() {\n            var elem = new _index.Surveyfield();\n            this.num++;\n            elem.name = \"璋冩煡鎺т欢\" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addAttachment',\n        value: function addAttachment() {\n            var elem = new _index.Attachment();\n            this.num++;\n            elem.name = \"鏂囦欢涓婁紶\" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addImageuploadfield',\n        value: function addImageuploadfield() {\n            var elem = new _index.Imageuploadfield();\n            this.num++;\n            elem.name = \"鍥剧墖涓婁紶\" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addOnlinetakephotofield',\n        value: function addOnlinetakephotofield() {\n            var elem = new _index.Onlinetakephotofield();\n            this.num++;\n            elem.name = \"鍦ㄧ嚎鎷嶇収\" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addWeixingpsfield',\n        value: function addWeixingpsfield() {\n            var elem = new _index.Weixingpsfield();\n            this.num++;\n            elem.name = \"寰俊gps瀹氫綅\" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addWeixinrecordfield',\n        value: function addWeixinrecordfield() {\n            var elem = new _index.Weixinrecordfield();\n            this.num++;\n            elem.name = \"寰俊褰曢煶鎺т欢\" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addQrcodefield',\n        value: function addQrcodefield() {\n            var elem = new _index.Qrcodefield();\n            this.num++;\n            elem.name = \"浜岀淮鐮佹帶浠禱" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addMapfield',\n        value: function addMapfield() {\n            var elem = new _index.Mapfield();\n            this.num++;\n            elem.name = \"鍦板浘\" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addGenericwordfield',\n        value: function addGenericwordfield() {\n            var elem = new _index.Genericwordfield();\n            this.num++;\n            elem.name = \"閫氱敤WORD缂栬緫鍣╘" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addHtmleditorfield',\n        value: function addHtmleditorfield() {\n            var elem = new _index.Htmleditorfield();\n            this.num++;\n            elem.name = \"HTML缂栬緫鍣╘" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addFlowhistoryfield',\n        value: function addFlowhistoryfield() {\n            var elem = new _index.Flowhistoryfield();\n            this.num++;\n            elem.name = \"娴佺▼鍘嗗彶\" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addFlowreminderhistoryfield',\n        value: function addFlowreminderhistoryfield() {\n            var elem = new _index.Flowreminderhistoryfield();\n            this.num++;\n            elem.name = \"娴佺▼鍌姙鍘嗗彶\" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addInformationfeedbackfield',\n        value: function addInformationfeedbackfield() {\n            var elem = new _index.Informationfeedbackfield();\n            this.num++;\n            elem.name = \"淇℃伅鍙嶉\" + this.num;\n            elem.processprevalue = this.getAllNameScript();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addTableLayout',\n        value: function addTableLayout() {\n            var elem = new _index2.TableLayout();\n            this.elem = elem;\n            this.setElemPosition(elem);\n            elem.init();\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addFlowLayout',\n        value: function addFlowLayout() {\n            var elem = new _index2.FlowLayout();\n            this.elem = elem;\n            // this.elem.panelWidth=parseInt(this.width);\n            this.elem.width = parseInt(this.width);\n            this.setElemPosition(elem);\n            elem.init();\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'addCellLayout',\n        value: function addCellLayout() {\n            var elem = new _index2.CellLayout();\n            this.elem = elem;\n            this.elem.width = parseInt(this.width);\n            this.setElemPosition(elem);\n            elem.init();\n            this.isAllowDraw = true;\n        }\n    }, {\n        key: 'init',\n        value: function init() {\n            var _this = this;\n\n            this.panel.onmousemove = function (e) {\n                _this.handleMouseMove(e);\n            };\n\n            this.panel.onmousedown = function (e) {\n                _this.clearCurrToEdit();\n                _this.handleMouseDown(e);\n            };\n\n            this.panel.onmouseup = function (e) {\n                _this.handleMouseUp(e);\n            };\n        }\n    }, {\n        key: 'parseHtml',\n        value: function parseHtml(html) {\n            var _this2 = this;\n\n            var root = html[0];\n            var that = this;\n            var traversalNode = function traversalNode(htmlNode) {\n                var tagName = htmlNode.tagName;\n\n                switch (tagName) {\n                    case 'DIV':\n                        var root2 = htmlNode;\n                        var traversalNode2 = function traversalNode2(htmlNode2) {\n                            var tagName = htmlNode2.tagName;\n\n                            switch (tagName) {\n                                case 'TABLE':\n                                    var tablelayout = new _index2.TableLayout();\n                                    tablelayout.width = parseFloat(htmlNode2.getAttribute(\"width\"));\n                                    tablelayout.height = parseFloat(htmlNode2.getAttribute(\"height\"));\n                                    tablelayout.x = parseFloat(htmlNode2.getAttribute(\"panelx\"));\n                                    tablelayout.y = parseFloat(htmlNode2.getAttribute(\"panely\"));\n                                    tablelayout.parseHtml(htmlNode2);\n                                    that.chunk.push(tablelayout);\n                                    console.log(that.chunk);\n                                    break;\n                                case 'F-FLAYOUT':\n                                    var flowLayout = new _index2.FlowLayout();\n                                    flowLayout.width = parseFloat(htmlNode2.getAttribute(\"width\"));\n                                    flowLayout.height = parseFloat(htmlNode2.getAttribute(\"height\"));\n                                    flowLayout.parseHtml(htmlNode2);\n                                    that.num += flowLayout.getElementLength();\n\n                                    that.chunk.push(flowLayout);\n                                    console.log(that.chunk);\n                                    that.allName = [].concat(_toConsumableArray(that.allName), _toConsumableArray(flowLayout.getAllName()));\n                                    break;\n                                case 'F-CLAYOUT':\n                                    var cellLayout = new _index2.CellLayout();\n                                    cellLayout.width = parseFloat(htmlNode2.getAttribute(\"width\"));\n                                    cellLayout.height = parseFloat(htmlNode2.getAttribute(\"height\"));\n                                    cellLayout.parseHtml(htmlNode2);\n                                    that.num += cellLayout.getElementLength();\n\n                                    that.chunk.push(cellLayout);\n                                    console.log(that.chunk);\n                                    that.allName = [].concat(_toConsumableArray(that.allName), _toConsumableArray(cellLayout.getAllName()));\n                                    break;\n                                case 'F-INPUT':\n                                    var inputtype = htmlNode2.getAttribute(\"classname\");\n                                    switch (inputtype) {\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.DateField\":\n                                            var data = new _index.Data();\n                                            data.parseHtml(htmlNode2);\n                                            data.isblock = \"false\";\n                                            that.chunk.push(data);\n                                            that.allName.push({ \"name\": data.name, \"value\": data.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.RadioField\":\n                                            var radio = new _index.Radio();\n                                            radio.parseHtml(htmlNode2);\n                                            radio.isblock = \"false\";\n                                            that.chunk.push(radio);\n                                            that.allName.push({ \"name\": radio.name, \"value\": radio.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.CheckboxField\":\n                                            var checkbox = new _index.Checkbox();\n                                            checkbox.parseHtml(htmlNode2);\n                                            checkbox.isblock = \"false\";\n                                            _this2.chunk.push(checkbox);\n                                            that.allName.push({ \"name\": checkbox.name, \"value\": checkbox.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.SuggestField\":\n                                            var suggestfield = new _index.Suggestfield();\n                                            suggestfield.parseHtml(htmlNode2);\n                                            suggestfield.isblock = \"false\";\n                                            that.chunk.push(suggestfield);\n                                            that.allName.push({ \"name\": suggestfield.name, \"value\": suggestfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.ButtonField\":\n                                            var button = new _index.Button();\n                                            button.parseHtml(htmlNode2);\n                                            button.isblock = \"false\";\n                                            that.chunk.push(button);\n                                            that.allName.push({ \"name\": button.name, \"value\": button.fieldtype });\n                                            break;\n                                        default:\n                                            var input = new _index.Input();\n                                            input.parseHtml(htmlNode2);\n                                            input.isblock = \"false\";\n                                            that.chunk.push(input);\n                                            that.allName.push({ \"name\": input.name, \"value\": input.fieldtype });\n                                            break;\n\n                                    }\n                                    that.num++;\n                                    break;\n                                case 'F-TEXTAREA':\n                                    var textarea = new _index.Textarea();\n                                    textarea.parseHtml(htmlNode2);\n                                    textarea.isblock = \"false\";\n\n                                    that.chunk.push(textarea);\n                                    that.num++;\n\n                                    that.allName.push({ \"name\": textarea.name, \"value\": textarea.fieldtype });\n\n                                    break;\n                                // case 'F-RADIO':\n                                //     let radio = new Radio();\n                                //     radio.parseHtml(htmlNode2);\n                                //     radio.isblock=\"false\";\n\n                                //     that.chunk.push(radio);\n                                //     that.num++;\n\n                                //     that.allName.push({\"name\":radio.name,\"value\":radio.fieldtype})\n\n                                //     break;\n                                // case 'F-CHECKBOX':\n                                //     let checkbox = new Checkbox();\n                                //     checkbox.parseHtml(htmlNode2);\n                                //     checkbox.isblock=\"false\";\n\n                                //     this.chunk.push(checkbox);\n                                //     that.num++;\n\n                                //     that.allName.push({\"name\":checkbox.name,\"value\":checkbox.fieldtype})\n\n                                //     break;\n                                // case 'F-DATA':\n                                //     let data = new Data();\n                                //     data.parseHtml(htmlNode2);\n                                //     data.isblock=\"false\";\n\n                                //     that.chunk.push(data);\n                                //     that.num++;\n\n                                //     that.allName.push({\"name\":data.name,\"value\":data.fieldtype})\n\n                                //     break;\n                                case 'F-SELECT':\n                                    var selecttype = htmlNode2.getAttribute(\"classname\");\n                                    switch (selecttype) {\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.DepartmentField\":\n                                            var dept = new _index.Dept();\n                                            dept.parseHtml(htmlNode2);\n                                            dept.isblock = \"false\";\n\n                                            that.chunk.push(dept);\n\n                                            _this2.allName.push({ \"name\": dept.name, \"value\": dept.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.SelectAboutField\":\n                                            var selectaboutfield = new _index.Selectaboutfield();\n                                            selectaboutfield.parseHtml(htmlNode2);\n                                            selectaboutfield.isblock = \"false\";\n\n                                            that.chunk.push(selectaboutfield);\n\n                                            _this2.allName.push({ \"name\": selectaboutfield.name, \"value\": selectaboutfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.TreeDepartmentField\":\n                                            var treedepartmentfield = new _index.Treedepartmentfield();\n                                            treedepartmentfield.parseHtml(htmlNode2);\n                                            treedepartmentfield.isblock = \"false\";\n\n                                            that.chunk.push(treedepartmentfield);\n\n                                            _this2.allName.push({ \"name\": treedepartmentfield.name, \"value\": treedepartmentfield.fieldtype });\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.UserField\":\n                                            var userfield = new _index.Userfield();\n                                            userfield.parseHtml(htmlNode2);\n                                            userfield.isblock = \"false\";\n                                            that.chunk.push(userfield);\n\n                                            that.allName.push({ \"name\": userfield.name, \"value\": userfield.fieldtype });\n                                            break;\n                                        default:\n                                            var select = new _index.Select();\n                                            select.parseHtml(htmlNode2);\n                                            select.isblock = \"false\";\n\n                                            that.chunk.push(select);\n\n                                            that.allName.push({ \"name\": select.name, \"value\": select.fieldtype });\n\n                                            break;\n                                    }\n                                    _this2.num++;\n                                    break;\n                                // case 'F-DEPT':\n                                //     let dept = new Dept();\n                                //     dept.parseHtml(htmlNode2);\n                                //     dept.isblock=\"false\";\n\n                                //     that.chunk.push(dept);\n                                //     that.num++;\n\n                                //     this.allName.push({\"name\":dept.name,\"value\":dept.fieldtype})\n\n                                //     break;\n                                // case 'F-SELECTABOUTFIELD':\n                                //     let selectaboutfield = new Selectaboutfield();\n                                //     selectaboutfield.parseHtml(htmlNode2);\n                                //     selectaboutfield.isblock=\"false\";\n\n                                //     that.chunk.push(selectaboutfield);\n                                //     that.num++;\n\n                                //     this.allName.push({\"name\":selectaboutfield.name,\"value\":selectaboutfield.fieldtype})\n\n                                //     break;\n                                // case 'F-TREEDEPARTMENTFIELD':\n                                //     let treedepartmentfield = new Treedepartmentfield();\n                                //     treedepartmentfield.parseHtml(htmlNode2);\n                                //     treedepartmentfield.isblock=\"false\";\n\n                                //     that.chunk.push(treedepartmentfield);\n                                //     that.num++;\n\n                                //     this.allName.push({\"name\":treedepartmentfield.name,\"value\":treedepartmentfield.fieldtype})\n\n                                //     break;\n                                // case 'F-USERFIELD':\n                                //     let userfield = new Userfield();\n                                //     userfield.parseHtml(htmlNode2);\n                                //     userfield.isblock=\"false\";\n                                //     that.chunk.push(userfield);\n                                //     that.num++;\n\n                                //     that.allName.push({\"name\":userfield.name,\"value\":userfield.fieldtype})\n                                //     break; \n                                // Suggestfield\n                                // case 'F-SUGGESTFIELD':\n                                //     let suggestfield = new Suggestfield();\n                                //     suggestfield.parseHtml(htmlNode2);\n                                //     suggestfield.isblock=\"false\";\n                                //     that.chunk.push(suggestfield);\n                                //     that.num++;\n                                //     that.allName.push({\"name\":suggestfield.name,\"value\":suggestfield.fieldtype})\n                                //     break; \n                                // case 'F-BUTTON':\n                                //     let button = new Button();\n                                //     button.parseHtml(htmlNode2);\n                                //     button.isblock=\"false\";\n\n                                //     that.chunk.push(button);\n                                //     that.num++;\n\n                                //     that.allName.push({\"name\":button.name,\"value\":button.fieldtype})\n\n                                //     break;\n                                case 'F-VIEWDIALOGFIELD':\n                                    var viewdialogfield = new _index.Viewdialogfield();\n                                    viewdialogfield.parseHtml(htmlNode2);\n                                    viewdialogfield.isblock = \"false\";\n                                    that.chunk.push(viewdialogfield);\n                                    that.num++;\n                                    that.allName.push({ \"name\": viewdialogfield.name, \"value\": viewdialogfield.fieldtype });\n\n                                    break;\n                                case 'F-IMG':\n                                    var imgtype = htmlNode2.getAttribute(\"classname\");\n                                    switch (imgtype) {\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.TabField\":\n                                            var tabfield = new _index.Tabfield();\n                                            tabfield.parseHtml(htmlNode2);\n                                            tabfield.isblock = \"false\";\n                                            that.chunk.push(tabfield);\n                                            that.allName.push({ \"name\": tabfield.name, \"value\": tabfield.fieldtype ? tabfield.fieldtype : \"\" });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.ViewDialogField\":\n                                            var _viewdialogfield = new _index.Viewdialogfield();\n                                            _viewdialogfield.parseHtml(htmlNode2);\n                                            _viewdialogfield.isblock = \"false\";\n                                            that.chunk.push(_viewdialogfield);\n                                            that.allName.push({ \"name\": _viewdialogfield.name, \"value\": _viewdialogfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.CalctextField\":\n                                            var calctextField = new _index.Calctextfield();\n                                            calctextField.parseHtml(htmlNode2);\n                                            calctextField.isblock = \"false\";\n                                            that.chunk.push(calctextField);\n                                            that.allName.push({ \"name\": calctextField.name, \"value\": calctextField.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.IncludeField\":\n                                            var includeField = new _index.Includefield();\n                                            includeField.parseHtml(htmlNode2);\n                                            includeField.isblock = \"false\";\n                                            that.chunk.push(includeField);\n                                            that.allName.push({ \"name\": includeField.name, \"value\": includeField.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.SurveyField\":\n                                            var surveyfield = new _index.Surveyfield();\n                                            surveyfield.parseHtml(htmlNode2);\n                                            surveyfield.isblock = \"false\";\n                                            that.chunk.push(surveyfield);\n                                            that.allName.push({ \"name\": surveyfield.name, \"value\": surveyfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.AttachmentUploadField\":\n                                            var attachment = new _index.Attachment();\n                                            attachment.parseHtml(htmlNode2);\n                                            attachment.isblock = \"false\";\n                                            that.chunk.push(attachment);\n                                            that.allName.push({ \"name\": attachment.name, \"value\": attachment.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.ImageUploadField\":\n                                            var imageuploadfield = new _index.Imageuploadfield();\n                                            imageuploadfield.parseHtml(htmlNode2);\n                                            imageuploadfield.isblock = \"false\";\n                                            that.chunk.push(imageuploadfield);\n                                            that.allName.push({ \"name\": imageuploadfield.name, \"value\": imageuploadfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.OnLineTakePhotoField\":\n                                            var onlinetakephotofield = new _index.Onlinetakephotofield();\n                                            onlinetakephotofield.parseHtml(htmlNode2);\n                                            onlinetakephotofield.isblock = \"false\";\n                                            that.chunk.push(onlinetakephotofield);\n                                            that.allName.push({ \"name\": onlinetakephotofield.name, \"value\": onlinetakephotofield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.WeixinGpsField\":\n                                            var weixingpsfield = new _index.Weixingpsfield();\n                                            weixingpsfield.parseHtml(htmlNode2);\n                                            weixingpsfield.isblock = \"false\";\n                                            that.chunk.push(weixingpsfield);\n                                            that.allName.push({ \"name\": weixingpsfield.name, \"value\": weixingpsfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.WeixinRecordField\":\n                                            var weixinrecordfield = new _index.Weixinrecordfield();\n                                            weixinrecordfield.parseHtml(htmlNode2);\n                                            weixinrecordfield.isblock = \"false\";\n                                            that.chunk.push(weixinrecordfield);\n                                            that.allName.push({ \"name\": weixinrecordfield.name, \"value\": weixinrecordfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.QRCodeField\":\n                                            var qrcodefield = new _index.Qrcodefield();\n                                            qrcodefield.parseHtml(htmlNode2);\n                                            qrcodefield.isblock = \"false\";\n                                            that.chunk.push(qrcodefield);\n                                            that.allName.push({ \"name\": qrcodefield.name, \"value\": qrcodefield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.MapField\":\n                                            var mapfield = new _index.Mapfield();\n                                            mapfield.parseHtml(htmlNode2);\n                                            mapfield.isblock = \"false\";\n                                            that.chunk.push(mapfield);\n                                            that.allName.push({ \"name\": mapfield.name, \"value\": mapfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.GenericWordField\":\n                                            var genericwordfield = new _index.Genericwordfield();\n                                            genericwordfield.parseHtml(htmlNode2);\n                                            genericwordfield.isblock = \"false\";\n                                            that.chunk.push(genericwordfield);\n                                            that.allName.push({ \"name\": genericwordfield.name, \"value\": genericwordfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.HTMLEditorField\":\n                                            var htmleditorfield = new _index.Htmleditorfield();\n                                            htmleditorfield.parseHtml(htmlNode2);\n                                            htmleditorfield.isblock = \"false\";\n                                            that.chunk.push(htmleditorfield);\n                                            that.allName.push({ \"name\": htmleditorfield.name, \"value\": htmleditorfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.FlowHistoryField\":\n                                            var flowhistoryfield = new _index.Flowhistoryfield();\n                                            flowhistoryfield.parseHtml(htmlNode2);\n                                            flowhistoryfield.isblock = \"false\";\n                                            that.chunk.push(flowhistoryfield);\n                                            that.allName.push({ \"name\": flowhistoryfield.name, \"value\": flowhistoryfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.FlowReminderHistoryField\":\n                                            var flowreminderhistoryfield = new _index.Flowreminderhistoryfield();\n                                            flowreminderhistoryfield.parseHtml(htmlNode2);\n                                            flowreminderhistoryfield.isblock = \"false\";\n                                            that.chunk.push(flowreminderhistoryfield);\n                                            that.allName.push({ \"name\": flowreminderhistoryfield.name, \"value\": flowreminderhistoryfield.fieldtype });\n\n                                            break;\n                                        case \"cn.myapps.runtime.dynaform.form.ejb.InformationFeedbackField\":\n                                            var informationfeedbackfield = new _index.Informationfeedbackfield();\n                                            informationfeedbackfield.parseHtml(htmlNode2);\n                                            informationfeedbackfield.isblock = \"false\";\n                                            that.chunk.push(informationfeedbackfield);\n                                            that.allName.push({ \"name\": informationfeedbackfield.name, \"value\": informationfeedbackfield.fieldtype });\n\n                                            break;\n                                        default:\n                                            break;\n                                    }\n                                    that.num++;\n                                    break;\n                                default:\n                                    console.log(\"no2\");\n                                    break;\n\n                            }\n                        };\n                        if (root2.hasChildNodes()) {\n                            for (var i = 0; i < root2.children.length; i++) {\n                                traversalNode2(root2.children[i]);\n                            }\n                        }\n                        break;\n                    default:\n                        console.log(\"no\");\n                        break;\n\n                }\n            };\n            if (root.hasChildNodes()) {\n                for (var i = 0; i < root.children.length; i++) {\n                    traversalNode(root.children[i]);\n                }\n            }\n            this.resetChunkPosition();\n            this.setAllProcesspreValue();\n        }\n    }, {\n        key: 'paint',\n        value: function paint() {\n            var _arguments = arguments,\n                _this3 = this;\n\n            $(this.panel).html(\"\");\n            var chunk = this.chunk;\n            var h = \"\";\n            for (var i = 0; i < chunk.length; i++) {\n                h += chunk[i].paint();\n            }\n            $(this.panel).html(h);\n\n            if ($(this.panel).find(\"div[class='inlineBlock']\").length > 0) {\n                $(this.panel).find(\"div[class='inlineBlock']\").each(function (ind, elm) {\n                    $(elm).off(\"dragstart\").on(\"dragstart\", function () {\n                        var ev = window.event || _arguments.callee.caller.arguments[0];\n                        ev.dataTransfer.setData(\"Text\", ev.target.id);\n                        _this3._currentElemId = ev.target.id;\n                        // setElementPosition\n                    });\n                });\n            }\n            if ($(this.panel).find(\"div[class='block']\").length > 0) {\n                $(this.panel).find(\"div[class='block']\").each(function (ind, elm) {\n                    $(elm).off(\"dragstart\").on(\"dragstart\", function () {\n                        var ev = window.event || _arguments.callee.caller.arguments[0];\n                        ev.dataTransfer.setData(\"Text\", ev.target.id);\n                        _this3._currentElemId = ev.target.id;\n                        // setElementPosition\n                    });\n                });\n            }\n            // if($(this.panel).find(\"f-textarea\").length>0){\n            //     $(this.panel).find(\"f-textarea\").each((ind,elm)=>{\n            //         $(elm).off(\"dragstart\").on(\"dragstart\",()=>{\n            //             let ev = window.event || arguments.callee.caller.arguments[0]\n            //             ev.dataTransfer.setData(\"Text\",ev.target.id);\n            //             this._currentElemId=ev.target.id;\n            //         })\n            //     })\n            // }\n            // if($(this.panel).find(\"f-radio\").length>0){\n            //     $(this.panel).find(\"f-radio\").each((ind,elm)=>{\n            //         $(elm).off(\"dragstart\").on(\"dragstart\",()=>{\n            //             let ev = window.event || arguments.callee.caller.arguments[0]\n            //             ev.dataTransfer.setData(\"Text\",ev.target.id);\n            //             this._currentElemId=ev.target.id;\n            //         })\n            //     })\n            // }\n            // if($(this.panel).find(\"f-checkbox\").length>0){\n            //     $(this.panel).find(\"f-checkbox\").each((ind,elm)=>{\n            //         $(elm).off(\"dragstart\").on(\"dragstart\",()=>{\n            //             let ev = window.event || arguments.callee.caller.arguments[0]\n            //             ev.dataTransfer.setData(\"Text\",ev.target.id);\n            //             this._currentElemId=ev.target.id;\n            //         })\n            //     })\n            // }\n            // if($(this.panel).find(\"f-data\").length>0){\n            //     $(this.panel).find(\"f-data\").each((ind,elm)=>{\n            //         $(elm).off(\"dragstart\").on(\"dragstart\",()=>{\n            //             let ev = window.event || arguments.callee.caller.arguments[0]\n            //             ev.dataTransfer.setData(\"Text\",ev.target.id);\n            //             this._currentElemId=ev.target.id;\n            //         })\n            //     })\n            // }\n            // if($(this.panel).find(\"f-select\").length>0){\n            //     $(this.panel).find(\"f-select\").each((ind,elm)=>{\n            //         $(elm).off(\"dragstart\").on(\"dragstart\",()=>{\n            //             let ev = window.event || arguments.callee.caller.arguments[0]\n            //             ev.dataTransfer.setData(\"Text\",ev.target.id);\n            //             this._currentElemId=ev.target.id;\n            //         })\n            //     })\n            // }\n            // if($(this.panel).find(\"f-dept\").length>0){\n            //     $(this.panel).find(\"f-dept\").each((ind,elm)=>{\n            //         $(elm).off(\"dragstart\").on(\"dragstart\",()=>{\n            //             let ev = window.event || arguments.callee.caller.arguments[0]\n            //             ev.dataTransfer.setData(\"Text\",ev.target.id);\n            //             this._currentElemId=ev.target.id;\n            //             // setElementPosition\n            //         })\n            //     })\n            // }\n            // if($(this.panel).find(\"f-selectaboutfield\").length>0){\n            //     $(this.panel).find(\"f-selectaboutfield\").each((ind,elm)=>{\n            //         $(elm).off(\"dragstart\").on(\"dragstart\",()=>{\n            //             let ev = window.event || arguments.callee.caller.arguments[0]\n            //             ev.dataTransfer.setData(\"Text\",ev.target.id);\n            //             this._currentElemId=ev.target.id;\n            //             // setElementPosition\n            //         })\n            //     })\n            // }\n            // if($(this.panel).find(\"f-treedepartmentfield\").length>0){\n            //     $(this.panel).find(\"f-treedepartmentfield\").each((ind,elm)=>{\n            //         $(elm).off(\"dragstart\").on(\"dragstart\",()=>{\n            //             let ev = window.event || arguments.callee.caller.arguments[0]\n            //             ev.dataTransfer.setData(\"Text\",ev.target.id);\n            //             this._currentElemId=ev.target.id;\n            //             // setElementPosition\n            //         })\n            //     })\n            // }\n            // if($(this.panel).find(\"f-userfield\").length>0){\n            //     $(this.panel).find(\"f-userfield\").each((ind,elm)=>{\n            //         $(elm).off(\"dragstart\").on(\"dragstart\",()=>{\n            //             let ev = window.event || arguments.callee.caller.arguments[0]\n            //             ev.dataTransfer.setData(\"Text\",ev.target.id);\n            //             this._currentElemId=ev.target.id;\n            //             // setElementPosition\n            //         })\n            //     })\n            // }\n            if ($(this.panel).find(\"f-flayout\").length > 0) {\n                $(this.panel).find(\"f-flayout\").each(function (ind, elm) {\n                    $(elm).off(\"drop\").on(\"drop\", function () {\n                        var ev = window.event || _arguments.callee.caller.arguments[0];\n                        ev.preventDefault();\n                        ev.stopPropagation();\n                        var data = ev.dataTransfer.getData(\"Text\");\n                        ev.target.appendChild(document.getElementById(data));\n                        //\n                        _this3._currentChunkId = ev.target.id;\n                        _this3.resetElementChunk();\n                        _this3.repaint();\n                    });\n                });\n            }\n            if ($(this.panel).find(\"f-clayout\").length > 0) {\n                $(this.panel).find(\"f-clayout\").each(function (ind, elm) {\n                    $(elm).off(\"drop\").on(\"drop\", function () {\n                        var ev = window.event || _arguments.callee.caller.arguments[0];\n                        ev.preventDefault();\n                        ev.stopPropagation();\n                        var data = ev.dataTransfer.getData(\"Text\");\n                        ev.target.appendChild(document.getElementById(data));\n                        //\n                        _this3._currentChunkId = ev.target.id;\n                        _this3.resetElementChunk();\n                        _this3.repaint();\n                    });\n                });\n            }\n        }\n    }, {\n        key: 'repaint',\n        value: function repaint() {\n            this.paint();\n        }\n        //鏀瑰彉榧犳爣鐘舵€乗n\n    }, {\n        key: 'changeStatues',\n        value: function changeStatues(statues) {\n\n            this._statues = statues;\n            switch (this._statues) {\n                case FormPanel.ACTION_NORMAL:\n                    this.panel.style.cursor = \"default\";\n                    break;\n                case FormPanel.ACTION_IN_ELEMENT:\n                    this.panel.style.cursor = \"move\";\n                    break;\n                case FormPanel.ACTION_IN_BASELINE:\n                    this.panel.style.cursor = \"n-resize\";\n                    break;\n                case FormPanel.ACTION_ARCHOR_UPPER_LEFT:\n                    this.panel.style.cursor = 'nw-resize';\n                    break;\n                case FormPanel.ACTION_ARCHOR_UPPER_RIGHT:\n                    this.panel.style.cursor = 'ne-resize';\n                    break;\n                case FormPanel.ACTION_ARCHOR_LOWER_LEFT:\n                    this.panel.style.cursor = 'sw-resize';\n                    break;\n                case FormPanel.ACTION_ARCHOR_LOWER_RIGHT:\n                    this.panel.style.cursor = 'se-resize';\n                    break;\n                default:\n                    this.panel.style.cursor = \"initial\";\n                    break;\n            }\n        }\n    }, {\n        key: 'handleMouseMove',\n        value: function handleMouseMove(e) {\n            var that = this;\n\n            var _that$getPositionByPa = that.getPositionByPanel2(that.panel, e.clientX, e.clientY),\n                x = _that$getPositionByPa.x,\n                y = _that$getPositionByPa.y;\n\n            if (that.isAllowDraw) {\n                console.log(\"1锛宮ove\");\n                //鍏佽缁樼敾锛屽綋鍓嶇湅搴旇鏄湁鍏冪礌闇€瑕佸姞杩沺anel涓殑鎯呭喌\n                var currentChunk = that.selectedChunk(x, y);\n                if (currentChunk) {\n                    if (currentChunk.scope == \"FlowLayout\" || currentChunk.scope == \"CellLayout\") {\n                        //褰撳墠榧犳爣涓嬮潰鏈夊竷灞€鍏冪礌锛岄偅灏辩户缁線涓嬫煡鎵撅紝鏄惁鏈変笅涓€灞傜殑甯冨眬鍏冪礌锛屾壘鍒版渶鍚庝竴灞傦紝鐒跺悗灏哻urrentchunk鏇挎崲鎴愬簳灞傜殑甯冨眬\n                        if (currentChunk.element.length > 0) {\n                            console.log(\"11,move\");\n                            var selectChunk = currentChunk.getSelectedElem(x, y); //褰撳墠鐨刓n                            if (selectChunk) {\n                                that._currentChunk = selectChunk;\n                            } else {\n                                this._currentChunk = currentChunk;\n                            }\n                            // that.getSelectedElem(currentChunk.element.length,x,y);\n                        } else {\n                            that._currentChunk = currentChunk;\n                        }\n                    } else {\n                        that._currentChunk = currentChunk;\n                    }\n                } else {\n                    that._currentChunk = null;\n                }\n                if (that.elem && !that._currentChunk) {\n                    console.log(2, \"move\");\n                    //鏈夋柊鍏冪礌闇€瑕佺敾锛屽苟涓斿綋鍓嶉紶鏍囦綅缃笅闈㈡病鏈夊尯鍩熷厓绱狅紱\n                    // console.log(x,y)\n\n                    var _that$getPositionByPa2 = that.getPositionByPanel(that.panel, e.clientX, e.clientY),\n                        _x = _that$getPositionByPa2.x,\n                        _y = _that$getPositionByPa2.y;\n\n                    that.elem.setProps({ x: _x, y: _y });\n                } else if (that.elem && that._currentChunk) {\n                    //鏈夋柊鍏冪礌闇€瑕佸姞杩涘竷灞€鍏冪礌涓璡n                    console.log(3, 'move');\n                }\n                // else if(that._currentChunk&&that._currentElem){\n                //     //閲嶆柊璋冩暣甯冨眬涓殑鏌愪釜鍏冪礌浣嶇疆\n                //     that._currentElem.setProps({_handlePointX:x,_handlePointY:y});\n                // }\n            } else {\n                //涓嶅厑璁哥粯鐢伙紝鎷栨嫿鍏冪礌鐨勬儏鍐礬n                console.log(\"4,move\");\n                if (that._currentChunk && !that._currentElem && !that._currentOnline) {\n                    //鎷栨嫿鍏冪礌鐨勬儏鍐礬n                    console.log(\"7,move\");\n\n                    that.changeStatues(FormPanel.ACTION_IN_ELEMENT);\n                    that._currentChunk.cursor = \"move\";\n                    // if(that._currentOnline !== null){\n                    //     //console.log(3)\n                    //     that.changeStatues(FormPanel.ACTION_IN_BASELINE);\n                    //     if(this._currentChunk.scope==\"tablelayout\"){\n                    //         that._currentChunk.trs[that._currentOnline].height = that._currentChunk.trs[that._currentOnline].heightPre + y - that._currentChunk._handlePointY;\n                    //     }else if(this._currentChunk.scope==\"FlowLayout\"){\n                    //         this._currentChunk.height=that._currentChunk.heightPre + y - that._currentChunk._handlePointY\n                    //     }\n\n                    //     //console.log(x,y)\n                    // }\n                    that.repaint();\n                } else if (that._currentChunk && that._currentElem && !that._currentOnline) {\n                    console.log(5, \"move\");\n\n                    //鎷栨嫿甯冨眬鍏冪礌涓嬬殑鍏冪礌\n                    that.changeStatues(FormPanel.ACTION_IN_ELEMENT);\n                    that._currentElem.cursor = \"move\";\n                    console.log(this._currentOnline);\n                    // if(that._currentOnline !== null){\n                    //     //console.log(3)\n                    //     that.changeStatues(FormPanel.ACTION_IN_BASELINE);\n                    //     if(this._currentChunk.scope==\"tablelayout\"){\n                    //         that._currentChunk.trs[that._currentOnline].height = that._currentChunk.trs[that._currentOnline].heightPre + y - that._currentChunk._handlePointY;\n                    //     }else if(this._currentChunk.scope==\"FlowLayout\"){\n                    //         this._currentChunk.height = this._currentChunk.heightPre+ y - that._currentChunk._handlePointY;\n\n                    //         this._currentElem.height=that._currentElem.heightPre + y - that._currentElem._handlePointY;\n                    //     }\n\n                    //     //console.log(x,y)\n                    //     that.repaint();\n\n                    // }\n                } else if (that._currentChunk && !that._currentElem && that._currentOnline) {\n                    console.log(\"6,move\");\n\n                    that.changeStatues(FormPanel.ACTION_IN_BASELINE);\n                    if (that._currentOnline.scope == \"tablelayout\") {\n                        // that._currentChunk.trs[that._currentOnline].height = that._currentChunk.trs[that._currentOnline].heightPre + y - that._currentChunk._handlePointY;\n                    } else if (that._currentOnline.scope == \"FlowLayout\" || that._currentOnline.scope == \"CellLayout\") {\n                        that._currentOnline.height = that._currentOnline.heightPre + y - that._currentOnline._handlePointY;\n\n                        this._currentChunk.height = that._currentChunk.heightPre + y - that._currentChunk._handlePointY;\n                    } else if (that._currentOnline.scope == \"textarea\") {\n\n                        that.changeStatues(FormPanel.ACTION_ARCHOR_LOWER_RIGHT);\n                        that._currentOnline.width = that._currentOnline.widthPre + x - that._currentOnline._handlePointX;\n                        that._currentOnline.height = that._currentOnline.heightPre + y - that._currentOnline._handlePointY;\n                        this._currentChunk.height = that._currentChunk.heightPre + y - that._currentChunk._handlePointY;\n                    }\n\n                    //console.log(x,y)\n                    this.resetChunkPosition();\n                    that.repaint();\n                } else {\n                    console.log(\"move,8\");\n                }\n            }\n        }\n        //鎷栨嫿鍏冪礌鐨勮竟绾挎椂锛岄噸鏂扮‘璁ゅ悇杈圭嚎鐨勪綅缃甛n\n    }, {\n        key: 'resetChunkChildren',\n        value: function resetChunkChildren(x, y) {\n            var _this4 = this;\n\n            //鏀瑰彉鍚屼竴涓竷灞€鍏冪礌鐨勫悇杈圭嚎浣嶇疆\n            if (this._currentChunk.scope == \"tableLayout\") {\n                var currentChunkChildren = this._currentChunk.trs;\n                var length = currentChunkChildren.length;\n                var moveY = y - this._currentChunk._handlePointY;\n                var height = 0;\n                var i = this._currentOnline + 1;\n                currentChunkChildren[this._currentOnline].resetTdLayout(moveY);\n                if (i == length) {\n                    height = currentChunkChildren[i - 1].y - currentChunkChildren[0].y + currentChunkChildren[i - 1].height;\n                }\n                // this._currentOnline._currentOnline.height = this._currentOnline._currentOnline.heightPre + y - this._currentChunk._handlePointY;\n                for (; i < length; i++) {\n                    currentChunkChildren[i].y = currentChunkChildren[i].yPre + moveY; //淇敼姣忎釜tr鐨剏\n                    // currentChunkChildren[i].height += moveY;\n                    // currentChunkChildren[i].resetTdLayout(moveY)\n                    console.log(i);\n                    if (i == length - 1) {\n                        height = currentChunkChildren[i].y - currentChunkChildren[0].y + currentChunkChildren[i].height;\n                    }\n                }\n                this._currentChunk.height = height;\n                //鏀瑰彉鍥犳鍏冪礌鏀瑰彉鐨勫叾浠栧厓绱犵殑鍧愭爣闂\n                var index = null;\n                this.chunk.forEach(function (elm, ind) {\n                    if (elm.id == _this4._currentChunk.id) {\n                        index = ind;\n                    }\n                });\n                this.chunk.forEach(function (el, i) {\n                    if (el.id !== _this4._currentChunk.id && i > index) {\n                        el.y += moveY;\n                        el.resetTrLayout(moveY);\n                    }\n                });\n            } else if (this._currentChunk.scope == \"FlowLayout\" || this._currentChunk.scope == \"CellLayout\") {\n                // let moveY=y - this._currentChunk._handlePointY;\n                // this._currentChunk.height\n            }\n        }\n        //鑾峰緱榧犳爣鍩轰簬panel鐨勫潗鏍囧€糪n        //鐢ㄤ簬鏂扮敾杩沺anel鐨勫厓绱犵殑鐩稿浜巔anel鐨勫潗鏍囧€�,1.6涔嬫墍浠ョ洿鎺ユ嬁鍏冪礌鐨剋idth锛屾槸鍥犱负鍦╟hunk涓褰曠殑width娌℃湁杈规鐨勬嵁閲岋紝鎵€浠ョ畻涓婅繖涓猏n\n    }, {\n        key: 'getPositionByPanel',\n        value: function getPositionByPanel(panel) {\n            var panelWidth = $(panel).width();\n            var width = 0;\n            var height = 0;\n            var currentHeight = 0;\n            var that = this;\n            if ($(panel)[0].children.length > 0) {\n                var length = $(panel)[0].children.length;\n                height = $($(panel)[0].children[0]).height();\n                for (var i = 0; i < length; i++) {\n                    width += $($(panel)[0].children[i]).width();\n                    if (height == 0) {\n                        height = $($(panel)[0].children[i]).height();\n                    }\n                    if (height < $($(panel)[0].children[i]).height()) {\n                        height = $($(panel)[0].children[i]).height();\n                    }\n                    if (width >= panelWidth - 5 && width <= 2 * panelWidth && i != 0) {\n                        width = 0;\n                        i -= 1;\n                        currentHeight += height;\n                        height = 0;\n                    }\n                }\n                //灏嗙幇鏈夌殑鍏冪礌鐨勫楂樺惊鐜簡涔嬪悗锛屽彇鍒版渶楂樺拰鏈€闀跨殑锛屽啀鎷縠lem鐨勭畻涓婂幓\n                if (width + this.elem.width > panelWidth) {\n                    width = 0;\n                    currentHeight += height;\n                }\n            }\n            return {\n                x: width,\n                y: currentHeight\n            };\n        }\n        //榧犳爣鎸変笅鐨勬椂鍊欒幏寰楅紶鏍囩偣鐩稿浜巔anel鐨勫潗鏍嘰n\n    }, {\n        key: 'getPositionByPanel2',\n        value: function getPositionByPanel2(panel, x, y) {\n            var bbox = panel.getBoundingClientRect();\n            return {\n                x: (x - bbox.left) * ($(panel).width() / bbox.width),\n                y: (y - bbox.top) * ($(panel).height() / bbox.height)\n            };\n        }\n    }, {\n        key: 'setElemPosition',\n        value: function setElemPosition(elem) {\n            var _getPositionByPanel = this.getPositionByPanel(this.panel),\n                x = _getPositionByPanel.x,\n                y = _getPositionByPanel.y;\n\n            elem.setProps({ x: x, y: y });\n        }\n    }, {\n        key: 'handleMouseUp',\n        value: function handleMouseUp(e) {\n            console.log(\"up\");\n\n            var _getPositionByPanel2 = this.getPositionByPanel2(this.panel, e.clientX, e.clientY),\n                x = _getPositionByPanel2.x,\n                y = _getPositionByPanel2.y;\n\n            var that = this;\n            if (that.elem && this._currentChunk) {\n                console.log(\"up\", 1);\n                //鏈夎鏀捐繘甯冨眬鐨勫厓绱燶n                this.addElementToChunk(this.elem);\n                this._currentChunk.resetChunkElemPosition();\n                this.repaint();\n                this.elem = null;\n                this._currentChunk = null;\n            } else if (that.elem && !this._currentChunk) {\n                console.log(\"up\", 2);\n                //鏈夎鏀捐繘panel鐨勫厓绱燶n                this.addElement(this.elem);\n                this.repaint();\n                this.elem = null;\n            } else if (this._currentChunk && this._currentElem && this._currentOnline) {\n                console.log(\"up\", 3);\n\n                //鏈夎鍦ㄥ竷灞€涓皟鏁翠綅缃殑鍏冪礌\n                this.isAllowDraw = false;\n                this.resetElementToChunk();\n\n                this.repaint();\n                this._currentChunk = null;\n                this._currentElem = null;\n                this._currentOnline = null;\n            } else if (this._currentOnline !== null && this._currentChunk) {\n                console.log(\"up\", 4);\n\n                //鏈夎璋冩暣杈圭嚎鐨�(甯冨眬)鍏冪礌\n                console.log(this._currentChunk);\n                console.log(x, y);\n                this.resetChunkChildren(x, y);\n                this.repaint();\n                this._currentChunk = null;\n                this._currentElem = null;\n                this._currentOnline = null;\n            } else {\n                console.log(\"up\", 5);\n                this.isAllowDraw = false;\n                // this._currentChunk=null;\n                // this._currentElem=null;\n                // this._currentOnline=null;\n                // if(this._currentChunk){\n                //     this._currentChunk=null;\n                // }\n            }\n        }\n    }, {\n        key: 'handleMouseDown',\n        value: function handleMouseDown(e) {\n            var _getPositionByPanel3 = this.getPositionByPanel2(this.panel, e.clientX, e.clientY),\n                x = _getPositionByPanel3.x,\n                y = _getPositionByPanel3.y;\n\n            console.log(x, y);\n            var currentChunk = this.selectedChunk(x, y);\n            this._currentChunk = currentChunk;\n            if (e.button == 0) {\n                var menu = _Menu2.default.getInstance();\n                //console.log(menu);\n                if (menu.getProp('hasMenu') && menu.getProp('isShowMenu')) {\n                    menu.hideMenu();\n                }\n                if (currentChunk) {\n                    //褰撳墠榧犳爣鐐瑰嚮鐨勬槸鍖哄煙\n                    console.log(\"1,down\");\n                    this.isAllowDraw = false;\n                    this._currentPropElem = this._currentChunk;\n                    this._currentChunk.setProps({ _handlePointX: x, _handlePointY: y, isEdit: true });\n                    if (this._currentChunk.scope == \"tablelayout\") {\n                        var currentElementT = this.selectedTableChunkElement(x, y);\n                        var currentOnlineT = this.isOnBaseLine(this._currentChunk, x, y);\n                        console.log(currentOnlineT);\n                        if (currentElementT) {\n\n                            this._currentElem = currentElementT;\n                            this._currentPropElem = this._currentElem;\n\n                            this._currentElem.setProps({ _handlePointX: x, _handlePointY: y });\n                        } else if (currentOnlineT !== null) {\n                            this._currentOnline = currentOnlineT;\n                            this.savePreX(currentChunk.trs);\n                            // this._currentOnline._currentOnline.xPre= this._currentOnline._currentOnline.x;\n                            // this._currentOnline._currentOnline.yPre= this._currentOnline._currentOnline.y;\n                            this._currentChunk.trs[this._currentOnline].widthPre = this._currentChunk.trs[this._currentOnline].width;\n                            this._currentChunk.trs[this._currentOnline].heightPre = this._currentChunk.trs[this._currentOnline].height;\n                        }\n                    } else if (this._currentChunk.scope == \"FlowLayout\" || this._currentChunk.scope == \"CellLayout\") {\n                        var currentElementF = this.selectedChunkElement(x, y);\n                        var currentOnlineF = this.isOnBaseLine(this._currentChunk, x, y);\n                        console.log(currentElementF);\n                        if (currentElementF) {\n                            //褰撳墠閫変腑鍏冪礌锛岃繖涓厓绱犳槸甯冨眬涓嬬殑鍏冪礌\n                            // this.isAllowDraw=true;\n                            this._currentElem = currentElementF;\n                            this._currentPropElem = this._currentElem;\n\n                            this._currentElem.setProps({ preX: x, preY: y });\n                        } else if (currentOnlineF) {\n                            //褰撳墠閫変腑甯冨眬鐨勮竟绾縗n                            this._currentOnline = currentOnlineF;\n                            this._currentOnline.heightPre = this._currentOnline.height;\n                            this._currentChunk.heightPre = this._currentChunk.height;\n                            this._currentOnline.setProps({ _handlePointX: x, _handlePointY: y, isEdit: true });\n                            if (this._currentOnline.scope == \"textarea\") {\n                                //姝ゆ椂搴旇瀵瑰琛屾枃鏈鐨勬墍鏈変笂绾у竷灞€鍏冪礌淇濆瓨鍊硷紝鐒跺悗鍦╩ove涓湪杩涜鏀瑰彉\n                                // this.setSubData(x,y);\n                                // console.log(this.changeChunk,\"changechunk\");\n                                this._currentOnline.widthPre = this._currentOnline.width;\n                            }\n                        } else {\n                            this._currentElem = currentElementF;\n\n                            // //閫変腑鐨勬槸甯冨眬涓嬪竷灞€鐨勮竟绾縗n                            // currentOnlineF=this.isOnBaseLine(this._currentElem,x,y);\n                            // this._currentElem.setProps({_handlePointX:x,_handlePointY:y});\n                            // this._currentPropElem=this._currentElem;\n\n                            // this._currentElem.heightPre= this._currentElem.height;\n\n                            // this._currentChunk.heightPre= this._currentChunk.height;\n                            // this._currentOnline=currentOnlineF;\n                            // console.log(currentOnlineF)\n                        }\n                    } else if (this._currentChunk.scope == \"textarea\") {\n\n                        var currentOnlineTe = this._currentChunk.isOnBaseLine(x, y);\n                        if (currentOnlineTe) {\n                            this._currentOnline = currentOnlineTe;\n                            this._currentOnline.heightPre = this._currentOnline.height;\n                            this._currentOnline.widthPre = this._currentOnline.width;\n                            this._currentOnline.setProps({ _handlePointX: x, _handlePointY: y, isEdit: true });\n                        }\n                    }\n                    // this._currentElem.setProps({x:x,y:y});\n                    this.changeStatues(FormPanel.ACTION_IN_ELEMENT);\n                } else {\n                    this.isAllowDraw = true;\n                    this.changeStatues(FormPanel.ACTION_NORMAL);\n                }\n            } else if (e.button == 2) {\n                console.log(\"鐐瑰嚮鐨勯紶鏍囧彸閿甛");\n                var _menu = _Menu2.default.getInstance();\n                if (currentChunk) {\n                    this.isAllowDraw = false;\n                    this.stopElementDefaultMenu(this.panel); //闃绘鍗曚釜鐨則d榛樿浜嬩欢涓嶇敓鏁堬紝鍏堟殏鏃堕樆姝㈡暣涓猵anel鐨勯粯璁や簨浠禱n\n                    if (currentChunk && currentChunk.scope == \"tablelayout\") {\n                        // const target = e.target;\n                        var _selectedChunkPart = this.selectedChunkPart(x, y),\n                            nowRowIndex = _selectedChunkPart.nowRowIndex,\n                            nowColIndex = _selectedChunkPart.nowColIndex,\n                            realRowIndex = _selectedChunkPart.realRowIndex;\n\n                        this.nowRowIndex = nowRowIndex;\n                        this.nowColIndex = nowColIndex;\n                        this.realRowIndex = realRowIndex;\n                        this.stopElementDefaultMenu(this.panel); //闃绘鍗曚釜鐨則d榛樿浜嬩欢涓嶇敓鏁堬紝鍏堟殏鏃堕樆姝㈡暣涓猵anel鐨勯粯璁や簨浠禱n                        console.log(this._currentChunk);\n                        if (this._currentChunk && this._currentChunk.isSelected(x, y)) {\n\n                            _menu.setProps({ target: e, form: this });\n                            console.log(\"yes\", this);\n\n                            console.log(\"yes\", this._currentChunk);\n                            _menu.showMenu(\"table\");\n                        } else {\n                            _menu.hideMenu();\n                        }\n                    } else {\n\n                        if (this._currentChunk || this._currentElem) {\n\n                            _menu.setProps({ target: e, form: this });\n                            _menu.showMenu(\"flow\");\n                        } else {\n                            _menu.hideMenu();\n                        }\n                    }\n                } else {\n                    return false;\n                }\n            } else {\n                return false;\n            }\n            console.log(\"down\");\n        }\n        //瀵逛簬甯冨眬鍐呯殑澶氳鏂囨湰妗嗭紝闇€瑕佷繚瀛樺琛屾枃鏈鐨勪笂绾х殑涓€浜涘弬鏁帮紝鐒跺悗缁檓ove鐨勬椂鍊欑敤\n\n    }, {\n        key: 'setSubData',\n        value: function setSubData(x, y) {\n            this.changeChunk = this._currentChunk.getChangeChunk(x, y);\n        }\n    }, {\n        key: 'savePreX',\n        value: function savePreX(currentChunkChildren) {\n            var length = currentChunkChildren.length;\n            for (var i = 0; i < length; i++) {\n                currentChunkChildren[i].xPre = currentChunkChildren[i].x;\n                currentChunkChildren[i].yPre = currentChunkChildren[i].y;\n            }\n        }\n        //灞忚斀娴忚鍣ㄩ粯璁ょ殑鍙抽敭鑿滃崟\n\n    }, {\n        key: 'stopElementDefaultMenu',\n        value: function stopElementDefaultMenu(target) {\n            target.oncontextmenu = function (ev) {\n                return false; //灞忚斀鍙抽敭鑿滃崟\n            };\n        }\n        //鍒ゆ柇榧犳爣鎸変笅鐨勪綅缃湪涓嶅湪缁勪欢鐨勮竟绾夸笂锛岃繖涓簲璇ョ粰姣忎釜甯冨眬缁勪欢鏂规硶锛岀劧鍚庤浠栦滑鑷鍒ゆ柇\n\n    }, {\n        key: 'isOnBaseLine',\n        value: function isOnBaseLine(currentChunk, x, y) {\n            var current = null;\n            for (var i = 0; i < this.chunk.length; i++) {\n                if (current) {\n                    return current;\n                }\n                if (this.chunk[i].isOnBaseLine) {\n                    current = this.chunk[i].isOnBaseLine(x, y);\n                }\n            }\n            if (current) {\n                return current;\n            }\n            //console.log(currentChunk)\n            // const scope=currentChunk.scope;\n            // switch(scope){\n            //     case 'tablelayout':\n            //         let rows=currentChunk.rows;\n            //         for(let i=0;i<rows;i++){\n            //             if(y<currentChunk.trs[i].y+currentChunk.trs[i].height+5 && y>currentChunk.trs[i].y+currentChunk.trs[i].height-5){\n            //                 return i\n            //                 // {\n            //                 //     i:i,\n            //                     // _currentOnline:currentChunk.trs[i],\n            //                     // _currentChunkChildren:currentChunk.trs\n            //                 // };\n\n            //             }\n            //         } \n            //         break;\n            //     case 'FlowLayout':\n            //         if(y<currentChunk.y+currentChunk.height+5 && y>currentChunk.y+currentChunk.height-5){\n            //             return true\n\n            //         }\n            //         break;\n            //     default:\n            //         break;\n\n            // }\n\n            return null;\n        }\n        //閲嶆柊璁$畻鎵€鏈夊厓绱犵殑鍧愭爣鍊糪n\n    }, {\n        key: 'resetChunkPosition',\n        value: function resetChunkPosition() {\n            var x = 0,\n                y = 0;\n            var bigHeight = 0;\n            for (var i = 0; i < this.chunk.length; i++) {\n                if (bigHeight < this.chunk[i].height) bigHeight = this.chunk[i].height;\n                this.chunk[i].x = x;this.chunk[i].y = y;\n                if (this.chunk[i].scope == \"FlowLayout\" || this.chunk[i].scope == \"CellLayout\") {\n                    this.chunk[i].resetChunkElemPosition();\n                }\n                x += this.chunk[i].width;\n                if (this.chunk[i + 1]) {\n                    if (this.chunk[i + 1].width + x > this.width) {\n                        x = 0;y = bigHeight + this.chunk[i].y;\n                        bigHeight = 0;\n                    }\n                }\n            }\n        }\n        //甯冨眬鍐呯殑鍏冪礌閲嶆柊纭畾鎵€灞炲竷灞€(鐢ㄤ簬琛ㄦ牸甯冨眬鍏冪礌閲嶆柊纭畾鎺т欢鎵€灞炲崟鍏冩牸)\n\n    }, {\n        key: 'resetElementToChunk',\n        value: function resetElementToChunk() {\n            if (this._currentChunk.resetElementToChunk) this._currentChunk.resetElementToChunk(this._currentElem);\n            console.log(this.chunk);\n        }\n        //甯冨眬鍐呯殑鍏冪礌閲嶆柊纭畾鎵€灞炲竷灞€(鏆傛椂鐢ㄤ簬flowlayout甯冨眬锛屼笉纭畾鏄惁閫氱敤)\n\n    }, {\n        key: 'resetElementChunk',\n        value: function resetElementChunk() {\n            //鍏堟嬁鍒癳vent涓嬬殑id锛岀劧鍚庡垽鏂槸涓嶆槸瀹瑰櫒id锛孿n            var ev = window.event || arguments.callee.caller.arguments[0];\n            var data = ev.dataTransfer.getData(\"Text\");\n            var delElm = null;\n            var isChunk = false;\n            //鍏堝垽鏂粰鐨刢hunkid鏄竷灞€鍏冪礌\n            if (this._currentChunkId) {\n                for (var j = 0; j < this.chunk.length; j++) {\n                    if (this.chunk[j].id == this._currentChunkId && (this.chunk[j].scope == \"FlowLayout\" || this.chunk[j].scope == \"CellLayout\")) {\n                        isChunk = true;\n                        break;\n                    } else if (this.chunk[j].element && this.chunk[j].element.length > 0) {\n                        isChunk = this.chunk[j].elemIsChunk(this._currentChunkId);\n                    } else {\n                        isChunk = false;\n                    }\n                }\n            }\n            //鍏堝惊鐜痶runk锛岀劧鍚庢壘鍒板搴攊d鐨勫厓绱狅紝鍚ц繖涓厓绱犱粠杩欎釜鍖哄煙涓垹闄n            if (this._currentChunkId && this._currentElemId && isChunk) {\n                for (var i = 0; i < this.chunk.length; i++) {\n                    if (this.chunk[i].id == this._currentElemId) {\n                        delElm = this.chunk[i];\n                        this.chunk.splice(i, 1);\n                        this._currentElemId = null;\n\n                        break;\n                    } else {\n                        if (this.chunk[i].element && this.chunk[i].element.length > 0) {\n                            delElm = this.chunk[i].delElem(this._currentElemId);\n                            if (delElm) {\n                                this._currentElemId = null;\n                            }\n                        }\n                    }\n                }\n\n                if (this._currentChunkId == \"formBoard\" && delElm) {\n                    //鍐嶆妸杩欎釜鍏冪礌鍔犲埌瀹瑰櫒鍐匼n                    delElm.isblock = \"false\";\n                    this.addElement(delElm);\n                    this._currentChunkId = null;\n                } else if (delElm) {\n                    // 鐒跺悗鍦ㄥ惊鐜痶runk锛屽皢杩欎釜鍏冪礌鍔犲叆鍒板搴攊d鐨勫尯鍩熶腑\n                    for (var a = 0; a < this.chunk.length; a++) {\n                        if (this.chunk[a].id == this._currentChunkId) {\n                            if (this.chunk[a].scope == \"FlowLayout\") {\n                                delElm.isblock = \"false\";\n                                delElm.width = delElm.preWidth ? delElm.preWidth : delElm.width;\n                            } else if (this.chunk[a].scope == \"CellLayout\") {\n                                delElm.isblock = \"true\";\n                                delElm.preWidth = delElm.width;\n                                delElm.width = this.width;\n                            }\n                            this.chunk[a].element.push(delElm);\n                            this.chunk[a].resetChunkElemPosition();\n                            this._currentChunkId = null;\n                        } else {\n                            if (this.chunk[a].element && this.chunk[a].element.length > 0) {\n                                this.chunk[a].addElem(this._currentChunkId, delElm);\n                                this._currentChunkId = null;\n                            }\n                        }\n                    }\n                }\n                this.resetChunkPosition();\n            } else {\n                return false;\n            }\n        }\n        //榧犳爣鎸変笅鍒ゆ柇鏄惁閫夋嫨鍖哄煙//姝ゆ椂杩樿鍒ゆ柇褰撳墠榧犳爣鏄惁鍦ㄥ竷灞€涓嬪竷灞€鍖哄煙\n\n    }, {\n        key: 'selectedChunk',\n        value: function selectedChunk(x, y) {\n            var len = this.chunk.length;\n            for (var i = 0; i < len; i++) {\n                if (this.chunk[i].x - 5 < x && this.chunk[i].x + this.chunk[i].width + 5 > x && this.chunk[i].y - 5 < y && this.chunk[i].y + this.chunk[i].height + 5 > y) {\n                    // if(this.chunk.element.length>0){\n                    //     let elemLength=this.chunk.element.length;\n\n                    // }\n                    return this.chunk[i];\n                }\n            }\n            return false;\n        }\n        // getSelectedElem(length,x,y){\n        //     for(let j=0;j<length;j++){\n        //         if(this._currentChunk.element[j].scope==\"FlowLayout\"){\n        //             if(this._currentChunk.element[j].x-5<x&&this._currentChunk.element[j].x+this._currentChunk.element[j].width+5>x&&this._currentChunk.element[j].y-5<y&&this._currentChunk.element[j].y+this._currentChunk.element[j].height+5>y){\n        //                 return this._currentChunk.element[j];\n        //             }  \n        //         }\n\n        //     }\n        // }\n        /**\r\n         * 纭褰撳墠榧犳爣閫変腑鐨勬槸table涓嬮潰鐨勫摢涓€涓猼r,鍝竴涓猼d\r\n         * 2019.12.13 鍦╰r灞備笉杩涜鍒ゆ柇锛屽洜涓哄悎骞跺崟鍏冩牸涔嬪悗tr鐨勯珮搴︽槸涓嶅彉鐨勩€備絾鏄鏋滀笉鍦╰r灞傝繘琛屽垽鏂紝杩欐牱灏辨嬁涓嶅埌姝g‘鐨勮鏁帮紝涓嶈兘鍦ㄨ繖閲屾嬁鍒版纭殑琛屾暟浼犲洖鍘伙紝\r\n         *  */\n\n    }, {\n        key: 'selectedChunkPart',\n        value: function selectedChunkPart(x, y) {\n            var currentChunk = this._currentChunk;\n            var row = null,\n                col = null,\n                realrow = null;\n            if (currentChunk) {\n                var len = currentChunk.trs.length;\n                for (var i = 0; i < len; i++) {\n                    // if(currentChunk.trs[i].y-5<y&&currentChunk.trs[i].y+currentChunk.trs[i].height+5>y){\n                    //     row=currentChunk.trs[i].rowIndex;\n                    // }\n                    for (var j = 0; j < currentChunk.trs[i].tds.length; j++) {\n                        if (currentChunk.trs[i].tds[j].x - 5 < x && currentChunk.trs[i].tds[j].x + currentChunk.trs[i].tds[j].width + 5 > x && currentChunk.trs[i].tds[j].y - 5 < y && currentChunk.trs[i].tds[j].y + currentChunk.trs[i].tds[j].height + 5 > y) {\n                            // console.log({\"nowRowIndex\":i,\"nowColIndex\":j})\n                            if (currentChunk.trs[i].tds[j].rowspan !== 1) {\n                                for (var k = 0; k < len; k++) {\n                                    if (currentChunk.trs[k].y - 5 < y && currentChunk.trs[k].y + currentChunk.trs[k].height + 5 > y) {\n                                        realrow = currentChunk.trs[k].rowIndex;\n                                        this.cellHaveRowspan = true;\n                                    }\n                                }\n                            } else {\n                                this.cellHaveRowspan = false;\n                                realrow = currentChunk.trs[i].tds[j].rowIndex;\n                            }\n                            row = currentChunk.trs[i].tds[j].rowIndex;\n                            col = currentChunk.trs[i].tds[j].colIndex;\n                            return { \"nowRowIndex\": row, \"nowColIndex\": col, \"realRowIndex\": realrow };\n                        }\n                    }\n                    // return i;\n                    // }\n                }\n                return false;\n            }\n        }\n        //鍒ゆ柇榧犳爣鎸変笅鏄惁閫夋嫨琛ㄦ牸甯冨眬鍖哄煙涓嬬殑鍏冪礌\n\n    }, {\n        key: 'selectedTableChunkElement',\n        value: function selectedTableChunkElement(x, y) {\n            if (this._currentChunk.element.length > 0) {\n                var elementLength = this._currentChunk.element.length;\n                for (var j = 0; j < elementLength; j++) {\n                    if (this._currentChunk.element[j].x < x && this._currentChunk.element[j].x + this._currentChunk.element[j].width > x && this._currentChunk.element[j].y < y && this._currentChunk.element[j].y + this._currentChunk.element[j].height > y) {\n                        var element = this._currentChunk.element[j]; //table涓嬮潰鐨勬煇涓皬鍖哄煙\n                        var elementFirst = this._currentChunk.element[0];\n                        if (element.childrens.length > 0) {\n                            var childrensLength = element.childrens.length;\n                            for (var k = 0; k < childrensLength; k++) {\n                                if (elementFirst.x + element.childrens[k].x < x && elementFirst.x + element.childrens[k].x + element.childrens[k].width * (j % this._currentChunk.cols + 1) > x && elementFirst.y + element.childrens[k].y < y && elementFirst.y + element.childrens[k].y + element.childrens[k].height * Math.ceil((j + 1) / this._currentChunk.rows) > y) {\n                                    return element.childrens[k];\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n            return false;\n        }\n        //鍒ゆ柇榧犳爣鎸変笅鏄惁閫夋嫨鍏冪礌\n        /**\r\n         * 鐜板湪鐪嬫潵涓昏鏄敤鍦ㄩ紶鏍囨寜涓嬬殑鏃跺€橽r\n         *搴旇鍦ㄦ瘡涓竷灞€鍏冪礌涓啓涓€涓柟娉曪紝鍒ゆ柇褰撳墠榧犳爣鏄惁鍦ㄨ嚜宸变笅闈㈢殑鍏冪礌涓紝杩斿洖鍏冪礌鎴栬€協alse\r\n         */\n\n    }, {\n        key: 'selectedChunkElement',\n        value: function selectedChunkElement(x, y) {\n            if (this._currentChunk.element.length > 0) {\n                // let elementLength=this._currentChunk.element.length\n                // for(let j=0;j<elementLength;j++){\n                //     if(this._currentChunk.element[j].x<x&&this._currentChunk.element[j].x+this._currentChunk.element[j].width>x&&this._currentChunk.element[j].y<y&&this._currentChunk.element[j].y+this._currentChunk.element[j].height>y){\n                //         //鍒ゆ柇濡傛灉鏄竷灞€涓嬬殑甯冨眬锛岃杩斿洖涓嬩竴灞傚竷灞€\n                //         // if(this._currentChunk.element[j].scope==\"FlowLayout\" && this._currentChunk.element[j].element.length>0){\n                //         //     for(let i=0;i<this._currentChunk.element[j].element.length;i++){\n                //         //         if(this._currentChunk.element[j].element[i].x<x && this._currentChunk.element[j].element[i].x+this._currentChunk.element[j].element[i].width>x && this._currentChunk.element[j].element[i].y<y && this._currentChunk.element[j].element[i].y+this._currentChunk.element[j].element[i].height>y){\n                //         //             return this._currentChunk.element[j].element[i];\n                //         //         }\n                //         //     }\n                //         // }\n                //         return this._currentChunk.element[j];\n                //     }\n                // }   \n                var currentElem = this._currentChunk.selectedElement(x, y);\n                console.log(currentElem, \"榧犳爣鎸変笅鐨勫厓绱燶");\n                return currentElem;\n            }\n            return false;\n        }\n        //娣诲姞闈炲竷灞€鍏冪礌鍒板尯鍩熶腑\n\n    }, {\n        key: 'addElement',\n        value: function addElement(elem) {\n            this.chunk.push(elem);\n            this.refreshTreeList();\n        }\n        //娣诲姞闈炲竷灞€鍏冪礌鍒板竷灞€鍏冪礌涓璡n\n    }, {\n        key: 'addElementToChunk',\n        value: function addElementToChunk(elem) {\n            elem.zIndex = 100;\n\n            var _currentChunk$setElem = this._currentChunk.setElementPosition(elem),\n                x = _currentChunk$setElem.x,\n                y = _currentChunk$setElem.y;\n\n            elem.x = x;elem.y = y;\n            if (elem.scope == \"FlowLayout\" || elem.scope == \"CellLayout\") {\n                elem.height = this._currentChunk.getnoUseHeight() * 0.8;\n                // elem.height=elem.height\n            }\n            this._currentChunk.addElement(elem);\n            this.refreshTreeList();\n        }\n    }, {\n        key: 'refreshTreeList',\n        value: function refreshTreeList() {\n            var tree = _Tree2.default.getInstance();\n            tree.render();\n        }\n    }, {\n        key: 'transformToTree',\n        value: function transformToTree() {\n            var tree = [];\n            var len = this.chunk.length;\n            for (var i = 0; i < len; i++) {\n                var data = this.chunk[i].getNodeConfigInfo();\n                tree.push(data);\n            }\n            if (tree.length == 0) {\n                return false;\n            }\n            return tree;\n        }\n    }, {\n        key: 'getCurrToEdit',\n        value: function getCurrToEdit() {\n            if (this._currentChunk && this._currentElem) {\n                return this._currentElem;\n            } else if (this._currentChunk && !this._currentElem) {\n                return this._currentChunk;\n            }\n            // else{\n            // return this._currentPropElem;\n            // }\n        }\n    }, {\n        key: 'clearCurrToEdit',\n        value: function clearCurrToEdit() {\n            if (this._currentChunk) {\n                this._currentChunk.setProps({ isEdit: false });\n            }\n            this._currentChunk = null;\n            this.elem = null;\n        }\n        //鑾峰彇鎵€鏈夐儴闂ㄩ€夋嫨妗嗙殑瀛楁\n\n    }, {\n        key: 'getallDeptName',\n        value: function getallDeptName(name) {\n            var allDeptName = {};\n            for (var i = 0; i < this.chunk.length; i++) {\n                if (this.chunk[i].scope == \"dept\") {\n                    allDeptName[this.chunk[i].name] = \"false\";\n                    //allDeptName.push(data)\n                } else if (this.chunk[i].scope == \"FlowLayout\" || this.chunk[i].scope == \"CellLayout\") {\n                    allDeptName = _extends({}, allDeptName, this.chunk[i].getallDeptName());\n                }\n            }\n            delete allDeptName[name];\n            return allDeptName;\n        }\n        //鍒犻櫎鏈€澶栧眰鐨勫厓绱燶n\n    }, {\n        key: 'deleteChunk',\n        value: function deleteChunk(id) {\n            var delInd = null;\n            for (var i = 0; i < this.chunk.length; i++) {\n                if (this.chunk[i].id == id) {\n                    delInd = i;\n                    break;\n                }\n            }\n            if (delInd != null) {\n                this.chunk.splice(delInd, 1);\n                this.resetChunkPosition();\n                this._currentChunk = null;\n            }\n        }\n    }, {\n        key: 'deleteElem',\n        value: function deleteElem(chunkId, elemId) {\n            var delInd = null,\n                delCInd = null;\n            for (var i = 0; i < this.chunk.length; i++) {\n                if (this.chunk[i].id == chunkId) {\n                    delCInd = i;\n                    for (var j = 0; j < this.chunk[i].element.length; j++) {\n                        if (this.chunk[i].element[j].id == elemId) {\n                            delInd = j;\n                        }\n                    }\n                }\n            }\n            if (delInd != null) {\n                this.chunk[delCInd].element.splice(delInd, 1);\n                this.resetChunkPosition();\n                this._currentChunk = null;\n            }\n        }\n    }, {\n        key: 'setAllProcesspreValue',\n        value: function setAllProcesspreValue() {\n            for (var i = 0; i < this.chunk.length; i++) {\n                if (this.chunk[i].scope != \"FlowLayout\" && this.chunk[i].scope != \"CellLayout\") {\n                    this.chunk[i].processprevalue = this.getAllNameScript();\n                } else {\n                    this.chunk[i].setAllProcesspreValue(this.getAllNameScript());\n                }\n            }\n        }\n        // 鎷垮埌宸蹭繚瀛樼殑瀛楁鐨勫悕瀛楀拰value绲勬垚鐨勫瓧绗︿覆\n\n    }, {\n        key: 'getAllNameScript',\n        value: function getAllNameScript() {\n            var h = JSON.stringify(this.allName).replace(/\"/g, \"'\");\n            h += \";\";\n            console.log(h);\n            return h;\n        }\n    }]);\n\n    return FormPanel;\n}();\n\nFormPanel.ACTION_NORMAL = 0x00000000;\nFormPanel.ACTION_IN_ELEMENT = 0x00000001;\nFormPanel.ACTION_IN_BASELINE = 0x00000010;\nFormPanel.ACTION_ARCHOR_UPPER_LEFT = 0x00000011;\nFormPanel.ACTION_ARCHOR_UPPER_RIGHT = 0x00000012;\nFormPanel.ACTION_ARCHOR_LOWER_LEFT = 0x00000013;\nFormPanel.ACTION_ARCHOR_LOWER_RIGHT = 0x00000014;\nexports.default = FormPanel;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2Zvcm0vdmlldy9Gb3JtUGFuZWwuanM/MGUyOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lucHV0LFRleHRhcmVhLFJhZGlvLENoZWNrYm94LERhdGEsU2VsZWN0LERlcHQsU2VsZWN0YWJvdXRmaWVsZCxUcmVlZGVwYXJ0bWVudGZpZWxkLFVzZXJmaWVsZCxTdWdnZXN0ZmllbGQsQnV0dG9uLFZpZXdkaWFsb2dmaWVsZCxUYWJmaWVsZCxDYWxjdGV4dGZpZWxkLFN1cnZleWZpZWxkLEF0dGFjaG1lbnQsSW1hZ2V1cGxvYWRmaWVsZCxPbmxpbmV0YWtlcGhvdG9maWVsZCxXZWl4aW5ncHNmaWVsZCxXZWl4aW5yZWNvcmRmaWVsZCxRcmNvZGVmaWVsZCxNYXBmaWVsZCxHZW5lcmljd29yZGZpZWxkLEh0bWxlZGl0b3JmaWVsZCxGbG93aGlzdG9yeWZpZWxkLEZsb3dyZW1pbmRlcmhpc3RvcnlmaWVsZCxJbmZvcm1hdGlvbmZlZWRiYWNrZmllbGR9IGZyb20gJy4uL2NvbXBvbmVudC9pbmRleCc7XHJcbmltcG9ydCB7SW5jbHVkZWZpZWxkfSBmcm9tICcuLi9jb21wb25lbnQvaW5kZXgnO1xyXG5cclxuXHJcbmltcG9ydCB7VGFibGVMYXlvdXQsRmxvd0xheW91dCxDZWxsTGF5b3V0fSBmcm9tICcuLi9MYXlvdXQvaW5kZXgnXHJcbmltcG9ydCBUcmVlIGZyb20gJy4vVHJlZSc7XHJcbmltcG9ydCBNZW51IGZyb20gJy4vTWVudSc7XHJcbmltcG9ydCB7IHRpbWluZ1NhZmVFcXVhbCB9IGZyb20gJ2NyeXB0byc7XHJcblxyXG5jbGFzcyBGb3JtUGFuZWwge1xyXG4gICAgY29uc3RydWN0b3IocGFuZWwpe1xyXG4gICAgICAgIHRoaXMucGFuZWw9cGFuZWw7XHJcbiAgICAgICAgdGhpcy5jaHVuaz1bXTtcclxuICAgICAgICB0aGlzLmVsZW09bnVsbDtcclxuICAgICAgICB0aGlzLndpZHRoPW51bGw7XHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdz1mYWxzZTtcclxuICAgICAgICB0aGlzLl9jdXJyZW50RWxlbT1udWxsO1xyXG4gICAgICAgIHRoaXMuX2N1cnJlbnRDaHVuaz1udWxsO1xyXG4gICAgICAgIHRoaXMuX2N1cnJlbnRFbGVtSWQ9bnVsbDsvL+aLluaLveeahOaXtuWAmeeUqOadpeS/neWtmOWFg+e0oGlkXHJcbiAgICAgICAgdGhpcy5fY3VycmVudENodW5rSWQ9bnVsbDsvL+aLluaLveeahOaXtuWAmeS/neWtmOS5i+WQjuaUvue9rueahOWMuuWfn2lkXHJcbiAgICAgICAgdGhpcy5fY3VycmVudE9ubGluZT1udWxsOy8v5b2T5YmN5Zyo6YKj5Liq5YWD57Sg55qE5a2Q5YWD57Sg55qE6L6557q/5LiKXHJcbiAgICAgICAgdGhpcy5fc3RhdHVlcz1Gb3JtUGFuZWwuQUNUSU9OX05PUk1BTDtcclxuICAgICAgICB0aGlzLmNlbGxzPVtdOy8v5b2T5YmN6byg5qCH5omA5ZyodGFibGXluIPlsYDlhYPntKDnmoR0ZOeahOe7hOWQiFxyXG4gICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlPXRydWU7Ly/lnKjkuIrmlrnov5jmmK/kuIvmlrnmj5LlhaVcclxuICAgICAgICB0aGlzLnRhYmxlPVtdOy8v5b2T5YmN6byg5qCH5omA5Zyo55qEdGFibGXnmoTkv6Hmga9cclxuICAgICAgICB0aGlzLnJvd3M9W107Ly/lvZPliY3pvKDmoIfmiYDlnKjnmoR0YWJsZeeahOS/oeaBr1xyXG4gICAgICAgIHRoaXMubm93Um93SW5kZXg9bnVsbDsvL+W9k+WJjem8oOagh+WdkOWcqOeahHRk55qEdHJcclxuICAgICAgICB0aGlzLm5vd0NvbEluZGV4PW51bGw7Ly/lvZPliY3pvKDmoIfmiYDlnKjnmoR0ZOeahOWIl+aVsFxyXG4gICAgICAgIHRoaXMucmVhbFJvd0luZGV4PW51bGw7Ly/lvZPliY3pvKDmoIfmiYDlnKjnmoR0clxyXG4gICAgICAgIHRoaXMuY2VsbEhhdmVSb3dzcGFuPWZhbHNlOy8v5b2T5YmN6byg5qCH5omA5Zyo5Y2V5YWD5qC85piv5ZCm5pyJ6KGM5ZCI5bm25Y2V5YWD5qC8XHJcbiAgICAgICAgdGhpcy5fY3VycmVudFByb3BFbGVtPW51bGw7Ly/nu5nlsZ7mgKfpnaLmnb/nlKjnmoTvvIzlvZPliY3nmoTpvKDmoIfmiYDlnKjlhYPntKBcclxuICAgICAgICB0aGlzLmNoYW5nZUNodW5rPVtdOy8v5aSa6KGM5paH5pys5qGG56e75Yqo55qE5pe25YCZ5bqU6K+l6Lef552A56e75Yqo55qE5biD5bGA5YWD57SgXHJcblxyXG4gICAgICAgIHRoaXMuYWxsTmFtZT1bXTsvL+WAvOiuvuiuoeeahOmDqOWIhueUqOadpeiOt+WPluaJgOacieW3suS/neWtmOeahOmdnuW4g+WxgOaOp+S7tueahOWQjeWtl+WSjGZpZWxkdHlwZVxyXG4gICAgICAgIHRoaXMubnVtPTA7Ly/nlKjmnaXorqHmlbBcclxuICAgIH1cclxuICAgIC8v5re75Yqg5Y2V6KGM5paH5pys5qGGXHJcbiAgICBhZGRJbnB1dCgpe1xyXG4gICAgICAgIGxldCBlbGVtID0gbmV3IElucHV0KCk7XHJcbiAgICAgICAgdGhpcy5udW0rKztcclxuICAgICAgICBlbGVtLm5hbWU9XCLljZXooYzmlofmnKzmoYZcIit0aGlzLm51bTtcclxuICAgICAgICBlbGVtLnByb2Nlc3NwcmV2YWx1ZT10aGlzLmdldEFsbE5hbWVTY3JpcHQoKTtcclxuICAgICAgICB0aGlzLmVsZW09ZWxlbTtcclxuICAgICAgICB0aGlzLnNldEVsZW1Qb3NpdGlvbihlbGVtKVxyXG4gICAgICAgIHRoaXMuaXNBbGxvd0RyYXcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgYWRkVGV4dGFyZWEoKXtcclxuICAgICAgICBsZXQgZWxlbSA9IG5ldyBUZXh0YXJlYSgpO1xyXG4gICAgICAgIHRoaXMubnVtKys7XHJcbiAgICAgICAgZWxlbS5uYW1lPVwi5aSa6KGM5paH5pys5qGGXCIrdGhpcy5udW07XHJcbiAgICAgICAgZWxlbS5wcm9jZXNzcHJldmFsdWU9dGhpcy5nZXRBbGxOYW1lU2NyaXB0KCk7XHJcbiAgICAgICAgdGhpcy5lbGVtPWVsZW07XHJcbiAgICAgICAgdGhpcy5zZXRFbGVtUG9zaXRpb24oZWxlbSlcclxuICAgICAgICB0aGlzLmlzQWxsb3dEcmF3ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGFkZFJhZGlvKCl7XHJcbiAgICAgICAgbGV0IGVsZW0gPSBuZXcgUmFkaW8oKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIuWNlemAieahhlwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGRDaGVja2JveCgpe1xyXG4gICAgICAgIGxldCBlbGVtID0gbmV3IENoZWNrYm94KCk7XHJcbiAgICAgICAgdGhpcy5udW0rKztcclxuICAgICAgICBlbGVtLm5hbWU9XCLlpI3pgInmoYZcIit0aGlzLm51bTtcclxuICAgICAgICBlbGVtLnByb2Nlc3NwcmV2YWx1ZT10aGlzLmdldEFsbE5hbWVTY3JpcHQoKTtcclxuICAgICAgICB0aGlzLmVsZW09ZWxlbTtcclxuICAgICAgICB0aGlzLnNldEVsZW1Qb3NpdGlvbihlbGVtKVxyXG4gICAgICAgIHRoaXMuaXNBbGxvd0RyYXcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgYWRkRGF0YSgpe1xyXG4gICAgICAgIGxldCBlbGVtID0gbmV3IERhdGEoKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIuaXpeacn+mAieaLqeahhlwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGRTZWxlY3QoKXtcclxuICAgICAgICBsZXQgZWxlbSA9IG5ldyBTZWxlY3QoKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIuS4i+aLieahhlwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGREZXB0KCl7XHJcbiAgICAgICAgbGV0IGVsZW0gPSBuZXcgRGVwdCgpO1xyXG4gICAgICAgIHRoaXMubnVtKys7XHJcbiAgICAgICAgZWxlbS5uYW1lPVwi6YOo6Zeo6YCJ5oup5qGGXCIrdGhpcy5udW07XHJcbiAgICAgICAgZWxlbS5wcm9jZXNzcHJldmFsdWU9dGhpcy5nZXRBbGxOYW1lU2NyaXB0KCk7XHJcbiAgICAgICAgdGhpcy5lbGVtPWVsZW07XHJcbiAgICAgICAgdGhpcy5zZXRFbGVtUG9zaXRpb24oZWxlbSlcclxuICAgICAgICB0aGlzLmlzQWxsb3dEcmF3ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGFkZFNlbGVjdGFib3V0ZmllbGQoKXtcclxuICAgICAgICBsZXQgZWxlbSA9IG5ldyBTZWxlY3RhYm91dGZpZWxkKCk7XHJcbiAgICAgICAgdGhpcy5udW0rKztcclxuICAgICAgICBlbGVtLm5hbWU9XCLlt6blj7PpgInmi6nmoYZcIit0aGlzLm51bTtcclxuICAgICAgICBlbGVtLnByb2Nlc3NwcmV2YWx1ZT10aGlzLmdldEFsbE5hbWVTY3JpcHQoKTtcclxuICAgICAgICB0aGlzLmVsZW09ZWxlbTtcclxuICAgICAgICB0aGlzLnNldEVsZW1Qb3NpdGlvbihlbGVtKVxyXG4gICAgICAgIHRoaXMuaXNBbGxvd0RyYXcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgYWRkVHJlZWRlcGFydG1lbnRmaWVsZCgpe1xyXG4gICAgICAgIGxldCBlbGVtID0gbmV3IFRyZWVkZXBhcnRtZW50ZmllbGQoKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIuagkeW9oumDqOmXqOmAieaLqeahhlwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGRVc2VyZmllbGQoKXtcclxuICAgICAgICBsZXQgZWxlbSA9IG5ldyBVc2VyZmllbGQoKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIueUqOaIt+mAieaLqeahhlwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGRTdWdnZXN0ZmllbGQoKXtcclxuICAgICAgICBsZXQgZWxlbSA9IG5ldyBTdWdnZXN0ZmllbGQoKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIuaZuuiDveaQnOe0ouaPkOekuuahhlwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGRCdXR0b24oKXtcclxuICAgICAgICBsZXQgZWxlbSA9IG5ldyBCdXR0b24oKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIuaMiemSrlwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGRWaWV3ZGlhbG9nZmllbGQoKXtcclxuICAgICAgICBsZXQgZWxlbSA9IG5ldyBWaWV3ZGlhbG9nZmllbGQoKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIuinhuWbvumAieaLqeahhlwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGRUYWJmaWVsZCgpe1xyXG4gICAgICAgIGxldCBlbGVtID0gbmV3IFRhYmZpZWxkKCk7XHJcbiAgICAgICAgdGhpcy5udW0rKztcclxuICAgICAgICBlbGVtLm5hbWU9XCLpgInpobnljaFcIit0aGlzLm51bTtcclxuICAgICAgICBlbGVtLnByb2Nlc3NwcmV2YWx1ZT10aGlzLmdldEFsbE5hbWVTY3JpcHQoKTtcclxuICAgICAgICB0aGlzLmVsZW09ZWxlbTtcclxuICAgICAgICB0aGlzLnNldEVsZW1Qb3NpdGlvbihlbGVtKVxyXG4gICAgICAgIHRoaXMuaXNBbGxvd0RyYXcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgYWRkQ2FsY3RleHRmaWVsZCgpe1xyXG4gICAgICAgIGxldCBlbGVtID0gbmV3IENhbGN0ZXh0ZmllbGQoKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIuiuoeeul+iEmuacrFwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGRJbmNsdWRlZmllbGQoKXtcclxuICAgICAgICBsZXQgZWxlbSA9IG5ldyBJbmNsdWRlZmllbGQoKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIuWMheWQq+WFg+e0oFwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGRTdXJ2ZXlmaWVsZCgpe1xyXG4gICAgICAgIGxldCBlbGVtID0gbmV3IFN1cnZleWZpZWxkKCk7XHJcbiAgICAgICAgdGhpcy5udW0rKztcclxuICAgICAgICBlbGVtLm5hbWU9XCLosIPmn6Xmjqfku7ZcIit0aGlzLm51bTtcclxuICAgICAgICBlbGVtLnByb2Nlc3NwcmV2YWx1ZT10aGlzLmdldEFsbE5hbWVTY3JpcHQoKTtcclxuICAgICAgICB0aGlzLmVsZW09ZWxlbTtcclxuICAgICAgICB0aGlzLnNldEVsZW1Qb3NpdGlvbihlbGVtKVxyXG4gICAgICAgIHRoaXMuaXNBbGxvd0RyYXcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBhZGRBdHRhY2htZW50KCl7XHJcbiAgICAgICAgbGV0IGVsZW0gPSBuZXcgQXR0YWNobWVudCgpO1xyXG4gICAgICAgIHRoaXMubnVtKys7XHJcbiAgICAgICAgZWxlbS5uYW1lPVwi5paH5Lu25LiK5LygXCIrdGhpcy5udW07XHJcbiAgICAgICAgZWxlbS5wcm9jZXNzcHJldmFsdWU9dGhpcy5nZXRBbGxOYW1lU2NyaXB0KCk7XHJcbiAgICAgICAgdGhpcy5lbGVtPWVsZW07XHJcbiAgICAgICAgdGhpcy5zZXRFbGVtUG9zaXRpb24oZWxlbSlcclxuICAgICAgICB0aGlzLmlzQWxsb3dEcmF3ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGFkZEltYWdldXBsb2FkZmllbGQoKXtcclxuICAgICAgICBsZXQgZWxlbSA9IG5ldyBJbWFnZXVwbG9hZGZpZWxkKCk7XHJcbiAgICAgICAgdGhpcy5udW0rKztcclxuICAgICAgICBlbGVtLm5hbWU9XCLlm77niYfkuIrkvKBcIit0aGlzLm51bTtcclxuICAgICAgICBlbGVtLnByb2Nlc3NwcmV2YWx1ZT10aGlzLmdldEFsbE5hbWVTY3JpcHQoKTtcclxuICAgICAgICB0aGlzLmVsZW09ZWxlbTtcclxuICAgICAgICB0aGlzLnNldEVsZW1Qb3NpdGlvbihlbGVtKVxyXG4gICAgICAgIHRoaXMuaXNBbGxvd0RyYXcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgYWRkT25saW5ldGFrZXBob3RvZmllbGQoKXtcclxuICAgICAgICBsZXQgZWxlbSA9IG5ldyBPbmxpbmV0YWtlcGhvdG9maWVsZCgpO1xyXG4gICAgICAgIHRoaXMubnVtKys7XHJcbiAgICAgICAgZWxlbS5uYW1lPVwi5Zyo57q/5ouN54WnXCIrdGhpcy5udW07XHJcbiAgICAgICAgZWxlbS5wcm9jZXNzcHJldmFsdWU9dGhpcy5nZXRBbGxOYW1lU2NyaXB0KCk7XHJcbiAgICAgICAgdGhpcy5lbGVtPWVsZW07XHJcbiAgICAgICAgdGhpcy5zZXRFbGVtUG9zaXRpb24oZWxlbSlcclxuICAgICAgICB0aGlzLmlzQWxsb3dEcmF3ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGFkZFdlaXhpbmdwc2ZpZWxkKCl7XHJcbiAgICAgICAgbGV0IGVsZW0gPSBuZXcgV2VpeGluZ3BzZmllbGQoKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIuW+ruS/oWdwc+WumuS9jVwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGRXZWl4aW5yZWNvcmRmaWVsZCgpe1xyXG4gICAgICAgIGxldCBlbGVtID0gbmV3IFdlaXhpbnJlY29yZGZpZWxkKCk7XHJcbiAgICAgICAgdGhpcy5udW0rKztcclxuICAgICAgICBlbGVtLm5hbWU9XCLlvq7kv6HlvZXpn7Pmjqfku7ZcIit0aGlzLm51bTtcclxuICAgICAgICBlbGVtLnByb2Nlc3NwcmV2YWx1ZT10aGlzLmdldEFsbE5hbWVTY3JpcHQoKTtcclxuICAgICAgICB0aGlzLmVsZW09ZWxlbTtcclxuICAgICAgICB0aGlzLnNldEVsZW1Qb3NpdGlvbihlbGVtKVxyXG4gICAgICAgIHRoaXMuaXNBbGxvd0RyYXcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgYWRkUXJjb2RlZmllbGQoKXtcclxuICAgICAgICBsZXQgZWxlbSA9IG5ldyBRcmNvZGVmaWVsZCgpO1xyXG4gICAgICAgIHRoaXMubnVtKys7XHJcbiAgICAgICAgZWxlbS5uYW1lPVwi5LqM57u056CB5o6n5Lu2XCIrdGhpcy5udW07XHJcbiAgICAgICAgZWxlbS5wcm9jZXNzcHJldmFsdWU9dGhpcy5nZXRBbGxOYW1lU2NyaXB0KCk7XHJcbiAgICAgICAgdGhpcy5lbGVtPWVsZW07XHJcbiAgICAgICAgdGhpcy5zZXRFbGVtUG9zaXRpb24oZWxlbSlcclxuICAgICAgICB0aGlzLmlzQWxsb3dEcmF3ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGFkZE1hcGZpZWxkKCl7XHJcbiAgICAgICAgbGV0IGVsZW0gPSBuZXcgTWFwZmllbGQoKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIuWcsOWbvlwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGRHZW5lcmljd29yZGZpZWxkKCl7XHJcbiAgICAgICAgbGV0IGVsZW0gPSBuZXcgR2VuZXJpY3dvcmRmaWVsZCgpO1xyXG4gICAgICAgIHRoaXMubnVtKys7XHJcbiAgICAgICAgZWxlbS5uYW1lPVwi6YCa55SoV09SROe8lui+keWZqFwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGRIdG1sZWRpdG9yZmllbGQoKXtcclxuICAgICAgICBsZXQgZWxlbSA9IG5ldyBIdG1sZWRpdG9yZmllbGQoKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIkhUTUznvJbovpHlmahcIit0aGlzLm51bTtcclxuICAgICAgICBlbGVtLnByb2Nlc3NwcmV2YWx1ZT10aGlzLmdldEFsbE5hbWVTY3JpcHQoKTtcclxuICAgICAgICB0aGlzLmVsZW09ZWxlbTtcclxuICAgICAgICB0aGlzLnNldEVsZW1Qb3NpdGlvbihlbGVtKVxyXG4gICAgICAgIHRoaXMuaXNBbGxvd0RyYXcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgYWRkRmxvd2hpc3RvcnlmaWVsZCgpe1xyXG4gICAgICAgIGxldCBlbGVtID0gbmV3IEZsb3doaXN0b3J5ZmllbGQoKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIua1geeoi+WOhuWPslwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGRGbG93cmVtaW5kZXJoaXN0b3J5ZmllbGQoKXtcclxuICAgICAgICBsZXQgZWxlbSA9IG5ldyBGbG93cmVtaW5kZXJoaXN0b3J5ZmllbGQoKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIua1geeoi+WCrOWKnuWOhuWPslwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGRJbmZvcm1hdGlvbmZlZWRiYWNrZmllbGQoKXtcclxuICAgICAgICBsZXQgZWxlbSA9IG5ldyBJbmZvcm1hdGlvbmZlZWRiYWNrZmllbGQoKTtcclxuICAgICAgICB0aGlzLm51bSsrO1xyXG4gICAgICAgIGVsZW0ubmFtZT1cIuS/oeaBr+WPjemmiFwiK3RoaXMubnVtO1xyXG4gICAgICAgIGVsZW0ucHJvY2Vzc3ByZXZhbHVlPXRoaXMuZ2V0QWxsTmFtZVNjcmlwdCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBhZGRUYWJsZUxheW91dCgpe1xyXG4gICAgICAgIGxldCBlbGVtID0gbmV3IFRhYmxlTGF5b3V0KCk7XHJcbiAgICAgICAgdGhpcy5lbGVtPWVsZW07XHJcbiAgICAgICAgdGhpcy5zZXRFbGVtUG9zaXRpb24oZWxlbSlcclxuICAgICAgICBlbGVtLmluaXQoKTtcclxuICAgICAgICB0aGlzLmlzQWxsb3dEcmF3ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGFkZEZsb3dMYXlvdXQoKXtcclxuICAgICAgICBsZXQgZWxlbSA9IG5ldyBGbG93TGF5b3V0KCk7XHJcbiAgICAgICAgdGhpcy5lbGVtPWVsZW07XHJcbiAgICAgICAgLy8gdGhpcy5lbGVtLnBhbmVsV2lkdGg9cGFyc2VJbnQodGhpcy53aWR0aCk7XHJcbiAgICAgICAgdGhpcy5lbGVtLndpZHRoPXBhcnNlSW50KHRoaXMud2lkdGgpO1xyXG4gICAgICAgIHRoaXMuc2V0RWxlbVBvc2l0aW9uKGVsZW0pXHJcbiAgICAgICAgZWxlbS5pbml0KCk7XHJcbiAgICAgICAgdGhpcy5pc0FsbG93RHJhdyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhZGRDZWxsTGF5b3V0KCl7XHJcbiAgICAgICAgbGV0IGVsZW0gPSBuZXcgQ2VsbExheW91dCgpO1xyXG4gICAgICAgIHRoaXMuZWxlbT1lbGVtO1xyXG4gICAgICAgIHRoaXMuZWxlbS53aWR0aD1wYXJzZUludCh0aGlzLndpZHRoKTtcclxuICAgICAgICB0aGlzLnNldEVsZW1Qb3NpdGlvbihlbGVtKVxyXG4gICAgICAgIGVsZW0uaW5pdCgpO1xyXG4gICAgICAgIHRoaXMuaXNBbGxvd0RyYXcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaW5pdCgpe1xyXG4gICAgICAgIHRoaXMucGFuZWwub25tb3VzZW1vdmUgPSAoZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZU1vdXNlTW92ZShlKTtcclxuICAgICAgICAgfTtcclxuICAgICBcclxuICAgICAgICAgdGhpcy5wYW5lbC5vbm1vdXNlZG93biA9IChlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJDdXJyVG9FZGl0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTW91c2VEb3duKGUpO1xyXG4gICAgICAgICB9O1xyXG4gICAgICAgICBcclxuICAgICAgICAgdGhpcy5wYW5lbC5vbm1vdXNldXAgPSAoZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZU1vdXNlVXAoZSk7XHJcbiAgICAgICAgIH07XHJcbiAgICAgICAgIFxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBwYXJzZUh0bWwoaHRtbCl7XHJcbiAgICAgICAgbGV0IHJvb3Q9aHRtbFswXTtcclxuICAgICAgICBsZXQgdGhhdD10aGlzO1xyXG4gICAgICAgIGNvbnN0IHRyYXZlcnNhbE5vZGUgPSAoaHRtbE5vZGUpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qge3RhZ05hbWV9PWh0bWxOb2RlO1xyXG4gICAgICAgICAgICBzd2l0Y2godGFnTmFtZSl7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdESVYnOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCByb290Mj1odG1sTm9kZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmF2ZXJzYWxOb2RlMiA9IChodG1sTm9kZTIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qge3RhZ05hbWV9PWh0bWxOb2RlMjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHRhZ05hbWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnVEFCTEUnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0YWJsZWxheW91dCA9IG5ldyBUYWJsZUxheW91dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlbGF5b3V0LndpZHRoPXBhcnNlRmxvYXQoaHRtbE5vZGUyLmdldEF0dHJpYnV0ZShcIndpZHRoXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZWxheW91dC5oZWlnaHQ9cGFyc2VGbG9hdChodG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZWxheW91dC54PXBhcnNlRmxvYXQoaHRtbE5vZGUyLmdldEF0dHJpYnV0ZShcInBhbmVseFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVsYXlvdXQueT1wYXJzZUZsb2F0KGh0bWxOb2RlMi5nZXRBdHRyaWJ1dGUoXCJwYW5lbHlcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlbGF5b3V0LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2h1bmsucHVzaCh0YWJsZWxheW91dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2codGhhdC5jaHVuaylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0YtRkxBWU9VVCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZsb3dMYXlvdXQgPSBuZXcgRmxvd0xheW91dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb3dMYXlvdXQud2lkdGg9cGFyc2VGbG9hdChodG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwid2lkdGhcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb3dMYXlvdXQuaGVpZ2h0PXBhcnNlRmxvYXQoaHRtbE5vZGUyLmdldEF0dHJpYnV0ZShcImhlaWdodFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvd0xheW91dC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Lm51bSs9Zmxvd0xheW91dC5nZXRFbGVtZW50TGVuZ3RoKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2h1bmsucHVzaChmbG93TGF5b3V0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGF0LmNodW5rKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYWxsTmFtZT1bLi4udGhhdC5hbGxOYW1lLC4uLmZsb3dMYXlvdXQuZ2V0QWxsTmFtZSgpXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRi1DTEFZT1VUJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2VsbExheW91dCA9IG5ldyBDZWxsTGF5b3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExheW91dC53aWR0aD1wYXJzZUZsb2F0KGh0bWxOb2RlMi5nZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbExheW91dC5oZWlnaHQ9cGFyc2VGbG9hdChodG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsTGF5b3V0LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQubnVtKz1jZWxsTGF5b3V0LmdldEVsZW1lbnRMZW5ndGgoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaHVuay5wdXNoKGNlbGxMYXlvdXQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoYXQuY2h1bmspXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5hbGxOYW1lPVsuLi50aGF0LmFsbE5hbWUsLi4uY2VsbExheW91dC5nZXRBbGxOYW1lKCldXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdGLUlOUFVUJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5wdXR0eXBlPWh0bWxOb2RlMi5nZXRBdHRyaWJ1dGUoXCJjbGFzc25hbWVcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2goaW5wdXR0eXBlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLkRhdGVGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBuZXcgRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNodW5rLnB1c2goZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6ZGF0YS5uYW1lLFwidmFsdWVcIjpkYXRhLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLlJhZGlvRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByYWRpbyA9IG5ldyBSYWRpbygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFkaW8ucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpby5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2h1bmsucHVzaChyYWRpbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6cmFkaW8ubmFtZSxcInZhbHVlXCI6cmFkaW8uZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuQ2hlY2tib3hGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoZWNrYm94ID0gbmV3IENoZWNrYm94KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2JveC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrYm94LmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaHVuay5wdXNoKGNoZWNrYm94KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpjaGVja2JveC5uYW1lLFwidmFsdWVcIjpjaGVja2JveC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5TdWdnZXN0RmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWdnZXN0ZmllbGQgPSBuZXcgU3VnZ2VzdGZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWdnZXN0ZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWdnZXN0ZmllbGQuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNodW5rLnB1c2goc3VnZ2VzdGZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpzdWdnZXN0ZmllbGQubmFtZSxcInZhbHVlXCI6c3VnZ2VzdGZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5CdXR0b25GaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJ1dHRvbiA9IG5ldyBCdXR0b24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2h1bmsucHVzaChidXR0b24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmJ1dHRvbi5uYW1lLFwidmFsdWVcIjpidXR0b24uZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlucHV0ID0gbmV3IElucHV0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaHVuay5wdXNoKGlucHV0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjppbnB1dC5uYW1lLFwidmFsdWVcIjppbnB1dC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5udW0rKztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0YtVEVYVEFSRUEnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0YXJlYSA9IG5ldyBUZXh0YXJlYSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRhcmVhLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRhcmVhLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNodW5rLnB1c2godGV4dGFyZWEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQubnVtKys7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjp0ZXh0YXJlYS5uYW1lLFwidmFsdWVcIjp0ZXh0YXJlYS5maWVsZHR5cGV9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YtUkFESU8nOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGxldCByYWRpbyA9IG5ldyBSYWRpbygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHJhZGlvLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHJhZGlvLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGF0LmNodW5rLnB1c2gocmFkaW8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoYXQubnVtKys7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoYXQuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpyYWRpby5uYW1lLFwidmFsdWVcIjpyYWRpby5maWVsZHR5cGV9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YtQ0hFQ0tCT1gnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGxldCBjaGVja2JveCA9IG5ldyBDaGVja2JveCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGNoZWNrYm94LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGNoZWNrYm94LmlzYmxvY2s9XCJmYWxzZVwiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmNodW5rLnB1c2goY2hlY2tib3gpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoYXQubnVtKys7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoYXQuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpjaGVja2JveC5uYW1lLFwidmFsdWVcIjpjaGVja2JveC5maWVsZHR5cGV9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YtREFUQSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbGV0IGRhdGEgPSBuZXcgRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGRhdGEucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgZGF0YS5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhhdC5jaHVuay5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoYXQubnVtKys7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoYXQuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpkYXRhLm5hbWUsXCJ2YWx1ZVwiOmRhdGEuZmllbGR0eXBlfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdGLVNFTEVDVCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdHR5cGU9aHRtbE5vZGUyLmdldEF0dHJpYnV0ZShcImNsYXNzbmFtZVwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaChzZWxlY3R0eXBlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLkRlcGFydG1lbnRGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlcHQgPSBuZXcgRGVwdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHQuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNodW5rLnB1c2goZGVwdCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6ZGVwdC5uYW1lLFwidmFsdWVcIjpkZXB0LmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLlNlbGVjdEFib3V0RmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWxlY3RhYm91dGZpZWxkID0gbmV3IFNlbGVjdGFib3V0ZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGFib3V0ZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RhYm91dGZpZWxkLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaHVuay5wdXNoKHNlbGVjdGFib3V0ZmllbGQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOnNlbGVjdGFib3V0ZmllbGQubmFtZSxcInZhbHVlXCI6c2VsZWN0YWJvdXRmaWVsZC5maWVsZHR5cGV9KSAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5UcmVlRGVwYXJ0bWVudEZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHJlZWRlcGFydG1lbnRmaWVsZCA9IG5ldyBUcmVlZGVwYXJ0bWVudGZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlZGVwYXJ0bWVudGZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZWRlcGFydG1lbnRmaWVsZC5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2h1bmsucHVzaCh0cmVlZGVwYXJ0bWVudGZpZWxkKTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjp0cmVlZGVwYXJ0bWVudGZpZWxkLm5hbWUsXCJ2YWx1ZVwiOnRyZWVkZXBhcnRtZW50ZmllbGQuZmllbGR0eXBlfSkgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5Vc2VyRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1c2VyZmllbGQgPSBuZXcgVXNlcmZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyZmllbGQuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNodW5rLnB1c2godXNlcmZpZWxkKTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjp1c2VyZmllbGQubmFtZSxcInZhbHVlXCI6dXNlcmZpZWxkLmZpZWxkdHlwZX0pICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdCA9IG5ldyBTZWxlY3QoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2h1bmsucHVzaChzZWxlY3QpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5hbGxOYW1lLnB1c2goe1wibmFtZVwiOnNlbGVjdC5uYW1lLFwidmFsdWVcIjpzZWxlY3QuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5udW0rKztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YtREVQVCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbGV0IGRlcHQgPSBuZXcgRGVwdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGRlcHQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgZGVwdC5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhhdC5jaHVuay5wdXNoKGRlcHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoYXQubnVtKys7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpkZXB0Lm5hbWUsXCJ2YWx1ZVwiOmRlcHQuZmllbGR0eXBlfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdGLVNFTEVDVEFCT1VURklFTEQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGxldCBzZWxlY3RhYm91dGZpZWxkID0gbmV3IFNlbGVjdGFib3V0ZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzZWxlY3RhYm91dGZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHNlbGVjdGFib3V0ZmllbGQuaXNibG9jaz1cImZhbHNlXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoYXQuY2h1bmsucHVzaChzZWxlY3RhYm91dGZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGF0Lm51bSsrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6c2VsZWN0YWJvdXRmaWVsZC5uYW1lLFwidmFsdWVcIjpzZWxlY3RhYm91dGZpZWxkLmZpZWxkdHlwZX0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRi1UUkVFREVQQVJUTUVOVEZJRUxEJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBsZXQgdHJlZWRlcGFydG1lbnRmaWVsZCA9IG5ldyBUcmVlZGVwYXJ0bWVudGZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdHJlZWRlcGFydG1lbnRmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0cmVlZGVwYXJ0bWVudGZpZWxkLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGF0LmNodW5rLnB1c2godHJlZWRlcGFydG1lbnRmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhhdC5udW0rKztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5hbGxOYW1lLnB1c2goe1wibmFtZVwiOnRyZWVkZXBhcnRtZW50ZmllbGQubmFtZSxcInZhbHVlXCI6dHJlZWRlcGFydG1lbnRmaWVsZC5maWVsZHR5cGV9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0YtVVNFUkZJRUxEJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBsZXQgdXNlcmZpZWxkID0gbmV3IFVzZXJmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHVzZXJmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB1c2VyZmllbGQuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhhdC5jaHVuay5wdXNoKHVzZXJmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhhdC5udW0rKztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhhdC5hbGxOYW1lLnB1c2goe1wibmFtZVwiOnVzZXJmaWVsZC5uYW1lLFwidmFsdWVcIjp1c2VyZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBicmVhazsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VnZ2VzdGZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdGLVNVR0dFU1RGSUVMRCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbGV0IHN1Z2dlc3RmaWVsZCA9IG5ldyBTdWdnZXN0ZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzdWdnZXN0ZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgc3VnZ2VzdGZpZWxkLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoYXQuY2h1bmsucHVzaChzdWdnZXN0ZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHRoYXQubnVtKys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGhhdC5hbGxOYW1lLnB1c2goe1wibmFtZVwiOnN1Z2dlc3RmaWVsZC5uYW1lLFwidmFsdWVcIjpzdWdnZXN0ZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBicmVhazsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdGLUJVVFRPTic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbGV0IGJ1dHRvbiA9IG5ldyBCdXR0b24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBidXR0b24ucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYnV0dG9uLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGF0LmNodW5rLnB1c2goYnV0dG9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGF0Lm51bSsrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0aGF0LmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6YnV0dG9uLm5hbWUsXCJ2YWx1ZVwiOmJ1dHRvbi5maWVsZHR5cGV9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0YtVklFV0RJQUxPR0ZJRUxEJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmlld2RpYWxvZ2ZpZWxkID0gbmV3IFZpZXdkaWFsb2dmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdkaWFsb2dmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3ZGlhbG9nZmllbGQuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaHVuay5wdXNoKHZpZXdkaWFsb2dmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5udW0rKztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6dmlld2RpYWxvZ2ZpZWxkLm5hbWUsXCJ2YWx1ZVwiOnZpZXdkaWFsb2dmaWVsZC5maWVsZHR5cGV9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0YtSU1HJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1ndHlwZT1odG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwiY2xhc3NuYW1lXCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2goaW1ndHlwZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5UYWJGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRhYmZpZWxkID0gbmV3IFRhYmZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmZpZWxkLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaHVuay5wdXNoKHRhYmZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjp0YWJmaWVsZC5uYW1lLFwidmFsdWVcIjp0YWJmaWVsZC5maWVsZHR5cGU/dGFiZmllbGQuZmllbGR0eXBlOlwiXCJ9KVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuVmlld0RpYWxvZ0ZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmlld2RpYWxvZ2ZpZWxkID0gbmV3IFZpZXdkaWFsb2dmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld2RpYWxvZ2ZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld2RpYWxvZ2ZpZWxkLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaHVuay5wdXNoKHZpZXdkaWFsb2dmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6dmlld2RpYWxvZ2ZpZWxkLm5hbWUsXCJ2YWx1ZVwiOnZpZXdkaWFsb2dmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuQ2FsY3RleHRGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNhbGN0ZXh0RmllbGQgPSBuZXcgQ2FsY3RleHRmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3RleHRGaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN0ZXh0RmllbGQuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNodW5rLnB1c2goY2FsY3RleHRGaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6Y2FsY3RleHRGaWVsZC5uYW1lLFwidmFsdWVcIjpjYWxjdGV4dEZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5JbmNsdWRlRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmNsdWRlRmllbGQgPSBuZXcgSW5jbHVkZWZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlRmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlRmllbGQuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNodW5rLnB1c2goaW5jbHVkZUZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjppbmNsdWRlRmllbGQubmFtZSxcInZhbHVlXCI6aW5jbHVkZUZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5TdXJ2ZXlGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1cnZleWZpZWxkID0gbmV3IFN1cnZleWZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJ2ZXlmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cnZleWZpZWxkLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaHVuay5wdXNoKHN1cnZleWZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpzdXJ2ZXlmaWVsZC5uYW1lLFwidmFsdWVcIjpzdXJ2ZXlmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuQXR0YWNobWVudFVwbG9hZEZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXR0YWNobWVudCA9IG5ldyBBdHRhY2htZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudC5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2h1bmsucHVzaChhdHRhY2htZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjphdHRhY2htZW50Lm5hbWUsXCJ2YWx1ZVwiOmF0dGFjaG1lbnQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLkltYWdlVXBsb2FkRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbWFnZXVwbG9hZGZpZWxkID0gbmV3IEltYWdldXBsb2FkZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdldXBsb2FkZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXVwbG9hZGZpZWxkLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaHVuay5wdXNoKGltYWdldXBsb2FkZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmltYWdldXBsb2FkZmllbGQubmFtZSxcInZhbHVlXCI6aW1hZ2V1cGxvYWRmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuT25MaW5lVGFrZVBob3RvRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvbmxpbmV0YWtlcGhvdG9maWVsZCA9IG5ldyBPbmxpbmV0YWtlcGhvdG9maWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25saW5ldGFrZXBob3RvZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmxpbmV0YWtlcGhvdG9maWVsZC5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2h1bmsucHVzaChvbmxpbmV0YWtlcGhvdG9maWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6b25saW5ldGFrZXBob3RvZmllbGQubmFtZSxcInZhbHVlXCI6b25saW5ldGFrZXBob3RvZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLldlaXhpbkdwc0ZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2VpeGluZ3BzZmllbGQgPSBuZXcgV2VpeGluZ3BzZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlaXhpbmdwc2ZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VpeGluZ3BzZmllbGQuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNodW5rLnB1c2god2VpeGluZ3BzZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5hbGxOYW1lLnB1c2goe1wibmFtZVwiOndlaXhpbmdwc2ZpZWxkLm5hbWUsXCJ2YWx1ZVwiOndlaXhpbmdwc2ZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5XZWl4aW5SZWNvcmRGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdlaXhpbnJlY29yZGZpZWxkID0gbmV3IFdlaXhpbnJlY29yZGZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWl4aW5yZWNvcmRmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlaXhpbnJlY29yZGZpZWxkLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaHVuay5wdXNoKHdlaXhpbnJlY29yZGZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjp3ZWl4aW5yZWNvcmRmaWVsZC5uYW1lLFwidmFsdWVcIjp3ZWl4aW5yZWNvcmRmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuUVJDb2RlRmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBxcmNvZGVmaWVsZCA9IG5ldyBRcmNvZGVmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXJjb2RlZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxcmNvZGVmaWVsZC5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2h1bmsucHVzaChxcmNvZGVmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6cXJjb2RlZmllbGQubmFtZSxcInZhbHVlXCI6cXJjb2RlZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLk1hcEZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWFwZmllbGQgPSBuZXcgTWFwZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcGZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwZmllbGQuaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNodW5rLnB1c2gobWFwZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5hbGxOYW1lLnB1c2goe1wibmFtZVwiOm1hcGZpZWxkLm5hbWUsXCJ2YWx1ZVwiOm1hcGZpZWxkLmZpZWxkdHlwZX0pXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5HZW5lcmljV29yZEZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ2VuZXJpY3dvcmRmaWVsZCA9IG5ldyBHZW5lcmljd29yZGZpZWxkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmljd29yZGZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY3dvcmRmaWVsZC5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2h1bmsucHVzaChnZW5lcmljd29yZGZpZWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuYWxsTmFtZS5wdXNoKHtcIm5hbWVcIjpnZW5lcmljd29yZGZpZWxkLm5hbWUsXCJ2YWx1ZVwiOmdlbmVyaWN3b3JkZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLkhUTUxFZGl0b3JGaWVsZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGh0bWxlZGl0b3JmaWVsZCA9IG5ldyBIdG1sZWRpdG9yZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxlZGl0b3JmaWVsZC5wYXJzZUh0bWwoaHRtbE5vZGUyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxlZGl0b3JmaWVsZC5pc2Jsb2NrPVwiZmFsc2VcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2h1bmsucHVzaChodG1sZWRpdG9yZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmh0bWxlZGl0b3JmaWVsZC5uYW1lLFwidmFsdWVcIjpodG1sZWRpdG9yZmllbGQuZmllbGR0eXBlfSlcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLkZsb3dIaXN0b3J5RmllbGRcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmbG93aGlzdG9yeWZpZWxkID0gbmV3IEZsb3doaXN0b3J5ZmllbGQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb3doaXN0b3J5ZmllbGQucGFyc2VIdG1sKGh0bWxOb2RlMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG93aGlzdG9yeWZpZWxkLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaHVuay5wdXNoKGZsb3doaXN0b3J5ZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5hbGxOYW1lLnB1c2goe1wibmFtZVwiOmZsb3doaXN0b3J5ZmllbGQubmFtZSxcInZhbHVlXCI6Zmxvd2hpc3RvcnlmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuRmxvd1JlbWluZGVySGlzdG9yeUZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmxvd3JlbWluZGVyaGlzdG9yeWZpZWxkID0gbmV3IEZsb3dyZW1pbmRlcmhpc3RvcnlmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvd3JlbWluZGVyaGlzdG9yeWZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvd3JlbWluZGVyaGlzdG9yeWZpZWxkLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaHVuay5wdXNoKGZsb3dyZW1pbmRlcmhpc3RvcnlmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6Zmxvd3JlbWluZGVyaGlzdG9yeWZpZWxkLm5hbWUsXCJ2YWx1ZVwiOmZsb3dyZW1pbmRlcmhpc3RvcnlmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuSW5mb3JtYXRpb25GZWVkYmFja0ZpZWxkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5mb3JtYXRpb25mZWVkYmFja2ZpZWxkID0gbmV3IEluZm9ybWF0aW9uZmVlZGJhY2tmaWVsZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb25mZWVkYmFja2ZpZWxkLnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb25mZWVkYmFja2ZpZWxkLmlzYmxvY2s9XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaHVuay5wdXNoKGluZm9ybWF0aW9uZmVlZGJhY2tmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmFsbE5hbWUucHVzaCh7XCJuYW1lXCI6aW5mb3JtYXRpb25mZWVkYmFja2ZpZWxkLm5hbWUsXCJ2YWx1ZVwiOmluZm9ybWF0aW9uZmVlZGJhY2tmaWVsZC5maWVsZHR5cGV9KVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQubnVtKys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibm8yXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZihyb290Mi5oYXNDaGlsZE5vZGVzKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDtpIDwgcm9vdDIuY2hpbGRyZW4ubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsTm9kZTIocm9vdDIuY2hpbGRyZW5baV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIm5vXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihyb290Lmhhc0NoaWxkTm9kZXMoKSkge1xyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwO2kgPCByb290LmNoaWxkcmVuLmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgICAgIHRyYXZlcnNhbE5vZGUocm9vdC5jaGlsZHJlbltpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZXNldENodW5rUG9zaXRpb24oKTtcclxuICAgICAgICB0aGlzLnNldEFsbFByb2Nlc3NwcmVWYWx1ZSgpO1xyXG4gICAgfVxyXG4gICAgcGFpbnQoKXtcclxuICAgICAgICAkKHRoaXMucGFuZWwpLmh0bWwoXCJcIik7XHJcbiAgICAgICAgY29uc3QgY2h1bmsgPSB0aGlzLmNodW5rO1xyXG4gICAgICAgIGxldCBoPVwiXCI7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTxjaHVuay5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgaCArPSBjaHVua1tpXS5wYWludCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAkKHRoaXMucGFuZWwpLmh0bWwoaCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYoJCh0aGlzLnBhbmVsKS5maW5kKFwiZGl2W2NsYXNzPSdpbmxpbmVCbG9jayddXCIpLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgJCh0aGlzLnBhbmVsKS5maW5kKFwiZGl2W2NsYXNzPSdpbmxpbmVCbG9jayddXCIpLmVhY2goKGluZCxlbG0pPT57XHJcbiAgICAgICAgICAgICAgICAkKGVsbSkub2ZmKFwiZHJhZ3N0YXJ0XCIpLm9uKFwiZHJhZ3N0YXJ0XCIsKCk9PntcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZXYgPSB3aW5kb3cuZXZlbnQgfHwgYXJndW1lbnRzLmNhbGxlZS5jYWxsZXIuYXJndW1lbnRzWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgZXYuZGF0YVRyYW5zZmVyLnNldERhdGEoXCJUZXh0XCIsZXYudGFyZ2V0LmlkKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50RWxlbUlkPWV2LnRhcmdldC5pZDtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzZXRFbGVtZW50UG9zaXRpb25cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKCQodGhpcy5wYW5lbCkuZmluZChcImRpdltjbGFzcz0nYmxvY2snXVwiKS5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICQodGhpcy5wYW5lbCkuZmluZChcImRpdltjbGFzcz0nYmxvY2snXVwiKS5lYWNoKChpbmQsZWxtKT0+e1xyXG4gICAgICAgICAgICAgICAgJChlbG0pLm9mZihcImRyYWdzdGFydFwiKS5vbihcImRyYWdzdGFydFwiLCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGV2ID0gd2luZG93LmV2ZW50IHx8IGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyLmFyZ3VtZW50c1swXVxyXG4gICAgICAgICAgICAgICAgICAgIGV2LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwiVGV4dFwiLGV2LnRhcmdldC5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudEVsZW1JZD1ldi50YXJnZXQuaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0RWxlbWVudFBvc2l0aW9uXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZigkKHRoaXMucGFuZWwpLmZpbmQoXCJmLXRleHRhcmVhXCIpLmxlbmd0aD4wKXtcclxuICAgICAgICAvLyAgICAgJCh0aGlzLnBhbmVsKS5maW5kKFwiZi10ZXh0YXJlYVwiKS5lYWNoKChpbmQsZWxtKT0+e1xyXG4gICAgICAgIC8vICAgICAgICAgJChlbG0pLm9mZihcImRyYWdzdGFydFwiKS5vbihcImRyYWdzdGFydFwiLCgpPT57XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgbGV0IGV2ID0gd2luZG93LmV2ZW50IHx8IGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyLmFyZ3VtZW50c1swXVxyXG4gICAgICAgIC8vICAgICAgICAgICAgIGV2LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwiVGV4dFwiLGV2LnRhcmdldC5pZCk7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5fY3VycmVudEVsZW1JZD1ldi50YXJnZXQuaWQ7XHJcbiAgICAgICAgLy8gICAgICAgICB9KVxyXG4gICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBpZigkKHRoaXMucGFuZWwpLmZpbmQoXCJmLXJhZGlvXCIpLmxlbmd0aD4wKXtcclxuICAgICAgICAvLyAgICAgJCh0aGlzLnBhbmVsKS5maW5kKFwiZi1yYWRpb1wiKS5lYWNoKChpbmQsZWxtKT0+e1xyXG4gICAgICAgIC8vICAgICAgICAgJChlbG0pLm9mZihcImRyYWdzdGFydFwiKS5vbihcImRyYWdzdGFydFwiLCgpPT57XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgbGV0IGV2ID0gd2luZG93LmV2ZW50IHx8IGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyLmFyZ3VtZW50c1swXVxyXG4gICAgICAgIC8vICAgICAgICAgICAgIGV2LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwiVGV4dFwiLGV2LnRhcmdldC5pZCk7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5fY3VycmVudEVsZW1JZD1ldi50YXJnZXQuaWQ7XHJcbiAgICAgICAgLy8gICAgICAgICB9KVxyXG4gICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBpZigkKHRoaXMucGFuZWwpLmZpbmQoXCJmLWNoZWNrYm94XCIpLmxlbmd0aD4wKXtcclxuICAgICAgICAvLyAgICAgJCh0aGlzLnBhbmVsKS5maW5kKFwiZi1jaGVja2JveFwiKS5lYWNoKChpbmQsZWxtKT0+e1xyXG4gICAgICAgIC8vICAgICAgICAgJChlbG0pLm9mZihcImRyYWdzdGFydFwiKS5vbihcImRyYWdzdGFydFwiLCgpPT57XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgbGV0IGV2ID0gd2luZG93LmV2ZW50IHx8IGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyLmFyZ3VtZW50c1swXVxyXG4gICAgICAgIC8vICAgICAgICAgICAgIGV2LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwiVGV4dFwiLGV2LnRhcmdldC5pZCk7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5fY3VycmVudEVsZW1JZD1ldi50YXJnZXQuaWQ7XHJcbiAgICAgICAgLy8gICAgICAgICB9KVxyXG4gICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBpZigkKHRoaXMucGFuZWwpLmZpbmQoXCJmLWRhdGFcIikubGVuZ3RoPjApe1xyXG4gICAgICAgIC8vICAgICAkKHRoaXMucGFuZWwpLmZpbmQoXCJmLWRhdGFcIikuZWFjaCgoaW5kLGVsbSk9PntcclxuICAgICAgICAvLyAgICAgICAgICQoZWxtKS5vZmYoXCJkcmFnc3RhcnRcIikub24oXCJkcmFnc3RhcnRcIiwoKT0+e1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIGxldCBldiA9IHdpbmRvdy5ldmVudCB8fCBhcmd1bWVudHMuY2FsbGVlLmNhbGxlci5hcmd1bWVudHNbMF1cclxuICAgICAgICAvLyAgICAgICAgICAgICBldi5kYXRhVHJhbnNmZXIuc2V0RGF0YShcIlRleHRcIixldi50YXJnZXQuaWQpO1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRFbGVtSWQ9ZXYudGFyZ2V0LmlkO1xyXG4gICAgICAgIC8vICAgICAgICAgfSlcclxuICAgICAgICAvLyAgICAgfSlcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gaWYoJCh0aGlzLnBhbmVsKS5maW5kKFwiZi1zZWxlY3RcIikubGVuZ3RoPjApe1xyXG4gICAgICAgIC8vICAgICAkKHRoaXMucGFuZWwpLmZpbmQoXCJmLXNlbGVjdFwiKS5lYWNoKChpbmQsZWxtKT0+e1xyXG4gICAgICAgIC8vICAgICAgICAgJChlbG0pLm9mZihcImRyYWdzdGFydFwiKS5vbihcImRyYWdzdGFydFwiLCgpPT57XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgbGV0IGV2ID0gd2luZG93LmV2ZW50IHx8IGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyLmFyZ3VtZW50c1swXVxyXG4gICAgICAgIC8vICAgICAgICAgICAgIGV2LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwiVGV4dFwiLGV2LnRhcmdldC5pZCk7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5fY3VycmVudEVsZW1JZD1ldi50YXJnZXQuaWQ7XHJcbiAgICAgICAgLy8gICAgICAgICB9KVxyXG4gICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBpZigkKHRoaXMucGFuZWwpLmZpbmQoXCJmLWRlcHRcIikubGVuZ3RoPjApe1xyXG4gICAgICAgIC8vICAgICAkKHRoaXMucGFuZWwpLmZpbmQoXCJmLWRlcHRcIikuZWFjaCgoaW5kLGVsbSk9PntcclxuICAgICAgICAvLyAgICAgICAgICQoZWxtKS5vZmYoXCJkcmFnc3RhcnRcIikub24oXCJkcmFnc3RhcnRcIiwoKT0+e1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIGxldCBldiA9IHdpbmRvdy5ldmVudCB8fCBhcmd1bWVudHMuY2FsbGVlLmNhbGxlci5hcmd1bWVudHNbMF1cclxuICAgICAgICAvLyAgICAgICAgICAgICBldi5kYXRhVHJhbnNmZXIuc2V0RGF0YShcIlRleHRcIixldi50YXJnZXQuaWQpO1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRFbGVtSWQ9ZXYudGFyZ2V0LmlkO1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIC8vIHNldEVsZW1lbnRQb3NpdGlvblxyXG4gICAgICAgIC8vICAgICAgICAgfSlcclxuICAgICAgICAvLyAgICAgfSlcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gaWYoJCh0aGlzLnBhbmVsKS5maW5kKFwiZi1zZWxlY3RhYm91dGZpZWxkXCIpLmxlbmd0aD4wKXtcclxuICAgICAgICAvLyAgICAgJCh0aGlzLnBhbmVsKS5maW5kKFwiZi1zZWxlY3RhYm91dGZpZWxkXCIpLmVhY2goKGluZCxlbG0pPT57XHJcbiAgICAgICAgLy8gICAgICAgICAkKGVsbSkub2ZmKFwiZHJhZ3N0YXJ0XCIpLm9uKFwiZHJhZ3N0YXJ0XCIsKCk9PntcclxuICAgICAgICAvLyAgICAgICAgICAgICBsZXQgZXYgPSB3aW5kb3cuZXZlbnQgfHwgYXJndW1lbnRzLmNhbGxlZS5jYWxsZXIuYXJndW1lbnRzWzBdXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgZXYuZGF0YVRyYW5zZmVyLnNldERhdGEoXCJUZXh0XCIsZXYudGFyZ2V0LmlkKTtcclxuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLl9jdXJyZW50RWxlbUlkPWV2LnRhcmdldC5pZDtcclxuICAgICAgICAvLyAgICAgICAgICAgICAvLyBzZXRFbGVtZW50UG9zaXRpb25cclxuICAgICAgICAvLyAgICAgICAgIH0pXHJcbiAgICAgICAgLy8gICAgIH0pXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGlmKCQodGhpcy5wYW5lbCkuZmluZChcImYtdHJlZWRlcGFydG1lbnRmaWVsZFwiKS5sZW5ndGg+MCl7XHJcbiAgICAgICAgLy8gICAgICQodGhpcy5wYW5lbCkuZmluZChcImYtdHJlZWRlcGFydG1lbnRmaWVsZFwiKS5lYWNoKChpbmQsZWxtKT0+e1xyXG4gICAgICAgIC8vICAgICAgICAgJChlbG0pLm9mZihcImRyYWdzdGFydFwiKS5vbihcImRyYWdzdGFydFwiLCgpPT57XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgbGV0IGV2ID0gd2luZG93LmV2ZW50IHx8IGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyLmFyZ3VtZW50c1swXVxyXG4gICAgICAgIC8vICAgICAgICAgICAgIGV2LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwiVGV4dFwiLGV2LnRhcmdldC5pZCk7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5fY3VycmVudEVsZW1JZD1ldi50YXJnZXQuaWQ7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgLy8gc2V0RWxlbWVudFBvc2l0aW9uXHJcbiAgICAgICAgLy8gICAgICAgICB9KVxyXG4gICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyBpZigkKHRoaXMucGFuZWwpLmZpbmQoXCJmLXVzZXJmaWVsZFwiKS5sZW5ndGg+MCl7XHJcbiAgICAgICAgLy8gICAgICQodGhpcy5wYW5lbCkuZmluZChcImYtdXNlcmZpZWxkXCIpLmVhY2goKGluZCxlbG0pPT57XHJcbiAgICAgICAgLy8gICAgICAgICAkKGVsbSkub2ZmKFwiZHJhZ3N0YXJ0XCIpLm9uKFwiZHJhZ3N0YXJ0XCIsKCk9PntcclxuICAgICAgICAvLyAgICAgICAgICAgICBsZXQgZXYgPSB3aW5kb3cuZXZlbnQgfHwgYXJndW1lbnRzLmNhbGxlZS5jYWxsZXIuYXJndW1lbnRzWzBdXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgZXYuZGF0YVRyYW5zZmVyLnNldERhdGEoXCJUZXh0XCIsZXYudGFyZ2V0LmlkKTtcclxuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLl9jdXJyZW50RWxlbUlkPWV2LnRhcmdldC5pZDtcclxuICAgICAgICAvLyAgICAgICAgICAgICAvLyBzZXRFbGVtZW50UG9zaXRpb25cclxuICAgICAgICAvLyAgICAgICAgIH0pXHJcbiAgICAgICAgLy8gICAgIH0pXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGlmKCQodGhpcy5wYW5lbCkuZmluZChcImYtZmxheW91dFwiKS5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICQodGhpcy5wYW5lbCkuZmluZChcImYtZmxheW91dFwiKS5lYWNoKChpbmQsZWxtKT0+e1xyXG4gICAgICAgICAgICAgICAgJChlbG0pLm9mZihcImRyb3BcIikub24oXCJkcm9wXCIsKCk9PntcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZXYgPSB3aW5kb3cuZXZlbnQgfHwgYXJndW1lbnRzLmNhbGxlZS5jYWxsZXIuYXJndW1lbnRzWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YT1ldi5kYXRhVHJhbnNmZXIuZ2V0RGF0YShcIlRleHRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgZXYudGFyZ2V0LmFwcGVuZENoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRhdGEpKTtcclxuICAgICAgICAgICAgICAgICAgICAvL1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRDaHVua0lkPWV2LnRhcmdldC5pZDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0RWxlbWVudENodW5rKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXBhaW50KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoJCh0aGlzLnBhbmVsKS5maW5kKFwiZi1jbGF5b3V0XCIpLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgJCh0aGlzLnBhbmVsKS5maW5kKFwiZi1jbGF5b3V0XCIpLmVhY2goKGluZCxlbG0pPT57XHJcbiAgICAgICAgICAgICAgICAkKGVsbSkub2ZmKFwiZHJvcFwiKS5vbihcImRyb3BcIiwoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBldiA9IHdpbmRvdy5ldmVudCB8fCBhcmd1bWVudHMuY2FsbGVlLmNhbGxlci5hcmd1bWVudHNbMF1cclxuICAgICAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRhPWV2LmRhdGFUcmFuc2Zlci5nZXREYXRhKFwiVGV4dFwiKTtcclxuICAgICAgICAgICAgICAgICAgICBldi50YXJnZXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGF0YSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudENodW5rSWQ9ZXYudGFyZ2V0LmlkO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXRFbGVtZW50Q2h1bmsoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcGFpbnQoKTtcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICByZXBhaW50KCl7XHJcbiAgICAgICAgdGhpcy5wYWludCgpO1xyXG4gICAgfVxyXG4gICAgLy/mlLnlj5jpvKDmoIfnirbmgIFcclxuICAgIGNoYW5nZVN0YXR1ZXMoc3RhdHVlcykge1xyXG5cclxuXHRcdHRoaXMuX3N0YXR1ZXMgPSBzdGF0dWVzO1xyXG5cdFx0c3dpdGNoICh0aGlzLl9zdGF0dWVzKSB7XHJcblx0XHRcdGNhc2UgRm9ybVBhbmVsLkFDVElPTl9OT1JNQUw6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhbmVsLnN0eWxlLmN1cnNvciA9IFwiZGVmYXVsdFwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIEZvcm1QYW5lbC5BQ1RJT05fSU5fRUxFTUVOVDpcclxuICAgICAgICAgICAgICAgIHRoaXMucGFuZWwuc3R5bGUuY3Vyc29yID0gXCJtb3ZlXCI7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgRm9ybVBhbmVsLkFDVElPTl9JTl9CQVNFTElORTpcclxuXHRcdFx0XHR0aGlzLnBhbmVsLnN0eWxlLmN1cnNvciA9IFwibi1yZXNpemVcIjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBGb3JtUGFuZWwuQUNUSU9OX0FSQ0hPUl9VUFBFUl9MRUZUOlxyXG5cdFx0XHRcdHRoaXMucGFuZWwuc3R5bGUuY3Vyc29yID0gJ253LXJlc2l6ZSc7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgRm9ybVBhbmVsLkFDVElPTl9BUkNIT1JfVVBQRVJfUklHSFQ6XHJcblx0XHRcdFx0dGhpcy5wYW5lbC5zdHlsZS5jdXJzb3IgPSAnbmUtcmVzaXplJztcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBGb3JtUGFuZWwuQUNUSU9OX0FSQ0hPUl9MT1dFUl9MRUZUOlxyXG5cdFx0XHRcdHRoaXMucGFuZWwuc3R5bGUuY3Vyc29yID0gJ3N3LXJlc2l6ZSc7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgRm9ybVBhbmVsLkFDVElPTl9BUkNIT1JfTE9XRVJfUklHSFQ6XHJcblx0XHRcdFx0dGhpcy5wYW5lbC5zdHlsZS5jdXJzb3IgPSAnc2UtcmVzaXplJztcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHR0aGlzLnBhbmVsLnN0eWxlLmN1cnNvciA9IFwiaW5pdGlhbFwiO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cdH1cclxuICAgIGhhbmRsZU1vdXNlTW92ZShlKSB7XHJcbiAgICAgICAgbGV0IHRoYXQ9dGhpcztcclxuICAgICAgICBsZXQge3gseX09dGhhdC5nZXRQb3NpdGlvbkJ5UGFuZWwyKHRoYXQucGFuZWwsZS5jbGllbnRYLGUuY2xpZW50WSk7XHJcbiAgICAgICAgaWYodGhhdC5pc0FsbG93RHJhdyl7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMe+8jG1vdmVcIilcclxuICAgICAgICAgICAgLy/lhYHorrjnu5jnlLvvvIzlvZPliY3nnIvlupTor6XmmK/mnInlhYPntKDpnIDopoHliqDov5twYW5lbOS4reeahOaDheWGtVxyXG4gICAgICAgICAgICBsZXQgY3VycmVudENodW5rPXRoYXQuc2VsZWN0ZWRDaHVuayh4LHkpO1xyXG4gICAgICAgICAgICBpZihjdXJyZW50Q2h1bmspe1xyXG4gICAgICAgICAgICAgICAgaWYoY3VycmVudENodW5rLnNjb3BlPT1cIkZsb3dMYXlvdXRcIiB8fCBjdXJyZW50Q2h1bmsuc2NvcGU9PVwiQ2VsbExheW91dFwiKXtcclxuICAgICAgICAgICAgICAgICAgICAvL+W9k+WJjem8oOagh+S4i+mdouacieW4g+WxgOWFg+e0oO+8jOmCo+Wwsee7p+e7reW+gOS4i+afpeaJvu+8jOaYr+WQpuacieS4i+S4gOWxgueahOW4g+WxgOWFg+e0oO+8jOaJvuWIsOacgOWQjuS4gOWxgu+8jOeEtuWQjuWwhmN1cnJlbnRjaHVua+abv+aNouaIkOW6leWxgueahOW4g+WxgFxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGN1cnJlbnRDaHVuay5lbGVtZW50Lmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIxMSxtb3ZlXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZWxlY3RDaHVuayA9IGN1cnJlbnRDaHVuay5nZXRTZWxlY3RlZEVsZW0oeCx5KTsvL+W9k+WJjeeahFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihzZWxlY3RDaHVuayl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9jdXJyZW50Q2h1bmsgPSBzZWxlY3RDaHVuaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50Q2h1bmsgPSBjdXJyZW50Q2h1bms7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdC5nZXRTZWxlY3RlZEVsZW0oY3VycmVudENodW5rLmVsZW1lbnQubGVuZ3RoLHgseSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2N1cnJlbnRDaHVuaz1jdXJyZW50Q2h1bms7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5fY3VycmVudENodW5rPWN1cnJlbnRDaHVuaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGF0Ll9jdXJyZW50Q2h1bms9bnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih0aGF0LmVsZW0gJiYgIXRoYXQuX2N1cnJlbnRDaHVuayl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygyLFwibW92ZVwiKTtcclxuICAgICAgICAgICAgICAgIC8v5pyJ5paw5YWD57Sg6ZyA6KaB55S777yM5bm25LiU5b2T5YmN6byg5qCH5L2N572u5LiL6Z2i5rKh5pyJ5Yy65Z+f5YWD57Sg77ybXHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh4LHkpXHJcbiAgICAgICAgICAgICAgICBsZXQge3gseX09dGhhdC5nZXRQb3NpdGlvbkJ5UGFuZWwodGhhdC5wYW5lbCxlLmNsaWVudFgsZS5jbGllbnRZKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGF0LmVsZW0uc2V0UHJvcHMoe3g6eCx5Onl9KTtcclxuICAgICAgICAgICAgfWVsc2UgaWYodGhhdC5lbGVtICYmIHRoYXQuX2N1cnJlbnRDaHVuayl7XHJcbiAgICAgICAgICAgICAgICAvL+acieaWsOWFg+e0oOmcgOimgeWKoOi/m+W4g+WxgOWFg+e0oOS4rVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coMywnbW92ZScpXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBlbHNlIGlmKHRoYXQuX2N1cnJlbnRDaHVuayYmdGhhdC5fY3VycmVudEVsZW0pe1xyXG4gICAgICAgICAgICAvLyAgICAgLy/ph43mlrDosIPmlbTluIPlsYDkuK3nmoTmn5DkuKrlhYPntKDkvY3nva5cclxuICAgICAgICAgICAgLy8gICAgIHRoYXQuX2N1cnJlbnRFbGVtLnNldFByb3BzKHtfaGFuZGxlUG9pbnRYOngsX2hhbmRsZVBvaW50WTp5fSk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgLy/kuI3lhYHorrjnu5jnlLvvvIzmi5bmi73lhYPntKDnmoTmg4XlhrVcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCI0LG1vdmVcIilcclxuICAgICAgICAgICAgaWYodGhhdC5fY3VycmVudENodW5rJiYhdGhhdC5fY3VycmVudEVsZW0gJiYgIXRoYXQuX2N1cnJlbnRPbmxpbmUpe1xyXG4gICAgICAgICAgICAgICAgLy/mi5bmi73lhYPntKDnmoTmg4XlhrVcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiNyxtb3ZlXCIpXHJcblxyXG4gICAgICAgICAgICAgICAgdGhhdC5jaGFuZ2VTdGF0dWVzKEZvcm1QYW5lbC5BQ1RJT05fSU5fRUxFTUVOVCk7XHJcbiAgICAgICAgICAgICAgICB0aGF0Ll9jdXJyZW50Q2h1bmsuY3Vyc29yPVwibW92ZVwiO1xyXG4gICAgICAgICAgICAgICAgLy8gaWYodGhhdC5fY3VycmVudE9ubGluZSAhPT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAvLyAgICAgLy9jb25zb2xlLmxvZygzKVxyXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoYXQuY2hhbmdlU3RhdHVlcyhGb3JtUGFuZWwuQUNUSU9OX0lOX0JBU0VMSU5FKTtcclxuICAgICAgICAgICAgICAgIC8vICAgICBpZih0aGlzLl9jdXJyZW50Q2h1bmsuc2NvcGU9PVwidGFibGVsYXlvdXRcIil7XHJcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIHRoYXQuX2N1cnJlbnRDaHVuay50cnNbdGhhdC5fY3VycmVudE9ubGluZV0uaGVpZ2h0ID0gdGhhdC5fY3VycmVudENodW5rLnRyc1t0aGF0Ll9jdXJyZW50T25saW5lXS5oZWlnaHRQcmUgKyB5IC0gdGhhdC5fY3VycmVudENodW5rLl9oYW5kbGVQb2ludFk7XHJcbiAgICAgICAgICAgICAgICAvLyAgICAgfWVsc2UgaWYodGhpcy5fY3VycmVudENodW5rLnNjb3BlPT1cIkZsb3dMYXlvdXRcIil7XHJcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIHRoaXMuX2N1cnJlbnRDaHVuay5oZWlnaHQ9dGhhdC5fY3VycmVudENodW5rLmhlaWdodFByZSArIHkgLSB0aGF0Ll9jdXJyZW50Q2h1bmsuX2hhbmRsZVBvaW50WVxyXG4gICAgICAgICAgICAgICAgLy8gICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyAgICAgLy9jb25zb2xlLmxvZyh4LHkpXHJcbiAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICB0aGF0LnJlcGFpbnQoKTtcclxuICAgICAgICAgICAgfWVsc2UgaWYodGhhdC5fY3VycmVudENodW5rJiZ0aGF0Ll9jdXJyZW50RWxlbSAmJiAhdGhhdC5fY3VycmVudE9ubGluZSl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyg1LFwibW92ZVwiKVxyXG5cclxuICAgICAgICAgICAgICAgIC8v5ouW5ou95biD5bGA5YWD57Sg5LiL55qE5YWD57SgXHJcbiAgICAgICAgICAgICAgICB0aGF0LmNoYW5nZVN0YXR1ZXMoRm9ybVBhbmVsLkFDVElPTl9JTl9FTEVNRU5UKTtcclxuICAgICAgICAgICAgICAgIHRoYXQuX2N1cnJlbnRFbGVtLmN1cnNvcj1cIm1vdmVcIjtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuX2N1cnJlbnRPbmxpbmUpXHJcbiAgICAgICAgICAgICAgICAvLyBpZih0aGF0Ll9jdXJyZW50T25saW5lICE9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgIC8vICAgICAvL2NvbnNvbGUubG9nKDMpXHJcbiAgICAgICAgICAgICAgICAvLyAgICAgdGhhdC5jaGFuZ2VTdGF0dWVzKEZvcm1QYW5lbC5BQ1RJT05fSU5fQkFTRUxJTkUpO1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIGlmKHRoaXMuX2N1cnJlbnRDaHVuay5zY29wZT09XCJ0YWJsZWxheW91dFwiKXtcclxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgdGhhdC5fY3VycmVudENodW5rLnRyc1t0aGF0Ll9jdXJyZW50T25saW5lXS5oZWlnaHQgPSB0aGF0Ll9jdXJyZW50Q2h1bmsudHJzW3RoYXQuX2N1cnJlbnRPbmxpbmVdLmhlaWdodFByZSArIHkgLSB0aGF0Ll9jdXJyZW50Q2h1bmsuX2hhbmRsZVBvaW50WTtcclxuICAgICAgICAgICAgICAgIC8vICAgICB9ZWxzZSBpZih0aGlzLl9jdXJyZW50Q2h1bmsuc2NvcGU9PVwiRmxvd0xheW91dFwiKXtcclxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy5fY3VycmVudENodW5rLmhlaWdodCA9IHRoaXMuX2N1cnJlbnRDaHVuay5oZWlnaHRQcmUrIHkgLSB0aGF0Ll9jdXJyZW50Q2h1bmsuX2hhbmRsZVBvaW50WTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgIHRoaXMuX2N1cnJlbnRFbGVtLmhlaWdodD10aGF0Ll9jdXJyZW50RWxlbS5oZWlnaHRQcmUgKyB5IC0gdGhhdC5fY3VycmVudEVsZW0uX2hhbmRsZVBvaW50WTtcclxuICAgICAgICAgICAgICAgIC8vICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gICAgIC8vY29uc29sZS5sb2coeCx5KVxyXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoYXQucmVwYWludCgpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgfWVsc2UgaWYodGhhdC5fY3VycmVudENodW5rICYmICF0aGF0Ll9jdXJyZW50RWxlbSAmJnRoYXQuX2N1cnJlbnRPbmxpbmUpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCI2LG1vdmVcIilcclxuXHJcbiAgICAgICAgICAgICAgICB0aGF0LmNoYW5nZVN0YXR1ZXMoRm9ybVBhbmVsLkFDVElPTl9JTl9CQVNFTElORSk7XHJcbiAgICAgICAgICAgICAgICBpZih0aGF0Ll9jdXJyZW50T25saW5lLnNjb3BlPT1cInRhYmxlbGF5b3V0XCIpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoYXQuX2N1cnJlbnRDaHVuay50cnNbdGhhdC5fY3VycmVudE9ubGluZV0uaGVpZ2h0ID0gdGhhdC5fY3VycmVudENodW5rLnRyc1t0aGF0Ll9jdXJyZW50T25saW5lXS5oZWlnaHRQcmUgKyB5IC0gdGhhdC5fY3VycmVudENodW5rLl9oYW5kbGVQb2ludFk7XHJcbiAgICAgICAgICAgICAgICB9ZWxzZSBpZih0aGF0Ll9jdXJyZW50T25saW5lLnNjb3BlPT1cIkZsb3dMYXlvdXRcIiB8fCB0aGF0Ll9jdXJyZW50T25saW5lLnNjb3BlPT1cIkNlbGxMYXlvdXRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5fY3VycmVudE9ubGluZS5oZWlnaHQgPSB0aGF0Ll9jdXJyZW50T25saW5lLmhlaWdodFByZSsgeSAtIHRoYXQuX2N1cnJlbnRPbmxpbmUuX2hhbmRsZVBvaW50WTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudENodW5rLmhlaWdodD10aGF0Ll9jdXJyZW50Q2h1bmsuaGVpZ2h0UHJlICsgeSAtIHRoYXQuX2N1cnJlbnRDaHVuay5faGFuZGxlUG9pbnRZO1xyXG4gICAgICAgICAgICAgICAgfWVsc2UgaWYodGhhdC5fY3VycmVudE9ubGluZS5zY29wZT09XCJ0ZXh0YXJlYVwiKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aGF0LmNoYW5nZVN0YXR1ZXMoRm9ybVBhbmVsLkFDVElPTl9BUkNIT1JfTE9XRVJfUklHSFQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuX2N1cnJlbnRPbmxpbmUud2lkdGggPSB0aGF0Ll9jdXJyZW50T25saW5lLndpZHRoUHJlKyB4IC0gdGhhdC5fY3VycmVudE9ubGluZS5faGFuZGxlUG9pbnRYO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuX2N1cnJlbnRPbmxpbmUuaGVpZ2h0ID0gdGhhdC5fY3VycmVudE9ubGluZS5oZWlnaHRQcmUrIHkgLSB0aGF0Ll9jdXJyZW50T25saW5lLl9oYW5kbGVQb2ludFk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudENodW5rLmhlaWdodD10aGF0Ll9jdXJyZW50Q2h1bmsuaGVpZ2h0UHJlICsgeSAtIHRoYXQuX2N1cnJlbnRDaHVuay5faGFuZGxlUG9pbnRZO1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKHgseSlcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRDaHVua1Bvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICB0aGF0LnJlcGFpbnQoKTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIm1vdmUsOFwiKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cdFx0XHJcbiAgICB9XHJcbiAgICAvL+aLluaLveWFg+e0oOeahOi+uee6v+aXtu+8jOmHjeaWsOehruiupOWQhOi+uee6v+eahOS9jee9rlxyXG4gICAgcmVzZXRDaHVua0NoaWxkcmVuKHgseSl7XHJcbiAgICAgICAgLy/mlLnlj5jlkIzkuIDkuKrluIPlsYDlhYPntKDnmoTlkITovrnnur/kvY3nva5cclxuICAgICAgICBpZih0aGlzLl9jdXJyZW50Q2h1bmsuc2NvcGU9PVwidGFibGVMYXlvdXRcIil7XHJcbiAgICAgICAgICAgIGxldCBjdXJyZW50Q2h1bmtDaGlsZHJlbj10aGlzLl9jdXJyZW50Q2h1bmsudHJzO1xyXG4gICAgICAgICAgICBsZXQgbGVuZ3RoPWN1cnJlbnRDaHVua0NoaWxkcmVuLmxlbmd0aDtcclxuICAgICAgICAgICAgbGV0IG1vdmVZPXkgLSB0aGlzLl9jdXJyZW50Q2h1bmsuX2hhbmRsZVBvaW50WTtcclxuICAgICAgICAgICAgbGV0IGhlaWdodD0wO1xyXG4gICAgICAgICAgICBsZXQgaT10aGlzLl9jdXJyZW50T25saW5lKzE7XHJcbiAgICAgICAgICAgIGN1cnJlbnRDaHVua0NoaWxkcmVuW3RoaXMuX2N1cnJlbnRPbmxpbmVdLnJlc2V0VGRMYXlvdXQobW92ZVkpXHJcbiAgICAgICAgICAgIGlmKGk9PWxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ9Y3VycmVudENodW5rQ2hpbGRyZW5baS0xXS55LWN1cnJlbnRDaHVua0NoaWxkcmVuWzBdLnkrY3VycmVudENodW5rQ2hpbGRyZW5baS0xXS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB0aGlzLl9jdXJyZW50T25saW5lLl9jdXJyZW50T25saW5lLmhlaWdodCA9IHRoaXMuX2N1cnJlbnRPbmxpbmUuX2N1cnJlbnRPbmxpbmUuaGVpZ2h0UHJlICsgeSAtIHRoaXMuX2N1cnJlbnRDaHVuay5faGFuZGxlUG9pbnRZO1xyXG4gICAgICAgICAgICBmb3IoO2k8bGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50Q2h1bmtDaGlsZHJlbltpXS55ID1jdXJyZW50Q2h1bmtDaGlsZHJlbltpXS55UHJlICsgbW92ZVk7Ly/kv67mlLnmr4/kuKp0cueahHlcclxuICAgICAgICAgICAgICAgIC8vIGN1cnJlbnRDaHVua0NoaWxkcmVuW2ldLmhlaWdodCArPSBtb3ZlWTtcclxuICAgICAgICAgICAgICAgIC8vIGN1cnJlbnRDaHVua0NoaWxkcmVuW2ldLnJlc2V0VGRMYXlvdXQobW92ZVkpXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhpKVxyXG4gICAgICAgICAgICAgICAgaWYoaT09bGVuZ3RoLTEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1jdXJyZW50Q2h1bmtDaGlsZHJlbltpXS55LWN1cnJlbnRDaHVua0NoaWxkcmVuWzBdLnkrY3VycmVudENodW5rQ2hpbGRyZW5baV0uaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRDaHVuay5oZWlnaHQ9aGVpZ2h0O1xyXG4gICAgICAgICAgICAvL+aUueWPmOWboOatpOWFg+e0oOaUueWPmOeahOWFtuS7luWFg+e0oOeahOWdkOagh+mXrumimFxyXG4gICAgICAgICAgICBsZXQgaW5kZXg9bnVsbDtcclxuICAgICAgICAgICAgdGhpcy5jaHVuay5mb3JFYWNoKChlbG0saW5kKT0+e1xyXG4gICAgICAgICAgICAgICAgaWYoZWxtLmlkPT10aGlzLl9jdXJyZW50Q2h1bmsuaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGluZGV4PWluZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5jaHVuay5mb3JFYWNoKChlbCxpKT0+e1xyXG4gICAgICAgICAgICAgICAgaWYoZWwuaWQhPT10aGlzLl9jdXJyZW50Q2h1bmsuaWQgJiYgaT5pbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgZWwueSArPSBtb3ZlWTtcclxuICAgICAgICAgICAgICAgICAgICBlbC5yZXNldFRyTGF5b3V0KG1vdmVZKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9ZWxzZSBpZih0aGlzLl9jdXJyZW50Q2h1bmsuc2NvcGU9PVwiRmxvd0xheW91dFwiIHx8IHRoaXMuX2N1cnJlbnRDaHVuay5zY29wZT09XCJDZWxsTGF5b3V0XCIpe1xyXG4gICAgICAgICAgICAvLyBsZXQgbW92ZVk9eSAtIHRoaXMuX2N1cnJlbnRDaHVuay5faGFuZGxlUG9pbnRZO1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9jdXJyZW50Q2h1bmsuaGVpZ2h0XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/ojrflvpfpvKDmoIfln7rkuo5wYW5lbOeahOWdkOagh+WAvFxyXG4gICAgLy/nlKjkuo7mlrDnlLvov5twYW5lbOeahOWFg+e0oOeahOebuOWvueS6jnBhbmVs55qE5Z2Q5qCH5YC8LDEuNuS5i+aJgOS7peebtOaOpeaLv+WFg+e0oOeahHdpZHRo77yM5piv5Zug5Li65ZyoY2h1bmvkuK3orrDlvZXnmoR3aWR0aOayoeaciei+ueahhueahOaNrumHjO+8jOaJgOS7peeul+S4iui/meS4qlxyXG5cdGdldFBvc2l0aW9uQnlQYW5lbChwYW5lbCl7XHJcbiAgICAgICAgbGV0IHBhbmVsV2lkdGg9JChwYW5lbCkud2lkdGgoKTtcclxuICAgICAgICBsZXQgd2lkdGg9MDtcclxuICAgICAgICBsZXQgaGVpZ2h0PTA7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRIZWlnaHQ9MDtcclxuICAgICAgICBsZXQgdGhhdD10aGlzO1xyXG4gICAgICAgIGlmKCQocGFuZWwpWzBdLmNoaWxkcmVuLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgbGV0IGxlbmd0aD0kKHBhbmVsKVswXS5jaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgICAgIGhlaWdodD0kKCQocGFuZWwpWzBdLmNoaWxkcmVuWzBdKS5oZWlnaHQoKTtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7aTxsZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgIHdpZHRoKz0kKCQocGFuZWwpWzBdLmNoaWxkcmVuW2ldKS53aWR0aCgpO1xyXG4gICAgICAgICAgICAgICAgaWYoaGVpZ2h0PT0wKXtcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9JCgkKHBhbmVsKVswXS5jaGlsZHJlbltpXSkuaGVpZ2h0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihoZWlnaHQ8JCgkKHBhbmVsKVswXS5jaGlsZHJlbltpXSkuaGVpZ2h0KCkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD0kKCQocGFuZWwpWzBdLmNoaWxkcmVuW2ldKS5oZWlnaHQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKHdpZHRoPj1wYW5lbFdpZHRoLTUgJiYgd2lkdGg8PTIqcGFuZWxXaWR0aCAmJiBpIT0wKXtcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aD0wO1xyXG4gICAgICAgICAgICAgICAgICAgIGktPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEhlaWdodCs9aGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD0wO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL+WwhueOsOacieeahOWFg+e0oOeahOWuvemrmOW+queOr+S6huS5i+WQju+8jOWPluWIsOacgOmrmOWSjOacgOmVv+eahO+8jOWGjeaLv2VsZW3nmoTnrpfkuIrljrtcclxuICAgICAgICAgICAgaWYod2lkdGgrdGhpcy5lbGVtLndpZHRoPnBhbmVsV2lkdGgpe1xyXG4gICAgICAgICAgICAgICAgd2lkdGg9MDtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRIZWlnaHQrPWhlaWdodDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB4OndpZHRoLFxyXG4gICAgICAgICAgICB5OmN1cnJlbnRIZWlnaHQsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/pvKDmoIfmjInkuIvnmoTml7blgJnojrflvpfpvKDmoIfngrnnm7jlr7nkuo5wYW5lbOeahOWdkOagh1xyXG4gICAgZ2V0UG9zaXRpb25CeVBhbmVsMihwYW5lbCx4LHkpe1xyXG4gICAgICAgIHZhciBiYm94ID0gcGFuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ICBcclxuXHRcdHJldHVybiB7ICBcclxuXHRcdFx0eDogKHggLSBiYm94LmxlZnQpICogKCQocGFuZWwpLndpZHRoKCkgLyBiYm94LndpZHRoKSwgICBcclxuXHRcdFx0eTogKHkgLSBiYm94LnRvcCkgKiAoJChwYW5lbCkuaGVpZ2h0KCkgLyBiYm94LmhlaWdodCkgIFxyXG5cdFx0fTsgXHJcbiAgICB9XHJcbiAgIFxyXG4gICAgc2V0RWxlbVBvc2l0aW9uKGVsZW0pe1xyXG4gICAgICAgIGxldCB7eCx5fT10aGlzLmdldFBvc2l0aW9uQnlQYW5lbCh0aGlzLnBhbmVsKTtcclxuICAgICAgICBlbGVtLnNldFByb3BzKHt4OngseTp5fSk7XHJcbiAgICB9XHJcblxyXG5cdGhhbmRsZU1vdXNlVXAoZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwidXBcIik7XHJcbiAgICAgICAgbGV0IHt4LHl9PXRoaXMuZ2V0UG9zaXRpb25CeVBhbmVsMih0aGlzLnBhbmVsLGUuY2xpZW50WCxlLmNsaWVudFkpO1xyXG4gICAgICAgIGxldCB0aGF0PXRoaXM7XHJcbiAgICAgICAgaWYodGhhdC5lbGVtICYmIHRoaXMuX2N1cnJlbnRDaHVuayl7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwidXBcIiwxKVxyXG4gICAgICAgICAgICAvL+acieimgeaUvui/m+W4g+WxgOeahOWFg+e0oFxyXG4gICAgICAgICAgICB0aGlzLmFkZEVsZW1lbnRUb0NodW5rKHRoaXMuZWxlbSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRDaHVuay5yZXNldENodW5rRWxlbVBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVwYWludCgpO1xyXG4gICAgICAgICAgICB0aGlzLmVsZW09bnVsbDtcclxuICAgICAgICAgICAgdGhpcy5fY3VycmVudENodW5rPW51bGw7XHJcbiAgICAgICAgfWVsc2UgaWYodGhhdC5lbGVtICYmICF0aGlzLl9jdXJyZW50Q2h1bmspe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInVwXCIsMilcclxuICAgICAgICAgICAgLy/mnInopoHmlL7ov5twYW5lbOeahOWFg+e0oFxyXG4gICAgICAgICAgICB0aGlzLmFkZEVsZW1lbnQodGhpcy5lbGVtKTtcclxuICAgICAgICAgICAgdGhpcy5yZXBhaW50KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbT1udWxsO1xyXG4gICAgICAgIH1lbHNlIGlmKHRoaXMuX2N1cnJlbnRDaHVuayAmJiB0aGlzLl9jdXJyZW50RWxlbSAmJiB0aGlzLl9jdXJyZW50T25saW5lKXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJ1cFwiLDMpXHJcblxyXG4gICAgICAgICAgICAvL+acieimgeWcqOW4g+WxgOS4reiwg+aVtOS9jee9rueahOWFg+e0oFxyXG4gICAgICAgICAgICB0aGlzLmlzQWxsb3dEcmF3PWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0RWxlbWVudFRvQ2h1bmsoKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMucmVwYWludCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50Q2h1bms9bnVsbDtcclxuICAgICAgICAgICAgdGhpcy5fY3VycmVudEVsZW09bnVsbDtcclxuICAgICAgICAgICAgdGhpcy5fY3VycmVudE9ubGluZT1udWxsO1xyXG5cclxuICAgICAgICB9ZWxzZSBpZih0aGlzLl9jdXJyZW50T25saW5lIT09bnVsbCAmJiB0aGlzLl9jdXJyZW50Q2h1bmspe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInVwXCIsNClcclxuXHJcbiAgICAgICAgICAgIC8v5pyJ6KaB6LCD5pW06L6557q/55qEKOW4g+WxgCnlhYPntKBcclxuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5fY3VycmVudENodW5rKVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh4LHkpXHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRDaHVua0NoaWxkcmVuKHgseSlcclxuICAgICAgICAgICAgdGhpcy5yZXBhaW50KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRDaHVuaz1udWxsO1xyXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50RWxlbT1udWxsO1xyXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50T25saW5lPW51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwidXBcIiw1KVxyXG4gICAgICAgICAgICB0aGlzLmlzQWxsb3dEcmF3PWZhbHNlO1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9jdXJyZW50Q2h1bms9bnVsbDtcclxuICAgICAgICAgICAgLy8gdGhpcy5fY3VycmVudEVsZW09bnVsbDtcclxuICAgICAgICAgICAgLy8gdGhpcy5fY3VycmVudE9ubGluZT1udWxsO1xyXG4gICAgICAgICAgICAvLyBpZih0aGlzLl9jdXJyZW50Q2h1bmspe1xyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5fY3VycmVudENodW5rPW51bGw7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcblx0fVxyXG5cclxuXHRoYW5kbGVNb3VzZURvd24oZSkge1xyXG4gICAgICAgIGxldCB7eCx5fT10aGlzLmdldFBvc2l0aW9uQnlQYW5lbDIodGhpcy5wYW5lbCxlLmNsaWVudFgsZS5jbGllbnRZKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh4LHkpXHJcbiAgICAgICAgbGV0IGN1cnJlbnRDaHVuaz10aGlzLnNlbGVjdGVkQ2h1bmsoeCx5KTtcclxuICAgICAgICB0aGlzLl9jdXJyZW50Q2h1bms9Y3VycmVudENodW5rO1xyXG4gICAgICAgIGlmKGUuYnV0dG9uID09IDApe1xyXG4gICAgICAgICAgICBjb25zdCBtZW51ID0gTWVudS5nZXRJbnN0YW5jZSgpO1xyXG5cdFx0XHQvL2NvbnNvbGUubG9nKG1lbnUpO1xyXG5cdFx0XHRpZihtZW51LmdldFByb3AoJ2hhc01lbnUnKSAmJiBtZW51LmdldFByb3AoJ2lzU2hvd01lbnUnKSkge1xyXG5cdFx0XHRcdG1lbnUuaGlkZU1lbnUoKTtcclxuXHRcdFx0fVxyXG4gICAgICAgICAgICBpZihjdXJyZW50Q2h1bmspe1xyXG4gICAgICAgICAgICAgICAgLy/lvZPliY3pvKDmoIfngrnlh7vnmoTmmK/ljLrln59cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMSxkb3duXCIpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzQWxsb3dEcmF3PWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFByb3BFbGVtPXRoaXMuX2N1cnJlbnRDaHVuaztcclxuICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRDaHVuay5zZXRQcm9wcyh7X2hhbmRsZVBvaW50WDp4LF9oYW5kbGVQb2ludFk6eSxpc0VkaXQ6dHJ1ZSx9KTtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuX2N1cnJlbnRDaHVuay5zY29wZT09XCJ0YWJsZWxheW91dFwiKXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudEVsZW1lbnRUPXRoaXMuc2VsZWN0ZWRUYWJsZUNodW5rRWxlbWVudCh4LHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50T25saW5lVD10aGlzLmlzT25CYXNlTGluZSh0aGlzLl9jdXJyZW50Q2h1bmsseCx5KTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjdXJyZW50T25saW5lVClcclxuICAgICAgICAgICAgICAgICAgICBpZihjdXJyZW50RWxlbWVudFQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudEVsZW09Y3VycmVudEVsZW1lbnRUO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50UHJvcEVsZW09dGhpcy5fY3VycmVudEVsZW07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50RWxlbS5zZXRQcm9wcyh7X2hhbmRsZVBvaW50WDp4LF9oYW5kbGVQb2ludFk6eX0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmKGN1cnJlbnRPbmxpbmVUICE9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudE9ubGluZT1jdXJyZW50T25saW5lVDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zYXZlUHJlWChjdXJyZW50Q2h1bmsudHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5fY3VycmVudE9ubGluZS5fY3VycmVudE9ubGluZS54UHJlPSB0aGlzLl9jdXJyZW50T25saW5lLl9jdXJyZW50T25saW5lLng7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuX2N1cnJlbnRPbmxpbmUuX2N1cnJlbnRPbmxpbmUueVByZT0gdGhpcy5fY3VycmVudE9ubGluZS5fY3VycmVudE9ubGluZS55O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50Q2h1bmsudHJzW3RoaXMuX2N1cnJlbnRPbmxpbmVdLndpZHRoUHJlPSB0aGlzLl9jdXJyZW50Q2h1bmsudHJzW3RoaXMuX2N1cnJlbnRPbmxpbmVdLndpZHRoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50Q2h1bmsudHJzW3RoaXMuX2N1cnJlbnRPbmxpbmVdLmhlaWdodFByZT0gdGhpcy5fY3VycmVudENodW5rLnRyc1t0aGlzLl9jdXJyZW50T25saW5lXS5oZWlnaHQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1lbHNlIGlmKHRoaXMuX2N1cnJlbnRDaHVuay5zY29wZT09XCJGbG93TGF5b3V0XCIgfHwgdGhpcy5fY3VycmVudENodW5rLnNjb3BlPT1cIkNlbGxMYXlvdXRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRFbGVtZW50Rj10aGlzLnNlbGVjdGVkQ2h1bmtFbGVtZW50KHgseSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRPbmxpbmVGPXRoaXMuaXNPbkJhc2VMaW5lKHRoaXMuX2N1cnJlbnRDaHVuayx4LHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGN1cnJlbnRFbGVtZW50RilcclxuICAgICAgICAgICAgICAgICAgICBpZihjdXJyZW50RWxlbWVudEYpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL+W9k+WJjemAieS4reWFg+e0oO+8jOi/meS4quWFg+e0oOaYr+W4g+WxgOS4i+eahOWFg+e0oFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmlzQWxsb3dEcmF3PXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRFbGVtPWN1cnJlbnRFbGVtZW50RjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudFByb3BFbGVtPXRoaXMuX2N1cnJlbnRFbGVtO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudEVsZW0uc2V0UHJvcHMoe3ByZVg6eCxwcmVZOnl9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYoY3VycmVudE9ubGluZUYpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL+W9k+WJjemAieS4reW4g+WxgOeahOi+uee6v1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50T25saW5lPWN1cnJlbnRPbmxpbmVGO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50T25saW5lLmhlaWdodFByZT0gdGhpcy5fY3VycmVudE9ubGluZS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRDaHVuay5oZWlnaHRQcmU9IHRoaXMuX2N1cnJlbnRDaHVuay5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRPbmxpbmUuc2V0UHJvcHMoe19oYW5kbGVQb2ludFg6eCxfaGFuZGxlUG9pbnRZOnksaXNFZGl0OnRydWUsfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuX2N1cnJlbnRPbmxpbmUuc2NvcGU9PVwidGV4dGFyZWFcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+atpOaXtuW6lOivpeWvueWkmuihjOaWh+acrOahhueahOaJgOacieS4iue6p+W4g+WxgOWFg+e0oOS/neWtmOWAvO+8jOeEtuWQjuWcqG1vdmXkuK3lnKjov5vooYzmlLnlj5hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuc2V0U3ViRGF0YSh4LHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jaGFuZ2VDaHVuayxcImNoYW5nZWNodW5rXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudE9ubGluZS53aWR0aFByZT0gdGhpcy5fY3VycmVudE9ubGluZS53aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50RWxlbT1jdXJyZW50RWxlbWVudEY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAvL+mAieS4reeahOaYr+W4g+WxgOS4i+W4g+WxgOeahOi+uee6v1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjdXJyZW50T25saW5lRj10aGlzLmlzT25CYXNlTGluZSh0aGlzLl9jdXJyZW50RWxlbSx4LHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLl9jdXJyZW50RWxlbS5zZXRQcm9wcyh7X2hhbmRsZVBvaW50WDp4LF9oYW5kbGVQb2ludFk6eX0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLl9jdXJyZW50UHJvcEVsZW09dGhpcy5fY3VycmVudEVsZW07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLl9jdXJyZW50RWxlbS5oZWlnaHRQcmU9IHRoaXMuX2N1cnJlbnRFbGVtLmhlaWdodDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuX2N1cnJlbnRDaHVuay5oZWlnaHRQcmU9IHRoaXMuX2N1cnJlbnRDaHVuay5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuX2N1cnJlbnRPbmxpbmU9Y3VycmVudE9ubGluZUY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGN1cnJlbnRPbmxpbmVGKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1lbHNlIGlmKHRoaXMuX2N1cnJlbnRDaHVuay5zY29wZT09XCJ0ZXh0YXJlYVwiKXtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRPbmxpbmVUZSA9IHRoaXMuX2N1cnJlbnRDaHVuay5pc09uQmFzZUxpbmUoeCx5KTtcclxuICAgICAgICAgICAgICAgICAgICBpZihjdXJyZW50T25saW5lVGUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50T25saW5lPWN1cnJlbnRPbmxpbmVUZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudE9ubGluZS5oZWlnaHRQcmU9IHRoaXMuX2N1cnJlbnRPbmxpbmUuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50T25saW5lLndpZHRoUHJlPSB0aGlzLl9jdXJyZW50T25saW5lLndpZHRoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50T25saW5lLnNldFByb3BzKHtfaGFuZGxlUG9pbnRYOngsX2hhbmRsZVBvaW50WTp5LGlzRWRpdDp0cnVlLH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLl9jdXJyZW50RWxlbS5zZXRQcm9wcyh7eDp4LHk6eX0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VTdGF0dWVzKEZvcm1QYW5lbC5BQ1RJT05fSU5fRUxFTUVOVCk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0FsbG93RHJhdz10cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VTdGF0dWVzKEZvcm1QYW5lbC5BQ1RJT05fTk9STUFMKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNlIGlmKGUuYnV0dG9uID09IDIpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIueCueWHu+eahOm8oOagh+WPs+mUrlwiKTtcclxuICAgICAgICAgICAgY29uc3QgbWVudSA9IE1lbnUuZ2V0SW5zdGFuY2UoKTtcclxuICAgICAgICAgICAgaWYoY3VycmVudENodW5rKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNBbGxvd0RyYXc9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BFbGVtZW50RGVmYXVsdE1lbnUodGhpcy5wYW5lbCk7Ly/pmLvmraLljZXkuKrnmoR0ZOm7mOiupOS6i+S7tuS4jeeUn+aViO+8jOWFiOaaguaXtumYu+atouaVtOS4qnBhbmVs55qE6buY6K6k5LqL5Lu2XHJcblxyXG4gICAgICAgICAgICAgICAgaWYoY3VycmVudENodW5rICYmIGN1cnJlbnRDaHVuay5zY29wZT09XCJ0YWJsZWxheW91dFwiKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCB0YXJnZXQgPSBlLnRhcmdldDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQge25vd1Jvd0luZGV4LG5vd0NvbEluZGV4LHJlYWxSb3dJbmRleH09dGhpcy5zZWxlY3RlZENodW5rUGFydCh4LHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm93Um93SW5kZXg9bm93Um93SW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3dDb2xJbmRleD1ub3dDb2xJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWxSb3dJbmRleD1yZWFsUm93SW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9wRWxlbWVudERlZmF1bHRNZW51KHRoaXMucGFuZWwpOy8v6Zi75q2i5Y2V5Liq55qEdGTpu5jorqTkuovku7bkuI3nlJ/mlYjvvIzlhYjmmoLml7bpmLvmraLmlbTkuKpwYW5lbOeahOm7mOiupOS6i+S7tlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuX2N1cnJlbnRDaHVuaylcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLl9jdXJyZW50Q2h1bmsgJiYgdGhpcy5fY3VycmVudENodW5rLmlzU2VsZWN0ZWQoeCwgeSkpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnUuc2V0UHJvcHMoe3RhcmdldDogZSwgZm9ybTogdGhpc30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInllc1wiLHRoaXMpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInllc1wiLHRoaXMuX2N1cnJlbnRDaHVuaylcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVudS5zaG93TWVudShcInRhYmxlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnUuaGlkZU1lbnUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfWVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLl9jdXJyZW50Q2h1bmsgfHwgdGhpcy5fY3VycmVudEVsZW0pIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnUuc2V0UHJvcHMoe3RhcmdldDogZSwgZm9ybTogdGhpc30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51LnNob3dNZW51KFwiZmxvd1wiKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51LmhpZGVNZW51KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblx0XHRjb25zb2xlLmxvZyhcImRvd25cIik7XHJcbiAgICB9XHJcbiAgICAvL+WvueS6juW4g+WxgOWGheeahOWkmuihjOaWh+acrOahhu+8jOmcgOimgeS/neWtmOWkmuihjOaWh+acrOahhueahOS4iue6p+eahOS4gOS6m+WPguaVsO+8jOeEtuWQjue7mW1vdmXnmoTml7blgJnnlKhcclxuICAgIHNldFN1YkRhdGEoeCx5KXtcclxuICAgICAgICB0aGlzLmNoYW5nZUNodW5rPXRoaXMuX2N1cnJlbnRDaHVuay5nZXRDaGFuZ2VDaHVuayh4LHkpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgc2F2ZVByZVgoY3VycmVudENodW5rQ2hpbGRyZW4pe1xyXG4gICAgICAgIGxldCBsZW5ndGg9Y3VycmVudENodW5rQ2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICAgIGZvcihsZXQgaT0wO2k8bGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGN1cnJlbnRDaHVua0NoaWxkcmVuW2ldLnhQcmU9Y3VycmVudENodW5rQ2hpbGRyZW5baV0ueDtcclxuICAgICAgICAgICAgY3VycmVudENodW5rQ2hpbGRyZW5baV0ueVByZT1jdXJyZW50Q2h1bmtDaGlsZHJlbltpXS55O1xyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+Wxj+iUvea1j+iniOWZqOm7mOiupOeahOWPs+mUruiPnOWNlVxyXG5cdHN0b3BFbGVtZW50RGVmYXVsdE1lbnUodGFyZ2V0KSB7XHJcblx0XHR0YXJnZXQub25jb250ZXh0bWVudSAgPSAoZXYpID0+IHtcclxuXHRcdFx0cmV0dXJuIGZhbHNlOyAgIC8v5bGP6JS95Y+z6ZSu6I+c5Y2VXHJcblx0XHR9XHJcblx0fVxyXG4gICAgLy/liKTmlq3pvKDmoIfmjInkuIvnmoTkvY3nva7lnKjkuI3lnKjnu4Tku7bnmoTovrnnur/kuIrvvIzov5nkuKrlupTor6Xnu5nmr4/kuKrluIPlsYDnu4Tku7bmlrnms5XvvIznhLblkI7orqnku5bku6zoh6rooYzliKTmlq1cclxuICAgIGlzT25CYXNlTGluZShjdXJyZW50Q2h1bmsseCx5KXtcclxuICAgICAgICBsZXQgY3VycmVudD1udWxsO1xyXG4gICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy5jaHVuay5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgaWYoY3VycmVudCl7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih0aGlzLmNodW5rW2ldLmlzT25CYXNlTGluZSl7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50PXRoaXMuY2h1bmtbaV0uaXNPbkJhc2VMaW5lKHgseSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY3VycmVudCl7XHJcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL2NvbnNvbGUubG9nKGN1cnJlbnRDaHVuaylcclxuICAgICAgICAvLyBjb25zdCBzY29wZT1jdXJyZW50Q2h1bmsuc2NvcGU7XHJcbiAgICAgICAgLy8gc3dpdGNoKHNjb3BlKXtcclxuICAgICAgICAvLyAgICAgY2FzZSAndGFibGVsYXlvdXQnOlxyXG4gICAgICAgIC8vICAgICAgICAgbGV0IHJvd3M9Y3VycmVudENodW5rLnJvd3M7XHJcbiAgICAgICAgLy8gICAgICAgICBmb3IobGV0IGk9MDtpPHJvd3M7aSsrKXtcclxuICAgICAgICAvLyAgICAgICAgICAgICBpZih5PGN1cnJlbnRDaHVuay50cnNbaV0ueStjdXJyZW50Q2h1bmsudHJzW2ldLmhlaWdodCs1ICYmIHk+Y3VycmVudENodW5rLnRyc1tpXS55K2N1cnJlbnRDaHVuay50cnNbaV0uaGVpZ2h0LTUpe1xyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICByZXR1cm4gaVxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAvLyB7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgIC8vICAgICBpOmksXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAvLyBfY3VycmVudE9ubGluZTpjdXJyZW50Q2h1bmsudHJzW2ldLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgLy8gX2N1cnJlbnRDaHVua0NoaWxkcmVuOmN1cnJlbnRDaHVuay50cnNcclxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgLy8gfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgfVxyXG4gICAgICAgIC8vICAgICAgICAgfSBcclxuICAgICAgICAvLyAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vICAgICBjYXNlICdGbG93TGF5b3V0JzpcclxuICAgICAgICAvLyAgICAgICAgIGlmKHk8Y3VycmVudENodW5rLnkrY3VycmVudENodW5rLmhlaWdodCs1ICYmIHk+Y3VycmVudENodW5rLnkrY3VycmVudENodW5rLmhlaWdodC01KXtcclxuICAgICAgICAvLyAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIC8vICAgICAgICAgfVxyXG4gICAgICAgIC8vICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgLy8gICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgLy/ph43mlrDorqHnrpfmiYDmnInlhYPntKDnmoTlnZDmoIflgLxcclxuICAgIHJlc2V0Q2h1bmtQb3NpdGlvbigpe1xyXG4gICAgICAgIGxldCB4PTAseT0wO1xyXG4gICAgICAgIGxldCBiaWdIZWlnaHQ9MDtcclxuICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMuY2h1bmsubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGlmKGJpZ0hlaWdodDx0aGlzLmNodW5rW2ldLmhlaWdodCliaWdIZWlnaHQ9dGhpcy5jaHVua1tpXS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIHRoaXMuY2h1bmtbaV0ueD14O3RoaXMuY2h1bmtbaV0ueT15O1xyXG4gICAgICAgICAgICBpZih0aGlzLmNodW5rW2ldLnNjb3BlPT1cIkZsb3dMYXlvdXRcIiB8fCB0aGlzLmNodW5rW2ldLnNjb3BlPT1cIkNlbGxMYXlvdXRcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNodW5rW2ldLnJlc2V0Q2h1bmtFbGVtUG9zaXRpb24oKTsgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB4Kz10aGlzLmNodW5rW2ldLndpZHRoO1xyXG4gICAgICAgICAgICBpZih0aGlzLmNodW5rW2krMV0pe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5jaHVua1tpKzFdLndpZHRoK3g+dGhpcy53aWR0aCl7XHJcbiAgICAgICAgICAgICAgICAgICAgeD0wO3k9YmlnSGVpZ2h0K3RoaXMuY2h1bmtbaV0ueTtcclxuICAgICAgICAgICAgICAgICAgICBiaWdIZWlnaHQ9MDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5biD5bGA5YaF55qE5YWD57Sg6YeN5paw56Gu5a6a5omA5bGe5biD5bGAKOeUqOS6juihqOagvOW4g+WxgOWFg+e0oOmHjeaWsOehruWumuaOp+S7tuaJgOWxnuWNleWFg+agvClcclxuICAgIHJlc2V0RWxlbWVudFRvQ2h1bmsoKXtcclxuICAgICAgICBpZih0aGlzLl9jdXJyZW50Q2h1bmsucmVzZXRFbGVtZW50VG9DaHVuaylcclxuICAgICAgICB0aGlzLl9jdXJyZW50Q2h1bmsucmVzZXRFbGVtZW50VG9DaHVuayh0aGlzLl9jdXJyZW50RWxlbSk7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5jaHVuaylcclxuICAgIH1cclxuICAgIC8v5biD5bGA5YaF55qE5YWD57Sg6YeN5paw56Gu5a6a5omA5bGe5biD5bGAKOaaguaXtueUqOS6jmZsb3dsYXlvdXTluIPlsYDvvIzkuI3noa7lrprmmK/lkKbpgJrnlKgpXHJcbiAgICByZXNldEVsZW1lbnRDaHVuaygpe1xyXG4gICAgICAgIC8v5YWI5ou/5YiwZXZlbnTkuIvnmoRpZO+8jOeEtuWQjuWIpOaWreaYr+S4jeaYr+WuueWZqGlk77yMXHJcbiAgICAgICAgbGV0IGV2ID0gd2luZG93LmV2ZW50IHx8IGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyLmFyZ3VtZW50c1swXTtcclxuICAgICAgICBsZXQgZGF0YT1ldi5kYXRhVHJhbnNmZXIuZ2V0RGF0YShcIlRleHRcIik7XHJcbiAgICAgICAgbGV0IGRlbEVsbT1udWxsO1xyXG4gICAgICAgIGxldCBpc0NodW5rPWZhbHNlO1xyXG4gICAgICAgIC8v5YWI5Yik5pat57uZ55qEY2h1bmtpZOaYr+W4g+WxgOWFg+e0oFxyXG4gICAgICAgIGlmKHRoaXMuX2N1cnJlbnRDaHVua0lkKXtcclxuICAgICAgICAgICAgZm9yKGxldCBqPTA7ajx0aGlzLmNodW5rLmxlbmd0aDtqKyspe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5jaHVua1tqXS5pZD09dGhpcy5fY3VycmVudENodW5rSWQgJiYgKHRoaXMuY2h1bmtbal0uc2NvcGU9PVwiRmxvd0xheW91dFwifHx0aGlzLmNodW5rW2pdLnNjb3BlPT1cIkNlbGxMYXlvdXRcIikpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlzQ2h1bms9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1lbHNlIGlmKHRoaXMuY2h1bmtbal0uZWxlbWVudCAmJiB0aGlzLmNodW5rW2pdLmVsZW1lbnQubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgICAgIGlzQ2h1bms9dGhpcy5jaHVua1tqXS5lbGVtSXNDaHVuayh0aGlzLl9jdXJyZW50Q2h1bmtJZClcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGlzQ2h1bms9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy/lhYjlvqrnjq90cnVua++8jOeEtuWQjuaJvuWIsOWvueW6lGlk55qE5YWD57Sg77yM5ZCn6L+Z5Liq5YWD57Sg5LuO6L+Z5Liq5Yy65Z+f5Lit5Yig6ZmkXHJcbiAgICAgICAgaWYodGhpcy5fY3VycmVudENodW5rSWQmJiB0aGlzLl9jdXJyZW50RWxlbUlkICYmIGlzQ2h1bmspe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMuY2h1bmsubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmNodW5rW2ldLmlkPT10aGlzLl9jdXJyZW50RWxlbUlkKXtcclxuICAgICAgICAgICAgICAgICAgICBkZWxFbG09dGhpcy5jaHVua1tpXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNodW5rLnNwbGljZShpLDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRFbGVtSWQ9bnVsbDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBpZiggdGhpcy5jaHVua1tpXS5lbGVtZW50JiZ0aGlzLmNodW5rW2ldLmVsZW1lbnQubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxFbG09dGhpcy5jaHVua1tpXS5kZWxFbGVtKHRoaXMuX2N1cnJlbnRFbGVtSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihkZWxFbG0pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudEVsZW1JZD1udWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYodGhpcy5fY3VycmVudENodW5rSWQ9PVwiZm9ybUJvYXJkXCIgJiYgZGVsRWxtKXtcclxuICAgICAgICAgICAgICAgIC8v5YaN5oqK6L+Z5Liq5YWD57Sg5Yqg5Yiw5a655Zmo5YaFXHJcbiAgICAgICAgICAgICAgICBkZWxFbG0uaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEVsZW1lbnQoZGVsRWxtKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudENodW5rSWQ9bnVsbDtcclxuXHJcbiAgICAgICAgICAgIH1lbHNlIGlmKGRlbEVsbSl7XHJcbiAgICAgICAgICAgICAgICAvLyDnhLblkI7lnKjlvqrnjq90cnVua++8jOWwhui/meS4quWFg+e0oOWKoOWFpeWIsOWvueW6lGlk55qE5Yy65Z+f5LitXHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGE9MDthPHRoaXMuY2h1bmsubGVuZ3RoO2ErKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5jaHVua1thXS5pZD09dGhpcy5fY3VycmVudENodW5rSWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmNodW5rW2FdLnNjb3BlPT1cIkZsb3dMYXlvdXRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxFbG0uaXNibG9jaz1cImZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxFbG0ud2lkdGg9ZGVsRWxtLnByZVdpZHRoP2RlbEVsbS5wcmVXaWR0aDpkZWxFbG0ud2lkdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmKHRoaXMuY2h1bmtbYV0uc2NvcGU9PVwiQ2VsbExheW91dFwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbEVsbS5pc2Jsb2NrPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsRWxtLnByZVdpZHRoPWRlbEVsbS53aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbEVsbS53aWR0aD10aGlzLndpZHRoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2h1bmtbYV0uZWxlbWVudC5wdXNoKGRlbEVsbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2h1bmtbYV0ucmVzZXRDaHVua0VsZW1Qb3NpdGlvbigpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRDaHVua0lkPW51bGw7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmNodW5rW2FdLmVsZW1lbnQgJiYgdGhpcy5jaHVua1thXS5lbGVtZW50Lmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2h1bmtbYV0uYWRkRWxlbSh0aGlzLl9jdXJyZW50Q2h1bmtJZCxkZWxFbG0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3VycmVudENodW5rSWQ9bnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnJlc2V0Q2h1bmtQb3NpdGlvbigpO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/pvKDmoIfmjInkuIvliKTmlq3mmK/lkKbpgInmi6nljLrln58vL+atpOaXtui/mOimgeWIpOaWreW9k+WJjem8oOagh+aYr+WQpuWcqOW4g+WxgOS4i+W4g+WxgOWMuuWfn1xyXG4gICAgc2VsZWN0ZWRDaHVuayh4LHkpe1xyXG4gICAgICAgIGNvbnN0IGxlbj10aGlzLmNodW5rLmxlbmd0aDtcclxuICAgICAgICBmb3IobGV0IGk9MDtpPGxlbjtpKyspe1xyXG4gICAgICAgICAgICBpZih0aGlzLmNodW5rW2ldLngtNTx4JiZ0aGlzLmNodW5rW2ldLngrdGhpcy5jaHVua1tpXS53aWR0aCs1PngmJnRoaXMuY2h1bmtbaV0ueS01PHkmJnRoaXMuY2h1bmtbaV0ueSt0aGlzLmNodW5rW2ldLmhlaWdodCs1Pnkpe1xyXG4gICAgICAgICAgICAgICAgLy8gaWYodGhpcy5jaHVuay5lbGVtZW50Lmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgIC8vICAgICBsZXQgZWxlbUxlbmd0aD10aGlzLmNodW5rLmVsZW1lbnQubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2h1bmtbaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIGdldFNlbGVjdGVkRWxlbShsZW5ndGgseCx5KXtcclxuICAgIC8vICAgICBmb3IobGV0IGo9MDtqPGxlbmd0aDtqKyspe1xyXG4gICAgLy8gICAgICAgICBpZih0aGlzLl9jdXJyZW50Q2h1bmsuZWxlbWVudFtqXS5zY29wZT09XCJGbG93TGF5b3V0XCIpe1xyXG4gICAgLy8gICAgICAgICAgICAgaWYodGhpcy5fY3VycmVudENodW5rLmVsZW1lbnRbal0ueC01PHgmJnRoaXMuX2N1cnJlbnRDaHVuay5lbGVtZW50W2pdLngrdGhpcy5fY3VycmVudENodW5rLmVsZW1lbnRbal0ud2lkdGgrNT54JiZ0aGlzLl9jdXJyZW50Q2h1bmsuZWxlbWVudFtqXS55LTU8eSYmdGhpcy5fY3VycmVudENodW5rLmVsZW1lbnRbal0ueSt0aGlzLl9jdXJyZW50Q2h1bmsuZWxlbWVudFtqXS5oZWlnaHQrNT55KXtcclxuICAgIC8vICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudENodW5rLmVsZW1lbnRbal07XHJcbiAgICAvLyAgICAgICAgICAgICB9ICBcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyB9XHJcbiAgICAvKipcclxuICAgICAqIOehruiupOW9k+WJjem8oOagh+mAieS4reeahOaYr3RhYmxl5LiL6Z2i55qE5ZOq5LiA5LiqdHIs5ZOq5LiA5LiqdGRcclxuICAgICAqIDIwMTkuMTIuMTMg5ZyodHLlsYLkuI3ov5vooYzliKTmlq3vvIzlm6DkuLrlkIjlubbljZXlhYPmoLzkuYvlkI50cueahOmrmOW6puaYr+S4jeWPmOeahOOAguS9huaYr+WmguaenOS4jeWcqHRy5bGC6L+b6KGM5Yik5pat77yM6L+Z5qC35bCx5ou/5LiN5Yiw5q2j56Gu55qE6KGM5pWw77yM5LiN6IO95Zyo6L+Z6YeM5ou/5Yiw5q2j56Gu55qE6KGM5pWw5Lyg5Zue5Y6777yMXHJcbiAgICAgKiAgKi9cclxuICAgIHNlbGVjdGVkQ2h1bmtQYXJ0KHgseSl7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRDaHVuayA9IHRoaXMuX2N1cnJlbnRDaHVuaztcclxuICAgICAgICBsZXQgcm93PW51bGwsY29sPW51bGwscmVhbHJvdz1udWxsO1xyXG4gICAgICAgIGlmKGN1cnJlbnRDaHVuayl7XHJcbiAgICAgICAgICAgIGxldCBsZW49Y3VycmVudENodW5rLnRycy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wO2k8bGVuO2krKyl7XHJcbiAgICAgICAgICAgICAgICAvLyBpZihjdXJyZW50Q2h1bmsudHJzW2ldLnktNTx5JiZjdXJyZW50Q2h1bmsudHJzW2ldLnkrY3VycmVudENodW5rLnRyc1tpXS5oZWlnaHQrNT55KXtcclxuICAgICAgICAgICAgICAgIC8vICAgICByb3c9Y3VycmVudENodW5rLnRyc1tpXS5yb3dJbmRleDtcclxuICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGo9MDtqPGN1cnJlbnRDaHVuay50cnNbaV0udGRzLmxlbmd0aDtqKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiggY3VycmVudENodW5rLnRyc1tpXS50ZHNbal0ueC01PHggJiYgY3VycmVudENodW5rLnRyc1tpXS50ZHNbal0ueCtjdXJyZW50Q2h1bmsudHJzW2ldLnRkc1tqXS53aWR0aCs1PnggJiYgY3VycmVudENodW5rLnRyc1tpXS50ZHNbal0ueS01PHkgICYmIGN1cnJlbnRDaHVuay50cnNbaV0udGRzW2pdLnkrY3VycmVudENodW5rLnRyc1tpXS50ZHNbal0uaGVpZ2h0KzU+eSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh7XCJub3dSb3dJbmRleFwiOmksXCJub3dDb2xJbmRleFwiOmp9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY3VycmVudENodW5rLnRyc1tpXS50ZHNbal0ucm93c3BhbiE9PTEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaz0wO2s8bGVuO2srKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGN1cnJlbnRDaHVuay50cnNba10ueS01PHkmJmN1cnJlbnRDaHVuay50cnNba10ueStjdXJyZW50Q2h1bmsudHJzW2tdLmhlaWdodCs1Pnkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbHJvdz1jdXJyZW50Q2h1bmsudHJzW2tdLnJvd0luZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZWxsSGF2ZVJvd3NwYW49dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2VsbEhhdmVSb3dzcGFuPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxyb3c9Y3VycmVudENodW5rLnRyc1tpXS50ZHNbal0ucm93SW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3c9Y3VycmVudENodW5rLnRyc1tpXS50ZHNbal0ucm93SW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2w9Y3VycmVudENodW5rLnRyc1tpXS50ZHNbal0uY29sSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1wibm93Um93SW5kZXhcIjpyb3csXCJub3dDb2xJbmRleFwiOmNvbCxcInJlYWxSb3dJbmRleFwiOnJlYWxyb3d9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIGk7XHJcbiAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5Yik5pat6byg5qCH5oyJ5LiL5piv5ZCm6YCJ5oup6KGo5qC85biD5bGA5Yy65Z+f5LiL55qE5YWD57SgXHJcbiAgICBzZWxlY3RlZFRhYmxlQ2h1bmtFbGVtZW50KHgseSl7XHJcbiAgICAgICAgaWYodGhpcy5fY3VycmVudENodW5rLmVsZW1lbnQubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICBsZXQgZWxlbWVudExlbmd0aD10aGlzLl9jdXJyZW50Q2h1bmsuZWxlbWVudC5sZW5ndGhcclxuICAgICAgICAgICAgZm9yKGxldCBqPTA7ajxlbGVtZW50TGVuZ3RoO2orKyl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLl9jdXJyZW50Q2h1bmsuZWxlbWVudFtqXS54PHgmJnRoaXMuX2N1cnJlbnRDaHVuay5lbGVtZW50W2pdLngrdGhpcy5fY3VycmVudENodW5rLmVsZW1lbnRbal0ud2lkdGg+eCYmdGhpcy5fY3VycmVudENodW5rLmVsZW1lbnRbal0ueTx5JiZ0aGlzLl9jdXJyZW50Q2h1bmsuZWxlbWVudFtqXS55K3RoaXMuX2N1cnJlbnRDaHVuay5lbGVtZW50W2pdLmhlaWdodD55KXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudD10aGlzLl9jdXJyZW50Q2h1bmsuZWxlbWVudFtqXTsvL3RhYmxl5LiL6Z2i55qE5p+Q5Liq5bCP5Yy65Z+fXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRGaXJzdD10aGlzLl9jdXJyZW50Q2h1bmsuZWxlbWVudFswXTtcclxuICAgICAgICAgICAgICAgICAgICBpZihlbGVtZW50LmNoaWxkcmVucy5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGlsZHJlbnNMZW5ndGg9ZWxlbWVudC5jaGlsZHJlbnMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGs9MDtrPGNoaWxkcmVuc0xlbmd0aDtrKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZWxlbWVudEZpcnN0LngrZWxlbWVudC5jaGlsZHJlbnNba10ueDx4JiZlbGVtZW50Rmlyc3QueCtlbGVtZW50LmNoaWxkcmVuc1trXS54K2VsZW1lbnQuY2hpbGRyZW5zW2tdLndpZHRoKihqJXRoaXMuX2N1cnJlbnRDaHVuay5jb2xzKzEpPngmJmVsZW1lbnRGaXJzdC55K2VsZW1lbnQuY2hpbGRyZW5zW2tdLnk8eSYmZWxlbWVudEZpcnN0LnkrZWxlbWVudC5jaGlsZHJlbnNba10ueStlbGVtZW50LmNoaWxkcmVuc1trXS5oZWlnaHQqKE1hdGguY2VpbCgoaisxKS90aGlzLl9jdXJyZW50Q2h1bmsucm93cykpPnkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmNoaWxkcmVuc1trXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8v5Yik5pat6byg5qCH5oyJ5LiL5piv5ZCm6YCJ5oup5YWD57SgXHJcbiAgICAvKipcclxuICAgICAqIOeOsOWcqOeci+adpeS4u+imgeaYr+eUqOWcqOm8oOagh+aMieS4i+eahOaXtuWAmVxyXG4gICAgICrlupTor6XlnKjmr4/kuKrluIPlsYDlhYPntKDkuK3lhpnkuIDkuKrmlrnms5XvvIzliKTmlq3lvZPliY3pvKDmoIfmmK/lkKblnKjoh6rlt7HkuIvpnaLnmoTlhYPntKDkuK3vvIzov5Tlm57lhYPntKDmiJbogIVmYWxzZVxyXG4gICAgICovXHJcbiAgICBzZWxlY3RlZENodW5rRWxlbWVudCh4LHkpe1xyXG4gICAgICAgIGlmKHRoaXMuX2N1cnJlbnRDaHVuay5lbGVtZW50Lmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgLy8gbGV0IGVsZW1lbnRMZW5ndGg9dGhpcy5fY3VycmVudENodW5rLmVsZW1lbnQubGVuZ3RoXHJcbiAgICAgICAgICAgIC8vIGZvcihsZXQgaj0wO2o8ZWxlbWVudExlbmd0aDtqKyspe1xyXG4gICAgICAgICAgICAvLyAgICAgaWYodGhpcy5fY3VycmVudENodW5rLmVsZW1lbnRbal0ueDx4JiZ0aGlzLl9jdXJyZW50Q2h1bmsuZWxlbWVudFtqXS54K3RoaXMuX2N1cnJlbnRDaHVuay5lbGVtZW50W2pdLndpZHRoPngmJnRoaXMuX2N1cnJlbnRDaHVuay5lbGVtZW50W2pdLnk8eSYmdGhpcy5fY3VycmVudENodW5rLmVsZW1lbnRbal0ueSt0aGlzLl9jdXJyZW50Q2h1bmsuZWxlbWVudFtqXS5oZWlnaHQ+eSl7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgLy/liKTmlq3lpoLmnpzmmK/luIPlsYDkuIvnmoTluIPlsYDvvIzopoHov5Tlm57kuIvkuIDlsYLluIPlsYBcclxuICAgICAgICAgICAgLy8gICAgICAgICAvLyBpZih0aGlzLl9jdXJyZW50Q2h1bmsuZWxlbWVudFtqXS5zY29wZT09XCJGbG93TGF5b3V0XCIgJiYgdGhpcy5fY3VycmVudENodW5rLmVsZW1lbnRbal0uZWxlbWVudC5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgLy8gICAgIGZvcihsZXQgaT0wO2k8dGhpcy5fY3VycmVudENodW5rLmVsZW1lbnRbal0uZWxlbWVudC5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgLy8gICAgICAgICAvLyAgICAgICAgIGlmKHRoaXMuX2N1cnJlbnRDaHVuay5lbGVtZW50W2pdLmVsZW1lbnRbaV0ueDx4ICYmIHRoaXMuX2N1cnJlbnRDaHVuay5lbGVtZW50W2pdLmVsZW1lbnRbaV0ueCt0aGlzLl9jdXJyZW50Q2h1bmsuZWxlbWVudFtqXS5lbGVtZW50W2ldLndpZHRoPnggJiYgdGhpcy5fY3VycmVudENodW5rLmVsZW1lbnRbal0uZWxlbWVudFtpXS55PHkgJiYgdGhpcy5fY3VycmVudENodW5rLmVsZW1lbnRbal0uZWxlbWVudFtpXS55K3RoaXMuX2N1cnJlbnRDaHVuay5lbGVtZW50W2pdLmVsZW1lbnRbaV0uaGVpZ2h0Pnkpe1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIC8vICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50Q2h1bmsuZWxlbWVudFtqXS5lbGVtZW50W2ldO1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIC8vICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyAgICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50Q2h1bmsuZWxlbWVudFtqXTtcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfSAgIFxyXG4gICAgICAgICAgICBsZXQgY3VycmVudEVsZW0gPSB0aGlzLl9jdXJyZW50Q2h1bmsuc2VsZWN0ZWRFbGVtZW50KHgseSk7ICAgIFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjdXJyZW50RWxlbSxcIum8oOagh+aMieS4i+eahOWFg+e0oFwiKVxyXG4gICAgICAgICAgICByZXR1cm4gY3VycmVudEVsZW07ICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvL+a3u+WKoOmdnuW4g+WxgOWFg+e0oOWIsOWMuuWfn+S4rVxyXG4gICAgYWRkRWxlbWVudChlbGVtKXtcclxuICAgICAgICB0aGlzLmNodW5rLnB1c2goZWxlbSk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoVHJlZUxpc3QoKTtcclxuICAgIH1cclxuICAgIC8v5re75Yqg6Z2e5biD5bGA5YWD57Sg5Yiw5biD5bGA5YWD57Sg5LitXHJcbiAgICBhZGRFbGVtZW50VG9DaHVuayhlbGVtKXtcclxuICAgICAgICBlbGVtLnpJbmRleD0xMDA7XHJcbiAgICAgICAgbGV0IHt4LHl9PXRoaXMuX2N1cnJlbnRDaHVuay5zZXRFbGVtZW50UG9zaXRpb24oZWxlbSk7XHJcbiAgICAgICAgZWxlbS54PXg7ZWxlbS55PXk7XHJcbiAgICAgICAgaWYoZWxlbS5zY29wZT09XCJGbG93TGF5b3V0XCIgfHwgZWxlbS5zY29wZT09XCJDZWxsTGF5b3V0XCIpe1xyXG4gICAgICAgICAgICBlbGVtLmhlaWdodD10aGlzLl9jdXJyZW50Q2h1bmsuZ2V0bm9Vc2VIZWlnaHQoKSowLjg7XHJcbiAgICAgICAgICAgIC8vIGVsZW0uaGVpZ2h0PWVsZW0uaGVpZ2h0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2N1cnJlbnRDaHVuay5hZGRFbGVtZW50KGVsZW0pO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaFRyZWVMaXN0KCk7XHJcbiAgICB9XHJcbiAgICByZWZyZXNoVHJlZUxpc3QoKXtcclxuICAgICAgICBjb25zdCB0cmVlID0gVHJlZS5nZXRJbnN0YW5jZSgpO1xyXG5cdFx0dHJlZS5yZW5kZXIoKTtcclxuICAgIH1cclxuICAgIHRyYW5zZm9ybVRvVHJlZSgpIHtcclxuICAgICAgICBsZXQgdHJlZT1bXTtcclxuICAgICAgICBjb25zdCBsZW49dGhpcy5jaHVuay5sZW5ndGg7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTxsZW47aSsrKXtcclxuICAgICAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmNodW5rW2ldLmdldE5vZGVDb25maWdJbmZvKCk7XHJcbiAgICAgICAgICAgIHRyZWUucHVzaChkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodHJlZS5sZW5ndGg9PTApe1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cmVlO1xyXG4gICAgfVxyXG4gICAgZ2V0Q3VyclRvRWRpdCgpe1xyXG4gICAgICAgIGlmKHRoaXMuX2N1cnJlbnRDaHVuayAmJiB0aGlzLl9jdXJyZW50RWxlbSl7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50RWxlbTtcclxuICAgICAgICB9ZWxzZSBpZih0aGlzLl9jdXJyZW50Q2h1bmsgJiYgIXRoaXMuX2N1cnJlbnRFbGVtKXtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRDaHVuaztcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGVsc2V7XHJcbiAgICAgICAgLy8gcmV0dXJuIHRoaXMuX2N1cnJlbnRQcm9wRWxlbTtcclxuICAgICAgICAvLyB9XHJcbiAgICB9XHJcbiAgICBjbGVhckN1cnJUb0VkaXQoKXtcclxuICAgICAgICBpZih0aGlzLl9jdXJyZW50Q2h1bmspe1xyXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50Q2h1bmsuc2V0UHJvcHMoe2lzRWRpdDpmYWxzZX0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2N1cnJlbnRDaHVuaz1udWxsO1xyXG4gICAgICAgIHRoaXMuZWxlbT1udWxsO1xyXG4gICAgfVxyXG4gICAgLy/ojrflj5bmiYDmnInpg6jpl6jpgInmi6nmoYbnmoTlrZfmrrVcclxuICAgIGdldGFsbERlcHROYW1lKG5hbWUpe1xyXG4gICAgICAgIGxldCBhbGxEZXB0TmFtZT17fTtcclxuICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMuY2h1bmsubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY2h1bmtbaV0uc2NvcGU9PVwiZGVwdFwiKXtcclxuICAgICAgICAgICAgICAgIGFsbERlcHROYW1lW3RoaXMuY2h1bmtbaV0ubmFtZV09XCJmYWxzZVwiO1xyXG4gICAgICAgICAgICAgICAgLy9hbGxEZXB0TmFtZS5wdXNoKGRhdGEpXHJcbiAgICAgICAgICAgIH1lbHNlIGlmKHRoaXMuY2h1bmtbaV0uc2NvcGU9PVwiRmxvd0xheW91dFwiIHx8IHRoaXMuY2h1bmtbaV0uc2NvcGU9PVwiQ2VsbExheW91dFwiKXtcclxuICAgICAgICAgICAgICAgIGFsbERlcHROYW1lPXsuLi5hbGxEZXB0TmFtZSwuLi50aGlzLmNodW5rW2ldLmdldGFsbERlcHROYW1lKCl9XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlbGV0ZSBhbGxEZXB0TmFtZVtuYW1lXTtcclxuICAgICAgICByZXR1cm4gYWxsRGVwdE5hbWU7XHJcbiAgICB9XHJcbiAgICAvL+WIoOmZpOacgOWkluWxgueahOWFg+e0oFxyXG4gICAgZGVsZXRlQ2h1bmsoaWQpe1xyXG4gICAgICAgIGxldCBkZWxJbmQ9bnVsbDtcclxuICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMuY2h1bmsubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY2h1bmtbaV0uaWQ9PWlkKXtcclxuICAgICAgICAgICAgICAgIGRlbEluZD1pO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoZGVsSW5kIT1udWxsKXtcclxuICAgICAgICAgICAgdGhpcy5jaHVuay5zcGxpY2UoZGVsSW5kLDEpO1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0Q2h1bmtQb3NpdGlvbigpO1xyXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50Q2h1bms9bnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBkZWxldGVFbGVtKGNodW5rSWQsZWxlbUlkKXtcclxuICAgICAgICBsZXQgZGVsSW5kPW51bGwsZGVsQ0luZD1udWxsO1xyXG4gICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy5jaHVuay5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgaWYodGhpcy5jaHVua1tpXS5pZD09Y2h1bmtJZCl7XHJcbiAgICAgICAgICAgICAgICBkZWxDSW5kPWk7XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGo9MDtqPHRoaXMuY2h1bmtbaV0uZWxlbWVudC5sZW5ndGg7aisrKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmNodW5rW2ldLmVsZW1lbnRbal0uaWQ9PWVsZW1JZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbEluZD1qO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihkZWxJbmQhPW51bGwpe1xyXG4gICAgICAgICAgICB0aGlzLmNodW5rW2RlbENJbmRdLmVsZW1lbnQuc3BsaWNlKGRlbEluZCwxKTtcclxuICAgICAgICAgICAgdGhpcy5yZXNldENodW5rUG9zaXRpb24oKTtcclxuICAgICAgICAgICAgdGhpcy5fY3VycmVudENodW5rPW51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgc2V0QWxsUHJvY2Vzc3ByZVZhbHVlKCl7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLmNodW5rLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBpZih0aGlzLmNodW5rW2ldLnNjb3BlIT1cIkZsb3dMYXlvdXRcIiAmJiB0aGlzLmNodW5rW2ldLnNjb3BlIT1cIkNlbGxMYXlvdXRcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNodW5rW2ldLnByb2Nlc3NwcmV2YWx1ZT10aGlzLmdldEFsbE5hbWVTY3JpcHQoKTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNodW5rW2ldLnNldEFsbFByb2Nlc3NwcmVWYWx1ZSh0aGlzLmdldEFsbE5hbWVTY3JpcHQoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyDmi7/liLDlt7Lkv53lrZjnmoTlrZfmrrXnmoTlkI3lrZflkox2YWx1Zee1hOaIkOeahOWtl+espuS4slxyXG4gICAgZ2V0QWxsTmFtZVNjcmlwdCgpe1xyXG4gICAgICAgIGxldCBoPUpTT04uc3RyaW5naWZ5KHRoaXMuYWxsTmFtZSkucmVwbGFjZSgvXCIvZyxcIidcIik7XHJcbiAgICAgICAgaCs9XCI7XCI7XHJcbiAgICAgICAgY29uc29sZS5sb2coaCk7XHJcbiAgICAgICAgcmV0dXJuIGhcclxuXHJcbiAgICB9XHJcblxyXG59XHJcbkZvcm1QYW5lbC5BQ1RJT05fTk9STUFMID0gMHgwMDAwMDAwMDtcclxuRm9ybVBhbmVsLkFDVElPTl9JTl9FTEVNRU5UID0gMHgwMDAwMDAwMTtcclxuRm9ybVBhbmVsLkFDVElPTl9JTl9CQVNFTElORSA9IDB4MDAwMDAwMTA7XHJcbkZvcm1QYW5lbC5BQ1RJT05fQVJDSE9SX1VQUEVSX0xFRlQgPSAweDAwMDAwMDExO1xyXG5Gb3JtUGFuZWwuQUNUSU9OX0FSQ0hPUl9VUFBFUl9SSUdIVCA9IDB4MDAwMDAwMTI7XHJcbkZvcm1QYW5lbC5BQ1RJT05fQVJDSE9SX0xPV0VSX0xFRlQgPSAweDAwMDAwMDEzO1xyXG5Gb3JtUGFuZWwuQUNUSU9OX0FSQ0hPUl9MT1dFUl9SSUdIVCA9IDB4MDAwMDAwMTQ7XHJcbmV4cG9ydCBkZWZhdWx0IEZvcm1QYW5lbDtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2Zvcm0vdmlldy9Gb3JtUGFuZWwuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7OztBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTNDQTtBQTZDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTdDQTtBQStDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFJQTtBQTRJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEzWUE7QUE2WUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTVaQTtBQThaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUVBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXhCQTtBQTBCQTs7O0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7OztBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7OztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBOzs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///48\n");

/***/ }),
/* 49 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\t\t\t\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _FormPanel = __webpack_require__(48);\n\nvar _FormPanel2 = _interopRequireDefault(_FormPanel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Tree = function () {\n\t\t\t\t_createClass(Tree, null, [{\n\t\t\t\t\t\t\t\tkey: 'getInstance',\n\t\t\t\t\t\t\t\tvalue: function getInstance() {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!Tree.instance || !(Tree.instance instanceof Tree)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tTree.instance = new Tree();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t//console.log(Tree.instance)\n\t\t\t\t\t\t\t\t\t\t\t\treturn Tree.instance;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}]);\n\n\t\t\t\tfunction Tree() {\n\t\t\t\t\t\t\t\t_classCallCheck(this, Tree);\n\n\t\t\t\t\t\t\t\tthis.form = null;\n\t\t\t\t\t\t\t\tthis.container = null;\n\t\t\t\t}\n\n\t\t\t\t_createClass(Tree, [{\n\t\t\t\t\t\t\t\tkey: 'init',\n\t\t\t\t\t\t\t\tvalue: function init(treeDiv, form) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.form = form;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.container = treeDiv;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.render();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'render',\n\t\t\t\t\t\t\t\tvalue: function render() {\n\t\t\t\t\t\t\t\t\t\t\t\tvar form = this.form;\n\t\t\t\t\t\t\t\t\t\t\t\tvar treeData = form.transformToTree();\n\t\t\t\t\t\t\t\t\t\t\t\tvar $container = this.container;\n\t\t\t\t\t\t\t\t\t\t\t\t//console.log(treeData);\n\t\t\t\t\t\t\t\t\t\t\t\tif ($container && treeData) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//閲囩敤bootstrap-tree杩涜娓叉煋\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$container.treeview({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata: treeData\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.registerEvent($container);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\t\t\t\tkey: 'registerEvent',\n\t\t\t\t\t\t\t\tvalue: function registerEvent() {}\n\t\t\t\t}]);\n\n\t\t\t\treturn Tree;\n}();\n\nexports.default = Tree;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2Zvcm0vdmlldy9UcmVlLmpzPzJhM2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZvcm1QYW5lbCBmcm9tICcuL0Zvcm1QYW5lbCc7XHJcbmNsYXNzIFRyZWV7XHJcbiAgICBzdGF0aWMgZ2V0SW5zdGFuY2UoKSB7XHJcblx0XHRpZighVHJlZS5pbnN0YW5jZSB8fCAhKFRyZWUuaW5zdGFuY2UgaW5zdGFuY2VvZiBUcmVlKSkge1xyXG5cdFx0XHRUcmVlLmluc3RhbmNlID0gbmV3IFRyZWUoKTtcclxuXHRcdH1cclxuXHRcdC8vY29uc29sZS5sb2coVHJlZS5pbnN0YW5jZSlcclxuXHRcdHJldHVybiBUcmVlLmluc3RhbmNlO1xyXG5cdH1cclxuICAgIGNvbnN0cnVjdG9yKCl7XHJcbiAgICAgICAgdGhpcy5mb3JtPW51bGw7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXI9bnVsbDtcclxuICAgIH1cclxuICAgIGluaXQodHJlZURpdixmb3JtKXtcclxuICAgICAgICB0aGlzLmZvcm09Zm9ybTtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lcj10cmVlRGl2O1xyXG4gICAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICB9XHJcbiAgICByZW5kZXIoKSB7XHJcblx0XHRjb25zdCBmb3JtID0gdGhpcy5mb3JtO1xyXG5cdFx0Y29uc3QgdHJlZURhdGE9Zm9ybS50cmFuc2Zvcm1Ub1RyZWUoKTtcclxuXHRcdGNvbnN0ICRjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcjtcclxuXHRcdC8vY29uc29sZS5sb2codHJlZURhdGEpO1xyXG5cdFx0aWYoJGNvbnRhaW5lciYmdHJlZURhdGEpIHtcclxuXHRcdFx0Ly/ph4fnlKhib290c3RyYXAtdHJlZei/m+ihjOa4suafk1xyXG5cclxuXHRcdFx0JGNvbnRhaW5lci50cmVldmlldyh7XHJcblx0XHRcdFx0ZGF0YTogdHJlZURhdGFcclxuXHRcdFx0fSk7XHJcblx0XHRcdFxyXG5cdFx0XHR0aGlzLnJlZ2lzdGVyRXZlbnQoJGNvbnRhaW5lcik7XHJcblx0XHR9XHJcbiAgICB9XHJcbiAgICByZWdpc3RlckV2ZW50KCl7XHJcblxyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IFRyZWU7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9mb3JtL3ZpZXcvVHJlZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOzs7Ozs7O0FBQUE7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBR0E7QUFDQTtBQUNBOzs7QUFDQTs7Ozs7O0FBSUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49\n");

/***/ }),
/* 50 */
/***/ (function(module, exports) {

eval("var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaXNhcnJheS9pbmRleC5qcz9iMGU0Il0sInNvdXJjZXNDb250ZW50IjpbInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKGFycikge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChhcnIpID09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvaXNhcnJheS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///50\n");

/***/ }),
/* 51 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar Buffer = __webpack_require__(1).Buffer\nvar Transform = __webpack_require__(30).Transform\nvar inherits = __webpack_require__(0)\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n  if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n    throw new TypeError(prefix + ' must be a string or a buffer')\n  }\n}\n\nfunction HashBase (blockSize) {\n  Transform.call(this)\n\n  this._block = Buffer.allocUnsafe(blockSize)\n  this._blockSize = blockSize\n  this._blockOffset = 0\n  this._length = [0, 0, 0, 0]\n\n  this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n  var error = null\n  try {\n    this.update(chunk, encoding)\n  } catch (err) {\n    error = err\n  }\n\n  callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n  var error = null\n  try {\n    this.push(this.digest())\n  } catch (err) {\n    error = err\n  }\n\n  callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n  throwIfNotStringOrBuffer(data, 'Data')\n  if (this._finalized) throw new Error('Digest already called')\n  if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n  // consume data\n  var block = this._block\n  var offset = 0\n  while (this._blockOffset + data.length - offset >= this._blockSize) {\n    for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n    this._update()\n    this._blockOffset = 0\n  }\n  while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n  // update length\n  for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n    this._length[j] += carry\n    carry = (this._length[j] / 0x0100000000) | 0\n    if (carry > 0) this._length[j] -= 0x0100000000 * carry\n  }\n\n  return this\n}\n\nHashBase.prototype._update = function () {\n  throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n  if (this._finalized) throw new Error('Digest already called')\n  this._finalized = true\n\n  var digest = this._digest()\n  if (encoding !== undefined) digest = digest.toString(encoding)\n\n  // reset state\n  this._block.fill(0)\n  this._blockOffset = 0\n  for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n  return digest\n}\n\nHashBase.prototype._digest = function () {\n  throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaGFzaC1iYXNlL2luZGV4LmpzP2M4M2IiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCdzdHJlYW0nKS5UcmFuc2Zvcm1cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcblxuZnVuY3Rpb24gdGhyb3dJZk5vdFN0cmluZ09yQnVmZmVyICh2YWwsIHByZWZpeCkge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih2YWwpICYmIHR5cGVvZiB2YWwgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihwcmVmaXggKyAnIG11c3QgYmUgYSBzdHJpbmcgb3IgYSBidWZmZXInKVxuICB9XG59XG5cbmZ1bmN0aW9uIEhhc2hCYXNlIChibG9ja1NpemUpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcblxuICB0aGlzLl9ibG9jayA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja1NpemUpXG4gIHRoaXMuX2Jsb2NrU2l6ZSA9IGJsb2NrU2l6ZVxuICB0aGlzLl9ibG9ja09mZnNldCA9IDBcbiAgdGhpcy5fbGVuZ3RoID0gWzAsIDAsIDAsIDBdXG5cbiAgdGhpcy5fZmluYWxpemVkID0gZmFsc2Vcbn1cblxuaW5oZXJpdHMoSGFzaEJhc2UsIFRyYW5zZm9ybSlcblxuSGFzaEJhc2UucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICB2YXIgZXJyb3IgPSBudWxsXG4gIHRyeSB7XG4gICAgdGhpcy51cGRhdGUoY2h1bmssIGVuY29kaW5nKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlcnJvciA9IGVyclxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3IpXG59XG5cbkhhc2hCYXNlLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdmFyIGVycm9yID0gbnVsbFxuICB0cnkge1xuICAgIHRoaXMucHVzaCh0aGlzLmRpZ2VzdCgpKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlcnJvciA9IGVyclxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3IpXG59XG5cbkhhc2hCYXNlLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSwgZW5jb2RpbmcpIHtcbiAgdGhyb3dJZk5vdFN0cmluZ09yQnVmZmVyKGRhdGEsICdEYXRhJylcbiAgaWYgKHRoaXMuX2ZpbmFsaXplZCkgdGhyb3cgbmV3IEVycm9yKCdEaWdlc3QgYWxyZWFkeSBjYWxsZWQnKVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihkYXRhKSkgZGF0YSA9IEJ1ZmZlci5mcm9tKGRhdGEsIGVuY29kaW5nKVxuXG4gIC8vIGNvbnN1bWUgZGF0YVxuICB2YXIgYmxvY2sgPSB0aGlzLl9ibG9ja1xuICB2YXIgb2Zmc2V0ID0gMFxuICB3aGlsZSAodGhpcy5fYmxvY2tPZmZzZXQgKyBkYXRhLmxlbmd0aCAtIG9mZnNldCA+PSB0aGlzLl9ibG9ja1NpemUpIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5fYmxvY2tPZmZzZXQ7IGkgPCB0aGlzLl9ibG9ja1NpemU7KSBibG9ja1tpKytdID0gZGF0YVtvZmZzZXQrK11cbiAgICB0aGlzLl91cGRhdGUoKVxuICAgIHRoaXMuX2Jsb2NrT2Zmc2V0ID0gMFxuICB9XG4gIHdoaWxlIChvZmZzZXQgPCBkYXRhLmxlbmd0aCkgYmxvY2tbdGhpcy5fYmxvY2tPZmZzZXQrK10gPSBkYXRhW29mZnNldCsrXVxuXG4gIC8vIHVwZGF0ZSBsZW5ndGhcbiAgZm9yICh2YXIgaiA9IDAsIGNhcnJ5ID0gZGF0YS5sZW5ndGggKiA4OyBjYXJyeSA+IDA7ICsraikge1xuICAgIHRoaXMuX2xlbmd0aFtqXSArPSBjYXJyeVxuICAgIGNhcnJ5ID0gKHRoaXMuX2xlbmd0aFtqXSAvIDB4MDEwMDAwMDAwMCkgfCAwXG4gICAgaWYgKGNhcnJ5ID4gMCkgdGhpcy5fbGVuZ3RoW2pdIC09IDB4MDEwMDAwMDAwMCAqIGNhcnJ5XG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG5IYXNoQmFzZS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdfdXBkYXRlIGlzIG5vdCBpbXBsZW1lbnRlZCcpXG59XG5cbkhhc2hCYXNlLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiAoZW5jb2RpbmcpIHtcbiAgaWYgKHRoaXMuX2ZpbmFsaXplZCkgdGhyb3cgbmV3IEVycm9yKCdEaWdlc3QgYWxyZWFkeSBjYWxsZWQnKVxuICB0aGlzLl9maW5hbGl6ZWQgPSB0cnVlXG5cbiAgdmFyIGRpZ2VzdCA9IHRoaXMuX2RpZ2VzdCgpXG4gIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkKSBkaWdlc3QgPSBkaWdlc3QudG9TdHJpbmcoZW5jb2RpbmcpXG5cbiAgLy8gcmVzZXQgc3RhdGVcbiAgdGhpcy5fYmxvY2suZmlsbCgwKVxuICB0aGlzLl9ibG9ja09mZnNldCA9IDBcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyArK2kpIHRoaXMuX2xlbmd0aFtpXSA9IDBcblxuICByZXR1cm4gZGlnZXN0XG59XG5cbkhhc2hCYXNlLnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ19kaWdlc3QgaXMgbm90IGltcGxlbWVudGVkJylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBIYXNoQmFzZVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvaGFzaC1iYXNlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA1MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///51\n");

/***/ }),
/* 52 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n/*<replacement>*/\n\nvar pna = __webpack_require__(23);\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = __webpack_require__(50);\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = __webpack_require__(31).EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = __webpack_require__(53);\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = __webpack_require__(1).Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = __webpack_require__(16);\nutil.inherits = __webpack_require__(0);\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = __webpack_require__(130);\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = __webpack_require__(131);\nvar destroyImpl = __webpack_require__(54);\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n  Duplex = Duplex || __webpack_require__(12);\n\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  var isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  var hwm = options.highWaterMark;\n  var readableHwm = options.readableHighWaterMark;\n  var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n  if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n  // cast to ints.\n  this.highWaterMark = Math.floor(this.highWaterMark);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = __webpack_require__(34).StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\n\nfunction Readable(options) {\n  Duplex = Duplex || __webpack_require__(12);\n\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  this._readableState = new ReadableState(options, this);\n\n  // legacy\n  this.readable = true;\n\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n\n  Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  get: function () {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function (value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  this.push(null);\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      stream.emit('error', er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n\n      if (addToFront) {\n        if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        stream.emit('error', new Error('stream.push() after EOF'));\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n    }\n  }\n\n  return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    stream.emit('data', chunk);\n    stream.read(0);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new TypeError('Invalid non-string/buffer chunk');\n  }\n  return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes.  This is to work around cases where hwm=0,\n// such as the repl.  Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = __webpack_require__(34).StringDecoder;\n  this._readableState.decoder = new StringDecoder(enc);\n  this._readableState.encoding = enc;\n  return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n\n  if (ret === null) {\n    state.needReadable = true;\n    n = 0;\n  } else {\n    state.length -= n;\n  }\n\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n\n  if (ret !== null) this.emit('data', ret);\n\n  return ret;\n};\n\nfunction onEofChunk(stream, state) {\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n\n  // emit 'readable' now to make sure it gets picked up.\n  emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n  }\n}\n\nfunction emitReadable_(stream) {\n  debug('emit readable');\n  stream.emit('readable');\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    pna.nextTick(maybeReadMore_, stream, state);\n  }\n}\n\nfunction maybeReadMore_(stream, state) {\n  var len = state.length;\n  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;else len = state.length;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n\n  // If the user pushes more data while we're writing to dest then we'll end up\n  // in ondata again. However, we only want to increase awaitDrain once because\n  // dest will only emit one 'drain' event for the multiple writes.\n  // => Introduce a guard on increasing awaitDrain.\n  var increasedAwaitDrain = false;\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    increasedAwaitDrain = false;\n    var ret = dest.write(chunk);\n    if (false === ret && !increasedAwaitDrain) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', src._readableState.awaitDrain);\n        src._readableState.awaitDrain++;\n        increasedAwaitDrain = true;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n\n  return dest;\n};\n\nfunction pipeOnDrain(src) {\n  return function () {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\n\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = { hasUnpiped: false };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n\n    for (var i = 0; i < len; i++) {\n      dests[i].emit('unpipe', this, unpipeInfo);\n    }return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n  dest.emit('unpipe', this, unpipeInfo);\n\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n\n  if (ev === 'data') {\n    // Start flowing on next tick if stream isn't explicitly paused\n    if (this._readableState.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    var state = this._readableState;\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.emittedReadable = false;\n      if (!state.reading) {\n        pna.nextTick(nReadingNextTick, this);\n      } else if (state.length) {\n        emitReadable(this);\n      }\n    }\n  }\n\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    state.flowing = true;\n    resume(this, state);\n  }\n  return this;\n};\n\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    pna.nextTick(resume_, stream, state);\n  }\n}\n\nfunction resume_(stream, state) {\n  if (!state.reading) {\n    debug('resume read 0');\n    stream.read(0);\n  }\n\n  state.resumeScheduled = false;\n  state.awaitDrain = 0;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (false !== this._readableState.flowing) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  return this;\n};\n\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n\n  var state = this._readableState;\n  var paused = false;\n\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n\n    _this.push(null);\n  });\n\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function (method) {\n        return function () {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n\n  return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function () {\n    return this._readableState.highWaterMark;\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = fromListPartial(n, state.buffer, state.decoder);\n  }\n\n  return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n  var ret;\n  if (n < list.head.data.length) {\n    // slice is the same for buffers and strings\n    ret = list.head.data.slice(0, n);\n    list.head.data = list.head.data.slice(n);\n  } else if (n === list.head.data.length) {\n    // first chunk is a perfect match\n    ret = list.shift();\n  } else {\n    // result spans more than one buffer\n    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n  }\n  return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n  var p = list.head;\n  var c = 1;\n  var ret = p.data;\n  n -= ret.length;\n  while (p = p.next) {\n    var str = p.data;\n    var nb = n > str.length ? str.length : n;\n    if (nb === str.length) ret += str;else ret += str.slice(0, n);\n    n -= nb;\n    if (n === 0) {\n      if (nb === str.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = str.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n  var ret = Buffer.allocUnsafe(n);\n  var p = list.head;\n  var c = 1;\n  p.data.copy(ret);\n  n -= p.data.length;\n  while (p = p.next) {\n    var buf = p.data;\n    var nb = n > buf.length ? buf.length : n;\n    buf.copy(ret, ret.length - n, 0, nb);\n    n -= nb;\n    if (n === 0) {\n      if (nb === buf.length) {\n        ++c;\n        if (p.next) list.head = p.next;else list.head = list.tail = null;\n      } else {\n        list.head = p;\n        p.data = buf.slice(nb);\n      }\n      break;\n    }\n    ++c;\n  }\n  list.length -= c;\n  return ret;\n}\n\nfunction endReadable(stream) {\n  var state = stream._readableState;\n\n  // If we get here before consuming all the bytes, then that is a\n  // bug in node.  Should never happen.\n  if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n  if (!state.endEmitted) {\n    state.ended = true;\n    pna.nextTick(endReadableNT, state, stream);\n  }\n}\n\nfunction endReadableNT(state, stream) {\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n  }\n}\n\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9), __webpack_require__(10)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3JlYWRhYmxlLmpzPzQ2ZGQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIHBuYSA9IHJlcXVpcmUoJ3Byb2Nlc3MtbmV4dGljay1hcmdzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFkYWJsZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnaXNhcnJheScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgRHVwbGV4O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cblJlYWRhYmxlLlJlYWRhYmxlU3RhdGUgPSBSZWFkYWJsZVN0YXRlO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIEVFID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xuXG52YXIgRUVsaXN0ZW5lckNvdW50ID0gZnVuY3Rpb24gKGVtaXR0ZXIsIHR5cGUpIHtcbiAgcmV0dXJuIGVtaXR0ZXIubGlzdGVuZXJzKHR5cGUpLmxlbmd0aDtcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBTdHJlYW0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xudmFyIE91clVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheSB8fCBmdW5jdGlvbiAoKSB7fTtcbmZ1bmN0aW9uIF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTtcbn1cbmZ1bmN0aW9uIF9pc1VpbnQ4QXJyYXkob2JqKSB7XG4gIHJldHVybiBCdWZmZXIuaXNCdWZmZXIob2JqKSB8fCBvYmogaW5zdGFuY2VvZiBPdXJVaW50OEFycmF5O1xufVxuXG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGRlYnVnVXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBkZWJ1ZyA9IHZvaWQgMDtcbmlmIChkZWJ1Z1V0aWwgJiYgZGVidWdVdGlsLmRlYnVnbG9nKSB7XG4gIGRlYnVnID0gZGVidWdVdGlsLmRlYnVnbG9nKCdzdHJlYW0nKTtcbn0gZWxzZSB7XG4gIGRlYnVnID0gZnVuY3Rpb24gKCkge307XG59XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlckxpc3QgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvQnVmZmVyTGlzdCcpO1xudmFyIGRlc3Ryb3lJbXBsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3knKTtcbnZhciBTdHJpbmdEZWNvZGVyO1xuXG51dGlsLmluaGVyaXRzKFJlYWRhYmxlLCBTdHJlYW0pO1xuXG52YXIga1Byb3h5RXZlbnRzID0gWydlcnJvcicsICdjbG9zZScsICdkZXN0cm95JywgJ3BhdXNlJywgJ3Jlc3VtZSddO1xuXG5mdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIoZW1pdHRlciwgZXZlbnQsIGZuKSB7XG4gIC8vIFNhZGx5IHRoaXMgaXMgbm90IGNhY2hlYWJsZSBhcyBzb21lIGxpYnJhcmllcyBidW5kbGUgdGhlaXIgb3duXG4gIC8vIGV2ZW50IGVtaXR0ZXIgaW1wbGVtZW50YXRpb24gd2l0aCB0aGVtLlxuICBpZiAodHlwZW9mIGVtaXR0ZXIucHJlcGVuZExpc3RlbmVyID09PSAnZnVuY3Rpb24nKSByZXR1cm4gZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIoZXZlbnQsIGZuKTtcblxuICAvLyBUaGlzIGlzIGEgaGFjayB0byBtYWtlIHN1cmUgdGhhdCBvdXIgZXJyb3IgaGFuZGxlciBpcyBhdHRhY2hlZCBiZWZvcmUgYW55XG4gIC8vIHVzZXJsYW5kIG9uZXMuICBORVZFUiBETyBUSElTLiBUaGlzIGlzIGhlcmUgb25seSBiZWNhdXNlIHRoaXMgY29kZSBuZWVkc1xuICAvLyB0byBjb250aW51ZSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgTm9kZS5qcyB0aGF0IGRvIG5vdCBpbmNsdWRlXG4gIC8vIHRoZSBwcmVwZW5kTGlzdGVuZXIoKSBtZXRob2QuIFRoZSBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgcmVtb3ZlIHRoaXMgaGFjay5cbiAgaWYgKCFlbWl0dGVyLl9ldmVudHMgfHwgIWVtaXR0ZXIuX2V2ZW50c1tldmVudF0pIGVtaXR0ZXIub24oZXZlbnQsIGZuKTtlbHNlIGlmIChpc0FycmF5KGVtaXR0ZXIuX2V2ZW50c1tldmVudF0pKSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdLnVuc2hpZnQoZm4pO2Vsc2UgZW1pdHRlci5fZXZlbnRzW2V2ZW50XSA9IFtmbiwgZW1pdHRlci5fZXZlbnRzW2V2ZW50XV07XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gRHVwbGV4IHN0cmVhbXMgYXJlIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLCBidXQgc2hhcmVcbiAgLy8gdGhlIHNhbWUgb3B0aW9ucyBvYmplY3QuXG4gIC8vIEhvd2V2ZXIsIHNvbWUgY2FzZXMgcmVxdWlyZSBzZXR0aW5nIG9wdGlvbnMgdG8gZGlmZmVyZW50XG4gIC8vIHZhbHVlcyBmb3IgdGhlIHJlYWRhYmxlIGFuZCB0aGUgd3JpdGFibGUgc2lkZXMgb2YgdGhlIGR1cGxleCBzdHJlYW0uXG4gIC8vIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHByb3ZpZGVkIHNlcGFyYXRlbHkgYXMgcmVhZGFibGVYWFggYW5kIHdyaXRhYmxlWFhYLlxuICB2YXIgaXNEdXBsZXggPSBzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXg7XG5cbiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnLiBVc2VkIHRvIG1ha2UgcmVhZChuKSBpZ25vcmUgbiBhbmQgdG9cbiAgLy8gbWFrZSBhbGwgdGhlIGJ1ZmZlciBtZXJnaW5nIGFuZCBsZW5ndGggY2hlY2tzIGdvIGF3YXlcbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG5cbiAgaWYgKGlzRHVwbGV4KSB0aGlzLm9iamVjdE1vZGUgPSB0aGlzLm9iamVjdE1vZGUgfHwgISFvcHRpb25zLnJlYWRhYmxlT2JqZWN0TW9kZTtcblxuICAvLyB0aGUgcG9pbnQgYXQgd2hpY2ggaXQgc3RvcHMgY2FsbGluZyBfcmVhZCgpIHRvIGZpbGwgdGhlIGJ1ZmZlclxuICAvLyBOb3RlOiAwIGlzIGEgdmFsaWQgdmFsdWUsIG1lYW5zIFwiZG9uJ3QgY2FsbCBfcmVhZCBwcmVlbXB0aXZlbHkgZXZlclwiXG4gIHZhciBod20gPSBvcHRpb25zLmhpZ2hXYXRlck1hcms7XG4gIHZhciByZWFkYWJsZUh3bSA9IG9wdGlvbnMucmVhZGFibGVIaWdoV2F0ZXJNYXJrO1xuICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xuXG4gIGlmIChod20gfHwgaHdtID09PSAwKSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod207ZWxzZSBpZiAoaXNEdXBsZXggJiYgKHJlYWRhYmxlSHdtIHx8IHJlYWRhYmxlSHdtID09PSAwKSkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gcmVhZGFibGVId207ZWxzZSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBkZWZhdWx0SHdtO1xuXG4gIC8vIGNhc3QgdG8gaW50cy5cbiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gTWF0aC5mbG9vcih0aGlzLmhpZ2hXYXRlck1hcmspO1xuXG4gIC8vIEEgbGlua2VkIGxpc3QgaXMgdXNlZCB0byBzdG9yZSBkYXRhIGNodW5rcyBpbnN0ZWFkIG9mIGFuIGFycmF5IGJlY2F1c2UgdGhlXG4gIC8vIGxpbmtlZCBsaXN0IGNhbiByZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgYmVnaW5uaW5nIGZhc3RlciB0aGFuXG4gIC8vIGFycmF5LnNoaWZ0KClcbiAgdGhpcy5idWZmZXIgPSBuZXcgQnVmZmVyTGlzdCgpO1xuICB0aGlzLmxlbmd0aCA9IDA7XG4gIHRoaXMucGlwZXMgPSBudWxsO1xuICB0aGlzLnBpcGVzQ291bnQgPSAwO1xuICB0aGlzLmZsb3dpbmcgPSBudWxsO1xuICB0aGlzLmVuZGVkID0gZmFsc2U7XG4gIHRoaXMuZW5kRW1pdHRlZCA9IGZhbHNlO1xuICB0aGlzLnJlYWRpbmcgPSBmYWxzZTtcblxuICAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBldmVudCAncmVhZGFibGUnLydkYXRhJyBpcyBlbWl0dGVkXG4gIC8vIGltbWVkaWF0ZWx5LCBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlXG4gIC8vIGFueSBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCByZWFkIGNhbGwuXG4gIHRoaXMuc3luYyA9IHRydWU7XG5cbiAgLy8gd2hlbmV2ZXIgd2UgcmV0dXJuIG51bGwsIHRoZW4gd2Ugc2V0IGEgZmxhZyB0byBzYXlcbiAgLy8gdGhhdCB3ZSdyZSBhd2FpdGluZyBhICdyZWFkYWJsZScgZXZlbnQgZW1pc3Npb24uXG4gIHRoaXMubmVlZFJlYWRhYmxlID0gZmFsc2U7XG4gIHRoaXMuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gIHRoaXMucmVhZGFibGVMaXN0ZW5pbmcgPSBmYWxzZTtcbiAgdGhpcy5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTtcblxuICAvLyBoYXMgaXQgYmVlbiBkZXN0cm95ZWRcbiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcblxuICAvLyBDcnlwdG8gaXMga2luZCBvZiBvbGQgYW5kIGNydXN0eS4gIEhpc3RvcmljYWxseSwgaXRzIGRlZmF1bHQgc3RyaW5nXG4gIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGluIHRoZSB1bml2ZXJzZSB1c2VzICd1dGY4JywgdGhvdWdoLlxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JztcblxuICAvLyB0aGUgbnVtYmVyIG9mIHdyaXRlcnMgdGhhdCBhcmUgYXdhaXRpbmcgYSBkcmFpbiBldmVudCBpbiAucGlwZSgpc1xuICB0aGlzLmF3YWl0RHJhaW4gPSAwO1xuXG4gIC8vIGlmIHRydWUsIGEgbWF5YmVSZWFkTW9yZSBoYXMgYmVlbiBzY2hlZHVsZWRcbiAgdGhpcy5yZWFkaW5nTW9yZSA9IGZhbHNlO1xuXG4gIHRoaXMuZGVjb2RlciA9IG51bGw7XG4gIHRoaXMuZW5jb2RpbmcgPSBudWxsO1xuICBpZiAob3B0aW9ucy5lbmNvZGluZykge1xuICAgIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gICAgdGhpcy5kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIob3B0aW9ucy5lbmNvZGluZyk7XG4gICAgdGhpcy5lbmNvZGluZyA9IG9wdGlvbnMuZW5jb2Rpbmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gUmVhZGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZWFkYWJsZSkpIHJldHVybiBuZXcgUmVhZGFibGUob3B0aW9ucyk7XG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZSA9IG5ldyBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMpO1xuXG4gIC8vIGxlZ2FjeVxuICB0aGlzLnJlYWRhYmxlID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5yZWFkID09PSAnZnVuY3Rpb24nKSB0aGlzLl9yZWFkID0gb3B0aW9ucy5yZWFkO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHRoaXMuX2Rlc3Ryb3kgPSBvcHRpb25zLmRlc3Ryb3k7XG4gIH1cblxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ2Rlc3Ryb3llZCcsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtXG4gICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgIGlmICghdGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRoZSB1c2VyIGlzIGV4cGxpY2l0bHlcbiAgICAvLyBtYW5hZ2luZyBkZXN0cm95ZWRcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTtcblxuUmVhZGFibGUucHJvdG90eXBlLmRlc3Ryb3kgPSBkZXN0cm95SW1wbC5kZXN0cm95O1xuUmVhZGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3kgPSBkZXN0cm95SW1wbC51bmRlc3Ryb3k7XG5SZWFkYWJsZS5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICB0aGlzLnB1c2gobnVsbCk7XG4gIGNiKGVycik7XG59O1xuXG4vLyBNYW51YWxseSBzaG92ZSBzb21ldGhpbmcgaW50byB0aGUgcmVhZCgpIGJ1ZmZlci5cbi8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIHRoZSBoaWdoV2F0ZXJNYXJrIGhhcyBub3QgYmVlbiBoaXQgeWV0LFxuLy8gc2ltaWxhciB0byBob3cgV3JpdGFibGUud3JpdGUoKSByZXR1cm5zIHRydWUgaWYgeW91IHNob3VsZFxuLy8gd3JpdGUoKSBzb21lIG1vcmUuXG5SZWFkYWJsZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIHNraXBDaHVua0NoZWNrO1xuXG4gIGlmICghc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuY29kaW5nIHx8IHN0YXRlLmRlZmF1bHRFbmNvZGluZztcbiAgICAgIGlmIChlbmNvZGluZyAhPT0gc3RhdGUuZW5jb2RpbmcpIHtcbiAgICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpO1xuICAgICAgICBlbmNvZGluZyA9ICcnO1xuICAgICAgfVxuICAgICAgc2tpcENodW5rQ2hlY2sgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBza2lwQ2h1bmtDaGVjayA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBjaHVuaywgZW5jb2RpbmcsIGZhbHNlLCBza2lwQ2h1bmtDaGVjayk7XG59O1xuXG4vLyBVbnNoaWZ0IHNob3VsZCAqYWx3YXlzKiBiZSBzb21ldGhpbmcgZGlyZWN0bHkgb3V0IG9mIHJlYWQoKVxuUmVhZGFibGUucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgcmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcywgY2h1bmssIG51bGwsIHRydWUsIGZhbHNlKTtcbn07XG5cbmZ1bmN0aW9uIHJlYWRhYmxlQWRkQ2h1bmsoc3RyZWFtLCBjaHVuaywgZW5jb2RpbmcsIGFkZFRvRnJvbnQsIHNraXBDaHVua0NoZWNrKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGVyO1xuICAgIGlmICghc2tpcENodW5rQ2hlY2spIGVyID0gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuayk7XG4gICAgaWYgKGVyKSB7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5vYmplY3RNb2RlIHx8IGNodW5rICYmIGNodW5rLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmICFzdGF0ZS5vYmplY3RNb2RlICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihjaHVuaykgIT09IEJ1ZmZlci5wcm90b3R5cGUpIHtcbiAgICAgICAgY2h1bmsgPSBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFkZFRvRnJvbnQpIHtcbiAgICAgICAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHN0cmVhbS5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignc3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnQnKSk7ZWxzZSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgdHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLmVuZGVkKSB7XG4gICAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignc3RyZWFtLnB1c2goKSBhZnRlciBFT0YnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5yZWFkaW5nID0gZmFsc2U7XG4gICAgICAgIGlmIChzdGF0ZS5kZWNvZGVyICYmICFlbmNvZGluZykge1xuICAgICAgICAgIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG4gICAgICAgICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgfHwgY2h1bmsubGVuZ3RoICE9PSAwKSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpO2Vsc2UgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghYWRkVG9Gcm9udCkge1xuICAgICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZWVkTW9yZURhdGEoc3RhdGUpO1xufVxuXG5mdW5jdGlvbiBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgYWRkVG9Gcm9udCkge1xuICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgIXN0YXRlLnN5bmMpIHtcbiAgICBzdHJlYW0uZW1pdCgnZGF0YScsIGNodW5rKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgfSBlbHNlIHtcbiAgICAvLyB1cGRhdGUgdGhlIGJ1ZmZlciBpbmZvLlxuICAgIHN0YXRlLmxlbmd0aCArPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgICBpZiAoYWRkVG9Gcm9udCkgc3RhdGUuYnVmZmVyLnVuc2hpZnQoY2h1bmspO2Vsc2Ugc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuXG4gICAgaWYgKHN0YXRlLm5lZWRSZWFkYWJsZSkgZW1pdFJlYWRhYmxlKHN0cmVhbSk7XG4gIH1cbiAgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKTtcbn1cblxuZnVuY3Rpb24gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuaykge1xuICB2YXIgZXI7XG4gIGlmICghX2lzVWludDhBcnJheShjaHVuaykgJiYgdHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiBjaHVuayAhPT0gdW5kZWZpbmVkICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG5vbi1zdHJpbmcvYnVmZmVyIGNodW5rJyk7XG4gIH1cbiAgcmV0dXJuIGVyO1xufVxuXG4vLyBpZiBpdCdzIHBhc3QgdGhlIGhpZ2ggd2F0ZXIgbWFyaywgd2UgY2FuIHB1c2ggaW4gc29tZSBtb3JlLlxuLy8gQWxzbywgaWYgd2UgaGF2ZSBubyBkYXRhIHlldCwgd2UgY2FuIHN0YW5kIHNvbWVcbi8vIG1vcmUgYnl0ZXMuICBUaGlzIGlzIHRvIHdvcmsgYXJvdW5kIGNhc2VzIHdoZXJlIGh3bT0wLFxuLy8gc3VjaCBhcyB0aGUgcmVwbC4gIEFsc28sIGlmIHRoZSBwdXNoKCkgdHJpZ2dlcmVkIGFcbi8vIHJlYWRhYmxlIGV2ZW50LCBhbmQgdGhlIHVzZXIgY2FsbGVkIHJlYWQobGFyZ2VOdW1iZXIpIHN1Y2ggdGhhdFxuLy8gbmVlZFJlYWRhYmxlIHdhcyBzZXQsIHRoZW4gd2Ugb3VnaHQgdG8gcHVzaCBtb3JlLCBzbyB0aGF0IGFub3RoZXJcbi8vICdyZWFkYWJsZScgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQuXG5mdW5jdGlvbiBuZWVkTW9yZURhdGEoc3RhdGUpIHtcbiAgcmV0dXJuICFzdGF0ZS5lbmRlZCAmJiAoc3RhdGUubmVlZFJlYWRhYmxlIHx8IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUubGVuZ3RoID09PSAwKTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLmlzUGF1c2VkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID09PSBmYWxzZTtcbn07XG5cbi8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nID0gZnVuY3Rpb24gKGVuYykge1xuICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihlbmMpO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nID0gZW5jO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIERvbid0IHJhaXNlIHRoZSBod20gPiA4TUJcbnZhciBNQVhfSFdNID0gMHg4MDAwMDA7XG5mdW5jdGlvbiBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKSB7XG4gIGlmIChuID49IE1BWF9IV00pIHtcbiAgICBuID0gTUFYX0hXTTtcbiAgfSBlbHNlIHtcbiAgICAvLyBHZXQgdGhlIG5leHQgaGlnaGVzdCBwb3dlciBvZiAyIHRvIHByZXZlbnQgaW5jcmVhc2luZyBod20gZXhjZXNzaXZlbHkgaW5cbiAgICAvLyB0aW55IGFtb3VudHNcbiAgICBuLS07XG4gICAgbiB8PSBuID4+PiAxO1xuICAgIG4gfD0gbiA+Pj4gMjtcbiAgICBuIHw9IG4gPj4+IDQ7XG4gICAgbiB8PSBuID4+PiA4O1xuICAgIG4gfD0gbiA+Pj4gMTY7XG4gICAgbisrO1xuICB9XG4gIHJldHVybiBuO1xufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cbmZ1bmN0aW9uIGhvd011Y2hUb1JlYWQobiwgc3RhdGUpIHtcbiAgaWYgKG4gPD0gMCB8fCBzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIHJldHVybiAwO1xuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0dXJuIDE7XG4gIGlmIChuICE9PSBuKSB7XG4gICAgLy8gT25seSBmbG93IG9uZSBidWZmZXIgYXQgYSB0aW1lXG4gICAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoKSByZXR1cm4gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg7ZWxzZSByZXR1cm4gc3RhdGUubGVuZ3RoO1xuICB9XG4gIC8vIElmIHdlJ3JlIGFza2luZyBmb3IgbW9yZSB0aGFuIHRoZSBjdXJyZW50IGh3bSwgdGhlbiByYWlzZSB0aGUgaHdtLlxuICBpZiAobiA+IHN0YXRlLmhpZ2hXYXRlck1hcmspIHN0YXRlLmhpZ2hXYXRlck1hcmsgPSBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKTtcbiAgaWYgKG4gPD0gc3RhdGUubGVuZ3RoKSByZXR1cm4gbjtcbiAgLy8gRG9uJ3QgaGF2ZSBlbm91Z2hcbiAgaWYgKCFzdGF0ZS5lbmRlZCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbn1cblxuLy8geW91IGNhbiBvdmVycmlkZSBlaXRoZXIgdGhpcyBtZXRob2QsIG9yIHRoZSBhc3luYyBfcmVhZChuKSBiZWxvdy5cblJlYWRhYmxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgZGVidWcoJ3JlYWQnLCBuKTtcbiAgbiA9IHBhcnNlSW50KG4sIDEwKTtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIG5PcmlnID0gbjtcblxuICBpZiAobiAhPT0gMCkgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG5cbiAgLy8gaWYgd2UncmUgZG9pbmcgcmVhZCgwKSB0byB0cmlnZ2VyIGEgcmVhZGFibGUgZXZlbnQsIGJ1dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYSBidW5jaCBvZiBkYXRhIGluIHRoZSBidWZmZXIsIHRoZW4ganVzdCB0cmlnZ2VyXG4gIC8vIHRoZSAncmVhZGFibGUnIGV2ZW50IGFuZCBtb3ZlIG9uLlxuICBpZiAobiA9PT0gMCAmJiBzdGF0ZS5uZWVkUmVhZGFibGUgJiYgKHN0YXRlLmxlbmd0aCA+PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmVuZGVkKSkge1xuICAgIGRlYnVnKCdyZWFkOiBlbWl0UmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLmVuZGVkKTtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtlbHNlIGVtaXRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG4gPSBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKTtcblxuICAvLyBpZiB3ZSd2ZSBlbmRlZCwgYW5kIHdlJ3JlIG5vdyBjbGVhciwgdGhlbiBmaW5pc2ggaXQgdXAuXG4gIGlmIChuID09PSAwICYmIHN0YXRlLmVuZGVkKSB7XG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgZW5kUmVhZGFibGUodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBBbGwgdGhlIGFjdHVhbCBjaHVuayBnZW5lcmF0aW9uIGxvZ2ljIG5lZWRzIHRvIGJlXG4gIC8vICpiZWxvdyogdGhlIGNhbGwgdG8gX3JlYWQuICBUaGUgcmVhc29uIGlzIHRoYXQgaW4gY2VydGFpblxuICAvLyBzeW50aGV0aWMgc3RyZWFtIGNhc2VzLCBzdWNoIGFzIHBhc3N0aHJvdWdoIHN0cmVhbXMsIF9yZWFkXG4gIC8vIG1heSBiZSBhIGNvbXBsZXRlbHkgc3luY2hyb25vdXMgb3BlcmF0aW9uIHdoaWNoIG1heSBjaGFuZ2VcbiAgLy8gdGhlIHN0YXRlIG9mIHRoZSByZWFkIGJ1ZmZlciwgcHJvdmlkaW5nIGVub3VnaCBkYXRhIHdoZW5cbiAgLy8gYmVmb3JlIHRoZXJlIHdhcyAqbm90KiBlbm91Z2guXG4gIC8vXG4gIC8vIFNvLCB0aGUgc3RlcHMgYXJlOlxuICAvLyAxLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHN0YXRlIG9mIHRoaW5ncyB3aWxsIGJlIGFmdGVyIHdlIGRvXG4gIC8vIGEgcmVhZCBmcm9tIHRoZSBidWZmZXIuXG4gIC8vXG4gIC8vIDIuIElmIHRoYXQgcmVzdWx0aW5nIHN0YXRlIHdpbGwgdHJpZ2dlciBhIF9yZWFkLCB0aGVuIGNhbGwgX3JlYWQuXG4gIC8vIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBhc3luY2hyb25vdXMsIG9yIHN5bmNocm9ub3VzLiAgWWVzLCBpdCBpc1xuICAvLyBkZWVwbHkgdWdseSB0byB3cml0ZSBBUElzIHRoaXMgd2F5LCBidXQgdGhhdCBzdGlsbCBkb2Vzbid0IG1lYW5cbiAgLy8gdGhhdCB0aGUgUmVhZGFibGUgY2xhc3Mgc2hvdWxkIGJlaGF2ZSBpbXByb3Blcmx5LCBhcyBzdHJlYW1zIGFyZVxuICAvLyBkZXNpZ25lZCB0byBiZSBzeW5jL2FzeW5jIGFnbm9zdGljLlxuICAvLyBUYWtlIG5vdGUgaWYgdGhlIF9yZWFkIGNhbGwgaXMgc3luYyBvciBhc3luYyAoaWUsIGlmIHRoZSByZWFkIGNhbGxcbiAgLy8gaGFzIHJldHVybmVkIHlldCksIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyIG9yIG5vdCBpdCdzIHNhZmUgdG8gZW1pdFxuICAvLyAncmVhZGFibGUnIGV0Yy5cbiAgLy9cbiAgLy8gMy4gQWN0dWFsbHkgcHVsbCB0aGUgcmVxdWVzdGVkIGNodW5rcyBvdXQgb2YgdGhlIGJ1ZmZlciBhbmQgcmV0dXJuLlxuXG4gIC8vIGlmIHdlIG5lZWQgYSByZWFkYWJsZSBldmVudCwgdGhlbiB3ZSBuZWVkIHRvIGRvIHNvbWUgcmVhZGluZy5cbiAgdmFyIGRvUmVhZCA9IHN0YXRlLm5lZWRSZWFkYWJsZTtcbiAgZGVidWcoJ25lZWQgcmVhZGFibGUnLCBkb1JlYWQpO1xuXG4gIC8vIGlmIHdlIGN1cnJlbnRseSBoYXZlIGxlc3MgdGhhbiB0aGUgaGlnaFdhdGVyTWFyaywgdGhlbiBhbHNvIHJlYWQgc29tZVxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwIHx8IHN0YXRlLmxlbmd0aCAtIG4gPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgZG9SZWFkID0gdHJ1ZTtcbiAgICBkZWJ1ZygnbGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsnLCBkb1JlYWQpO1xuICB9XG5cbiAgLy8gaG93ZXZlciwgaWYgd2UndmUgZW5kZWQsIHRoZW4gdGhlcmUncyBubyBwb2ludCwgYW5kIGlmIHdlJ3JlIGFscmVhZHlcbiAgLy8gcmVhZGluZywgdGhlbiBpdCdzIHVubmVjZXNzYXJ5LlxuICBpZiAoc3RhdGUuZW5kZWQgfHwgc3RhdGUucmVhZGluZykge1xuICAgIGRvUmVhZCA9IGZhbHNlO1xuICAgIGRlYnVnKCdyZWFkaW5nIG9yIGVuZGVkJywgZG9SZWFkKTtcbiAgfSBlbHNlIGlmIChkb1JlYWQpIHtcbiAgICBkZWJ1ZygnZG8gcmVhZCcpO1xuICAgIHN0YXRlLnJlYWRpbmcgPSB0cnVlO1xuICAgIHN0YXRlLnN5bmMgPSB0cnVlO1xuICAgIC8vIGlmIHRoZSBsZW5ndGggaXMgY3VycmVudGx5IHplcm8sIHRoZW4gd2UgKm5lZWQqIGEgcmVhZGFibGUgZXZlbnQuXG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAvLyBjYWxsIGludGVybmFsIHJlYWQgbWV0aG9kXG4gICAgdGhpcy5fcmVhZChzdGF0ZS5oaWdoV2F0ZXJNYXJrKTtcbiAgICBzdGF0ZS5zeW5jID0gZmFsc2U7XG4gICAgLy8gSWYgX3JlYWQgcHVzaGVkIGRhdGEgc3luY2hyb25vdXNseSwgdGhlbiBgcmVhZGluZ2Agd2lsbCBiZSBmYWxzZSxcbiAgICAvLyBhbmQgd2UgbmVlZCB0byByZS1ldmFsdWF0ZSBob3cgbXVjaCBkYXRhIHdlIGNhbiByZXR1cm4gdG8gdGhlIHVzZXIuXG4gICAgaWYgKCFzdGF0ZS5yZWFkaW5nKSBuID0gaG93TXVjaFRvUmVhZChuT3JpZywgc3RhdGUpO1xuICB9XG5cbiAgdmFyIHJldDtcbiAgaWYgKG4gPiAwKSByZXQgPSBmcm9tTGlzdChuLCBzdGF0ZSk7ZWxzZSByZXQgPSBudWxsO1xuXG4gIGlmIChyZXQgPT09IG51bGwpIHtcbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIG4gPSAwO1xuICB9IGVsc2Uge1xuICAgIHN0YXRlLmxlbmd0aCAtPSBuO1xuICB9XG5cbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIElmIHdlIGhhdmUgbm90aGluZyBpbiB0aGUgYnVmZmVyLCB0aGVuIHdlIHdhbnQgdG8ga25vd1xuICAgIC8vIGFzIHNvb24gYXMgd2UgKmRvKiBnZXQgc29tZXRoaW5nIGludG8gdGhlIGJ1ZmZlci5cbiAgICBpZiAoIXN0YXRlLmVuZGVkKSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuXG4gICAgLy8gSWYgd2UgdHJpZWQgdG8gcmVhZCgpIHBhc3QgdGhlIEVPRiwgdGhlbiBlbWl0IGVuZCBvbiB0aGUgbmV4dCB0aWNrLlxuICAgIGlmIChuT3JpZyAhPT0gbiAmJiBzdGF0ZS5lbmRlZCkgZW5kUmVhZGFibGUodGhpcyk7XG4gIH1cblxuICBpZiAocmV0ICE9PSBudWxsKSB0aGlzLmVtaXQoJ2RhdGEnLCByZXQpO1xuXG4gIHJldHVybiByZXQ7XG59O1xuXG5mdW5jdGlvbiBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmVuZGVkKSByZXR1cm47XG4gIGlmIChzdGF0ZS5kZWNvZGVyKSB7XG4gICAgdmFyIGNodW5rID0gc3RhdGUuZGVjb2Rlci5lbmQoKTtcbiAgICBpZiAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoKSB7XG4gICAgICBzdGF0ZS5idWZmZXIucHVzaChjaHVuayk7XG4gICAgICBzdGF0ZS5sZW5ndGggKz0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG4gICAgfVxuICB9XG4gIHN0YXRlLmVuZGVkID0gdHJ1ZTtcblxuICAvLyBlbWl0ICdyZWFkYWJsZScgbm93IHRvIG1ha2Ugc3VyZSBpdCBnZXRzIHBpY2tlZCB1cC5cbiAgZW1pdFJlYWRhYmxlKHN0cmVhbSk7XG59XG5cbi8vIERvbid0IGVtaXQgcmVhZGFibGUgcmlnaHQgYXdheSBpbiBzeW5jIG1vZGUsIGJlY2F1c2UgdGhpcyBjYW4gdHJpZ2dlclxuLy8gYW5vdGhlciByZWFkKCkgY2FsbCA9PiBzdGFjayBvdmVyZmxvdy4gIFRoaXMgd2F5LCBpdCBtaWdodCB0cmlnZ2VyXG4vLyBhIG5leHRUaWNrIHJlY3Vyc2lvbiB3YXJuaW5nLCBidXQgdGhhdCdzIG5vdCBzbyBiYWQuXG5mdW5jdGlvbiBlbWl0UmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgc3RhdGUubmVlZFJlYWRhYmxlID0gZmFsc2U7XG4gIGlmICghc3RhdGUuZW1pdHRlZFJlYWRhYmxlKSB7XG4gICAgZGVidWcoJ2VtaXRSZWFkYWJsZScsIHN0YXRlLmZsb3dpbmcpO1xuICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgaWYgKHN0YXRlLnN5bmMpIHBuYS5uZXh0VGljayhlbWl0UmVhZGFibGVfLCBzdHJlYW0pO2Vsc2UgZW1pdFJlYWRhYmxlXyhzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVtaXRSZWFkYWJsZV8oc3RyZWFtKSB7XG4gIGRlYnVnKCdlbWl0IHJlYWRhYmxlJyk7XG4gIHN0cmVhbS5lbWl0KCdyZWFkYWJsZScpO1xuICBmbG93KHN0cmVhbSk7XG59XG5cbi8vIGF0IHRoaXMgcG9pbnQsIHRoZSB1c2VyIGhhcyBwcmVzdW1hYmx5IHNlZW4gdGhlICdyZWFkYWJsZScgZXZlbnQsXG4vLyBhbmQgY2FsbGVkIHJlYWQoKSB0byBjb25zdW1lIHNvbWUgZGF0YS4gIHRoYXQgbWF5IGhhdmUgdHJpZ2dlcmVkXG4vLyBpbiB0dXJuIGFub3RoZXIgX3JlYWQobikgY2FsbCwgaW4gd2hpY2ggY2FzZSByZWFkaW5nID0gdHJ1ZSBpZlxuLy8gaXQncyBpbiBwcm9ncmVzcy5cbi8vIEhvd2V2ZXIsIGlmIHdlJ3JlIG5vdCBlbmRlZCwgb3IgcmVhZGluZywgYW5kIHRoZSBsZW5ndGggPCBod20sXG4vLyB0aGVuIGdvIGFoZWFkIGFuZCB0cnkgdG8gcmVhZCBzb21lIG1vcmUgcHJlZW1wdGl2ZWx5LlxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVhZGluZ01vcmUpIHtcbiAgICBzdGF0ZS5yZWFkaW5nTW9yZSA9IHRydWU7XG4gICAgcG5hLm5leHRUaWNrKG1heWJlUmVhZE1vcmVfLCBzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXliZVJlYWRNb3JlXyhzdHJlYW0sIHN0YXRlKSB7XG4gIHZhciBsZW4gPSBzdGF0ZS5sZW5ndGg7XG4gIHdoaWxlICghc3RhdGUucmVhZGluZyAmJiAhc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUuZW5kZWQgJiYgc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyaykge1xuICAgIGRlYnVnKCdtYXliZVJlYWRNb3JlIHJlYWQgMCcpO1xuICAgIHN0cmVhbS5yZWFkKDApO1xuICAgIGlmIChsZW4gPT09IHN0YXRlLmxlbmd0aClcbiAgICAgIC8vIGRpZG4ndCBnZXQgYW55IGRhdGEsIHN0b3Agc3Bpbm5pbmcuXG4gICAgICBicmVhaztlbHNlIGxlbiA9IHN0YXRlLmxlbmd0aDtcbiAgfVxuICBzdGF0ZS5yZWFkaW5nTW9yZSA9IGZhbHNlO1xufVxuXG4vLyBhYnN0cmFjdCBtZXRob2QuICB0byBiZSBvdmVycmlkZGVuIGluIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyBjYWxsIGNiKGVyLCBkYXRhKSB3aGVyZSBkYXRhIGlzIDw9IG4gaW4gbGVuZ3RoLlxuLy8gZm9yIHZpcnR1YWwgKG5vbi1zdHJpbmcsIG5vbi1idWZmZXIpIHN0cmVhbXMsIFwibGVuZ3RoXCIgaXMgc29tZXdoYXRcbi8vIGFyYml0cmFyeSwgYW5kIHBlcmhhcHMgbm90IHZlcnkgbWVhbmluZ2Z1bC5cblJlYWRhYmxlLnByb3RvdHlwZS5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ19yZWFkKCkgaXMgbm90IGltcGxlbWVudGVkJykpO1xufTtcblxuUmVhZGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoZGVzdCwgcGlwZU9wdHMpIHtcbiAgdmFyIHNyYyA9IHRoaXM7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG5cbiAgc3dpdGNoIChzdGF0ZS5waXBlc0NvdW50KSB7XG4gICAgY2FzZSAwOlxuICAgICAgc3RhdGUucGlwZXMgPSBkZXN0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgc3RhdGUucGlwZXMgPSBbc3RhdGUucGlwZXMsIGRlc3RdO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN0YXRlLnBpcGVzLnB1c2goZGVzdCk7XG4gICAgICBicmVhaztcbiAgfVxuICBzdGF0ZS5waXBlc0NvdW50ICs9IDE7XG4gIGRlYnVnKCdwaXBlIGNvdW50PSVkIG9wdHM9JWonLCBzdGF0ZS5waXBlc0NvdW50LCBwaXBlT3B0cyk7XG5cbiAgdmFyIGRvRW5kID0gKCFwaXBlT3B0cyB8fCBwaXBlT3B0cy5lbmQgIT09IGZhbHNlKSAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZG91dCAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZGVycjtcblxuICB2YXIgZW5kRm4gPSBkb0VuZCA/IG9uZW5kIDogdW5waXBlO1xuICBpZiAoc3RhdGUuZW5kRW1pdHRlZCkgcG5hLm5leHRUaWNrKGVuZEZuKTtlbHNlIHNyYy5vbmNlKCdlbmQnLCBlbmRGbik7XG5cbiAgZGVzdC5vbigndW5waXBlJywgb251bnBpcGUpO1xuICBmdW5jdGlvbiBvbnVucGlwZShyZWFkYWJsZSwgdW5waXBlSW5mbykge1xuICAgIGRlYnVnKCdvbnVucGlwZScpO1xuICAgIGlmIChyZWFkYWJsZSA9PT0gc3JjKSB7XG4gICAgICBpZiAodW5waXBlSW5mbyAmJiB1bnBpcGVJbmZvLmhhc1VucGlwZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHVucGlwZUluZm8uaGFzVW5waXBlZCA9IHRydWU7XG4gICAgICAgIGNsZWFudXAoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvbmVuZCgpIHtcbiAgICBkZWJ1Zygnb25lbmQnKTtcbiAgICBkZXN0LmVuZCgpO1xuICB9XG5cbiAgLy8gd2hlbiB0aGUgZGVzdCBkcmFpbnMsIGl0IHJlZHVjZXMgdGhlIGF3YWl0RHJhaW4gY291bnRlclxuICAvLyBvbiB0aGUgc291cmNlLiAgVGhpcyB3b3VsZCBiZSBtb3JlIGVsZWdhbnQgd2l0aCBhIC5vbmNlKClcbiAgLy8gaGFuZGxlciBpbiBmbG93KCksIGJ1dCBhZGRpbmcgYW5kIHJlbW92aW5nIHJlcGVhdGVkbHkgaXNcbiAgLy8gdG9vIHNsb3cuXG4gIHZhciBvbmRyYWluID0gcGlwZU9uRHJhaW4oc3JjKTtcbiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKTtcblxuICB2YXIgY2xlYW5lZFVwID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgZGVidWcoJ2NsZWFudXAnKTtcbiAgICAvLyBjbGVhbnVwIGV2ZW50IGhhbmRsZXJzIG9uY2UgdGhlIHBpcGUgaXMgYnJva2VuXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZHJhaW4nLCBvbmRyYWluKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ3VucGlwZScsIG9udW5waXBlKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIHVucGlwZSk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKTtcblxuICAgIGNsZWFuZWRVcCA9IHRydWU7XG5cbiAgICAvLyBpZiB0aGUgcmVhZGVyIGlzIHdhaXRpbmcgZm9yIGEgZHJhaW4gZXZlbnQgZnJvbSB0aGlzXG4gICAgLy8gc3BlY2lmaWMgd3JpdGVyLCB0aGVuIGl0IHdvdWxkIGNhdXNlIGl0IHRvIG5ldmVyIHN0YXJ0XG4gICAgLy8gZmxvd2luZyBhZ2Fpbi5cbiAgICAvLyBTbywgaWYgdGhpcyBpcyBhd2FpdGluZyBhIGRyYWluLCB0aGVuIHdlIGp1c3QgY2FsbCBpdCBub3cuXG4gICAgLy8gSWYgd2UgZG9uJ3Qga25vdywgdGhlbiBhc3N1bWUgdGhhdCB3ZSBhcmUgd2FpdGluZyBmb3Igb25lLlxuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluICYmICghZGVzdC5fd3JpdGFibGVTdGF0ZSB8fCBkZXN0Ll93cml0YWJsZVN0YXRlLm5lZWREcmFpbikpIG9uZHJhaW4oKTtcbiAgfVxuXG4gIC8vIElmIHRoZSB1c2VyIHB1c2hlcyBtb3JlIGRhdGEgd2hpbGUgd2UncmUgd3JpdGluZyB0byBkZXN0IHRoZW4gd2UnbGwgZW5kIHVwXG4gIC8vIGluIG9uZGF0YSBhZ2Fpbi4gSG93ZXZlciwgd2Ugb25seSB3YW50IHRvIGluY3JlYXNlIGF3YWl0RHJhaW4gb25jZSBiZWNhdXNlXG4gIC8vIGRlc3Qgd2lsbCBvbmx5IGVtaXQgb25lICdkcmFpbicgZXZlbnQgZm9yIHRoZSBtdWx0aXBsZSB3cml0ZXMuXG4gIC8vID0+IEludHJvZHVjZSBhIGd1YXJkIG9uIGluY3JlYXNpbmcgYXdhaXREcmFpbi5cbiAgdmFyIGluY3JlYXNlZEF3YWl0RHJhaW4gPSBmYWxzZTtcbiAgc3JjLm9uKCdkYXRhJywgb25kYXRhKTtcbiAgZnVuY3Rpb24gb25kYXRhKGNodW5rKSB7XG4gICAgZGVidWcoJ29uZGF0YScpO1xuICAgIGluY3JlYXNlZEF3YWl0RHJhaW4gPSBmYWxzZTtcbiAgICB2YXIgcmV0ID0gZGVzdC53cml0ZShjaHVuayk7XG4gICAgaWYgKGZhbHNlID09PSByZXQgJiYgIWluY3JlYXNlZEF3YWl0RHJhaW4pIHtcbiAgICAgIC8vIElmIHRoZSB1c2VyIHVucGlwZWQgZHVyaW5nIGBkZXN0LndyaXRlKClgLCBpdCBpcyBwb3NzaWJsZVxuICAgICAgLy8gdG8gZ2V0IHN0dWNrIGluIGEgcGVybWFuZW50bHkgcGF1c2VkIHN0YXRlIGlmIHRoYXQgd3JpdGVcbiAgICAgIC8vIGFsc28gcmV0dXJuZWQgZmFsc2UuXG4gICAgICAvLyA9PiBDaGVjayB3aGV0aGVyIGBkZXN0YCBpcyBzdGlsbCBhIHBpcGluZyBkZXN0aW5hdGlvbi5cbiAgICAgIGlmICgoc3RhdGUucGlwZXNDb3VudCA9PT0gMSAmJiBzdGF0ZS5waXBlcyA9PT0gZGVzdCB8fCBzdGF0ZS5waXBlc0NvdW50ID4gMSAmJiBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KSAhPT0gLTEpICYmICFjbGVhbmVkVXApIHtcbiAgICAgICAgZGVidWcoJ2ZhbHNlIHdyaXRlIHJlc3BvbnNlLCBwYXVzZScsIHNyYy5fcmVhZGFibGVTdGF0ZS5hd2FpdERyYWluKTtcbiAgICAgICAgc3JjLl9yZWFkYWJsZVN0YXRlLmF3YWl0RHJhaW4rKztcbiAgICAgICAgaW5jcmVhc2VkQXdhaXREcmFpbiA9IHRydWU7XG4gICAgICB9XG4gICAgICBzcmMucGF1c2UoKTtcbiAgICB9XG4gIH1cblxuICAvLyBpZiB0aGUgZGVzdCBoYXMgYW4gZXJyb3IsIHRoZW4gc3RvcCBwaXBpbmcgaW50byBpdC5cbiAgLy8gaG93ZXZlciwgZG9uJ3Qgc3VwcHJlc3MgdGhlIHRocm93aW5nIGJlaGF2aW9yIGZvciB0aGlzLlxuICBmdW5jdGlvbiBvbmVycm9yKGVyKSB7XG4gICAgZGVidWcoJ29uZXJyb3InLCBlcik7XG4gICAgdW5waXBlKCk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBpZiAoRUVsaXN0ZW5lckNvdW50KGRlc3QsICdlcnJvcicpID09PSAwKSBkZXN0LmVtaXQoJ2Vycm9yJywgZXIpO1xuICB9XG5cbiAgLy8gTWFrZSBzdXJlIG91ciBlcnJvciBoYW5kbGVyIGlzIGF0dGFjaGVkIGJlZm9yZSB1c2VybGFuZCBvbmVzLlxuICBwcmVwZW5kTGlzdGVuZXIoZGVzdCwgJ2Vycm9yJywgb25lcnJvcik7XG5cbiAgLy8gQm90aCBjbG9zZSBhbmQgZmluaXNoIHNob3VsZCB0cmlnZ2VyIHVucGlwZSwgYnV0IG9ubHkgb25jZS5cbiAgZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgdW5waXBlKCk7XG4gIH1cbiAgZGVzdC5vbmNlKCdjbG9zZScsIG9uY2xvc2UpO1xuICBmdW5jdGlvbiBvbmZpbmlzaCgpIHtcbiAgICBkZWJ1Zygnb25maW5pc2gnKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpO1xuICAgIHVucGlwZSgpO1xuICB9XG4gIGRlc3Qub25jZSgnZmluaXNoJywgb25maW5pc2gpO1xuXG4gIGZ1bmN0aW9uIHVucGlwZSgpIHtcbiAgICBkZWJ1ZygndW5waXBlJyk7XG4gICAgc3JjLnVucGlwZShkZXN0KTtcbiAgfVxuXG4gIC8vIHRlbGwgdGhlIGRlc3QgdGhhdCBpdCdzIGJlaW5nIHBpcGVkIHRvXG4gIGRlc3QuZW1pdCgncGlwZScsIHNyYyk7XG5cbiAgLy8gc3RhcnQgdGhlIGZsb3cgaWYgaXQgaGFzbid0IGJlZW4gc3RhcnRlZCBhbHJlYWR5LlxuICBpZiAoIXN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncGlwZSByZXN1bWUnKTtcbiAgICBzcmMucmVzdW1lKCk7XG4gIH1cblxuICByZXR1cm4gZGVzdDtcbn07XG5cbmZ1bmN0aW9uIHBpcGVPbkRyYWluKHNyYykge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdGF0ZSA9IHNyYy5fcmVhZGFibGVTdGF0ZTtcbiAgICBkZWJ1ZygncGlwZU9uRHJhaW4nLCBzdGF0ZS5hd2FpdERyYWluKTtcbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbikgc3RhdGUuYXdhaXREcmFpbi0tO1xuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluID09PSAwICYmIEVFbGlzdGVuZXJDb3VudChzcmMsICdkYXRhJykpIHtcbiAgICAgIHN0YXRlLmZsb3dpbmcgPSB0cnVlO1xuICAgICAgZmxvdyhzcmMpO1xuICAgIH1cbiAgfTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLnVucGlwZSA9IGZ1bmN0aW9uIChkZXN0KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciB1bnBpcGVJbmZvID0geyBoYXNVbnBpcGVkOiBmYWxzZSB9O1xuXG4gIC8vIGlmIHdlJ3JlIG5vdCBwaXBpbmcgYW55d2hlcmUsIHRoZW4gZG8gbm90aGluZy5cbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDApIHJldHVybiB0aGlzO1xuXG4gIC8vIGp1c3Qgb25lIGRlc3RpbmF0aW9uLiAgbW9zdCBjb21tb24gY2FzZS5cbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDEpIHtcbiAgICAvLyBwYXNzZWQgaW4gb25lLCBidXQgaXQncyBub3QgdGhlIHJpZ2h0IG9uZS5cbiAgICBpZiAoZGVzdCAmJiBkZXN0ICE9PSBzdGF0ZS5waXBlcykgcmV0dXJuIHRoaXM7XG5cbiAgICBpZiAoIWRlc3QpIGRlc3QgPSBzdGF0ZS5waXBlcztcblxuICAgIC8vIGdvdCBhIG1hdGNoLlxuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgaWYgKGRlc3QpIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBzbG93IGNhc2UuIG11bHRpcGxlIHBpcGUgZGVzdGluYXRpb25zLlxuXG4gIGlmICghZGVzdCkge1xuICAgIC8vIHJlbW92ZSBhbGwuXG4gICAgdmFyIGRlc3RzID0gc3RhdGUucGlwZXM7XG4gICAgdmFyIGxlbiA9IHN0YXRlLnBpcGVzQ291bnQ7XG4gICAgc3RhdGUucGlwZXMgPSBudWxsO1xuICAgIHN0YXRlLnBpcGVzQ291bnQgPSAwO1xuICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGRlc3RzW2ldLmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pO1xuICAgIH1yZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHRyeSB0byBmaW5kIHRoZSByaWdodCBvbmUuXG4gIHZhciBpbmRleCA9IGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpO1xuICBpZiAoaW5kZXggPT09IC0xKSByZXR1cm4gdGhpcztcblxuICBzdGF0ZS5waXBlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICBzdGF0ZS5waXBlc0NvdW50IC09IDE7XG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSBzdGF0ZS5waXBlcyA9IHN0YXRlLnBpcGVzWzBdO1xuXG4gIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBzZXQgdXAgZGF0YSBldmVudHMgaWYgdGhleSBhcmUgYXNrZWQgZm9yXG4vLyBFbnN1cmUgcmVhZGFibGUgbGlzdGVuZXJzIGV2ZW50dWFsbHkgZ2V0IHNvbWV0aGluZ1xuUmVhZGFibGUucHJvdG90eXBlLm9uID0gZnVuY3Rpb24gKGV2LCBmbikge1xuICB2YXIgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsIGV2LCBmbik7XG5cbiAgaWYgKGV2ID09PSAnZGF0YScpIHtcbiAgICAvLyBTdGFydCBmbG93aW5nIG9uIG5leHQgdGljayBpZiBzdHJlYW0gaXNuJ3QgZXhwbGljaXRseSBwYXVzZWRcbiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nICE9PSBmYWxzZSkgdGhpcy5yZXN1bWUoKTtcbiAgfSBlbHNlIGlmIChldiA9PT0gJ3JlYWRhYmxlJykge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gICAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmICFzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZykge1xuICAgICAgc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcgPSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gICAgICBpZiAoIXN0YXRlLnJlYWRpbmcpIHtcbiAgICAgICAgcG5hLm5leHRUaWNrKG5SZWFkaW5nTmV4dFRpY2ssIHRoaXMpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgZW1pdFJlYWRhYmxlKHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuUmVhZGFibGUucHJvdG90eXBlLmFkZExpc3RlbmVyID0gUmVhZGFibGUucHJvdG90eXBlLm9uO1xuXG5mdW5jdGlvbiBuUmVhZGluZ05leHRUaWNrKHNlbGYpIHtcbiAgZGVidWcoJ3JlYWRhYmxlIG5leHR0aWNrIHJlYWQgMCcpO1xuICBzZWxmLnJlYWQoMCk7XG59XG5cbi8vIHBhdXNlKCkgYW5kIHJlc3VtZSgpIGFyZSByZW1uYW50cyBvZiB0aGUgbGVnYWN5IHJlYWRhYmxlIHN0cmVhbSBBUElcbi8vIElmIHRoZSB1c2VyIHVzZXMgdGhlbSwgdGhlbiBzd2l0Y2ggaW50byBvbGQgbW9kZS5cblJlYWRhYmxlLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdyZXN1bWUnKTtcbiAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTtcbiAgICByZXN1bWUodGhpcywgc3RhdGUpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gcmVzdW1lKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZXN1bWVTY2hlZHVsZWQpIHtcbiAgICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSB0cnVlO1xuICAgIHBuYS5uZXh0VGljayhyZXN1bWVfLCBzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXN1bWVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgZGVidWcoJ3Jlc3VtZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgfVxuXG4gIHN0YXRlLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlO1xuICBzdGF0ZS5hd2FpdERyYWluID0gMDtcbiAgc3RyZWFtLmVtaXQoJ3Jlc3VtZScpO1xuICBmbG93KHN0cmVhbSk7XG4gIGlmIChzdGF0ZS5mbG93aW5nICYmICFzdGF0ZS5yZWFkaW5nKSBzdHJlYW0ucmVhZCgwKTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICBkZWJ1ZygnY2FsbCBwYXVzZSBmbG93aW5nPSVqJywgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKTtcbiAgaWYgKGZhbHNlICE9PSB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncGF1c2UnKTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmVtaXQoJ3BhdXNlJyk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBmbG93KHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGRlYnVnKCdmbG93Jywgc3RhdGUuZmxvd2luZyk7XG4gIHdoaWxlIChzdGF0ZS5mbG93aW5nICYmIHN0cmVhbS5yZWFkKCkgIT09IG51bGwpIHt9XG59XG5cbi8vIHdyYXAgYW4gb2xkLXN0eWxlIHN0cmVhbSBhcyB0aGUgYXN5bmMgZGF0YSBzb3VyY2UuXG4vLyBUaGlzIGlzICpub3QqIHBhcnQgb2YgdGhlIHJlYWRhYmxlIHN0cmVhbSBpbnRlcmZhY2UuXG4vLyBJdCBpcyBhbiB1Z2x5IHVuZm9ydHVuYXRlIG1lc3Mgb2YgaGlzdG9yeS5cblJlYWRhYmxlLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24gKHN0cmVhbSkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBwYXVzZWQgPSBmYWxzZTtcblxuICBzdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBlbmQnKTtcbiAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhc3RhdGUuZW5kZWQpIHtcbiAgICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgICBpZiAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoKSBfdGhpcy5wdXNoKGNodW5rKTtcbiAgICB9XG5cbiAgICBfdGhpcy5wdXNoKG51bGwpO1xuICB9KTtcblxuICBzdHJlYW0ub24oJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBkYXRhJyk7XG4gICAgaWYgKHN0YXRlLmRlY29kZXIpIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG5cbiAgICAvLyBkb24ndCBza2lwIG92ZXIgZmFsc3kgdmFsdWVzIGluIG9iamVjdE1vZGVcbiAgICBpZiAoc3RhdGUub2JqZWN0TW9kZSAmJiAoY2h1bmsgPT09IG51bGwgfHwgY2h1bmsgPT09IHVuZGVmaW5lZCkpIHJldHVybjtlbHNlIGlmICghc3RhdGUub2JqZWN0TW9kZSAmJiAoIWNodW5rIHx8ICFjaHVuay5sZW5ndGgpKSByZXR1cm47XG5cbiAgICB2YXIgcmV0ID0gX3RoaXMucHVzaChjaHVuayk7XG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIHBhdXNlZCA9IHRydWU7XG4gICAgICBzdHJlYW0ucGF1c2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIHByb3h5IGFsbCB0aGUgb3RoZXIgbWV0aG9kcy5cbiAgLy8gaW1wb3J0YW50IHdoZW4gd3JhcHBpbmcgZmlsdGVycyBhbmQgZHVwbGV4ZXMuXG4gIGZvciAodmFyIGkgaW4gc3RyZWFtKSB7XG4gICAgaWYgKHRoaXNbaV0gPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygc3RyZWFtW2ldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2ldID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBzdHJlYW1bbWV0aG9kXS5hcHBseShzdHJlYW0sIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgICB9KGkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHByb3h5IGNlcnRhaW4gaW1wb3J0YW50IGV2ZW50cy5cbiAgZm9yICh2YXIgbiA9IDA7IG4gPCBrUHJveHlFdmVudHMubGVuZ3RoOyBuKyspIHtcbiAgICBzdHJlYW0ub24oa1Byb3h5RXZlbnRzW25dLCB0aGlzLmVtaXQuYmluZCh0aGlzLCBrUHJveHlFdmVudHNbbl0pKTtcbiAgfVxuXG4gIC8vIHdoZW4gd2UgdHJ5IHRvIGNvbnN1bWUgc29tZSBtb3JlIGJ5dGVzLCBzaW1wbHkgdW5wYXVzZSB0aGVcbiAgLy8gdW5kZXJseWluZyBzdHJlYW0uXG4gIHRoaXMuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICAgIGRlYnVnKCd3cmFwcGVkIF9yZWFkJywgbik7XG4gICAgaWYgKHBhdXNlZCkge1xuICAgICAgcGF1c2VkID0gZmFsc2U7XG4gICAgICBzdHJlYW0ucmVzdW1lKCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ3JlYWRhYmxlSGlnaFdhdGVyTWFyaycsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgfVxufSk7XG5cbi8vIGV4cG9zZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seS5cblJlYWRhYmxlLl9mcm9tTGlzdCA9IGZyb21MaXN0O1xuXG4vLyBQbHVjayBvZmYgbiBieXRlcyBmcm9tIGFuIGFycmF5IG9mIGJ1ZmZlcnMuXG4vLyBMZW5ndGggaXMgdGhlIGNvbWJpbmVkIGxlbmd0aHMgb2YgYWxsIHRoZSBidWZmZXJzIGluIHRoZSBsaXN0LlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBmcm9tTGlzdChuLCBzdGF0ZSkge1xuICAvLyBub3RoaW5nIGJ1ZmZlcmVkXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHZhciByZXQ7XG4gIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXQgPSBzdGF0ZS5idWZmZXIuc2hpZnQoKTtlbHNlIGlmICghbiB8fCBuID49IHN0YXRlLmxlbmd0aCkge1xuICAgIC8vIHJlYWQgaXQgYWxsLCB0cnVuY2F0ZSB0aGUgbGlzdFxuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSByZXQgPSBzdGF0ZS5idWZmZXIuam9pbignJyk7ZWxzZSBpZiAoc3RhdGUuYnVmZmVyLmxlbmd0aCA9PT0gMSkgcmV0ID0gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YTtlbHNlIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25jYXQoc3RhdGUubGVuZ3RoKTtcbiAgICBzdGF0ZS5idWZmZXIuY2xlYXIoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyByZWFkIHBhcnQgb2YgbGlzdFxuICAgIHJldCA9IGZyb21MaXN0UGFydGlhbChuLCBzdGF0ZS5idWZmZXIsIHN0YXRlLmRlY29kZXIpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gRXh0cmFjdHMgb25seSBlbm91Z2ggYnVmZmVyZWQgZGF0YSB0byBzYXRpc2Z5IHRoZSBhbW91bnQgcmVxdWVzdGVkLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBmcm9tTGlzdFBhcnRpYWwobiwgbGlzdCwgaGFzU3RyaW5ncykge1xuICB2YXIgcmV0O1xuICBpZiAobiA8IGxpc3QuaGVhZC5kYXRhLmxlbmd0aCkge1xuICAgIC8vIHNsaWNlIGlzIHRoZSBzYW1lIGZvciBidWZmZXJzIGFuZCBzdHJpbmdzXG4gICAgcmV0ID0gbGlzdC5oZWFkLmRhdGEuc2xpY2UoMCwgbik7XG4gICAgbGlzdC5oZWFkLmRhdGEgPSBsaXN0LmhlYWQuZGF0YS5zbGljZShuKTtcbiAgfSBlbHNlIGlmIChuID09PSBsaXN0LmhlYWQuZGF0YS5sZW5ndGgpIHtcbiAgICAvLyBmaXJzdCBjaHVuayBpcyBhIHBlcmZlY3QgbWF0Y2hcbiAgICByZXQgPSBsaXN0LnNoaWZ0KCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gcmVzdWx0IHNwYW5zIG1vcmUgdGhhbiBvbmUgYnVmZmVyXG4gICAgcmV0ID0gaGFzU3RyaW5ncyA/IGNvcHlGcm9tQnVmZmVyU3RyaW5nKG4sIGxpc3QpIDogY29weUZyb21CdWZmZXIobiwgbGlzdCk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gQ29waWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBjaGFyYWN0ZXJzIGZyb20gdGhlIGxpc3Qgb2YgYnVmZmVyZWQgZGF0YVxuLy8gY2h1bmtzLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBjb3B5RnJvbUJ1ZmZlclN0cmluZyhuLCBsaXN0KSB7XG4gIHZhciBwID0gbGlzdC5oZWFkO1xuICB2YXIgYyA9IDE7XG4gIHZhciByZXQgPSBwLmRhdGE7XG4gIG4gLT0gcmV0Lmxlbmd0aDtcbiAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICB2YXIgc3RyID0gcC5kYXRhO1xuICAgIHZhciBuYiA9IG4gPiBzdHIubGVuZ3RoID8gc3RyLmxlbmd0aCA6IG47XG4gICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSByZXQgKz0gc3RyO2Vsc2UgcmV0ICs9IHN0ci5zbGljZSgwLCBuKTtcbiAgICBuIC09IG5iO1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICBpZiAobmIgPT09IHN0ci5sZW5ndGgpIHtcbiAgICAgICAgKytjO1xuICAgICAgICBpZiAocC5uZXh0KSBsaXN0LmhlYWQgPSBwLm5leHQ7ZWxzZSBsaXN0LmhlYWQgPSBsaXN0LnRhaWwgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGlzdC5oZWFkID0gcDtcbiAgICAgICAgcC5kYXRhID0gc3RyLnNsaWNlKG5iKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICArK2M7XG4gIH1cbiAgbGlzdC5sZW5ndGggLT0gYztcbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gQ29waWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyBmcm9tIHRoZSBsaXN0IG9mIGJ1ZmZlcmVkIGRhdGEgY2h1bmtzLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBjb3B5RnJvbUJ1ZmZlcihuLCBsaXN0KSB7XG4gIHZhciByZXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobik7XG4gIHZhciBwID0gbGlzdC5oZWFkO1xuICB2YXIgYyA9IDE7XG4gIHAuZGF0YS5jb3B5KHJldCk7XG4gIG4gLT0gcC5kYXRhLmxlbmd0aDtcbiAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICB2YXIgYnVmID0gcC5kYXRhO1xuICAgIHZhciBuYiA9IG4gPiBidWYubGVuZ3RoID8gYnVmLmxlbmd0aCA6IG47XG4gICAgYnVmLmNvcHkocmV0LCByZXQubGVuZ3RoIC0gbiwgMCwgbmIpO1xuICAgIG4gLT0gbmI7XG4gICAgaWYgKG4gPT09IDApIHtcbiAgICAgIGlmIChuYiA9PT0gYnVmLmxlbmd0aCkge1xuICAgICAgICArK2M7XG4gICAgICAgIGlmIChwLm5leHQpIGxpc3QuaGVhZCA9IHAubmV4dDtlbHNlIGxpc3QuaGVhZCA9IGxpc3QudGFpbCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaXN0LmhlYWQgPSBwO1xuICAgICAgICBwLmRhdGEgPSBidWYuc2xpY2UobmIpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgICsrYztcbiAgfVxuICBsaXN0Lmxlbmd0aCAtPSBjO1xuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBlbmRSZWFkYWJsZShzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuXG4gIC8vIElmIHdlIGdldCBoZXJlIGJlZm9yZSBjb25zdW1pbmcgYWxsIHRoZSBieXRlcywgdGhlbiB0aGF0IGlzIGFcbiAgLy8gYnVnIGluIG5vZGUuICBTaG91bGQgbmV2ZXIgaGFwcGVuLlxuICBpZiAoc3RhdGUubGVuZ3RoID4gMCkgdGhyb3cgbmV3IEVycm9yKCdcImVuZFJlYWRhYmxlKClcIiBjYWxsZWQgb24gbm9uLWVtcHR5IHN0cmVhbScpO1xuXG4gIGlmICghc3RhdGUuZW5kRW1pdHRlZCkge1xuICAgIHN0YXRlLmVuZGVkID0gdHJ1ZTtcbiAgICBwbmEubmV4dFRpY2soZW5kUmVhZGFibGVOVCwgc3RhdGUsIHN0cmVhbSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGVOVChzdGF0ZSwgc3RyZWFtKSB7XG4gIC8vIENoZWNrIHRoYXQgd2UgZGlkbid0IGdldCBvbmUgbGFzdCB1bnNoaWZ0LlxuICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQgJiYgc3RhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgc3RhdGUuZW5kRW1pdHRlZCA9IHRydWU7XG4gICAgc3RyZWFtLnJlYWRhYmxlID0gZmFsc2U7XG4gICAgc3RyZWFtLmVtaXQoJ2VuZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluZGV4T2YoeHMsIHgpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSB4cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoeHNbaV0gPT09IHgpIHJldHVybiBpO1xuICB9XG4gIHJldHVybiAtMTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fcmVhZGFibGUuanNcbi8vIG1vZHVsZSBpZCA9IDUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///52\n");

/***/ }),
/* 53 */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__(31).EventEmitter;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbS1icm93c2VyLmpzPzUxYzMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtLWJyb3dzZXIuanNcbi8vIG1vZHVsZSBpZCA9IDUzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///53\n");

/***/ }),
/* 54 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\n/*<replacement>*/\n\nvar pna = __webpack_require__(23);\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n      pna.nextTick(emitErrorNT, this, err);\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      pna.nextTick(emitErrorNT, _this, err);\n      if (_this._writableState) {\n        _this._writableState.errorEmitted = true;\n      }\n    } else if (cb) {\n      cb(err);\n    }\n  });\n\n  return this;\n}\n\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\n\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\n\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3kuanM/Yzc0MSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBwbmEgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8vIHVuZG9jdW1lbnRlZCBjYigpIEFQSSwgbmVlZGVkIGZvciBjb3JlLCBub3QgZm9yIHB1YmxpYyBBUElcbmZ1bmN0aW9uIGRlc3Ryb3koZXJyLCBjYikge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHZhciByZWFkYWJsZURlc3Ryb3llZCA9IHRoaXMuX3JlYWRhYmxlU3RhdGUgJiYgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIHZhciB3cml0YWJsZURlc3Ryb3llZCA9IHRoaXMuX3dyaXRhYmxlU3RhdGUgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG5cbiAgaWYgKHJlYWRhYmxlRGVzdHJveWVkIHx8IHdyaXRhYmxlRGVzdHJveWVkKSB7XG4gICAgaWYgKGNiKSB7XG4gICAgICBjYihlcnIpO1xuICAgIH0gZWxzZSBpZiAoZXJyICYmICghdGhpcy5fd3JpdGFibGVTdGF0ZSB8fCAhdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQpKSB7XG4gICAgICBwbmEubmV4dFRpY2soZW1pdEVycm9yTlQsIHRoaXMsIGVycik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gd2Ugc2V0IGRlc3Ryb3llZCB0byB0cnVlIGJlZm9yZSBmaXJpbmcgZXJyb3IgY2FsbGJhY2tzIGluIG9yZGVyXG4gIC8vIHRvIG1ha2UgaXQgcmUtZW50cmFuY2Ugc2FmZSBpbiBjYXNlIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2l0aGluIGNhbGxiYWNrc1xuXG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgLy8gaWYgdGhpcyBpcyBhIGR1cGxleCBzdHJlYW0gbWFyayB0aGUgd3JpdGFibGUgcGFydCBhcyBkZXN0cm95ZWQgYXMgd2VsbFxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHRoaXMuX2Rlc3Ryb3koZXJyIHx8IG51bGwsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICBpZiAoIWNiICYmIGVycikge1xuICAgICAgcG5hLm5leHRUaWNrKGVtaXRFcnJvck5ULCBfdGhpcywgZXJyKTtcbiAgICAgIGlmIChfdGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgICAgICBfdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2IpIHtcbiAgICAgIGNiKGVycik7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gdW5kZXN0cm95KCkge1xuICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVtaXRFcnJvck5UKHNlbGYsIGVycikge1xuICBzZWxmLmVtaXQoJ2Vycm9yJywgZXJyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGRlc3Ryb3k6IGRlc3Ryb3ksXG4gIHVuZGVzdHJveTogdW5kZXN0cm95XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95LmpzXG4vLyBtb2R1bGUgaWQgPSA1NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///54\n");

/***/ }),
/* 55 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n\n\nmodule.exports = Transform;\n\nvar Duplex = __webpack_require__(12);\n\n/*<replacement>*/\nvar util = __webpack_require__(16);\nutil.inherits = __webpack_require__(0);\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n\n  var cb = ts.writecb;\n\n  if (!cb) {\n    return this.emit('error', new Error('write callback called multiple times'));\n  }\n\n  ts.writechunk = null;\n  ts.writecb = null;\n\n  if (data != null) // single equals check for both `null` and `undefined`\n    this.push(data);\n\n  cb(er);\n\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\n\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n\n  Duplex.call(this, options);\n\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n  var _this = this;\n\n  if (typeof this._flush === 'function') {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n\n  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n  var _this2 = this;\n\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n    _this2.emit('close');\n  });\n};\n\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n\n  if (data != null) // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n  if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n  return stream.push(null);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcz8wZjU1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIHRyYW5zZm9ybSBzdHJlYW0gaXMgYSByZWFkYWJsZS93cml0YWJsZSBzdHJlYW0gd2hlcmUgeW91IGRvXG4vLyBzb21ldGhpbmcgd2l0aCB0aGUgZGF0YS4gIFNvbWV0aW1lcyBpdCdzIGNhbGxlZCBhIFwiZmlsdGVyXCIsXG4vLyBidXQgdGhhdCdzIG5vdCBhIGdyZWF0IG5hbWUgZm9yIGl0LCBzaW5jZSB0aGF0IGltcGxpZXMgYSB0aGluZyB3aGVyZVxuLy8gc29tZSBiaXRzIHBhc3MgdGhyb3VnaCwgYW5kIG90aGVycyBhcmUgc2ltcGx5IGlnbm9yZWQuICAoVGhhdCB3b3VsZFxuLy8gYmUgYSB2YWxpZCBleGFtcGxlIG9mIGEgdHJhbnNmb3JtLCBvZiBjb3Vyc2UuKVxuLy9cbi8vIFdoaWxlIHRoZSBvdXRwdXQgaXMgY2F1c2FsbHkgcmVsYXRlZCB0byB0aGUgaW5wdXQsIGl0J3Mgbm90IGFcbi8vIG5lY2Vzc2FyaWx5IHN5bW1ldHJpYyBvciBzeW5jaHJvbm91cyB0cmFuc2Zvcm1hdGlvbi4gIEZvciBleGFtcGxlLFxuLy8gYSB6bGliIHN0cmVhbSBtaWdodCB0YWtlIG11bHRpcGxlIHBsYWluLXRleHQgd3JpdGVzKCksIGFuZCB0aGVuXG4vLyBlbWl0IGEgc2luZ2xlIGNvbXByZXNzZWQgY2h1bmsgc29tZSB0aW1lIGluIHRoZSBmdXR1cmUuXG4vL1xuLy8gSGVyZSdzIGhvdyB0aGlzIHdvcmtzOlxuLy9cbi8vIFRoZSBUcmFuc2Zvcm0gc3RyZWFtIGhhcyBhbGwgdGhlIGFzcGVjdHMgb2YgdGhlIHJlYWRhYmxlIGFuZCB3cml0YWJsZVxuLy8gc3RyZWFtIGNsYXNzZXMuICBXaGVuIHlvdSB3cml0ZShjaHVuayksIHRoYXQgY2FsbHMgX3dyaXRlKGNodW5rLGNiKVxuLy8gaW50ZXJuYWxseSwgYW5kIHJldHVybnMgZmFsc2UgaWYgdGhlcmUncyBhIGxvdCBvZiBwZW5kaW5nIHdyaXRlc1xuLy8gYnVmZmVyZWQgdXAuICBXaGVuIHlvdSBjYWxsIHJlYWQoKSwgdGhhdCBjYWxscyBfcmVhZChuKSB1bnRpbFxuLy8gdGhlcmUncyBlbm91Z2ggcGVuZGluZyByZWFkYWJsZSBkYXRhIGJ1ZmZlcmVkIHVwLlxuLy9cbi8vIEluIGEgdHJhbnNmb3JtIHN0cmVhbSwgdGhlIHdyaXR0ZW4gZGF0YSBpcyBwbGFjZWQgaW4gYSBidWZmZXIuICBXaGVuXG4vLyBfcmVhZChuKSBpcyBjYWxsZWQsIGl0IHRyYW5zZm9ybXMgdGhlIHF1ZXVlZCB1cCBkYXRhLCBjYWxsaW5nIHRoZVxuLy8gYnVmZmVyZWQgX3dyaXRlIGNiJ3MgYXMgaXQgY29uc3VtZXMgY2h1bmtzLiAgSWYgY29uc3VtaW5nIGEgc2luZ2xlXG4vLyB3cml0dGVuIGNodW5rIHdvdWxkIHJlc3VsdCBpbiBtdWx0aXBsZSBvdXRwdXQgY2h1bmtzLCB0aGVuIHRoZSBmaXJzdFxuLy8gb3V0cHV0dGVkIGJpdCBjYWxscyB0aGUgcmVhZGNiLCBhbmQgc3Vic2VxdWVudCBjaHVua3MganVzdCBnbyBpbnRvXG4vLyB0aGUgcmVhZCBidWZmZXIsIGFuZCB3aWxsIGNhdXNlIGl0IHRvIGVtaXQgJ3JlYWRhYmxlJyBpZiBuZWNlc3NhcnkuXG4vL1xuLy8gVGhpcyB3YXksIGJhY2stcHJlc3N1cmUgaXMgYWN0dWFsbHkgZGV0ZXJtaW5lZCBieSB0aGUgcmVhZGluZyBzaWRlLFxuLy8gc2luY2UgX3JlYWQgaGFzIHRvIGJlIGNhbGxlZCB0byBzdGFydCBwcm9jZXNzaW5nIGEgbmV3IGNodW5rLiAgSG93ZXZlcixcbi8vIGEgcGF0aG9sb2dpY2FsIGluZmxhdGUgdHlwZSBvZiB0cmFuc2Zvcm0gY2FuIGNhdXNlIGV4Y2Vzc2l2ZSBidWZmZXJpbmdcbi8vIGhlcmUuICBGb3IgZXhhbXBsZSwgaW1hZ2luZSBhIHN0cmVhbSB3aGVyZSBldmVyeSBieXRlIG9mIGlucHV0IGlzXG4vLyBpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyIGZyb20gMC0yNTUsIGFuZCB0aGVuIHJlc3VsdHMgaW4gdGhhdCBtYW55XG4vLyBieXRlcyBvZiBvdXRwdXQuICBXcml0aW5nIHRoZSA0IGJ5dGVzIHtmZixmZixmZixmZn0gd291bGQgcmVzdWx0IGluXG4vLyAxa2Igb2YgZGF0YSBiZWluZyBvdXRwdXQuICBJbiB0aGlzIGNhc2UsIHlvdSBjb3VsZCB3cml0ZSBhIHZlcnkgc21hbGxcbi8vIGFtb3VudCBvZiBpbnB1dCwgYW5kIGVuZCB1cCB3aXRoIGEgdmVyeSBsYXJnZSBhbW91bnQgb2Ygb3V0cHV0LiAgSW5cbi8vIHN1Y2ggYSBwYXRob2xvZ2ljYWwgaW5mbGF0aW5nIG1lY2hhbmlzbSwgdGhlcmUnZCBiZSBubyB3YXkgdG8gdGVsbFxuLy8gdGhlIHN5c3RlbSB0byBzdG9wIGRvaW5nIHRoZSB0cmFuc2Zvcm0uICBBIHNpbmdsZSA0TUIgd3JpdGUgY291bGRcbi8vIGNhdXNlIHRoZSBzeXN0ZW0gdG8gcnVuIG91dCBvZiBtZW1vcnkuXG4vL1xuLy8gSG93ZXZlciwgZXZlbiBpbiBzdWNoIGEgcGF0aG9sb2dpY2FsIGNhc2UsIG9ubHkgYSBzaW5nbGUgd3JpdHRlbiBjaHVua1xuLy8gd291bGQgYmUgY29uc3VtZWQsIGFuZCB0aGVuIHRoZSByZXN0IHdvdWxkIHdhaXQgKHVuLXRyYW5zZm9ybWVkKSB1bnRpbFxuLy8gdGhlIHJlc3VsdHMgb2YgdGhlIHByZXZpb3VzIHRyYW5zZm9ybWVkIGNodW5rIHdlcmUgY29uc3VtZWQuXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBUcmFuc2Zvcm07XG5cbnZhciBEdXBsZXggPSByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudXRpbC5pbmhlcml0cyhUcmFuc2Zvcm0sIER1cGxleCk7XG5cbmZ1bmN0aW9uIGFmdGVyVHJhbnNmb3JtKGVyLCBkYXRhKSB7XG4gIHZhciB0cyA9IHRoaXMuX3RyYW5zZm9ybVN0YXRlO1xuICB0cy50cmFuc2Zvcm1pbmcgPSBmYWxzZTtcblxuICB2YXIgY2IgPSB0cy53cml0ZWNiO1xuXG4gIGlmICghY2IpIHtcbiAgICByZXR1cm4gdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignd3JpdGUgY2FsbGJhY2sgY2FsbGVkIG11bHRpcGxlIHRpbWVzJykpO1xuICB9XG5cbiAgdHMud3JpdGVjaHVuayA9IG51bGw7XG4gIHRzLndyaXRlY2IgPSBudWxsO1xuXG4gIGlmIChkYXRhICE9IG51bGwpIC8vIHNpbmdsZSBlcXVhbHMgY2hlY2sgZm9yIGJvdGggYG51bGxgIGFuZCBgdW5kZWZpbmVkYFxuICAgIHRoaXMucHVzaChkYXRhKTtcblxuICBjYihlcik7XG5cbiAgdmFyIHJzID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgcnMucmVhZGluZyA9IGZhbHNlO1xuICBpZiAocnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHtcbiAgICB0aGlzLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59XG5cbmZ1bmN0aW9uIFRyYW5zZm9ybShvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBUcmFuc2Zvcm0pKSByZXR1cm4gbmV3IFRyYW5zZm9ybShvcHRpb25zKTtcblxuICBEdXBsZXguY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZSA9IHtcbiAgICBhZnRlclRyYW5zZm9ybTogYWZ0ZXJUcmFuc2Zvcm0uYmluZCh0aGlzKSxcbiAgICBuZWVkVHJhbnNmb3JtOiBmYWxzZSxcbiAgICB0cmFuc2Zvcm1pbmc6IGZhbHNlLFxuICAgIHdyaXRlY2I6IG51bGwsXG4gICAgd3JpdGVjaHVuazogbnVsbCxcbiAgICB3cml0ZWVuY29kaW5nOiBudWxsXG4gIH07XG5cbiAgLy8gc3RhcnQgb3V0IGFza2luZyBmb3IgYSByZWFkYWJsZSBldmVudCBvbmNlIGRhdGEgaXMgdHJhbnNmb3JtZWQuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcblxuICAvLyB3ZSBoYXZlIGltcGxlbWVudGVkIHRoZSBfcmVhZCBtZXRob2QsIGFuZCBkb25lIHRoZSBvdGhlciB0aGluZ3NcbiAgLy8gdGhhdCBSZWFkYWJsZSB3YW50cyBiZWZvcmUgdGhlIGZpcnN0IF9yZWFkIGNhbGwsIHNvIHVuc2V0IHRoZVxuICAvLyBzeW5jIGd1YXJkIGZsYWcuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYyA9IGZhbHNlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fdHJhbnNmb3JtID0gb3B0aW9ucy50cmFuc2Zvcm07XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmx1c2ggPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZsdXNoID0gb3B0aW9ucy5mbHVzaDtcbiAgfVxuXG4gIC8vIFdoZW4gdGhlIHdyaXRhYmxlIHNpZGUgZmluaXNoZXMsIHRoZW4gZmx1c2ggb3V0IGFueXRoaW5nIHJlbWFpbmluZy5cbiAgdGhpcy5vbigncHJlZmluaXNoJywgcHJlZmluaXNoKTtcbn1cblxuZnVuY3Rpb24gcHJlZmluaXNoKCkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIGlmICh0eXBlb2YgdGhpcy5fZmx1c2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aGlzLl9mbHVzaChmdW5jdGlvbiAoZXIsIGRhdGEpIHtcbiAgICAgIGRvbmUoX3RoaXMsIGVyLCBkYXRhKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBkb25lKHRoaXMsIG51bGwsIG51bGwpO1xuICB9XG59XG5cblRyYW5zZm9ybS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5zZm9ybSA9IGZhbHNlO1xuICByZXR1cm4gRHVwbGV4LnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcywgY2h1bmssIGVuY29kaW5nKTtcbn07XG5cbi8vIFRoaXMgaXMgdGhlIHBhcnQgd2hlcmUgeW91IGRvIHN0dWZmIVxuLy8gb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiBpbiBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gJ2NodW5rJyBpcyBhbiBpbnB1dCBjaHVuay5cbi8vXG4vLyBDYWxsIGBwdXNoKG5ld0NodW5rKWAgdG8gcGFzcyBhbG9uZyB0cmFuc2Zvcm1lZCBvdXRwdXRcbi8vIHRvIHRoZSByZWFkYWJsZSBzaWRlLiAgWW91IG1heSBjYWxsICdwdXNoJyB6ZXJvIG9yIG1vcmUgdGltZXMuXG4vL1xuLy8gQ2FsbCBgY2IoZXJyKWAgd2hlbiB5b3UgYXJlIGRvbmUgd2l0aCB0aGlzIGNodW5rLiAgSWYgeW91IHBhc3Ncbi8vIGFuIGVycm9yLCB0aGVuIHRoYXQnbGwgcHV0IHRoZSBodXJ0IG9uIHRoZSB3aG9sZSBvcGVyYXRpb24uICBJZiB5b3Vcbi8vIG5ldmVyIGNhbGwgY2IoKSwgdGhlbiB5b3UnbGwgbmV2ZXIgZ2V0IGFub3RoZXIgY2h1bmsuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB0aHJvdyBuZXcgRXJyb3IoJ190cmFuc2Zvcm0oKSBpcyBub3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG4gIHRzLndyaXRlY2IgPSBjYjtcbiAgdHMud3JpdGVjaHVuayA9IGNodW5rO1xuICB0cy53cml0ZWVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIGlmICghdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdmFyIHJzID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgICBpZiAodHMubmVlZFRyYW5zZm9ybSB8fCBycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykgdGhpcy5fcmVhZChycy5oaWdoV2F0ZXJNYXJrKTtcbiAgfVxufTtcblxuLy8gRG9lc24ndCBtYXR0ZXIgd2hhdCB0aGUgYXJncyBhcmUgaGVyZS5cbi8vIF90cmFuc2Zvcm0gZG9lcyBhbGwgdGhlIHdvcmsuXG4vLyBUaGF0IHdlIGdvdCBoZXJlIG1lYW5zIHRoYXQgdGhlIHJlYWRhYmxlIHNpZGUgd2FudHMgbW9yZSBkYXRhLlxuVHJhbnNmb3JtLnByb3RvdHlwZS5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIHZhciB0cyA9IHRoaXMuX3RyYW5zZm9ybVN0YXRlO1xuXG4gIGlmICh0cy53cml0ZWNodW5rICE9PSBudWxsICYmIHRzLndyaXRlY2IgJiYgIXRzLnRyYW5zZm9ybWluZykge1xuICAgIHRzLnRyYW5zZm9ybWluZyA9IHRydWU7XG4gICAgdGhpcy5fdHJhbnNmb3JtKHRzLndyaXRlY2h1bmssIHRzLndyaXRlZW5jb2RpbmcsIHRzLmFmdGVyVHJhbnNmb3JtKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBtYXJrIHRoYXQgd2UgbmVlZCBhIHRyYW5zZm9ybSwgc28gdGhhdCBhbnkgZGF0YSB0aGF0IGNvbWVzIGluXG4gICAgLy8gd2lsbCBnZXQgcHJvY2Vzc2VkLCBub3cgdGhhdCB3ZSd2ZSBhc2tlZCBmb3IgaXQuXG4gICAgdHMubmVlZFRyYW5zZm9ybSA9IHRydWU7XG4gIH1cbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICB2YXIgX3RoaXMyID0gdGhpcztcblxuICBEdXBsZXgucHJvdG90eXBlLl9kZXN0cm95LmNhbGwodGhpcywgZXJyLCBmdW5jdGlvbiAoZXJyMikge1xuICAgIGNiKGVycjIpO1xuICAgIF90aGlzMi5lbWl0KCdjbG9zZScpO1xuICB9KTtcbn07XG5cbmZ1bmN0aW9uIGRvbmUoc3RyZWFtLCBlciwgZGF0YSkge1xuICBpZiAoZXIpIHJldHVybiBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG5cbiAgaWYgKGRhdGEgIT0gbnVsbCkgLy8gc2luZ2xlIGVxdWFscyBjaGVjayBmb3IgYm90aCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgXG4gICAgc3RyZWFtLnB1c2goZGF0YSk7XG5cbiAgLy8gaWYgdGhlcmUncyBub3RoaW5nIGluIHRoZSB3cml0ZSBidWZmZXIsIHRoZW4gdGhhdCBtZWFuc1xuICAvLyB0aGF0IG5vdGhpbmcgbW9yZSB3aWxsIGV2ZXIgYmUgcHJvdmlkZWRcbiAgaWYgKHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHdzLmxlbmd0aCAhPSAwJyk7XG5cbiAgaWYgKHN0cmVhbS5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKSB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiBzdGlsbCB0cmFuc2Zvcm1pbmcnKTtcblxuICByZXR1cm4gc3RyZWFtLnB1c2gobnVsbCk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qc1xuLy8gbW9kdWxlIGlkID0gNTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///55\n");

/***/ }),
/* 56 */
/***/ (function(module, exports, __webpack_require__) {

eval("/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = __webpack_require__(0)\nvar Hash = __webpack_require__(14)\nvar Buffer = __webpack_require__(1).Buffer\n\nvar K = [\n  0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n  0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n  0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n  0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n  0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n  0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n  0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n  0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n  0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n  0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n  0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n  0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n  0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n  0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n  0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n  0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n  this.init()\n\n  this._w = W // new Array(64)\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n  this._a = 0x6a09e667\n  this._b = 0xbb67ae85\n  this._c = 0x3c6ef372\n  this._d = 0xa54ff53a\n  this._e = 0x510e527f\n  this._f = 0x9b05688c\n  this._g = 0x1f83d9ab\n  this._h = 0x5be0cd19\n\n  return this\n}\n\nfunction ch (x, y, z) {\n  return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n  return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n  return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n  return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n  return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n  return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n  var W = this._w\n\n  var a = this._a | 0\n  var b = this._b | 0\n  var c = this._c | 0\n  var d = this._d | 0\n  var e = this._e | 0\n  var f = this._f | 0\n  var g = this._g | 0\n  var h = this._h | 0\n\n  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n  for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n  for (var j = 0; j < 64; ++j) {\n    var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n    var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n    h = g\n    g = f\n    f = e\n    e = (d + T1) | 0\n    d = c\n    c = b\n    b = a\n    a = (T1 + T2) | 0\n  }\n\n  this._a = (a + this._a) | 0\n  this._b = (b + this._b) | 0\n  this._c = (c + this._c) | 0\n  this._d = (d + this._d) | 0\n  this._e = (e + this._e) | 0\n  this._f = (f + this._f) | 0\n  this._g = (g + this._g) | 0\n  this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(32)\n\n  H.writeInt32BE(this._a, 0)\n  H.writeInt32BE(this._b, 4)\n  H.writeInt32BE(this._c, 8)\n  H.writeInt32BE(this._d, 12)\n  H.writeInt32BE(this._e, 16)\n  H.writeInt32BE(this._f, 20)\n  H.writeInt32BE(this._g, 24)\n  H.writeInt32BE(this._h, 28)\n\n  return H\n}\n\nmodule.exports = Sha256\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2hhLmpzL3NoYTI1Ni5qcz9jZWY4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgSGFzaCBBbGdvcml0aG0sIFNIQS0yNTYsIGFzIGRlZmluZWRcbiAqIGluIEZJUFMgMTgwLTJcbiAqIFZlcnNpb24gMi4yLWJldGEgQ29weXJpZ2h0IEFuZ2VsIE1hcmluLCBQYXVsIEpvaG5zdG9uIDIwMDAgLSAyMDA5LlxuICogT3RoZXIgY29udHJpYnV0b3JzOiBHcmVnIEhvbHQsIEFuZHJldyBLZXBlcnQsIFlkbmFyLCBMb3N0aW5ldFxuICpcbiAqL1xuXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIEsgPSBbXG4gIDB4NDI4QTJGOTgsIDB4NzEzNzQ0OTEsIDB4QjVDMEZCQ0YsIDB4RTlCNURCQTUsXG4gIDB4Mzk1NkMyNUIsIDB4NTlGMTExRjEsIDB4OTIzRjgyQTQsIDB4QUIxQzVFRDUsXG4gIDB4RDgwN0FBOTgsIDB4MTI4MzVCMDEsIDB4MjQzMTg1QkUsIDB4NTUwQzdEQzMsXG4gIDB4NzJCRTVENzQsIDB4ODBERUIxRkUsIDB4OUJEQzA2QTcsIDB4QzE5QkYxNzQsXG4gIDB4RTQ5QjY5QzEsIDB4RUZCRTQ3ODYsIDB4MEZDMTlEQzYsIDB4MjQwQ0ExQ0MsXG4gIDB4MkRFOTJDNkYsIDB4NEE3NDg0QUEsIDB4NUNCMEE5REMsIDB4NzZGOTg4REEsXG4gIDB4OTgzRTUxNTIsIDB4QTgzMUM2NkQsIDB4QjAwMzI3QzgsIDB4QkY1OTdGQzcsXG4gIDB4QzZFMDBCRjMsIDB4RDVBNzkxNDcsIDB4MDZDQTYzNTEsIDB4MTQyOTI5NjcsXG4gIDB4MjdCNzBBODUsIDB4MkUxQjIxMzgsIDB4NEQyQzZERkMsIDB4NTMzODBEMTMsXG4gIDB4NjUwQTczNTQsIDB4NzY2QTBBQkIsIDB4ODFDMkM5MkUsIDB4OTI3MjJDODUsXG4gIDB4QTJCRkU4QTEsIDB4QTgxQTY2NEIsIDB4QzI0QjhCNzAsIDB4Qzc2QzUxQTMsXG4gIDB4RDE5MkU4MTksIDB4RDY5OTA2MjQsIDB4RjQwRTM1ODUsIDB4MTA2QUEwNzAsXG4gIDB4MTlBNEMxMTYsIDB4MUUzNzZDMDgsIDB4Mjc0ODc3NEMsIDB4MzRCMEJDQjUsXG4gIDB4MzkxQzBDQjMsIDB4NEVEOEFBNEEsIDB4NUI5Q0NBNEYsIDB4NjgyRTZGRjMsXG4gIDB4NzQ4RjgyRUUsIDB4NzhBNTYzNkYsIDB4ODRDODc4MTQsIDB4OENDNzAyMDgsXG4gIDB4OTBCRUZGRkEsIDB4QTQ1MDZDRUIsIDB4QkVGOUEzRjcsIDB4QzY3MTc4RjJcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoNjQpXG5cbmZ1bmN0aW9uIFNoYTI1NiAoKSB7XG4gIHRoaXMuaW5pdCgpXG5cbiAgdGhpcy5fdyA9IFcgLy8gbmV3IEFycmF5KDY0KVxuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTI1NiwgSGFzaClcblxuU2hhMjU2LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2YTA5ZTY2N1xuICB0aGlzLl9iID0gMHhiYjY3YWU4NVxuICB0aGlzLl9jID0gMHgzYzZlZjM3MlxuICB0aGlzLl9kID0gMHhhNTRmZjUzYVxuICB0aGlzLl9lID0gMHg1MTBlNTI3ZlxuICB0aGlzLl9mID0gMHg5YjA1Njg4Y1xuICB0aGlzLl9nID0gMHgxZjgzZDlhYlxuICB0aGlzLl9oID0gMHg1YmUwY2QxOVxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIGNoICh4LCB5LCB6KSB7XG4gIHJldHVybiB6IF4gKHggJiAoeSBeIHopKVxufVxuXG5mdW5jdGlvbiBtYWogKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgfCAoeiAmICh4IHwgeSkpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDIgfCB4IDw8IDMwKSBeICh4ID4+PiAxMyB8IHggPDwgMTkpIF4gKHggPj4+IDIyIHwgeCA8PCAxMClcbn1cblxuZnVuY3Rpb24gc2lnbWExICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gNiB8IHggPDwgMjYpIF4gKHggPj4+IDExIHwgeCA8PCAyMSkgXiAoeCA+Pj4gMjUgfCB4IDw8IDcpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDcgfCB4IDw8IDI1KSBeICh4ID4+PiAxOCB8IHggPDwgMTQpIF4gKHggPj4+IDMpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMSAoeCkge1xuICByZXR1cm4gKHggPj4+IDE3IHwgeCA8PCAxNSkgXiAoeCA+Pj4gMTkgfCB4IDw8IDEzKSBeICh4ID4+PiAxMClcbn1cblxuU2hhMjU2LnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG4gIHZhciBmID0gdGhpcy5fZiB8IDBcbiAgdmFyIGcgPSB0aGlzLl9nIHwgMFxuICB2YXIgaCA9IHRoaXMuX2ggfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA2NDsgKytpKSBXW2ldID0gKGdhbW1hMShXW2kgLSAyXSkgKyBXW2kgLSA3XSArIGdhbW1hMChXW2kgLSAxNV0pICsgV1tpIC0gMTZdKSB8IDBcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDY0OyArK2opIHtcbiAgICB2YXIgVDEgPSAoaCArIHNpZ21hMShlKSArIGNoKGUsIGYsIGcpICsgS1tqXSArIFdbal0pIHwgMFxuICAgIHZhciBUMiA9IChzaWdtYTAoYSkgKyBtYWooYSwgYiwgYykpIHwgMFxuXG4gICAgaCA9IGdcbiAgICBnID0gZlxuICAgIGYgPSBlXG4gICAgZSA9IChkICsgVDEpIHwgMFxuICAgIGQgPSBjXG4gICAgYyA9IGJcbiAgICBiID0gYVxuICAgIGEgPSAoVDEgKyBUMikgfCAwXG4gIH1cblxuICB0aGlzLl9hID0gKGEgKyB0aGlzLl9hKSB8IDBcbiAgdGhpcy5fYiA9IChiICsgdGhpcy5fYikgfCAwXG4gIHRoaXMuX2MgPSAoYyArIHRoaXMuX2MpIHwgMFxuICB0aGlzLl9kID0gKGQgKyB0aGlzLl9kKSB8IDBcbiAgdGhpcy5fZSA9IChlICsgdGhpcy5fZSkgfCAwXG4gIHRoaXMuX2YgPSAoZiArIHRoaXMuX2YpIHwgMFxuICB0aGlzLl9nID0gKGcgKyB0aGlzLl9nKSB8IDBcbiAgdGhpcy5faCA9IChoICsgdGhpcy5faCkgfCAwXG59XG5cblNoYTI1Ni5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gQnVmZmVyLmFsbG9jVW5zYWZlKDMyKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IsIDQpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2MsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lLCAxNilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZiwgMjApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2csIDI0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9oLCAyOClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTI1NlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvc2hhLmpzL3NoYTI1Ni5qc1xuLy8gbW9kdWxlIGlkID0gNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///56\n");

/***/ }),
/* 57 */
/***/ (function(module, exports, __webpack_require__) {

eval("var inherits = __webpack_require__(0)\nvar Hash = __webpack_require__(14)\nvar Buffer = __webpack_require__(1).Buffer\n\nvar K = [\n  0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n  0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n  0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n  0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n  0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n  0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n  0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n  0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n  0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n  0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n  0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n  0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n  0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n  0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n  0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n  0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n  0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n  0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n  0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n  0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n  0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n  0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n  0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n  0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n  0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n  0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n  0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n  0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n  0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n  0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n  0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n  0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n  0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n  0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n  0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n  0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n  0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n  0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n  0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n  this._ah = 0x6a09e667\n  this._bh = 0xbb67ae85\n  this._ch = 0x3c6ef372\n  this._dh = 0xa54ff53a\n  this._eh = 0x510e527f\n  this._fh = 0x9b05688c\n  this._gh = 0x1f83d9ab\n  this._hh = 0x5be0cd19\n\n  this._al = 0xf3bcc908\n  this._bl = 0x84caa73b\n  this._cl = 0xfe94f82b\n  this._dl = 0x5f1d36f1\n  this._el = 0xade682d1\n  this._fl = 0x2b3e6c1f\n  this._gl = 0xfb41bd6b\n  this._hl = 0x137e2179\n\n  return this\n}\n\nfunction Ch (x, y, z) {\n  return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n  return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n  return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n  return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n  return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n  return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n  return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n  return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n  return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n  var W = this._w\n\n  var ah = this._ah | 0\n  var bh = this._bh | 0\n  var ch = this._ch | 0\n  var dh = this._dh | 0\n  var eh = this._eh | 0\n  var fh = this._fh | 0\n  var gh = this._gh | 0\n  var hh = this._hh | 0\n\n  var al = this._al | 0\n  var bl = this._bl | 0\n  var cl = this._cl | 0\n  var dl = this._dl | 0\n  var el = this._el | 0\n  var fl = this._fl | 0\n  var gl = this._gl | 0\n  var hl = this._hl | 0\n\n  for (var i = 0; i < 32; i += 2) {\n    W[i] = M.readInt32BE(i * 4)\n    W[i + 1] = M.readInt32BE(i * 4 + 4)\n  }\n  for (; i < 160; i += 2) {\n    var xh = W[i - 15 * 2]\n    var xl = W[i - 15 * 2 + 1]\n    var gamma0 = Gamma0(xh, xl)\n    var gamma0l = Gamma0l(xl, xh)\n\n    xh = W[i - 2 * 2]\n    xl = W[i - 2 * 2 + 1]\n    var gamma1 = Gamma1(xh, xl)\n    var gamma1l = Gamma1l(xl, xh)\n\n    // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n    var Wi7h = W[i - 7 * 2]\n    var Wi7l = W[i - 7 * 2 + 1]\n\n    var Wi16h = W[i - 16 * 2]\n    var Wi16l = W[i - 16 * 2 + 1]\n\n    var Wil = (gamma0l + Wi7l) | 0\n    var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n    Wil = (Wil + gamma1l) | 0\n    Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n    Wil = (Wil + Wi16l) | 0\n    Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n    W[i] = Wih\n    W[i + 1] = Wil\n  }\n\n  for (var j = 0; j < 160; j += 2) {\n    Wih = W[j]\n    Wil = W[j + 1]\n\n    var majh = maj(ah, bh, ch)\n    var majl = maj(al, bl, cl)\n\n    var sigma0h = sigma0(ah, al)\n    var sigma0l = sigma0(al, ah)\n    var sigma1h = sigma1(eh, el)\n    var sigma1l = sigma1(el, eh)\n\n    // t1 = h + sigma1 + ch + K[j] + W[j]\n    var Kih = K[j]\n    var Kil = K[j + 1]\n\n    var chh = Ch(eh, fh, gh)\n    var chl = Ch(el, fl, gl)\n\n    var t1l = (hl + sigma1l) | 0\n    var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n    t1l = (t1l + chl) | 0\n    t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n    t1l = (t1l + Kil) | 0\n    t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n    t1l = (t1l + Wil) | 0\n    t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n    // t2 = sigma0 + maj\n    var t2l = (sigma0l + majl) | 0\n    var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n    hh = gh\n    hl = gl\n    gh = fh\n    gl = fl\n    fh = eh\n    fl = el\n    el = (dl + t1l) | 0\n    eh = (dh + t1h + getCarry(el, dl)) | 0\n    dh = ch\n    dl = cl\n    ch = bh\n    cl = bl\n    bh = ah\n    bl = al\n    al = (t1l + t2l) | 0\n    ah = (t1h + t2h + getCarry(al, t1l)) | 0\n  }\n\n  this._al = (this._al + al) | 0\n  this._bl = (this._bl + bl) | 0\n  this._cl = (this._cl + cl) | 0\n  this._dl = (this._dl + dl) | 0\n  this._el = (this._el + el) | 0\n  this._fl = (this._fl + fl) | 0\n  this._gl = (this._gl + gl) | 0\n  this._hl = (this._hl + hl) | 0\n\n  this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n  this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n  this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n  this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n  this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n  this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n  this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n  this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(64)\n\n  function writeInt64BE (h, l, offset) {\n    H.writeInt32BE(h, offset)\n    H.writeInt32BE(l, offset + 4)\n  }\n\n  writeInt64BE(this._ah, this._al, 0)\n  writeInt64BE(this._bh, this._bl, 8)\n  writeInt64BE(this._ch, this._cl, 16)\n  writeInt64BE(this._dh, this._dl, 24)\n  writeInt64BE(this._eh, this._el, 32)\n  writeInt64BE(this._fh, this._fl, 40)\n  writeInt64BE(this._gh, this._gl, 48)\n  writeInt64BE(this._hh, this._hl, 56)\n\n  return H\n}\n\nmodule.exports = Sha512\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2hhLmpzL3NoYTUxMi5qcz8wYjRkIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgSyA9IFtcbiAgMHg0MjhhMmY5OCwgMHhkNzI4YWUyMiwgMHg3MTM3NDQ5MSwgMHgyM2VmNjVjZCxcbiAgMHhiNWMwZmJjZiwgMHhlYzRkM2IyZiwgMHhlOWI1ZGJhNSwgMHg4MTg5ZGJiYyxcbiAgMHgzOTU2YzI1YiwgMHhmMzQ4YjUzOCwgMHg1OWYxMTFmMSwgMHhiNjA1ZDAxOSxcbiAgMHg5MjNmODJhNCwgMHhhZjE5NGY5YiwgMHhhYjFjNWVkNSwgMHhkYTZkODExOCxcbiAgMHhkODA3YWE5OCwgMHhhMzAzMDI0MiwgMHgxMjgzNWIwMSwgMHg0NTcwNmZiZSxcbiAgMHgyNDMxODViZSwgMHg0ZWU0YjI4YywgMHg1NTBjN2RjMywgMHhkNWZmYjRlMixcbiAgMHg3MmJlNWQ3NCwgMHhmMjdiODk2ZiwgMHg4MGRlYjFmZSwgMHgzYjE2OTZiMSxcbiAgMHg5YmRjMDZhNywgMHgyNWM3MTIzNSwgMHhjMTliZjE3NCwgMHhjZjY5MjY5NCxcbiAgMHhlNDliNjljMSwgMHg5ZWYxNGFkMiwgMHhlZmJlNDc4NiwgMHgzODRmMjVlMyxcbiAgMHgwZmMxOWRjNiwgMHg4YjhjZDViNSwgMHgyNDBjYTFjYywgMHg3N2FjOWM2NSxcbiAgMHgyZGU5MmM2ZiwgMHg1OTJiMDI3NSwgMHg0YTc0ODRhYSwgMHg2ZWE2ZTQ4MyxcbiAgMHg1Y2IwYTlkYywgMHhiZDQxZmJkNCwgMHg3NmY5ODhkYSwgMHg4MzExNTNiNSxcbiAgMHg5ODNlNTE1MiwgMHhlZTY2ZGZhYiwgMHhhODMxYzY2ZCwgMHgyZGI0MzIxMCxcbiAgMHhiMDAzMjdjOCwgMHg5OGZiMjEzZiwgMHhiZjU5N2ZjNywgMHhiZWVmMGVlNCxcbiAgMHhjNmUwMGJmMywgMHgzZGE4OGZjMiwgMHhkNWE3OTE0NywgMHg5MzBhYTcyNSxcbiAgMHgwNmNhNjM1MSwgMHhlMDAzODI2ZiwgMHgxNDI5Mjk2NywgMHgwYTBlNmU3MCxcbiAgMHgyN2I3MGE4NSwgMHg0NmQyMmZmYywgMHgyZTFiMjEzOCwgMHg1YzI2YzkyNixcbiAgMHg0ZDJjNmRmYywgMHg1YWM0MmFlZCwgMHg1MzM4MGQxMywgMHg5ZDk1YjNkZixcbiAgMHg2NTBhNzM1NCwgMHg4YmFmNjNkZSwgMHg3NjZhMGFiYiwgMHgzYzc3YjJhOCxcbiAgMHg4MWMyYzkyZSwgMHg0N2VkYWVlNiwgMHg5MjcyMmM4NSwgMHgxNDgyMzUzYixcbiAgMHhhMmJmZThhMSwgMHg0Y2YxMDM2NCwgMHhhODFhNjY0YiwgMHhiYzQyMzAwMSxcbiAgMHhjMjRiOGI3MCwgMHhkMGY4OTc5MSwgMHhjNzZjNTFhMywgMHgwNjU0YmUzMCxcbiAgMHhkMTkyZTgxOSwgMHhkNmVmNTIxOCwgMHhkNjk5MDYyNCwgMHg1NTY1YTkxMCxcbiAgMHhmNDBlMzU4NSwgMHg1NzcxMjAyYSwgMHgxMDZhYTA3MCwgMHgzMmJiZDFiOCxcbiAgMHgxOWE0YzExNiwgMHhiOGQyZDBjOCwgMHgxZTM3NmMwOCwgMHg1MTQxYWI1MyxcbiAgMHgyNzQ4Nzc0YywgMHhkZjhlZWI5OSwgMHgzNGIwYmNiNSwgMHhlMTliNDhhOCxcbiAgMHgzOTFjMGNiMywgMHhjNWM5NWE2MywgMHg0ZWQ4YWE0YSwgMHhlMzQxOGFjYixcbiAgMHg1YjljY2E0ZiwgMHg3NzYzZTM3MywgMHg2ODJlNmZmMywgMHhkNmIyYjhhMyxcbiAgMHg3NDhmODJlZSwgMHg1ZGVmYjJmYywgMHg3OGE1NjM2ZiwgMHg0MzE3MmY2MCxcbiAgMHg4NGM4NzgxNCwgMHhhMWYwYWI3MiwgMHg4Y2M3MDIwOCwgMHgxYTY0MzllYyxcbiAgMHg5MGJlZmZmYSwgMHgyMzYzMWUyOCwgMHhhNDUwNmNlYiwgMHhkZTgyYmRlOSxcbiAgMHhiZWY5YTNmNywgMHhiMmM2NzkxNSwgMHhjNjcxNzhmMiwgMHhlMzcyNTMyYixcbiAgMHhjYTI3M2VjZSwgMHhlYTI2NjE5YywgMHhkMTg2YjhjNywgMHgyMWMwYzIwNyxcbiAgMHhlYWRhN2RkNiwgMHhjZGUwZWIxZSwgMHhmNTdkNGY3ZiwgMHhlZTZlZDE3OCxcbiAgMHgwNmYwNjdhYSwgMHg3MjE3NmZiYSwgMHgwYTYzN2RjNSwgMHhhMmM4OThhNixcbiAgMHgxMTNmOTgwNCwgMHhiZWY5MGRhZSwgMHgxYjcxMGIzNSwgMHgxMzFjNDcxYixcbiAgMHgyOGRiNzdmNSwgMHgyMzA0N2Q4NCwgMHgzMmNhYWI3YiwgMHg0MGM3MjQ5MyxcbiAgMHgzYzllYmUwYSwgMHgxNWM5YmViYywgMHg0MzFkNjdjNCwgMHg5YzEwMGQ0YyxcbiAgMHg0Y2M1ZDRiZSwgMHhjYjNlNDJiNiwgMHg1OTdmMjk5YywgMHhmYzY1N2UyYSxcbiAgMHg1ZmNiNmZhYiwgMHgzYWQ2ZmFlYywgMHg2YzQ0MTk4YywgMHg0YTQ3NTgxN1xuXVxuXG52YXIgVyA9IG5ldyBBcnJheSgxNjApXG5cbmZ1bmN0aW9uIFNoYTUxMiAoKSB7XG4gIHRoaXMuaW5pdCgpXG4gIHRoaXMuX3cgPSBXXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDEyOCwgMTEyKVxufVxuXG5pbmhlcml0cyhTaGE1MTIsIEhhc2gpXG5cblNoYTUxMi5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYWggPSAweDZhMDllNjY3XG4gIHRoaXMuX2JoID0gMHhiYjY3YWU4NVxuICB0aGlzLl9jaCA9IDB4M2M2ZWYzNzJcbiAgdGhpcy5fZGggPSAweGE1NGZmNTNhXG4gIHRoaXMuX2VoID0gMHg1MTBlNTI3ZlxuICB0aGlzLl9maCA9IDB4OWIwNTY4OGNcbiAgdGhpcy5fZ2ggPSAweDFmODNkOWFiXG4gIHRoaXMuX2hoID0gMHg1YmUwY2QxOVxuXG4gIHRoaXMuX2FsID0gMHhmM2JjYzkwOFxuICB0aGlzLl9ibCA9IDB4ODRjYWE3M2JcbiAgdGhpcy5fY2wgPSAweGZlOTRmODJiXG4gIHRoaXMuX2RsID0gMHg1ZjFkMzZmMVxuICB0aGlzLl9lbCA9IDB4YWRlNjgyZDFcbiAgdGhpcy5fZmwgPSAweDJiM2U2YzFmXG4gIHRoaXMuX2dsID0gMHhmYjQxYmQ2YlxuICB0aGlzLl9obCA9IDB4MTM3ZTIxNzlcblxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiBDaCAoeCwgeSwgeikge1xuICByZXR1cm4geiBeICh4ICYgKHkgXiB6KSlcbn1cblxuZnVuY3Rpb24gbWFqICh4LCB5LCB6KSB7XG4gIHJldHVybiAoeCAmIHkpIHwgKHogJiAoeCB8IHkpKVxufVxuXG5mdW5jdGlvbiBzaWdtYTAgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMjggfCB4bCA8PCA0KSBeICh4bCA+Pj4gMiB8IHggPDwgMzApIF4gKHhsID4+PiA3IHwgeCA8PCAyNSlcbn1cblxuZnVuY3Rpb24gc2lnbWExICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDE0IHwgeGwgPDwgMTgpIF4gKHggPj4+IDE4IHwgeGwgPDwgMTQpIF4gKHhsID4+PiA5IHwgeCA8PCAyMylcbn1cblxuZnVuY3Rpb24gR2FtbWEwICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDEgfCB4bCA8PCAzMSkgXiAoeCA+Pj4gOCB8IHhsIDw8IDI0KSBeICh4ID4+PiA3KVxufVxuXG5mdW5jdGlvbiBHYW1tYTBsICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDEgfCB4bCA8PCAzMSkgXiAoeCA+Pj4gOCB8IHhsIDw8IDI0KSBeICh4ID4+PiA3IHwgeGwgPDwgMjUpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMSAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxOSB8IHhsIDw8IDEzKSBeICh4bCA+Pj4gMjkgfCB4IDw8IDMpIF4gKHggPj4+IDYpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMWwgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMTkgfCB4bCA8PCAxMykgXiAoeGwgPj4+IDI5IHwgeCA8PCAzKSBeICh4ID4+PiA2IHwgeGwgPDwgMjYpXG59XG5cbmZ1bmN0aW9uIGdldENhcnJ5IChhLCBiKSB7XG4gIHJldHVybiAoYSA+Pj4gMCkgPCAoYiA+Pj4gMCkgPyAxIDogMFxufVxuXG5TaGE1MTIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYWggPSB0aGlzLl9haCB8IDBcbiAgdmFyIGJoID0gdGhpcy5fYmggfCAwXG4gIHZhciBjaCA9IHRoaXMuX2NoIHwgMFxuICB2YXIgZGggPSB0aGlzLl9kaCB8IDBcbiAgdmFyIGVoID0gdGhpcy5fZWggfCAwXG4gIHZhciBmaCA9IHRoaXMuX2ZoIHwgMFxuICB2YXIgZ2ggPSB0aGlzLl9naCB8IDBcbiAgdmFyIGhoID0gdGhpcy5faGggfCAwXG5cbiAgdmFyIGFsID0gdGhpcy5fYWwgfCAwXG4gIHZhciBibCA9IHRoaXMuX2JsIHwgMFxuICB2YXIgY2wgPSB0aGlzLl9jbCB8IDBcbiAgdmFyIGRsID0gdGhpcy5fZGwgfCAwXG4gIHZhciBlbCA9IHRoaXMuX2VsIHwgMFxuICB2YXIgZmwgPSB0aGlzLl9mbCB8IDBcbiAgdmFyIGdsID0gdGhpcy5fZ2wgfCAwXG4gIHZhciBobCA9IHRoaXMuX2hsIHwgMFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMzI7IGkgKz0gMikge1xuICAgIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICAgIFdbaSArIDFdID0gTS5yZWFkSW50MzJCRShpICogNCArIDQpXG4gIH1cbiAgZm9yICg7IGkgPCAxNjA7IGkgKz0gMikge1xuICAgIHZhciB4aCA9IFdbaSAtIDE1ICogMl1cbiAgICB2YXIgeGwgPSBXW2kgLSAxNSAqIDIgKyAxXVxuICAgIHZhciBnYW1tYTAgPSBHYW1tYTAoeGgsIHhsKVxuICAgIHZhciBnYW1tYTBsID0gR2FtbWEwbCh4bCwgeGgpXG5cbiAgICB4aCA9IFdbaSAtIDIgKiAyXVxuICAgIHhsID0gV1tpIC0gMiAqIDIgKyAxXVxuICAgIHZhciBnYW1tYTEgPSBHYW1tYTEoeGgsIHhsKVxuICAgIHZhciBnYW1tYTFsID0gR2FtbWExbCh4bCwgeGgpXG5cbiAgICAvLyBXW2ldID0gZ2FtbWEwICsgV1tpIC0gN10gKyBnYW1tYTEgKyBXW2kgLSAxNl1cbiAgICB2YXIgV2k3aCA9IFdbaSAtIDcgKiAyXVxuICAgIHZhciBXaTdsID0gV1tpIC0gNyAqIDIgKyAxXVxuXG4gICAgdmFyIFdpMTZoID0gV1tpIC0gMTYgKiAyXVxuICAgIHZhciBXaTE2bCA9IFdbaSAtIDE2ICogMiArIDFdXG5cbiAgICB2YXIgV2lsID0gKGdhbW1hMGwgKyBXaTdsKSB8IDBcbiAgICB2YXIgV2loID0gKGdhbW1hMCArIFdpN2ggKyBnZXRDYXJyeShXaWwsIGdhbW1hMGwpKSB8IDBcbiAgICBXaWwgPSAoV2lsICsgZ2FtbWExbCkgfCAwXG4gICAgV2loID0gKFdpaCArIGdhbW1hMSArIGdldENhcnJ5KFdpbCwgZ2FtbWExbCkpIHwgMFxuICAgIFdpbCA9IChXaWwgKyBXaTE2bCkgfCAwXG4gICAgV2loID0gKFdpaCArIFdpMTZoICsgZ2V0Q2FycnkoV2lsLCBXaTE2bCkpIHwgMFxuXG4gICAgV1tpXSA9IFdpaFxuICAgIFdbaSArIDFdID0gV2lsXG4gIH1cblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDE2MDsgaiArPSAyKSB7XG4gICAgV2loID0gV1tqXVxuICAgIFdpbCA9IFdbaiArIDFdXG5cbiAgICB2YXIgbWFqaCA9IG1haihhaCwgYmgsIGNoKVxuICAgIHZhciBtYWpsID0gbWFqKGFsLCBibCwgY2wpXG5cbiAgICB2YXIgc2lnbWEwaCA9IHNpZ21hMChhaCwgYWwpXG4gICAgdmFyIHNpZ21hMGwgPSBzaWdtYTAoYWwsIGFoKVxuICAgIHZhciBzaWdtYTFoID0gc2lnbWExKGVoLCBlbClcbiAgICB2YXIgc2lnbWExbCA9IHNpZ21hMShlbCwgZWgpXG5cbiAgICAvLyB0MSA9IGggKyBzaWdtYTEgKyBjaCArIEtbal0gKyBXW2pdXG4gICAgdmFyIEtpaCA9IEtbal1cbiAgICB2YXIgS2lsID0gS1tqICsgMV1cblxuICAgIHZhciBjaGggPSBDaChlaCwgZmgsIGdoKVxuICAgIHZhciBjaGwgPSBDaChlbCwgZmwsIGdsKVxuXG4gICAgdmFyIHQxbCA9IChobCArIHNpZ21hMWwpIHwgMFxuICAgIHZhciB0MWggPSAoaGggKyBzaWdtYTFoICsgZ2V0Q2FycnkodDFsLCBobCkpIHwgMFxuICAgIHQxbCA9ICh0MWwgKyBjaGwpIHwgMFxuICAgIHQxaCA9ICh0MWggKyBjaGggKyBnZXRDYXJyeSh0MWwsIGNobCkpIHwgMFxuICAgIHQxbCA9ICh0MWwgKyBLaWwpIHwgMFxuICAgIHQxaCA9ICh0MWggKyBLaWggKyBnZXRDYXJyeSh0MWwsIEtpbCkpIHwgMFxuICAgIHQxbCA9ICh0MWwgKyBXaWwpIHwgMFxuICAgIHQxaCA9ICh0MWggKyBXaWggKyBnZXRDYXJyeSh0MWwsIFdpbCkpIHwgMFxuXG4gICAgLy8gdDIgPSBzaWdtYTAgKyBtYWpcbiAgICB2YXIgdDJsID0gKHNpZ21hMGwgKyBtYWpsKSB8IDBcbiAgICB2YXIgdDJoID0gKHNpZ21hMGggKyBtYWpoICsgZ2V0Q2FycnkodDJsLCBzaWdtYTBsKSkgfCAwXG5cbiAgICBoaCA9IGdoXG4gICAgaGwgPSBnbFxuICAgIGdoID0gZmhcbiAgICBnbCA9IGZsXG4gICAgZmggPSBlaFxuICAgIGZsID0gZWxcbiAgICBlbCA9IChkbCArIHQxbCkgfCAwXG4gICAgZWggPSAoZGggKyB0MWggKyBnZXRDYXJyeShlbCwgZGwpKSB8IDBcbiAgICBkaCA9IGNoXG4gICAgZGwgPSBjbFxuICAgIGNoID0gYmhcbiAgICBjbCA9IGJsXG4gICAgYmggPSBhaFxuICAgIGJsID0gYWxcbiAgICBhbCA9ICh0MWwgKyB0MmwpIHwgMFxuICAgIGFoID0gKHQxaCArIHQyaCArIGdldENhcnJ5KGFsLCB0MWwpKSB8IDBcbiAgfVxuXG4gIHRoaXMuX2FsID0gKHRoaXMuX2FsICsgYWwpIHwgMFxuICB0aGlzLl9ibCA9ICh0aGlzLl9ibCArIGJsKSB8IDBcbiAgdGhpcy5fY2wgPSAodGhpcy5fY2wgKyBjbCkgfCAwXG4gIHRoaXMuX2RsID0gKHRoaXMuX2RsICsgZGwpIHwgMFxuICB0aGlzLl9lbCA9ICh0aGlzLl9lbCArIGVsKSB8IDBcbiAgdGhpcy5fZmwgPSAodGhpcy5fZmwgKyBmbCkgfCAwXG4gIHRoaXMuX2dsID0gKHRoaXMuX2dsICsgZ2wpIHwgMFxuICB0aGlzLl9obCA9ICh0aGlzLl9obCArIGhsKSB8IDBcblxuICB0aGlzLl9haCA9ICh0aGlzLl9haCArIGFoICsgZ2V0Q2FycnkodGhpcy5fYWwsIGFsKSkgfCAwXG4gIHRoaXMuX2JoID0gKHRoaXMuX2JoICsgYmggKyBnZXRDYXJyeSh0aGlzLl9ibCwgYmwpKSB8IDBcbiAgdGhpcy5fY2ggPSAodGhpcy5fY2ggKyBjaCArIGdldENhcnJ5KHRoaXMuX2NsLCBjbCkpIHwgMFxuICB0aGlzLl9kaCA9ICh0aGlzLl9kaCArIGRoICsgZ2V0Q2FycnkodGhpcy5fZGwsIGRsKSkgfCAwXG4gIHRoaXMuX2VoID0gKHRoaXMuX2VoICsgZWggKyBnZXRDYXJyeSh0aGlzLl9lbCwgZWwpKSB8IDBcbiAgdGhpcy5fZmggPSAodGhpcy5fZmggKyBmaCArIGdldENhcnJ5KHRoaXMuX2ZsLCBmbCkpIHwgMFxuICB0aGlzLl9naCA9ICh0aGlzLl9naCArIGdoICsgZ2V0Q2FycnkodGhpcy5fZ2wsIGdsKSkgfCAwXG4gIHRoaXMuX2hoID0gKHRoaXMuX2hoICsgaGggKyBnZXRDYXJyeSh0aGlzLl9obCwgaGwpKSB8IDBcbn1cblxuU2hhNTEyLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBCdWZmZXIuYWxsb2NVbnNhZmUoNjQpXG5cbiAgZnVuY3Rpb24gd3JpdGVJbnQ2NEJFIChoLCBsLCBvZmZzZXQpIHtcbiAgICBILndyaXRlSW50MzJCRShoLCBvZmZzZXQpXG4gICAgSC53cml0ZUludDMyQkUobCwgb2Zmc2V0ICsgNClcbiAgfVxuXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9haCwgdGhpcy5fYWwsIDApXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9iaCwgdGhpcy5fYmwsIDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9jaCwgdGhpcy5fY2wsIDE2KVxuICB3cml0ZUludDY0QkUodGhpcy5fZGgsIHRoaXMuX2RsLCAyNClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2VoLCB0aGlzLl9lbCwgMzIpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9maCwgdGhpcy5fZmwsIDQwKVxuICB3cml0ZUludDY0QkUodGhpcy5fZ2gsIHRoaXMuX2dsLCA0OClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2hoLCB0aGlzLl9obCwgNTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGE1MTJcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3NoYS5qcy9zaGE1MTIuanNcbi8vIG1vZHVsZSBpZCA9IDU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///57\n");

/***/ }),
/* 58 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar inherits = __webpack_require__(0)\nvar Legacy = __webpack_require__(145)\nvar Base = __webpack_require__(11)\nvar Buffer = __webpack_require__(1).Buffer\nvar md5 = __webpack_require__(59)\nvar RIPEMD160 = __webpack_require__(35)\n\nvar sha = __webpack_require__(36)\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n  Base.call(this, 'digest')\n  if (typeof key === 'string') {\n    key = Buffer.from(key)\n  }\n\n  var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n  this._alg = alg\n  this._key = key\n  if (key.length > blocksize) {\n    var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n    key = hash.update(key).digest()\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n  var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n  this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n  this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n  this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n  var h = this._hash.digest()\n  var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n  return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n  alg = alg.toLowerCase()\n  if (alg === 'rmd160' || alg === 'ripemd160') {\n    return new Hmac('rmd160', key)\n  }\n  if (alg === 'md5') {\n    return new Legacy(md5, key)\n  }\n  return new Hmac(alg, key)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3JlYXRlLWhtYWMvYnJvd3Nlci5qcz8wMTE2Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIExlZ2FjeSA9IHJlcXVpcmUoJy4vbGVnYWN5JylcbnZhciBCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgbWQ1ID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gvbWQ1JylcbnZhciBSSVBFTUQxNjAgPSByZXF1aXJlKCdyaXBlbWQxNjAnKVxuXG52YXIgc2hhID0gcmVxdWlyZSgnc2hhLmpzJylcblxudmFyIFpFUk9TID0gQnVmZmVyLmFsbG9jKDEyOClcblxuZnVuY3Rpb24gSG1hYyAoYWxnLCBrZXkpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycpIHtcbiAgICBrZXkgPSBCdWZmZXIuZnJvbShrZXkpXG4gIH1cblxuICB2YXIgYmxvY2tzaXplID0gKGFsZyA9PT0gJ3NoYTUxMicgfHwgYWxnID09PSAnc2hhMzg0JykgPyAxMjggOiA2NFxuXG4gIHRoaXMuX2FsZyA9IGFsZ1xuICB0aGlzLl9rZXkgPSBrZXlcbiAgaWYgKGtleS5sZW5ndGggPiBibG9ja3NpemUpIHtcbiAgICB2YXIgaGFzaCA9IGFsZyA9PT0gJ3JtZDE2MCcgPyBuZXcgUklQRU1EMTYwKCkgOiBzaGEoYWxnKVxuICAgIGtleSA9IGhhc2gudXBkYXRlKGtleSkuZGlnZXN0KClcbiAgfSBlbHNlIGlmIChrZXkubGVuZ3RoIDwgYmxvY2tzaXplKSB7XG4gICAga2V5ID0gQnVmZmVyLmNvbmNhdChba2V5LCBaRVJPU10sIGJsb2Nrc2l6ZSlcbiAgfVxuXG4gIHZhciBpcGFkID0gdGhpcy5faXBhZCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja3NpemUpXG4gIHZhciBvcGFkID0gdGhpcy5fb3BhZCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja3NpemUpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja3NpemU7IGkrKykge1xuICAgIGlwYWRbaV0gPSBrZXlbaV0gXiAweDM2XG4gICAgb3BhZFtpXSA9IGtleVtpXSBeIDB4NUNcbiAgfVxuICB0aGlzLl9oYXNoID0gYWxnID09PSAncm1kMTYwJyA/IG5ldyBSSVBFTUQxNjAoKSA6IHNoYShhbGcpXG4gIHRoaXMuX2hhc2gudXBkYXRlKGlwYWQpXG59XG5cbmluaGVyaXRzKEhtYWMsIEJhc2UpXG5cbkhtYWMucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxufVxuXG5IbWFjLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBoID0gdGhpcy5faGFzaC5kaWdlc3QoKVxuICB2YXIgaGFzaCA9IHRoaXMuX2FsZyA9PT0gJ3JtZDE2MCcgPyBuZXcgUklQRU1EMTYwKCkgOiBzaGEodGhpcy5fYWxnKVxuICByZXR1cm4gaGFzaC51cGRhdGUodGhpcy5fb3BhZCkudXBkYXRlKGgpLmRpZ2VzdCgpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlSG1hYyAoYWxnLCBrZXkpIHtcbiAgYWxnID0gYWxnLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFsZyA9PT0gJ3JtZDE2MCcgfHwgYWxnID09PSAncmlwZW1kMTYwJykge1xuICAgIHJldHVybiBuZXcgSG1hYygncm1kMTYwJywga2V5KVxuICB9XG4gIGlmIChhbGcgPT09ICdtZDUnKSB7XG4gICAgcmV0dXJuIG5ldyBMZWdhY3kobWQ1LCBrZXkpXG4gIH1cbiAgcmV0dXJuIG5ldyBIbWFjKGFsZywga2V5KVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY3JlYXRlLWhtYWMvYnJvd3Nlci5qc1xuLy8gbW9kdWxlIGlkID0gNThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///58\n");

/***/ }),
/* 59 */
/***/ (function(module, exports, __webpack_require__) {

eval("var MD5 = __webpack_require__(29)\n\nmodule.exports = function (buffer) {\n  return new MD5().update(buffer).digest()\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3JlYXRlLWhhc2gvbWQ1LmpzPzExNzciXSwic291cmNlc0NvbnRlbnQiOlsidmFyIE1ENSA9IHJlcXVpcmUoJ21kNS5qcycpXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJ1ZmZlcikge1xuICByZXR1cm4gbmV3IE1ENSgpLnVwZGF0ZShidWZmZXIpLmRpZ2VzdCgpXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jcmVhdGUtaGFzaC9tZDUuanNcbi8vIG1vZHVsZSBpZCA9IDU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///59\n");

/***/ }),
/* 60 */
/***/ (function(module, exports) {

eval("module.exports = {\"sha224WithRSAEncryption\":{\"sign\":\"rsa\",\"hash\":\"sha224\",\"id\":\"302d300d06096086480165030402040500041c\"},\"RSA-SHA224\":{\"sign\":\"ecdsa/rsa\",\"hash\":\"sha224\",\"id\":\"302d300d06096086480165030402040500041c\"},\"sha256WithRSAEncryption\":{\"sign\":\"rsa\",\"hash\":\"sha256\",\"id\":\"3031300d060960864801650304020105000420\"},\"RSA-SHA256\":{\"sign\":\"ecdsa/rsa\",\"hash\":\"sha256\",\"id\":\"3031300d060960864801650304020105000420\"},\"sha384WithRSAEncryption\":{\"sign\":\"rsa\",\"hash\":\"sha384\",\"id\":\"3041300d060960864801650304020205000430\"},\"RSA-SHA384\":{\"sign\":\"ecdsa/rsa\",\"hash\":\"sha384\",\"id\":\"3041300d060960864801650304020205000430\"},\"sha512WithRSAEncryption\":{\"sign\":\"rsa\",\"hash\":\"sha512\",\"id\":\"3051300d060960864801650304020305000440\"},\"RSA-SHA512\":{\"sign\":\"ecdsa/rsa\",\"hash\":\"sha512\",\"id\":\"3051300d060960864801650304020305000440\"},\"RSA-SHA1\":{\"sign\":\"rsa\",\"hash\":\"sha1\",\"id\":\"3021300906052b0e03021a05000414\"},\"ecdsa-with-SHA1\":{\"sign\":\"ecdsa\",\"hash\":\"sha1\",\"id\":\"\"},\"sha256\":{\"sign\":\"ecdsa\",\"hash\":\"sha256\",\"id\":\"\"},\"sha224\":{\"sign\":\"ecdsa\",\"hash\":\"sha224\",\"id\":\"\"},\"sha384\":{\"sign\":\"ecdsa\",\"hash\":\"sha384\",\"id\":\"\"},\"sha512\":{\"sign\":\"ecdsa\",\"hash\":\"sha512\",\"id\":\"\"},\"DSA-SHA\":{\"sign\":\"dsa\",\"hash\":\"sha1\",\"id\":\"\"},\"DSA-SHA1\":{\"sign\":\"dsa\",\"hash\":\"sha1\",\"id\":\"\"},\"DSA\":{\"sign\":\"dsa\",\"hash\":\"sha1\",\"id\":\"\"},\"DSA-WITH-SHA224\":{\"sign\":\"dsa\",\"hash\":\"sha224\",\"id\":\"\"},\"DSA-SHA224\":{\"sign\":\"dsa\",\"hash\":\"sha224\",\"id\":\"\"},\"DSA-WITH-SHA256\":{\"sign\":\"dsa\",\"hash\":\"sha256\",\"id\":\"\"},\"DSA-SHA256\":{\"sign\":\"dsa\",\"hash\":\"sha256\",\"id\":\"\"},\"DSA-WITH-SHA384\":{\"sign\":\"dsa\",\"hash\":\"sha384\",\"id\":\"\"},\"DSA-SHA384\":{\"sign\":\"dsa\",\"hash\":\"sha384\",\"id\":\"\"},\"DSA-WITH-SHA512\":{\"sign\":\"dsa\",\"hash\":\"sha512\",\"id\":\"\"},\"DSA-SHA512\":{\"sign\":\"dsa\",\"hash\":\"sha512\",\"id\":\"\"},\"DSA-RIPEMD160\":{\"sign\":\"dsa\",\"hash\":\"rmd160\",\"id\":\"\"},\"ripemd160WithRSA\":{\"sign\":\"rsa\",\"hash\":\"rmd160\",\"id\":\"3021300906052b2403020105000414\"},\"RSA-RIPEMD160\":{\"sign\":\"rsa\",\"hash\":\"rmd160\",\"id\":\"3021300906052b2403020105000414\"},\"md5WithRSAEncryption\":{\"sign\":\"rsa\",\"hash\":\"md5\",\"id\":\"3020300c06082a864886f70d020505000410\"},\"RSA-MD5\":{\"sign\":\"rsa\",\"hash\":\"md5\",\"id\":\"3020300c06082a864886f70d020505000410\"}}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2Jyb3dzZXIvYWxnb3JpdGhtcy5qc29uPzdhMzIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XCJzaGEyMjRXaXRoUlNBRW5jcnlwdGlvblwiOntcInNpZ25cIjpcInJzYVwiLFwiaGFzaFwiOlwic2hhMjI0XCIsXCJpZFwiOlwiMzAyZDMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjA0MDUwMDA0MWNcIn0sXCJSU0EtU0hBMjI0XCI6e1wic2lnblwiOlwiZWNkc2EvcnNhXCIsXCJoYXNoXCI6XCJzaGEyMjRcIixcImlkXCI6XCIzMDJkMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDQwNTAwMDQxY1wifSxcInNoYTI1NldpdGhSU0FFbmNyeXB0aW9uXCI6e1wic2lnblwiOlwicnNhXCIsXCJoYXNoXCI6XCJzaGEyNTZcIixcImlkXCI6XCIzMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMFwifSxcIlJTQS1TSEEyNTZcIjp7XCJzaWduXCI6XCJlY2RzYS9yc2FcIixcImhhc2hcIjpcInNoYTI1NlwiLFwiaWRcIjpcIjMwMzEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAwNDIwXCJ9LFwic2hhMzg0V2l0aFJTQUVuY3J5cHRpb25cIjp7XCJzaWduXCI6XCJyc2FcIixcImhhc2hcIjpcInNoYTM4NFwiLFwiaWRcIjpcIjMwNDEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMjA1MDAwNDMwXCJ9LFwiUlNBLVNIQTM4NFwiOntcInNpZ25cIjpcImVjZHNhL3JzYVwiLFwiaGFzaFwiOlwic2hhMzg0XCIsXCJpZFwiOlwiMzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0MzBcIn0sXCJzaGE1MTJXaXRoUlNBRW5jcnlwdGlvblwiOntcInNpZ25cIjpcInJzYVwiLFwiaGFzaFwiOlwic2hhNTEyXCIsXCJpZFwiOlwiMzA1MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAzMDUwMDA0NDBcIn0sXCJSU0EtU0hBNTEyXCI6e1wic2lnblwiOlwiZWNkc2EvcnNhXCIsXCJoYXNoXCI6XCJzaGE1MTJcIixcImlkXCI6XCIzMDUxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDMwNTAwMDQ0MFwifSxcIlJTQS1TSEExXCI6e1wic2lnblwiOlwicnNhXCIsXCJoYXNoXCI6XCJzaGExXCIsXCJpZFwiOlwiMzAyMTMwMDkwNjA1MmIwZTAzMDIxYTA1MDAwNDE0XCJ9LFwiZWNkc2Etd2l0aC1TSEExXCI6e1wic2lnblwiOlwiZWNkc2FcIixcImhhc2hcIjpcInNoYTFcIixcImlkXCI6XCJcIn0sXCJzaGEyNTZcIjp7XCJzaWduXCI6XCJlY2RzYVwiLFwiaGFzaFwiOlwic2hhMjU2XCIsXCJpZFwiOlwiXCJ9LFwic2hhMjI0XCI6e1wic2lnblwiOlwiZWNkc2FcIixcImhhc2hcIjpcInNoYTIyNFwiLFwiaWRcIjpcIlwifSxcInNoYTM4NFwiOntcInNpZ25cIjpcImVjZHNhXCIsXCJoYXNoXCI6XCJzaGEzODRcIixcImlkXCI6XCJcIn0sXCJzaGE1MTJcIjp7XCJzaWduXCI6XCJlY2RzYVwiLFwiaGFzaFwiOlwic2hhNTEyXCIsXCJpZFwiOlwiXCJ9LFwiRFNBLVNIQVwiOntcInNpZ25cIjpcImRzYVwiLFwiaGFzaFwiOlwic2hhMVwiLFwiaWRcIjpcIlwifSxcIkRTQS1TSEExXCI6e1wic2lnblwiOlwiZHNhXCIsXCJoYXNoXCI6XCJzaGExXCIsXCJpZFwiOlwiXCJ9LFwiRFNBXCI6e1wic2lnblwiOlwiZHNhXCIsXCJoYXNoXCI6XCJzaGExXCIsXCJpZFwiOlwiXCJ9LFwiRFNBLVdJVEgtU0hBMjI0XCI6e1wic2lnblwiOlwiZHNhXCIsXCJoYXNoXCI6XCJzaGEyMjRcIixcImlkXCI6XCJcIn0sXCJEU0EtU0hBMjI0XCI6e1wic2lnblwiOlwiZHNhXCIsXCJoYXNoXCI6XCJzaGEyMjRcIixcImlkXCI6XCJcIn0sXCJEU0EtV0lUSC1TSEEyNTZcIjp7XCJzaWduXCI6XCJkc2FcIixcImhhc2hcIjpcInNoYTI1NlwiLFwiaWRcIjpcIlwifSxcIkRTQS1TSEEyNTZcIjp7XCJzaWduXCI6XCJkc2FcIixcImhhc2hcIjpcInNoYTI1NlwiLFwiaWRcIjpcIlwifSxcIkRTQS1XSVRILVNIQTM4NFwiOntcInNpZ25cIjpcImRzYVwiLFwiaGFzaFwiOlwic2hhMzg0XCIsXCJpZFwiOlwiXCJ9LFwiRFNBLVNIQTM4NFwiOntcInNpZ25cIjpcImRzYVwiLFwiaGFzaFwiOlwic2hhMzg0XCIsXCJpZFwiOlwiXCJ9LFwiRFNBLVdJVEgtU0hBNTEyXCI6e1wic2lnblwiOlwiZHNhXCIsXCJoYXNoXCI6XCJzaGE1MTJcIixcImlkXCI6XCJcIn0sXCJEU0EtU0hBNTEyXCI6e1wic2lnblwiOlwiZHNhXCIsXCJoYXNoXCI6XCJzaGE1MTJcIixcImlkXCI6XCJcIn0sXCJEU0EtUklQRU1EMTYwXCI6e1wic2lnblwiOlwiZHNhXCIsXCJoYXNoXCI6XCJybWQxNjBcIixcImlkXCI6XCJcIn0sXCJyaXBlbWQxNjBXaXRoUlNBXCI6e1wic2lnblwiOlwicnNhXCIsXCJoYXNoXCI6XCJybWQxNjBcIixcImlkXCI6XCIzMDIxMzAwOTA2MDUyYjI0MDMwMjAxMDUwMDA0MTRcIn0sXCJSU0EtUklQRU1EMTYwXCI6e1wic2lnblwiOlwicnNhXCIsXCJoYXNoXCI6XCJybWQxNjBcIixcImlkXCI6XCIzMDIxMzAwOTA2MDUyYjI0MDMwMjAxMDUwMDA0MTRcIn0sXCJtZDVXaXRoUlNBRW5jcnlwdGlvblwiOntcInNpZ25cIjpcInJzYVwiLFwiaGFzaFwiOlwibWQ1XCIsXCJpZFwiOlwiMzAyMDMwMGMwNjA4MmE4NjQ4ODZmNzBkMDIwNTA1MDAwNDEwXCJ9LFwiUlNBLU1ENVwiOntcInNpZ25cIjpcInJzYVwiLFwiaGFzaFwiOlwibWQ1XCIsXCJpZFwiOlwiMzAyMDMwMGMwNjA4MmE4NjQ4ODZmNzBkMDIwNTA1MDAwNDEwXCJ9fVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9icm93c2VyL2FsZ29yaXRobXMuanNvblxuLy8gbW9kdWxlIGlkID0gNjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///60\n");

/***/ }),
/* 61 */
/***/ (function(module, exports, __webpack_require__) {

eval("exports.pbkdf2 = __webpack_require__(147)\nexports.pbkdf2Sync = __webpack_require__(64)\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcGJrZGYyL2Jyb3dzZXIuanM/ZmVmNyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLnBia2RmMiA9IHJlcXVpcmUoJy4vbGliL2FzeW5jJylcbmV4cG9ydHMucGJrZGYyU3luYyA9IHJlcXVpcmUoJy4vbGliL3N5bmMnKVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcGJrZGYyL2Jyb3dzZXIuanNcbi8vIG1vZHVsZSBpZCA9IDYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///61\n");

/***/ }),
/* 62 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nfunction checkBuffer (buf, name) {\n  if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) {\n    throw new TypeError(name + ' must be a buffer or string')\n  }\n}\n\nmodule.exports = function (password, salt, iterations, keylen) {\n  checkBuffer(password, 'Password')\n  checkBuffer(salt, 'Salt')\n\n  if (typeof iterations !== 'number') {\n    throw new TypeError('Iterations not a number')\n  }\n\n  if (iterations < 0) {\n    throw new TypeError('Bad iterations')\n  }\n\n  if (typeof keylen !== 'number') {\n    throw new TypeError('Key length not a number')\n  }\n\n  if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n    throw new TypeError('Bad key length')\n  }\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5).Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi9wcmVjb25kaXRpb24uanM/ZDg5NiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgTUFYX0FMTE9DID0gTWF0aC5wb3coMiwgMzApIC0gMSAvLyBkZWZhdWx0IGluIGlvanNcblxuZnVuY3Rpb24gY2hlY2tCdWZmZXIgKGJ1ZiwgbmFtZSkge1xuICBpZiAodHlwZW9mIGJ1ZiAhPT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihuYW1lICsgJyBtdXN0IGJlIGEgYnVmZmVyIG9yIHN0cmluZycpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbikge1xuICBjaGVja0J1ZmZlcihwYXNzd29yZCwgJ1Bhc3N3b3JkJylcbiAgY2hlY2tCdWZmZXIoc2FsdCwgJ1NhbHQnKVxuXG4gIGlmICh0eXBlb2YgaXRlcmF0aW9ucyAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJdGVyYXRpb25zIG5vdCBhIG51bWJlcicpXG4gIH1cblxuICBpZiAoaXRlcmF0aW9ucyA8IDApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCYWQgaXRlcmF0aW9ucycpXG4gIH1cblxuICBpZiAodHlwZW9mIGtleWxlbiAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdLZXkgbGVuZ3RoIG5vdCBhIG51bWJlcicpXG4gIH1cblxuICBpZiAoa2V5bGVuIDwgMCB8fCBrZXlsZW4gPiBNQVhfQUxMT0MgfHwga2V5bGVuICE9PSBrZXlsZW4pIHsgLyogZXNsaW50IG5vLXNlbGYtY29tcGFyZTogMCAqL1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JhZCBrZXkgbGVuZ3RoJylcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi9wcmVjb25kaXRpb24uanNcbi8vIG1vZHVsZSBpZCA9IDYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///62\n");

/***/ }),
/* 63 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(process) {var defaultEncoding\n/* istanbul ignore next */\nif (process.browser) {\n  defaultEncoding = 'utf-8'\n} else {\n  var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n  defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n}\nmodule.exports = defaultEncoding\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(10)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi9kZWZhdWx0LWVuY29kaW5nLmpzP2RmOTYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmF1bHRFbmNvZGluZ1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChwcm9jZXNzLmJyb3dzZXIpIHtcbiAgZGVmYXVsdEVuY29kaW5nID0gJ3V0Zi04J1xufSBlbHNlIHtcbiAgdmFyIHBWZXJzaW9uTWFqb3IgPSBwYXJzZUludChwcm9jZXNzLnZlcnNpb24uc3BsaXQoJy4nKVswXS5zbGljZSgxKSwgMTApXG5cbiAgZGVmYXVsdEVuY29kaW5nID0gcFZlcnNpb25NYWpvciA+PSA2ID8gJ3V0Zi04JyA6ICdiaW5hcnknXG59XG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRFbmNvZGluZ1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi9kZWZhdWx0LWVuY29kaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSA2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///63\n");

/***/ }),
/* 64 */
/***/ (function(module, exports, __webpack_require__) {

eval("var md5 = __webpack_require__(59)\nvar RIPEMD160 = __webpack_require__(35)\nvar sha = __webpack_require__(36)\n\nvar checkParameters = __webpack_require__(62)\nvar defaultEncoding = __webpack_require__(63)\nvar Buffer = __webpack_require__(1).Buffer\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n  md5: 16,\n  sha1: 20,\n  sha224: 28,\n  sha256: 32,\n  sha384: 48,\n  sha512: 64,\n  rmd160: 20,\n  ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n  var hash = getDigest(alg)\n  var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n  if (key.length > blocksize) {\n    key = hash(key)\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n  var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n\n  var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n  ipad.copy(ipad1, 0, 0, blocksize)\n  this.ipad1 = ipad1\n  this.ipad2 = ipad\n  this.opad = opad\n  this.alg = alg\n  this.blocksize = blocksize\n  this.hash = hash\n  this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n  data.copy(ipad, this.blocksize)\n  var h = this.hash(ipad)\n  h.copy(this.opad, this.blocksize)\n  return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n  function shaFunc (data) {\n    return sha(alg).update(data).digest()\n  }\n  function rmd160Func (data) {\n    return new RIPEMD160().update(data).digest()\n  }\n\n  if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n  if (alg === 'md5') return md5\n  return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n  checkParameters(password, salt, iterations, keylen)\n\n  if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n  if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n  digest = digest || 'sha1'\n\n  var hmac = new Hmac(digest, password, salt.length)\n\n  var DK = Buffer.allocUnsafe(keylen)\n  var block1 = Buffer.allocUnsafe(salt.length + 4)\n  salt.copy(block1, 0, 0, salt.length)\n\n  var destPos = 0\n  var hLen = sizes[digest]\n  var l = Math.ceil(keylen / hLen)\n\n  for (var i = 1; i <= l; i++) {\n    block1.writeUInt32BE(i, salt.length)\n\n    var T = hmac.run(block1, hmac.ipad1)\n    var U = T\n\n    for (var j = 1; j < iterations; j++) {\n      U = hmac.run(U, hmac.ipad2)\n      for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n    }\n\n    T.copy(DK, destPos)\n    destPos += hLen\n  }\n\n  return DK\n}\n\nmodule.exports = pbkdf2\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi9zeW5jLWJyb3dzZXIuanM/NjZhZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWQ1ID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gvbWQ1JylcbnZhciBSSVBFTUQxNjAgPSByZXF1aXJlKCdyaXBlbWQxNjAnKVxudmFyIHNoYSA9IHJlcXVpcmUoJ3NoYS5qcycpXG5cbnZhciBjaGVja1BhcmFtZXRlcnMgPSByZXF1aXJlKCcuL3ByZWNvbmRpdGlvbicpXG52YXIgZGVmYXVsdEVuY29kaW5nID0gcmVxdWlyZSgnLi9kZWZhdWx0LWVuY29kaW5nJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIFpFUk9TID0gQnVmZmVyLmFsbG9jKDEyOClcbnZhciBzaXplcyA9IHtcbiAgbWQ1OiAxNixcbiAgc2hhMTogMjAsXG4gIHNoYTIyNDogMjgsXG4gIHNoYTI1NjogMzIsXG4gIHNoYTM4NDogNDgsXG4gIHNoYTUxMjogNjQsXG4gIHJtZDE2MDogMjAsXG4gIHJpcGVtZDE2MDogMjBcbn1cblxuZnVuY3Rpb24gSG1hYyAoYWxnLCBrZXksIHNhbHRMZW4pIHtcbiAgdmFyIGhhc2ggPSBnZXREaWdlc3QoYWxnKVxuICB2YXIgYmxvY2tzaXplID0gKGFsZyA9PT0gJ3NoYTUxMicgfHwgYWxnID09PSAnc2hhMzg0JykgPyAxMjggOiA2NFxuXG4gIGlmIChrZXkubGVuZ3RoID4gYmxvY2tzaXplKSB7XG4gICAga2V5ID0gaGFzaChrZXkpXG4gIH0gZWxzZSBpZiAoa2V5Lmxlbmd0aCA8IGJsb2Nrc2l6ZSkge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwgWkVST1NdLCBibG9ja3NpemUpXG4gIH1cblxuICB2YXIgaXBhZCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja3NpemUgKyBzaXplc1thbGddKVxuICB2YXIgb3BhZCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja3NpemUgKyBzaXplc1thbGddKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGJsb2Nrc2l6ZTsgaSsrKSB7XG4gICAgaXBhZFtpXSA9IGtleVtpXSBeIDB4MzZcbiAgICBvcGFkW2ldID0ga2V5W2ldIF4gMHg1Q1xuICB9XG5cbiAgdmFyIGlwYWQxID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2Nrc2l6ZSArIHNhbHRMZW4gKyA0KVxuICBpcGFkLmNvcHkoaXBhZDEsIDAsIDAsIGJsb2Nrc2l6ZSlcbiAgdGhpcy5pcGFkMSA9IGlwYWQxXG4gIHRoaXMuaXBhZDIgPSBpcGFkXG4gIHRoaXMub3BhZCA9IG9wYWRcbiAgdGhpcy5hbGcgPSBhbGdcbiAgdGhpcy5ibG9ja3NpemUgPSBibG9ja3NpemVcbiAgdGhpcy5oYXNoID0gaGFzaFxuICB0aGlzLnNpemUgPSBzaXplc1thbGddXG59XG5cbkhtYWMucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChkYXRhLCBpcGFkKSB7XG4gIGRhdGEuY29weShpcGFkLCB0aGlzLmJsb2Nrc2l6ZSlcbiAgdmFyIGggPSB0aGlzLmhhc2goaXBhZClcbiAgaC5jb3B5KHRoaXMub3BhZCwgdGhpcy5ibG9ja3NpemUpXG4gIHJldHVybiB0aGlzLmhhc2godGhpcy5vcGFkKVxufVxuXG5mdW5jdGlvbiBnZXREaWdlc3QgKGFsZykge1xuICBmdW5jdGlvbiBzaGFGdW5jIChkYXRhKSB7XG4gICAgcmV0dXJuIHNoYShhbGcpLnVwZGF0ZShkYXRhKS5kaWdlc3QoKVxuICB9XG4gIGZ1bmN0aW9uIHJtZDE2MEZ1bmMgKGRhdGEpIHtcbiAgICByZXR1cm4gbmV3IFJJUEVNRDE2MCgpLnVwZGF0ZShkYXRhKS5kaWdlc3QoKVxuICB9XG5cbiAgaWYgKGFsZyA9PT0gJ3JtZDE2MCcgfHwgYWxnID09PSAncmlwZW1kMTYwJykgcmV0dXJuIHJtZDE2MEZ1bmNcbiAgaWYgKGFsZyA9PT0gJ21kNScpIHJldHVybiBtZDVcbiAgcmV0dXJuIHNoYUZ1bmNcbn1cblxuZnVuY3Rpb24gcGJrZGYyIChwYXNzd29yZCwgc2FsdCwgaXRlcmF0aW9ucywga2V5bGVuLCBkaWdlc3QpIHtcbiAgY2hlY2tQYXJhbWV0ZXJzKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4pXG5cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocGFzc3dvcmQpKSBwYXNzd29yZCA9IEJ1ZmZlci5mcm9tKHBhc3N3b3JkLCBkZWZhdWx0RW5jb2RpbmcpXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHNhbHQpKSBzYWx0ID0gQnVmZmVyLmZyb20oc2FsdCwgZGVmYXVsdEVuY29kaW5nKVxuXG4gIGRpZ2VzdCA9IGRpZ2VzdCB8fCAnc2hhMSdcblxuICB2YXIgaG1hYyA9IG5ldyBIbWFjKGRpZ2VzdCwgcGFzc3dvcmQsIHNhbHQubGVuZ3RoKVxuXG4gIHZhciBESyA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShrZXlsZW4pXG4gIHZhciBibG9jazEgPSBCdWZmZXIuYWxsb2NVbnNhZmUoc2FsdC5sZW5ndGggKyA0KVxuICBzYWx0LmNvcHkoYmxvY2sxLCAwLCAwLCBzYWx0Lmxlbmd0aClcblxuICB2YXIgZGVzdFBvcyA9IDBcbiAgdmFyIGhMZW4gPSBzaXplc1tkaWdlc3RdXG4gIHZhciBsID0gTWF0aC5jZWlsKGtleWxlbiAvIGhMZW4pXG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gbDsgaSsrKSB7XG4gICAgYmxvY2sxLndyaXRlVUludDMyQkUoaSwgc2FsdC5sZW5ndGgpXG5cbiAgICB2YXIgVCA9IGhtYWMucnVuKGJsb2NrMSwgaG1hYy5pcGFkMSlcbiAgICB2YXIgVSA9IFRcblxuICAgIGZvciAodmFyIGogPSAxOyBqIDwgaXRlcmF0aW9uczsgaisrKSB7XG4gICAgICBVID0gaG1hYy5ydW4oVSwgaG1hYy5pcGFkMilcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaExlbjsgaysrKSBUW2tdIF49IFVba11cbiAgICB9XG5cbiAgICBULmNvcHkoREssIGRlc3RQb3MpXG4gICAgZGVzdFBvcyArPSBoTGVuXG4gIH1cblxuICByZXR1cm4gREtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwYmtkZjJcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Bia2RmMi9saWIvc3luYy1icm93c2VyLmpzXG4vLyBtb2R1bGUgaWQgPSA2NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///64\n");

/***/ }),
/* 65 */
/***/ (function(module, exports, __webpack_require__) {

eval("var xor = __webpack_require__(17)\nvar Buffer = __webpack_require__(1).Buffer\nvar incr32 = __webpack_require__(66)\n\nfunction getBlock (self) {\n  var out = self._cipher.encryptBlockRaw(self._prev)\n  incr32(self._prev)\n  return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n  var chunkNum = Math.ceil(chunk.length / blockSize)\n  var start = self._cache.length\n  self._cache = Buffer.concat([\n    self._cache,\n    Buffer.allocUnsafe(chunkNum * blockSize)\n  ])\n  for (var i = 0; i < chunkNum; i++) {\n    var out = getBlock(self)\n    var offset = start + i * blockSize\n    self._cache.writeUInt32BE(out[0], offset + 0)\n    self._cache.writeUInt32BE(out[1], offset + 4)\n    self._cache.writeUInt32BE(out[2], offset + 8)\n    self._cache.writeUInt32BE(out[3], offset + 12)\n  }\n  var pad = self._cache.slice(0, chunk.length)\n  self._cache = self._cache.slice(chunk.length)\n  return xor(chunk, pad)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY3RyLmpzPzRhYzgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgaW5jcjMyID0gcmVxdWlyZSgnLi4vaW5jcjMyJylcblxuZnVuY3Rpb24gZ2V0QmxvY2sgKHNlbGYpIHtcbiAgdmFyIG91dCA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2tSYXcoc2VsZi5fcHJldilcbiAgaW5jcjMyKHNlbGYuX3ByZXYpXG4gIHJldHVybiBvdXRcbn1cblxudmFyIGJsb2NrU2l6ZSA9IDE2XG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgY2h1bmspIHtcbiAgdmFyIGNodW5rTnVtID0gTWF0aC5jZWlsKGNodW5rLmxlbmd0aCAvIGJsb2NrU2l6ZSlcbiAgdmFyIHN0YXJ0ID0gc2VsZi5fY2FjaGUubGVuZ3RoXG4gIHNlbGYuX2NhY2hlID0gQnVmZmVyLmNvbmNhdChbXG4gICAgc2VsZi5fY2FjaGUsXG4gICAgQnVmZmVyLmFsbG9jVW5zYWZlKGNodW5rTnVtICogYmxvY2tTaXplKVxuICBdKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNodW5rTnVtOyBpKyspIHtcbiAgICB2YXIgb3V0ID0gZ2V0QmxvY2soc2VsZilcbiAgICB2YXIgb2Zmc2V0ID0gc3RhcnQgKyBpICogYmxvY2tTaXplXG4gICAgc2VsZi5fY2FjaGUud3JpdGVVSW50MzJCRShvdXRbMF0sIG9mZnNldCArIDApXG4gICAgc2VsZi5fY2FjaGUud3JpdGVVSW50MzJCRShvdXRbMV0sIG9mZnNldCArIDQpXG4gICAgc2VsZi5fY2FjaGUud3JpdGVVSW50MzJCRShvdXRbMl0sIG9mZnNldCArIDgpXG4gICAgc2VsZi5fY2FjaGUud3JpdGVVSW50MzJCRShvdXRbM10sIG9mZnNldCArIDEyKVxuICB9XG4gIHZhciBwYWQgPSBzZWxmLl9jYWNoZS5zbGljZSgwLCBjaHVuay5sZW5ndGgpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UoY2h1bmsubGVuZ3RoKVxuICByZXR1cm4geG9yKGNodW5rLCBwYWQpXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jdHIuanNcbi8vIG1vZHVsZSBpZCA9IDY1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///65\n");

/***/ }),
/* 66 */
/***/ (function(module, exports) {

eval("function incr32 (iv) {\n  var len = iv.length\n  var item\n  while (len--) {\n    item = iv.readUInt8(len)\n    if (item === 255) {\n      iv.writeUInt8(0, len)\n    } else {\n      item++\n      iv.writeUInt8(item, len)\n      break\n    }\n  }\n}\nmodule.exports = incr32\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvaW5jcjMyLmpzP2UyYzMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gaW5jcjMyIChpdikge1xuICB2YXIgbGVuID0gaXYubGVuZ3RoXG4gIHZhciBpdGVtXG4gIHdoaWxlIChsZW4tLSkge1xuICAgIGl0ZW0gPSBpdi5yZWFkVUludDgobGVuKVxuICAgIGlmIChpdGVtID09PSAyNTUpIHtcbiAgICAgIGl2LndyaXRlVUludDgoMCwgbGVuKVxuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtKytcbiAgICAgIGl2LndyaXRlVUludDgoaXRlbSwgbGVuKVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gaW5jcjMyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9pbmNyMzIuanNcbi8vIG1vZHVsZSBpZCA9IDY2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///66\n");

/***/ }),
/* 67 */
/***/ (function(module, exports) {

eval("module.exports = {\"aes-128-ecb\":{\"cipher\":\"AES\",\"key\":128,\"iv\":0,\"mode\":\"ECB\",\"type\":\"block\"},\"aes-192-ecb\":{\"cipher\":\"AES\",\"key\":192,\"iv\":0,\"mode\":\"ECB\",\"type\":\"block\"},\"aes-256-ecb\":{\"cipher\":\"AES\",\"key\":256,\"iv\":0,\"mode\":\"ECB\",\"type\":\"block\"},\"aes-128-cbc\":{\"cipher\":\"AES\",\"key\":128,\"iv\":16,\"mode\":\"CBC\",\"type\":\"block\"},\"aes-192-cbc\":{\"cipher\":\"AES\",\"key\":192,\"iv\":16,\"mode\":\"CBC\",\"type\":\"block\"},\"aes-256-cbc\":{\"cipher\":\"AES\",\"key\":256,\"iv\":16,\"mode\":\"CBC\",\"type\":\"block\"},\"aes128\":{\"cipher\":\"AES\",\"key\":128,\"iv\":16,\"mode\":\"CBC\",\"type\":\"block\"},\"aes192\":{\"cipher\":\"AES\",\"key\":192,\"iv\":16,\"mode\":\"CBC\",\"type\":\"block\"},\"aes256\":{\"cipher\":\"AES\",\"key\":256,\"iv\":16,\"mode\":\"CBC\",\"type\":\"block\"},\"aes-128-cfb\":{\"cipher\":\"AES\",\"key\":128,\"iv\":16,\"mode\":\"CFB\",\"type\":\"stream\"},\"aes-192-cfb\":{\"cipher\":\"AES\",\"key\":192,\"iv\":16,\"mode\":\"CFB\",\"type\":\"stream\"},\"aes-256-cfb\":{\"cipher\":\"AES\",\"key\":256,\"iv\":16,\"mode\":\"CFB\",\"type\":\"stream\"},\"aes-128-cfb8\":{\"cipher\":\"AES\",\"key\":128,\"iv\":16,\"mode\":\"CFB8\",\"type\":\"stream\"},\"aes-192-cfb8\":{\"cipher\":\"AES\",\"key\":192,\"iv\":16,\"mode\":\"CFB8\",\"type\":\"stream\"},\"aes-256-cfb8\":{\"cipher\":\"AES\",\"key\":256,\"iv\":16,\"mode\":\"CFB8\",\"type\":\"stream\"},\"aes-128-cfb1\":{\"cipher\":\"AES\",\"key\":128,\"iv\":16,\"mode\":\"CFB1\",\"type\":\"stream\"},\"aes-192-cfb1\":{\"cipher\":\"AES\",\"key\":192,\"iv\":16,\"mode\":\"CFB1\",\"type\":\"stream\"},\"aes-256-cfb1\":{\"cipher\":\"AES\",\"key\":256,\"iv\":16,\"mode\":\"CFB1\",\"type\":\"stream\"},\"aes-128-ofb\":{\"cipher\":\"AES\",\"key\":128,\"iv\":16,\"mode\":\"OFB\",\"type\":\"stream\"},\"aes-192-ofb\":{\"cipher\":\"AES\",\"key\":192,\"iv\":16,\"mode\":\"OFB\",\"type\":\"stream\"},\"aes-256-ofb\":{\"cipher\":\"AES\",\"key\":256,\"iv\":16,\"mode\":\"OFB\",\"type\":\"stream\"},\"aes-128-ctr\":{\"cipher\":\"AES\",\"key\":128,\"iv\":16,\"mode\":\"CTR\",\"type\":\"stream\"},\"aes-192-ctr\":{\"cipher\":\"AES\",\"key\":192,\"iv\":16,\"mode\":\"CTR\",\"type\":\"stream\"},\"aes-256-ctr\":{\"cipher\":\"AES\",\"key\":256,\"iv\":16,\"mode\":\"CTR\",\"type\":\"stream\"},\"aes-128-gcm\":{\"cipher\":\"AES\",\"key\":128,\"iv\":12,\"mode\":\"GCM\",\"type\":\"auth\"},\"aes-192-gcm\":{\"cipher\":\"AES\",\"key\":192,\"iv\":12,\"mode\":\"GCM\",\"type\":\"auth\"},\"aes-256-gcm\":{\"cipher\":\"AES\",\"key\":256,\"iv\":12,\"mode\":\"GCM\",\"type\":\"auth\"}}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvbGlzdC5qc29uP2U5OTQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XCJhZXMtMTI4LWVjYlwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxMjgsXCJpdlwiOjAsXCJtb2RlXCI6XCJFQ0JcIixcInR5cGVcIjpcImJsb2NrXCJ9LFwiYWVzLTE5Mi1lY2JcIjp7XCJjaXBoZXJcIjpcIkFFU1wiLFwia2V5XCI6MTkyLFwiaXZcIjowLFwibW9kZVwiOlwiRUNCXCIsXCJ0eXBlXCI6XCJibG9ja1wifSxcImFlcy0yNTYtZWNiXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjI1NixcIml2XCI6MCxcIm1vZGVcIjpcIkVDQlwiLFwidHlwZVwiOlwiYmxvY2tcIn0sXCJhZXMtMTI4LWNiY1wiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxMjgsXCJpdlwiOjE2LFwibW9kZVwiOlwiQ0JDXCIsXCJ0eXBlXCI6XCJibG9ja1wifSxcImFlcy0xOTItY2JjXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjE5MixcIml2XCI6MTYsXCJtb2RlXCI6XCJDQkNcIixcInR5cGVcIjpcImJsb2NrXCJ9LFwiYWVzLTI1Ni1jYmNcIjp7XCJjaXBoZXJcIjpcIkFFU1wiLFwia2V5XCI6MjU2LFwiaXZcIjoxNixcIm1vZGVcIjpcIkNCQ1wiLFwidHlwZVwiOlwiYmxvY2tcIn0sXCJhZXMxMjhcIjp7XCJjaXBoZXJcIjpcIkFFU1wiLFwia2V5XCI6MTI4LFwiaXZcIjoxNixcIm1vZGVcIjpcIkNCQ1wiLFwidHlwZVwiOlwiYmxvY2tcIn0sXCJhZXMxOTJcIjp7XCJjaXBoZXJcIjpcIkFFU1wiLFwia2V5XCI6MTkyLFwiaXZcIjoxNixcIm1vZGVcIjpcIkNCQ1wiLFwidHlwZVwiOlwiYmxvY2tcIn0sXCJhZXMyNTZcIjp7XCJjaXBoZXJcIjpcIkFFU1wiLFwia2V5XCI6MjU2LFwiaXZcIjoxNixcIm1vZGVcIjpcIkNCQ1wiLFwidHlwZVwiOlwiYmxvY2tcIn0sXCJhZXMtMTI4LWNmYlwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxMjgsXCJpdlwiOjE2LFwibW9kZVwiOlwiQ0ZCXCIsXCJ0eXBlXCI6XCJzdHJlYW1cIn0sXCJhZXMtMTkyLWNmYlwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxOTIsXCJpdlwiOjE2LFwibW9kZVwiOlwiQ0ZCXCIsXCJ0eXBlXCI6XCJzdHJlYW1cIn0sXCJhZXMtMjU2LWNmYlwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoyNTYsXCJpdlwiOjE2LFwibW9kZVwiOlwiQ0ZCXCIsXCJ0eXBlXCI6XCJzdHJlYW1cIn0sXCJhZXMtMTI4LWNmYjhcIjp7XCJjaXBoZXJcIjpcIkFFU1wiLFwia2V5XCI6MTI4LFwiaXZcIjoxNixcIm1vZGVcIjpcIkNGQjhcIixcInR5cGVcIjpcInN0cmVhbVwifSxcImFlcy0xOTItY2ZiOFwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxOTIsXCJpdlwiOjE2LFwibW9kZVwiOlwiQ0ZCOFwiLFwidHlwZVwiOlwic3RyZWFtXCJ9LFwiYWVzLTI1Ni1jZmI4XCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjI1NixcIml2XCI6MTYsXCJtb2RlXCI6XCJDRkI4XCIsXCJ0eXBlXCI6XCJzdHJlYW1cIn0sXCJhZXMtMTI4LWNmYjFcIjp7XCJjaXBoZXJcIjpcIkFFU1wiLFwia2V5XCI6MTI4LFwiaXZcIjoxNixcIm1vZGVcIjpcIkNGQjFcIixcInR5cGVcIjpcInN0cmVhbVwifSxcImFlcy0xOTItY2ZiMVwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxOTIsXCJpdlwiOjE2LFwibW9kZVwiOlwiQ0ZCMVwiLFwidHlwZVwiOlwic3RyZWFtXCJ9LFwiYWVzLTI1Ni1jZmIxXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjI1NixcIml2XCI6MTYsXCJtb2RlXCI6XCJDRkIxXCIsXCJ0eXBlXCI6XCJzdHJlYW1cIn0sXCJhZXMtMTI4LW9mYlwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxMjgsXCJpdlwiOjE2LFwibW9kZVwiOlwiT0ZCXCIsXCJ0eXBlXCI6XCJzdHJlYW1cIn0sXCJhZXMtMTkyLW9mYlwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxOTIsXCJpdlwiOjE2LFwibW9kZVwiOlwiT0ZCXCIsXCJ0eXBlXCI6XCJzdHJlYW1cIn0sXCJhZXMtMjU2LW9mYlwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoyNTYsXCJpdlwiOjE2LFwibW9kZVwiOlwiT0ZCXCIsXCJ0eXBlXCI6XCJzdHJlYW1cIn0sXCJhZXMtMTI4LWN0clwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxMjgsXCJpdlwiOjE2LFwibW9kZVwiOlwiQ1RSXCIsXCJ0eXBlXCI6XCJzdHJlYW1cIn0sXCJhZXMtMTkyLWN0clwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxOTIsXCJpdlwiOjE2LFwibW9kZVwiOlwiQ1RSXCIsXCJ0eXBlXCI6XCJzdHJlYW1cIn0sXCJhZXMtMjU2LWN0clwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoyNTYsXCJpdlwiOjE2LFwibW9kZVwiOlwiQ1RSXCIsXCJ0eXBlXCI6XCJzdHJlYW1cIn0sXCJhZXMtMTI4LWdjbVwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxMjgsXCJpdlwiOjEyLFwibW9kZVwiOlwiR0NNXCIsXCJ0eXBlXCI6XCJhdXRoXCJ9LFwiYWVzLTE5Mi1nY21cIjp7XCJjaXBoZXJcIjpcIkFFU1wiLFwia2V5XCI6MTkyLFwiaXZcIjoxMixcIm1vZGVcIjpcIkdDTVwiLFwidHlwZVwiOlwiYXV0aFwifSxcImFlcy0yNTYtZ2NtXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjI1NixcIml2XCI6MTIsXCJtb2RlXCI6XCJHQ01cIixcInR5cGVcIjpcImF1dGhcIn19XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvbGlzdC5qc29uXG4vLyBtb2R1bGUgaWQgPSA2N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///67\n");

/***/ }),
/* 68 */
/***/ (function(module, exports, __webpack_require__) {

eval("var aes = __webpack_require__(24)\nvar Buffer = __webpack_require__(1).Buffer\nvar Transform = __webpack_require__(11)\nvar inherits = __webpack_require__(0)\nvar GHASH = __webpack_require__(162)\nvar xor = __webpack_require__(17)\nvar incr32 = __webpack_require__(66)\n\nfunction xorTest (a, b) {\n  var out = 0\n  if (a.length !== b.length) out++\n\n  var len = Math.min(a.length, b.length)\n  for (var i = 0; i < len; ++i) {\n    out += (a[i] ^ b[i])\n  }\n\n  return out\n}\n\nfunction calcIv (self, iv, ck) {\n  if (iv.length === 12) {\n    self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n    return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n  }\n  var ghash = new GHASH(ck)\n  var len = iv.length\n  var toPad = len % 16\n  ghash.update(iv)\n  if (toPad) {\n    toPad = 16 - toPad\n    ghash.update(Buffer.alloc(toPad, 0))\n  }\n  ghash.update(Buffer.alloc(8, 0))\n  var ivBits = len * 8\n  var tail = Buffer.alloc(8)\n  tail.writeUIntBE(ivBits, 0, 8)\n  ghash.update(tail)\n  self._finID = ghash.state\n  var out = Buffer.from(self._finID)\n  incr32(out)\n  return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n  Transform.call(this)\n\n  var h = Buffer.alloc(4, 0)\n\n  this._cipher = new aes.AES(key)\n  var ck = this._cipher.encryptBlock(h)\n  this._ghash = new GHASH(ck)\n  iv = calcIv(this, iv, ck)\n\n  this._prev = Buffer.from(iv)\n  this._cache = Buffer.allocUnsafe(0)\n  this._secCache = Buffer.allocUnsafe(0)\n  this._decrypt = decrypt\n  this._alen = 0\n  this._len = 0\n  this._mode = mode\n\n  this._authTag = null\n  this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n  if (!this._called && this._alen) {\n    var rump = 16 - (this._alen % 16)\n    if (rump < 16) {\n      rump = Buffer.alloc(rump, 0)\n      this._ghash.update(rump)\n    }\n  }\n\n  this._called = true\n  var out = this._mode.encrypt(this, chunk)\n  if (this._decrypt) {\n    this._ghash.update(chunk)\n  } else {\n    this._ghash.update(out)\n  }\n  this._len += chunk.length\n  return out\n}\n\nStreamCipher.prototype._final = function () {\n  if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n  var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n  if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n  this._authTag = tag\n  this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n  if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n  return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n  if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n  this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n  if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n  this._ghash.update(buf)\n  this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYXV0aENpcGhlci5qcz9mZjJkIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgR0hBU0ggPSByZXF1aXJlKCcuL2doYXNoJylcbnZhciB4b3IgPSByZXF1aXJlKCdidWZmZXIteG9yJylcbnZhciBpbmNyMzIgPSByZXF1aXJlKCcuL2luY3IzMicpXG5cbmZ1bmN0aW9uIHhvclRlc3QgKGEsIGIpIHtcbiAgdmFyIG91dCA9IDBcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgb3V0KytcblxuICB2YXIgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgb3V0ICs9IChhW2ldIF4gYltpXSlcbiAgfVxuXG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gY2FsY0l2IChzZWxmLCBpdiwgY2spIHtcbiAgaWYgKGl2Lmxlbmd0aCA9PT0gMTIpIHtcbiAgICBzZWxmLl9maW5JRCA9IEJ1ZmZlci5jb25jYXQoW2l2LCBCdWZmZXIuZnJvbShbMCwgMCwgMCwgMV0pXSlcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbaXYsIEJ1ZmZlci5mcm9tKFswLCAwLCAwLCAyXSldKVxuICB9XG4gIHZhciBnaGFzaCA9IG5ldyBHSEFTSChjaylcbiAgdmFyIGxlbiA9IGl2Lmxlbmd0aFxuICB2YXIgdG9QYWQgPSBsZW4gJSAxNlxuICBnaGFzaC51cGRhdGUoaXYpXG4gIGlmICh0b1BhZCkge1xuICAgIHRvUGFkID0gMTYgLSB0b1BhZFxuICAgIGdoYXNoLnVwZGF0ZShCdWZmZXIuYWxsb2ModG9QYWQsIDApKVxuICB9XG4gIGdoYXNoLnVwZGF0ZShCdWZmZXIuYWxsb2MoOCwgMCkpXG4gIHZhciBpdkJpdHMgPSBsZW4gKiA4XG4gIHZhciB0YWlsID0gQnVmZmVyLmFsbG9jKDgpXG4gIHRhaWwud3JpdGVVSW50QkUoaXZCaXRzLCAwLCA4KVxuICBnaGFzaC51cGRhdGUodGFpbClcbiAgc2VsZi5fZmluSUQgPSBnaGFzaC5zdGF0ZVxuICB2YXIgb3V0ID0gQnVmZmVyLmZyb20oc2VsZi5fZmluSUQpXG4gIGluY3IzMihvdXQpXG4gIHJldHVybiBvdXRcbn1cbmZ1bmN0aW9uIFN0cmVhbUNpcGhlciAobW9kZSwga2V5LCBpdiwgZGVjcnlwdCkge1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuXG4gIHZhciBoID0gQnVmZmVyLmFsbG9jKDQsIDApXG5cbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB2YXIgY2sgPSB0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGgpXG4gIHRoaXMuX2doYXNoID0gbmV3IEdIQVNIKGNrKVxuICBpdiA9IGNhbGNJdih0aGlzLCBpdiwgY2spXG5cbiAgdGhpcy5fcHJldiA9IEJ1ZmZlci5mcm9tKGl2KVxuICB0aGlzLl9jYWNoZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxuICB0aGlzLl9zZWNDYWNoZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxuICB0aGlzLl9kZWNyeXB0ID0gZGVjcnlwdFxuICB0aGlzLl9hbGVuID0gMFxuICB0aGlzLl9sZW4gPSAwXG4gIHRoaXMuX21vZGUgPSBtb2RlXG5cbiAgdGhpcy5fYXV0aFRhZyA9IG51bGxcbiAgdGhpcy5fY2FsbGVkID0gZmFsc2Vcbn1cblxuaW5oZXJpdHMoU3RyZWFtQ2lwaGVyLCBUcmFuc2Zvcm0pXG5cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChjaHVuaykge1xuICBpZiAoIXRoaXMuX2NhbGxlZCAmJiB0aGlzLl9hbGVuKSB7XG4gICAgdmFyIHJ1bXAgPSAxNiAtICh0aGlzLl9hbGVuICUgMTYpXG4gICAgaWYgKHJ1bXAgPCAxNikge1xuICAgICAgcnVtcCA9IEJ1ZmZlci5hbGxvYyhydW1wLCAwKVxuICAgICAgdGhpcy5fZ2hhc2gudXBkYXRlKHJ1bXApXG4gICAgfVxuICB9XG5cbiAgdGhpcy5fY2FsbGVkID0gdHJ1ZVxuICB2YXIgb3V0ID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICBpZiAodGhpcy5fZGVjcnlwdCkge1xuICAgIHRoaXMuX2doYXNoLnVwZGF0ZShjaHVuaylcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUob3V0KVxuICB9XG4gIHRoaXMuX2xlbiArPSBjaHVuay5sZW5ndGhcbiAgcmV0dXJuIG91dFxufVxuXG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuX2RlY3J5cHQgJiYgIXRoaXMuX2F1dGhUYWcpIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgc3RhdGUgb3IgdW5hYmxlIHRvIGF1dGhlbnRpY2F0ZSBkYXRhJylcblxuICB2YXIgdGFnID0geG9yKHRoaXMuX2doYXNoLmZpbmFsKHRoaXMuX2FsZW4gKiA4LCB0aGlzLl9sZW4gKiA4KSwgdGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayh0aGlzLl9maW5JRCkpXG4gIGlmICh0aGlzLl9kZWNyeXB0ICYmIHhvclRlc3QodGFnLCB0aGlzLl9hdXRoVGFnKSkgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEnKVxuXG4gIHRoaXMuX2F1dGhUYWcgPSB0YWdcbiAgdGhpcy5fY2lwaGVyLnNjcnViKClcbn1cblxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5nZXRBdXRoVGFnID0gZnVuY3Rpb24gZ2V0QXV0aFRhZyAoKSB7XG4gIGlmICh0aGlzLl9kZWNyeXB0IHx8ICFCdWZmZXIuaXNCdWZmZXIodGhpcy5fYXV0aFRhZykpIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUnKVxuXG4gIHJldHVybiB0aGlzLl9hdXRoVGFnXG59XG5cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuc2V0QXV0aFRhZyA9IGZ1bmN0aW9uIHNldEF1dGhUYWcgKHRhZykge1xuICBpZiAoIXRoaXMuX2RlY3J5cHQpIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBzZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUnKVxuXG4gIHRoaXMuX2F1dGhUYWcgPSB0YWdcbn1cblxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5zZXRBQUQgPSBmdW5jdGlvbiBzZXRBQUQgKGJ1Zikge1xuICBpZiAodGhpcy5fY2FsbGVkKSB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gc2V0IEFBRCBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG5cbiAgdGhpcy5fZ2hhc2gudXBkYXRlKGJ1ZilcbiAgdGhpcy5fYWxlbiArPSBidWYubGVuZ3RoXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9hdXRoQ2lwaGVyLmpzXG4vLyBtb2R1bGUgaWQgPSA2OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///68\n");

/***/ }),
/* 69 */
/***/ (function(module, exports, __webpack_require__) {

eval("var aes = __webpack_require__(24)\nvar Buffer = __webpack_require__(1).Buffer\nvar Transform = __webpack_require__(11)\nvar inherits = __webpack_require__(0)\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n  Transform.call(this)\n\n  this._cipher = new aes.AES(key)\n  this._prev = Buffer.from(iv)\n  this._cache = Buffer.allocUnsafe(0)\n  this._secCache = Buffer.allocUnsafe(0)\n  this._decrypt = decrypt\n  this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n  return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n  this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvc3RyZWFtQ2lwaGVyLmpzP2VhMTUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFlcyA9IHJlcXVpcmUoJy4vYWVzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcblxuZnVuY3Rpb24gU3RyZWFtQ2lwaGVyIChtb2RlLCBrZXksIGl2LCBkZWNyeXB0KSB7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG5cbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gQnVmZmVyLmZyb20oaXYpXG4gIHRoaXMuX2NhY2hlID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApXG4gIHRoaXMuX3NlY0NhY2hlID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApXG4gIHRoaXMuX2RlY3J5cHQgPSBkZWNyeXB0XG4gIHRoaXMuX21vZGUgPSBtb2RlXG59XG5cbmluaGVyaXRzKFN0cmVhbUNpcGhlciwgVHJhbnNmb3JtKVxuXG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgcmV0dXJuIHRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLCBjaHVuaywgdGhpcy5fZGVjcnlwdClcbn1cblxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2NpcGhlci5zY3J1YigpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9zdHJlYW1DaXBoZXIuanNcbi8vIG1vZHVsZSBpZCA9IDY5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///69\n");

/***/ }),
/* 70 */
/***/ (function(module, exports, __webpack_require__) {

eval("var randomBytes = __webpack_require__(13);\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = __webpack_require__(4);\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = __webpack_require__(71);\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n  if (primes !== null)\n    return primes;\n\n  var limit = 0x100000;\n  var res = [];\n  res[0] = 2;\n  for (var i = 1, k = 3; k < limit; k += 2) {\n    var sqrt = Math.ceil(Math.sqrt(k));\n    for (var j = 0; j < i && res[j] <= sqrt; j++)\n      if (k % res[j] === 0)\n        break;\n\n    if (i !== j && res[j] <= sqrt)\n      continue;\n\n    res[i++] = k;\n  }\n  primes = res;\n  return res;\n}\n\nfunction simpleSieve(p) {\n  var primes = _getPrimes();\n\n  for (var i = 0; i < primes.length; i++)\n    if (p.modn(primes[i]) === 0) {\n      if (p.cmpn(primes[i]) === 0) {\n        return true;\n      } else {\n        return false;\n      }\n    }\n\n  return true;\n}\n\nfunction fermatTest(p) {\n  var red = BN.mont(p);\n  return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n  if (bits < 16) {\n    // this is what openssl does\n    if (gen === 2 || gen === 5) {\n      return new BN([0x8c, 0x7b]);\n    } else {\n      return new BN([0x8c, 0x27]);\n    }\n  }\n  gen = new BN(gen);\n\n  var num, n2;\n\n  while (true) {\n    num = new BN(randomBytes(Math.ceil(bits / 8)));\n    while (num.bitLength() > bits) {\n      num.ishrn(1);\n    }\n    if (num.isEven()) {\n      num.iadd(ONE);\n    }\n    if (!num.testn(1)) {\n      num.iadd(TWO);\n    }\n    if (!gen.cmp(TWO)) {\n      while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n        num.iadd(FOUR);\n      }\n    } else if (!gen.cmp(FIVE)) {\n      while (num.mod(TEN).cmp(THREE)) {\n        num.iadd(FOUR);\n      }\n    }\n    n2 = num.shrn(1);\n    if (simpleSieve(n2) && simpleSieve(num) &&\n      fermatTest(n2) && fermatTest(num) &&\n      millerRabin.test(n2) && millerRabin.test(num)) {\n      return num;\n    }\n  }\n\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbGliL2dlbmVyYXRlUHJpbWUuanM/ZGRmYyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpO1xubW9kdWxlLmV4cG9ydHMgPSBmaW5kUHJpbWU7XG5maW5kUHJpbWUuc2ltcGxlU2lldmUgPSBzaW1wbGVTaWV2ZTtcbmZpbmRQcmltZS5mZXJtYXRUZXN0ID0gZmVybWF0VGVzdDtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgVFdFTlRZRk9VUiA9IG5ldyBCTigyNCk7XG52YXIgTWlsbGVyUmFiaW4gPSByZXF1aXJlKCdtaWxsZXItcmFiaW4nKTtcbnZhciBtaWxsZXJSYWJpbiA9IG5ldyBNaWxsZXJSYWJpbigpO1xudmFyIE9ORSA9IG5ldyBCTigxKTtcbnZhciBUV08gPSBuZXcgQk4oMik7XG52YXIgRklWRSA9IG5ldyBCTig1KTtcbnZhciBTSVhURUVOID0gbmV3IEJOKDE2KTtcbnZhciBFSUdIVCA9IG5ldyBCTig4KTtcbnZhciBURU4gPSBuZXcgQk4oMTApO1xudmFyIFRIUkVFID0gbmV3IEJOKDMpO1xudmFyIFNFVkVOID0gbmV3IEJOKDcpO1xudmFyIEVMRVZFTiA9IG5ldyBCTigxMSk7XG52YXIgRk9VUiA9IG5ldyBCTig0KTtcbnZhciBUV0VMVkUgPSBuZXcgQk4oMTIpO1xudmFyIHByaW1lcyA9IG51bGw7XG5cbmZ1bmN0aW9uIF9nZXRQcmltZXMoKSB7XG4gIGlmIChwcmltZXMgIT09IG51bGwpXG4gICAgcmV0dXJuIHByaW1lcztcblxuICB2YXIgbGltaXQgPSAweDEwMDAwMDtcbiAgdmFyIHJlcyA9IFtdO1xuICByZXNbMF0gPSAyO1xuICBmb3IgKHZhciBpID0gMSwgayA9IDM7IGsgPCBsaW1pdDsgayArPSAyKSB7XG4gICAgdmFyIHNxcnQgPSBNYXRoLmNlaWwoTWF0aC5zcXJ0KGspKTtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGkgJiYgcmVzW2pdIDw9IHNxcnQ7IGorKylcbiAgICAgIGlmIChrICUgcmVzW2pdID09PSAwKVxuICAgICAgICBicmVhaztcblxuICAgIGlmIChpICE9PSBqICYmIHJlc1tqXSA8PSBzcXJ0KVxuICAgICAgY29udGludWU7XG5cbiAgICByZXNbaSsrXSA9IGs7XG4gIH1cbiAgcHJpbWVzID0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBzaW1wbGVTaWV2ZShwKSB7XG4gIHZhciBwcmltZXMgPSBfZ2V0UHJpbWVzKCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmltZXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKHAubW9kbihwcmltZXNbaV0pID09PSAwKSB7XG4gICAgICBpZiAocC5jbXBuKHByaW1lc1tpXSkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBmZXJtYXRUZXN0KHApIHtcbiAgdmFyIHJlZCA9IEJOLm1vbnQocCk7XG4gIHJldHVybiBUV08udG9SZWQocmVkKS5yZWRQb3cocC5zdWJuKDEpKS5mcm9tUmVkKCkuY21wbigxKSA9PT0gMDtcbn1cblxuZnVuY3Rpb24gZmluZFByaW1lKGJpdHMsIGdlbikge1xuICBpZiAoYml0cyA8IDE2KSB7XG4gICAgLy8gdGhpcyBpcyB3aGF0IG9wZW5zc2wgZG9lc1xuICAgIGlmIChnZW4gPT09IDIgfHwgZ2VuID09PSA1KSB7XG4gICAgICByZXR1cm4gbmV3IEJOKFsweDhjLCAweDdiXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgQk4oWzB4OGMsIDB4MjddKTtcbiAgICB9XG4gIH1cbiAgZ2VuID0gbmV3IEJOKGdlbik7XG5cbiAgdmFyIG51bSwgbjI7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBudW0gPSBuZXcgQk4ocmFuZG9tQnl0ZXMoTWF0aC5jZWlsKGJpdHMgLyA4KSkpO1xuICAgIHdoaWxlIChudW0uYml0TGVuZ3RoKCkgPiBiaXRzKSB7XG4gICAgICBudW0uaXNocm4oMSk7XG4gICAgfVxuICAgIGlmIChudW0uaXNFdmVuKCkpIHtcbiAgICAgIG51bS5pYWRkKE9ORSk7XG4gICAgfVxuICAgIGlmICghbnVtLnRlc3RuKDEpKSB7XG4gICAgICBudW0uaWFkZChUV08pO1xuICAgIH1cbiAgICBpZiAoIWdlbi5jbXAoVFdPKSkge1xuICAgICAgd2hpbGUgKG51bS5tb2QoVFdFTlRZRk9VUikuY21wKEVMRVZFTikpIHtcbiAgICAgICAgbnVtLmlhZGQoRk9VUik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghZ2VuLmNtcChGSVZFKSkge1xuICAgICAgd2hpbGUgKG51bS5tb2QoVEVOKS5jbXAoVEhSRUUpKSB7XG4gICAgICAgIG51bS5pYWRkKEZPVVIpO1xuICAgICAgfVxuICAgIH1cbiAgICBuMiA9IG51bS5zaHJuKDEpO1xuICAgIGlmIChzaW1wbGVTaWV2ZShuMikgJiYgc2ltcGxlU2lldmUobnVtKSAmJlxuICAgICAgZmVybWF0VGVzdChuMikgJiYgZmVybWF0VGVzdChudW0pICYmXG4gICAgICBtaWxsZXJSYWJpbi50ZXN0KG4yKSAmJiBtaWxsZXJSYWJpbi50ZXN0KG51bSkpIHtcbiAgICAgIHJldHVybiBudW07XG4gICAgfVxuICB9XG5cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2xpYi9nZW5lcmF0ZVByaW1lLmpzXG4vLyBtb2R1bGUgaWQgPSA3MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///70\n");

/***/ }),
/* 71 */
/***/ (function(module, exports, __webpack_require__) {

eval("var bn = __webpack_require__(4);\nvar brorand = __webpack_require__(72);\n\nfunction MillerRabin(rand) {\n  this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n  return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n  var len = n.bitLength();\n  var min_bytes = Math.ceil(len / 8);\n\n  // Generage random bytes until a number less than n is found.\n  // This ensures that 0..n-1 have an equal probability of being selected.\n  do\n    var a = new bn(this.rand.generate(min_bytes));\n  while (a.cmp(n) >= 0);\n\n  return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n  // Generate a random number greater than or equal to start and less than stop.\n  var size = stop.sub(start);\n  return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n  var len = n.bitLength();\n  var red = bn.mont(n);\n  var rone = new bn(1).toRed(red);\n\n  if (!k)\n    k = Math.max(1, (len / 48) | 0);\n\n  // Find d and s, (n - 1) = (2 ^ s) * d;\n  var n1 = n.subn(1);\n  for (var s = 0; !n1.testn(s); s++) {}\n  var d = n.shrn(s);\n\n  var rn1 = n1.toRed(red);\n\n  var prime = true;\n  for (; k > 0; k--) {\n    var a = this._randrange(new bn(2), n1);\n    if (cb)\n      cb(a);\n\n    var x = a.toRed(red).redPow(d);\n    if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n      continue;\n\n    for (var i = 1; i < s; i++) {\n      x = x.redSqr();\n\n      if (x.cmp(rone) === 0)\n        return false;\n      if (x.cmp(rn1) === 0)\n        break;\n    }\n\n    if (i === s)\n      return false;\n  }\n\n  return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n  var len = n.bitLength();\n  var red = bn.mont(n);\n  var rone = new bn(1).toRed(red);\n\n  if (!k)\n    k = Math.max(1, (len / 48) | 0);\n\n  // Find d and s, (n - 1) = (2 ^ s) * d;\n  var n1 = n.subn(1);\n  for (var s = 0; !n1.testn(s); s++) {}\n  var d = n.shrn(s);\n\n  var rn1 = n1.toRed(red);\n\n  for (; k > 0; k--) {\n    var a = this._randrange(new bn(2), n1);\n\n    var g = n.gcd(a);\n    if (g.cmpn(1) !== 0)\n      return g;\n\n    var x = a.toRed(red).redPow(d);\n    if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n      continue;\n\n    for (var i = 1; i < s; i++) {\n      x = x.redSqr();\n\n      if (x.cmp(rone) === 0)\n        return x.fromRed().subn(1).gcd(n);\n      if (x.cmp(rn1) === 0)\n        break;\n    }\n\n    if (i === s) {\n      x = x.redSqr();\n      return x.fromRed().subn(1).gcd(n);\n    }\n  }\n\n  return false;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbWlsbGVyLXJhYmluL2xpYi9tci5qcz82OGFkIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBibiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgYnJvcmFuZCA9IHJlcXVpcmUoJ2Jyb3JhbmQnKTtcblxuZnVuY3Rpb24gTWlsbGVyUmFiaW4ocmFuZCkge1xuICB0aGlzLnJhbmQgPSByYW5kIHx8IG5ldyBicm9yYW5kLlJhbmQoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gTWlsbGVyUmFiaW47XG5cbk1pbGxlclJhYmluLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShyYW5kKSB7XG4gIHJldHVybiBuZXcgTWlsbGVyUmFiaW4ocmFuZCk7XG59O1xuXG5NaWxsZXJSYWJpbi5wcm90b3R5cGUuX3JhbmRiZWxvdyA9IGZ1bmN0aW9uIF9yYW5kYmVsb3cobikge1xuICB2YXIgbGVuID0gbi5iaXRMZW5ndGgoKTtcbiAgdmFyIG1pbl9ieXRlcyA9IE1hdGguY2VpbChsZW4gLyA4KTtcblxuICAvLyBHZW5lcmFnZSByYW5kb20gYnl0ZXMgdW50aWwgYSBudW1iZXIgbGVzcyB0aGFuIG4gaXMgZm91bmQuXG4gIC8vIFRoaXMgZW5zdXJlcyB0aGF0IDAuLm4tMSBoYXZlIGFuIGVxdWFsIHByb2JhYmlsaXR5IG9mIGJlaW5nIHNlbGVjdGVkLlxuICBkb1xuICAgIHZhciBhID0gbmV3IGJuKHRoaXMucmFuZC5nZW5lcmF0ZShtaW5fYnl0ZXMpKTtcbiAgd2hpbGUgKGEuY21wKG4pID49IDApO1xuXG4gIHJldHVybiBhO1xufTtcblxuTWlsbGVyUmFiaW4ucHJvdG90eXBlLl9yYW5kcmFuZ2UgPSBmdW5jdGlvbiBfcmFuZHJhbmdlKHN0YXJ0LCBzdG9wKSB7XG4gIC8vIEdlbmVyYXRlIGEgcmFuZG9tIG51bWJlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gc3RhcnQgYW5kIGxlc3MgdGhhbiBzdG9wLlxuICB2YXIgc2l6ZSA9IHN0b3Auc3ViKHN0YXJ0KTtcbiAgcmV0dXJuIHN0YXJ0LmFkZCh0aGlzLl9yYW5kYmVsb3coc2l6ZSkpO1xufTtcblxuTWlsbGVyUmFiaW4ucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbiB0ZXN0KG4sIGssIGNiKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgcmVkID0gYm4ubW9udChuKTtcbiAgdmFyIHJvbmUgPSBuZXcgYm4oMSkudG9SZWQocmVkKTtcblxuICBpZiAoIWspXG4gICAgayA9IE1hdGgubWF4KDEsIChsZW4gLyA0OCkgfCAwKTtcblxuICAvLyBGaW5kIGQgYW5kIHMsIChuIC0gMSkgPSAoMiBeIHMpICogZDtcbiAgdmFyIG4xID0gbi5zdWJuKDEpO1xuICBmb3IgKHZhciBzID0gMDsgIW4xLnRlc3RuKHMpOyBzKyspIHt9XG4gIHZhciBkID0gbi5zaHJuKHMpO1xuXG4gIHZhciBybjEgPSBuMS50b1JlZChyZWQpO1xuXG4gIHZhciBwcmltZSA9IHRydWU7XG4gIGZvciAoOyBrID4gMDsgay0tKSB7XG4gICAgdmFyIGEgPSB0aGlzLl9yYW5kcmFuZ2UobmV3IGJuKDIpLCBuMSk7XG4gICAgaWYgKGNiKVxuICAgICAgY2IoYSk7XG5cbiAgICB2YXIgeCA9IGEudG9SZWQocmVkKS5yZWRQb3coZCk7XG4gICAgaWYgKHguY21wKHJvbmUpID09PSAwIHx8IHguY21wKHJuMSkgPT09IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgczsgaSsrKSB7XG4gICAgICB4ID0geC5yZWRTcXIoKTtcblxuICAgICAgaWYgKHguY21wKHJvbmUpID09PSAwKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoeC5jbXAocm4xKSA9PT0gMClcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IHMpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gcHJpbWU7XG59O1xuXG5NaWxsZXJSYWJpbi5wcm90b3R5cGUuZ2V0RGl2aXNvciA9IGZ1bmN0aW9uIGdldERpdmlzb3Iobiwgaykge1xuICB2YXIgbGVuID0gbi5iaXRMZW5ndGgoKTtcbiAgdmFyIHJlZCA9IGJuLm1vbnQobik7XG4gIHZhciByb25lID0gbmV3IGJuKDEpLnRvUmVkKHJlZCk7XG5cbiAgaWYgKCFrKVxuICAgIGsgPSBNYXRoLm1heCgxLCAobGVuIC8gNDgpIHwgMCk7XG5cbiAgLy8gRmluZCBkIGFuZCBzLCAobiAtIDEpID0gKDIgXiBzKSAqIGQ7XG4gIHZhciBuMSA9IG4uc3VibigxKTtcbiAgZm9yICh2YXIgcyA9IDA7ICFuMS50ZXN0bihzKTsgcysrKSB7fVxuICB2YXIgZCA9IG4uc2hybihzKTtcblxuICB2YXIgcm4xID0gbjEudG9SZWQocmVkKTtcblxuICBmb3IgKDsgayA+IDA7IGstLSkge1xuICAgIHZhciBhID0gdGhpcy5fcmFuZHJhbmdlKG5ldyBibigyKSwgbjEpO1xuXG4gICAgdmFyIGcgPSBuLmdjZChhKTtcbiAgICBpZiAoZy5jbXBuKDEpICE9PSAwKVxuICAgICAgcmV0dXJuIGc7XG5cbiAgICB2YXIgeCA9IGEudG9SZWQocmVkKS5yZWRQb3coZCk7XG4gICAgaWYgKHguY21wKHJvbmUpID09PSAwIHx8IHguY21wKHJuMSkgPT09IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgczsgaSsrKSB7XG4gICAgICB4ID0geC5yZWRTcXIoKTtcblxuICAgICAgaWYgKHguY21wKHJvbmUpID09PSAwKVxuICAgICAgICByZXR1cm4geC5mcm9tUmVkKCkuc3VibigxKS5nY2Qobik7XG4gICAgICBpZiAoeC5jbXAocm4xKSA9PT0gMClcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IHMpIHtcbiAgICAgIHggPSB4LnJlZFNxcigpO1xuICAgICAgcmV0dXJuIHguZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKG4pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9taWxsZXItcmFiaW4vbGliL21yLmpzXG4vLyBtb2R1bGUgaWQgPSA3MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///71\n");

/***/ }),
/* 72 */
/***/ (function(module, exports, __webpack_require__) {

eval("var r;\n\nmodule.exports = function rand(len) {\n  if (!r)\n    r = new Rand(null);\n\n  return r.generate(len);\n};\n\nfunction Rand(rand) {\n  this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n  return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n  if (this.rand.getBytes)\n    return this.rand.getBytes(n);\n\n  var res = new Uint8Array(n);\n  for (var i = 0; i < res.length; i++)\n    res[i] = this.rand.getByte();\n  return res;\n};\n\nif (typeof self === 'object') {\n  if (self.crypto && self.crypto.getRandomValues) {\n    // Modern browsers\n    Rand.prototype._rand = function _rand(n) {\n      var arr = new Uint8Array(n);\n      self.crypto.getRandomValues(arr);\n      return arr;\n    };\n  } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n    // IE\n    Rand.prototype._rand = function _rand(n) {\n      var arr = new Uint8Array(n);\n      self.msCrypto.getRandomValues(arr);\n      return arr;\n    };\n\n  // Safari's WebWorkers do not have `crypto`\n  } else if (typeof window === 'object') {\n    // Old junk\n    Rand.prototype._rand = function() {\n      throw new Error('Not implemented yet');\n    };\n  }\n} else {\n  // Node.js or Web worker with no crypto support\n  try {\n    var crypto = __webpack_require__(168);\n    if (typeof crypto.randomBytes !== 'function')\n      throw new Error('Not supported');\n\n    Rand.prototype._rand = function _rand(n) {\n      return crypto.randomBytes(n);\n    };\n  } catch (e) {\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYnJvcmFuZC9pbmRleC5qcz9iNzE4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciByO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHJhbmQobGVuKSB7XG4gIGlmICghcilcbiAgICByID0gbmV3IFJhbmQobnVsbCk7XG5cbiAgcmV0dXJuIHIuZ2VuZXJhdGUobGVuKTtcbn07XG5cbmZ1bmN0aW9uIFJhbmQocmFuZCkge1xuICB0aGlzLnJhbmQgPSByYW5kO1xufVxubW9kdWxlLmV4cG9ydHMuUmFuZCA9IFJhbmQ7XG5cblJhbmQucHJvdG90eXBlLmdlbmVyYXRlID0gZnVuY3Rpb24gZ2VuZXJhdGUobGVuKSB7XG4gIHJldHVybiB0aGlzLl9yYW5kKGxlbik7XG59O1xuXG4vLyBFbXVsYXRlIGNyeXB0byBBUEkgdXNpbmcgcmFuZHlcblJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICBpZiAodGhpcy5yYW5kLmdldEJ5dGVzKVxuICAgIHJldHVybiB0aGlzLnJhbmQuZ2V0Qnl0ZXMobik7XG5cbiAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KG4pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcy5sZW5ndGg7IGkrKylcbiAgICByZXNbaV0gPSB0aGlzLnJhbmQuZ2V0Qnl0ZSgpO1xuICByZXR1cm4gcmVzO1xufTtcblxuaWYgKHR5cGVvZiBzZWxmID09PSAnb2JqZWN0Jykge1xuICBpZiAoc2VsZi5jcnlwdG8gJiYgc2VsZi5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgLy8gTW9kZXJuIGJyb3dzZXJzXG4gICAgUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gICAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gICAgICBzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcbiAgfSBlbHNlIGlmIChzZWxmLm1zQ3J5cHRvICYmIHNlbGYubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgLy8gSUVcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICAgIHNlbGYubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycik7XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH07XG5cbiAgLy8gU2FmYXJpJ3MgV2ViV29ya2VycyBkbyBub3QgaGF2ZSBgY3J5cHRvYFxuICB9IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSB7XG4gICAgLy8gT2xkIGp1bmtcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQgeWV0Jyk7XG4gICAgfTtcbiAgfVxufSBlbHNlIHtcbiAgLy8gTm9kZS5qcyBvciBXZWIgd29ya2VyIHdpdGggbm8gY3J5cHRvIHN1cHBvcnRcbiAgdHJ5IHtcbiAgICB2YXIgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7XG4gICAgaWYgKHR5cGVvZiBjcnlwdG8ucmFuZG9tQnl0ZXMgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQnKTtcblxuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgcmV0dXJuIGNyeXB0by5yYW5kb21CeXRlcyhuKTtcbiAgICB9O1xuICB9IGNhdGNoIChlKSB7XG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jyb3JhbmQvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDcyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///72\n");

/***/ }),
/* 73 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n  if (Array.isArray(msg))\n    return msg.slice();\n  if (!msg)\n    return [];\n  var res = [];\n  if (typeof msg !== 'string') {\n    for (var i = 0; i < msg.length; i++)\n      res[i] = msg[i] | 0;\n    return res;\n  }\n  if (enc === 'hex') {\n    msg = msg.replace(/[^a-z0-9]+/ig, '');\n    if (msg.length % 2 !== 0)\n      msg = '0' + msg;\n    for (var i = 0; i < msg.length; i += 2)\n      res.push(parseInt(msg[i] + msg[i + 1], 16));\n  } else {\n    for (var i = 0; i < msg.length; i++) {\n      var c = msg.charCodeAt(i);\n      var hi = c >> 8;\n      var lo = c & 0xff;\n      if (hi)\n        res.push(hi, lo);\n      else\n        res.push(lo);\n    }\n  }\n  return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n  if (word.length === 1)\n    return '0' + word;\n  else\n    return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n  var res = '';\n  for (var i = 0; i < msg.length; i++)\n    res += zero2(msg[i].toString(16));\n  return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n  if (enc === 'hex')\n    return toHex(arr);\n  else\n    return arr;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbWluaW1hbGlzdGljLWNyeXB0by11dGlscy9saWIvdXRpbHMuanM/YjY5YiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IGV4cG9ydHM7XG5cbmZ1bmN0aW9uIHRvQXJyYXkobXNnLCBlbmMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobXNnKSlcbiAgICByZXR1cm4gbXNnLnNsaWNlKCk7XG4gIGlmICghbXNnKVxuICAgIHJldHVybiBbXTtcbiAgdmFyIHJlcyA9IFtdO1xuICBpZiAodHlwZW9mIG1zZyAhPT0gJ3N0cmluZycpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICAgIHJlc1tpXSA9IG1zZ1tpXSB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZiAoZW5jID09PSAnaGV4Jykge1xuICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgaWYgKG1zZy5sZW5ndGggJSAyICE9PSAwKVxuICAgICAgbXNnID0gJzAnICsgbXNnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSAyKVxuICAgICAgcmVzLnB1c2gocGFyc2VJbnQobXNnW2ldICsgbXNnW2kgKyAxXSwgMTYpKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSBtc2cuY2hhckNvZGVBdChpKTtcbiAgICAgIHZhciBoaSA9IGMgPj4gODtcbiAgICAgIHZhciBsbyA9IGMgJiAweGZmO1xuICAgICAgaWYgKGhpKVxuICAgICAgICByZXMucHVzaChoaSwgbG8pO1xuICAgICAgZWxzZVxuICAgICAgICByZXMucHVzaChsbyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0FycmF5ID0gdG9BcnJheTtcblxuZnVuY3Rpb24gemVybzIod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbnV0aWxzLnplcm8yID0gemVybzI7XG5cbmZ1bmN0aW9uIHRvSGV4KG1zZykge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgIHJlcyArPSB6ZXJvMihtc2dbaV0udG9TdHJpbmcoMTYpKTtcbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvSGV4ID0gdG9IZXg7XG5cbnV0aWxzLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShhcnIsIGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdG9IZXgoYXJyKTtcbiAgZWxzZVxuICAgIHJldHVybiBhcnI7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvbWluaW1hbGlzdGljLWNyeXB0by11dGlscy9saWIvdXRpbHMuanNcbi8vIG1vZHVsZSBpZCA9IDczXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///73\n");

/***/ }),
/* 74 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(8);\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n  if (s === 0)\n    return ch32(x, y, z);\n  if (s === 1 || s === 3)\n    return p32(x, y, z);\n  if (s === 2)\n    return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n  return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n  return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n  return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n  return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n  return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n  return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n  return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9zaGEvY29tbW9uLmpzP2RlNzYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIHJvdHIzMiA9IHV0aWxzLnJvdHIzMjtcblxuZnVuY3Rpb24gZnRfMShzLCB4LCB5LCB6KSB7XG4gIGlmIChzID09PSAwKVxuICAgIHJldHVybiBjaDMyKHgsIHksIHopO1xuICBpZiAocyA9PT0gMSB8fCBzID09PSAzKVxuICAgIHJldHVybiBwMzIoeCwgeSwgeik7XG4gIGlmIChzID09PSAyKVxuICAgIHJldHVybiBtYWozMih4LCB5LCB6KTtcbn1cbmV4cG9ydHMuZnRfMSA9IGZ0XzE7XG5cbmZ1bmN0aW9uIGNoMzIoeCwgeSwgeikge1xuICByZXR1cm4gKHggJiB5KSBeICgofngpICYgeik7XG59XG5leHBvcnRzLmNoMzIgPSBjaDMyO1xuXG5mdW5jdGlvbiBtYWozMih4LCB5LCB6KSB7XG4gIHJldHVybiAoeCAmIHkpIF4gKHggJiB6KSBeICh5ICYgeik7XG59XG5leHBvcnRzLm1hajMyID0gbWFqMzI7XG5cbmZ1bmN0aW9uIHAzMih4LCB5LCB6KSB7XG4gIHJldHVybiB4IF4geSBeIHo7XG59XG5leHBvcnRzLnAzMiA9IHAzMjtcblxuZnVuY3Rpb24gczBfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCAyKSBeIHJvdHIzMih4LCAxMykgXiByb3RyMzIoeCwgMjIpO1xufVxuZXhwb3J0cy5zMF8yNTYgPSBzMF8yNTY7XG5cbmZ1bmN0aW9uIHMxXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgNikgXiByb3RyMzIoeCwgMTEpIF4gcm90cjMyKHgsIDI1KTtcbn1cbmV4cG9ydHMuczFfMjU2ID0gczFfMjU2O1xuXG5mdW5jdGlvbiBnMF8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDcpIF4gcm90cjMyKHgsIDE4KSBeICh4ID4+PiAzKTtcbn1cbmV4cG9ydHMuZzBfMjU2ID0gZzBfMjU2O1xuXG5mdW5jdGlvbiBnMV8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDE3KSBeIHJvdHIzMih4LCAxOSkgXiAoeCA+Pj4gMTApO1xufVxuZXhwb3J0cy5nMV8yNTYgPSBnMV8yNTY7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS9jb21tb24uanNcbi8vIG1vZHVsZSBpZCA9IDc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///74\n");

/***/ }),
/* 75 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(8);\nvar common = __webpack_require__(18);\nvar shaCommon = __webpack_require__(74);\nvar assert = __webpack_require__(7);\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n  0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n  0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n  0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n  0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n  0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n  0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n  0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n  0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n  0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n  0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n  0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n  0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n  0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n  0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n  0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n  0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n  if (!(this instanceof SHA256))\n    return new SHA256();\n\n  BlockHash.call(this);\n  this.h = [\n    0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n    0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n  ];\n  this.k = sha256_K;\n  this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n  var W = this.W;\n\n  for (var i = 0; i < 16; i++)\n    W[i] = msg[start + i];\n  for (; i < W.length; i++)\n    W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n  var a = this.h[0];\n  var b = this.h[1];\n  var c = this.h[2];\n  var d = this.h[3];\n  var e = this.h[4];\n  var f = this.h[5];\n  var g = this.h[6];\n  var h = this.h[7];\n\n  assert(this.k.length === W.length);\n  for (i = 0; i < W.length; i++) {\n    var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n    var T2 = sum32(s0_256(a), maj32(a, b, c));\n    h = g;\n    g = f;\n    f = e;\n    e = sum32(d, T1);\n    d = c;\n    c = b;\n    b = a;\n    a = sum32(T1, T2);\n  }\n\n  this.h[0] = sum32(this.h[0], a);\n  this.h[1] = sum32(this.h[1], b);\n  this.h[2] = sum32(this.h[2], c);\n  this.h[3] = sum32(this.h[3], d);\n  this.h[4] = sum32(this.h[4], e);\n  this.h[5] = sum32(this.h[5], f);\n  this.h[6] = sum32(this.h[6], g);\n  this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9zaGEvMjU2LmpzPzQzOGYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGNvbW1vbiA9IHJlcXVpcmUoJy4uL2NvbW1vbicpO1xudmFyIHNoYUNvbW1vbiA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG52YXIgc3VtMzIgPSB1dGlscy5zdW0zMjtcbnZhciBzdW0zMl80ID0gdXRpbHMuc3VtMzJfNDtcbnZhciBzdW0zMl81ID0gdXRpbHMuc3VtMzJfNTtcbnZhciBjaDMyID0gc2hhQ29tbW9uLmNoMzI7XG52YXIgbWFqMzIgPSBzaGFDb21tb24ubWFqMzI7XG52YXIgczBfMjU2ID0gc2hhQ29tbW9uLnMwXzI1NjtcbnZhciBzMV8yNTYgPSBzaGFDb21tb24uczFfMjU2O1xudmFyIGcwXzI1NiA9IHNoYUNvbW1vbi5nMF8yNTY7XG52YXIgZzFfMjU2ID0gc2hhQ29tbW9uLmcxXzI1NjtcblxudmFyIEJsb2NrSGFzaCA9IGNvbW1vbi5CbG9ja0hhc2g7XG5cbnZhciBzaGEyNTZfSyA9IFtcbiAgMHg0MjhhMmY5OCwgMHg3MTM3NDQ5MSwgMHhiNWMwZmJjZiwgMHhlOWI1ZGJhNSxcbiAgMHgzOTU2YzI1YiwgMHg1OWYxMTFmMSwgMHg5MjNmODJhNCwgMHhhYjFjNWVkNSxcbiAgMHhkODA3YWE5OCwgMHgxMjgzNWIwMSwgMHgyNDMxODViZSwgMHg1NTBjN2RjMyxcbiAgMHg3MmJlNWQ3NCwgMHg4MGRlYjFmZSwgMHg5YmRjMDZhNywgMHhjMTliZjE3NCxcbiAgMHhlNDliNjljMSwgMHhlZmJlNDc4NiwgMHgwZmMxOWRjNiwgMHgyNDBjYTFjYyxcbiAgMHgyZGU5MmM2ZiwgMHg0YTc0ODRhYSwgMHg1Y2IwYTlkYywgMHg3NmY5ODhkYSxcbiAgMHg5ODNlNTE1MiwgMHhhODMxYzY2ZCwgMHhiMDAzMjdjOCwgMHhiZjU5N2ZjNyxcbiAgMHhjNmUwMGJmMywgMHhkNWE3OTE0NywgMHgwNmNhNjM1MSwgMHgxNDI5Mjk2NyxcbiAgMHgyN2I3MGE4NSwgMHgyZTFiMjEzOCwgMHg0ZDJjNmRmYywgMHg1MzM4MGQxMyxcbiAgMHg2NTBhNzM1NCwgMHg3NjZhMGFiYiwgMHg4MWMyYzkyZSwgMHg5MjcyMmM4NSxcbiAgMHhhMmJmZThhMSwgMHhhODFhNjY0YiwgMHhjMjRiOGI3MCwgMHhjNzZjNTFhMyxcbiAgMHhkMTkyZTgxOSwgMHhkNjk5MDYyNCwgMHhmNDBlMzU4NSwgMHgxMDZhYTA3MCxcbiAgMHgxOWE0YzExNiwgMHgxZTM3NmMwOCwgMHgyNzQ4Nzc0YywgMHgzNGIwYmNiNSxcbiAgMHgzOTFjMGNiMywgMHg0ZWQ4YWE0YSwgMHg1YjljY2E0ZiwgMHg2ODJlNmZmMyxcbiAgMHg3NDhmODJlZSwgMHg3OGE1NjM2ZiwgMHg4NGM4NzgxNCwgMHg4Y2M3MDIwOCxcbiAgMHg5MGJlZmZmYSwgMHhhNDUwNmNlYiwgMHhiZWY5YTNmNywgMHhjNjcxNzhmMlxuXTtcblxuZnVuY3Rpb24gU0hBMjU2KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMjU2KSlcbiAgICByZXR1cm4gbmV3IFNIQTI1NigpO1xuXG4gIEJsb2NrSGFzaC5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbXG4gICAgMHg2YTA5ZTY2NywgMHhiYjY3YWU4NSwgMHgzYzZlZjM3MiwgMHhhNTRmZjUzYSxcbiAgICAweDUxMGU1MjdmLCAweDliMDU2ODhjLCAweDFmODNkOWFiLCAweDViZTBjZDE5XG4gIF07XG4gIHRoaXMuayA9IHNoYTI1Nl9LO1xuICB0aGlzLlcgPSBuZXcgQXJyYXkoNjQpO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBMjU2LCBCbG9ja0hhc2gpO1xubW9kdWxlLmV4cG9ydHMgPSBTSEEyNTY7XG5cblNIQTI1Ni5ibG9ja1NpemUgPSA1MTI7XG5TSEEyNTYub3V0U2l6ZSA9IDI1NjtcblNIQTI1Ni5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEEyNTYucGFkTGVuZ3RoID0gNjQ7XG5cblNIQTI1Ni5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgVyA9IHRoaXMuVztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspXG4gICAgV1tpXSA9IG1zZ1tzdGFydCArIGldO1xuICBmb3IgKDsgaSA8IFcubGVuZ3RoOyBpKyspXG4gICAgV1tpXSA9IHN1bTMyXzQoZzFfMjU2KFdbaSAtIDJdKSwgV1tpIC0gN10sIGcwXzI1NihXW2kgLSAxNV0pLCBXW2kgLSAxNl0pO1xuXG4gIHZhciBhID0gdGhpcy5oWzBdO1xuICB2YXIgYiA9IHRoaXMuaFsxXTtcbiAgdmFyIGMgPSB0aGlzLmhbMl07XG4gIHZhciBkID0gdGhpcy5oWzNdO1xuICB2YXIgZSA9IHRoaXMuaFs0XTtcbiAgdmFyIGYgPSB0aGlzLmhbNV07XG4gIHZhciBnID0gdGhpcy5oWzZdO1xuICB2YXIgaCA9IHRoaXMuaFs3XTtcblxuICBhc3NlcnQodGhpcy5rLmxlbmd0aCA9PT0gVy5sZW5ndGgpO1xuICBmb3IgKGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBUMSA9IHN1bTMyXzUoaCwgczFfMjU2KGUpLCBjaDMyKGUsIGYsIGcpLCB0aGlzLmtbaV0sIFdbaV0pO1xuICAgIHZhciBUMiA9IHN1bTMyKHMwXzI1NihhKSwgbWFqMzIoYSwgYiwgYykpO1xuICAgIGggPSBnO1xuICAgIGcgPSBmO1xuICAgIGYgPSBlO1xuICAgIGUgPSBzdW0zMihkLCBUMSk7XG4gICAgZCA9IGM7XG4gICAgYyA9IGI7XG4gICAgYiA9IGE7XG4gICAgYSA9IHN1bTMyKFQxLCBUMik7XG4gIH1cblxuICB0aGlzLmhbMF0gPSBzdW0zMih0aGlzLmhbMF0sIGEpO1xuICB0aGlzLmhbMV0gPSBzdW0zMih0aGlzLmhbMV0sIGIpO1xuICB0aGlzLmhbMl0gPSBzdW0zMih0aGlzLmhbMl0sIGMpO1xuICB0aGlzLmhbM10gPSBzdW0zMih0aGlzLmhbM10sIGQpO1xuICB0aGlzLmhbNF0gPSBzdW0zMih0aGlzLmhbNF0sIGUpO1xuICB0aGlzLmhbNV0gPSBzdW0zMih0aGlzLmhbNV0sIGYpO1xuICB0aGlzLmhbNl0gPSBzdW0zMih0aGlzLmhbNl0sIGcpO1xuICB0aGlzLmhbN10gPSBzdW0zMih0aGlzLmhbN10sIGgpO1xufTtcblxuU0hBMjU2LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2JpZycpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLzI1Ni5qc1xuLy8gbW9kdWxlIGlkID0gNzVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///75\n");

/***/ }),
/* 76 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(8);\nvar common = __webpack_require__(18);\nvar assert = __webpack_require__(7);\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n  0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n  0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n  0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n  0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n  0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n  0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n  0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n  0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n  0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n  0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n  0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n  0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n  0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n  0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n  0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n  0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n  0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n  0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n  0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n  0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n  0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n  0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n  0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n  0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n  0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n  0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n  0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n  0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n  0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n  0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n  0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n  0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n  0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n  0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n  0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n  0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n  0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n  0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n  0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n  if (!(this instanceof SHA512))\n    return new SHA512();\n\n  BlockHash.call(this);\n  this.h = [\n    0x6a09e667, 0xf3bcc908,\n    0xbb67ae85, 0x84caa73b,\n    0x3c6ef372, 0xfe94f82b,\n    0xa54ff53a, 0x5f1d36f1,\n    0x510e527f, 0xade682d1,\n    0x9b05688c, 0x2b3e6c1f,\n    0x1f83d9ab, 0xfb41bd6b,\n    0x5be0cd19, 0x137e2179 ];\n  this.k = sha512_K;\n  this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n  var W = this.W;\n\n  // 32 x 32bit words\n  for (var i = 0; i < 32; i++)\n    W[i] = msg[start + i];\n  for (; i < W.length; i += 2) {\n    var c0_hi = g1_512_hi(W[i - 4], W[i - 3]);  // i - 2\n    var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n    var c1_hi = W[i - 14];  // i - 7\n    var c1_lo = W[i - 13];\n    var c2_hi = g0_512_hi(W[i - 30], W[i - 29]);  // i - 15\n    var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n    var c3_hi = W[i - 32];  // i - 16\n    var c3_lo = W[i - 31];\n\n    W[i] = sum64_4_hi(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo);\n    W[i + 1] = sum64_4_lo(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo);\n  }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n  this._prepareBlock(msg, start);\n\n  var W = this.W;\n\n  var ah = this.h[0];\n  var al = this.h[1];\n  var bh = this.h[2];\n  var bl = this.h[3];\n  var ch = this.h[4];\n  var cl = this.h[5];\n  var dh = this.h[6];\n  var dl = this.h[7];\n  var eh = this.h[8];\n  var el = this.h[9];\n  var fh = this.h[10];\n  var fl = this.h[11];\n  var gh = this.h[12];\n  var gl = this.h[13];\n  var hh = this.h[14];\n  var hl = this.h[15];\n\n  assert(this.k.length === W.length);\n  for (var i = 0; i < W.length; i += 2) {\n    var c0_hi = hh;\n    var c0_lo = hl;\n    var c1_hi = s1_512_hi(eh, el);\n    var c1_lo = s1_512_lo(eh, el);\n    var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n    var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n    var c3_hi = this.k[i];\n    var c3_lo = this.k[i + 1];\n    var c4_hi = W[i];\n    var c4_lo = W[i + 1];\n\n    var T1_hi = sum64_5_hi(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo,\n      c4_hi, c4_lo);\n    var T1_lo = sum64_5_lo(\n      c0_hi, c0_lo,\n      c1_hi, c1_lo,\n      c2_hi, c2_lo,\n      c3_hi, c3_lo,\n      c4_hi, c4_lo);\n\n    c0_hi = s0_512_hi(ah, al);\n    c0_lo = s0_512_lo(ah, al);\n    c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n    c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n    var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n    var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n    hh = gh;\n    hl = gl;\n\n    gh = fh;\n    gl = fl;\n\n    fh = eh;\n    fl = el;\n\n    eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n    el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n    dh = ch;\n    dl = cl;\n\n    ch = bh;\n    cl = bl;\n\n    bh = ah;\n    bl = al;\n\n    ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n    al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n  }\n\n  sum64(this.h, 0, ah, al);\n  sum64(this.h, 2, bh, bl);\n  sum64(this.h, 4, ch, cl);\n  sum64(this.h, 6, dh, dl);\n  sum64(this.h, 8, eh, el);\n  sum64(this.h, 10, fh, fl);\n  sum64(this.h, 12, gh, gl);\n  sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n  var r = (xh & yh) ^ ((~xh) & zh);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n  var r = (xl & yl) ^ ((~xl) & zl);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n  var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n  var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 28);\n  var c1_hi = rotr64_hi(xl, xh, 2);  // 34\n  var c2_hi = rotr64_hi(xl, xh, 7);  // 39\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 28);\n  var c1_lo = rotr64_lo(xl, xh, 2);  // 34\n  var c2_lo = rotr64_lo(xl, xh, 7);  // 39\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 14);\n  var c1_hi = rotr64_hi(xh, xl, 18);\n  var c2_hi = rotr64_hi(xl, xh, 9);  // 41\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 14);\n  var c1_lo = rotr64_lo(xh, xl, 18);\n  var c2_lo = rotr64_lo(xl, xh, 9);  // 41\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 1);\n  var c1_hi = rotr64_hi(xh, xl, 8);\n  var c2_hi = shr64_hi(xh, xl, 7);\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 1);\n  var c1_lo = rotr64_lo(xh, xl, 8);\n  var c2_lo = shr64_lo(xh, xl, 7);\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n  var c0_hi = rotr64_hi(xh, xl, 19);\n  var c1_hi = rotr64_hi(xl, xh, 29);  // 61\n  var c2_hi = shr64_hi(xh, xl, 6);\n\n  var r = c0_hi ^ c1_hi ^ c2_hi;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n  var c0_lo = rotr64_lo(xh, xl, 19);\n  var c1_lo = rotr64_lo(xl, xh, 29);  // 61\n  var c2_lo = shr64_lo(xh, xl, 6);\n\n  var r = c0_lo ^ c1_lo ^ c2_lo;\n  if (r < 0)\n    r += 0x100000000;\n  return r;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9zaGEvNTEyLmpzP2YzZmQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGNvbW1vbiA9IHJlcXVpcmUoJy4uL2NvbW1vbicpO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxudmFyIHJvdHI2NF9oaSA9IHV0aWxzLnJvdHI2NF9oaTtcbnZhciByb3RyNjRfbG8gPSB1dGlscy5yb3RyNjRfbG87XG52YXIgc2hyNjRfaGkgPSB1dGlscy5zaHI2NF9oaTtcbnZhciBzaHI2NF9sbyA9IHV0aWxzLnNocjY0X2xvO1xudmFyIHN1bTY0ID0gdXRpbHMuc3VtNjQ7XG52YXIgc3VtNjRfaGkgPSB1dGlscy5zdW02NF9oaTtcbnZhciBzdW02NF9sbyA9IHV0aWxzLnN1bTY0X2xvO1xudmFyIHN1bTY0XzRfaGkgPSB1dGlscy5zdW02NF80X2hpO1xudmFyIHN1bTY0XzRfbG8gPSB1dGlscy5zdW02NF80X2xvO1xudmFyIHN1bTY0XzVfaGkgPSB1dGlscy5zdW02NF81X2hpO1xudmFyIHN1bTY0XzVfbG8gPSB1dGlscy5zdW02NF81X2xvO1xuXG52YXIgQmxvY2tIYXNoID0gY29tbW9uLkJsb2NrSGFzaDtcblxudmFyIHNoYTUxMl9LID0gW1xuICAweDQyOGEyZjk4LCAweGQ3MjhhZTIyLCAweDcxMzc0NDkxLCAweDIzZWY2NWNkLFxuICAweGI1YzBmYmNmLCAweGVjNGQzYjJmLCAweGU5YjVkYmE1LCAweDgxODlkYmJjLFxuICAweDM5NTZjMjViLCAweGYzNDhiNTM4LCAweDU5ZjExMWYxLCAweGI2MDVkMDE5LFxuICAweDkyM2Y4MmE0LCAweGFmMTk0ZjliLCAweGFiMWM1ZWQ1LCAweGRhNmQ4MTE4LFxuICAweGQ4MDdhYTk4LCAweGEzMDMwMjQyLCAweDEyODM1YjAxLCAweDQ1NzA2ZmJlLFxuICAweDI0MzE4NWJlLCAweDRlZTRiMjhjLCAweDU1MGM3ZGMzLCAweGQ1ZmZiNGUyLFxuICAweDcyYmU1ZDc0LCAweGYyN2I4OTZmLCAweDgwZGViMWZlLCAweDNiMTY5NmIxLFxuICAweDliZGMwNmE3LCAweDI1YzcxMjM1LCAweGMxOWJmMTc0LCAweGNmNjkyNjk0LFxuICAweGU0OWI2OWMxLCAweDllZjE0YWQyLCAweGVmYmU0Nzg2LCAweDM4NGYyNWUzLFxuICAweDBmYzE5ZGM2LCAweDhiOGNkNWI1LCAweDI0MGNhMWNjLCAweDc3YWM5YzY1LFxuICAweDJkZTkyYzZmLCAweDU5MmIwMjc1LCAweDRhNzQ4NGFhLCAweDZlYTZlNDgzLFxuICAweDVjYjBhOWRjLCAweGJkNDFmYmQ0LCAweDc2Zjk4OGRhLCAweDgzMTE1M2I1LFxuICAweDk4M2U1MTUyLCAweGVlNjZkZmFiLCAweGE4MzFjNjZkLCAweDJkYjQzMjEwLFxuICAweGIwMDMyN2M4LCAweDk4ZmIyMTNmLCAweGJmNTk3ZmM3LCAweGJlZWYwZWU0LFxuICAweGM2ZTAwYmYzLCAweDNkYTg4ZmMyLCAweGQ1YTc5MTQ3LCAweDkzMGFhNzI1LFxuICAweDA2Y2E2MzUxLCAweGUwMDM4MjZmLCAweDE0MjkyOTY3LCAweDBhMGU2ZTcwLFxuICAweDI3YjcwYTg1LCAweDQ2ZDIyZmZjLCAweDJlMWIyMTM4LCAweDVjMjZjOTI2LFxuICAweDRkMmM2ZGZjLCAweDVhYzQyYWVkLCAweDUzMzgwZDEzLCAweDlkOTViM2RmLFxuICAweDY1MGE3MzU0LCAweDhiYWY2M2RlLCAweDc2NmEwYWJiLCAweDNjNzdiMmE4LFxuICAweDgxYzJjOTJlLCAweDQ3ZWRhZWU2LCAweDkyNzIyYzg1LCAweDE0ODIzNTNiLFxuICAweGEyYmZlOGExLCAweDRjZjEwMzY0LCAweGE4MWE2NjRiLCAweGJjNDIzMDAxLFxuICAweGMyNGI4YjcwLCAweGQwZjg5NzkxLCAweGM3NmM1MWEzLCAweDA2NTRiZTMwLFxuICAweGQxOTJlODE5LCAweGQ2ZWY1MjE4LCAweGQ2OTkwNjI0LCAweDU1NjVhOTEwLFxuICAweGY0MGUzNTg1LCAweDU3NzEyMDJhLCAweDEwNmFhMDcwLCAweDMyYmJkMWI4LFxuICAweDE5YTRjMTE2LCAweGI4ZDJkMGM4LCAweDFlMzc2YzA4LCAweDUxNDFhYjUzLFxuICAweDI3NDg3NzRjLCAweGRmOGVlYjk5LCAweDM0YjBiY2I1LCAweGUxOWI0OGE4LFxuICAweDM5MWMwY2IzLCAweGM1Yzk1YTYzLCAweDRlZDhhYTRhLCAweGUzNDE4YWNiLFxuICAweDViOWNjYTRmLCAweDc3NjNlMzczLCAweDY4MmU2ZmYzLCAweGQ2YjJiOGEzLFxuICAweDc0OGY4MmVlLCAweDVkZWZiMmZjLCAweDc4YTU2MzZmLCAweDQzMTcyZjYwLFxuICAweDg0Yzg3ODE0LCAweGExZjBhYjcyLCAweDhjYzcwMjA4LCAweDFhNjQzOWVjLFxuICAweDkwYmVmZmZhLCAweDIzNjMxZTI4LCAweGE0NTA2Y2ViLCAweGRlODJiZGU5LFxuICAweGJlZjlhM2Y3LCAweGIyYzY3OTE1LCAweGM2NzE3OGYyLCAweGUzNzI1MzJiLFxuICAweGNhMjczZWNlLCAweGVhMjY2MTljLCAweGQxODZiOGM3LCAweDIxYzBjMjA3LFxuICAweGVhZGE3ZGQ2LCAweGNkZTBlYjFlLCAweGY1N2Q0ZjdmLCAweGVlNmVkMTc4LFxuICAweDA2ZjA2N2FhLCAweDcyMTc2ZmJhLCAweDBhNjM3ZGM1LCAweGEyYzg5OGE2LFxuICAweDExM2Y5ODA0LCAweGJlZjkwZGFlLCAweDFiNzEwYjM1LCAweDEzMWM0NzFiLFxuICAweDI4ZGI3N2Y1LCAweDIzMDQ3ZDg0LCAweDMyY2FhYjdiLCAweDQwYzcyNDkzLFxuICAweDNjOWViZTBhLCAweDE1YzliZWJjLCAweDQzMWQ2N2M0LCAweDljMTAwZDRjLFxuICAweDRjYzVkNGJlLCAweGNiM2U0MmI2LCAweDU5N2YyOTljLCAweGZjNjU3ZTJhLFxuICAweDVmY2I2ZmFiLCAweDNhZDZmYWVjLCAweDZjNDQxOThjLCAweDRhNDc1ODE3XG5dO1xuXG5mdW5jdGlvbiBTSEE1MTIoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEE1MTIpKVxuICAgIHJldHVybiBuZXcgU0hBNTEyKCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFtcbiAgICAweDZhMDllNjY3LCAweGYzYmNjOTA4LFxuICAgIDB4YmI2N2FlODUsIDB4ODRjYWE3M2IsXG4gICAgMHgzYzZlZjM3MiwgMHhmZTk0ZjgyYixcbiAgICAweGE1NGZmNTNhLCAweDVmMWQzNmYxLFxuICAgIDB4NTEwZTUyN2YsIDB4YWRlNjgyZDEsXG4gICAgMHg5YjA1Njg4YywgMHgyYjNlNmMxZixcbiAgICAweDFmODNkOWFiLCAweGZiNDFiZDZiLFxuICAgIDB4NWJlMGNkMTksIDB4MTM3ZTIxNzkgXTtcbiAgdGhpcy5rID0gc2hhNTEyX0s7XG4gIHRoaXMuVyA9IG5ldyBBcnJheSgxNjApO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBNTEyLCBCbG9ja0hhc2gpO1xubW9kdWxlLmV4cG9ydHMgPSBTSEE1MTI7XG5cblNIQTUxMi5ibG9ja1NpemUgPSAxMDI0O1xuU0hBNTEyLm91dFNpemUgPSA1MTI7XG5TSEE1MTIuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBNTEyLnBhZExlbmd0aCA9IDEyODtcblxuU0hBNTEyLnByb3RvdHlwZS5fcHJlcGFyZUJsb2NrID0gZnVuY3Rpb24gX3ByZXBhcmVCbG9jayhtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIC8vIDMyIHggMzJiaXQgd29yZHNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSsrKVxuICAgIFdbaV0gPSBtc2dbc3RhcnQgKyBpXTtcbiAgZm9yICg7IGkgPCBXLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIGMwX2hpID0gZzFfNTEyX2hpKFdbaSAtIDRdLCBXW2kgLSAzXSk7ICAvLyBpIC0gMlxuICAgIHZhciBjMF9sbyA9IGcxXzUxMl9sbyhXW2kgLSA0XSwgV1tpIC0gM10pO1xuICAgIHZhciBjMV9oaSA9IFdbaSAtIDE0XTsgIC8vIGkgLSA3XG4gICAgdmFyIGMxX2xvID0gV1tpIC0gMTNdO1xuICAgIHZhciBjMl9oaSA9IGcwXzUxMl9oaShXW2kgLSAzMF0sIFdbaSAtIDI5XSk7ICAvLyBpIC0gMTVcbiAgICB2YXIgYzJfbG8gPSBnMF81MTJfbG8oV1tpIC0gMzBdLCBXW2kgLSAyOV0pO1xuICAgIHZhciBjM19oaSA9IFdbaSAtIDMyXTsgIC8vIGkgLSAxNlxuICAgIHZhciBjM19sbyA9IFdbaSAtIDMxXTtcblxuICAgIFdbaV0gPSBzdW02NF80X2hpKFxuICAgICAgYzBfaGksIGMwX2xvLFxuICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgYzNfaGksIGMzX2xvKTtcbiAgICBXW2kgKyAxXSA9IHN1bTY0XzRfbG8oXG4gICAgICBjMF9oaSwgYzBfbG8sXG4gICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICBjM19oaSwgYzNfbG8pO1xuICB9XG59O1xuXG5TSEE1MTIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKG1zZywgc3RhcnQpIHtcbiAgdGhpcy5fcHJlcGFyZUJsb2NrKG1zZywgc3RhcnQpO1xuXG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIHZhciBhaCA9IHRoaXMuaFswXTtcbiAgdmFyIGFsID0gdGhpcy5oWzFdO1xuICB2YXIgYmggPSB0aGlzLmhbMl07XG4gIHZhciBibCA9IHRoaXMuaFszXTtcbiAgdmFyIGNoID0gdGhpcy5oWzRdO1xuICB2YXIgY2wgPSB0aGlzLmhbNV07XG4gIHZhciBkaCA9IHRoaXMuaFs2XTtcbiAgdmFyIGRsID0gdGhpcy5oWzddO1xuICB2YXIgZWggPSB0aGlzLmhbOF07XG4gIHZhciBlbCA9IHRoaXMuaFs5XTtcbiAgdmFyIGZoID0gdGhpcy5oWzEwXTtcbiAgdmFyIGZsID0gdGhpcy5oWzExXTtcbiAgdmFyIGdoID0gdGhpcy5oWzEyXTtcbiAgdmFyIGdsID0gdGhpcy5oWzEzXTtcbiAgdmFyIGhoID0gdGhpcy5oWzE0XTtcbiAgdmFyIGhsID0gdGhpcy5oWzE1XTtcblxuICBhc3NlcnQodGhpcy5rLmxlbmd0aCA9PT0gVy5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IFcubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIgYzBfaGkgPSBoaDtcbiAgICB2YXIgYzBfbG8gPSBobDtcbiAgICB2YXIgYzFfaGkgPSBzMV81MTJfaGkoZWgsIGVsKTtcbiAgICB2YXIgYzFfbG8gPSBzMV81MTJfbG8oZWgsIGVsKTtcbiAgICB2YXIgYzJfaGkgPSBjaDY0X2hpKGVoLCBlbCwgZmgsIGZsLCBnaCwgZ2wpO1xuICAgIHZhciBjMl9sbyA9IGNoNjRfbG8oZWgsIGVsLCBmaCwgZmwsIGdoLCBnbCk7XG4gICAgdmFyIGMzX2hpID0gdGhpcy5rW2ldO1xuICAgIHZhciBjM19sbyA9IHRoaXMua1tpICsgMV07XG4gICAgdmFyIGM0X2hpID0gV1tpXTtcbiAgICB2YXIgYzRfbG8gPSBXW2kgKyAxXTtcblxuICAgIHZhciBUMV9oaSA9IHN1bTY0XzVfaGkoXG4gICAgICBjMF9oaSwgYzBfbG8sXG4gICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICBjM19oaSwgYzNfbG8sXG4gICAgICBjNF9oaSwgYzRfbG8pO1xuICAgIHZhciBUMV9sbyA9IHN1bTY0XzVfbG8oXG4gICAgICBjMF9oaSwgYzBfbG8sXG4gICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICBjM19oaSwgYzNfbG8sXG4gICAgICBjNF9oaSwgYzRfbG8pO1xuXG4gICAgYzBfaGkgPSBzMF81MTJfaGkoYWgsIGFsKTtcbiAgICBjMF9sbyA9IHMwXzUxMl9sbyhhaCwgYWwpO1xuICAgIGMxX2hpID0gbWFqNjRfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCk7XG4gICAgYzFfbG8gPSBtYWo2NF9sbyhhaCwgYWwsIGJoLCBibCwgY2gsIGNsKTtcblxuICAgIHZhciBUMl9oaSA9IHN1bTY0X2hpKGMwX2hpLCBjMF9sbywgYzFfaGksIGMxX2xvKTtcbiAgICB2YXIgVDJfbG8gPSBzdW02NF9sbyhjMF9oaSwgYzBfbG8sIGMxX2hpLCBjMV9sbyk7XG5cbiAgICBoaCA9IGdoO1xuICAgIGhsID0gZ2w7XG5cbiAgICBnaCA9IGZoO1xuICAgIGdsID0gZmw7XG5cbiAgICBmaCA9IGVoO1xuICAgIGZsID0gZWw7XG5cbiAgICBlaCA9IHN1bTY0X2hpKGRoLCBkbCwgVDFfaGksIFQxX2xvKTtcbiAgICBlbCA9IHN1bTY0X2xvKGRsLCBkbCwgVDFfaGksIFQxX2xvKTtcblxuICAgIGRoID0gY2g7XG4gICAgZGwgPSBjbDtcblxuICAgIGNoID0gYmg7XG4gICAgY2wgPSBibDtcblxuICAgIGJoID0gYWg7XG4gICAgYmwgPSBhbDtcblxuICAgIGFoID0gc3VtNjRfaGkoVDFfaGksIFQxX2xvLCBUMl9oaSwgVDJfbG8pO1xuICAgIGFsID0gc3VtNjRfbG8oVDFfaGksIFQxX2xvLCBUMl9oaSwgVDJfbG8pO1xuICB9XG5cbiAgc3VtNjQodGhpcy5oLCAwLCBhaCwgYWwpO1xuICBzdW02NCh0aGlzLmgsIDIsIGJoLCBibCk7XG4gIHN1bTY0KHRoaXMuaCwgNCwgY2gsIGNsKTtcbiAgc3VtNjQodGhpcy5oLCA2LCBkaCwgZGwpO1xuICBzdW02NCh0aGlzLmgsIDgsIGVoLCBlbCk7XG4gIHN1bTY0KHRoaXMuaCwgMTAsIGZoLCBmbCk7XG4gIHN1bTY0KHRoaXMuaCwgMTIsIGdoLCBnbCk7XG4gIHN1bTY0KHRoaXMuaCwgMTQsIGhoLCBobCk7XG59O1xuXG5TSEE1MTIucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCAnYmlnJyk7XG59O1xuXG5mdW5jdGlvbiBjaDY0X2hpKHhoLCB4bCwgeWgsIHlsLCB6aCkge1xuICB2YXIgciA9ICh4aCAmIHloKSBeICgofnhoKSAmIHpoKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBjaDY0X2xvKHhoLCB4bCwgeWgsIHlsLCB6aCwgemwpIHtcbiAgdmFyIHIgPSAoeGwgJiB5bCkgXiAoKH54bCkgJiB6bCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gbWFqNjRfaGkoeGgsIHhsLCB5aCwgeWwsIHpoKSB7XG4gIHZhciByID0gKHhoICYgeWgpIF4gKHhoICYgemgpIF4gKHloICYgemgpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIG1hajY0X2xvKHhoLCB4bCwgeWgsIHlsLCB6aCwgemwpIHtcbiAgdmFyIHIgPSAoeGwgJiB5bCkgXiAoeGwgJiB6bCkgXiAoeWwgJiB6bCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczBfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAyOCk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDIpOyAgLy8gMzRcbiAgdmFyIGMyX2hpID0gcm90cjY0X2hpKHhsLCB4aCwgNyk7ICAvLyAzOVxuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIHMwXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMjgpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCAyKTsgIC8vIDM0XG4gIHZhciBjMl9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDcpOyAgLy8gMzlcblxuICB2YXIgciA9IGMwX2xvIF4gYzFfbG8gXiBjMl9sbztcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMV81MTJfaGkoeGgsIHhsKSB7XG4gIHZhciBjMF9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDE0KTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTgpO1xuICB2YXIgYzJfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCA5KTsgIC8vIDQxXG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczFfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxNCk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDE4KTtcbiAgdmFyIGMyX2xvID0gcm90cjY0X2xvKHhsLCB4aCwgOSk7ICAvLyA0MVxuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcwXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMSk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDgpO1xuICB2YXIgYzJfaGkgPSBzaHI2NF9oaSh4aCwgeGwsIDcpO1xuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcwXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMSk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDgpO1xuICB2YXIgYzJfbG8gPSBzaHI2NF9sbyh4aCwgeGwsIDcpO1xuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcxXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTkpO1xuICB2YXIgYzFfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCAyOSk7ICAvLyA2MVxuICB2YXIgYzJfaGkgPSBzaHI2NF9oaSh4aCwgeGwsIDYpO1xuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcxXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMTkpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCAyOSk7ICAvLyA2MVxuICB2YXIgYzJfbG8gPSBzaHI2NF9sbyh4aCwgeGwsIDYpO1xuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS81MTIuanNcbi8vIG1vZHVsZSBpZCA9IDc2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///76\n");

/***/ }),
/* 77 */
/***/ (function(module, exports, __webpack_require__) {

eval("var inherits = __webpack_require__(0);\nvar Reporter = __webpack_require__(20).Reporter;\nvar Buffer = __webpack_require__(5).Buffer;\n\nfunction DecoderBuffer(base, options) {\n  Reporter.call(this, options);\n  if (!Buffer.isBuffer(base)) {\n    this.error('Input not Buffer');\n    return;\n  }\n\n  this.base = base;\n  this.offset = 0;\n  this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.prototype.save = function save() {\n  return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n  // Return skipped data\n  var res = new DecoderBuffer(this.base);\n  res.offset = save.offset;\n  res.length = this.offset;\n\n  this.offset = save.offset;\n  Reporter.prototype.restore.call(this, save.reporter);\n\n  return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n  return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n  if (this.offset + 1 <= this.length)\n    return this.base.readUInt8(this.offset++, true);\n  else\n    return this.error(fail || 'DecoderBuffer overrun');\n}\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n  if (!(this.offset + bytes <= this.length))\n    return this.error(fail || 'DecoderBuffer overrun');\n\n  var res = new DecoderBuffer(this.base);\n\n  // Share reporter state\n  res._reporterState = this._reporterState;\n\n  res.offset = this.offset;\n  res.length = this.offset + bytes;\n  this.offset += bytes;\n  return res;\n}\n\nDecoderBuffer.prototype.raw = function raw(save) {\n  return this.base.slice(save ? save.offset : this.offset, this.length);\n}\n\nfunction EncoderBuffer(value, reporter) {\n  if (Array.isArray(value)) {\n    this.length = 0;\n    this.value = value.map(function(item) {\n      if (!(item instanceof EncoderBuffer))\n        item = new EncoderBuffer(item, reporter);\n      this.length += item.length;\n      return item;\n    }, this);\n  } else if (typeof value === 'number') {\n    if (!(0 <= value && value <= 0xff))\n      return reporter.error('non-byte EncoderBuffer value');\n    this.value = value;\n    this.length = 1;\n  } else if (typeof value === 'string') {\n    this.value = value;\n    this.length = Buffer.byteLength(value);\n  } else if (Buffer.isBuffer(value)) {\n    this.value = value;\n    this.length = value.length;\n  } else {\n    return reporter.error('Unsupported type: ' + typeof value);\n  }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n  if (!out)\n    out = new Buffer(this.length);\n  if (!offset)\n    offset = 0;\n\n  if (this.length === 0)\n    return out;\n\n  if (Array.isArray(this.value)) {\n    this.value.forEach(function(item) {\n      item.join(out, offset);\n      offset += item.length;\n    });\n  } else {\n    if (typeof this.value === 'number')\n      out[offset] = this.value;\n    else if (typeof this.value === 'string')\n      out.write(this.value, offset);\n    else if (Buffer.isBuffer(this.value))\n      this.value.copy(out, offset);\n    offset += this.length;\n  }\n\n  return out;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL2J1ZmZlci5qcz84OTM2Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgUmVwb3J0ZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuUmVwb3J0ZXI7XG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG5mdW5jdGlvbiBEZWNvZGVyQnVmZmVyKGJhc2UsIG9wdGlvbnMpIHtcbiAgUmVwb3J0ZXIuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYmFzZSkpIHtcbiAgICB0aGlzLmVycm9yKCdJbnB1dCBub3QgQnVmZmVyJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy5iYXNlID0gYmFzZTtcbiAgdGhpcy5vZmZzZXQgPSAwO1xuICB0aGlzLmxlbmd0aCA9IGJhc2UubGVuZ3RoO1xufVxuaW5oZXJpdHMoRGVjb2RlckJ1ZmZlciwgUmVwb3J0ZXIpO1xuZXhwb3J0cy5EZWNvZGVyQnVmZmVyID0gRGVjb2RlckJ1ZmZlcjtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uIHNhdmUoKSB7XG4gIHJldHVybiB7IG9mZnNldDogdGhpcy5vZmZzZXQsIHJlcG9ydGVyOiBSZXBvcnRlci5wcm90b3R5cGUuc2F2ZS5jYWxsKHRoaXMpIH07XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yZXN0b3JlID0gZnVuY3Rpb24gcmVzdG9yZShzYXZlKSB7XG4gIC8vIFJldHVybiBza2lwcGVkIGRhdGFcbiAgdmFyIHJlcyA9IG5ldyBEZWNvZGVyQnVmZmVyKHRoaXMuYmFzZSk7XG4gIHJlcy5vZmZzZXQgPSBzYXZlLm9mZnNldDtcbiAgcmVzLmxlbmd0aCA9IHRoaXMub2Zmc2V0O1xuXG4gIHRoaXMub2Zmc2V0ID0gc2F2ZS5vZmZzZXQ7XG4gIFJlcG9ydGVyLnByb3RvdHlwZS5yZXN0b3JlLmNhbGwodGhpcywgc2F2ZS5yZXBvcnRlcik7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiBpc0VtcHR5KCkge1xuICByZXR1cm4gdGhpcy5vZmZzZXQgPT09IHRoaXMubGVuZ3RoO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4KGZhaWwpIHtcbiAgaWYgKHRoaXMub2Zmc2V0ICsgMSA8PSB0aGlzLmxlbmd0aClcbiAgICByZXR1cm4gdGhpcy5iYXNlLnJlYWRVSW50OCh0aGlzLm9mZnNldCsrLCB0cnVlKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmVycm9yKGZhaWwgfHwgJ0RlY29kZXJCdWZmZXIgb3ZlcnJ1bicpO1xufVxuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5za2lwID0gZnVuY3Rpb24gc2tpcChieXRlcywgZmFpbCkge1xuICBpZiAoISh0aGlzLm9mZnNldCArIGJ5dGVzIDw9IHRoaXMubGVuZ3RoKSlcbiAgICByZXR1cm4gdGhpcy5lcnJvcihmYWlsIHx8ICdEZWNvZGVyQnVmZmVyIG92ZXJydW4nKTtcblxuICB2YXIgcmVzID0gbmV3IERlY29kZXJCdWZmZXIodGhpcy5iYXNlKTtcblxuICAvLyBTaGFyZSByZXBvcnRlciBzdGF0ZVxuICByZXMuX3JlcG9ydGVyU3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHJlcy5vZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgcmVzLmxlbmd0aCA9IHRoaXMub2Zmc2V0ICsgYnl0ZXM7XG4gIHRoaXMub2Zmc2V0ICs9IGJ5dGVzO1xuICByZXR1cm4gcmVzO1xufVxuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yYXcgPSBmdW5jdGlvbiByYXcoc2F2ZSkge1xuICByZXR1cm4gdGhpcy5iYXNlLnNsaWNlKHNhdmUgPyBzYXZlLm9mZnNldCA6IHRoaXMub2Zmc2V0LCB0aGlzLmxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIEVuY29kZXJCdWZmZXIodmFsdWUsIHJlcG9ydGVyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgIGlmICghKGl0ZW0gaW5zdGFuY2VvZiBFbmNvZGVyQnVmZmVyKSlcbiAgICAgICAgaXRlbSA9IG5ldyBFbmNvZGVyQnVmZmVyKGl0ZW0sIHJlcG9ydGVyKTtcbiAgICAgIHRoaXMubGVuZ3RoICs9IGl0ZW0ubGVuZ3RoO1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSwgdGhpcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIGlmICghKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMHhmZikpXG4gICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ25vbi1ieXRlIEVuY29kZXJCdWZmZXIgdmFsdWUnKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1Vuc3VwcG9ydGVkIHR5cGU6ICcgKyB0eXBlb2YgdmFsdWUpO1xuICB9XG59XG5leHBvcnRzLkVuY29kZXJCdWZmZXIgPSBFbmNvZGVyQnVmZmVyO1xuXG5FbmNvZGVyQnVmZmVyLnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gam9pbihvdXQsIG9mZnNldCkge1xuICBpZiAoIW91dClcbiAgICBvdXQgPSBuZXcgQnVmZmVyKHRoaXMubGVuZ3RoKTtcbiAgaWYgKCFvZmZzZXQpXG4gICAgb2Zmc2V0ID0gMDtcblxuICBpZiAodGhpcy5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIG91dDtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgIHRoaXMudmFsdWUuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgICBpdGVtLmpvaW4ob3V0LCBvZmZzZXQpO1xuICAgICAgb2Zmc2V0ICs9IGl0ZW0ubGVuZ3RoO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ251bWJlcicpXG4gICAgICBvdXRbb2Zmc2V0XSA9IHRoaXMudmFsdWU7XG4gICAgZWxzZSBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgb3V0LndyaXRlKHRoaXMudmFsdWUsIG9mZnNldCk7XG4gICAgZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHRoaXMudmFsdWUpKVxuICAgICAgdGhpcy52YWx1ZS5jb3B5KG91dCwgb2Zmc2V0KTtcbiAgICBvZmZzZXQgKz0gdGhpcy5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gb3V0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9idWZmZXIuanNcbi8vIG1vZHVsZSBpZCA9IDc3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///77\n");

/***/ }),
/* 78 */
/***/ (function(module, exports, __webpack_require__) {

eval("var constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n  var res = {};\n\n  Object.keys(map).forEach(function(key) {\n    // Convert key to integer if it is stringified\n    if ((key | 0) == key)\n      key = key | 0;\n\n    var value = map[key];\n    res[value] = key;\n  });\n\n  return res;\n};\n\nconstants.der = __webpack_require__(200);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9jb25zdGFudHMvaW5kZXguanM/NGU3MCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29uc3RhbnRzID0gZXhwb3J0cztcblxuLy8gSGVscGVyXG5jb25zdGFudHMuX3JldmVyc2UgPSBmdW5jdGlvbiByZXZlcnNlKG1hcCkge1xuICB2YXIgcmVzID0ge307XG5cbiAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgIC8vIENvbnZlcnQga2V5IHRvIGludGVnZXIgaWYgaXQgaXMgc3RyaW5naWZpZWRcbiAgICBpZiAoKGtleSB8IDApID09IGtleSlcbiAgICAgIGtleSA9IGtleSB8IDA7XG5cbiAgICB2YXIgdmFsdWUgPSBtYXBba2V5XTtcbiAgICByZXNbdmFsdWVdID0ga2V5O1xuICB9KTtcblxuICByZXR1cm4gcmVzO1xufTtcblxuY29uc3RhbnRzLmRlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2NvbnN0YW50cy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///78\n");

/***/ }),
/* 79 */
/***/ (function(module, exports, __webpack_require__) {

eval("var inherits = __webpack_require__(0);\n\nvar asn1 = __webpack_require__(19);\nvar base = asn1.base;\nvar bignum = asn1.bignum;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DERDecoder(entity) {\n  this.enc = 'der';\n  this.name = entity.name;\n  this.entity = entity;\n\n  // Construct base tree\n  this.tree = new DERNode();\n  this.tree._init(entity.body);\n};\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n  if (!(data instanceof base.DecoderBuffer))\n    data = new base.DecoderBuffer(data, options);\n\n  return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n  base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n  if (buffer.isEmpty())\n    return false;\n\n  var state = buffer.save();\n  var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n  if (buffer.isError(decodedTag))\n    return decodedTag;\n\n  buffer.restore(state);\n\n  return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n    (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n  var decodedTag = derDecodeTag(buffer,\n                                'Failed to decode tag of \"' + tag + '\"');\n  if (buffer.isError(decodedTag))\n    return decodedTag;\n\n  var len = derDecodeLen(buffer,\n                         decodedTag.primitive,\n                         'Failed to get length of \"' + tag + '\"');\n\n  // Failure\n  if (buffer.isError(len))\n    return len;\n\n  if (!any &&\n      decodedTag.tag !== tag &&\n      decodedTag.tagStr !== tag &&\n      decodedTag.tagStr + 'of' !== tag) {\n    return buffer.error('Failed to match tag: \"' + tag + '\"');\n  }\n\n  if (decodedTag.primitive || len !== null)\n    return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n  // Indefinite length... find END tag\n  var state = buffer.save();\n  var res = this._skipUntilEnd(\n      buffer,\n      'Failed to skip indefinite length body: \"' + this.tag + '\"');\n  if (buffer.isError(res))\n    return res;\n\n  len = buffer.offset - state.offset;\n  buffer.restore(state);\n  return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n  while (true) {\n    var tag = derDecodeTag(buffer, fail);\n    if (buffer.isError(tag))\n      return tag;\n    var len = derDecodeLen(buffer, tag.primitive, fail);\n    if (buffer.isError(len))\n      return len;\n\n    var res;\n    if (tag.primitive || len !== null)\n      res = buffer.skip(len)\n    else\n      res = this._skipUntilEnd(buffer, fail);\n\n    // Failure\n    if (buffer.isError(res))\n      return res;\n\n    if (tag.tagStr === 'end')\n      break;\n  }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n                                                    options) {\n  var result = [];\n  while (!buffer.isEmpty()) {\n    var possibleEnd = this._peekTag(buffer, 'end');\n    if (buffer.isError(possibleEnd))\n      return possibleEnd;\n\n    var res = decoder.decode(buffer, 'der', options);\n    if (buffer.isError(res) && possibleEnd)\n      break;\n    result.push(res);\n  }\n  return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n  if (tag === 'bitstr') {\n    var unused = buffer.readUInt8();\n    if (buffer.isError(unused))\n      return unused;\n    return { unused: unused, data: buffer.raw() };\n  } else if (tag === 'bmpstr') {\n    var raw = buffer.raw();\n    if (raw.length % 2 === 1)\n      return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n    var str = '';\n    for (var i = 0; i < raw.length / 2; i++) {\n      str += String.fromCharCode(raw.readUInt16BE(i * 2));\n    }\n    return str;\n  } else if (tag === 'numstr') {\n    var numstr = buffer.raw().toString('ascii');\n    if (!this._isNumstr(numstr)) {\n      return buffer.error('Decoding of string type: ' +\n                          'numstr unsupported characters');\n    }\n    return numstr;\n  } else if (tag === 'octstr') {\n    return buffer.raw();\n  } else if (tag === 'objDesc') {\n    return buffer.raw();\n  } else if (tag === 'printstr') {\n    var printstr = buffer.raw().toString('ascii');\n    if (!this._isPrintstr(printstr)) {\n      return buffer.error('Decoding of string type: ' +\n                          'printstr unsupported characters');\n    }\n    return printstr;\n  } else if (/str$/.test(tag)) {\n    return buffer.raw().toString();\n  } else {\n    return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n  }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n  var result;\n  var identifiers = [];\n  var ident = 0;\n  while (!buffer.isEmpty()) {\n    var subident = buffer.readUInt8();\n    ident <<= 7;\n    ident |= subident & 0x7f;\n    if ((subident & 0x80) === 0) {\n      identifiers.push(ident);\n      ident = 0;\n    }\n  }\n  if (subident & 0x80)\n    identifiers.push(ident);\n\n  var first = (identifiers[0] / 40) | 0;\n  var second = identifiers[0] % 40;\n\n  if (relative)\n    result = identifiers;\n  else\n    result = [first, second].concat(identifiers.slice(1));\n\n  if (values) {\n    var tmp = values[result.join(' ')];\n    if (tmp === undefined)\n      tmp = values[result.join('.')];\n    if (tmp !== undefined)\n      result = tmp;\n  }\n\n  return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n  var str = buffer.raw().toString();\n  if (tag === 'gentime') {\n    var year = str.slice(0, 4) | 0;\n    var mon = str.slice(4, 6) | 0;\n    var day = str.slice(6, 8) | 0;\n    var hour = str.slice(8, 10) | 0;\n    var min = str.slice(10, 12) | 0;\n    var sec = str.slice(12, 14) | 0;\n  } else if (tag === 'utctime') {\n    var year = str.slice(0, 2) | 0;\n    var mon = str.slice(2, 4) | 0;\n    var day = str.slice(4, 6) | 0;\n    var hour = str.slice(6, 8) | 0;\n    var min = str.slice(8, 10) | 0;\n    var sec = str.slice(10, 12) | 0;\n    if (year < 70)\n      year = 2000 + year;\n    else\n      year = 1900 + year;\n  } else {\n    return buffer.error('Decoding ' + tag + ' time is not supported yet');\n  }\n\n  return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull(buffer) {\n  return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n  var res = buffer.readUInt8();\n  if (buffer.isError(res))\n    return res;\n  else\n    return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n  // Bigint, return as it is (assume big endian)\n  var raw = buffer.raw();\n  var res = new bignum(raw);\n\n  if (values)\n    res = values[res.toString(10)] || res;\n\n  return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n  if (typeof entity === 'function')\n    entity = entity(obj);\n  return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n  var tag = buf.readUInt8(fail);\n  if (buf.isError(tag))\n    return tag;\n\n  var cls = der.tagClass[tag >> 6];\n  var primitive = (tag & 0x20) === 0;\n\n  // Multi-octet tag - load\n  if ((tag & 0x1f) === 0x1f) {\n    var oct = tag;\n    tag = 0;\n    while ((oct & 0x80) === 0x80) {\n      oct = buf.readUInt8(fail);\n      if (buf.isError(oct))\n        return oct;\n\n      tag <<= 7;\n      tag |= oct & 0x7f;\n    }\n  } else {\n    tag &= 0x1f;\n  }\n  var tagStr = der.tag[tag];\n\n  return {\n    cls: cls,\n    primitive: primitive,\n    tag: tag,\n    tagStr: tagStr\n  };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n  var len = buf.readUInt8(fail);\n  if (buf.isError(len))\n    return len;\n\n  // Indefinite form\n  if (!primitive && len === 0x80)\n    return null;\n\n  // Definite form\n  if ((len & 0x80) === 0) {\n    // Short form\n    return len;\n  }\n\n  // Long form\n  var num = len & 0x7f;\n  if (num > 4)\n    return buf.error('length octect is too long');\n\n  len = 0;\n  for (var i = 0; i < num; i++) {\n    len <<= 8;\n    var j = buf.readUInt8(fail);\n    if (buf.isError(j))\n      return j;\n    len |= j;\n  }\n\n  return len;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9kZXIuanM/YWRlMSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgYXNuMSA9IHJlcXVpcmUoJy4uLy4uL2FzbjEnKTtcbnZhciBiYXNlID0gYXNuMS5iYXNlO1xudmFyIGJpZ251bSA9IGFzbjEuYmlnbnVtO1xuXG4vLyBJbXBvcnQgREVSIGNvbnN0YW50c1xudmFyIGRlciA9IGFzbjEuY29uc3RhbnRzLmRlcjtcblxuZnVuY3Rpb24gREVSRGVjb2RlcihlbnRpdHkpIHtcbiAgdGhpcy5lbmMgPSAnZGVyJztcbiAgdGhpcy5uYW1lID0gZW50aXR5Lm5hbWU7XG4gIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuXG4gIC8vIENvbnN0cnVjdCBiYXNlIHRyZWVcbiAgdGhpcy50cmVlID0gbmV3IERFUk5vZGUoKTtcbiAgdGhpcy50cmVlLl9pbml0KGVudGl0eS5ib2R5KTtcbn07XG5tb2R1bGUuZXhwb3J0cyA9IERFUkRlY29kZXI7XG5cbkRFUkRlY29kZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShkYXRhLCBvcHRpb25zKSB7XG4gIGlmICghKGRhdGEgaW5zdGFuY2VvZiBiYXNlLkRlY29kZXJCdWZmZXIpKVxuICAgIGRhdGEgPSBuZXcgYmFzZS5EZWNvZGVyQnVmZmVyKGRhdGEsIG9wdGlvbnMpO1xuXG4gIHJldHVybiB0aGlzLnRyZWUuX2RlY29kZShkYXRhLCBvcHRpb25zKTtcbn07XG5cbi8vIFRyZWUgbWV0aG9kc1xuXG5mdW5jdGlvbiBERVJOb2RlKHBhcmVudCkge1xuICBiYXNlLk5vZGUuY2FsbCh0aGlzLCAnZGVyJywgcGFyZW50KTtcbn1cbmluaGVyaXRzKERFUk5vZGUsIGJhc2UuTm9kZSk7XG5cbkRFUk5vZGUucHJvdG90eXBlLl9wZWVrVGFnID0gZnVuY3Rpb24gcGVla1RhZyhidWZmZXIsIHRhZywgYW55KSB7XG4gIGlmIChidWZmZXIuaXNFbXB0eSgpKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgc3RhdGUgPSBidWZmZXIuc2F2ZSgpO1xuICB2YXIgZGVjb2RlZFRhZyA9IGRlckRlY29kZVRhZyhidWZmZXIsICdGYWlsZWQgdG8gcGVlayB0YWc6IFwiJyArIHRhZyArICdcIicpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IoZGVjb2RlZFRhZykpXG4gICAgcmV0dXJuIGRlY29kZWRUYWc7XG5cbiAgYnVmZmVyLnJlc3RvcmUoc3RhdGUpO1xuXG4gIHJldHVybiBkZWNvZGVkVGFnLnRhZyA9PT0gdGFnIHx8IGRlY29kZWRUYWcudGFnU3RyID09PSB0YWcgfHxcbiAgICAoZGVjb2RlZFRhZy50YWdTdHIgKyAnb2YnKSA9PT0gdGFnIHx8IGFueTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVUYWcgPSBmdW5jdGlvbiBkZWNvZGVUYWcoYnVmZmVyLCB0YWcsIGFueSkge1xuICB2YXIgZGVjb2RlZFRhZyA9IGRlckRlY29kZVRhZyhidWZmZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gZGVjb2RlIHRhZyBvZiBcIicgKyB0YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKGRlY29kZWRUYWcpKVxuICAgIHJldHVybiBkZWNvZGVkVGFnO1xuXG4gIHZhciBsZW4gPSBkZXJEZWNvZGVMZW4oYnVmZmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRUYWcucHJpbWl0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gZ2V0IGxlbmd0aCBvZiBcIicgKyB0YWcgKyAnXCInKTtcblxuICAvLyBGYWlsdXJlXG4gIGlmIChidWZmZXIuaXNFcnJvcihsZW4pKVxuICAgIHJldHVybiBsZW47XG5cbiAgaWYgKCFhbnkgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnICE9PSB0YWcgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnU3RyICE9PSB0YWcgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnU3RyICsgJ29mJyAhPT0gdGFnKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRmFpbGVkIHRvIG1hdGNoIHRhZzogXCInICsgdGFnICsgJ1wiJyk7XG4gIH1cblxuICBpZiAoZGVjb2RlZFRhZy5wcmltaXRpdmUgfHwgbGVuICE9PSBudWxsKVxuICAgIHJldHVybiBidWZmZXIuc2tpcChsZW4sICdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInICsgdGFnICsgJ1wiJyk7XG5cbiAgLy8gSW5kZWZpbml0ZSBsZW5ndGguLi4gZmluZCBFTkQgdGFnXG4gIHZhciBzdGF0ZSA9IGJ1ZmZlci5zYXZlKCk7XG4gIHZhciByZXMgPSB0aGlzLl9za2lwVW50aWxFbmQoXG4gICAgICBidWZmZXIsXG4gICAgICAnRmFpbGVkIHRvIHNraXAgaW5kZWZpbml0ZSBsZW5ndGggYm9keTogXCInICsgdGhpcy50YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKHJlcykpXG4gICAgcmV0dXJuIHJlcztcblxuICBsZW4gPSBidWZmZXIub2Zmc2V0IC0gc3RhdGUub2Zmc2V0O1xuICBidWZmZXIucmVzdG9yZShzdGF0ZSk7XG4gIHJldHVybiBidWZmZXIuc2tpcChsZW4sICdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInICsgdGFnICsgJ1wiJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fc2tpcFVudGlsRW5kID0gZnVuY3Rpb24gc2tpcFVudGlsRW5kKGJ1ZmZlciwgZmFpbCkge1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHZhciB0YWcgPSBkZXJEZWNvZGVUYWcoYnVmZmVyLCBmYWlsKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IodGFnKSlcbiAgICAgIHJldHVybiB0YWc7XG4gICAgdmFyIGxlbiA9IGRlckRlY29kZUxlbihidWZmZXIsIHRhZy5wcmltaXRpdmUsIGZhaWwpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcihsZW4pKVxuICAgICAgcmV0dXJuIGxlbjtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRhZy5wcmltaXRpdmUgfHwgbGVuICE9PSBudWxsKVxuICAgICAgcmVzID0gYnVmZmVyLnNraXAobGVuKVxuICAgIGVsc2VcbiAgICAgIHJlcyA9IHRoaXMuX3NraXBVbnRpbEVuZChidWZmZXIsIGZhaWwpO1xuXG4gICAgLy8gRmFpbHVyZVxuICAgIGlmIChidWZmZXIuaXNFcnJvcihyZXMpKVxuICAgICAgcmV0dXJuIHJlcztcblxuICAgIGlmICh0YWcudGFnU3RyID09PSAnZW5kJylcbiAgICAgIGJyZWFrO1xuICB9XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlTGlzdCA9IGZ1bmN0aW9uIGRlY29kZUxpc3QoYnVmZmVyLCB0YWcsIGRlY29kZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucykge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlICghYnVmZmVyLmlzRW1wdHkoKSkge1xuICAgIHZhciBwb3NzaWJsZUVuZCA9IHRoaXMuX3BlZWtUYWcoYnVmZmVyLCAnZW5kJyk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHBvc3NpYmxlRW5kKSlcbiAgICAgIHJldHVybiBwb3NzaWJsZUVuZDtcblxuICAgIHZhciByZXMgPSBkZWNvZGVyLmRlY29kZShidWZmZXIsICdkZXInLCBvcHRpb25zKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSAmJiBwb3NzaWJsZUVuZClcbiAgICAgIGJyZWFrO1xuICAgIHJlc3VsdC5wdXNoKHJlcyk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVTdHIgPSBmdW5jdGlvbiBkZWNvZGVTdHIoYnVmZmVyLCB0YWcpIHtcbiAgaWYgKHRhZyA9PT0gJ2JpdHN0cicpIHtcbiAgICB2YXIgdW51c2VkID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcih1bnVzZWQpKVxuICAgICAgcmV0dXJuIHVudXNlZDtcbiAgICByZXR1cm4geyB1bnVzZWQ6IHVudXNlZCwgZGF0YTogYnVmZmVyLnJhdygpIH07XG4gIH0gZWxzZSBpZiAodGFnID09PSAnYm1wc3RyJykge1xuICAgIHZhciByYXcgPSBidWZmZXIucmF3KCk7XG4gICAgaWYgKHJhdy5sZW5ndGggJSAyID09PSAxKVxuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IGJtcHN0ciBsZW5ndGggbWlzbWF0Y2gnKTtcblxuICAgIHZhciBzdHIgPSAnJztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhdy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHJhdy5yZWFkVUludDE2QkUoaSAqIDIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdudW1zdHInKSB7XG4gICAgdmFyIG51bXN0ciA9IGJ1ZmZlci5yYXcoKS50b1N0cmluZygnYXNjaWknKTtcbiAgICBpZiAoIXRoaXMuX2lzTnVtc3RyKG51bXN0cikpIHtcbiAgICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bXN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuICAgIHJldHVybiBudW1zdHI7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnb2N0c3RyJykge1xuICAgIHJldHVybiBidWZmZXIucmF3KCk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnb2JqRGVzYycpIHtcbiAgICByZXR1cm4gYnVmZmVyLnJhdygpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3ByaW50c3RyJykge1xuICAgIHZhciBwcmludHN0ciA9IGJ1ZmZlci5yYXcoKS50b1N0cmluZygnYXNjaWknKTtcbiAgICBpZiAoIXRoaXMuX2lzUHJpbnRzdHIocHJpbnRzdHIpKSB7XG4gICAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludHN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuICAgIHJldHVybiBwcmludHN0cjtcbiAgfSBlbHNlIGlmICgvc3RyJC8udGVzdCh0YWcpKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5yYXcoKS50b1N0cmluZygpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICsgdGFnICsgJyB1bnN1cHBvcnRlZCcpO1xuICB9XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlT2JqaWQgPSBmdW5jdGlvbiBkZWNvZGVPYmppZChidWZmZXIsIHZhbHVlcywgcmVsYXRpdmUpIHtcbiAgdmFyIHJlc3VsdDtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG4gIHZhciBpZGVudCA9IDA7XG4gIHdoaWxlICghYnVmZmVyLmlzRW1wdHkoKSkge1xuICAgIHZhciBzdWJpZGVudCA9IGJ1ZmZlci5yZWFkVUludDgoKTtcbiAgICBpZGVudCA8PD0gNztcbiAgICBpZGVudCB8PSBzdWJpZGVudCAmIDB4N2Y7XG4gICAgaWYgKChzdWJpZGVudCAmIDB4ODApID09PSAwKSB7XG4gICAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50KTtcbiAgICAgIGlkZW50ID0gMDtcbiAgICB9XG4gIH1cbiAgaWYgKHN1YmlkZW50ICYgMHg4MClcbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50KTtcblxuICB2YXIgZmlyc3QgPSAoaWRlbnRpZmllcnNbMF0gLyA0MCkgfCAwO1xuICB2YXIgc2Vjb25kID0gaWRlbnRpZmllcnNbMF0gJSA0MDtcblxuICBpZiAocmVsYXRpdmUpXG4gICAgcmVzdWx0ID0gaWRlbnRpZmllcnM7XG4gIGVsc2VcbiAgICByZXN1bHQgPSBbZmlyc3QsIHNlY29uZF0uY29uY2F0KGlkZW50aWZpZXJzLnNsaWNlKDEpKTtcblxuICBpZiAodmFsdWVzKSB7XG4gICAgdmFyIHRtcCA9IHZhbHVlc1tyZXN1bHQuam9pbignICcpXTtcbiAgICBpZiAodG1wID09PSB1bmRlZmluZWQpXG4gICAgICB0bXAgPSB2YWx1ZXNbcmVzdWx0LmpvaW4oJy4nKV07XG4gICAgaWYgKHRtcCAhPT0gdW5kZWZpbmVkKVxuICAgICAgcmVzdWx0ID0gdG1wO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVUaW1lID0gZnVuY3Rpb24gZGVjb2RlVGltZShidWZmZXIsIHRhZykge1xuICB2YXIgc3RyID0gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCk7XG4gIGlmICh0YWcgPT09ICdnZW50aW1lJykge1xuICAgIHZhciB5ZWFyID0gc3RyLnNsaWNlKDAsIDQpIHwgMDtcbiAgICB2YXIgbW9uID0gc3RyLnNsaWNlKDQsIDYpIHwgMDtcbiAgICB2YXIgZGF5ID0gc3RyLnNsaWNlKDYsIDgpIHwgMDtcbiAgICB2YXIgaG91ciA9IHN0ci5zbGljZSg4LCAxMCkgfCAwO1xuICAgIHZhciBtaW4gPSBzdHIuc2xpY2UoMTAsIDEyKSB8IDA7XG4gICAgdmFyIHNlYyA9IHN0ci5zbGljZSgxMiwgMTQpIHwgMDtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICd1dGN0aW1lJykge1xuICAgIHZhciB5ZWFyID0gc3RyLnNsaWNlKDAsIDIpIHwgMDtcbiAgICB2YXIgbW9uID0gc3RyLnNsaWNlKDIsIDQpIHwgMDtcbiAgICB2YXIgZGF5ID0gc3RyLnNsaWNlKDQsIDYpIHwgMDtcbiAgICB2YXIgaG91ciA9IHN0ci5zbGljZSg2LCA4KSB8IDA7XG4gICAgdmFyIG1pbiA9IHN0ci5zbGljZSg4LCAxMCkgfCAwO1xuICAgIHZhciBzZWMgPSBzdHIuc2xpY2UoMTAsIDEyKSB8IDA7XG4gICAgaWYgKHllYXIgPCA3MClcbiAgICAgIHllYXIgPSAyMDAwICsgeWVhcjtcbiAgICBlbHNlXG4gICAgICB5ZWFyID0gMTkwMCArIHllYXI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2RpbmcgJyArIHRhZyArICcgdGltZSBpcyBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICB9XG5cbiAgcmV0dXJuIERhdGUuVVRDKHllYXIsIG1vbiAtIDEsIGRheSwgaG91ciwgbWluLCBzZWMsIDApO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZU51bGwgPSBmdW5jdGlvbiBkZWNvZGVOdWxsKGJ1ZmZlcikge1xuICByZXR1cm4gbnVsbDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVCb29sID0gZnVuY3Rpb24gZGVjb2RlQm9vbChidWZmZXIpIHtcbiAgdmFyIHJlcyA9IGJ1ZmZlci5yZWFkVUludDgoKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKHJlcykpXG4gICAgcmV0dXJuIHJlcztcbiAgZWxzZVxuICAgIHJldHVybiByZXMgIT09IDA7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlSW50ID0gZnVuY3Rpb24gZGVjb2RlSW50KGJ1ZmZlciwgdmFsdWVzKSB7XG4gIC8vIEJpZ2ludCwgcmV0dXJuIGFzIGl0IGlzIChhc3N1bWUgYmlnIGVuZGlhbilcbiAgdmFyIHJhdyA9IGJ1ZmZlci5yYXcoKTtcbiAgdmFyIHJlcyA9IG5ldyBiaWdudW0ocmF3KTtcblxuICBpZiAodmFsdWVzKVxuICAgIHJlcyA9IHZhbHVlc1tyZXMudG9TdHJpbmcoMTApXSB8fCByZXM7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl91c2UgPSBmdW5jdGlvbiB1c2UoZW50aXR5LCBvYmopIHtcbiAgaWYgKHR5cGVvZiBlbnRpdHkgPT09ICdmdW5jdGlvbicpXG4gICAgZW50aXR5ID0gZW50aXR5KG9iaik7XG4gIHJldHVybiBlbnRpdHkuX2dldERlY29kZXIoJ2RlcicpLnRyZWU7XG59O1xuXG4vLyBVdGlsaXR5IG1ldGhvZHNcblxuZnVuY3Rpb24gZGVyRGVjb2RlVGFnKGJ1ZiwgZmFpbCkge1xuICB2YXIgdGFnID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgaWYgKGJ1Zi5pc0Vycm9yKHRhZykpXG4gICAgcmV0dXJuIHRhZztcblxuICB2YXIgY2xzID0gZGVyLnRhZ0NsYXNzW3RhZyA+PiA2XTtcbiAgdmFyIHByaW1pdGl2ZSA9ICh0YWcgJiAweDIwKSA9PT0gMDtcblxuICAvLyBNdWx0aS1vY3RldCB0YWcgLSBsb2FkXG4gIGlmICgodGFnICYgMHgxZikgPT09IDB4MWYpIHtcbiAgICB2YXIgb2N0ID0gdGFnO1xuICAgIHRhZyA9IDA7XG4gICAgd2hpbGUgKChvY3QgJiAweDgwKSA9PT0gMHg4MCkge1xuICAgICAgb2N0ID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgICAgIGlmIChidWYuaXNFcnJvcihvY3QpKVxuICAgICAgICByZXR1cm4gb2N0O1xuXG4gICAgICB0YWcgPDw9IDc7XG4gICAgICB0YWcgfD0gb2N0ICYgMHg3ZjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGFnICY9IDB4MWY7XG4gIH1cbiAgdmFyIHRhZ1N0ciA9IGRlci50YWdbdGFnXTtcblxuICByZXR1cm4ge1xuICAgIGNsczogY2xzLFxuICAgIHByaW1pdGl2ZTogcHJpbWl0aXZlLFxuICAgIHRhZzogdGFnLFxuICAgIHRhZ1N0cjogdGFnU3RyXG4gIH07XG59XG5cbmZ1bmN0aW9uIGRlckRlY29kZUxlbihidWYsIHByaW1pdGl2ZSwgZmFpbCkge1xuICB2YXIgbGVuID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgaWYgKGJ1Zi5pc0Vycm9yKGxlbikpXG4gICAgcmV0dXJuIGxlbjtcblxuICAvLyBJbmRlZmluaXRlIGZvcm1cbiAgaWYgKCFwcmltaXRpdmUgJiYgbGVuID09PSAweDgwKVxuICAgIHJldHVybiBudWxsO1xuXG4gIC8vIERlZmluaXRlIGZvcm1cbiAgaWYgKChsZW4gJiAweDgwKSA9PT0gMCkge1xuICAgIC8vIFNob3J0IGZvcm1cbiAgICByZXR1cm4gbGVuO1xuICB9XG5cbiAgLy8gTG9uZyBmb3JtXG4gIHZhciBudW0gPSBsZW4gJiAweDdmO1xuICBpZiAobnVtID4gNClcbiAgICByZXR1cm4gYnVmLmVycm9yKCdsZW5ndGggb2N0ZWN0IGlzIHRvbyBsb25nJyk7XG5cbiAgbGVuID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW07IGkrKykge1xuICAgIGxlbiA8PD0gODtcbiAgICB2YXIgaiA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gICAgaWYgKGJ1Zi5pc0Vycm9yKGopKVxuICAgICAgcmV0dXJuIGo7XG4gICAgbGVuIHw9IGo7XG4gIH1cblxuICByZXR1cm4gbGVuO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9kZXIuanNcbi8vIG1vZHVsZSBpZCA9IDc5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///79\n");

/***/ }),
/* 80 */
/***/ (function(module, exports, __webpack_require__) {

eval("var inherits = __webpack_require__(0);\nvar Buffer = __webpack_require__(5).Buffer;\n\nvar asn1 = __webpack_require__(19);\nvar base = asn1.base;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DEREncoder(entity) {\n  this.enc = 'der';\n  this.name = entity.name;\n  this.entity = entity;\n\n  // Construct base tree\n  this.tree = new DERNode();\n  this.tree._init(entity.body);\n};\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n  return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n  base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n                                                              primitive,\n                                                              cls,\n                                                              content) {\n  var encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n  // Short form\n  if (content.length < 0x80) {\n    var header = new Buffer(2);\n    header[0] = encodedTag;\n    header[1] = content.length;\n    return this._createEncoderBuffer([ header, content ]);\n  }\n\n  // Long form\n  // Count octets required to store length\n  var lenOctets = 1;\n  for (var i = content.length; i >= 0x100; i >>= 8)\n    lenOctets++;\n\n  var header = new Buffer(1 + 1 + lenOctets);\n  header[0] = encodedTag;\n  header[1] = 0x80 | lenOctets;\n\n  for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n    header[i] = j & 0xff;\n\n  return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n  if (tag === 'bitstr') {\n    return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n  } else if (tag === 'bmpstr') {\n    var buf = new Buffer(str.length * 2);\n    for (var i = 0; i < str.length; i++) {\n      buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n    }\n    return this._createEncoderBuffer(buf);\n  } else if (tag === 'numstr') {\n    if (!this._isNumstr(str)) {\n      return this.reporter.error('Encoding of string type: numstr supports ' +\n                                 'only digits and space');\n    }\n    return this._createEncoderBuffer(str);\n  } else if (tag === 'printstr') {\n    if (!this._isPrintstr(str)) {\n      return this.reporter.error('Encoding of string type: printstr supports ' +\n                                 'only latin upper and lower case letters, ' +\n                                 'digits, space, apostrophe, left and rigth ' +\n                                 'parenthesis, plus sign, comma, hyphen, ' +\n                                 'dot, slash, colon, equal sign, ' +\n                                 'question mark');\n    }\n    return this._createEncoderBuffer(str);\n  } else if (/str$/.test(tag)) {\n    return this._createEncoderBuffer(str);\n  } else if (tag === 'objDesc') {\n    return this._createEncoderBuffer(str);\n  } else {\n    return this.reporter.error('Encoding of string type: ' + tag +\n                               ' unsupported');\n  }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n  if (typeof id === 'string') {\n    if (!values)\n      return this.reporter.error('string objid given, but no values map found');\n    if (!values.hasOwnProperty(id))\n      return this.reporter.error('objid not found in values map');\n    id = values[id].split(/[\\s\\.]+/g);\n    for (var i = 0; i < id.length; i++)\n      id[i] |= 0;\n  } else if (Array.isArray(id)) {\n    id = id.slice();\n    for (var i = 0; i < id.length; i++)\n      id[i] |= 0;\n  }\n\n  if (!Array.isArray(id)) {\n    return this.reporter.error('objid() should be either array or string, ' +\n                               'got: ' + JSON.stringify(id));\n  }\n\n  if (!relative) {\n    if (id[1] >= 40)\n      return this.reporter.error('Second objid identifier OOB');\n    id.splice(0, 2, id[0] * 40 + id[1]);\n  }\n\n  // Count number of octets\n  var size = 0;\n  for (var i = 0; i < id.length; i++) {\n    var ident = id[i];\n    for (size++; ident >= 0x80; ident >>= 7)\n      size++;\n  }\n\n  var objid = new Buffer(size);\n  var offset = objid.length - 1;\n  for (var i = id.length - 1; i >= 0; i--) {\n    var ident = id[i];\n    objid[offset--] = ident & 0x7f;\n    while ((ident >>= 7) > 0)\n      objid[offset--] = 0x80 | (ident & 0x7f);\n  }\n\n  return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n  if (num < 10)\n    return '0' + num;\n  else\n    return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n  var str;\n  var date = new Date(time);\n\n  if (tag === 'gentime') {\n    str = [\n      two(date.getFullYear()),\n      two(date.getUTCMonth() + 1),\n      two(date.getUTCDate()),\n      two(date.getUTCHours()),\n      two(date.getUTCMinutes()),\n      two(date.getUTCSeconds()),\n      'Z'\n    ].join('');\n  } else if (tag === 'utctime') {\n    str = [\n      two(date.getFullYear() % 100),\n      two(date.getUTCMonth() + 1),\n      two(date.getUTCDate()),\n      two(date.getUTCHours()),\n      two(date.getUTCMinutes()),\n      two(date.getUTCSeconds()),\n      'Z'\n    ].join('');\n  } else {\n    this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n  }\n\n  return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n  return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n  if (typeof num === 'string') {\n    if (!values)\n      return this.reporter.error('String int or enum given, but no values map');\n    if (!values.hasOwnProperty(num)) {\n      return this.reporter.error('Values map doesn\\'t contain: ' +\n                                 JSON.stringify(num));\n    }\n    num = values[num];\n  }\n\n  // Bignum, assume big endian\n  if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n    var numArray = num.toArray();\n    if (!num.sign && numArray[0] & 0x80) {\n      numArray.unshift(0);\n    }\n    num = new Buffer(numArray);\n  }\n\n  if (Buffer.isBuffer(num)) {\n    var size = num.length;\n    if (num.length === 0)\n      size++;\n\n    var out = new Buffer(size);\n    num.copy(out);\n    if (num.length === 0)\n      out[0] = 0\n    return this._createEncoderBuffer(out);\n  }\n\n  if (num < 0x80)\n    return this._createEncoderBuffer(num);\n\n  if (num < 0x100)\n    return this._createEncoderBuffer([0, num]);\n\n  var size = 1;\n  for (var i = num; i >= 0x100; i >>= 8)\n    size++;\n\n  var out = new Array(size);\n  for (var i = out.length - 1; i >= 0; i--) {\n    out[i] = num & 0xff;\n    num >>= 8;\n  }\n  if(out[0] & 0x80) {\n    out.unshift(0);\n  }\n\n  return this._createEncoderBuffer(new Buffer(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n  return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n  if (typeof entity === 'function')\n    entity = entity(obj);\n  return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n  var state = this._baseState;\n  var i;\n  if (state['default'] === null)\n    return false;\n\n  var data = dataBuffer.join();\n  if (state.defaultBuffer === undefined)\n    state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n  if (data.length !== state.defaultBuffer.length)\n    return false;\n\n  for (i=0; i < data.length; i++)\n    if (data[i] !== state.defaultBuffer[i])\n      return false;\n\n  return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n  var res;\n\n  if (tag === 'seqof')\n    tag = 'seq';\n  else if (tag === 'setof')\n    tag = 'set';\n\n  if (der.tagByName.hasOwnProperty(tag))\n    res = der.tagByName[tag];\n  else if (typeof tag === 'number' && (tag | 0) === tag)\n    res = tag;\n  else\n    return reporter.error('Unknown tag: ' + tag);\n\n  if (res >= 0x1f)\n    return reporter.error('Multi-octet tag encoding unsupported');\n\n  if (!primitive)\n    res |= 0x20;\n\n  res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n  return res;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9lbmNvZGVycy9kZXIuanM/YTZjZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcblxudmFyIGFzbjEgPSByZXF1aXJlKCcuLi8uLi9hc24xJyk7XG52YXIgYmFzZSA9IGFzbjEuYmFzZTtcblxuLy8gSW1wb3J0IERFUiBjb25zdGFudHNcbnZhciBkZXIgPSBhc24xLmNvbnN0YW50cy5kZXI7XG5cbmZ1bmN0aW9uIERFUkVuY29kZXIoZW50aXR5KSB7XG4gIHRoaXMuZW5jID0gJ2Rlcic7XG4gIHRoaXMubmFtZSA9IGVudGl0eS5uYW1lO1xuICB0aGlzLmVudGl0eSA9IGVudGl0eTtcblxuICAvLyBDb25zdHJ1Y3QgYmFzZSB0cmVlXG4gIHRoaXMudHJlZSA9IG5ldyBERVJOb2RlKCk7XG4gIHRoaXMudHJlZS5faW5pdChlbnRpdHkuYm9keSk7XG59O1xubW9kdWxlLmV4cG9ydHMgPSBERVJFbmNvZGVyO1xuXG5ERVJFbmNvZGVyLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgcmVwb3J0ZXIpIHtcbiAgcmV0dXJuIHRoaXMudHJlZS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKS5qb2luKCk7XG59O1xuXG4vLyBUcmVlIG1ldGhvZHNcblxuZnVuY3Rpb24gREVSTm9kZShwYXJlbnQpIHtcbiAgYmFzZS5Ob2RlLmNhbGwodGhpcywgJ2RlcicsIHBhcmVudCk7XG59XG5pbmhlcml0cyhERVJOb2RlLCBiYXNlLk5vZGUpO1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlQ29tcG9zaXRlID0gZnVuY3Rpb24gZW5jb2RlQ29tcG9zaXRlKHRhZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWl0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQpIHtcbiAgdmFyIGVuY29kZWRUYWcgPSBlbmNvZGVUYWcodGFnLCBwcmltaXRpdmUsIGNscywgdGhpcy5yZXBvcnRlcik7XG5cbiAgLy8gU2hvcnQgZm9ybVxuICBpZiAoY29udGVudC5sZW5ndGggPCAweDgwKSB7XG4gICAgdmFyIGhlYWRlciA9IG5ldyBCdWZmZXIoMik7XG4gICAgaGVhZGVyWzBdID0gZW5jb2RlZFRhZztcbiAgICBoZWFkZXJbMV0gPSBjb250ZW50Lmxlbmd0aDtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbIGhlYWRlciwgY29udGVudCBdKTtcbiAgfVxuXG4gIC8vIExvbmcgZm9ybVxuICAvLyBDb3VudCBvY3RldHMgcmVxdWlyZWQgdG8gc3RvcmUgbGVuZ3RoXG4gIHZhciBsZW5PY3RldHMgPSAxO1xuICBmb3IgKHZhciBpID0gY29udGVudC5sZW5ndGg7IGkgPj0gMHgxMDA7IGkgPj49IDgpXG4gICAgbGVuT2N0ZXRzKys7XG5cbiAgdmFyIGhlYWRlciA9IG5ldyBCdWZmZXIoMSArIDEgKyBsZW5PY3RldHMpO1xuICBoZWFkZXJbMF0gPSBlbmNvZGVkVGFnO1xuICBoZWFkZXJbMV0gPSAweDgwIHwgbGVuT2N0ZXRzO1xuXG4gIGZvciAodmFyIGkgPSAxICsgbGVuT2N0ZXRzLCBqID0gY29udGVudC5sZW5ndGg7IGogPiAwOyBpLS0sIGogPj49IDgpXG4gICAgaGVhZGVyW2ldID0gaiAmIDB4ZmY7XG5cbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWyBoZWFkZXIsIGNvbnRlbnQgXSk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlU3RyID0gZnVuY3Rpb24gZW5jb2RlU3RyKHN0ciwgdGFnKSB7XG4gIGlmICh0YWcgPT09ICdiaXRzdHInKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWyBzdHIudW51c2VkIHwgMCwgc3RyLmRhdGEgXSk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnYm1wc3RyJykge1xuICAgIHZhciBidWYgPSBuZXcgQnVmZmVyKHN0ci5sZW5ndGggKiAyKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgYnVmLndyaXRlVUludDE2QkUoc3RyLmNoYXJDb2RlQXQoaSksIGkgKiAyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoYnVmKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdudW1zdHInKSB7XG4gICAgaWYgKCF0aGlzLl9pc051bXN0cihzdHIpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IG51bXN0ciBzdXBwb3J0cyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbmx5IGRpZ2l0cyBhbmQgc3BhY2UnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdwcmludHN0cicpIHtcbiAgICBpZiAoIXRoaXMuX2lzUHJpbnRzdHIoc3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ0VuY29kaW5nIG9mIHN0cmluZyB0eXBlOiBwcmludHN0ciBzdXBwb3J0cyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbmx5IGxhdGluIHVwcGVyIGFuZCBsb3dlciBjYXNlIGxldHRlcnMsICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpZ2l0cywgc3BhY2UsIGFwb3N0cm9waGUsIGxlZnQgYW5kIHJpZ3RoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcmVudGhlc2lzLCBwbHVzIHNpZ24sIGNvbW1hLCBoeXBoZW4sICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvdCwgc2xhc2gsIGNvbG9uLCBlcXVhbCBzaWduLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdWVzdGlvbiBtYXJrJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHN0cik7XG4gIH0gZWxzZSBpZiAoL3N0ciQvLnRlc3QodGFnKSkge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHN0cik7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnb2JqRGVzYycpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogJyArIHRhZyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyB1bnN1cHBvcnRlZCcpO1xuICB9XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlT2JqaWQgPSBmdW5jdGlvbiBlbmNvZGVPYmppZChpZCwgdmFsdWVzLCByZWxhdGl2ZSkge1xuICBpZiAodHlwZW9mIGlkID09PSAnc3RyaW5nJykge1xuICAgIGlmICghdmFsdWVzKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ3N0cmluZyBvYmppZCBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAgZm91bmQnKTtcbiAgICBpZiAoIXZhbHVlcy5oYXNPd25Qcm9wZXJ0eShpZCkpXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignb2JqaWQgbm90IGZvdW5kIGluIHZhbHVlcyBtYXAnKTtcbiAgICBpZCA9IHZhbHVlc1tpZF0uc3BsaXQoL1tcXHNcXC5dKy9nKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKVxuICAgICAgaWRbaV0gfD0gMDtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGlkKSkge1xuICAgIGlkID0gaWQuc2xpY2UoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKVxuICAgICAgaWRbaV0gfD0gMDtcbiAgfVxuXG4gIGlmICghQXJyYXkuaXNBcnJheShpZCkpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignb2JqaWQoKSBzaG91bGQgYmUgZWl0aGVyIGFycmF5IG9yIHN0cmluZywgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dvdDogJyArIEpTT04uc3RyaW5naWZ5KGlkKSk7XG4gIH1cblxuICBpZiAoIXJlbGF0aXZlKSB7XG4gICAgaWYgKGlkWzFdID49IDQwKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ1NlY29uZCBvYmppZCBpZGVudGlmaWVyIE9PQicpO1xuICAgIGlkLnNwbGljZSgwLCAyLCBpZFswXSAqIDQwICsgaWRbMV0pO1xuICB9XG5cbiAgLy8gQ291bnQgbnVtYmVyIG9mIG9jdGV0c1xuICB2YXIgc2l6ZSA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaWRlbnQgPSBpZFtpXTtcbiAgICBmb3IgKHNpemUrKzsgaWRlbnQgPj0gMHg4MDsgaWRlbnQgPj49IDcpXG4gICAgICBzaXplKys7XG4gIH1cblxuICB2YXIgb2JqaWQgPSBuZXcgQnVmZmVyKHNpemUpO1xuICB2YXIgb2Zmc2V0ID0gb2JqaWQubGVuZ3RoIC0gMTtcbiAgZm9yICh2YXIgaSA9IGlkLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGlkZW50ID0gaWRbaV07XG4gICAgb2JqaWRbb2Zmc2V0LS1dID0gaWRlbnQgJiAweDdmO1xuICAgIHdoaWxlICgoaWRlbnQgPj49IDcpID4gMClcbiAgICAgIG9iamlkW29mZnNldC0tXSA9IDB4ODAgfCAoaWRlbnQgJiAweDdmKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG9iamlkKTtcbn07XG5cbmZ1bmN0aW9uIHR3byhudW0pIHtcbiAgaWYgKG51bSA8IDEwKVxuICAgIHJldHVybiAnMCcgKyBudW07XG4gIGVsc2VcbiAgICByZXR1cm4gbnVtO1xufVxuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlVGltZSA9IGZ1bmN0aW9uIGVuY29kZVRpbWUodGltZSwgdGFnKSB7XG4gIHZhciBzdHI7XG4gIHZhciBkYXRlID0gbmV3IERhdGUodGltZSk7XG5cbiAgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnKSB7XG4gICAgc3RyID0gW1xuICAgICAgdHdvKGRhdGUuZ2V0RnVsbFllYXIoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNb250aCgpICsgMSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENEYXRlKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDSG91cnMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNaW51dGVzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDU2Vjb25kcygpKSxcbiAgICAgICdaJ1xuICAgIF0uam9pbignJyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAndXRjdGltZScpIHtcbiAgICBzdHIgPSBbXG4gICAgICB0d28oZGF0ZS5nZXRGdWxsWWVhcigpICUgMTAwKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01vbnRoKCkgKyAxKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0RhdGUoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENIb3VycygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01pbnV0ZXMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENTZWNvbmRzKCkpLFxuICAgICAgJ1onXG4gICAgXS5qb2luKCcnKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyAnICsgdGFnICsgJyB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Jyk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fZW5jb2RlU3RyKHN0ciwgJ29jdHN0cicpO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZU51bGwgPSBmdW5jdGlvbiBlbmNvZGVOdWxsKCkge1xuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcignJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlSW50ID0gZnVuY3Rpb24gZW5jb2RlSW50KG51bSwgdmFsdWVzKSB7XG4gIGlmICh0eXBlb2YgbnVtID09PSAnc3RyaW5nJykge1xuICAgIGlmICghdmFsdWVzKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ1N0cmluZyBpbnQgb3IgZW51bSBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAnKTtcbiAgICBpZiAoIXZhbHVlcy5oYXNPd25Qcm9wZXJ0eShudW0pKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignVmFsdWVzIG1hcCBkb2VzblxcJ3QgY29udGFpbjogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShudW0pKTtcbiAgICB9XG4gICAgbnVtID0gdmFsdWVzW251bV07XG4gIH1cblxuICAvLyBCaWdudW0sIGFzc3VtZSBiaWcgZW5kaWFuXG4gIGlmICh0eXBlb2YgbnVtICE9PSAnbnVtYmVyJyAmJiAhQnVmZmVyLmlzQnVmZmVyKG51bSkpIHtcbiAgICB2YXIgbnVtQXJyYXkgPSBudW0udG9BcnJheSgpO1xuICAgIGlmICghbnVtLnNpZ24gJiYgbnVtQXJyYXlbMF0gJiAweDgwKSB7XG4gICAgICBudW1BcnJheS51bnNoaWZ0KDApO1xuICAgIH1cbiAgICBudW0gPSBuZXcgQnVmZmVyKG51bUFycmF5KTtcbiAgfVxuXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIobnVtKSkge1xuICAgIHZhciBzaXplID0gbnVtLmxlbmd0aDtcbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMClcbiAgICAgIHNpemUrKztcblxuICAgIHZhciBvdXQgPSBuZXcgQnVmZmVyKHNpemUpO1xuICAgIG51bS5jb3B5KG91dCk7XG4gICAgaWYgKG51bS5sZW5ndGggPT09IDApXG4gICAgICBvdXRbMF0gPSAwXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIob3V0KTtcbiAgfVxuXG4gIGlmIChudW0gPCAweDgwKVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG51bSk7XG5cbiAgaWYgKG51bSA8IDB4MTAwKVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFswLCBudW1dKTtcblxuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSBudW07IGkgPj0gMHgxMDA7IGkgPj49IDgpXG4gICAgc2l6ZSsrO1xuXG4gIHZhciBvdXQgPSBuZXcgQXJyYXkoc2l6ZSk7XG4gIGZvciAodmFyIGkgPSBvdXQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBvdXRbaV0gPSBudW0gJiAweGZmO1xuICAgIG51bSA+Pj0gODtcbiAgfVxuICBpZihvdXRbMF0gJiAweDgwKSB7XG4gICAgb3V0LnVuc2hpZnQoMCk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihuZXcgQnVmZmVyKG91dCkpO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZUJvb2wgPSBmdW5jdGlvbiBlbmNvZGVCb29sKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHZhbHVlID8gMHhmZiA6IDApO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX3VzZSA9IGZ1bmN0aW9uIHVzZShlbnRpdHksIG9iaikge1xuICBpZiAodHlwZW9mIGVudGl0eSA9PT0gJ2Z1bmN0aW9uJylcbiAgICBlbnRpdHkgPSBlbnRpdHkob2JqKTtcbiAgcmV0dXJuIGVudGl0eS5fZ2V0RW5jb2RlcignZGVyJykudHJlZTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9za2lwRGVmYXVsdCA9IGZ1bmN0aW9uIHNraXBEZWZhdWx0KGRhdGFCdWZmZXIsIHJlcG9ydGVyLCBwYXJlbnQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICB2YXIgaTtcbiAgaWYgKHN0YXRlWydkZWZhdWx0J10gPT09IG51bGwpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBkYXRhID0gZGF0YUJ1ZmZlci5qb2luKCk7XG4gIGlmIChzdGF0ZS5kZWZhdWx0QnVmZmVyID09PSB1bmRlZmluZWQpXG4gICAgc3RhdGUuZGVmYXVsdEJ1ZmZlciA9IHRoaXMuX2VuY29kZVZhbHVlKHN0YXRlWydkZWZhdWx0J10sIHJlcG9ydGVyLCBwYXJlbnQpLmpvaW4oKTtcblxuICBpZiAoZGF0YS5sZW5ndGggIT09IHN0YXRlLmRlZmF1bHRCdWZmZXIubGVuZ3RoKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBmb3IgKGk9MDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRhdGFbaV0gIT09IHN0YXRlLmRlZmF1bHRCdWZmZXJbaV0pXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBVdGlsaXR5IG1ldGhvZHNcblxuZnVuY3Rpb24gZW5jb2RlVGFnKHRhZywgcHJpbWl0aXZlLCBjbHMsIHJlcG9ydGVyKSB7XG4gIHZhciByZXM7XG5cbiAgaWYgKHRhZyA9PT0gJ3NlcW9mJylcbiAgICB0YWcgPSAnc2VxJztcbiAgZWxzZSBpZiAodGFnID09PSAnc2V0b2YnKVxuICAgIHRhZyA9ICdzZXQnO1xuXG4gIGlmIChkZXIudGFnQnlOYW1lLmhhc093blByb3BlcnR5KHRhZykpXG4gICAgcmVzID0gZGVyLnRhZ0J5TmFtZVt0YWddO1xuICBlbHNlIGlmICh0eXBlb2YgdGFnID09PSAnbnVtYmVyJyAmJiAodGFnIHwgMCkgPT09IHRhZylcbiAgICByZXMgPSB0YWc7XG4gIGVsc2VcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1Vua25vd24gdGFnOiAnICsgdGFnKTtcblxuICBpZiAocmVzID49IDB4MWYpXG4gICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdNdWx0aS1vY3RldCB0YWcgZW5jb2RpbmcgdW5zdXBwb3J0ZWQnKTtcblxuICBpZiAoIXByaW1pdGl2ZSlcbiAgICByZXMgfD0gMHgyMDtcblxuICByZXMgfD0gKGRlci50YWdDbGFzc0J5TmFtZVtjbHMgfHwgJ3VuaXZlcnNhbCddIDw8IDYpO1xuXG4gIHJldHVybiByZXM7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL2Rlci5qc1xuLy8gbW9kdWxlIGlkID0gODBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///80\n");

/***/ }),
/* 81 */
/***/ (function(module, exports) {

eval("module.exports = {\"1.3.132.0.10\":\"secp256k1\",\"1.3.132.0.33\":\"p224\",\"1.2.840.10045.3.1.1\":\"p192\",\"1.2.840.10045.3.1.7\":\"p256\",\"1.3.132.0.34\":\"p384\",\"1.3.132.0.35\":\"p521\"}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2Jyb3dzZXIvY3VydmVzLmpzb24/NDAzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcIjEuMy4xMzIuMC4xMFwiOlwic2VjcDI1NmsxXCIsXCIxLjMuMTMyLjAuMzNcIjpcInAyMjRcIixcIjEuMi44NDAuMTAwNDUuMy4xLjFcIjpcInAxOTJcIixcIjEuMi44NDAuMTAwNDUuMy4xLjdcIjpcInAyNTZcIixcIjEuMy4xMzIuMC4zNFwiOlwicDM4NFwiLFwiMS4zLjEzMi4wLjM1XCI6XCJwNTIxXCJ9XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2Jyb3dzZXIvY3VydmVzLmpzb25cbi8vIG1vZHVsZSBpZCA9IDgxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///81\n");

/***/ }),
/* 82 */
/***/ (function(module, exports, __webpack_require__) {

eval("var createHash = __webpack_require__(15)\nvar Buffer = __webpack_require__(1).Buffer\n\nmodule.exports = function (seed, len) {\n  var t = Buffer.alloc(0)\n  var i = 0\n  var c\n  while (t.length < len) {\n    c = i2ops(i++)\n    t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n  }\n  return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n  var out = Buffer.allocUnsafe(4)\n  out.writeUInt32BE(c, 0)\n  return out\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvbWdmLmpzPzBhZTYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc2VlZCwgbGVuKSB7XG4gIHZhciB0ID0gQnVmZmVyLmFsbG9jKDApXG4gIHZhciBpID0gMFxuICB2YXIgY1xuICB3aGlsZSAodC5sZW5ndGggPCBsZW4pIHtcbiAgICBjID0gaTJvcHMoaSsrKVxuICAgIHQgPSBCdWZmZXIuY29uY2F0KFt0LCBjcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKHNlZWQpLnVwZGF0ZShjKS5kaWdlc3QoKV0pXG4gIH1cbiAgcmV0dXJuIHQuc2xpY2UoMCwgbGVuKVxufVxuXG5mdW5jdGlvbiBpMm9wcyAoYykge1xuICB2YXIgb3V0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKDQpXG4gIG91dC53cml0ZVVJbnQzMkJFKGMsIDApXG4gIHJldHVybiBvdXRcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L21nZi5qc1xuLy8gbW9kdWxlIGlkID0gODJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///82\n");

/***/ }),
/* 83 */
/***/ (function(module, exports) {

eval("module.exports = function xor (a, b) {\n  var len = a.length\n  var i = -1\n  while (++i < len) {\n    a[i] ^= b[i]\n  }\n  return a\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQveG9yLmpzP2NjZTMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4b3IgKGEsIGIpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIGFbaV0gXj0gYltpXVxuICB9XG4gIHJldHVybiBhXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC94b3IuanNcbi8vIG1vZHVsZSBpZCA9IDgzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///83\n");

/***/ }),
/* 84 */
/***/ (function(module, exports, __webpack_require__) {

eval("var BN = __webpack_require__(4)\nvar Buffer = __webpack_require__(1).Buffer\n\nfunction withPublic (paddedMsg, key) {\n  return Buffer.from(paddedMsg\n    .toRed(BN.mont(key.modulus))\n    .redPow(new BN(key.publicExponent))\n    .fromRed()\n    .toArray())\n}\n\nmodule.exports = withPublic\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvd2l0aFB1YmxpYy5qcz9lNTAwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG5mdW5jdGlvbiB3aXRoUHVibGljIChwYWRkZWRNc2csIGtleSkge1xuICByZXR1cm4gQnVmZmVyLmZyb20ocGFkZGVkTXNnXG4gICAgLnRvUmVkKEJOLm1vbnQoa2V5Lm1vZHVsdXMpKVxuICAgIC5yZWRQb3cobmV3IEJOKGtleS5wdWJsaWNFeHBvbmVudCkpXG4gICAgLmZyb21SZWQoKVxuICAgIC50b0FycmF5KCkpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gd2l0aFB1YmxpY1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvd2l0aFB1YmxpYy5qc1xuLy8gbW9kdWxlIGlkID0gODRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///84\n");

/***/ }),
/* 85 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _FormApp = __webpack_require__(86);\n\n(function () {\n    var formBoard = document.getElementById('formBoard');\n    var $container = $('#formDesign');\n    (0, _FormApp.render)(formBoard, $container);\n})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2luZGV4LmpzPzFmZGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtyZW5kZXJ9IGZyb20gJy4vRm9ybUFwcCc7XHJcbigoKSA9PiB7XHJcbiAgICBjb25zdCBmb3JtQm9hcmQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybUJvYXJkJyk7XHJcbiAgICBjb25zdCAkY29udGFpbmVyID0gJCgnI2Zvcm1EZXNpZ24nKTtcclxuICAgIHJlbmRlcihmb3JtQm9hcmQsICRjb250YWluZXIpO1xyXG59KSgpO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvaW5kZXguanMiXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///85\n");

/***/ }),
/* 86 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.render = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _view = __webpack_require__(42);\n\nvar _utility = __webpack_require__(2);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar FormApp = function () {\n  function FormApp(panel, container) {\n    _classCallCheck(this, FormApp);\n\n    this.panel = panel;\n    this.container = container;\n    this.form = null;\n  }\n\n  _createClass(FormApp, [{\n    key: \"Init\",\n    value: function Init() {\n      var _this = this;\n\n      //鍦ㄨ繖閲岃繘琛岃〃鍗曡繘琛屽垵濮嬪寲\n      var api = new _utility.Api();\n      var htmlhandle = new _utility.HTMLOperate(this.form);\n\n      var html = \"\";\n      $.when(api.getHtml()).done(function (data) {\n        html = data.demo.data;\n        console.log(_utility.StringUtil.dencodeHTML(\"[{@quot;text@quot;:@#146;ces@#146;,@quot;value@quot;:@#146;VALUE_TYPE_VARCHAR@#146;},{@quot;text@quot;:@#146;ces3@#146;,@quot;value@quot;:@#146;VALUE_TYPE_VARCHAR@#146;}];[ces]\"));\n\n        html = _utility.StringUtil.dencodeHTML(html);\n        html = htmlhandle.hadleHtml(html);\n\n        console.log(html);\n        $(_this.panel).html(html);\n        _this.form.parseHtml($(_this.panel));\n      });\n      this.initFormPanel(this.panel);\n      this.registerEvent();\n      this.form.width = $(this.panel).width();\n      this.initTree(this.form);\n      this.initPropPanel($(\"#propsBoard\"));\n    }\n  }, {\n    key: \"initFormPanel\",\n    value: function initFormPanel(panel) {\n      if (panel) {\n        this.form = new _view.FormPanel(panel);\n        this.form.init(this.form);\n      }\n    }\n  }, {\n    key: \"initTree\",\n    value: function initTree(form) {\n      var treeDiv = this.container.find(\"#tree\");\n      var tree = _view.Tree.getInstance();\n      tree.init(treeDiv, form);\n    }\n  }, {\n    key: \"initPropPanel\",\n    value: function initPropPanel($container) {\n      var propsPanel = _view.PropsPanel.getInstance();\n\n      propsPanel.init({ container: $container, form: this.form || null });\n    }\n  }, {\n    key: \"renderPropsPanel\",\n    value: function renderPropsPanel() {\n      var propsPanel = _view.PropsPanel.getInstance();\n\n      propsPanel.render();\n    }\n  }, {\n    key: \"registerEvent\",\n    value: function registerEvent() {\n      var _this2 = this,\n          _arguments = arguments;\n\n      var $container = $(this.container);\n      var htmlhandle = new _utility.HTMLOperate(this.form);\n      var panel = this.panel;\n      var form = this.form;\n      var $component = $container.find(\"#component\");\n      var $diagramFlow = $container.find(\"#diagramFlow\");\n      $component.on(\"mousedown\", \"#Input\", function () {\n        console.log(\"input\");\n        form.addInput();\n      });\n\n      $component.on(\"mousedown\", \"#Textarea\", function () {\n        console.log(\"Textarea\");\n        form.addTextarea();\n      });\n      $component.on(\"mousedown\", \"#Radio\", function () {\n        console.log(\"radio\");\n        form.addRadio();\n      });\n      $component.on(\"mousedown\", \"#Checkbox\", function () {\n        console.log(\"checkbox\");\n        form.addCheckbox();\n      });\n      $component.on(\"mousedown\", \"#Data\", function () {\n        console.log(\"checkbox\");\n        form.addData();\n      });\n      $component.on(\"mousedown\", \"#Select\", function () {\n        console.log(\"checkbox\");\n        form.addSelect();\n      });\n      $component.on(\"mousedown\", \"#Dept\", function () {\n        console.log(\"Dept\");\n        form.addDept();\n      });\n      $component.on(\"mousedown\", \"#Selectaboutfield\", function () {\n        console.log(\"Selectaboutfield\");\n        form.addSelectaboutfield();\n      });\n      $component.on(\"mousedown\", \"#Treedepartmentfield\", function () {\n        console.log(\"Treedepartmentfield\");\n        form.addTreedepartmentfield();\n      });\n      $component.on(\"mousedown\", \"#Userfield\", function () {\n        console.log(\"Userfield\");\n        form.addUserfield();\n      });\n      $component.on(\"mousedown\", \"#Suggestfield\", function () {\n        console.log(\"Suggestfield\");\n        form.addSuggestfield();\n      });\n      $component.on(\"mousedown\", \"#Button\", function () {\n        console.log(\"button\");\n        form.addButton();\n      });\n      $component.on(\"mousedown\", \"#Viewdialogfield\", function () {\n        console.log(\"Viewdialogfield\");\n        form.addViewdialogfield();\n      });\n      $component.on(\"mousedown\", \"#Tabfield\", function () {\n        console.log(\"Tabfield\");\n        form.addTabfield();\n      });\n      $component.on(\"mousedown\", \"#Calctextfield\", function () {\n        console.log(\"Calctextfield\");\n        form.addCalctextfield();\n      });\n      $component.on(\"mousedown\", \"#Includefield\", function () {\n        console.log(\"Includefield\");\n        form.addIncludefield();\n      });\n      $component.on(\"mousedown\", \"#Surveyfield\", function () {\n        console.log(\"Surveyfield\");\n        form.addSurveyfield();\n      });\n      $component.on(\"mousedown\", \"#Attachment\", function () {\n        console.log(\"Attachment\");\n        form.addAttachment();\n      });\n      $component.on(\"mousedown\", \"#Imageuploadfield\", function () {\n        console.log(\"Imageuploadfield\");\n        form.addImageuploadfield();\n      });\n      $component.on(\"mousedown\", \"#Onlinetakephotofield\", function () {\n        console.log(\"Onlinetakephotofield\");\n        form.addOnlinetakephotofield();\n      });\n      $component.on(\"mousedown\", \"#Weixingpsfield\", function () {\n        console.log(\"Weixingpsfield\");\n        form.addWeixingpsfield();\n      });\n      $component.on(\"mousedown\", \"#Weixinrecordfield\", function () {\n        console.log(\"Weixinrecordfield\");\n        form.addWeixinrecordfield();\n      });\n      $component.on(\"mousedown\", \"#Qrcodefield\", function () {\n        console.log(\"Qrcodefield\");\n        form.addQrcodefield();\n      });\n      $component.on(\"mousedown\", \"#Mapfield\", function () {\n        console.log(\"Mapfield\");\n        form.addMapfield();\n      });\n      $component.on(\"mousedown\", \"#Genericwordfield\", function () {\n        console.log(\"Genericwordfield\");\n        form.addGenericwordfield();\n      });\n      $component.on(\"mousedown\", \"#Htmleditorfield\", function () {\n        console.log(\"Htmleditorfield\");\n        form.addHtmleditorfield();\n      });\n      $component.on(\"mousedown\", \"#Flowhistoryfield\", function () {\n        console.log(\"Flowhistoryfield\");\n        form.addFlowhistoryfield();\n      });\n      $component.on(\"mousedown\", \"#Flowreminderhistoryfield\", function () {\n        console.log(\"Flowreminderhistoryfield\");\n        form.addFlowreminderhistoryfield();\n      });\n      $component.on(\"mousedown\", \"#Informationfeedbackfield\", function () {\n        console.log(\"Informationfeedbackfield\");\n        form.addInformationfeedbackfield();\n      });\n\n      $component.on(\"mousedown\", \"#TableLayout\", function () {\n        //console.log(\"TableLayout\");\n        form.addTableLayout();\n      });\n\n      $component.on(\"mousedown\", \"#FlowLayout\", function () {\n        //console.log(\"TableLayout\");\n        form.addFlowLayout();\n      });\n      $component.on(\"mousedown\", \"#CellLayout\", function () {\n        //console.log(\"TableLayout\");\n        form.addCellLayout();\n      });\n      $(\"#save\").click(function () {\n        var html = $(panel).html();\n        html = htmlhandle.toHtml(html);\n        console.log(\"杞爜鍓峔", html);\n        html = _utility.StringUtil.encodeHTML(html);\n        console.log(html);\n      });\n      $diagramFlow.on(\"click\", function (e) {\n        if ($(e.target).attr(\"id\") == \"diagramFlow\") {\n          //娓呯┖姝e湪缂栬緫鐨勫厓绱犲拰鍖哄煙\n          form.clearCurrToEdit();\n        }\n        console.log(\"澶栧眰\");\n        e.stopPropagation();\n        _this2.renderPropsPanel();\n        return false;\n      });\n      $diagramFlow.on(\"drop\", function () {\n        var ev = window.event || _arguments.callee.caller.arguments[0];\n        ev.preventDefault();\n        ev.stopPropagation();\n        var data = ev.dataTransfer.getData(\"Text\");\n        ev.target.appendChild(document.getElementById(data));\n        form._currentChunkId = ev.target.id;\n        form._currentElemId = data;\n        form.resetElementChunk();\n        form.repaint();\n      });\n      $component.on(\"click\", function (e) {\n        return false;\n      });\n    }\n  }]);\n\n  return FormApp;\n}();\n\nvar render = exports.render = function render(panel, container) {\n  new FormApp(panel, container).Init();\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL0Zvcm1BcHAuanM/OTgzMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtUGFuZWwsIFByb3BzUGFuZWwsIFRyZWUgfSBmcm9tIFwiLi9mb3JtL3ZpZXdcIjtcclxuaW1wb3J0IHsgQXBpLCBIVE1MT3BlcmF0ZSwgU3RyaW5nVXRpbCB9IGZyb20gXCIuL3V0aWxpdHlcIjtcclxuY2xhc3MgRm9ybUFwcCB7XHJcbiAgY29uc3RydWN0b3IocGFuZWwsIGNvbnRhaW5lcikge1xyXG4gICAgdGhpcy5wYW5lbCA9IHBhbmVsO1xyXG4gICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XHJcbiAgICB0aGlzLmZvcm0gPSBudWxsO1xyXG4gIH1cclxuICBJbml0KCkge1xyXG4gICAgLy/lnKjov5nph4zov5vooYzooajljZXov5vooYzliJ3lp4vljJZcclxuICAgIGxldCBhcGkgPSBuZXcgQXBpKCk7XHJcbiAgICBsZXQgaHRtbGhhbmRsZSA9IG5ldyBIVE1MT3BlcmF0ZSh0aGlzLmZvcm0pO1xyXG5cclxuICAgIGxldCBodG1sID0gXCJcIjtcclxuICAgICQud2hlbihhcGkuZ2V0SHRtbCgpKS5kb25lKGRhdGEgPT4ge1xyXG4gICAgICBodG1sID0gZGF0YS5kZW1vLmRhdGE7XHJcbiAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgIFN0cmluZ1V0aWwuZGVuY29kZUhUTUwoXHJcbiAgICAgICAgICBcIlt7QHF1b3Q7dGV4dEBxdW90OzpAIzE0NjtjZXNAIzE0NjssQHF1b3Q7dmFsdWVAcXVvdDs6QCMxNDY7VkFMVUVfVFlQRV9WQVJDSEFSQCMxNDY7fSx7QHF1b3Q7dGV4dEBxdW90OzpAIzE0NjtjZXMzQCMxNDY7LEBxdW90O3ZhbHVlQHF1b3Q7OkAjMTQ2O1ZBTFVFX1RZUEVfVkFSQ0hBUkAjMTQ2O31dO1tjZXNdXCJcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBodG1sID0gU3RyaW5nVXRpbC5kZW5jb2RlSFRNTChodG1sKTtcclxuICAgICAgaHRtbCA9IGh0bWxoYW5kbGUuaGFkbGVIdG1sKGh0bWwpO1xyXG5cclxuICAgICAgY29uc29sZS5sb2coaHRtbCk7XHJcbiAgICAgICQodGhpcy5wYW5lbCkuaHRtbChodG1sKTtcclxuICAgICAgdGhpcy5mb3JtLnBhcnNlSHRtbCgkKHRoaXMucGFuZWwpKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pbml0Rm9ybVBhbmVsKHRoaXMucGFuZWwpO1xyXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50KCk7XHJcbiAgICB0aGlzLmZvcm0ud2lkdGggPSAkKHRoaXMucGFuZWwpLndpZHRoKCk7XHJcbiAgICB0aGlzLmluaXRUcmVlKHRoaXMuZm9ybSk7XHJcbiAgICB0aGlzLmluaXRQcm9wUGFuZWwoJChcIiNwcm9wc0JvYXJkXCIpKTtcclxuICB9XHJcbiAgaW5pdEZvcm1QYW5lbChwYW5lbCkge1xyXG4gICAgaWYgKHBhbmVsKSB7XHJcbiAgICAgIHRoaXMuZm9ybSA9IG5ldyBGb3JtUGFuZWwocGFuZWwpO1xyXG4gICAgICB0aGlzLmZvcm0uaW5pdCh0aGlzLmZvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBpbml0VHJlZShmb3JtKSB7XHJcbiAgICBjb25zdCB0cmVlRGl2ID0gdGhpcy5jb250YWluZXIuZmluZChcIiN0cmVlXCIpO1xyXG4gICAgY29uc3QgdHJlZSA9IFRyZWUuZ2V0SW5zdGFuY2UoKTtcclxuICAgIHRyZWUuaW5pdCh0cmVlRGl2LCBmb3JtKTtcclxuICB9XHJcblxyXG4gIGluaXRQcm9wUGFuZWwoJGNvbnRhaW5lcikge1xyXG4gICAgY29uc3QgcHJvcHNQYW5lbCA9IFByb3BzUGFuZWwuZ2V0SW5zdGFuY2UoKTtcclxuXHJcbiAgICBwcm9wc1BhbmVsLmluaXQoeyBjb250YWluZXI6ICRjb250YWluZXIsIGZvcm06IHRoaXMuZm9ybSB8fCBudWxsIH0pO1xyXG4gIH1cclxuICByZW5kZXJQcm9wc1BhbmVsKCkge1xyXG4gICAgY29uc3QgcHJvcHNQYW5lbCA9IFByb3BzUGFuZWwuZ2V0SW5zdGFuY2UoKTtcclxuXHJcbiAgICBwcm9wc1BhbmVsLnJlbmRlcigpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJFdmVudCgpIHtcclxuICAgIGNvbnN0ICRjb250YWluZXIgPSAkKHRoaXMuY29udGFpbmVyKTtcclxuICAgIGxldCBodG1saGFuZGxlID0gbmV3IEhUTUxPcGVyYXRlKHRoaXMuZm9ybSk7XHJcbiAgICBjb25zdCBwYW5lbCA9IHRoaXMucGFuZWw7XHJcbiAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtO1xyXG4gICAgY29uc3QgJGNvbXBvbmVudCA9ICRjb250YWluZXIuZmluZChcIiNjb21wb25lbnRcIik7XHJcbiAgICBjb25zdCAkZGlhZ3JhbUZsb3cgPSAkY29udGFpbmVyLmZpbmQoXCIjZGlhZ3JhbUZsb3dcIik7XHJcbiAgICAkY29tcG9uZW50Lm9uKFwibW91c2Vkb3duXCIsIFwiI0lucHV0XCIsICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJpbnB1dFwiKTtcclxuICAgICAgZm9ybS5hZGRJbnB1dCgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNUZXh0YXJlYVwiLCAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVGV4dGFyZWFcIik7XHJcbiAgICAgIGZvcm0uYWRkVGV4dGFyZWEoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNSYWRpb1wiLCAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwicmFkaW9cIik7XHJcbiAgICAgIGZvcm0uYWRkUmFkaW8oKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNDaGVja2JveFwiLCAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiY2hlY2tib3hcIik7XHJcbiAgICAgIGZvcm0uYWRkQ2hlY2tib3goKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNEYXRhXCIsICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJjaGVja2JveFwiKTtcclxuICAgICAgZm9ybS5hZGREYXRhKCk7XHJcbiAgICB9KTtcclxuICAgICRjb21wb25lbnQub24oXCJtb3VzZWRvd25cIiwgXCIjU2VsZWN0XCIsICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJjaGVja2JveFwiKTtcclxuICAgICAgZm9ybS5hZGRTZWxlY3QoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNEZXB0XCIsICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJEZXB0XCIpO1xyXG4gICAgICBmb3JtLmFkZERlcHQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNTZWxlY3RhYm91dGZpZWxkXCIsICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJTZWxlY3RhYm91dGZpZWxkXCIpO1xyXG4gICAgICBmb3JtLmFkZFNlbGVjdGFib3V0ZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNUcmVlZGVwYXJ0bWVudGZpZWxkXCIsICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJUcmVlZGVwYXJ0bWVudGZpZWxkXCIpO1xyXG4gICAgICBmb3JtLmFkZFRyZWVkZXBhcnRtZW50ZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNVc2VyZmllbGRcIiwgKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlVzZXJmaWVsZFwiKTtcclxuICAgICAgZm9ybS5hZGRVc2VyZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNTdWdnZXN0ZmllbGRcIiwgKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlN1Z2dlc3RmaWVsZFwiKTtcclxuICAgICAgZm9ybS5hZGRTdWdnZXN0ZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNCdXR0b25cIiwgKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcImJ1dHRvblwiKTtcclxuICAgICAgZm9ybS5hZGRCdXR0b24oKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNWaWV3ZGlhbG9nZmllbGRcIiwgKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlZpZXdkaWFsb2dmaWVsZFwiKTtcclxuICAgICAgZm9ybS5hZGRWaWV3ZGlhbG9nZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNUYWJmaWVsZFwiLCAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVGFiZmllbGRcIik7XHJcbiAgICAgIGZvcm0uYWRkVGFiZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNDYWxjdGV4dGZpZWxkXCIsICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJDYWxjdGV4dGZpZWxkXCIpO1xyXG4gICAgICBmb3JtLmFkZENhbGN0ZXh0ZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNJbmNsdWRlZmllbGRcIiwgKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkluY2x1ZGVmaWVsZFwiKTtcclxuICAgICAgZm9ybS5hZGRJbmNsdWRlZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNTdXJ2ZXlmaWVsZFwiLCAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiU3VydmV5ZmllbGRcIik7XHJcbiAgICAgIGZvcm0uYWRkU3VydmV5ZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNBdHRhY2htZW50XCIsICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJBdHRhY2htZW50XCIpO1xyXG4gICAgICBmb3JtLmFkZEF0dGFjaG1lbnQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNJbWFnZXVwbG9hZGZpZWxkXCIsICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJJbWFnZXVwbG9hZGZpZWxkXCIpO1xyXG4gICAgICBmb3JtLmFkZEltYWdldXBsb2FkZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNPbmxpbmV0YWtlcGhvdG9maWVsZFwiLCAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiT25saW5ldGFrZXBob3RvZmllbGRcIik7XHJcbiAgICAgIGZvcm0uYWRkT25saW5ldGFrZXBob3RvZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNXZWl4aW5ncHNmaWVsZFwiLCAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiV2VpeGluZ3BzZmllbGRcIik7XHJcbiAgICAgIGZvcm0uYWRkV2VpeGluZ3BzZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNXZWl4aW5yZWNvcmRmaWVsZFwiLCAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiV2VpeGlucmVjb3JkZmllbGRcIik7XHJcbiAgICAgIGZvcm0uYWRkV2VpeGlucmVjb3JkZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNRcmNvZGVmaWVsZFwiLCAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiUXJjb2RlZmllbGRcIik7XHJcbiAgICAgIGZvcm0uYWRkUXJjb2RlZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNNYXBmaWVsZFwiLCAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiTWFwZmllbGRcIik7XHJcbiAgICAgIGZvcm0uYWRkTWFwZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNHZW5lcmljd29yZGZpZWxkXCIsICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmljd29yZGZpZWxkXCIpO1xyXG4gICAgICBmb3JtLmFkZEdlbmVyaWN3b3JkZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNIdG1sZWRpdG9yZmllbGRcIiwgKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkh0bWxlZGl0b3JmaWVsZFwiKTtcclxuICAgICAgZm9ybS5hZGRIdG1sZWRpdG9yZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNGbG93aGlzdG9yeWZpZWxkXCIsICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJGbG93aGlzdG9yeWZpZWxkXCIpO1xyXG4gICAgICBmb3JtLmFkZEZsb3doaXN0b3J5ZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNGbG93cmVtaW5kZXJoaXN0b3J5ZmllbGRcIiwgKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkZsb3dyZW1pbmRlcmhpc3RvcnlmaWVsZFwiKTtcclxuICAgICAgZm9ybS5hZGRGbG93cmVtaW5kZXJoaXN0b3J5ZmllbGQoKTtcclxuICAgIH0pO1xyXG4gICAgJGNvbXBvbmVudC5vbihcIm1vdXNlZG93blwiLCBcIiNJbmZvcm1hdGlvbmZlZWRiYWNrZmllbGRcIiwgKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkluZm9ybWF0aW9uZmVlZGJhY2tmaWVsZFwiKTtcclxuICAgICAgZm9ybS5hZGRJbmZvcm1hdGlvbmZlZWRiYWNrZmllbGQoKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICAkY29tcG9uZW50Lm9uKFwibW91c2Vkb3duXCIsIFwiI1RhYmxlTGF5b3V0XCIsICgpID0+IHtcclxuICAgICAgLy9jb25zb2xlLmxvZyhcIlRhYmxlTGF5b3V0XCIpO1xyXG4gICAgICBmb3JtLmFkZFRhYmxlTGF5b3V0KCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAkY29tcG9uZW50Lm9uKFwibW91c2Vkb3duXCIsIFwiI0Zsb3dMYXlvdXRcIiwgKCkgPT4ge1xyXG4gICAgICAvL2NvbnNvbGUubG9nKFwiVGFibGVMYXlvdXRcIik7XHJcbiAgICAgIGZvcm0uYWRkRmxvd0xheW91dCgpO1xyXG4gICAgfSk7XHJcbiAgICAkY29tcG9uZW50Lm9uKFwibW91c2Vkb3duXCIsIFwiI0NlbGxMYXlvdXRcIiwgKCkgPT4ge1xyXG4gICAgICAvL2NvbnNvbGUubG9nKFwiVGFibGVMYXlvdXRcIik7XHJcbiAgICAgIGZvcm0uYWRkQ2VsbExheW91dCgpO1xyXG4gICAgfSk7XHJcbiAgICAkKFwiI3NhdmVcIikuY2xpY2soZnVuY3Rpb24oKSB7XHJcbiAgICAgIGxldCBodG1sID0gJChwYW5lbCkuaHRtbCgpO1xyXG4gICAgICBodG1sID0gaHRtbGhhbmRsZS50b0h0bWwoaHRtbCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwi6L2s56CB5YmNXCIsIGh0bWwpO1xyXG4gICAgICBodG1sID0gU3RyaW5nVXRpbC5lbmNvZGVIVE1MKGh0bWwpO1xyXG4gICAgICBjb25zb2xlLmxvZyhodG1sKTtcclxuICAgIH0pO1xyXG4gICAgJGRpYWdyYW1GbG93Lm9uKFwiY2xpY2tcIiwgZSA9PiB7XHJcbiAgICAgIGlmICgkKGUudGFyZ2V0KS5hdHRyKFwiaWRcIikgPT0gXCJkaWFncmFtRmxvd1wiKSB7XHJcbiAgICAgICAgLy/muIXnqbrmraPlnKjnvJbovpHnmoTlhYPntKDlkozljLrln59cclxuICAgICAgICBmb3JtLmNsZWFyQ3VyclRvRWRpdCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKFwi5aSW5bGCXCIpO1xyXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB0aGlzLnJlbmRlclByb3BzUGFuZWwoKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgICAkZGlhZ3JhbUZsb3cub24oXCJkcm9wXCIsICgpID0+IHtcclxuICAgICAgbGV0IGV2ID0gd2luZG93LmV2ZW50IHx8IGFyZ3VtZW50cy5jYWxsZWUuY2FsbGVyLmFyZ3VtZW50c1swXTtcclxuICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIHZhciBkYXRhID0gZXYuZGF0YVRyYW5zZmVyLmdldERhdGEoXCJUZXh0XCIpO1xyXG4gICAgICBldi50YXJnZXQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGF0YSkpO1xyXG4gICAgICBmb3JtLl9jdXJyZW50Q2h1bmtJZCA9IGV2LnRhcmdldC5pZDtcclxuICAgICAgZm9ybS5fY3VycmVudEVsZW1JZCA9IGRhdGE7XHJcbiAgICAgIGZvcm0ucmVzZXRFbGVtZW50Q2h1bmsoKTtcclxuICAgICAgZm9ybS5yZXBhaW50KCk7XHJcbiAgICB9KTtcclxuICAgICRjb21wb25lbnQub24oXCJjbGlja1wiLCBlID0+IHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBjb25zdCByZW5kZXIgPSAocGFuZWwsIGNvbnRhaW5lcikgPT4ge1xyXG4gIG5ldyBGb3JtQXBwKHBhbmVsLCBjb250YWluZXIpLkluaXQoKTtcclxufTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9Gb3JtQXBwLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///86\n");

/***/ }),
/* 87 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Api = function () {\n\tfunction Api() {\n\t\t_classCallCheck(this, Api);\n\t}\n\t// this.contextPath = contextPath;\n\n\t/**\r\n     * 鑾峰彇闈欐€佹暟鎹甛r\n     */\n\n\n\t_createClass(Api, [{\n\t\tkey: 'getHtml',\n\t\tvalue: function getHtml() {\n\n\t\t\treturn $.ajax({\n\t\t\t\tasync: true,\n\t\t\t\ttype: \"GET\",\n\t\t\t\turl: 'json/config.json',\n\t\t\t\tdataType: 'json',\n\t\t\t\tcontentType: 'application/json'\n\t\t\t});\n\t\t}\n\n\t\t/**\r\n      * 鑾峰彇妯℃澘\r\n      * @param tmlName 闇€瑕佽姹傜殑妯℃澘鍚嶇О\r\n   * @return 杩斿洖$.Deferred瀹炰緥锛岀敤浜庡悗闈㈣皟鐢╠one,fail鏂规硶\r\n      */\n\n\t}, {\n\t\tkey: 'getTemplete',\n\t\tvalue: function getTemplete(tmlName) {\n\n\t\t\tif (typeof tmlName == 'string' && tmlName.indexOf('.html') == -1) {\n\t\t\t\ttmlName += '.html';\n\t\t\t}\n\n\t\t\treturn $.ajax({\n\t\t\t\tasync: true,\n\t\t\t\ttype: 'GET',\n\t\t\t\turl: 'tpl/' + tmlName\n\t\t\t});\n\t\t}\n\n\t\t/**\r\n      * 鑾峰彇json閰嶇疆鏂囦欢锛屼富瑕佹槸鑾峰彇涓嬫媺鍒楄〃鐨勫悇椤归€夋嫨鍊糪r\n   * @return 杩斿洖ajax寮傛瀹炰緥锛岀敤浜庡悗闈㈣皟鐢╠one,fail鏂规硶\r\n      */\n\n\t}, {\n\t\tkey: 'getJSON',\n\t\tvalue: function getJSON() {\n\t\t\treturn $.ajax({\n\t\t\t\tasync: true,\n\t\t\t\ttype: \"GET\",\n\t\t\t\turl: 'json/config.json',\n\t\t\t\tdataType: 'json',\n\t\t\t\tcontentType: 'application/json'\n\t\t\t});\n\t\t}\n\n\t\t/**\r\n   * 鑾峰彇鎶ヨ〃鐨勫熀鏈厤缃俊鎭�(鎵€閫夋暟鎹簮锛屾墍濉殑鏌ヨ璇彞绛夌瓑)\r\n   * @return 杩斿洖$.Deferred瀹炰緥锛岀敤浜庡悗闈㈣皟鐢╠one,fail鏂规硶\r\n   */\n\n\t}, {\n\t\tkey: 'getReportBasicConf',\n\t\tvalue: function getReportBasicConf(name, sql, appId) {\n\t\t\tvar result = '';\n\n\t\t\t$.ajax({\n\t\t\t\tasync: false,\n\t\t\t\ttype: 'POST',\n\t\t\t\turl: this.contextPath + '/core/report/getquerycolumninfos',\n\t\t\t\tdata: {\n\t\t\t\t\tdataSourceName: name,\n\t\t\t\t\tsql: sql,\n\t\t\t\t\tapplicationId: appId\n\t\t\t\t},\n\t\t\t\tdataType: 'json'\n\t\t\t}).done(function (data) {\n\t\t\t\tif (data.resultCode == 1) {\n\t\t\t\t\tresult = { 'success': data.queryColumnInfos };\n\t\t\t\t} else {\n\t\t\t\t\tresult = { 'error': data.msg };\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn result;\n\t\t}\n\n\t\t/**\r\n   * 鑾峰彇瀵瑰簲鐨剎ml閰嶇疆鏂囦欢锛岀敤浠ュ弽瑙f瀽鐢熸垚鎶ヨ〃鍏冪礌\r\n   * @return 杩斿洖xml瀛楃涓瞈r\n   */\n\n\t}, {\n\t\tkey: 'getXMLConf',\n\t\tvalue: function getXMLConf(fileId) {\n\t\t\tvar xml = '';\n\n\t\t\t$.ajax({\n\t\t\t\tasync: false,\n\t\t\t\ttype: 'GET',\n\t\t\t\turl: this.contextPath + '/core/report/getjrxml/' + fileId,\n\t\t\t\tdataType: 'json'\n\t\t\t}).done(function (data) {\n\t\t\t\tif (data.resultCode == 1) {\n\t\t\t\t\txml = data.jrxmlString;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn xml;\n\t\t}\n\t}]);\n\n\treturn Api;\n}();\n\nexports.default = Api;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL3V0aWxpdHkvQXBpLmpzPzRiZmYiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgQXBpIHtcclxuXHRcclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdC8vIHRoaXMuY29udGV4dFBhdGggPSBjb250ZXh0UGF0aDtcclxuXHR9XHJcblx0LyoqXHJcbiAgICAgKiDojrflj5bpnZnmgIHmlbDmja5cclxuICAgICAqL1xyXG5cdGdldEh0bWwoKXtcclxuXHRcdFxyXG5cdFx0cmV0dXJuICQuYWpheCh7XHJcblx0XHRcdGFzeW5jOiB0cnVlLFxyXG5cdFx0XHR0eXBlOiBcIkdFVFwiLFxyXG5cdFx0XHR1cmw6ICdqc29uL2NvbmZpZy5qc29uJyxcclxuXHRcdFx0ZGF0YVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG5cdFx0fSlcclxuXHRcdFxyXG5cdH1cclxuXHJcblx0XHJcblx0LyoqXHJcbiAgICAgKiDojrflj5bmqKHmnb9cclxuICAgICAqIEBwYXJhbSB0bWxOYW1lIOmcgOimgeivt+axgueahOaooeadv+WQjeensFxyXG5cdCAqIEByZXR1cm4g6L+U5ZueJC5EZWZlcnJlZOWunuS+i++8jOeUqOS6juWQjumdouiwg+eUqGRvbmUsZmFpbOaWueazlVxyXG4gICAgICovXHJcblx0Z2V0VGVtcGxldGUodG1sTmFtZSkge1xyXG5cdFx0XHJcblx0XHRpZih0eXBlb2YgdG1sTmFtZSA9PSAnc3RyaW5nJyAmJiB0bWxOYW1lLmluZGV4T2YoJy5odG1sJykgPT0gLTEpIHtcclxuXHRcdFx0dG1sTmFtZSArPSAnLmh0bWwnO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHRyZXR1cm4gJC5hamF4KHtcclxuXHRcdFx0YXN5bmM6IHRydWUsXHJcblx0XHRcdHR5cGU6ICdHRVQnLFxyXG5cdFx0XHR1cmw6ICd0cGwvJyArIHRtbE5hbWVcclxuXHRcdH0pO1xyXG5cdH1cclxuXHRcclxuXHQvKipcclxuICAgICAqIOiOt+WPlmpzb27phY3nva7mlofku7bvvIzkuLvopoHmmK/ojrflj5bkuIvmi4nliJfooajnmoTlkITpobnpgInmi6nlgLxcclxuXHQgKiBAcmV0dXJuIOi/lOWbnmFqYXjlvILmraXlrp7kvovvvIznlKjkuo7lkI7pnaLosIPnlKhkb25lLGZhaWzmlrnms5VcclxuICAgICAqL1xyXG5cdGdldEpTT04oKSB7XHJcblx0XHRyZXR1cm4gJC5hamF4KHtcclxuXHRcdFx0YXN5bmM6IHRydWUsXHJcblx0XHRcdHR5cGU6IFwiR0VUXCIsXHJcblx0XHRcdHVybDogJ2pzb24vY29uZmlnLmpzb24nLFxyXG5cdFx0XHRkYXRhVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIOiOt+WPluaKpeihqOeahOWfuuacrOmFjee9ruS/oeaBryjmiYDpgInmlbDmja7mupDvvIzmiYDloavnmoTmn6Xor6Lor63lj6XnrYnnrYkpXHJcblx0ICogQHJldHVybiDov5Tlm54kLkRlZmVycmVk5a6e5L6L77yM55So5LqO5ZCO6Z2i6LCD55SoZG9uZSxmYWls5pa55rOVXHJcblx0ICovXHJcblx0Z2V0UmVwb3J0QmFzaWNDb25mKG5hbWUsIHNxbCwgYXBwSWQpIHtcclxuXHRcdGxldCByZXN1bHQgPSAnJztcclxuXHJcblx0XHQgJC5hamF4KHtcclxuXHRcdFx0YXN5bmM6IGZhbHNlLFxyXG5cdFx0XHR0eXBlOiAnUE9TVCcsXHJcblx0XHRcdHVybDogdGhpcy5jb250ZXh0UGF0aCsnL2NvcmUvcmVwb3J0L2dldHF1ZXJ5Y29sdW1uaW5mb3MnLFxyXG5cdFx0XHRkYXRhOiB7XHJcblx0XHRcdFx0ZGF0YVNvdXJjZU5hbWU6IG5hbWUsXHJcblx0XHRcdFx0c3FsOiBzcWwsXHJcblx0XHRcdFx0YXBwbGljYXRpb25JZDogYXBwSWRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRkYXRhVHlwZTogJ2pzb24nXHJcblx0XHR9KS5kb25lKChkYXRhKSA9PiB7XHJcblx0XHRcdCBpZihkYXRhLnJlc3VsdENvZGUgPT0gMSkge1xyXG5cdFx0XHRcdCByZXN1bHQgPSB7J3N1Y2Nlc3MnOiBkYXRhLnF1ZXJ5Q29sdW1uSW5mb3N9O1xyXG5cdFx0XHQgfSBlbHNlIHtcclxuXHRcdFx0XHQgcmVzdWx0ID0gIHsnZXJyb3InOiBkYXRhLm1zZ307XHJcblx0XHRcdCB9XHJcblx0XHQgfSk7XHJcblxyXG5cdFx0IHJldHVybiByZXN1bHQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDojrflj5blr7nlupTnmoR4bWzphY3nva7mlofku7bvvIznlKjku6Xlj43op6PmnpDnlJ/miJDmiqXooajlhYPntKBcclxuXHQgKiBAcmV0dXJuIOi/lOWbnnhtbOWtl+espuS4slxyXG5cdCAqL1xyXG5cdGdldFhNTENvbmYoZmlsZUlkKSB7XHJcblx0XHRsZXQgeG1sID0gJyc7XHJcblxyXG5cdFx0JC5hamF4KHtcclxuXHRcdFx0YXN5bmM6IGZhbHNlLFxyXG5cdFx0XHR0eXBlOiAnR0VUJyxcclxuXHRcdFx0dXJsOiB0aGlzLmNvbnRleHRQYXRoKycvY29yZS9yZXBvcnQvZ2V0anJ4bWwvJytmaWxlSWQsXHJcblx0XHRcdGRhdGFUeXBlOiAnanNvbidcclxuXHRcdH0pLmRvbmUoKGRhdGEpID0+IHtcclxuXHRcdFx0aWYoZGF0YS5yZXN1bHRDb2RlID09IDEpIHtcclxuXHRcdFx0XHR4bWwgPSBkYXRhLmpyeG1sU3RyaW5nO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4geG1sO1xyXG5cdH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQXBpO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvdXRpbGl0eS9BcGkuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUVBO0FBQUE7QUFFQTtBQURBO0FBQ0E7QUFDQTs7Ozs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFFQTs7Ozs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBVEE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///87\n");

/***/ }),
/* 88 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Graphics = __webpack_require__(44);\n\nvar _Graphics2 = _interopRequireDefault(_Graphics);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n//xh archor鐨勫姛鑳芥牴鎹笅鏂囷紝搴旇鏄垽鏂紶鏍囦綅缃紝杩斿洖涓€涓彲浠ヤ唬琛ㄩ紶鏍囨槸鍦ㄤ笂宸︼紝涓婂彸锛屼笅宸︼紝涓嬪彸鍝釜浣嶇疆銆俓n\nvar Archor = function () {\n\t_createClass(Archor, null, [{\n\t\tkey: 'getInstance',\n\t\tvalue: function getInstance() {\n\t\t\tif (!Archor.instance || !(Archor.instance instanceof Archor)) {\n\t\t\t\tArchor.instance = new Archor();\n\t\t\t}\n\n\t\t\treturn Archor.instance;\n\t\t}\n\t}]);\n\n\tfunction Archor() {\n\t\t_classCallCheck(this, Archor);\n\n\t\tthis.x = 0;\n\t\tthis.y = 0;\n\t\tthis.targetW = 0;\n\t\tthis.targetH = 0;\n\t\tthis.openArchorPos = [];\n\t\tthis.radius = Archor.DEF_RADIUS;\n\t\tthis.color = Archor.DEF_COLOR;\n\t\tthis.borderColor = Archor.DEF_BORDER_COLOR;\n\t}\n\n\t_createClass(Archor, [{\n\t\tkey: 'getProp',\n\t\tvalue: function getProp(prop) {\n\t\t\treturn this[prop];\n\t\t}\n\t}, {\n\t\tkey: 'setProps',\n\t\tvalue: function setProps(newProps) {\n\t\t\tObject.assign(this, newProps);\n\t\t}\n\t}, {\n\t\tkey: 'paint',\n\t\tvalue: function paint(g) {\n\t\t\tif (this.openArchorPos.length > 0) {\n\t\t\t\tfor (var i = 0; i < this.openArchorPos.length; i++) {\n\t\t\t\t\tg.save();\n\t\t\t\t\tg.drawArc(this.x + this.targetW * this.openArchorPos[i].x, this.y + this.targetH * this.openArchorPos[i].y, this.radius, this.color, this.borderColor);\n\t\t\t\t\tg.restore();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// isInArchor(x, y) {\n\t\t// const r = this.radius;\n\n\t\t// for(let i = 0;i < this.openArchorPos.length;i++) {\n\t\t// const dx = (this.x + this.targetW * this.openArchorPos[i].x) - x;\n\t\t// const dy = (this.y + this.targetH * this.openArchorPos[i].y) - y;\n\n\t\t// if(dx * dx + dy * dy <= r * r) {\n\t\t// return true;\n\t\t// }\n\t\t// }\n\n\t\t// return false;\n\t\t// }\n\n\t}, {\n\t\tkey: 'getArchorPosition',\n\t\tvalue: function getArchorPosition(x, y) {\n\t\t\tvar r = this.radius;\n\n\t\t\tif (this.openArchorPos.length > 0) {\n\t\t\t\tfor (var i = 0; i < this.openArchorPos.length; i++) {\n\t\t\t\t\tvar dx = this.x + this.targetW * this.openArchorPos[i].x - x;\n\t\t\t\t\tvar dy = this.y + this.targetH * this.openArchorPos[i].y - y;\n\n\t\t\t\t\tif (dx * dx + dy * dy <= r * r) {\n\t\t\t\t\t\treturn this.openArchorPos[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}]);\n\n\treturn Archor;\n}();\n\nArchor.instance = null;\n\n\nArchor.DEF_RADIUS = 3;\nArchor.DEF_COLOR = '#F0F0F0';\nArchor.DEF_BORDER_COLOR = '#000000';\n\nexports.default = Archor;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL3V0aWxpdHkvQXJjaG9yLmpzP2M1YTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEdyYXBoaWNzIGZyb20gJy4vR3JhcGhpY3MnO1xyXG4vL3hoIGFyY2hvcueahOWKn+iDveagueaNruS4i+aWh++8jOW6lOivpeaYr+WIpOaWrem8oOagh+S9jee9ru+8jOi/lOWbnuS4gOS4quWPr+S7peS7o+ihqOm8oOagh+aYr+WcqOS4iuW3pu+8jOS4iuWPs++8jOS4i+W3pu+8jOS4i+WPs+WTquS4quS9jee9ruOAglxyXG5cclxuY2xhc3MgQXJjaG9yIHtcclxuXHRzdGF0aWMgaW5zdGFuY2UgPSBudWxsO1xyXG5cdFxyXG5cdHN0YXRpYyBnZXRJbnN0YW5jZSgpIHtcclxuXHRcdGlmKCFBcmNob3IuaW5zdGFuY2UgfHwgIShBcmNob3IuaW5zdGFuY2UgaW5zdGFuY2VvZiBBcmNob3IpKSB7XHJcblx0XHRcdEFyY2hvci5pbnN0YW5jZSA9IG5ldyBBcmNob3IoKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gQXJjaG9yLmluc3RhbmNlO1x0XHJcblx0fVxyXG5cdFxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0dGhpcy54ID0gMDtcclxuXHRcdHRoaXMueSA9IDA7XHJcblx0XHR0aGlzLnRhcmdldFcgPSAwO1xyXG5cdFx0dGhpcy50YXJnZXRIID0gMDtcclxuXHRcdHRoaXMub3BlbkFyY2hvclBvcyA9IFtdO1xyXG5cdFx0dGhpcy5yYWRpdXMgPSBBcmNob3IuREVGX1JBRElVUztcclxuXHRcdHRoaXMuY29sb3IgPSBBcmNob3IuREVGX0NPTE9SO1xyXG5cdFx0dGhpcy5ib3JkZXJDb2xvciA9IEFyY2hvci5ERUZfQk9SREVSX0NPTE9SO1xyXG5cdH1cclxuXHRcclxuXHRnZXRQcm9wKHByb3ApIHtcclxuXHRcdHJldHVybiB0aGlzW3Byb3BdO1xyXG5cdH1cclxuXHRcclxuXHRzZXRQcm9wcyhuZXdQcm9wcykge1xyXG5cdFx0T2JqZWN0LmFzc2lnbih0aGlzLCBuZXdQcm9wcyk7XHJcblx0fVxyXG5cdFxyXG5cdHBhaW50KGcpIHtcclxuXHRcdGlmKHRoaXMub3BlbkFyY2hvclBvcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdGZvcihsZXQgaSA9IDA7aSA8IHRoaXMub3BlbkFyY2hvclBvcy5sZW5ndGg7aSsrKSB7XHJcblx0XHRcdFx0Zy5zYXZlKCk7XHJcblx0XHRcdFx0Zy5kcmF3QXJjKHRoaXMueCArIHRoaXMudGFyZ2V0VyAqIHRoaXMub3BlbkFyY2hvclBvc1tpXS54LCB0aGlzLnkgKyB0aGlzLnRhcmdldEggKiB0aGlzLm9wZW5BcmNob3JQb3NbaV0ueSwgdGhpcy5yYWRpdXMsIHRoaXMuY29sb3IsIHRoaXMuYm9yZGVyQ29sb3IpO1xyXG5cdFx0XHRcdGcucmVzdG9yZSgpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblx0fVxyXG5cdFxyXG5cdC8vIGlzSW5BcmNob3IoeCwgeSkge1xyXG5cdFx0Ly8gY29uc3QgciA9IHRoaXMucmFkaXVzO1xyXG5cdFx0XHJcblx0XHQvLyBmb3IobGV0IGkgPSAwO2kgPCB0aGlzLm9wZW5BcmNob3JQb3MubGVuZ3RoO2krKykge1xyXG5cdFx0XHQvLyBjb25zdCBkeCA9ICh0aGlzLnggKyB0aGlzLnRhcmdldFcgKiB0aGlzLm9wZW5BcmNob3JQb3NbaV0ueCkgLSB4O1xyXG5cdFx0XHQvLyBjb25zdCBkeSA9ICh0aGlzLnkgKyB0aGlzLnRhcmdldEggKiB0aGlzLm9wZW5BcmNob3JQb3NbaV0ueSkgLSB5O1xyXG5cdFx0XHRcclxuXHRcdFx0Ly8gaWYoZHggKiBkeCArIGR5ICogZHkgPD0gciAqIHIpIHtcclxuXHRcdFx0XHQvLyByZXR1cm4gdHJ1ZTtcclxuXHRcdFx0Ly8gfVxyXG5cdFx0Ly8gfVxyXG5cdFx0XHJcblx0XHQvLyByZXR1cm4gZmFsc2U7XHJcblx0Ly8gfVxyXG5cdFxyXG5cdGdldEFyY2hvclBvc2l0aW9uKHgsIHkpIHtcclxuXHRcdGNvbnN0IHIgPSB0aGlzLnJhZGl1cztcclxuXHJcblx0XHRpZih0aGlzLm9wZW5BcmNob3JQb3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwO2kgPCB0aGlzLm9wZW5BcmNob3JQb3MubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZHggPSAodGhpcy54ICsgdGhpcy50YXJnZXRXICogdGhpcy5vcGVuQXJjaG9yUG9zW2ldLngpIC0geDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGR5ID0gKHRoaXMueSArIHRoaXMudGFyZ2V0SCAqIHRoaXMub3BlbkFyY2hvclBvc1tpXS55KSAtIHk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYoZHggKiBkeCArIGR5ICogZHkgPD0gciAqIHIpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuQXJjaG9yUG9zW2ldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cdFx0fSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5BcmNob3IuREVGX1JBRElVUyA9IDM7XHJcbkFyY2hvci5ERUZfQ09MT1IgPSAnI0YwRjBGMCc7XHJcbkFyY2hvci5ERUZfQk9SREVSX0NPTE9SID0gJyMwMDAwMDAnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQXJjaG9yO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvdXRpbGl0eS9BcmNob3IuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTs7Ozs7OztBQUFBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUF6RUE7QUFDQTtBQUNBO0FBMEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///88\n");

/***/ }),
/* 89 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar AuxiliaryLine = function () {\n\t_createClass(AuxiliaryLine, null, [{\n\t\tkey: 'getInstance',\n\t\tvalue: function getInstance() {\n\t\t\tif (!AuxiliaryLine.instance || !(AuxiliaryLine.instance instanceof AuxiliaryLine)) {\n\t\t\t\tAuxiliaryLine.instance = new AuxiliaryLine();\n\t\t\t}\n\n\t\t\treturn AuxiliaryLine.instance;\n\t\t}\n\t}]);\n\n\tfunction AuxiliaryLine() {\n\t\t_classCallCheck(this, AuxiliaryLine);\n\n\t\tthis.points = null;\n\t\tthis.color = AuxiliaryLine.DEF_COLOR;\n\t}\n\n\t_createClass(AuxiliaryLine, [{\n\t\tkey: 'paint',\n\t\tvalue: function paint(g) {\n\t\t\tg.save();\n\t\t\tg.setLineWidth(1);\n\t\t\tg.setColor(this.color);\n\n\t\t\tif (this.points) {\n\t\t\t\tif (this.points.abscissa) {\n\t\t\t\t\tg.drawLine(this.points.abscissa.beginPoint.x, this.points.abscissa.beginPoint.y, this.points.abscissa.endPoint.x, this.points.abscissa.endPoint.y);\n\t\t\t\t}\n\n\t\t\t\tif (this.points.ordinate) {\n\t\t\t\t\tg.drawLine(this.points.ordinate.beginPoint.x, this.points.ordinate.beginPoint.y, this.points.ordinate.endPoint.x, this.points.ordinate.endPoint.y);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tg.restore();\n\t\t}\n\t}, {\n\t\tkey: 'getProp',\n\t\tvalue: function getProp(prop) {\n\t\t\treturn this[prop];\n\t\t}\n\t}, {\n\t\tkey: 'setProps',\n\t\tvalue: function setProps(newProps) {\n\t\t\tObject.assign(this, newProps);\n\t\t}\n\t}]);\n\n\treturn AuxiliaryLine;\n}();\n\nAuxiliaryLine.instance = null;\n\n\nAuxiliaryLine.DEF_COLOR = '#9AFF9A';\n\nexports.default = AuxiliaryLine;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL3V0aWxpdHkvQXV4aWxpYXJ5TGluZS5qcz85ZDRhIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIEF1eGlsaWFyeUxpbmUge1xyXG5cdHN0YXRpYyBpbnN0YW5jZSA9IG51bGw7XHJcblx0XHJcblx0c3RhdGljIGdldEluc3RhbmNlKCkge1xyXG5cdFx0aWYoIUF1eGlsaWFyeUxpbmUuaW5zdGFuY2UgfHwgIShBdXhpbGlhcnlMaW5lLmluc3RhbmNlIGluc3RhbmNlb2YgQXV4aWxpYXJ5TGluZSkpIHtcclxuXHRcdFx0QXV4aWxpYXJ5TGluZS5pbnN0YW5jZSA9IG5ldyBBdXhpbGlhcnlMaW5lKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIEF1eGlsaWFyeUxpbmUuaW5zdGFuY2U7XHRcclxuXHR9XHJcblx0XHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHR0aGlzLnBvaW50cyA9IG51bGw7XHJcblx0XHR0aGlzLmNvbG9yID0gQXV4aWxpYXJ5TGluZS5ERUZfQ09MT1I7XHJcblx0fVxyXG5cdFxyXG5cdHBhaW50KGcpIHtcclxuXHRcdGcuc2F2ZSgpO1xyXG5cdFx0Zy5zZXRMaW5lV2lkdGgoMSk7XHJcblx0XHRnLnNldENvbG9yKHRoaXMuY29sb3IpO1xyXG5cdFx0XHJcblx0XHRpZih0aGlzLnBvaW50cykge1xyXG5cdFx0XHRpZih0aGlzLnBvaW50cy5hYnNjaXNzYSkge1xyXG5cdFx0XHRcdGcuZHJhd0xpbmUodGhpcy5wb2ludHMuYWJzY2lzc2EuYmVnaW5Qb2ludC54LCB0aGlzLnBvaW50cy5hYnNjaXNzYS5iZWdpblBvaW50LnksIFxyXG5cdFx0XHRcdHRoaXMucG9pbnRzLmFic2Npc3NhLmVuZFBvaW50LngsIHRoaXMucG9pbnRzLmFic2Npc3NhLmVuZFBvaW50LnkpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZih0aGlzLnBvaW50cy5vcmRpbmF0ZSkge1xyXG5cdFx0XHRcdGcuZHJhd0xpbmUodGhpcy5wb2ludHMub3JkaW5hdGUuYmVnaW5Qb2ludC54LCB0aGlzLnBvaW50cy5vcmRpbmF0ZS5iZWdpblBvaW50LnksIFxyXG5cdFx0XHRcdHRoaXMucG9pbnRzLm9yZGluYXRlLmVuZFBvaW50LngsIHRoaXMucG9pbnRzLm9yZGluYXRlLmVuZFBvaW50LnkpO1xyXG5cdFx0XHR9XHRcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0Zy5yZXN0b3JlKCk7XHJcblx0fVxyXG5cdFxyXG5cdGdldFByb3AocHJvcCkge1xyXG5cdFx0cmV0dXJuIHRoaXNbcHJvcF07XHJcblx0fVxyXG5cdFxyXG5cdHNldFByb3BzKG5ld1Byb3BzKSB7XHJcblx0XHRPYmplY3QuYXNzaWduKHRoaXMsIG5ld1Byb3BzKTtcclxuXHR9XHJcbn1cclxuXHJcbkF1eGlsaWFyeUxpbmUuREVGX0NPTE9SID0gJyM5QUZGOUEnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQXV4aWxpYXJ5TGluZTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3V0aWxpdHkvQXV4aWxpYXJ5TGluZS5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7QUExQ0E7QUFDQTtBQUNBO0FBMkNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///89\n");

/***/ }),
/* 90 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Sequence = function Sequence() {\n  _classCallCheck(this, Sequence);\n};\n\nSequence.getSequence = function () {\n  var date = new Date();\n  var s = \"\" + date.getTime();\n  return s;\n};\n\nSequence.S4 = function () {\n  return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);\n};\n\nSequence.createUuid = function () {\n  return Sequence.S4() + Sequence.S4() + \"-\" + Sequence.S4() + \"-\" + Sequence.S4() + \"-\" + Sequence.S4() + \"-\" + Sequence.S4() + Sequence.S4() + Sequence.S4();\n};\n\nexports.default = Sequence;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL3V0aWxpdHkvU2VxdWVuY2UuanM/MTdhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBTZXF1ZW5jZSB7XHJcbiAgY29uc3RydWN0b3IoKXtcclxuICAgIFxyXG4gIH1cclxufVxyXG5cclxuU2VxdWVuY2UuZ2V0U2VxdWVuY2UgPSAoKSA9PiB7XHJcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgY29uc3QgcyA9IGAke2RhdGUuZ2V0VGltZSgpfWA7XHJcbiAgcmV0dXJuIHM7XHJcbn07XHJcblxyXG5TZXF1ZW5jZS5TNCA9ICgpID0+IHtcclxuXHRyZXR1cm4gKCgoMStNYXRoLnJhbmRvbSgpKSoweDEwMDAwKXwwKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpO1xyXG59XHJcblxyXG5TZXF1ZW5jZS5jcmVhdGVVdWlkID0gKCkgPT4ge1xyXG5cdHJldHVybiAoU2VxdWVuY2UuUzQoKSArIFNlcXVlbmNlLlM0KCkgKyBcIi1cIiArIFNlcXVlbmNlLlM0KCkgKyBcIi1cIiArIFNlcXVlbmNlLlM0KCkgKyBcIi1cIiArIFNlcXVlbmNlLlM0KCkgKyBcIi1cIiArIFNlcXVlbmNlLlM0KCkgKyBTZXF1ZW5jZS5TNCgpICsgU2VxdWVuY2UuUzQoKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFNlcXVlbmNlO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3V0aWxpdHkvU2VxdWVuY2UuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///90\n");

/***/ }),
/* 91 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar StringUtil = function () {\n  function StringUtil() {\n    _classCallCheck(this, StringUtil);\n  }\n\n  _createClass(StringUtil, [{\n    key: 'replaceXML',\n    value: function replaceXML(str) {\n      if (str != null) {\n        while (str.indexOf('\"') != -1) {\n          str = str.replace(/\\\"/g, '@quot;');\n        }\n        return str;\n      }\n      return '';\n    }\n  }]);\n\n  return StringUtil;\n}();\n\nStringUtil.replaceText = function (text) {\n  if (text != null) {\n    text += '';\n    text = text.replace(/\\!/, '');\n    text = text.replace(/\\[/, '');\n    text = text.replace(/\\]/, '');\n    text = text.replace(/\\</, '');\n    text = text.replace(/\\>/, '');\n    text = text.replace(/(CDATA)/, '');\n\n    return text;\n  } else {\n    return '';\n  }\n};\n\nStringUtil.encodeHTML = function (t) {\n  var text = t;\n  if (text != null) {\n    text = text.replace(/#/g, '%23');\n    text = text.replace(/&/g, '&amp;');\n    text = text.replace(/\"/g, '@quot;');\n    text = text.replace(/</g, '@lt;');\n    text = text.replace(/>/g, '@gt;');\n    text = text.replace(/'/g, '@#146;');\n    text = text.replace(/ /g, '@nbsp;');\n    text = text.replace(/\\r/g, '&#10;');\n    text = text.replace(/\\n/g, '&#13;');\n  }\n  return text;\n};\n\nStringUtil.dencodeHTML = function (t) {\n  var text = t;\n  if (text != null) {\n    text = text.replace(/&amp;/g, '&');\n    text = text.replace(/@amp;/g, '&');\n    text = text.replace(/&quot;/g, '\"');\n    text = text.replace(/@quot;/g, '\"');\n    text = text.replace(/&lt;/g, '<');\n    text = text.replace(/@lt;/g, '<');\n    text = text.replace(/&gt;/g, '>');\n    text = text.replace(/@gt;/g, '>');\n    text = text.replace(/&#146;/g, \"'\");\n    text = text.replace(/@#146;/g, \"'\");\n    text = text.replace(/&nbsp;/g, ' ');\n    text = text.replace(/@nbsp;/g, ' ');\n    text = text.replace(/&#10;/g, '\\r');\n    text = text.replace(/&#13;/g, '\\n');\n    text = text.replace(/&#9;/g, ' ');\n    text = text.replace(/%23/g, '#');\n\n    text = text.replace('\\n\\r', '\\n');\n    text = text.replace('\\r\\n', '\\n');\n  }\n  return text;\n};\n\nexports.default = StringUtil;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL3V0aWxpdHkvU3RyaW5nVXRpbC5qcz9jZDFjIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIFN0cmluZ1V0aWwge1xyXG4gIHJlcGxhY2VYTUwoc3RyKSB7XHJcbiAgICBpZiAoc3RyICE9IG51bGwpIHtcclxuICAgICAgd2hpbGUgKHN0ci5pbmRleE9mKCdcIicpICE9IC0xKSB7XHJcbiAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcXCIvZywgJ0BxdW90OycpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG59XHJcblxyXG5TdHJpbmdVdGlsLnJlcGxhY2VUZXh0ID0gKHRleHQpID0+IHtcclxuICBpZih0ZXh0ICE9IG51bGwpIHtcclxuICAgIHRleHQgKz0gJyc7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXCEvLCAnJyk7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXFsvLCAnJyk7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXF0vLCAnJyk7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXDwvLCAnJyk7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXD4vLCAnJyk7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC8oQ0RBVEEpLywgJycpO1xyXG5cclxuICAgIHJldHVybiB0ZXh0O1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG59XHJcblxyXG5TdHJpbmdVdGlsLmVuY29kZUhUTUwgPSAodCkgPT4ge1xyXG4gIGxldCB0ZXh0ID0gdDtcclxuICBpZiAodGV4dCAhPSBudWxsKSB7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC8jL2csICclMjMnKTtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyYvZywgJyZhbXA7Jyk7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cIi9nLCAnQHF1b3Q7Jyk7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC88L2csICdAbHQ7Jyk7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC8+L2csICdAZ3Q7Jyk7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC8nL2csICdAIzE0NjsnKTtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyAvZywgJ0BuYnNwOycpO1xyXG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvXFxyL2csICcmIzEwOycpO1xyXG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvXFxuL2csICcmIzEzOycpO1xyXG4gIH1cclxuICByZXR1cm4gdGV4dDtcclxufTtcclxuXHJcblN0cmluZ1V0aWwuZGVuY29kZUhUTUwgPSAodCkgPT4ge1xyXG4gIGxldCB0ZXh0ID0gdDtcclxuICBpZiAodGV4dCAhPSBudWxsKSB7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC8mYW1wOy9nLCAnJicpO1xyXG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvQGFtcDsvZywgJyYnKTtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyZxdW90Oy9nLCAnXCInKTtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL0BxdW90Oy9nLCAnXCInKTtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyZsdDsvZywgJzwnKTtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL0BsdDsvZywgJzwnKTtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyZndDsvZywgJz4nKTtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL0BndDsvZywgJz4nKTtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyYjMTQ2Oy9nLCBcIidcIik7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9AIzE0NjsvZywgXCInXCIpO1xyXG4gICAgdGV4dCA9IHRleHQucmVwbGFjZSgvJm5ic3A7L2csICcgJyk7XHJcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9AbmJzcDsvZywgJyAnKTtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyYjMTA7L2csICdcXHInKTtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyYjMTM7L2csICdcXG4nKTtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyYjOTsvZywgJyAnKTtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyUyMy9nLCAnIycpO1xyXG5cclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJ1xcblxccicsICdcXG4nKTtcclxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJ1xcclxcbicsICdcXG4nKTtcclxuICB9XHJcbiAgcmV0dXJuIHRleHQ7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTdHJpbmdVdGlsO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3V0aWxpdHkvU3RyaW5nVXRpbC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOzs7Ozs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///91\n");

/***/ }),
/* 92 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// import FormPanel from '../form/view/FormPanel';\nvar HTMLOperate = function () {\n  function HTMLOperate(form) {\n    _classCallCheck(this, HTMLOperate);\n\n    this.form = form;\n  }\n\n  _createClass(HTMLOperate, [{\n    key: \"toHtml\",\n    value: function toHtml(html) {\n      var h = html;\n      var arr = [];\n\n      // h=h.replace(/<tableLayout/g,'<table');\n      // h=h.replace(/<\\/tableLayout/g,'</table');\n      // h=h.replace(/<tbody>/g,\"\")\n      // h=h.replace(/<\\/tbody>/g,\"\")\n      // h=h.replace(/<tr>/g,\"\")\n      // h=h.replace(/<\\/tr>/g,\"\")\n      // h=h.replace(/<td/g,\"<tableLayoutTd\");\n      // h=h.replace(/\\/td/g,\"/tableLayoutTd\");\n      // h=h.replace(/tablelayout-base/,\"tablelayout tablelayout-base\")\n      h = h.replace(/<f-input/g, \"<input\");\n      h = h.replace(/f-input>/g, \"input>\");\n      h = h.replace(/<f-textarea/g, \"<textarea\");\n      h = h.replace(/f-textarea>/g, \"textarea>\");\n      h = h.replace(/<f-radio/g, \"<radio\");\n      h = h.replace(/f-radio>/g, \"radio>\");\n      h = h.replace(/<f-checkbox/g, \"<checkbox\");\n      h = h.replace(/f-checkbox>/g, \"checkbox>\");\n      h = h.replace(/<f-data/g, \"<data\");\n      h = h.replace(/f-data>/g, \"data>\");\n      h = h.replace(/<f-select/g, \"<select\");\n      h = h.replace(/f-select>/g, \"select>\");\n      h = h.replace(/<f-dept/g, \"<dept\");\n      h = h.replace(/f-dept>/g, \"dept>\");\n      h = h.replace(/<f-selectaboutfield/g, \"<selectaboutfield\");\n      h = h.replace(/f-selectaboutfield>/g, \"selectaboutfield>\");\n      h = h.replace(/<f-treedepartmentfield/g, \"<treedepartmentfield\");\n      h = h.replace(/f-treedepartmentfield>/g, \"treedepartmentfield>\");\n      h = h.replace(/<f-userfield/g, \"<userfield\");\n      h = h.replace(/f-userfield>/g, \"userfield>\");\n      h = h.replace(/<f-suggestfield/g, \"<suggestfield\");\n      h = h.replace(/f-suggestfield>/g, \"suggestfield>\");\n      h = h.replace(/<f-button/g, \"<button\");\n      h = h.replace(/f-button>/g, \"button>\");\n      h = h.replace(/<f-viewdialogfield/g, \"<viewdialogfield\");\n      h = h.replace(/f-viewdialogfield>/g, \"viewdialogfield>\");\n      h = h.replace(/<f-img/g, \"<img\");\n      h = h.replace(/f-img>/g, \"img>\");\n      // arr=h.split(\">\");\n      // let length=arr.length;\n\n      // for(let i=0;i<length;i++){\n      //   this.form\n      // }\n\n      console.log(h);\n      return h;\n    }\n  }, {\n    key: \"hadleHtml\",\n    value: function hadleHtml(html) {\n      var h = html;\n      // let arr=[];\n      // h=h.replace(/<div style='position:relative'>/,\"\");\n      // h=h.replace(/<\\/div>/,\"\");\n\n      h = h.replace(/<table/g, '<tableLayout');\n      h = h.replace(/<\\/table/g, '</tableLayout');\n      h = h.replace(/<tbody>/g, \"\");\n      h = h.replace(/<\\/tbody>/g, \"\");\n      h = h.replace(/<tr>/g, \"\");\n      h = h.replace(/<\\/tr>/g, \"\");\n      h = h.replace(/<td/g, \"<tableLayoutTd\");\n      h = h.replace(/\\/td/g, \"/tableLayoutTd\");\n      h = h.replace(/tablelayout-base/, \"tablelayout tablelayout-base\");\n      h = h.replace(/<input/g, \"<f-input\");\n      h = h.replace(/input>/g, \"f-input>\");\n      h = h.replace(/<textarea/g, \"<f-textarea\");\n      h = h.replace(/textarea>/g, \"f-textarea>\");\n      h = h.replace(/<radio/g, \"<f-radio\");\n      h = h.replace(/radio>/g, \"f-radio>\");\n      h = h.replace(/<checkbox/g, \"<f-checkbox\");\n      h = h.replace(/checkbox>/g, \"f-checkbox>\");\n      h = h.replace(/<data/g, \"<f-data\");\n      h = h.replace(/data>/g, \"f-data>\");\n      h = h.replace(/<select/g, \"<f-select\");\n      h = h.replace(/select>/g, \"f-select>\");\n      h = h.replace(/<dept/g, \"<f-dept\");\n      h = h.replace(/dept>/g, \"f-dept>\");\n      h = h.replace(/<selectaboutfield/g, \"<f-selectaboutfield\");\n      h = h.replace(/selectaboutfield>/g, \"f-selectaboutfield>\");\n      h = h.replace(/<treedepartmentfield/g, \"<f-treedepartmentfield\");\n      h = h.replace(/treedepartmentfield>/g, \"f-treedepartmentfield>\");\n      h = h.replace(/<userfield/g, \"<f-userfield\");\n      h = h.replace(/userfield>/g, \"f-userfield>\");\n      h = h.replace(/<suggestfield/g, \"<f-suggestfield\");\n      h = h.replace(/suggestfield>/g, \"f-suggestfield>\");\n      h = h.replace(/<button/g, \"<f-button\");\n      h = h.replace(/button>/g, \"f-button>\");\n      h = h.replace(/<viewdialogfield/g, \"<f-viewdialogfield\");\n      h = h.replace(/viewdialogfield>/g, \"f-viewdialogfield>\");\n      h = h.replace(/<img/g, \"<f-img\");\n      h = h.replace(/img>/g, \"f-img>\");\n      // arr=h.split(\">\");\n      // let length=arr.length;\n\n      // for(let i=0;i<length;i++){\n      //   this.form\n      // }\n\n      console.log(h);\n      return h;\n    }\n  }, {\n    key: \"parseHtml\",\n    value: function parseHtml() {}\n  }]);\n\n  return HTMLOperate;\n}();\n\nexports.default = HTMLOperate;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL3V0aWxpdHkvSFRNTE9wZXJhdGUuanM/OTdjZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgRm9ybVBhbmVsIGZyb20gJy4uL2Zvcm0vdmlldy9Gb3JtUGFuZWwnO1xyXG5jbGFzcyBIVE1MT3BlcmF0ZSB7XHJcbiAgY29uc3RydWN0b3IoZm9ybSkge1xyXG4gICB0aGlzLmZvcm09Zm9ybTtcclxuICB9XHJcbiAgdG9IdG1sKGh0bWwpe1xyXG4gICAgbGV0IGg9aHRtbDtcclxuICAgIGxldCBhcnI9W107XHJcbiAgICBcclxuICAgIC8vIGg9aC5yZXBsYWNlKC88dGFibGVMYXlvdXQvZywnPHRhYmxlJyk7XHJcbiAgICAvLyBoPWgucmVwbGFjZSgvPFxcL3RhYmxlTGF5b3V0L2csJzwvdGFibGUnKTtcclxuICAgIC8vIGg9aC5yZXBsYWNlKC88dGJvZHk+L2csXCJcIilcclxuICAgIC8vIGg9aC5yZXBsYWNlKC88XFwvdGJvZHk+L2csXCJcIilcclxuICAgIC8vIGg9aC5yZXBsYWNlKC88dHI+L2csXCJcIilcclxuICAgIC8vIGg9aC5yZXBsYWNlKC88XFwvdHI+L2csXCJcIilcclxuICAgIC8vIGg9aC5yZXBsYWNlKC88dGQvZyxcIjx0YWJsZUxheW91dFRkXCIpO1xyXG4gICAgLy8gaD1oLnJlcGxhY2UoL1xcL3RkL2csXCIvdGFibGVMYXlvdXRUZFwiKTtcclxuICAgIC8vIGg9aC5yZXBsYWNlKC90YWJsZWxheW91dC1iYXNlLyxcInRhYmxlbGF5b3V0IHRhYmxlbGF5b3V0LWJhc2VcIilcclxuICAgIGg9aC5yZXBsYWNlKC88Zi1pbnB1dC9nLFwiPGlucHV0XCIpXHJcbiAgICBoPWgucmVwbGFjZSgvZi1pbnB1dD4vZyxcImlucHV0PlwiKVxyXG4gICAgaD1oLnJlcGxhY2UoLzxmLXRleHRhcmVhL2csXCI8dGV4dGFyZWFcIilcclxuICAgIGg9aC5yZXBsYWNlKC9mLXRleHRhcmVhPi9nLFwidGV4dGFyZWE+XCIpXHJcbiAgICBoPWgucmVwbGFjZSgvPGYtcmFkaW8vZyxcIjxyYWRpb1wiKVxyXG4gICAgaD1oLnJlcGxhY2UoL2YtcmFkaW8+L2csXCJyYWRpbz5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88Zi1jaGVja2JveC9nLFwiPGNoZWNrYm94XCIpXHJcbiAgICBoPWgucmVwbGFjZSgvZi1jaGVja2JveD4vZyxcImNoZWNrYm94PlwiKVxyXG4gICAgaD1oLnJlcGxhY2UoLzxmLWRhdGEvZyxcIjxkYXRhXCIpXHJcbiAgICBoPWgucmVwbGFjZSgvZi1kYXRhPi9nLFwiZGF0YT5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88Zi1zZWxlY3QvZyxcIjxzZWxlY3RcIilcclxuICAgIGg9aC5yZXBsYWNlKC9mLXNlbGVjdD4vZyxcInNlbGVjdD5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88Zi1kZXB0L2csXCI8ZGVwdFwiKVxyXG4gICAgaD1oLnJlcGxhY2UoL2YtZGVwdD4vZyxcImRlcHQ+XCIpXHJcbiAgICBoPWgucmVwbGFjZSgvPGYtc2VsZWN0YWJvdXRmaWVsZC9nLFwiPHNlbGVjdGFib3V0ZmllbGRcIilcclxuICAgIGg9aC5yZXBsYWNlKC9mLXNlbGVjdGFib3V0ZmllbGQ+L2csXCJzZWxlY3RhYm91dGZpZWxkPlwiKVxyXG4gICAgaD1oLnJlcGxhY2UoLzxmLXRyZWVkZXBhcnRtZW50ZmllbGQvZyxcIjx0cmVlZGVwYXJ0bWVudGZpZWxkXCIpXHJcbiAgICBoPWgucmVwbGFjZSgvZi10cmVlZGVwYXJ0bWVudGZpZWxkPi9nLFwidHJlZWRlcGFydG1lbnRmaWVsZD5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88Zi11c2VyZmllbGQvZyxcIjx1c2VyZmllbGRcIilcclxuICAgIGg9aC5yZXBsYWNlKC9mLXVzZXJmaWVsZD4vZyxcInVzZXJmaWVsZD5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88Zi1zdWdnZXN0ZmllbGQvZyxcIjxzdWdnZXN0ZmllbGRcIilcclxuICAgIGg9aC5yZXBsYWNlKC9mLXN1Z2dlc3RmaWVsZD4vZyxcInN1Z2dlc3RmaWVsZD5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88Zi1idXR0b24vZyxcIjxidXR0b25cIilcclxuICAgIGg9aC5yZXBsYWNlKC9mLWJ1dHRvbj4vZyxcImJ1dHRvbj5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88Zi12aWV3ZGlhbG9nZmllbGQvZyxcIjx2aWV3ZGlhbG9nZmllbGRcIilcclxuICAgIGg9aC5yZXBsYWNlKC9mLXZpZXdkaWFsb2dmaWVsZD4vZyxcInZpZXdkaWFsb2dmaWVsZD5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88Zi1pbWcvZyxcIjxpbWdcIilcclxuICAgIGg9aC5yZXBsYWNlKC9mLWltZz4vZyxcImltZz5cIilcclxuICAgIC8vIGFycj1oLnNwbGl0KFwiPlwiKTtcclxuICAgIC8vIGxldCBsZW5ndGg9YXJyLmxlbmd0aDtcclxuICAgIFxyXG4gICAgLy8gZm9yKGxldCBpPTA7aTxsZW5ndGg7aSsrKXtcclxuICAgIC8vICAgdGhpcy5mb3JtXHJcbiAgICAvLyB9XHJcblxyXG4gICAgY29uc29sZS5sb2coaCk7XHJcbiAgICByZXR1cm4gaDtcclxuICB9XHJcbiAgaGFkbGVIdG1sKGh0bWwpe1xyXG4gICAgbGV0IGg9aHRtbDtcclxuICAgIC8vIGxldCBhcnI9W107XHJcbiAgICAvLyBoPWgucmVwbGFjZSgvPGRpdiBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmUnPi8sXCJcIik7XHJcbiAgICAvLyBoPWgucmVwbGFjZSgvPFxcL2Rpdj4vLFwiXCIpO1xyXG5cclxuICAgIGg9aC5yZXBsYWNlKC88dGFibGUvZywnPHRhYmxlTGF5b3V0Jyk7XHJcbiAgICBoPWgucmVwbGFjZSgvPFxcL3RhYmxlL2csJzwvdGFibGVMYXlvdXQnKTtcclxuICAgIGg9aC5yZXBsYWNlKC88dGJvZHk+L2csXCJcIilcclxuICAgIGg9aC5yZXBsYWNlKC88XFwvdGJvZHk+L2csXCJcIilcclxuICAgIGg9aC5yZXBsYWNlKC88dHI+L2csXCJcIilcclxuICAgIGg9aC5yZXBsYWNlKC88XFwvdHI+L2csXCJcIilcclxuICAgIGg9aC5yZXBsYWNlKC88dGQvZyxcIjx0YWJsZUxheW91dFRkXCIpO1xyXG4gICAgaD1oLnJlcGxhY2UoL1xcL3RkL2csXCIvdGFibGVMYXlvdXRUZFwiKTtcclxuICAgIGg9aC5yZXBsYWNlKC90YWJsZWxheW91dC1iYXNlLyxcInRhYmxlbGF5b3V0IHRhYmxlbGF5b3V0LWJhc2VcIilcclxuICAgIGg9aC5yZXBsYWNlKC88aW5wdXQvZyxcIjxmLWlucHV0XCIpXHJcbiAgICBoPWgucmVwbGFjZSgvaW5wdXQ+L2csXCJmLWlucHV0PlwiKVxyXG4gICAgaD1oLnJlcGxhY2UoLzx0ZXh0YXJlYS9nLFwiPGYtdGV4dGFyZWFcIilcclxuICAgIGg9aC5yZXBsYWNlKC90ZXh0YXJlYT4vZyxcImYtdGV4dGFyZWE+XCIpXHJcbiAgICBoPWgucmVwbGFjZSgvPHJhZGlvL2csXCI8Zi1yYWRpb1wiKVxyXG4gICAgaD1oLnJlcGxhY2UoL3JhZGlvPi9nLFwiZi1yYWRpbz5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88Y2hlY2tib3gvZyxcIjxmLWNoZWNrYm94XCIpXHJcbiAgICBoPWgucmVwbGFjZSgvY2hlY2tib3g+L2csXCJmLWNoZWNrYm94PlwiKVxyXG4gICAgaD1oLnJlcGxhY2UoLzxkYXRhL2csXCI8Zi1kYXRhXCIpXHJcbiAgICBoPWgucmVwbGFjZSgvZGF0YT4vZyxcImYtZGF0YT5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88c2VsZWN0L2csXCI8Zi1zZWxlY3RcIilcclxuICAgIGg9aC5yZXBsYWNlKC9zZWxlY3Q+L2csXCJmLXNlbGVjdD5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88ZGVwdC9nLFwiPGYtZGVwdFwiKVxyXG4gICAgaD1oLnJlcGxhY2UoL2RlcHQ+L2csXCJmLWRlcHQ+XCIpXHJcbiAgICBoPWgucmVwbGFjZSgvPHNlbGVjdGFib3V0ZmllbGQvZyxcIjxmLXNlbGVjdGFib3V0ZmllbGRcIilcclxuICAgIGg9aC5yZXBsYWNlKC9zZWxlY3RhYm91dGZpZWxkPi9nLFwiZi1zZWxlY3RhYm91dGZpZWxkPlwiKVxyXG4gICAgaD1oLnJlcGxhY2UoLzx0cmVlZGVwYXJ0bWVudGZpZWxkL2csXCI8Zi10cmVlZGVwYXJ0bWVudGZpZWxkXCIpXHJcbiAgICBoPWgucmVwbGFjZSgvdHJlZWRlcGFydG1lbnRmaWVsZD4vZyxcImYtdHJlZWRlcGFydG1lbnRmaWVsZD5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88dXNlcmZpZWxkL2csXCI8Zi11c2VyZmllbGRcIilcclxuICAgIGg9aC5yZXBsYWNlKC91c2VyZmllbGQ+L2csXCJmLXVzZXJmaWVsZD5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88c3VnZ2VzdGZpZWxkL2csXCI8Zi1zdWdnZXN0ZmllbGRcIilcclxuICAgIGg9aC5yZXBsYWNlKC9zdWdnZXN0ZmllbGQ+L2csXCJmLXN1Z2dlc3RmaWVsZD5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88YnV0dG9uL2csXCI8Zi1idXR0b25cIilcclxuICAgIGg9aC5yZXBsYWNlKC9idXR0b24+L2csXCJmLWJ1dHRvbj5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88dmlld2RpYWxvZ2ZpZWxkL2csXCI8Zi12aWV3ZGlhbG9nZmllbGRcIilcclxuICAgIGg9aC5yZXBsYWNlKC92aWV3ZGlhbG9nZmllbGQ+L2csXCJmLXZpZXdkaWFsb2dmaWVsZD5cIilcclxuICAgIGg9aC5yZXBsYWNlKC88aW1nL2csXCI8Zi1pbWdcIilcclxuICAgIGg9aC5yZXBsYWNlKC9pbWc+L2csXCJmLWltZz5cIilcclxuICAgIC8vIGFycj1oLnNwbGl0KFwiPlwiKTtcclxuICAgIC8vIGxldCBsZW5ndGg9YXJyLmxlbmd0aDtcclxuICAgIFxyXG4gICAgLy8gZm9yKGxldCBpPTA7aTxsZW5ndGg7aSsrKXtcclxuICAgIC8vICAgdGhpcy5mb3JtXHJcbiAgICAvLyB9XHJcblxyXG4gICAgY29uc29sZS5sb2coaCk7XHJcbiAgICByZXR1cm4gaDtcclxuICB9XHJcbiAgcGFyc2VIdG1sKCl7XHJcbiAgICBcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEhUTUxPcGVyYXRlO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3V0aWxpdHkvSFRNTE9wZXJhdGUuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBOzs7Ozs7QUFLQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///92\n");

/***/ }),
/* 93 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Resources = function () {\n  function Resources() {\n    _classCallCheck(this, Resources);\n  }\n\n  _createClass(Resources, [{\n    key: 'loadImage',\n    value: function loadImage(url) {\n      return new Promise(function (resolve, reject) {\n        var img = new Image();\n        img.onload = function () {\n          return resolve(img);\n        };\n        img.onerror = reject;\n        img.src = url;\n      });\n    }\n  }, {\n    key: 'onload',\n    value: function onload(callback) {\n      var _this = this;\n\n      var pr = [];\n\n      var source = {\n        // abort: \"images/abort.gif\",\n        // abortBig: \"images/abort_big.gif\",\n        auto: 'images/auto.gif',\n        // autoBig: \"images/auto_big.gif\",\n        complete: 'images/complete.gif',\n        // completeBig: \"images/complete_big.gif\",\n        manual: 'images/manual.gif',\n        // manualBig: \"images/manual_big.gif\",\n        start: 'images/start.gif',\n        // startBig: \"images/start_big.gif\",\n        subflow: 'images/subflow.gif'\n        // subflowBig: \"images/subflow_big.gif\",\n        // suspend: \"images/suspend.gif\",\n        // suspendBig: \"images/suspend_big.gif\",\n        // terminate: \"images/terminate.gif\",\n        // terminateBig: \"images/terminate_big.gif\",\n      };\n\n      var _loop = function _loop(key) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          var url = source[key];\n          var p = _this.loadImage(url).then(function (img) {\n            switch (key) {\n              case 'start':\n                Resources.IMG_START_NODE = img;\n                break;\n              case 'complete':\n                Resources.IMG_COMPLETE_NODE = img;\n                break;\n              case 'auto':\n                Resources.IMG_AUTO_NODE = img;\n                break;\n              case 'manual':\n                Resources.IMG_MANUAL_NODE = img;\n                break;\n              case 'subflow':\n                Resources.IMG_SUBFLOW_NODE = img;\n                break;\n              default:\n                break;\n            }\n            return img;\n          }).catch(function (err) {\n            return console.log(err);\n          });\n          pr.push(p);\n        }\n      };\n\n      for (var key in source) {\n        _loop(key);\n      }\n\n      Promise.all(pr).then(function () {\n        callback();\n      });\n    }\n  }]);\n\n  return Resources;\n}();\n\nResources.IMG_START_NODE = null;\nResources.IMG_COMPLETE_NODE = null;\nResources.IMG_AUTO_NODE = null;\nResources.IMG_MANUAL_NODE = null;\nResources.IMG_SUBFLOW_NODE = null;\n\nResources.FONT_METRICS = {\n  width: 12,\n  height: 12,\n  ascent: 1\n};\n\nResources.COLOR = {\n  white: 'rgb(255, 255, 255)',\n  lightGray: 'rgb(229, 229, 229)',\n  black: 'rgb(0, 0, 0)',\n  lightYellow: '#FFFFE1',\n  blue: 'blue'\n};\n\nexports.default = Resources;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL3V0aWxpdHkvUmVzb3VyY2VzLmpzPzZhMmUiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgUmVzb3VyY2VzIHtcclxuICBsb2FkSW1hZ2UodXJsKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHJlc29sdmUoaW1nKTtcclxuICAgICAgaW1nLm9uZXJyb3IgPSByZWplY3Q7XHJcbiAgICAgIGltZy5zcmMgPSB1cmw7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9ubG9hZChjYWxsYmFjaykge1xyXG4gICAgY29uc3QgcHIgPSBbXTtcclxuXHJcbiAgICBjb25zdCBzb3VyY2UgPSB7XHJcbiAgICAgIC8vIGFib3J0OiBcImltYWdlcy9hYm9ydC5naWZcIixcclxuICAgICAgLy8gYWJvcnRCaWc6IFwiaW1hZ2VzL2Fib3J0X2JpZy5naWZcIixcclxuICAgICAgYXV0bzogJ2ltYWdlcy9hdXRvLmdpZicsXHJcbiAgICAgIC8vIGF1dG9CaWc6IFwiaW1hZ2VzL2F1dG9fYmlnLmdpZlwiLFxyXG4gICAgICBjb21wbGV0ZTogJ2ltYWdlcy9jb21wbGV0ZS5naWYnLFxyXG4gICAgICAvLyBjb21wbGV0ZUJpZzogXCJpbWFnZXMvY29tcGxldGVfYmlnLmdpZlwiLFxyXG4gICAgICBtYW51YWw6ICdpbWFnZXMvbWFudWFsLmdpZicsXHJcbiAgICAgIC8vIG1hbnVhbEJpZzogXCJpbWFnZXMvbWFudWFsX2JpZy5naWZcIixcclxuICAgICAgc3RhcnQ6ICdpbWFnZXMvc3RhcnQuZ2lmJyxcclxuICAgICAgLy8gc3RhcnRCaWc6IFwiaW1hZ2VzL3N0YXJ0X2JpZy5naWZcIixcclxuICAgICAgc3ViZmxvdzogJ2ltYWdlcy9zdWJmbG93LmdpZicsXHJcbiAgICAgIC8vIHN1YmZsb3dCaWc6IFwiaW1hZ2VzL3N1YmZsb3dfYmlnLmdpZlwiLFxyXG4gICAgICAvLyBzdXNwZW5kOiBcImltYWdlcy9zdXNwZW5kLmdpZlwiLFxyXG4gICAgICAvLyBzdXNwZW5kQmlnOiBcImltYWdlcy9zdXNwZW5kX2JpZy5naWZcIixcclxuICAgICAgLy8gdGVybWluYXRlOiBcImltYWdlcy90ZXJtaW5hdGUuZ2lmXCIsXHJcbiAgICAgIC8vIHRlcm1pbmF0ZUJpZzogXCJpbWFnZXMvdGVybWluYXRlX2JpZy5naWZcIixcclxuICAgIH07XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gc291cmNlKSB7XHJcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gc291cmNlW2tleV07XHJcbiAgICAgICAgY29uc3QgcCA9IHRoaXMubG9hZEltYWdlKHVybCkudGhlbigoaW1nKSA9PiB7XHJcbiAgICAgICAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICAgICAgICBjYXNlICdzdGFydCc6XHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzLklNR19TVEFSVF9OT0RFID0gaW1nO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdjb21wbGV0ZSc6XHJcbiAgICAgICAgICAgICAgUmVzb3VyY2VzLklNR19DT01QTEVURV9OT0RFID0gaW1nO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdhdXRvJzpcclxuICAgICAgICAgICAgICBSZXNvdXJjZXMuSU1HX0FVVE9fTk9ERSA9IGltZztcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnbWFudWFsJzpcclxuICAgICAgICAgICAgICBSZXNvdXJjZXMuSU1HX01BTlVBTF9OT0RFID0gaW1nO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdzdWJmbG93JzpcclxuICAgICAgICAgICAgICBSZXNvdXJjZXMuSU1HX1NVQkZMT1dfTk9ERSA9IGltZztcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBpbWc7XHJcbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IGNvbnNvbGUubG9nKGVycikpO1xyXG4gICAgICAgIHByLnB1c2gocCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBQcm9taXNlLmFsbChwcikudGhlbigoKSA9PiB7XHJcbiAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcblJlc291cmNlcy5JTUdfU1RBUlRfTk9ERSA9IG51bGw7XHJcblJlc291cmNlcy5JTUdfQ09NUExFVEVfTk9ERSA9IG51bGw7XHJcblJlc291cmNlcy5JTUdfQVVUT19OT0RFID0gbnVsbDtcclxuUmVzb3VyY2VzLklNR19NQU5VQUxfTk9ERSA9IG51bGw7XHJcblJlc291cmNlcy5JTUdfU1VCRkxPV19OT0RFID0gbnVsbDtcclxuXHJcblJlc291cmNlcy5GT05UX01FVFJJQ1MgPSB7XHJcbiAgd2lkdGg6IDEyLFxyXG4gIGhlaWdodDogMTIsXHJcbiAgYXNjZW50OiAxLFxyXG59O1xyXG5cclxuUmVzb3VyY2VzLkNPTE9SID0ge1xyXG4gIHdoaXRlOiAncmdiKDI1NSwgMjU1LCAyNTUpJyxcclxuICBsaWdodEdyYXk6ICdyZ2IoMjI5LCAyMjksIDIyOSknLFxyXG4gIGJsYWNrOiAncmdiKDAsIDAsIDApJyxcclxuICBsaWdodFllbGxvdzogJyNGRkZGRTEnLFxyXG4gIGJsdWU6ICdibHVlJyxcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFJlc291cmNlcztcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy91dGlsaXR5L1Jlc291cmNlcy5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOzs7Ozs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaEJBO0FBQ0E7QUFKQTtBQXVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqQkE7QUFtQkE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBaERBO0FBQ0E7QUFxQkE7QUFBQTtBQTJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBQ0E7QUFPQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///93\n");

/***/ }),
/* 94 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Helper = function () {\n    _createClass(Helper, null, [{\n        key: 'getInstance',\n        value: function getInstance() {\n            if (!Helper.instance || !(Helper.instance instanceof Helper)) {\n                Helper.instance = new Helper();\n            }\n\n            return Helper.instance;\n        }\n    }]);\n\n    function Helper() {\n        _classCallCheck(this, Helper);\n\n        this.templete = '';\n    }\n\n    /**\r\n     * 澶勭悊璇锋眰鍚庤幏鍙栫殑妯℃澘\r\n     * @param tml 闇€瑕佸鐞嗙殑妯℃澘\r\n     * @param data 闇€瑕佸~鍏呰繘妯℃澘閲岀殑鏁版嵁\r\n     * @param tmlId 闇€瑕佽繃婊ゆ帀鐨勬ā鏉縤d锛岀敤浜庡垹闄ゆā鏉块噷涓嶉渶瑕佺殑鏍囩\r\n     * @return 杩斿洖澶勭悊瀹岀殑妯℃澘html瀛楃涓瞈r\n     */\n\n\n    _createClass(Helper, [{\n        key: 'handleTemplete',\n        value: function handleTemplete(tml, data, tmlId) {\n            var $tml = $(tml).filter('#' + tmlId).html();\n            //console.log(tml);\n            var render = template.compile($tml);\n            //console.log(render);\n            return render(data);\n        }\n    }]);\n\n    return Helper;\n}();\n\nHelper.instance = null;\nexports.default = Helper;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL3V0aWxpdHkvSGVscGVyLmpzP2E2Y2QiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgSGVscGVyIHtcclxuICAgIHN0YXRpYyBpbnN0YW5jZSA9IG51bGw7XHJcblxyXG4gICAgc3RhdGljIGdldEluc3RhbmNlKCkge1xyXG4gICAgICAgIGlmKCFIZWxwZXIuaW5zdGFuY2UgfHwgIShIZWxwZXIuaW5zdGFuY2UgaW5zdGFuY2VvZiBIZWxwZXIpKSB7XHJcbiAgICAgICAgICAgIEhlbHBlci5pbnN0YW5jZSA9IG5ldyBIZWxwZXIoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBIZWxwZXIuaW5zdGFuY2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy50ZW1wbGV0ZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5aSE55CG6K+35rGC5ZCO6I635Y+W55qE5qih5p2/XHJcbiAgICAgKiBAcGFyYW0gdG1sIOmcgOimgeWkhOeQhueahOaooeadv1xyXG4gICAgICogQHBhcmFtIGRhdGEg6ZyA6KaB5aGr5YWF6L+b5qih5p2/6YeM55qE5pWw5o2uXHJcbiAgICAgKiBAcGFyYW0gdG1sSWQg6ZyA6KaB6L+H5ruk5o6J55qE5qih5p2/aWTvvIznlKjkuo7liKDpmaTmqKHmnb/ph4zkuI3pnIDopoHnmoTmoIfnrb5cclxuICAgICAqIEByZXR1cm4g6L+U5Zue5aSE55CG5a6M55qE5qih5p2/aHRtbOWtl+espuS4slxyXG4gICAgICovXHJcbiAgICBoYW5kbGVUZW1wbGV0ZSh0bWwsIGRhdGEsIHRtbElkKSB7XHJcbiAgICAgICAgY29uc3QgJHRtbCA9ICQodG1sKS5maWx0ZXIoJyMnICsgdG1sSWQpLmh0bWwoKTtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKHRtbCk7XHJcbiAgICAgICAgY29uc3QgcmVuZGVyID0gdGVtcGxhdGUuY29tcGlsZSgkdG1sKTtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKHJlbmRlcik7XHJcbiAgICAgICAgcmV0dXJuIHJlbmRlcihkYXRhKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgSGVscGVyO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvdXRpbGl0eS9IZWxwZXIuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUE1QkE7QUErQkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///94\n");

/***/ }),
/* 95 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _layout2 = __webpack_require__(21);\n\nvar _layout3 = _interopRequireDefault(_layout2);\n\nvar _TrLayout = __webpack_require__(96);\n\nvar _TrLayout2 = _interopRequireDefault(_TrLayout);\n\nvar _TdLayout = __webpack_require__(28);\n\nvar _TdLayout2 = _interopRequireDefault(_TdLayout);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TableLayout = function (_layout) {\n    _inherits(TableLayout, _layout);\n\n    function TableLayout() {\n        _classCallCheck(this, TableLayout);\n\n        var _this = _possibleConstructorReturn(this, (TableLayout.__proto__ || Object.getPrototypeOf(TableLayout)).call(this));\n\n        _this.type = \"table\";\n        _this.text = \"tablelayout\";\n        _this.cursor = \"default\";\n        _this.element = [];\n        _this.id = _utility.Sequence.createUuid();\n        _this.cols = 5;\n        _this.rows = 5;\n        _this.trs = [];\n        _this.scope = 'tablelayout';\n        _this.tableClass = \"tablelayout\";\n        return _this;\n    }\n\n    _createClass(TableLayout, [{\n        key: 'init',\n        value: function init() {\n            for (var i = 0; i < this.rows; i++) {\n                var tr = new _TrLayout2.default();\n                tr.cols = this.cols;\n                tr.width = this.width;\n                tr.height = this.height / this.rows;\n                tr.x = this.x;\n                tr.y = this.y + this.height / this.rows * i;\n                tr.init();\n                this.trs.push(tr);\n            }\n        }\n    }, {\n        key: 'toHtml',\n        value: function toHtml() {\n            var length = this.element.length;\n            var h = \"\";\n            h = '<table class=\\'tablelayout-base\\' style=\\'' + 'left:' + this.left + 'px;' + 'top:' + this.top + 'px;' + '\\'' + '>' + '<tbody ' + '>';\n\n            for (var i = 0; i < this.rows; i++) {\n                h += '<tr>';\n                for (var _j = 0; _j < this.cols; _j++) {\n                    h += '<td class=\\'tablelayout-td\\'>';\n                    var k = i * 3 + _j;\n\n                    if (this.element[k].childrens && this.element[k].childrens.length > 0) {\n                        var len = this.element[k].childrens.length;\n                        for (var a = 0; a < len; a++) {\n                            var scope = this.element[k].childrens[a].scope;\n                            switch (scope) {\n                                case \"input\":\n                                    h += this.element[k].childrens[a].toHtml();\n                                    break;\n                                default:\n                                    break;\n                            }\n                        }\n                    }\n                    h += '</td>';\n                }\n                h += '</tr>';\n            }\n            h += '</tbody></table>';\n            return h;\n        }\n    }, {\n        key: 'parseHtml',\n        value: function parseHtml(html) {\n            var _this2 = this;\n\n            var that = this;\n            var y = that.y;\n            var x = that.x;\n            var root = $(html)[0];\n            var j = 0;\n            var rowIndex = 0;\n            var traversalNode = function traversalNode(htmlNode) {\n                var tagName = htmlNode.tagName;\n\n                switch (tagName) {\n                    case 'TBODY':\n                        var root2 = htmlNode;\n                        var traversalNode2 = function traversalNode2(htmlNode2) {\n                            var tagName = htmlNode2.tagName;\n\n                            switch (tagName) {\n                                case 'TR':\n                                    var trLayout = new _TrLayout2.default();\n                                    trLayout.iWhich = j;\n                                    trLayout.width = parseInt(htmlNode2.getAttribute(\"width\"));\n\n                                    trLayout.height = parseInt(htmlNode2.getAttribute(\"height\"));\n                                    trLayout.y = y;\n                                    trLayout.x = x;\n                                    trLayout.rowIndex = rowIndex;\n                                    rowIndex++;\n                                    y += trLayout.height;\n\n                                    trLayout.parseHtml(htmlNode2);\n                                    that.trs.push(trLayout);\n\n                                    break;\n                                default:\n                                    console.log(\"no2\");\n                                    break;\n\n                            }\n                        };\n                        if (root2.hasChildNodes()) {\n                            _this2.rows = root2.children.length;\n\n                            for (var i = 0; i < root2.children.length; i++) {\n                                traversalNode2(root2.children[i]);\n                            }\n                        }\n                        break;\n                    default:\n                        // console.log(\"no\");\n                        break;\n\n                }\n            };\n            if (root.hasChildNodes()) {\n                var style = root.getAttribute(\"style\");\n                var obj = {};\n                do {\n                    var i = style.indexOf(\":\");\n                    var key = style.slice(0, i);\n                    style = style.slice(i + 1);\n\n                    var _j2 = style.indexOf(\";\");\n                    var val = style.slice(0, _j2);\n                    style = style.slice(_j2 + 1);\n\n                    obj[key] = parseFloat(val);\n                } while (style.length != 0);\n                this.setProps(obj);\n                for (var _j3 = 0; _j3 < root.children.length; _j3++) {\n                    traversalNode(root.children[_j3]);\n                }\n            }\n        }\n    }, {\n        key: 'paint',\n        value: function paint() {\n\n            var h = \"\";\n            h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\" id=\"' + this.id + '\"><table ' + 'width=\"' + this.width + '\" ' + 'height=\"' + this.height + '\"' + 'panelx=\"' + this.x + '\"' + 'panely=\"' + this.y + '\"' + '>';\n            for (var i = 0; i < this.trs.length; i++) {\n\n                h += this.trs[i].paint();\n            }\n\n            h += '</table></div>';\n\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-pencil';\n            node.uuid = this.id;\n            node.instance = this;\n            if (this.element.length > 0) {\n                node.nodes = [];\n                for (var i = 0, len = this.element.length; i < len; i++) {\n                    var data = this.element[i].getNodeConfigInfo();\n                    node.nodes.push(data);\n                }\n            }\n            return node;\n        }\n    }, {\n        key: 'addElement',\n        value: function addElement(elem) {\n            var len = this.element.length;\n            for (var i = 0; i < len; i++) {\n                if (elem.x < this.element[i].x + this.element[i].width && elem.x > this.element[i].x && elem.y < this.element[i].y + this.element[i].height && elem.y > this.element[i].y) {\n                    elem.x = elem.x - this.element[i].x;\n                    elem.y = elem.y - this.element[i].y;\n                    elem.belongId = this.element[i].id;\n                    this.element[i].childrens.push(elem);\n                    return true;\n                }\n            }\n            return false;\n        }\n    }, {\n        key: 'resetElementToChunk',\n        value: function resetElementToChunk(elem) {\n            var len = this.element.length;\n            for (var k = 0; k < len; k++) {\n                if (this.element[k].id == elem.belongId) {\n                    var ind = void 0;\n                    for (var _j4 = 0; _j4 < this.element[k].childrens.length; _j4++) {\n                        if (elem.id == this.element[k].childrens[_j4].id) {\n                            ind = _j4;\n                        }\n                    }\n                    this.element[k].childrens.splice(ind, 1);\n                }\n            }\n            for (var i = 0; i < len; i++) {\n                //鐢变簬甯冨眬涓嬬殑鍏冪礌瀛樼殑浣嶇疆鏄浉瀵逛簬甯冨眬鐨勫乏涓婅鐨勫潗鏍囷紝鎵€浠ヨ绠楃殑鏃跺€欏簲璇ユ槸鍏冪礌鐨勫潗鏍囧€煎姞涓婂竷灞€宸︿笂瑙掔殑鍧愭爣鍊煎皬浜庢墍鍦ㄥ尯鍩熺殑鐩稿浜巔anel鐨勪綅缃紝娉ㄦ剰鍔犱笂dewidth鍜宧eight鐨勪箻鏁癨n                if (elem.x + this.x < this.x + this.element[i].width * (i % this.cols + 1) && elem.x + this.x > this.x && elem.y + this.y < this.y + this.element[i].height * Math.ceil((i + 1) / this.rows) && elem.y + this.y > this.y) {\n                    // elem.x=elem.x-this.element[i].x;\n                    // elem.y=elem.y-this.element[i].y;\n                    elem.belongId = this.element[i].id;\n                    this.element[i].childrens.push(elem);\n                    return true;\n                }\n            }\n            return false;\n        }\n    }, {\n        key: 'resetTrLayout',\n        value: function resetTrLayout(moveY) {\n            this.trs.forEach(function (elm) {\n                elm.y += moveY;\n                // elm.height +=moveY;\n                elm.resetTdLayout(moveY);\n            });\n        }\n    }, {\n        key: 'getRealRowCol',\n        value: function getRealRowCol(row, col) {\n            for (var i = 0; i < this.trs.length; i++) {\n                for (var _j5 = 0; _j5 < this.trs[i].tds.length; _j5++) {\n                    if (this.trs[i].tds[_j5].rowIndex == row && this.trs[i].tds[_j5].colIndex == col) {\n                        return { \"realrow\": i, \"realcol\": _j5 };\n                    }\n                }\n            }\n        }\n        //get鍚堝苟鍗曞厓鏍肩敤鐨刓n\n    }, {\n        key: 'resetCellSpan',\n        value: function resetCellSpan(row, col) {\n            this.trs.forEach(function (elm) {\n                if (elm.haveCellSpan.length > 0) {\n                    elm.haveCellSpan.forEach(function (el) {\n                        if (el.rowIndex == row && el.colIndex == col) {\n                            el.rowspan += 1;\n                        }\n                    });\n                }\n            });\n        }\n        //閲嶇疆鎵€鏈夌殑havecellspan\n        /**\r\n         * 閬嶅巻鎵€鏈塼r锛屾壘鍒颁富鍔ㄥ彈鏀瑰彉鐨勫崟鍏冩牸锛屾壘鍒颁竴涓亶鍘嗕竴娆able鐨勬墍鏈夊崟鍏冩牸锛孿r\n         * 鐢ㄨ繖涓富鍔ㄥ湴琛屽垪鍙峰幓瀵绘壘琚姩鍙楀奖鍝嶇殑琛屽垪鍙凤紝\r\n         * 鐒跺悗鏀瑰彉琚姩鍙楀奖鍝嶇殑琛屽垪鍙凤紝鏉ョ‘瀹氭渶鍚巖owspan鏁板瓧锛屾墍浠ヨ繖閲岃纭畾姣忔鍒犻櫎鎴栬€呭鍔犺涔嬪悗锛孿r\n         * 涓诲姩鏀跺埌褰卞搷鐨勫崟鍏冩牸鐨勫唴瀹逛竴瀹氳姝g‘锛屼笉鐒惰繖涓噸缃細鍑洪敊\r\n         * \r\n         * 閬嶅巻鎵€鏈夌殑td锛屽鏋滄湁鍚堝苟鍗曞厓鏍肩殑锛屾壘鍒拌鍙峰拰鍒楀彿鐒跺悗璁板綍涓嬫潵锛屼箣鍚庡啀缁欒鍔ㄥ彈褰卞搷鐨勮鍔犱笂琚姩璁板綍锛孿r\n         */\n\n    }, {\n        key: 'resetAllCellSpan',\n        value: function resetAllCellSpan() {\n            var that = this;\n            for (var i = 0; i < this.trs.length; i++) {\n                this.trs[i].haveCellSpan = [];\n            };\n            for (var _j6 = 0; _j6 < this.trs.length; _j6++) {\n                for (var k = 0; k < this.trs[_j6].tds.length; k++) {\n                    if (this.trs[_j6].tds[k].rowspan != 1) {\n                        var rowspan = this.trs[_j6].tds[k].rowspan;\n                        var colIndex = this.trs[_j6].tds[k].colIndex;\n                        this.trs[_j6].haveCellSpan.push({ \"rowIndex\": _j6, \"colIndex\": k, \"rowspan\": this.trs[_j6].tds[k].rowspan, \"isActive\": true });\n                        for (var a = _j6 + 1; a < rowspan + _j6; a++) {\n                            this.trs[a].haveCellSpan.push({ \"rowIndex\": _j6, \"colIndex\": k, \"rowspan\": this.trs[_j6].tds[k].rowspan, \"isActive\": false });\n                        }\n                    }\n                }\n            }\n        }\n        //閲嶇疆鎵€鏈夊悜鍙崇殑havecellRightspan\n        /**\r\n         *  寰幆tr閲岄潰鐨則d锛屾壘鍒版湁鍚戝彸鍚堝苟鐨勫崟鍏冩牸锛岀劧鍚庡鏀硅杩涜鏀瑰姩锛屽苟涓斾慨鏀圭敤鏉ヨ褰曠殑淇℃伅\r\n         * \r\n         *   */\n\n    }, {\n        key: 'resetAllCellRightSpan',\n        value: function resetAllCellRightSpan() {\n            var that = this;\n            for (var i = 0; i < this.trs.length; i++) {\n                this.trs[i].haveCellRightSpan = [];\n            };\n            for (var _j7 = 0; _j7 < this.trs.length; _j7++) {\n                for (var k = 0; k < this.trs[_j7].tds.length; k++) {\n                    if (this.trs[_j7].tds[k].colspan != 1) {\n                        var colspan = this.trs[_j7].tds[k].colspan;\n                        this.trs[_j7].haveCellRightSpan.push({ \"rowIndex\": _j7, \"colIndex\": k, \"colspan\": colspan, \"isActive\": true });\n                    }\n                }\n            }\n        }\n        //閲嶇疆鎵€鏈塼rtd鐨勫潗鏍囧拰璁板綍涓嬭鏍囩殑鍊糪n        /**\r\n         * 娉細杩欎釜鏂规硶鎵ц鏃犻敊鐨勫墠鎻愭槸td鐨剅owspan鍜宑olspan锛宧eight鍜寃idth淇濆瓨鐨勬槸姝g‘鐨刓r\n         * 鎷垮埌鍒濆鐨剎锛寉缁欑涓€涓崟鍏冩牸锛岀劧鍚庡垽鏂鍗曞厓鏍兼槸鍚︽湁鍚戝彸鍜屽悜涓嬬殑鍚堝苟鍗曞厓鏍硷紝\r\n         * 鏈夊悜鍙崇殑鍗曞厓鏍硷紝璁板綍鍚戝彸澶氬皯涓劧鍚庨噸缃敼琛屼笅涓€涓猼d鐨刢olindex锛孿r\n         * 鏈夊悜涓嬬殑鍗曞厓鏍硷紝璁板綍鍚戜笅澶氬皯涓紝鐒跺悗浠ュ悗閬嶅巻涓嬩竴琛岀殑鏃跺€欒瀵硅鍗曞厓鏍间笅闈㈢殑鍗曞厓鏍兼墍鍦ㄨ鐨刢olindex鐨勫垵濮嬪€�+1\r\n         *  杩樻病鏈夋兂濂芥€庝箞鍐�2019.12.26\r\n         *  */\n        // resetPositionAndIndex(){\n        //     let x=this.x,\n        //         y=this.y,\n        //         that=this,\n        //         // rowLen=0,\n        //         rowLen=null,\n        //         haveRowspan=false;\n\n        //     for(let i=0;i<this.trs.length;i++){\n        //         let colLen=0,\n        //         rowNum=0,\n        //         colStart=0;\n        //         this.trs[i].rowIndex=i;\n        //         for(let j=0;j<this.trs[i].tds.length;j++){\n        //             // if(haveRowSpan && rowLen!=0){\n        //             //     rowLen--;\n        //             //     colStart=j+rowNum;\n        //             // }else{\n        //                 colStart=j;\n        //             // }\n\n        //             if(j==0 && i==0){\n        //                 this.trs[i].tds[j].colIndex=0;\n        //                 this.trs[i].tds[j].rowIndex=0;\n\n        //             }\n        //             if(this.trs[i].tds[j].colspan!=1 ){\n        //                 //褰撳墠鍗曞厓鏍兼湁鍚戝彸鐨勫悎骞讹紝娌℃湁鍚戜笅鐨刓n        //                 colLen=colStart+this.trs[i].tds[j].colspan-1;\n        //                 // colLen++;\n        //                 this.trs[i].tds[j].colIndex=colLen;\n        //                 this.trs[i].tds[j].rowIndex=rowLen;\n\n        //                 this.trs[i].tds[j].rowIndex=i;\n        //             }else if(this.trs[i].tds[j].rowspan!=1){\n        //                 //褰撳墠鍗曞厓鏍兼湁鍚戜笅鐨勫悎骞讹紝娌℃湁鍚戝彸鐨刓n        //                 // rowNum++;//鐢ㄦ潵璁板綍褰撳墠琛屾湁澶氬皯涓崟鍏冩牸鏈夊悜涓嬪悎骞跺崟鍏冩牸\n        //                 // rowLen=this.trs[i].tds[j].rowspan-1;\n        //                 // haveRowspan=true;\n        //                 this.trs[i].tds[j].rowIndex=rowLen;\n        //                 this.trs[i].tds[j].colIndex=j;\n\n        //             }\n        //         }\n        //     }\n\n        // }\n\n\n    }, {\n        key: 'copyFn',\n        value: function copyFn(obj) {\n            if (obj == null) {\n                return null;\n            }\n            var result = Array.isArray(obj) ? [] : {};\n            for (var key in obj) {\n                if (obj.hasOwnProperty(key)) {\n                    if (_typeof(obj[key]) === 'object') {\n                        result[key] = this.copyFn(obj[key]); // 濡傛灉鏄璞★紝鍐嶆璋冪敤璇ユ柟娉曡嚜韬玕n                    } else if (typeof obj[key] === 'function') {\n                        result[key] = this.copyFn(obj[key]); // 濡傛灉鏄璞★紝鍐嶆璋冪敤璇ユ柟娉曡嚜韬玕n                    } else {\n                        result[key] = obj[key];\n                    }\n                }\n            }\n            return result;\n        }\n\n        /**\r\n         *澶嶅埗涓€涓猼r  \r\n         *  鏆傛椂娌℃湁鎵惧埌濡備綍娣辨嫹璐濅竴涓疄渚嬪寲鐨勫璞¤€屼笉褰卞搷瀹炰緥鍖栧璞$殑鍘熷瀷鏂规硶\r\n         *  */\n\n    }, {\n        key: 'copyTr',\n        value: function copyTr(cloneRow, preRow) {\n            cloneRow.cols = preRow.cols;\n            cloneRow.x = preRow.x;\n            cloneRow.y = preRow.y;\n            cloneRow.width = preRow.width;\n            cloneRow.height = preRow.height;\n            cloneRow.rowIndex = preRow.rowIndex;\n            cloneRow.init();\n            if (cloneRow.tds.length != preRow.tds.length) {\n                cloneRow.tds.splice(preRow.tds.length, cloneRow.tds.length - preRow.tds.length);\n            }\n            preRow.tds.forEach(function (elm, index) {\n                cloneRow.tds[index].x = elm.x;\n                cloneRow.tds[index].y = elm.y;\n                cloneRow.tds[index].width = elm.width;\n                cloneRow.tds[index].height = elm.height;\n                cloneRow.tds[index].colspan = elm.colspan;\n            });\n        }\n        /**\r\n         *澶嶅埗涓€涓猼d  \r\n         *  鏆傛椂娌℃湁鎵惧埌濡備綍娣辨嫹璐濅竴涓疄渚嬪寲鐨勫璞¤€屼笉褰卞搷瀹炰緥鍖栧璞$殑鍘熷瀷鏂规硶\r\n         *  */\n\n    }, {\n        key: 'copyTd',\n        value: function copyTd(cloneCol, preCol) {\n            cloneCol.x = preCol.x;\n            cloneCol.y = preCol.y;\n            cloneCol.width = preCol.width;\n            cloneCol.height = preCol.height;\n            cloneCol.rowIndex = preCol.rowIndex;\n            cloneCol.colIndex = preCol.colIndex;\n        }\n\n        /**\r\n        *閲嶇疆鎵€鏈塼d鐨剏杞村潗鏍嘰r\n        *  */\n\n    }, {\n        key: 'resetAllTdY',\n        value: function resetAllTdY() {\n            for (var _j8 = 0; _j8 < this.trs.length; _j8++) {\n                for (var k = 0; k < this.trs[_j8].tds.length; k++) {\n                    this.trs[_j8].tds[k].y = this.trs[_j8].y;\n                }\n            }\n        }\n\n        /**\r\n         * ps 浠ヤ笅琛屽垪鍗曞厓鏍煎潎鏄嬁tr鐨剅owindex锛屽拰td鐨刢olindex锛宼d鐨剅owindex涓嶆柟渚夸慨鏀广€俓r\n         */\n        /** \r\n         * 鎻掑叆涓€琛孿r\n         * \r\n         * 1.鑾峰緱褰撳墠瑕乧lone鐨勮锛屽鍒跺綋鍓嶈锛屾敞鎰忔繁鎷疯礉闂(鏈畬鍏ㄨВ鍐�)\r\n         * 2.鐢╯plice鏉ユ彃鍏ユ寚瀹氱殑琛岋紝\r\n         * 3.reset鍧愭爣锛屽鏋滃綋鍓嶆彃鍏ョ殑鍦版柟鏄浣嶏紝閭e悗闈㈡墍鏈夐兘瑕佸彉鍖栵紝濡傛灉涓嶆槸锛岄偅灏变箣鍚庣殑鍙樺寲灏卞彲浠r\n         * 4.repaint\r\n         * 1.鐜板湪鏀圭敤鍙傛暟浠f浛涓嬫爣锛屽氨涓嶈兘鐩存帴鎿嶄綔鏁扮粍锛屽厛閬嶅巻tr锛屾嬁鍒板搴斿弬鏁扮殑tr鐨刬鍊肩劧鍚庤繘琛屾搷浣滐紝鏃犺鍒犻櫎杩樻槸澧炲姞閮藉緱瀵逛箣鍚庣殑鍙傛暟杩涜浠庢柊璧嬪€糪r\n         * 鐜板湪绠€鏄撶増鐨勬槸鐩存帴鍦ㄤ笅鏂规彃鍏ワ紝锛屾墍浠ュ彧闇€瑕佹敼鍙樹箣鍚庣殑鍙傛暟锛屼箣鍚庡鏋滃鍔犳柟娉曚箣鍚庤鍒ゆ柇鎴栬€呯洿鎺ュ鍏ㄩ儴杩涜閲嶆柊璧嬪€硷紙ps锛屾€ц兘娑堣€楀ぇ锛夛紱\r\n         * \r\n         * ps 2019.12.2 鍔犱笂濡傛灉璇ヨ鏈夊悎骞跺崟鍏冩牸鐨勬儏鍐碉紝鏂板涓€琛岀殑鏃跺€欒娉ㄦ剰澶勭悊鍚堝苟鐨勫崟鍏冩牸,鐜板湪鑰冭檻鐨勯兘鏄袱涓崟鍏冩牸鍚堝苟鐨勶紝澶氫釜鐨勮繕娌℃湁鑰冭檻\r\n         * 鎺ユ敹鍒颁竴涓弬鏁帮紝鏄綋鍓嶉紶鏍囧湪鐨勮鏁帮紝鍒ゆ柇褰撳墠鐨勮鐨則ds鐨刲ength鏄惁绛変簬褰撳墠table鐨刢ols锛岀劧鍚嶾r\n         * \r\n         * 2019.12.16\r\n         * 鐜板湪鑰冭檻鐨勬儏鍐佃繕娌℃湁鑰冭檻鍒板悜涓嬪拰鍚戝彸涓€璧锋潵鐨勬儏鍐点€俓r\n            1锛夊鏋滃綋鍓嶉紶鏍囨墍鍦ㄥ崟鍏冩牸瀛樺湪鍚堝苟鍗曞厓鏍硷紝\r\n            濡傛灉瀛樺湪鍚戝彸鍚堝苟鐨勫崟鍏冩牸鐩存帴澶嶅埗淇℃伅銆俓r\n            瀛樺湪鐨勮瘽锛氬垽鏂紶鏍囨墍鍦ㄥ崟鍏冩牸鐨勮鐨勫悜涓嬪悎骞跺崟鍏冩牸绠¤緰鑼冨洿鍐呯殑鏈€鍚庝竴琛屾槸鍚︽湁瓒呭嚭鑼冨洿鐨勫悜涓嬪悎骞跺崟鍏冩牸锛孿r\n                        鏈夌殑璇濇柊澧炵殑琛岃缁ф壙锛堣繖涓瘝寰呮枱閰岋級瓒呭嚭鑼冨洿鐨勫悎骞跺崟鍏冩牸锛孿r\n                        娌℃湁鐨勮瘽灏卞彲浠ョ洿鎺ユ柊澧烇紝涓嶉渶瑕佺户鎵垮悎骞跺崟鍏冩牸銆傜洿鎺ユ柊澧炵殑琛屾槸涓€涓甫鏈夊綋鍓嶈鐨勯珮搴︾殑鍘熷琛屻€俓r\n            涓嶅瓨鍦ㄧ殑璇濓細鍒ゆ柇鏀硅鏄惁鏈夊瓨鍦ㄨ鍔ㄦ垨鑰呬富鍔ㄥ彈褰卞搷鐨勫崟鍏冩牸锛屾湁鐨勮瘽瑕佸鐞嗕竴涓嬶紝娌℃湁鐨勮瘽锛岃鏄庤琛屾槸涓€涓師濮嬭〃鏍艰\r\n            鎵€鏈夌殑鎯呭喌缁撴潫涔嬪悗閮借澶勭悊鍧愭爣楂樺害绛変俊鎭€俓r\n        */\n\n    }, {\n        key: 'insertRow',\n        value: function insertRow(RowIndex, realRowIndex, ColIndex, cellHaveRowspan) {\n            console.log(\"insertRow\", RowIndex);\n            var that = this;\n            var insertRowIndex = null,\n                haveRowSpan = null,\n                mouseColIndex = null,\n                range = null,\n                insertRow = new _TrLayout2.default(),\n                deleteColIndex = null;\n            insertRow.cols = this.cols;\n\n            if (RowIndex == realRowIndex && !cellHaveRowspan) {\n                insertRowIndex = realRowIndex;\n                insertRow.width = this.trs[realRowIndex].width;\n                insertRow.height = this.trs[realRowIndex].height;\n                insertRow.init(); //楂樺害缁ф壙浜嗗綋鍓嶉紶鏍囨墍鍦ㄨ锛屽崟鍏冩牸鏄垵濮嬬殑\n                //褰撳墠鍗曞厓鏍间笉鏄悎骞跺崟鍏冩牸锛屾柊澧炵殑琛屽姞鍦ㄨ鍚堝苟鍗曞厓鏍间箣鍚嶾n                //褰撳墠鐨剅owindex+1灏辨槸瑕佹坊鍔犵殑琛岀殑浣嶇疆\n                //鍒ゆ柇褰撳墠鐨勮鏄惁瀛樺湪涓诲姩琚姩鐨勫崟鍏冩牸锛孿n                //涓诲姩鍙楀奖鍝嶇殑鍗曞厓鏍硷紝涓嬮潰鏂板鐨勪竴琛岃鍘绘帀褰撳墠鍒楃殑鍗曞厓鏍硷紝琚姩鍙楀奖鍝嶇殑锛岃繕鏄澶勭悊鐨� 2019.12.25\n                //琚姩鍙楀奖鍝嶇殑锛屽鏋滃綋鍓嶈鏄渶鍚庝竴涓鍔ㄥ彈褰卞搷鐨勶紝灏辩洿鎺ユ彃鍏ヤ竴涓師濮嬭锛屼笉鍋氬鐞嗭紝濡傛灉涓嶆槸鏈€鍚庝竴涓鍔ㄥ彈褰卞搷鐨勶紝閭h繕鏄澶勭悊\n                if (this.trs[RowIndex].haveCellSpan.length > 0) {\n                    this.trs[RowIndex].haveCellSpan.forEach(function (elm) {\n                        if (elm.isActive) {\n                            //涓诲姩鍙楀奖鍝嶇殑\n                            // insertRow.tds.splice(elm.colIndex,1);\n                            insertRow.tds.forEach(function (el, index) {\n                                if (el.colIndex == that.trs[elm.rowIndex].tds[elm.colIndex].colIndex) {\n                                    deleteColIndex = index;\n                                }\n                            });\n                            insertRow.tds.splice(deleteColIndex, 1);\n                            insertRow.cols -= 1;\n                            that.trs[RowIndex].tds[elm.colIndex].rowspan += 1;\n                            that.trs[RowIndex].tds[elm.colIndex].height += insertRow.height;\n                        } else {\n                            if (realRowIndex !== elm.rowIndex + elm.rowspan - 1) {\n                                //涓嶅湪鏈€鍚庝竴琛屽彈褰卞搷鐨刓n                                insertRow.tds.forEach(function (el, index) {\n                                    if (el.colIndex == that.trs[elm.rowIndex].tds[elm.colIndex].colIndex) {\n                                        deleteColIndex = index;\n                                    }\n                                });\n                                insertRow.tds.splice(deleteColIndex, 1);\n                                insertRow.cols -= 1;\n                                that.trs[elm.rowIndex].tds[elm.colIndex].rowspan += 1;\n                                that.trs[elm.rowIndex].tds[elm.colIndex].height += insertRow.height;\n                            }\n                        }\n                    });\n                }\n                that.trs.splice(realRowIndex + 1, 0, insertRow);\n            } else {\n                //褰撳墠鍗曞厓鏍兼槸鍚堝苟鍗曞厓鏍� 锛屽垽鏂綋鍓嶅悎骞跺崟鍏冩牸鐨勬渶鍚庝竴琛屾槸鍚︽湁瓒呭嚭鑼冨洿鐨勫悎骞跺崟鍏冩牸锛屾湁鐨勮瘽瑕佺户鎵縗n                insertRow.width = this.trs[realRowIndex].width;\n                insertRow.height = this.trs[realRowIndex].height;\n                insertRow.init(); //楂樺害缁ф壙浜嗗綋鍓嶉紶鏍囨墍鍦ㄨ锛屽崟鍏冩牸鏄垵濮嬬殑\n                var lastTrIndex = null;\n                lastTrIndex = RowIndex + this.trs[RowIndex].tds[ColIndex].rowspan - 1;\n                insertRowIndex = lastTrIndex;\n                if (this.trs[lastTrIndex].haveCellSpan.length > 0) {\n                    this.trs[lastTrIndex].haveCellSpan.forEach(function (elm) {\n                        if (elm.rowIndex + elm.rowspan - 1 > lastTrIndex) {\n                            //鏈夎秴鍑鸿寖鍥寸殑鍚堝苟鍗曞厓鏍硷紝瑕佺户鎵縗n                            insertRow.tds.forEach(function (el, index) {\n                                if (el.colIndex == that.trs[elm.rowIndex].tds[elm.colIndex].colIndex) {\n                                    deleteColIndex = index;\n                                }\n                            });\n                            insertRow.tds.splice(deleteColIndex, 1);\n                            insertRow.cols -= 1;\n                            that.trs[elm.rowIndex].tds[elm.colIndex].rowspan += 1;\n                            that.trs[elm.rowIndex].tds[elm.colIndex].height += insertRow.height;\n                        }\n                    });\n                }\n                that.trs.splice(insertRowIndex + 1, 0, insertRow);\n            }\n            this.height += insertRow.height;\n            var x = 0,\n                y = 0;\n            if (insertRowIndex != 0) {\n                x = this.trs[insertRowIndex - 1].x;\n                y = this.trs[insertRowIndex - 1].y;\n            }\n            for (var _j9 = insertRowIndex; _j9 < this.trs.length; _j9++) {\n                this.trs[_j9].x = x;\n                if (_j9 == 0) {\n                    this.trs[_j9].rowIndex = _j9;\n                    this.trs[_j9].y = y;\n                    y += 0;\n                } else {\n                    this.trs[_j9].rowIndex = this.trs[_j9 - 1].rowIndex + 1;\n                    this.trs[_j9].y = y + this.trs[_j9 - 1].height;\n                    y += this.trs[_j9 - 1].height;\n                }\n                for (var k = 0; k < this.trs[_j9].tds.length; k++) {\n                    this.trs[_j9].tds[k].rowIndex = this.trs[_j9].rowIndex;\n                }\n            }\n            this.resetAllTdY();\n            this.rows += 1;\n            that.resetAllCellSpan();\n        }\n        /** \r\n         * 鍒犻櫎涓€琛孿r\n         * 濡傛灉璇ヨ鏈夊拰涓嬩竴琛屽悎骞跺崟鍏冩牸鐨勬儏鍐碉紝瑕佸鐞哱r\n         * 鎷垮埌褰撳墠榧犳爣鎵€鍦ㄧ殑琛屾暟\r\n         * 鐒跺悗鍒犻櫎璇ヨ\r\n         * 锛岃寰楄瀵瑰崟鍏冩牸鐨勫悎骞跺睘鎬ц皟鏁碶r\n         *  \r\n         * 2019.12.14\r\n         * 濡傛灉褰撳墠榧犳爣鍦ㄧ殑cell鏄病鏈夊悎骞跺崟鍏冩牸鐨勶紝鐩存帴鍒犻櫎璇ヨ锛屼笖鍒ゆ柇鍦ㄨ繖琛屼腑鏄惁鏈夊悎骞跺崟鍏冩牸鐨勫瓨鍦紙锛�,鐒跺悗瑕佹敼鍙樿繖琛岀殑鍚堝苟鍗曞厓鏍肩殑灞炴€r\n         * 濡傛灉褰撳墠榧犳爣鍦ㄧ殑cell鏈夊悎骞跺崟鍏冩牸鐨勫瓨鍦紝鍒欑洿鎺ュ垹闄ゅ悎骞跺崟鍏冩牸鐨勮锛孿r\n         * \r\n        */\n\n    }, {\n        key: 'deleteRow',\n        value: function deleteRow(RowIndex, realRowIndex, ColIndex, cellHaveRowspan) {\n            var _this3 = this;\n\n            var that = this;\n            console.log(\"deleteRow\", realRowIndex);\n            // let cellHave=null;//鐢ㄦ潵鍒ゅ埆鏄惁鏈夊悎骞跺崟鍏冩牸\n            // let cellspans=[]; //鐢ㄦ潵璁板綍褰撳墠鍗曞厓鏍兼墍鍦ㄨ锛岄偅浜涘崟鍏冩牸鏈夊悎骞跺崟鍏冩牸锛岃繖涓槸鎸囧悜涓嬬殑锛孿n            //鍒ゆ柇褰撳墠鍗曞厓鏍兼嬁鍒扮殑琛屾暟鏄惁涓€鑷达紝涓€鑷村垯琛ㄦ槑褰撳墠鍗曞厓鏍兼病鏈夊悎骞跺崟鍏冩牸\n            var x = 0,\n                y = 0;\n            var deleteRowIndex = null;\n            //杩欎釜鍒ゆ柇涓嶅涓ヨ皑锛岃繕瑕佸垽鏂綋鍓嶉紶鏍囨墍鍦ㄥ崟鍏冩牸鏄惁鏈夊悜涓嬪悎骞跺崟鍏冩牸   宸蹭慨鏀筡n            if (RowIndex == realRowIndex && !cellHaveRowspan) {\n                //娌℃湁\n                // cellHave=false;\n                var activeRowSpan = [],\n                    unActiveRowSpan = [],\n                    addRow = null;\n                //鎷垮埌瑕佸垹闄ょ殑琛屾暟鍜屾湁鍗曞厓鏍煎悎骞剁殑閭h鐨勫垪鏁癨n                //鎷垮埌褰撳墠鍗曞厓鏍兼墍鍦ㄨ鎵€鏈変富鍔ㄨ鍔ㄥ彈褰卞搷鐨勫悎骞跺崟鍏冩牸\n\n                deleteRowIndex = realRowIndex;\n                this.trs[realRowIndex].haveCellSpan.forEach(function (elm) {\n                    if (elm.isActive) {\n                        activeRowSpan.push(elm);\n                    } else {\n                        unActiveRowSpan.push(elm);\n                    }\n                });\n                //鍒犻櫎涔嬪悗杩涜鐨勬洿鏂板叾浠栭棶棰� 1.鍏堝鐞嗗洜涓鸿琛屽垹闄ゆ敹鍒板奖鍝嶇殑鍗曞厓鏍硷紝鐒跺悗鍐嶅垹闄わ紝鍐嶇劧鍚庡鐞嗗叿浣撳潗鏍囬棶棰榎n                var deleteRow = new _TrLayout2.default();\n                this.copyTr(deleteRow, this.trs[deleteRowIndex]);\n                if (activeRowSpan.length > 0) {\n                    activeRowSpan.forEach(function (elm) {\n                        //涓诲姩鍙楀奖鍝嶇殑锛屽皢鍚堝苟鍗曞厓鏍肩殑涓嬩竴琛屾柊澧炰竴涓崟鍏冩牸锛屽苟涓旂户鎵胯繖涓€鍗曞厓鏍肩殑鍚堝苟鍗曞厓鏍兼暟鍑忎竴,杩樿鏀瑰彉楂樺害,骞朵笖杩樿鏀瑰彉璁板綍\n                        var addCol = new _TdLayout2.default();\n                        that.copyTd(addCol, that.trs[elm.rowIndex].tds[elm.colIndex]);\n                        addCol.height = that.trs[elm.rowIndex].height;\n                        that.trs[elm.rowIndex + 1].tds.splice(elm.colIndex, 0, addCol);\n                        that.trs[elm.rowIndex + 1].cols += 1;\n                        that.trs[elm.rowIndex + 1].haveCellSpan.forEach(function (el) {\n                            if (el.rowIndex == elm.rowIndex && el.colIndex == elm.colIndex) {\n                                el.isActive = true;\n                            }\n                        });\n                        that.trs[elm.rowIndex + 1].tds[elm.colIndex].rowspan = that.trs[elm.rowIndex].tds[elm.colIndex].rowspan - 1;\n                        // this.trs[elm.rowIndex+1].tds[elm.colIndex].hide=false;\n                        if (that.trs[elm.rowIndex].tds[elm.colIndex].rowspan != 2) {\n                            var addHeight = 0;\n                            that.trs[elm.rowIndex + 1].tds[elm.colIndex].rowspan = that.trs[elm.rowIndex].tds[elm.colIndex].rowspan - 1;\n                            var len = that.trs[elm.rowIndex + 1].tds[elm.colIndex].rowspan;\n                            for (var m = elm.rowIndex + 2; m < elm.rowIndex + 1 + len; m++) {\n                                // that.trs[m].tds[elm.colIndex].hide=true;\n                                addHeight += that.trs[m].tds[elm.colIndex].height;\n                                // that.trs[m].tds.splice(elm.colIndex,1)\n                            }\n                            that.trs[elm.rowIndex + 1].tds[elm.colIndex].height += addHeight;\n                        }\n                    });\n                }\n                if (unActiveRowSpan.length > 0) {\n                    unActiveRowSpan.forEach(function (elm) {\n                        //琚姩鍙楀奖鍝嶇殑锛屽皢鍙楀奖鍝嶇殑鍗曞厓鏍肩殑rowspan鍑忎竴锛屽苟涓旈珮搴﹀彉鍖朶n                        that.trs[elm.rowIndex].tds[elm.colIndex].rowspan -= 1;\n                        that.trs[elm.rowIndex].tds[elm.colIndex].height -= deleteRow.height;\n                    });\n                }\n\n                this.trs.splice(deleteRowIndex, 1);\n                this.height -= deleteRow.height;\n                if (deleteRowIndex != 0) {\n                    x = this.trs[deleteRowIndex - 1].x;\n                    y = this.trs[deleteRowIndex - 1].y;\n                }\n                for (var i = deleteRowIndex; i < this.trs.length; i++) {\n                    this.trs[i].x = x;\n                    if (i == 0) {\n                        this.trs[i].rowIndex = i;\n                        this.trs[i].y = y;\n                        y += 0;\n                    } else {\n                        this.trs[i].rowIndex = this.trs[i - 1].rowIndex + 1;\n                        this.trs[i].y = y + this.trs[i - 1].height;\n                        y += this.trs[i - 1].height;\n                    }\n                    for (var k = 0; k < this.trs[i].tds.length; k++) {\n                        this.trs[i].tds[k].rowIndex = this.trs[i].rowIndex;\n                        this.trs[i].tds[k].y = this.trs[i].y;\n                    }\n                }\n                this.rows -= 1;\n            } else {\n                //鏈塡n                var haveRowSpan = null,\n                    _addRow = null;\n                // 褰撳墠榧犳爣鍦ㄧ殑鍗曞厓鏍兼湁鍚堝苟鍗曞厓鏍硷紝鐩存帴鍒犻櫎璇ュ悎骞跺崟鍏冩牸璺ㄧ殑澶氳锛岃妫€鏌ユ渶鍚庝竴琛屾垨鑰呯涓€琛屾槸鍚﹀瓨鍦ㄤ富鍔ㄦ垨琚姩鐨勫悎骞跺崟鍏冩牸锛屽鏋滄湁鐨勮瘽瑕佸鐞嗕竴涓媆n                //鎷垮埌鍒犻櫎鐨勮鐨勬纭鍙峰拰鍗曞厓鏍煎悎骞剁殑姝g‘鍒楀彿\n                for (var _j10 = 0; _j10 < this.trs.length; _j10++) {\n                    if (this.trs[_j10].rowIndex == RowIndex) {\n                        // deleteRowIndex=j;\n                        if (RowIndex == realRowIndex) {\n                            deleteRowIndex = _j10;\n                        }\n                        for (var m = 0; m < this.trs[_j10].tds.length; m++) {\n                            if (this.trs[_j10].tds[m].colIndex == ColIndex) {\n                                haveRowSpan = m;\n                                break;\n                            }\n                        }\n                    } else if (this.trs[_j10].rowIndex == realRowIndex) {\n                        deleteRowIndex = _j10;\n                    }\n                }\n                //鐪嬬湅鍒犻櫎鐨勬渶鍚庝竴琛屾槸鍚︽湁鍚堝苟鍗曞厓鏍糪n                if (this.trs[RowIndex + this.trs[RowIndex].tds[haveRowSpan].rowspan - 1].haveCellSpan.length > 0) {\n                    var lastTr = this.trs[RowIndex + this.trs[RowIndex].tds[haveRowSpan].rowspan - 1];\n                    lastTr.haveCellSpan.forEach(function (elm) {\n                        var elmRowIndex = elm.rowIndex,\n                            elmColIndex = elm.colIndex;\n                        var delRow = RowIndex + that.trs[RowIndex].tds[haveRowSpan].rowspan;\n                        // && (elm.rowIndex!==RowIndex &&elm.colIndex !==ColIndex)\n                        if (elm.rowIndex + elm.rowspan > delRow) {\n                            //鏈夊悎骞跺崟鍏冩牸锛屽苟涓旇秴鍑轰簡鍒犻櫎鐨勮寖鍥�,缁欏垹闄ょ殑鏈€鍚庝竴琛岀殑涓嬩竴琛屽姞涓婃柊鐨勫崟鍏冩牸锛屽苟涓旂户鎵縭owspan\n                            if (elm.rowIndex >= RowIndex) {\n                                //鏈€鍚庝竴琛屾湁鍦ㄥ垹闄よ鍚堝苟鍗曞厓鏍艰捣濮嬭涔嬪悗鐨勮锛岋紙鏈夌偣缁曪級\n                                var addTd = new _TdLayout2.default();\n                                that.copyTd(addTd, that.trs[elm.rowIndex].tds[elm.colIndex]);\n\n                                addTd.rowspan = RowIndex !== elm.rowIndex ? elm.rowspan - (RowIndex + that.trs[RowIndex].tds[haveRowSpan].rowspan - 1) : elm.rowspan - that.trs[RowIndex].tds[haveRowSpan].rowspan;\n                                var h = addTd.rowspan * (that.trs[elm.rowIndex].tds[elm.colIndex].height / that.trs[elm.rowIndex].tds[elm.colIndex].rowspan);\n\n                                addTd.height = h;\n                                var insertPosition = null;\n                                if (RowIndex == elm.rowIndex) {\n                                    insertPosition = elm.colIndex;\n                                    that.trs[RowIndex + that.trs[RowIndex].tds[haveRowSpan].rowspan].tds.splice(insertPosition, 0, addTd);\n                                    that.trs[RowIndex + that.trs[RowIndex].tds[haveRowSpan].rowspan].cols += 1;\n                                } else {\n                                    for (var c = 0; c < that.trs[RowIndex + that.trs[RowIndex].tds[haveRowSpan].rowspan].tds.length; c++) {\n                                        console.log(that.trs[RowIndex + that.trs[RowIndex].tds[haveRowSpan].rowspan].tds[c].colIndex);\n                                        if (that.trs[RowIndex + that.trs[RowIndex].tds[haveRowSpan].rowspan].tds[c].colIndex == elm.colIndex) {\n                                            insertPosition = c;\n                                            break;\n                                        }\n                                    }\n                                    if (insertPosition == null) {\n                                        insertPosition = 0;\n                                    }\n                                    that.trs[RowIndex + that.trs[RowIndex].tds[haveRowSpan].rowspan].tds.splice(insertPosition + 1, 0, addTd);\n                                    that.trs[RowIndex + that.trs[RowIndex].tds[haveRowSpan].rowspan].cols += 1;\n                                }\n                            } else {\n                                //琛ュ厖褰撶涓€鍒椾腑闂翠袱琛屾湁鍚堝苟锛岀涓夊垪鏈夊洓琛屽悎骞讹紝鐒跺悗鍐嶇涓€鍒楀垹闄や腑闂翠袱琛岀殑鎯呭喌锛屾鏃跺彧闇€瑕佹敼鍙樺綋鍓峞lm鐨勯珮搴﹀拰rowspan,杩樿鏀瑰彉鍥犱负杩欎釜褰卞搷鐨勫叾浠杊aveCellSpan鐨勫€糪n                                var _delH = null;\n                                for (var n = RowIndex; n < that.trs[RowIndex].tds[haveRowSpan].rowspan + 1; n++) {\n                                    _delH += that.trs[n].height;\n                                }\n                                that.trs[elm.rowIndex].tds[elm.colIndex].height -= _delH;\n                                that.trs[elm.rowIndex].tds[elm.colIndex].rowspan -= that.trs[RowIndex].tds[haveRowSpan].rowspan;\n                                for (var a = 0; a < _this3.trs.length; a++) {\n                                    that.trs[a].haveCellSpan.forEach(function (el) {\n                                        if (el.rowIndex == elm.rowIndex && el.colIndex == elm.colIndex) {\n                                            el.rowspan -= that.trs[RowIndex].tds[haveRowSpan].rowspan;\n                                        }\n                                    });\n                                }\n                            }\n                        }\n                    });\n                }\n                //鐪嬬湅绗竴琛屾槸鍚︽湁鍙楀奖鍝嶇殑\n                //杩樻病鍐橽n                // for(let a=0;a<this.trs[RowIndex+this.trs[RowIndex].tds[haveRowSpan].rowspan-1].length;a++){\n\n                // }\n                //鍒犻櫎涔嬪悗瑕佹洿鏂板悗闈㈢殑鍧愭爣鍜岀浉鍏崇殑楂樺害涔嬬被鐨刓n                var delH = null;\n                for (var n = RowIndex; n < this.trs[RowIndex].tds[haveRowSpan].rowspan + 1; n++) {\n                    delH += this.trs[n].height;\n                }\n                this.trs.splice(RowIndex, this.trs[RowIndex].tds[haveRowSpan].rowspan);\n                this.height -= delH;\n                if (RowIndex != 0) {\n                    x = this.trs[RowIndex - 1].x;\n                    y = this.trs[RowIndex - 1].y;\n                }\n                for (var _i = RowIndex; _i < this.trs.length; _i++) {\n                    this.trs[_i].x = x;\n                    if (_i == 0) {\n                        this.trs[_i].rowIndex = _i;\n                        this.trs[_i].y = y;\n                        y += 0;\n                    } else {\n                        this.trs[_i].rowIndex = this.trs[_i - 1].rowIndex + 1;\n                        this.trs[_i].y = y + this.trs[_i - 1].height;\n                        y += this.trs[_i - 1].height;\n                    }\n                    for (var _k = 0; _k < this.trs[_i].tds.length; _k++) {\n                        this.trs[_i].tds[_k].rowIndex = this.trs[_i].rowIndex;\n                        this.trs[_i].tds[_k].y = this.trs[_i].y;\n                    }\n                }\n                this.rows -= 1;\n            }\n            that.resetAllCellSpan();\n        }\n        /** \r\n         * 鏂板涓€鍒梊r\n         * 1.鎷垮埌榧犳爣鎵€鍦ㄨ繖涓€鍒楃殑鎵€鏈夊垪\r\n         * 2.灏嗚繖浜涘垪鎸夋搴忔彃鍏ュ埌姣忎竴涓猼r涓紝璁板緱娣诲姞涔嬪悗瑕佹洿鏂颁箣鍚庣殑td鐨勫潗鏍嘰r\n         * 3.鐒跺悗table鐨刢ol鍔犱竴涓紝tr鐨刢ol鍔犱竴涓猏r\n         * \r\n         *  1锛夊鏋滃綋鍓嶅崟鍏冩牸鏈夊悜鍙冲悎骞跺崟鍏冩牸锛岋紙涓嶇鎵€鍦ㄥ垪鏄惁鏈夊悜涓嬬殑鍚堝苟锛夐偅灏辩洿鎺ュ鍒跺綋鍓嶅悜鍙冲悎骞跺崟鍏冩牸鑼冨洿鍐呯殑鏈€鍚庝竴鍒楋紝鐒跺悗澧炲姞锛屼笉缁ф壙鍚戝彸鐨勫悎骞讹紝浣嗕細缁ф壙鍚戜笅鐨勫悎骞禱r\n            2锛夊鏋滃綋鍓嶅崟鍏冩牸鏈夊悜涓嬪悎骞跺崟鍏冩牸锛屼笖褰撳墠鍗曞厓鏍兼墍鍦ㄥ垪鏈夊悜鍙冲悎骞跺崟鍏冩牸锛岃嫢褰撳墠鍒椾笉鏄寖鍥村唴鏈€鍚庝竴鍒楋紝鍒欐柊澧炵殑鍒楄缁ф壙鍚戝彸鍜屽悜涓媆r\n                                                                    鑻ュ綋鍓嶅垪鏄寖鍥村唴鏈€鍚庝竴鍒楋紝鍒欐柊寤虹殑鍒椾笉缁ф壙鍚戝彸锛屽彧缁ф壙鍚戜笅\r\n            3锛夊鏋滃綋鍓嶅崟鍏冩牸娌℃湁鍚戝彸鍚堝苟鍗曞厓鏍硷紝浣嗘槸褰撳墠鍗曞厓鏍兼墍鍦ㄥ垪鏈夊悜鍙冲悎骞跺崟鍏冩牸锛屼笖褰撳墠鍗曞厓鏍兼墍鍦ㄥ垪涓嶆槸鍚戝彸鍚堝苟鍗曞厓鏍肩殑鏈€鍚庝竴鍒楋紝閭h缁ф壙褰撳墠鍒楋紝涓旂户鎵垮悜鍙冲拰鍚戜笅鐨勫悎骞禱r\n          */\n\n    }, {\n        key: 'insertCol',\n        value: function insertCol(RowIndex, ColIndex) {\n            var _this4 = this;\n\n            var that = this,\n                insertColIndex = null,\n                addWidth = null,\n                haveBottomRowspan = false,\n                bottomRowspan = 0;\n            console.log(\"insertCol\", ColIndex);\n\n            if (this.trs[RowIndex].tds[ColIndex].colspan != 1) {\n                var _loop = function _loop(i) {\n                    var insertIndex = null;\n                    var have = false;\n                    var addCell = new _TdLayout2.default();\n                    if (i == RowIndex) {\n                        addCell.width = _this4.trs[RowIndex].tds[ColIndex].width / _this4.trs[RowIndex].tds[ColIndex].colspan;\n                        addCell.height = _this4.trs[RowIndex].tds[ColIndex].width / _this4.trs[RowIndex].tds[ColIndex].height;\n\n                        addWidth = addCell.width;\n                        addCell.colIndex = _this4.trs[RowIndex].tds[ColIndex].colIndex + _this4.trs[RowIndex].tds[ColIndex].colspan;\n                        insertIndex = ColIndex;\n                        insertColIndex = ColIndex;\n\n                        that.trs[i].tds.splice(insertIndex + 1, 0, addCell);\n                        _this4.trs[i].cols += 1;\n                    } else {\n                        //澶嶅埗鏈€鍚庝竴鍒楃殑锛屼絾鏄鍒ゆ柇鏈€鍚庝竴鍒楃殑鍗曞厓鏍兼槸鍚︽湁瓒呭嚭鑼冨洿鐨勫悎骞跺崟鍏冩牸鐨勶紝鏈夌殑璇濊缁ф壙銆俓n                        var colIndex = _this4.trs[RowIndex].tds[ColIndex].colIndex + _this4.trs[RowIndex].tds[ColIndex].colspan - 1;\n\n                        if (that.trs[i].haveCellRightSpan.length > 0) {\n                            that.trs[i].haveCellRightSpan.forEach(function (elm) {\n                                if (elm.colIndex + elm.colspan > that.trs[RowIndex].tds[ColIndex].colspan + ColIndex && elm.colIndex <= colIndex) {\n                                    //濡傛灉褰撳墠琛屽湪褰撳墠鍗曞厓鏍肩殑鎯呭喌涓嬫湁瓒呭嚭鑼冨洿鐨勫悜鍙冲崟鍏冩牸锛岄偅瑕佺户鎵垮悜鍙崇殑鍗曞厓鏍硷紝鎵€浠ヤ笉闇€瑕乤ddCell\n                                    addCell = null;\n                                    that.trs[i].tds[elm.colIndex].colspan += 1;\n                                    that.trs[i].tds[elm.colIndex].width += that.trs[i].tds[elm.colIndex].width / that.trs[i].tds[elm.colIndex].colspan;\n                                    have = true;\n                                }\n                            });\n                        }\n                        if (!have) {\n                            //褰撳墠琛岀殑鎸囧畾鍗曞厓鏍硷紝娌℃湁瓒呭嚭鑼冨洿鐨勫悜鍙冲悎骞跺崟鍏冩牸\n                            for (var _j11 = 0; _j11 < that.trs[i].tds.length; _j11++) {\n                                if (that.trs[i].tds[_j11].colIndex == colIndex) {\n                                    insertIndex = _j11; //鎷垮埌鏈€鍚庝竴鍒楃殑涓嬫爣\n                                }\n                            }\n                            if (insertIndex) {\n                                addCell.width = that.trs[i].tds[insertIndex].width;\n                                addCell.height = that.trs[i].tds[insertIndex].height;\n                                addWidth = addCell.width;\n                                addCell.rowspan = that.trs[i].tds[insertIndex].rowspan;\n                                //鍥犱负鍦ㄤ笅闈㈢粺涓€瀵筩olindex杩涜涓嶆槸寰堟柟渚匡紝鍥犱负瑕佽褰曡鍙峰拰鍒楀彿锛孿n                                if (that.trs[i].tds[insertIndex].rowspan != 1) {\n                                    that.trs[i].haveCellSpan.push({ \"rowIndex\": i, \"colIndex\": insertIndex + 1, \"rowspan\": that.trs[i].tds[insertIndex].rowspan, \"isActive\": true });\n                                    for (var b = 0; b < that.trs[i].tds[insertIndex].rowspan - 1; b++) {\n                                        that.trs[i].haveCellSpan.push({ \"rowIndex\": i, \"colIndex\": insertIndex + 1, \"rowspan\": that.trs[i].tds[insertIndex].rowspan, \"isActive\": false });\n                                    }\n                                }\n                                that.trs[i].tds.splice(insertIndex, 0, addCell);\n                                _this4.trs[i].cols += 1;\n                            }\n                        }\n\n                        // addCell.width=this.trs[i].tds[insertIndex].width;\n                    }\n                    if (have) {\n                        return 'break';\n                    }\n                };\n\n                //褰撳墠鍗曞厓鏍兼槸鍚戝彸鍚堝苟鐨勫崟鍏冩牸锛岀洿鎺ュ鍒舵渶鍚庝竴鍒楃殑锛屽鍔犲埌鍚庨潰\n\n                for (var i = 0; i < this.trs.length; i++) {\n                    var _ret = _loop(i);\n\n                    if (_ret === 'break') break;\n                }\n            } else if (this.trs[RowIndex].tds[ColIndex].rowspan != 1) {\n                var colIndex = this.trs[RowIndex].tds[ColIndex].colIndex;\n                //褰撳墠鍗曞厓鏍间笉鏄悜鍙冲悎骞剁殑鍗曞厓鏍硷紝鏄悜涓嬪悎骞剁殑鍗曞厓鏍�,\n                //鍒ゆ柇褰撳墠鍗曞厓鏍兼墍鍦ㄥ垪鏄惁鏈夊悎骞跺崟鍏冩牸鐨勫瓨鍦╘n                var _have = false,\n                    row = [];\n                for (var s = 0; s < this.trs.length; s++) {\n                    // for(let t=0;t<this.trs[s].tds.length;t++){\n                    //     if(this.trs[s].tds[t].colIndex==colIndex && )\n                    // }\n                    if (this.trs[s].tds[ColIndex].colIndex !== colIndex) {\n                        _have = true;\n                        row.push(s);\n                    }\n                }\n                if (_have) {\n                    //褰撳墠鍚戜笅鍚堝苟鐨勫崟鍏冩牸鎵€鍦ㄥ垪鏈夊悜鍙冲悎骞跺崟鍏冩牸\n\n                }\n            }\n            // let addWidth=0;\n            // let insertColIndex = null;\n            // for(let m=0;m<this.trs.length;m++){\n            //     for(let n=0;n<this.trs[m].tds.length;n++){\n            //         if(this.trs[m].tds[n].colIndex == ColIndex){\n            //             insertColIndex=n;\n            //             break;\n            //         }\n            //     }\n            // }\n\n            // for(let k=0;k<this.trs.length;k++){\n            //     let cloneCol = new TdLayout();\n            //     this.copyTd(cloneCol,this.trs[k].tds[insertColIndex])\n            //     if(this.trs[k].tds[insertColIndex].colspan!=1){\n            //         cloneCol.width=this.trs[k].tds[insertColIndex].width/this.trs[k].tds[insertColIndex].colspan\n            //     }\n            //     addWidth=cloneCol.width;\n            //     this.trs[k].width += cloneCol.width\n            //     this.trs[k].tds.splice(insertColIndex,0,cloneCol)\n            //     this.trs[k].cols+=1;\n            // }\n            this.width += addWidth;\n            for (var i = 0; i < this.trs.length; i++) {\n                var x = 0,\n                    y = 0;\n                for (var _j12 = insertColIndex; _j12 < this.trs[i].tds.length; _j12++) {\n                    this.trs[i].tds[_j12].rowIndex = this.trs[i].rowIndex;\n                    if (_j12 != 0) {\n                        x = this.trs[i].tds[_j12 - 1].x;\n                        y = this.trs[i].tds[_j12 - 1].y;\n                    }\n                    this.trs[i].tds[_j12].y = y;\n                    if (_j12 == 0) {\n                        // this.trs[i].tds[j].colIndex = j;\n                        this.trs[i].tds[_j12].x = x;\n                    } else {\n                        //杩欓噷閲嶇疆colindex瑕佽€冭檻涓婁竴琛屾湁鍚戜笅鍚堝苟鍗曞厓鏍肩殑鎯呭喌,鏈€濂藉啓涓€涓噸缃畑y鍧愭爣鍜宺owindex鍜宑olindex鐨勬柟娉昞n\n                        // this.trs[i].tds[j].colIndex = this.trs[i].tds[j-1].colIndex+1;\n                        this.trs[i].tds[_j12].x = x + this.trs[i].tds[_j12 - 1].width;\n                    }\n                }\n            }\n            //鍗曠嫭瀵筩olindex杩涜澶勭悊,杩欎釜灏卞緱淇濊瘉姣忚瀛樺偍鐨刪avecellspan鏃舵纭殑\n            //姝e父鎯呭喌涓嬶紝colindex鐨勫€煎簲璇ユ槸鏁扮粍涓嬫爣鍊硷紝浣嗘槸濡傛灉鏀硅鏈夎鍔ㄥ彈褰卞搷鐨勫崟鍏冩牸鏃讹紝褰撲笅鏍囩瓑浜庤琚姩鍙楀奖鍝嶇殑鍗曞厓鏍肩殑涓嬭〃锛屽簲璇ヨ繘琛岃烦璺僜n            for (var k = 0; k < this.trs.length; k++) {\n                var num = 0;\n                for (var t = 0; t < this.trs[k]; t++) {\n                    if (this.trs[k].haveCellSpan.length > 0) {\n                        var _have2 = false;\n                        this.trs[k].haveCellSpan.forEach(function (elm) {\n                            if (j == elm.colIndex && !elm.isActive) {\n                                num += 1;\n                                _have2 = true;\n                            }\n                        });\n                        if (!_have2) {\n                            num += 1;\n                        }\n                    } else {\n                        num++;\n                    }\n                }\n            }\n            this.cols += 1;\n        }\n        /** \r\n         * 鍒犻櫎涓€鍒梊r\n         * 1.鍒犻櫎鎵€鏈夎鐨勬寚瀹氬垪\r\n         * 2.鍒犻櫎涔嬪悗瀵箃able鐨剋idth鍜宼r鐨剋idth瑕佹敼鍔紝杩樿鏀瑰姩涔嬪悗鐨則d鐨剎鍊糪r\n         * ps 2019.12.2,鍒犻櫎鐨勬椂鍊欏鏋滄湁鍚堝苟鍗曞厓鏍硷紝搴旇鍏堝仛鎷嗗垎鍐嶅垹闄よ繖鏍锋洿鍚堥€俓r\n        */\n\n    }, {\n        key: 'deleteCol',\n        value: function deleteCol(ColIndex) {\n            console.log(\"deleteCol\", ColIndex);\n\n            var deleteColIndex = null;\n            for (var m = 0; m < this.trs.length; m++) {\n                for (var n = 0; n < this.trs[m].tds.length; n++) {\n                    if (this.trs[m].tds[n].colIndex == ColIndex) {\n                        deleteColIndex = n;\n                        break;\n                    }\n                }\n            }\n            var delWidth = 0;\n            var that = this;\n            this.trs.forEach(function (elm) {\n                var arr = elm.tds.map(function (o) {\n                    return _extends({}, o);\n                });\n                for (var r = 0; r < arr.length; r++) {\n                    if (arr[r].colspan != 1) {\n                        var addTd = new _TdLayout2.default();\n                        arr[r].width = arr[r].width / arr[r].colspan;\n                        arr[r].colspan = 1;\n                        elm.tds[r].width = elm.tds[r].width / elm.tds[r].colspan;\n                        elm.tds[r].colspan = 1;\n                        that.copyTd(addTd, arr[r]);\n                        elm.tds.splice(r, 0, addTd);\n                    }\n                }\n                delWidth = elm.tds[deleteColIndex].width;\n                elm.width -= elm.tds[deleteColIndex].width;\n                elm.tds.splice(deleteColIndex, 1);\n                elm.cols -= 1;\n            });\n            this.width -= delWidth;\n            for (var i = 0; i < this.trs.length; i++) {\n                var x = 0,\n                    y = 0;\n                for (var _j13 = deleteColIndex; _j13 < this.trs[i].tds.length; _j13++) {\n                    this.trs[i].tds[_j13].rowIndex = this.trs[i].rowIndex;\n                    if (_j13 != 0) {\n                        x = this.trs[_j13 - 1].x;\n                        y = this.trs[_j13 - 1].y;\n                    }\n                    this.trs[i].tds[_j13].y = y;\n                    if (_j13 == 0) {\n                        this.trs[i].tds[_j13].colIndex = _j13;\n                        this.trs[i].tds[_j13].x = x;\n                    } else {\n                        this.trs[i].tds[_j13].colIndex = this.trs[i].tds[_j13 - 1].colIndex + 1;\n                        this.trs[i].tds[_j13].x = x + this.trs[i].tds[_j13 - 1].width;\n                    }\n                }\n            }\n            this.cols -= 1;\n        }\n        /** \r\n         * ps 涓嶈兘鐢ㄤ笅鏍囨潵鎿嶄綔鏁扮粍锛岀敤鏁扮粍鍐呯殑灞炴€ф潵鎿嶄綔\r\n         * 璁板緱瀵规暟缁勫唴鐨勫睘鎬ц繘琛屼慨鏀筡r\n         * \r\n         * 鍚戝彸鍚堝苟鍗曞厓鏍糪r\n         * 1.鎷垮埌褰撳墠鐨勫崟鍏冩牸锛屽拰鍙宠竟鐨勭涓€涓崟鍏冩牸锛堝鏋滄湁鐨勮瘽锛塡r\n         * 2.缁欏綋鍓嶇殑鍗曞厓鏍艰缃甤olspan\r\n         * 3.涔嬪悗鐨刢ols搴旇涔熻鏇存敼\r\n         * 4.鐒跺悗鍒犻櫎鍙宠竟鐨勫崟鍏冩牸\r\n         * 鍚戜笅鍚堝苟鍗曞厓鏍糪r\n         * 1.鎷垮埌褰撳墠鐨勫崟鍏冩牸锛屽垽鏂綋鍓嶇偣涓嬬殑鍗曞厓鏍间笅闈㈡槸鍚﹁繕鏈夊崟鍏冩牸锛屾湁鐨勮瘽鎷垮埌涓嬩竴涓崟鍏冩牸杩涜鍚堝苟鎿嶄綔锛孿r\n         * 娌℃湁鐨勮瘽缁х画寰€涓嬩竴琛屾壘锛岀洿鍒版壘鍒颁负姝� 锛屾壘鍒版渶鍚庝竴琛岄兘娌℃湁鐨勮瘽锛岃寰楀脊绐楁彁绀篭r\n         * \r\n         * \r\n         * 2.缁欏綋鍓嶇殑鍗曞厓鏍艰缃畆owspan\r\n         * 3.鐒跺悗涓嬩竴琛岀殑cols-1\r\n         * 4.鍒犻櫎涓嬩竴琛岀殑鍗曞厓鏍糪r\n        */\n\n    }, {\n        key: 'mergeCells',\n        value: function mergeCells(direction, RowIndex, ColIndex) {\n            console.log(\"cells\", RowIndex, ColIndex);\n            var row = null,\n                col = null,\n                nextRow = null,\n                nextCol = null;\n            //鎷垮埌榧犳爣鎵€鍦ㄥ崟鍏冩牸鐨則d鐨勮鍙峰拰鍒楀彿\n            for (var m = 0; m < this.trs.length; m++) {\n                if (this.trs[m].rowIndex == RowIndex) {\n                    row = m;\n                    for (var n = 0; n < this.trs[m].tds.length; n++) {\n                        if (this.trs[m].tds[n].colIndex == ColIndex) {\n                            col = n;\n                            break;\n                        }\n                    }\n                }\n            }\n            // 鍚戜笅鍚堝苟鍗曞厓鏍硷紝//(鍚庨潰鐨勬病鍋�)鍏堝垽鏂笅闈㈣繖涓崟鍏冩牸鏄惁宸茬粡鍚堝苟锛屽鏋滃凡缁忓悎骞跺氨寰€涓嬪啀璧颁竴涓崟鍏冩牸锛屽鏋滄病鏈夊悎骞讹紝灏辨嬁涓嬮潰杩欎釜鍗曞厓鏍肩殑col\n            if (direction == \"bottom\") {\n                // for(let r=1;r<this.trs.length-row;r++){\n                //     if(this.trs[col+r].tds[r].rowspan !== 0){\n                //         nextCol=r;\n                //     }\n                // }\n                for (var r = row + 1; r < this.trs.length; r++) {\n                    var _have3 = false;\n                    for (var s = 0; s < this.trs[r].tds.length; s++) {\n                        if (this.trs[r].tds[s].colIndex == ColIndex) {\n                            _have3 = true;\n                            nextRow = r;\n                            nextCol = s;\n                            break;\n                        }\n                    }\n                    if (_have3) {\n                        break;\n                    }\n                }\n            }\n            //濂藉儚杩欐鍙互涓嶈锛岀洿鎺ユ嬁褰撳墠鍗曞厓鏍肩殑rowspan锛岀湅鐪嬪悎骞朵簡鍑犱釜鍗曞厓鏍硷紝缁х画寰€涓嬮潰鍦ㄥ悎骞朵竴涓氨鍙互锛屽鏋滀笅闈㈣繕鏈夊崟鍏冩牸鐨勮瘽,浣嗘槸鍚庨潰鎯虫兂锛屽簲璇ヨ锛岃鎷垮埌杩欎釜鍗曞厓鏍煎湪涓嬩竴琛岀殑鍒楀彿\n\n            // 杩欓噷鍒ゆ柇鏄惁鏈夊乏杈圭殑td鎴栬€呬笅杈圭殑td杩樿鍐嶇湅鐪嬶紝鎬庝箞澶勭悊濂絓n\n            if (this.trs[row].tds[col + 1] && direction == \"right\") {\n                this.trs[row].tds[col].width += this.trs[row].tds[col + 1].width;\n                this.trs[row].tds[col].colspan += 1;\n                this.trs[row].tds.splice(col + 1, 1);\n                this.resetAllCellRightSpan();\n            } else if (direction == \"bottom\") {\n                if (this.trs[nextRow].tds[nextCol].rowspan == 1) {\n                    this.trs[row].tds[col].height += this.trs[nextRow].tds[nextCol].height;\n\n                    this.trs[nextRow].cols -= 1;\n                    this.trs[nextRow].tds.splice(nextCol, 1);\n\n                    if (this.trs[row].haveCellSpan.length > 0) {\n                        var _have4 = false;\n                        for (var a = 0; a < this.trs[row].haveCellSpan.length; a++) {\n                            if (this.trs[row].haveCellSpan[a].colIndex == col && this.trs[row].haveCellSpan[a].rowIndex == row) {\n                                // this.trs[row].haveCellSpan[a].rowspan+=1;\n                                _have4 = true;\n                                break;\n                            }\n                        }\n                        if (!_have4) {\n                            this.trs[row].haveCellSpan.push({ \"rowIndex\": row, \"colIndex\": col, \"rowspan\": this.trs[row].tds[col].rowspan, \"isActive\": true });\n                        }\n                    } else {\n                        this.trs[row].haveCellSpan.push({ \"rowIndex\": row, \"colIndex\": col, \"rowspan\": this.trs[row].tds[col].rowspan, \"isActive\": true });\n                    }\n                    this.trs[nextRow].haveCellSpan.push({ \"rowIndex\": row, \"colIndex\": col, \"rowspan\": this.trs[row].tds[col].rowspan, \"isActive\": false });\n\n                    this.trs[row].tds[col].rowspan += 1;\n                    this.resetCellSpan(row, col);\n                } else {\n                    //涓嬩竴涓崟鍏冩牸鏃跺悎骞跺崟鍏冩牸锛岀劧鍚庡簲璇ユ妸涓嬩竴涓崟鍏冩牸鐨勮繖涓崟鍏冩牸缁欒繖涓崟鍏冩牸锛岀劧鍚庢敼鍙樿褰曞悎骞跺崟鍏冩牸鍙橀噺\n                    this.trs[row].tds[col].height = this.trs[nextRow].tds[nextCol].height;\n                    this.trs[row].tds[col].rowspan = this.trs[nextRow].tds[nextCol].rowspan + 1;\n                    this.trs[nextRow].tds.splice(nextCol, 1);\n                    this.resetAllCellSpan();\n                }\n\n                //鍚堝苟鍗曞厓鏍间箣鍚庤鍦ㄨ鍗曞厓鏍兼墍鍦ㄨ鐣欎笅璁板綍\n                //isactive琛ㄧず浠栨槸琚姩鍙楀奖鍝嶈繕鏄富鍔� 琚姩鐨勮瘽锛宺owindex瀛樼殑灏辨槸鍥犱负鍝鑰岃鍙楀奖鍝嶏紝涓诲姩鐨勮瘽锛屽瓨鐨勫氨鏄嚜宸辩殑鍊糪n\n            }\n        }\n    }]);\n\n    return TableLayout;\n}(_layout3.default);\n\nexports.default = TableLayout;\n//绗竴鍒楃涓€琛岀殑鍚戜笅鍚堝苟涓変釜锛岀涓夊垪浠庣浜岃鍚戜笅鍚堝苟鍥涗釜锛岀劧鍚庡垹闄ゅ墠涓夎锛屽悗闈袱琛岀殑鍚堝苟鏄剧ず鏈夐棶棰�//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2Zvcm0vTGF5b3V0L1RhYmxlTGF5b3V0LmpzP2M0NDMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxheW91dCBmcm9tICcuL2xheW91dCc7XHJcbmltcG9ydCBUckxheW91dCBmcm9tICcuL1RyTGF5b3V0JztcclxuaW1wb3J0IFRkTGF5b3V0IGZyb20gJy4vVGRMYXlvdXQnO1xyXG5cclxuaW1wb3J0IHtTZXF1ZW5jZX0gZnJvbSAnLi4vLi4vdXRpbGl0eSc7XHJcbmNsYXNzIFRhYmxlTGF5b3V0IGV4dGVuZHMgbGF5b3V0e1xyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMudHlwZT1cInRhYmxlXCI7XHJcbiAgICAgICAgdGhpcy50ZXh0PVwidGFibGVsYXlvdXRcIjtcclxuICAgICAgICB0aGlzLmN1cnNvcj1cImRlZmF1bHRcIjtcclxuICAgICAgICB0aGlzLmVsZW1lbnQ9W107XHJcbiAgICAgICAgdGhpcy5pZD1TZXF1ZW5jZS5jcmVhdGVVdWlkKCk7XHJcbiAgICAgICAgdGhpcy5jb2xzPTU7XHJcbiAgICAgICAgdGhpcy5yb3dzPTU7XHJcbiAgICAgICAgdGhpcy50cnM9W107XHJcbiAgICAgICAgdGhpcy5zY29wZT0ndGFibGVsYXlvdXQnO1xyXG4gICAgICAgIHRoaXMudGFibGVDbGFzcz1cInRhYmxlbGF5b3V0XCI7XHJcbiAgICB9XHJcbiAgICBpbml0KCl7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLnJvd3M7aSsrKXtcclxuICAgICAgICAgICAgbGV0IHRyPW5ldyBUckxheW91dCgpO1xyXG4gICAgICAgICAgICB0ci5jb2xzPXRoaXMuY29scztcclxuICAgICAgICAgICAgdHIud2lkdGg9dGhpcy53aWR0aDtcclxuICAgICAgICAgICAgdHIuaGVpZ2h0PXRoaXMuaGVpZ2h0L3RoaXMucm93cztcclxuICAgICAgICAgICAgdHIueD10aGlzLng7XHJcbiAgICAgICAgICAgIHRyLnk9dGhpcy55Kyh0aGlzLmhlaWdodC90aGlzLnJvd3MpKmk7XHJcbiAgICAgICAgICAgIHRyLmluaXQoKTtcclxuICAgICAgICAgICAgdGhpcy50cnMucHVzaCh0cik7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHRvSHRtbCgpe1xyXG4gICAgICAgIGxldCBsZW5ndGg9dGhpcy5lbGVtZW50Lmxlbmd0aDtcclxuICAgICAgICBsZXQgaD1cIlwiO1xyXG4gICAgICAgIGg9YDx0YWJsZSBjbGFzcz0ndGFibGVsYXlvdXQtYmFzZScgc3R5bGU9J2ArXHJcbiAgICAgICAgICAgIGBsZWZ0OmArXHJcbiAgICAgICAgICAgIHRoaXMubGVmdCtcclxuICAgICAgICAgICAgYHB4O2ArXHJcbiAgICAgICAgICAgIGB0b3A6YCtcclxuICAgICAgICAgICAgdGhpcy50b3ArXHJcbiAgICAgICAgICAgIGBweDtgK1xyXG4gICAgICAgIGAnYCsgXHJcbiAgICAgICAgYD5gK1xyXG4gICAgICAgIGA8dGJvZHkgYCtcclxuICAgICAgICBgPmA7XHJcbiAgICAgICAgXHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLnJvd3M7aSsrKXtcclxuICAgICAgICAgICAgaCs9YDx0cj5gO1xyXG4gICAgICAgICAgICBmb3IobGV0IGo9MDtqPHRoaXMuY29scztqKyspe1xyXG4gICAgICAgICAgICAgICAgaCs9YDx0ZCBjbGFzcz0ndGFibGVsYXlvdXQtdGQnPmBcclxuICAgICAgICAgICAgICAgIGxldCBrPWkqMytqO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFtrXS5jaGlsZHJlbnMgJiYgdGhpcy5lbGVtZW50W2tdLmNoaWxkcmVucy5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxlbj10aGlzLmVsZW1lbnRba10uY2hpbGRyZW5zLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGE9MDthPGxlbjthKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2NvcGU9dGhpcy5lbGVtZW50W2tdLmNoaWxkcmVuc1thXS5zY29wZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHNjb3BlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJpbnB1dFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggKz0gdGhpcy5lbGVtZW50W2tdLmNoaWxkcmVuc1thXS50b0h0bWwoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBoKz1gPC90ZD5gXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaCs9YDwvdHI+YDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGggKz0gYDwvdGJvZHk+PC90YWJsZT5gO1xyXG4gICAgICAgIHJldHVybiBoO1xyXG5cclxuICAgIH1cclxuICAgIHBhcnNlSHRtbChodG1sKXtcclxuICAgICAgICBsZXQgdGhhdD10aGlzO1xyXG4gICAgICAgIGxldCB5PXRoYXQueTtcclxuICAgICAgICBsZXQgeD0gdGhhdC54O1xyXG4gICAgICAgIGxldCByb290PSQoaHRtbClbMF07XHJcbiAgICAgICAgbGV0IGo9MDtcclxuICAgICAgICBsZXQgcm93SW5kZXg9MDtcclxuICAgICAgICBjb25zdCB0cmF2ZXJzYWxOb2RlID0gKGh0bWxOb2RlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHt0YWdOYW1lfT1odG1sTm9kZTtcclxuICAgICAgICAgICAgc3dpdGNoKHRhZ05hbWUpe1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnVEJPRFknOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCByb290Mj1odG1sTm9kZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmF2ZXJzYWxOb2RlMiA9IChodG1sTm9kZTIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qge3RhZ05hbWV9PWh0bWxOb2RlMjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHRhZ05hbWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnVFInOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ckxheW91dCA9IG5ldyBUckxheW91dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyTGF5b3V0LmlXaGljaD1qO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyTGF5b3V0LndpZHRoPXBhcnNlSW50KGh0bWxOb2RlMi5nZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyTGF5b3V0LmhlaWdodD1wYXJzZUludChodG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ckxheW91dC55PXk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJMYXlvdXQueD14O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyTGF5b3V0LnJvd0luZGV4PXJvd0luZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGV4Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSs9dHJMYXlvdXQuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyTGF5b3V0LnBhcnNlSHRtbChodG1sTm9kZTIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQudHJzLnB1c2godHJMYXlvdXQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIm5vMlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYocm9vdDIuaGFzQ2hpbGROb2RlcygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm93cz1yb290Mi5jaGlsZHJlbi5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwO2kgPCByb290Mi5jaGlsZHJlbi5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWxOb2RlMihyb290Mi5jaGlsZHJlbltpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJub1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYocm9vdC5oYXNDaGlsZE5vZGVzKCkpIHtcclxuICAgICAgICAgICAgbGV0IHN0eWxlPXJvb3QuZ2V0QXR0cmlidXRlKFwic3R5bGVcIik7XHJcbiAgICAgICAgICAgIGxldCBvYmo9e307XHJcbiAgICAgICAgICAgIGRve1xyXG4gICAgICAgICAgICAgICAgbGV0IGk9c3R5bGUuaW5kZXhPZihcIjpcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQga2V5ID0gc3R5bGUuc2xpY2UoMCxpKTtcclxuICAgICAgICAgICAgICAgIHN0eWxlPXN0eWxlLnNsaWNlKGkrMSk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGo9c3R5bGUuaW5kZXhPZihcIjtcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsPXN0eWxlLnNsaWNlKDAsaik7XHJcbiAgICAgICAgICAgICAgICBzdHlsZT1zdHlsZS5zbGljZShqKzEpO1xyXG5cclxuICAgICAgICAgICAgICAgIG9ialtrZXldPXBhcnNlRmxvYXQodmFsKTtcclxuXHJcbiAgICAgICAgICAgIH13aGlsZShzdHlsZS5sZW5ndGghPTApO1xyXG4gICAgICAgICAgICB0aGlzLnNldFByb3BzKG9iaik7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaiA9IDA7aiA8IHJvb3QuY2hpbGRyZW4ubGVuZ3RoO2orKykge1xyXG4gICAgICAgICAgICAgICAgdHJhdmVyc2FsTm9kZShyb290LmNoaWxkcmVuW2pdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHBhaW50KCl7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IGg9XCJcIjtcclxuICAgICAgICBoPWA8ZGl2IGNsYXNzPVwiaW5saW5lQmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgaWQ9XCJgK1xyXG4gICAgICAgIHRoaXMuaWQrXHJcbiAgICAgICAgYFwiPjx0YWJsZSBgK1xyXG4gICAgICAgIGB3aWR0aD1cImArXHJcbiAgICAgICAgdGhpcy53aWR0aCtcclxuICAgICAgICBgXCIgYCtcclxuICAgICAgICBgaGVpZ2h0PVwiYCtcclxuICAgICAgICB0aGlzLmhlaWdodCtcclxuICAgICAgICBgXCJgK1xyXG4gICAgICAgIGBwYW5lbHg9XCJgK1xyXG4gICAgICAgIHRoaXMueCtcclxuICAgICAgICBgXCJgK1xyXG4gICAgICAgIGBwYW5lbHk9XCJgK1xyXG4gICAgICAgIHRoaXMueStcclxuICAgICAgICBgXCJgK1xyXG4gICAgICAgIFxyXG4gICAgICAgIGA+YDtcclxuICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMudHJzLmxlbmd0aDtpKyspe1xyXG5cclxuICAgICAgICAgICAgaCs9dGhpcy50cnNbaV0ucGFpbnQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGgrPWA8L3RhYmxlPjwvZGl2PmBcclxuICAgICAgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGg7XHJcbiAgICB9XHJcbiAgICBnZXROb2RlQ29uZmlnSW5mbygpe1xyXG4gICAgICAgIGxldCBub2RlID0ge307XHJcblx0XHRub2RlLnRleHQgPSB0aGlzLnRleHQ7XHJcblx0XHRub2RlLmljb24gPSAnZ2x5cGhpY29uIGdseXBoaWNvbi1wZW5jaWwnO1xyXG5cdFx0bm9kZS51dWlkID0gdGhpcy5pZDtcdFxyXG4gICAgICAgIG5vZGUuaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgIGlmKHRoaXMuZWxlbWVudC5sZW5ndGggPiAwKSB7XHJcblx0XHRcdG5vZGUubm9kZXMgPSBbXVxyXG5cdFx0XHRmb3IobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmVsZW1lbnQubGVuZ3RoO2kgPCBsZW47aSsrKSB7XHJcblx0XHRcdFx0Y29uc3QgZGF0YSA9IHRoaXMuZWxlbWVudFtpXS5nZXROb2RlQ29uZmlnSW5mbygpO1xyXG5cdFx0XHRcdG5vZGUubm9kZXMucHVzaChkYXRhKTtcdFxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbm9kZTtcclxuICAgIH1cclxuICAgIGFkZEVsZW1lbnQoZWxlbSl7XHJcbiAgICAgICAgbGV0IGxlbj10aGlzLmVsZW1lbnQubGVuZ3RoO1xyXG4gICAgICAgIGZvcihsZXQgaT0wO2k8bGVuO2krKyl7XHJcbiAgICAgICAgICAgIGlmKGVsZW0ueDx0aGlzLmVsZW1lbnRbaV0ueCt0aGlzLmVsZW1lbnRbaV0ud2lkdGggJiYgZWxlbS54PnRoaXMuZWxlbWVudFtpXS54ICYmIGVsZW0ueTx0aGlzLmVsZW1lbnRbaV0ueSt0aGlzLmVsZW1lbnRbaV0uaGVpZ2h0ICYmIGVsZW0ueT50aGlzLmVsZW1lbnRbaV0ueSl7XHJcbiAgICAgICAgICAgICAgICBlbGVtLng9ZWxlbS54LXRoaXMuZWxlbWVudFtpXS54O1xyXG4gICAgICAgICAgICAgICAgZWxlbS55PWVsZW0ueS10aGlzLmVsZW1lbnRbaV0ueTtcclxuICAgICAgICAgICAgICAgIGVsZW0uYmVsb25nSWQ9dGhpcy5lbGVtZW50W2ldLmlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50W2ldLmNoaWxkcmVucy5wdXNoKGVsZW0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJlc2V0RWxlbWVudFRvQ2h1bmsoZWxlbSl7XHJcbiAgICAgICAgbGV0IGxlbj10aGlzLmVsZW1lbnQubGVuZ3RoO1xyXG4gICAgICAgIGZvcihsZXQgaz0wO2s8bGVuO2srKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZWxlbWVudFtrXS5pZD09ZWxlbS5iZWxvbmdJZCl7XHJcbiAgICAgICAgICAgICAgICBsZXQgaW5kO1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBqPTA7ajx0aGlzLmVsZW1lbnRba10uY2hpbGRyZW5zLmxlbmd0aDtqKyspe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGVsZW0uaWQ9PXRoaXMuZWxlbWVudFtrXS5jaGlsZHJlbnNbal0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmQ9ajtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRba10uY2hpbGRyZW5zLnNwbGljZShpbmQsMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTxsZW47aSsrKXtcclxuICAgICAgICAgICAgLy/nlLHkuo7luIPlsYDkuIvnmoTlhYPntKDlrZjnmoTkvY3nva7mmK/nm7jlr7nkuo7luIPlsYDnmoTlt6bkuIrop5LnmoTlnZDmoIfvvIzmiYDku6XorqHnrpfnmoTml7blgJnlupTor6XmmK/lhYPntKDnmoTlnZDmoIflgLzliqDkuIrluIPlsYDlt6bkuIrop5LnmoTlnZDmoIflgLzlsI/kuo7miYDlnKjljLrln5/nmoTnm7jlr7nkuo5wYW5lbOeahOS9jee9ru+8jOazqOaEj+WKoOS4imRld2lkdGjlkoxoZWlnaHTnmoTkuZjmlbBcclxuICAgICAgICAgICAgaWYoZWxlbS54K3RoaXMueDx0aGlzLngrdGhpcy5lbGVtZW50W2ldLndpZHRoKihpJXRoaXMuY29scysxKSAmJiBlbGVtLngrdGhpcy54PnRoaXMueCAmJiBlbGVtLnkrdGhpcy55PHRoaXMueSt0aGlzLmVsZW1lbnRbaV0uaGVpZ2h0KihNYXRoLmNlaWwoKGkrMSkvdGhpcy5yb3dzKSkgJiYgZWxlbS55K3RoaXMueT50aGlzLnkpe1xyXG4gICAgICAgICAgICAgICAgLy8gZWxlbS54PWVsZW0ueC10aGlzLmVsZW1lbnRbaV0ueDtcclxuICAgICAgICAgICAgICAgIC8vIGVsZW0ueT1lbGVtLnktdGhpcy5lbGVtZW50W2ldLnk7XHJcbiAgICAgICAgICAgICAgICBlbGVtLmJlbG9uZ0lkPXRoaXMuZWxlbWVudFtpXS5pZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFtpXS5jaGlsZHJlbnMucHVzaChlbGVtKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXNldFRyTGF5b3V0KG1vdmVZKXtcclxuICAgICAgICB0aGlzLnRycy5mb3JFYWNoKChlbG0pPT57XHJcbiAgICAgICAgICAgIGVsbS55ICs9bW92ZVk7XHJcbiAgICAgICAgICAgIC8vIGVsbS5oZWlnaHQgKz1tb3ZlWTtcclxuICAgICAgICAgICAgZWxtLnJlc2V0VGRMYXlvdXQobW92ZVkpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBnZXRSZWFsUm93Q29sKHJvdyxjb2wpe1xyXG4gICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy50cnMubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaj0wO2o8dGhpcy50cnNbaV0udGRzLmxlbmd0aDtqKyspe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy50cnNbaV0udGRzW2pdLnJvd0luZGV4PT1yb3cgJiZ0aGlzLnRyc1tpXS50ZHNbal0uY29sSW5kZXg9PWNvbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcInJlYWxyb3dcIjppLFwicmVhbGNvbFwiOmp9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL2dldOWQiOW5tuWNleWFg+agvOeUqOeahFxyXG4gICAgcmVzZXRDZWxsU3Bhbihyb3csY29sKXtcclxuICAgICAgICB0aGlzLnRycy5mb3JFYWNoKGVsbT0+e1xyXG4gICAgICAgICAgICBpZihlbG0uaGF2ZUNlbGxTcGFuLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgIGVsbS5oYXZlQ2VsbFNwYW4uZm9yRWFjaChlbD0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGVsLnJvd0luZGV4PT1yb3cgJiYgZWwuY29sSW5kZXggPT0gY29sKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWwucm93c3Bhbis9MTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICAgIC8v6YeN572u5omA5pyJ55qEaGF2ZWNlbGxzcGFuXHJcbiAgICAvKipcclxuICAgICAqIOmBjeWOhuaJgOaciXRy77yM5om+5Yiw5Li75Yqo5Y+X5pS55Y+Y55qE5Y2V5YWD5qC877yM5om+5Yiw5LiA5Liq6YGN5Y6G5LiA5qyhdGFibGXnmoTmiYDmnInljZXlhYPmoLzvvIxcclxuICAgICAqIOeUqOi/meS4quS4u+WKqOWcsOihjOWIl+WPt+WOu+Wvu+aJvuiiq+WKqOWPl+W9seWTjeeahOihjOWIl+WPt++8jFxyXG4gICAgICog54S25ZCO5pS55Y+Y6KKr5Yqo5Y+X5b2x5ZON55qE6KGM5YiX5Y+377yM5p2l56Gu5a6a5pyA5ZCOcm93c3BhbuaVsOWtl++8jOaJgOS7pei/memHjOimgeehruWumuavj+asoeWIoOmZpOaIluiAheWinuWKoOihjOS5i+WQju+8jFxyXG4gICAgICog5Li75Yqo5pS25Yiw5b2x5ZON55qE5Y2V5YWD5qC855qE5YaF5a655LiA5a6a6KaB5q2j56Gu77yM5LiN54S26L+Z5Liq6YeN572u5Lya5Ye66ZSZXHJcbiAgICAgKiBcclxuICAgICAqIOmBjeWOhuaJgOacieeahHRk77yM5aaC5p6c5pyJ5ZCI5bm25Y2V5YWD5qC855qE77yM5om+5Yiw6KGM5Y+35ZKM5YiX5Y+354S25ZCO6K6w5b2V5LiL5p2l77yM5LmL5ZCO5YaN57uZ6KKr5Yqo5Y+X5b2x5ZON55qE6KGM5Yqg5LiK6KKr5Yqo6K6w5b2V77yMXHJcbiAgICAgKi9cclxuICAgIHJlc2V0QWxsQ2VsbFNwYW4oKXtcclxuICAgICAgICBsZXQgdGhhdD10aGlzO1xyXG4gICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy50cnMubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIHRoaXMudHJzW2ldLmhhdmVDZWxsU3Bhbj1bXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgZm9yKGxldCBqPTA7ajx0aGlzLnRycy5sZW5ndGg7aisrKXtcclxuICAgICAgICAgICAgZm9yKGxldCBrPTA7azx0aGlzLnRyc1tqXS50ZHMubGVuZ3RoO2srKyl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLnRyc1tqXS50ZHNba10ucm93c3BhbiE9MSl7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJvd3NwYW49dGhpcy50cnNbal0udGRzW2tdLnJvd3NwYW47XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbEluZGV4PXRoaXMudHJzW2pdLnRkc1trXS5jb2xJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyc1tqXS5oYXZlQ2VsbFNwYW4ucHVzaCh7XCJyb3dJbmRleFwiOmosXCJjb2xJbmRleFwiOmssXCJyb3dzcGFuXCI6dGhpcy50cnNbal0udGRzW2tdLnJvd3NwYW4sXCJpc0FjdGl2ZVwiOnRydWV9KTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGE9aisxO2E8cm93c3BhbitqO2ErKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJzW2FdLmhhdmVDZWxsU3Bhbi5wdXNoKHtcInJvd0luZGV4XCI6aixcImNvbEluZGV4XCI6ayxcInJvd3NwYW5cIjp0aGlzLnRyc1tqXS50ZHNba10ucm93c3BhbixcImlzQWN0aXZlXCI6ZmFsc2V9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v6YeN572u5omA5pyJ5ZCR5Y+z55qEaGF2ZWNlbGxSaWdodHNwYW5cclxuICAgIC8qKlxyXG4gICAgICogIOW+queOr3Ry6YeM6Z2i55qEdGTvvIzmib7liLDmnInlkJHlj7PlkIjlubbnmoTljZXlhYPmoLzvvIznhLblkI7lr7nmlLnooYzov5vooYzmlLnliqjvvIzlubbkuJTkv67mlLnnlKjmnaXorrDlvZXnmoTkv6Hmga9cclxuICAgICAqIFxyXG4gICAgICogICAqL1xyXG4gICAgcmVzZXRBbGxDZWxsUmlnaHRTcGFuKCl7XHJcbiAgICAgICAgbGV0IHRoYXQ9dGhpcztcclxuICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMudHJzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICB0aGlzLnRyc1tpXS5oYXZlQ2VsbFJpZ2h0U3Bhbj1bXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgZm9yKGxldCBqPTA7ajx0aGlzLnRycy5sZW5ndGg7aisrKXtcclxuICAgICAgICAgICAgZm9yKGxldCBrPTA7azx0aGlzLnRyc1tqXS50ZHMubGVuZ3RoO2srKyl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLnRyc1tqXS50ZHNba10uY29sc3BhbiE9MSl7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHNwYW49dGhpcy50cnNbal0udGRzW2tdLmNvbHNwYW47XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cnNbal0uaGF2ZUNlbGxSaWdodFNwYW4ucHVzaCh7XCJyb3dJbmRleFwiOmosXCJjb2xJbmRleFwiOmssXCJjb2xzcGFuXCI6Y29sc3BhbixcImlzQWN0aXZlXCI6dHJ1ZX0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/ph43nva7miYDmnIl0cnRk55qE5Z2Q5qCH5ZKM6K6w5b2V5LiL6KeS5qCH55qE5YC8XHJcbiAgICAvKipcclxuICAgICAqIOazqO+8mui/meS4quaWueazleaJp+ihjOaXoOmUmeeahOWJjeaPkOaYr3Rk55qEcm93c3BhbuWSjGNvbHNwYW7vvIxoZWlnaHTlkox3aWR0aOS/neWtmOeahOaYr+ato+ehrueahFxyXG4gICAgICog5ou/5Yiw5Yid5aeL55qEeO+8jHnnu5nnrKzkuIDkuKrljZXlhYPmoLzvvIznhLblkI7liKTmlq3or6XljZXlhYPmoLzmmK/lkKbmnInlkJHlj7PlkozlkJHkuIvnmoTlkIjlubbljZXlhYPmoLzvvIxcclxuICAgICAqIOacieWQkeWPs+eahOWNleWFg+agvO+8jOiusOW9leWQkeWPs+WkmuWwkeS4queEtuWQjumHjee9ruaUueihjOS4i+S4gOS4qnRk55qEY29saW5kZXjvvIxcclxuICAgICAqIOacieWQkeS4i+eahOWNleWFg+agvO+8jOiusOW9leWQkeS4i+WkmuWwkeS4qu+8jOeEtuWQjuS7peWQjumBjeWOhuS4i+S4gOihjOeahOaXtuWAmeimgeWvueivpeWNleWFg+agvOS4i+mdoueahOWNleWFg+agvOaJgOWcqOihjOeahGNvbGluZGV455qE5Yid5aeL5YC8KzFcclxuICAgICAqICDov5jmsqHmnInmg7Plpb3mgI7kuYjlhpkyMDE5LjEyLjI2XHJcbiAgICAgKiAgKi9cclxuICAgIC8vIHJlc2V0UG9zaXRpb25BbmRJbmRleCgpe1xyXG4gICAgLy8gICAgIGxldCB4PXRoaXMueCxcclxuICAgIC8vICAgICAgICAgeT10aGlzLnksXHJcbiAgICAvLyAgICAgICAgIHRoYXQ9dGhpcyxcclxuICAgIC8vICAgICAgICAgLy8gcm93TGVuPTAsXHJcbiAgICAvLyAgICAgICAgIHJvd0xlbj1udWxsLFxyXG4gICAgLy8gICAgICAgICBoYXZlUm93c3Bhbj1mYWxzZTtcclxuXHJcbiAgICAvLyAgICAgZm9yKGxldCBpPTA7aTx0aGlzLnRycy5sZW5ndGg7aSsrKXtcclxuICAgIC8vICAgICAgICAgbGV0IGNvbExlbj0wLFxyXG4gICAgLy8gICAgICAgICByb3dOdW09MCxcclxuICAgIC8vICAgICAgICAgY29sU3RhcnQ9MDtcclxuICAgIC8vICAgICAgICAgdGhpcy50cnNbaV0ucm93SW5kZXg9aTtcclxuICAgIC8vICAgICAgICAgZm9yKGxldCBqPTA7ajx0aGlzLnRyc1tpXS50ZHMubGVuZ3RoO2orKyl7XHJcbiAgICAvLyAgICAgICAgICAgICAvLyBpZihoYXZlUm93U3BhbiAmJiByb3dMZW4hPTApe1xyXG4gICAgLy8gICAgICAgICAgICAgLy8gICAgIHJvd0xlbi0tO1xyXG4gICAgLy8gICAgICAgICAgICAgLy8gICAgIGNvbFN0YXJ0PWorcm93TnVtO1xyXG4gICAgLy8gICAgICAgICAgICAgLy8gfWVsc2V7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgY29sU3RhcnQ9ajtcclxuICAgIC8vICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgLy8gICAgICAgICAgICAgaWYoaj09MCAmJiBpPT0wKXtcclxuICAgIC8vICAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS50ZHNbal0uY29sSW5kZXg9MDtcclxuICAgIC8vICAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS50ZHNbal0ucm93SW5kZXg9MDtcclxuXHJcbiAgICAvLyAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgICAgICBpZih0aGlzLnRyc1tpXS50ZHNbal0uY29sc3BhbiE9MSApe1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIC8v5b2T5YmN5Y2V5YWD5qC85pyJ5ZCR5Y+z55qE5ZCI5bm277yM5rKh5pyJ5ZCR5LiL55qEXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgY29sTGVuPWNvbFN0YXJ0K3RoaXMudHJzW2ldLnRkc1tqXS5jb2xzcGFuLTE7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgLy8gY29sTGVuKys7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgdGhpcy50cnNbaV0udGRzW2pdLmNvbEluZGV4PWNvbExlbjtcclxuICAgIC8vICAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS50ZHNbal0ucm93SW5kZXg9cm93TGVuO1xyXG5cclxuICAgIC8vICAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS50ZHNbal0ucm93SW5kZXg9aTtcclxuICAgIC8vICAgICAgICAgICAgIH1lbHNlIGlmKHRoaXMudHJzW2ldLnRkc1tqXS5yb3dzcGFuIT0xKXtcclxuICAgIC8vICAgICAgICAgICAgICAgICAvL+W9k+WJjeWNleWFg+agvOacieWQkeS4i+eahOWQiOW5tu+8jOayoeacieWQkeWPs+eahFxyXG4gICAgLy8gICAgICAgICAgICAgICAgIC8vIHJvd051bSsrOy8v55So5p2l6K6w5b2V5b2T5YmN6KGM5pyJ5aSa5bCR5Liq5Y2V5YWD5qC85pyJ5ZCR5LiL5ZCI5bm25Y2V5YWD5qC8XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgLy8gcm93TGVuPXRoaXMudHJzW2ldLnRkc1tqXS5yb3dzcGFuLTE7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgLy8gaGF2ZVJvd3NwYW49dHJ1ZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS50ZHNbal0ucm93SW5kZXg9cm93TGVuO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIHRoaXMudHJzW2ldLnRkc1tqXS5jb2xJbmRleD1qO1xyXG5cclxuICAgIC8vICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuXHJcbiAgICAvLyB9XHJcblxyXG5cclxuICAgIGNvcHlGbihvYmopIHtcclxuICAgICAgICBpZiAob2JqID09IG51bGwpIHtcclxuICAgICAgICAgICAgIHJldHVybiBudWxsXHJcbiAgICAgICAgIH1cclxuICAgICAgICAgdmFyIHJlc3VsdCA9IEFycmF5LmlzQXJyYXkob2JqKSA/IFtdIDoge307XHJcbiAgICAgICAgIGZvciAobGV0IGtleSBpbiBvYmopIHtcclxuICAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqW2tleV0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdGhpcy5jb3B5Rm4ob2JqW2tleV0pOyAgLy8g5aaC5p6c5piv5a+56LGh77yM5YaN5qyh6LCD55So6K+l5pa55rOV6Ieq6LqrXHJcbiAgICAgICAgICAgICAgICAgfWVsc2UgaWYgKHR5cGVvZiBvYmpba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdGhpcy5jb3B5Rm4ob2JqW2tleV0pOyAgLy8g5aaC5p6c5piv5a+56LGh77yM5YaN5qyh6LCD55So6K+l5pa55rOV6Ieq6LqrXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IG9ialtrZXldO1xyXG4gICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgfVxyXG4gICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAq5aSN5Yi25LiA5LiqdHIgIFxyXG4gICAgICogIOaaguaXtuayoeacieaJvuWIsOWmguS9lea3seaLt+i0neS4gOS4quWunuS+i+WMlueahOWvueixoeiAjOS4jeW9seWTjeWunuS+i+WMluWvueixoeeahOWOn+Wei+aWueazlVxyXG4gICAgICogICovXHJcbiAgICBjb3B5VHIoY2xvbmVSb3cscHJlUm93KXtcclxuICAgICAgICBjbG9uZVJvdy5jb2xzPXByZVJvdy5jb2xzO1xyXG4gICAgICAgIGNsb25lUm93Lng9cHJlUm93Lng7XHJcbiAgICAgICAgY2xvbmVSb3cueT1wcmVSb3cueTtcclxuICAgICAgICBjbG9uZVJvdy53aWR0aD1wcmVSb3cud2lkdGg7XHJcbiAgICAgICAgY2xvbmVSb3cuaGVpZ2h0PXByZVJvdy5oZWlnaHQ7XHJcbiAgICAgICAgY2xvbmVSb3cucm93SW5kZXggPXByZVJvdy5yb3dJbmRleDtcclxuICAgICAgICBjbG9uZVJvdy5pbml0KCk7XHJcbiAgICAgICAgaWYoY2xvbmVSb3cudGRzLmxlbmd0aCE9cHJlUm93LnRkcy5sZW5ndGgpe1xyXG4gICAgICAgICAgICBjbG9uZVJvdy50ZHMuc3BsaWNlKHByZVJvdy50ZHMubGVuZ3RoLGNsb25lUm93LnRkcy5sZW5ndGgtcHJlUm93LnRkcy5sZW5ndGgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHByZVJvdy50ZHMuZm9yRWFjaCgoZWxtLGluZGV4KT0+e1xyXG4gICAgICAgICAgICBjbG9uZVJvdy50ZHNbaW5kZXhdLng9ZWxtLng7XHJcbiAgICAgICAgICAgIGNsb25lUm93LnRkc1tpbmRleF0ueT1lbG0ueTtcclxuICAgICAgICAgICAgY2xvbmVSb3cudGRzW2luZGV4XS53aWR0aD1lbG0ud2lkdGg7XHJcbiAgICAgICAgICAgIGNsb25lUm93LnRkc1tpbmRleF0uaGVpZ2h0PWVsbS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIGNsb25lUm93LnRkc1tpbmRleF0uY29sc3Bhbj1lbG0uY29sc3BhbjtcclxuXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAq5aSN5Yi25LiA5LiqdGQgIFxyXG4gICAgICogIOaaguaXtuayoeacieaJvuWIsOWmguS9lea3seaLt+i0neS4gOS4quWunuS+i+WMlueahOWvueixoeiAjOS4jeW9seWTjeWunuS+i+WMluWvueixoeeahOWOn+Wei+aWueazlVxyXG4gICAgICogICovXHJcbiAgICBjb3B5VGQoY2xvbmVDb2wscHJlQ29sKXtcclxuICAgICAgICBjbG9uZUNvbC54PXByZUNvbC54O1xyXG4gICAgICAgIGNsb25lQ29sLnk9cHJlQ29sLnk7XHJcbiAgICAgICAgY2xvbmVDb2wud2lkdGg9cHJlQ29sLndpZHRoO1xyXG4gICAgICAgIGNsb25lQ29sLmhlaWdodD1wcmVDb2wuaGVpZ2h0O1xyXG4gICAgICAgIGNsb25lQ29sLnJvd0luZGV4PXByZUNvbC5yb3dJbmRleDtcclxuICAgICAgICBjbG9uZUNvbC5jb2xJbmRleD1wcmVDb2wuY29sSW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgIC8qKlxyXG4gICAgICrph43nva7miYDmnIl0ZOeahHnovbTlnZDmoIdcclxuICAgICAqICAqL1xyXG4gICAgcmVzZXRBbGxUZFkoKXtcclxuICAgICAgICBmb3IobGV0IGo9MDtqPHRoaXMudHJzLmxlbmd0aDtqKyspe1xyXG4gICAgICAgICAgICBmb3IobGV0IGs9MDtrPHRoaXMudHJzW2pdLnRkcy5sZW5ndGg7aysrKXtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJzW2pdLnRkc1trXS55PXRoaXMudHJzW2pdLnlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBwcyDku6XkuIvooYzliJfljZXlhYPmoLzlnYfmmK/mi790cueahHJvd2luZGV477yM5ZKMdGTnmoRjb2xpbmRleO+8jHRk55qEcm93aW5kZXjkuI3mlrnkvr/kv67mlLnjgIJcclxuICAgICAqLyBcclxuICAgIC8qKiBcclxuICAgICAqIOaPkuWFpeS4gOihjFxyXG4gICAgICogXHJcbiAgICAgKiAxLuiOt+W+l+W9k+WJjeimgWNsb25l55qE6KGM77yM5aSN5Yi25b2T5YmN6KGM77yM5rOo5oSP5rex5ou36LSd6Zeu6aKYKOacquWujOWFqOino+WGsylcclxuICAgICAqIDIu55Soc3BsaWNl5p2l5o+S5YWl5oyH5a6a55qE6KGM77yMXHJcbiAgICAgKiAzLnJlc2V05Z2Q5qCH77yM5aaC5p6c5b2T5YmN5o+S5YWl55qE5Zyw5pa55piv6aaW5L2N77yM6YKj5ZCO6Z2i5omA5pyJ6YO96KaB5Y+Y5YyW77yM5aaC5p6c5LiN5piv77yM6YKj5bCx5LmL5ZCO55qE5Y+Y5YyW5bCx5Y+v5LulXHJcbiAgICAgKiA0LnJlcGFpbnRcclxuICAgICAqIDEu546w5Zyo5pS555So5Y+C5pWw5Luj5pu/5LiL5qCH77yM5bCx5LiN6IO955u05o6l5pON5L2c5pWw57uE77yM5YWI6YGN5Y6GdHLvvIzmi7/liLDlr7nlupTlj4LmlbDnmoR0cueahGnlgLznhLblkI7ov5vooYzmk43kvZzvvIzml6DorrrliKDpmaTov5jmmK/lop7liqDpg73lvpflr7nkuYvlkI7nmoTlj4LmlbDov5vooYzku47mlrDotYvlgLxcclxuICAgICAqIOeOsOWcqOeugOaYk+eJiOeahOaYr+ebtOaOpeWcqOS4i+aWueaPkuWFpe+8jO+8jOaJgOS7peWPqumcgOimgeaUueWPmOS5i+WQjueahOWPguaVsO+8jOS5i+WQjuWmguaenOWinuWKoOaWueazleS5i+WQjuimgeWIpOaWreaIluiAheebtOaOpeWvueWFqOmDqOi/m+ihjOmHjeaWsOi1i+WAvO+8iHBz77yM5oCn6IO95raI6ICX5aSn77yJ77ybXHJcbiAgICAgKiBcclxuICAgICAqIHBzIDIwMTkuMTIuMiDliqDkuIrlpoLmnpzor6XooYzmnInlkIjlubbljZXlhYPmoLznmoTmg4XlhrXvvIzmlrDlop7kuIDooYznmoTml7blgJnopoHms6jmhI/lpITnkIblkIjlubbnmoTljZXlhYPmoLws546w5Zyo6ICD6JmR55qE6YO95piv5Lik5Liq5Y2V5YWD5qC85ZCI5bm255qE77yM5aSa5Liq55qE6L+Y5rKh5pyJ6ICD6JmRXHJcbiAgICAgKiDmjqXmlLbliLDkuIDkuKrlj4LmlbDvvIzmmK/lvZPliY3pvKDmoIflnKjnmoTooYzmlbDvvIzliKTmlq3lvZPliY3nmoTooYznmoR0ZHPnmoRsZW5ndGjmmK/lkKbnrYnkuo7lvZPliY10YWJsZeeahGNvbHPvvIznhLblkI5cclxuICAgICAqIFxyXG4gICAgICogMjAxOS4xMi4xNlxyXG4gICAgICog546w5Zyo6ICD6JmR55qE5oOF5Ya16L+Y5rKh5pyJ6ICD6JmR5Yiw5ZCR5LiL5ZKM5ZCR5Y+z5LiA6LW35p2l55qE5oOF5Ya144CCXHJcbiAgICAgICAgMe+8ieWmguaenOW9k+WJjem8oOagh+aJgOWcqOWNleWFg+agvOWtmOWcqOWQiOW5tuWNleWFg+agvO+8jFxyXG4gICAgICAgIOWmguaenOWtmOWcqOWQkeWPs+WQiOW5tueahOWNleWFg+agvOebtOaOpeWkjeWItuS/oeaBr+OAglxyXG4gICAgICAgIOWtmOWcqOeahOivne+8muWIpOaWrem8oOagh+aJgOWcqOWNleWFg+agvOeahOihjOeahOWQkeS4i+WQiOW5tuWNleWFg+agvOeuoei+luiMg+WbtOWGheeahOacgOWQjuS4gOihjOaYr+WQpuaciei2heWHuuiMg+WbtOeahOWQkeS4i+WQiOW5tuWNleWFg+agvO+8jFxyXG4gICAgICAgICAgICAgICAgICAgIOacieeahOivneaWsOWinueahOihjOimgee7p+aJv++8iOi/meS4quivjeW+heaWn+mFjO+8iei2heWHuuiMg+WbtOeahOWQiOW5tuWNleWFg+agvO+8jFxyXG4gICAgICAgICAgICAgICAgICAgIOayoeacieeahOivneWwseWPr+S7peebtOaOpeaWsOWinu+8jOS4jemcgOimgee7p+aJv+WQiOW5tuWNleWFg+agvOOAguebtOaOpeaWsOWinueahOihjOaYr+S4gOS4quW4puacieW9k+WJjeihjOeahOmrmOW6pueahOWOn+Wni+ihjOOAglxyXG4gICAgICAgIOS4jeWtmOWcqOeahOivne+8muWIpOaWreaUueihjOaYr+WQpuacieWtmOWcqOiiq+WKqOaIluiAheS4u+WKqOWPl+W9seWTjeeahOWNleWFg+agvO+8jOacieeahOivneimgeWkhOeQhuS4gOS4i++8jOayoeacieeahOivne+8jOivtOaYjuivpeihjOaYr+S4gOS4quWOn+Wni+ihqOagvOihjFxyXG4gICAgICAgIOaJgOacieeahOaDheWGtee7k+adn+S5i+WQjumDveimgeWkhOeQhuWdkOagh+mrmOW6puetieS/oeaBr+OAglxyXG4gICAgKi9cclxuICAgIGluc2VydFJvdyhSb3dJbmRleCxyZWFsUm93SW5kZXgsQ29sSW5kZXgsY2VsbEhhdmVSb3dzcGFuKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImluc2VydFJvd1wiLFJvd0luZGV4KVxyXG4gICAgICAgIGxldCB0aGF0PXRoaXM7XHJcbiAgICAgICAgbGV0IGluc2VydFJvd0luZGV4ID0gbnVsbCxoYXZlUm93U3Bhbj1udWxsLG1vdXNlQ29sSW5kZXg9bnVsbCxyYW5nZT1udWxsLGluc2VydFJvdz1uZXcgVHJMYXlvdXQoKSxkZWxldGVDb2xJbmRleD1udWxsO1xyXG4gICAgICAgIGluc2VydFJvdy5jb2xzPXRoaXMuY29scztcclxuICAgICAgICBcclxuICAgICAgICBpZihSb3dJbmRleD09cmVhbFJvd0luZGV4ICYmICFjZWxsSGF2ZVJvd3NwYW4pe1xyXG4gICAgICAgICAgICBpbnNlcnRSb3dJbmRleD1yZWFsUm93SW5kZXg7XHJcbiAgICAgICAgICAgIGluc2VydFJvdy53aWR0aD10aGlzLnRyc1tyZWFsUm93SW5kZXhdLndpZHRoO1xyXG4gICAgICAgICAgICBpbnNlcnRSb3cuaGVpZ2h0PXRoaXMudHJzW3JlYWxSb3dJbmRleF0uaGVpZ2h0O1xyXG4gICAgICAgICAgICBpbnNlcnRSb3cuaW5pdCgpOy8v6auY5bqm57un5om/5LqG5b2T5YmN6byg5qCH5omA5Zyo6KGM77yM5Y2V5YWD5qC85piv5Yid5aeL55qEXHJcbiAgICAgICAgICAgIC8v5b2T5YmN5Y2V5YWD5qC85LiN5piv5ZCI5bm25Y2V5YWD5qC877yM5paw5aKe55qE6KGM5Yqg5Zyo6K+l5ZCI5bm25Y2V5YWD5qC85LmL5ZCOXHJcbiAgICAgICAgICAgIC8v5b2T5YmN55qEcm93aW5kZXgrMeWwseaYr+imgea3u+WKoOeahOihjOeahOS9jee9rlxyXG4gICAgICAgICAgICAvL+WIpOaWreW9k+WJjeeahOihjOaYr+WQpuWtmOWcqOS4u+WKqOiiq+WKqOeahOWNleWFg+agvO+8jFxyXG4gICAgICAgICAgICAvL+S4u+WKqOWPl+W9seWTjeeahOWNleWFg+agvO+8jOS4i+mdouaWsOWinueahOS4gOihjOimgeWOu+aOieW9k+WJjeWIl+eahOWNleWFg+agvO+8jOiiq+WKqOWPl+W9seWTjeeahO+8jOi/mOaYr+imgeWkhOeQhueahCAyMDE5LjEyLjI1XHJcbiAgICAgICAgICAgIC8v6KKr5Yqo5Y+X5b2x5ZON55qE77yM5aaC5p6c5b2T5YmN6KGM5piv5pyA5ZCO5LiA5Liq6KKr5Yqo5Y+X5b2x5ZON55qE77yM5bCx55u05o6l5o+S5YWl5LiA5Liq5Y6f5aeL6KGM77yM5LiN5YGa5aSE55CG77yM5aaC5p6c5LiN5piv5pyA5ZCO5LiA5Liq6KKr5Yqo5Y+X5b2x5ZON55qE77yM6YKj6L+Y5piv6KaB5aSE55CGXHJcbiAgICAgICAgICAgIGlmKHRoaXMudHJzW1Jvd0luZGV4XS5oYXZlQ2VsbFNwYW4ubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cnNbUm93SW5kZXhdLmhhdmVDZWxsU3Bhbi5mb3JFYWNoKGVsbT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGVsbS5pc0FjdGl2ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8v5Li75Yqo5Y+X5b2x5ZON55qEXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluc2VydFJvdy50ZHMuc3BsaWNlKGVsbS5jb2xJbmRleCwxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0Um93LnRkcy5mb3JFYWNoKChlbCxpbmRleCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGVsLmNvbEluZGV4PT10aGF0LnRyc1tlbG0ucm93SW5kZXhdLnRkc1tlbG0uY29sSW5kZXhdLmNvbEluZGV4KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVDb2xJbmRleD1pbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0Um93LnRkcy5zcGxpY2UoZGVsZXRlQ29sSW5kZXgsMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydFJvdy5jb2xzLT0xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnRyc1tSb3dJbmRleF0udGRzW2VsbS5jb2xJbmRleF0ucm93c3Bhbis9MTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC50cnNbUm93SW5kZXhdLnRkc1tlbG0uY29sSW5kZXhdLmhlaWdodCs9aW5zZXJ0Um93LmhlaWdodDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlYWxSb3dJbmRleCE9PWVsbS5yb3dJbmRleCtlbG0ucm93c3Bhbi0xKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v5LiN5Zyo5pyA5ZCO5LiA6KGM5Y+X5b2x5ZON55qEXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRSb3cudGRzLmZvckVhY2goKGVsLGluZGV4KT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGVsLmNvbEluZGV4PT10aGF0LnRyc1tlbG0ucm93SW5kZXhdLnRkc1tlbG0uY29sSW5kZXhdLmNvbEluZGV4KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ29sSW5kZXg9aW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydFJvdy50ZHMuc3BsaWNlKGRlbGV0ZUNvbEluZGV4LDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0Um93LmNvbHMtPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnRyc1tlbG0ucm93SW5kZXhdLnRkc1tlbG0uY29sSW5kZXhdLnJvd3NwYW4rPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnRyc1tlbG0ucm93SW5kZXhdLnRkc1tlbG0uY29sSW5kZXhdLmhlaWdodCs9aW5zZXJ0Um93LmhlaWdodDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhhdC50cnMuc3BsaWNlKHJlYWxSb3dJbmRleCsxLDAsaW5zZXJ0Um93KVxyXG5cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgLy/lvZPliY3ljZXlhYPmoLzmmK/lkIjlubbljZXlhYPmoLwg77yM5Yik5pat5b2T5YmN5ZCI5bm25Y2V5YWD5qC855qE5pyA5ZCO5LiA6KGM5piv5ZCm5pyJ6LaF5Ye66IyD5Zu055qE5ZCI5bm25Y2V5YWD5qC877yM5pyJ55qE6K+d6KaB57un5om/XHJcbiAgICAgICAgICAgIGluc2VydFJvdy53aWR0aD10aGlzLnRyc1tyZWFsUm93SW5kZXhdLndpZHRoO1xyXG4gICAgICAgICAgICBpbnNlcnRSb3cuaGVpZ2h0PXRoaXMudHJzW3JlYWxSb3dJbmRleF0uaGVpZ2h0O1xyXG4gICAgICAgICAgICBpbnNlcnRSb3cuaW5pdCgpOy8v6auY5bqm57un5om/5LqG5b2T5YmN6byg5qCH5omA5Zyo6KGM77yM5Y2V5YWD5qC85piv5Yid5aeL55qEXHJcbiAgICAgICAgICAgIGxldCBsYXN0VHJJbmRleD1udWxsO1xyXG4gICAgICAgICAgICBsYXN0VHJJbmRleD1Sb3dJbmRleCt0aGlzLnRyc1tSb3dJbmRleF0udGRzW0NvbEluZGV4XS5yb3dzcGFuLTE7XHJcbiAgICAgICAgICAgIGluc2VydFJvd0luZGV4PWxhc3RUckluZGV4O1xyXG4gICAgICAgICAgICBpZih0aGlzLnRyc1tsYXN0VHJJbmRleF0uaGF2ZUNlbGxTcGFuLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJzW2xhc3RUckluZGV4XS5oYXZlQ2VsbFNwYW4uZm9yRWFjaChlbG09PntcclxuICAgICAgICAgICAgICAgICAgICBpZihlbG0ucm93SW5kZXgrZWxtLnJvd3NwYW4tMT5sYXN0VHJJbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8v5pyJ6LaF5Ye66IyD5Zu055qE5ZCI5bm25Y2V5YWD5qC877yM6KaB57un5om/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydFJvdy50ZHMuZm9yRWFjaCgoZWwsaW5kZXgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihlbC5jb2xJbmRleD09dGhhdC50cnNbZWxtLnJvd0luZGV4XS50ZHNbZWxtLmNvbEluZGV4XS5jb2xJbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ29sSW5kZXg9aW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydFJvdy50ZHMuc3BsaWNlKGRlbGV0ZUNvbEluZGV4LDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRSb3cuY29scy09MTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC50cnNbZWxtLnJvd0luZGV4XS50ZHNbZWxtLmNvbEluZGV4XS5yb3dzcGFuKz0xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnRyc1tlbG0ucm93SW5kZXhdLnRkc1tlbG0uY29sSW5kZXhdLmhlaWdodCs9aW5zZXJ0Um93LmhlaWdodDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGF0LnRycy5zcGxpY2UoaW5zZXJ0Um93SW5kZXgrMSwwLGluc2VydFJvdylcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5oZWlnaHQgKz0gaW5zZXJ0Um93LmhlaWdodDtcclxuICAgICAgICBsZXQgeD0wLHk9MDtcclxuICAgICAgICBpZihpbnNlcnRSb3dJbmRleCE9MCl7XHJcbiAgICAgICAgICAgIHg9dGhpcy50cnNbaW5zZXJ0Um93SW5kZXgtMV0ueDtcclxuICAgICAgICAgICAgeT10aGlzLnRyc1tpbnNlcnRSb3dJbmRleC0xXS55O1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IobGV0IGogPSBpbnNlcnRSb3dJbmRleDtqPHRoaXMudHJzLmxlbmd0aDtqKyspe1xyXG4gICAgICAgICAgICB0aGlzLnRyc1tqXS54ID0geDtcclxuICAgICAgICAgICAgaWYoaj09MCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyc1tqXS5yb3dJbmRleD1qO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cnNbal0ueSA9IHk7XHJcbiAgICAgICAgICAgICAgICB5Kz0wXHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cnNbal0ucm93SW5kZXg9dGhpcy50cnNbai0xXS5yb3dJbmRleCsxO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cnNbal0ueSA9IHkrdGhpcy50cnNbai0xXS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICB5Kz10aGlzLnRyc1tqLTFdLmhlaWdodDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IobGV0IGs9MDtrPHRoaXMudHJzW2pdLnRkcy5sZW5ndGg7aysrKXtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJzW2pdLnRkc1trXS5yb3dJbmRleCA9IHRoaXMudHJzW2pdLnJvd0luZGV4XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZXNldEFsbFRkWSgpO1xyXG4gICAgICAgIHRoaXMucm93cyArPTE7XHJcbiAgICAgICAgdGhhdC5yZXNldEFsbENlbGxTcGFuKClcclxuICAgIH1cclxuICAgIC8qKiBcclxuICAgICAqIOWIoOmZpOS4gOihjFxyXG4gICAgICog5aaC5p6c6K+l6KGM5pyJ5ZKM5LiL5LiA6KGM5ZCI5bm25Y2V5YWD5qC855qE5oOF5Ya177yM6KaB5aSE55CGXHJcbiAgICAgKiDmi7/liLDlvZPliY3pvKDmoIfmiYDlnKjnmoTooYzmlbBcclxuICAgICAqIOeEtuWQjuWIoOmZpOivpeihjFxyXG4gICAgICog77yM6K6w5b6X6KaB5a+55Y2V5YWD5qC855qE5ZCI5bm25bGe5oCn6LCD5pW0XHJcbiAgICAgKiAgXHJcbiAgICAgKiAyMDE5LjEyLjE0XHJcbiAgICAgKiDlpoLmnpzlvZPliY3pvKDmoIflnKjnmoRjZWxs5piv5rKh5pyJ5ZCI5bm25Y2V5YWD5qC855qE77yM55u05o6l5Yig6Zmk6K+l6KGM77yM5LiU5Yik5pat5Zyo6L+Z6KGM5Lit5piv5ZCm5pyJ5ZCI5bm25Y2V5YWD5qC855qE5a2Y5Zyo77yI77yJLOeEtuWQjuimgeaUueWPmOi/meihjOeahOWQiOW5tuWNleWFg+agvOeahOWxnuaAp1xyXG4gICAgICog5aaC5p6c5b2T5YmN6byg5qCH5Zyo55qEY2VsbOacieWQiOW5tuWNleWFg+agvOeahOWtmOWcqO+8jOWImeebtOaOpeWIoOmZpOWQiOW5tuWNleWFg+agvOeahOihjO+8jFxyXG4gICAgICogXHJcbiAgICAqL1xyXG4gICAgZGVsZXRlUm93KFJvd0luZGV4LHJlYWxSb3dJbmRleCxDb2xJbmRleCxjZWxsSGF2ZVJvd3NwYW4pe1xyXG4gICAgICAgIGxldCB0aGF0PXRoaXM7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJkZWxldGVSb3dcIixyZWFsUm93SW5kZXgpXHJcbiAgICAgICAgLy8gbGV0IGNlbGxIYXZlPW51bGw7Ly/nlKjmnaXliKTliKvmmK/lkKbmnInlkIjlubbljZXlhYPmoLxcclxuICAgICAgICAvLyBsZXQgY2VsbHNwYW5zPVtdOyAvL+eUqOadpeiusOW9leW9k+WJjeWNleWFg+agvOaJgOWcqOihjO+8jOmCo+S6m+WNleWFg+agvOacieWQiOW5tuWNleWFg+agvO+8jOi/meS4quaYr+aMh+WQkeS4i+eahO+8jFxyXG4gICAgICAgIC8v5Yik5pat5b2T5YmN5Y2V5YWD5qC85ou/5Yiw55qE6KGM5pWw5piv5ZCm5LiA6Ie077yM5LiA6Ie05YiZ6KGo5piO5b2T5YmN5Y2V5YWD5qC85rKh5pyJ5ZCI5bm25Y2V5YWD5qC8XHJcbiAgICAgICAgbGV0IHg9MCx5PTA7XHJcbiAgICAgICAgbGV0IGRlbGV0ZVJvd0luZGV4ID0gbnVsbDtcclxuICAgICAgICAvL+i/meS4quWIpOaWreS4jeWkn+S4peiwqO+8jOi/mOimgeWIpOaWreW9k+WJjem8oOagh+aJgOWcqOWNleWFg+agvOaYr+WQpuacieWQkeS4i+WQiOW5tuWNleWFg+agvCAgIOW3suS/ruaUuVxyXG4gICAgICAgIGlmKFJvd0luZGV4PT1yZWFsUm93SW5kZXggJiYgIWNlbGxIYXZlUm93c3Bhbil7XHJcbiAgICAgICAgICAgIC8v5rKh5pyJXHJcbiAgICAgICAgICAgIC8vIGNlbGxIYXZlPWZhbHNlO1xyXG4gICAgICAgICAgICBsZXQgYWN0aXZlUm93U3Bhbj1bXSAsdW5BY3RpdmVSb3dTcGFuPVtdLCAgYWRkUm93PW51bGw7XHJcbiAgICAgICAgICAgIC8v5ou/5Yiw6KaB5Yig6Zmk55qE6KGM5pWw5ZKM5pyJ5Y2V5YWD5qC85ZCI5bm255qE6YKj6KGM55qE5YiX5pWwXHJcbiAgICAgICAgICAgIC8v5ou/5Yiw5b2T5YmN5Y2V5YWD5qC85omA5Zyo6KGM5omA5pyJ5Li75Yqo6KKr5Yqo5Y+X5b2x5ZON55qE5ZCI5bm25Y2V5YWD5qC8XHJcblxyXG4gICAgICAgICAgICBkZWxldGVSb3dJbmRleD1yZWFsUm93SW5kZXg7XHJcbiAgICAgICAgICAgIHRoaXMudHJzW3JlYWxSb3dJbmRleF0uaGF2ZUNlbGxTcGFuLmZvckVhY2goZWxtPT57XHJcbiAgICAgICAgICAgICAgICBpZihlbG0uaXNBY3RpdmUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZVJvd1NwYW4ucHVzaChlbG0pXHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICB1bkFjdGl2ZVJvd1NwYW4ucHVzaChlbG0pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC8v5Yig6Zmk5LmL5ZCO6L+b6KGM55qE5pu05paw5YW25LuW6Zeu6aKYIDEu5YWI5aSE55CG5Zug5Li66K+l6KGM5Yig6Zmk5pS25Yiw5b2x5ZON55qE5Y2V5YWD5qC877yM54S25ZCO5YaN5Yig6Zmk77yM5YaN54S25ZCO5aSE55CG5YW35L2T5Z2Q5qCH6Zeu6aKYXHJcbiAgICAgICAgICAgIGxldCBkZWxldGVSb3c9bmV3IFRyTGF5b3V0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29weVRyKGRlbGV0ZVJvdyx0aGlzLnRyc1tkZWxldGVSb3dJbmRleF0pXHJcbiAgICAgICAgICAgIGlmKGFjdGl2ZVJvd1NwYW4ubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgYWN0aXZlUm93U3Bhbi5mb3JFYWNoKGVsbT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIC8v5Li75Yqo5Y+X5b2x5ZON55qE77yM5bCG5ZCI5bm25Y2V5YWD5qC855qE5LiL5LiA6KGM5paw5aKe5LiA5Liq5Y2V5YWD5qC877yM5bm25LiU57un5om/6L+Z5LiA5Y2V5YWD5qC855qE5ZCI5bm25Y2V5YWD5qC85pWw5YeP5LiALOi/mOimgeaUueWPmOmrmOW6pizlubbkuJTov5jopoHmlLnlj5jorrDlvZVcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYWRkQ29sID0gbmV3IFRkTGF5b3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5jb3B5VGQoYWRkQ29sLHRoYXQudHJzW2VsbS5yb3dJbmRleF0udGRzW2VsbS5jb2xJbmRleF0pXHJcbiAgICAgICAgICAgICAgICAgICAgYWRkQ29sLmhlaWdodD10aGF0LnRyc1tlbG0ucm93SW5kZXhdLmhlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICB0aGF0LnRyc1tlbG0ucm93SW5kZXgrMV0udGRzLnNwbGljZShlbG0uY29sSW5kZXgsMCxhZGRDb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoYXQudHJzW2VsbS5yb3dJbmRleCsxXS5jb2xzKz0xO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoYXQudHJzW2VsbS5yb3dJbmRleCsxXS5oYXZlQ2VsbFNwYW4uZm9yRWFjaChlbD0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihlbC5yb3dJbmRleD09ZWxtLnJvd0luZGV4ICYmIGVsLmNvbEluZGV4PT1lbG0uY29sSW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwuaXNBY3RpdmU9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdC50cnNbZWxtLnJvd0luZGV4KzFdLnRkc1tlbG0uY29sSW5kZXhdLnJvd3NwYW49dGhhdC50cnNbZWxtLnJvd0luZGV4XS50ZHNbZWxtLmNvbEluZGV4XS5yb3dzcGFuLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy50cnNbZWxtLnJvd0luZGV4KzFdLnRkc1tlbG0uY29sSW5kZXhdLmhpZGU9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhhdC50cnNbZWxtLnJvd0luZGV4XS50ZHNbZWxtLmNvbEluZGV4XS5yb3dzcGFuIT0yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFkZEhlaWdodD0wO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnRyc1tlbG0ucm93SW5kZXgrMV0udGRzW2VsbS5jb2xJbmRleF0ucm93c3Bhbj10aGF0LnRyc1tlbG0ucm93SW5kZXhdLnRkc1tlbG0uY29sSW5kZXhdLnJvd3NwYW4tMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxlbj10aGF0LnRyc1tlbG0ucm93SW5kZXgrMV0udGRzW2VsbS5jb2xJbmRleF0ucm93c3BhbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBtPWVsbS5yb3dJbmRleCsyO208ZWxtLnJvd0luZGV4KzErbGVuO20rKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LnRyc1ttXS50ZHNbZWxtLmNvbEluZGV4XS5oaWRlPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRIZWlnaHQrPXRoYXQudHJzW21dLnRkc1tlbG0uY29sSW5kZXhdLmhlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQudHJzW21dLnRkcy5zcGxpY2UoZWxtLmNvbEluZGV4LDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnRyc1tlbG0ucm93SW5kZXgrMV0udGRzW2VsbS5jb2xJbmRleF0uaGVpZ2h0Kz1hZGRIZWlnaHQ7XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHVuQWN0aXZlUm93U3Bhbi5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICB1bkFjdGl2ZVJvd1NwYW4uZm9yRWFjaChlbG09PntcclxuICAgICAgICAgICAgICAgICAgICAvL+iiq+WKqOWPl+W9seWTjeeahO+8jOWwhuWPl+W9seWTjeeahOWNleWFg+agvOeahHJvd3NwYW7lh4/kuIDvvIzlubbkuJTpq5jluqblj5jljJZcclxuICAgICAgICAgICAgICAgICAgICB0aGF0LnRyc1tlbG0ucm93SW5kZXhdLnRkc1tlbG0uY29sSW5kZXhdLnJvd3NwYW4tPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdC50cnNbZWxtLnJvd0luZGV4XS50ZHNbZWxtLmNvbEluZGV4XS5oZWlnaHQtPWRlbGV0ZVJvdy5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLnRycy5zcGxpY2UoZGVsZXRlUm93SW5kZXgsMSk7XHJcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0LT1kZWxldGVSb3cuaGVpZ2h0O1xyXG4gICAgICAgICAgICBpZihkZWxldGVSb3dJbmRleCE9MCl7XHJcbiAgICAgICAgICAgICAgICB4PXRoaXMudHJzW2RlbGV0ZVJvd0luZGV4LTFdLng7XHJcbiAgICAgICAgICAgICAgICB5PXRoaXMudHJzW2RlbGV0ZVJvd0luZGV4LTFdLnk7XHJcbiAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSBkZWxldGVSb3dJbmRleDtpPHRoaXMudHJzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cnNbaV0ueCA9IHg7XHJcbiAgICAgICAgICAgICAgICBpZihpPT0wKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS5yb3dJbmRleD1pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJzW2ldLnk9eTtcclxuICAgICAgICAgICAgICAgICAgICB5Kz0wXHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS5yb3dJbmRleD10aGlzLnRyc1tpLTFdLnJvd0luZGV4KzE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cnNbaV0ueSA9IHkrdGhpcy50cnNbaS0xXS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgeSs9dGhpcy50cnNbaS0xXS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGs9MDtrPHRoaXMudHJzW2ldLnRkcy5sZW5ndGg7aysrKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS50ZHNba10ucm93SW5kZXggPSB0aGlzLnRyc1tpXS5yb3dJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS50ZHNba10ueT10aGlzLnRyc1tpXS55O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucm93cyAtPTE7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAvL+aciVxyXG4gICAgICAgICAgICBsZXQgaGF2ZVJvd1NwYW49bnVsbCxhZGRSb3c9bnVsbDtcclxuICAgICAgICAgICAgLy8g5b2T5YmN6byg5qCH5Zyo55qE5Y2V5YWD5qC85pyJ5ZCI5bm25Y2V5YWD5qC877yM55u05o6l5Yig6Zmk6K+l5ZCI5bm25Y2V5YWD5qC86Leo55qE5aSa6KGM77yM6KaB5qOA5p+l5pyA5ZCO5LiA6KGM5oiW6ICF56ys5LiA6KGM5piv5ZCm5a2Y5Zyo5Li75Yqo5oiW6KKr5Yqo55qE5ZCI5bm25Y2V5YWD5qC877yM5aaC5p6c5pyJ55qE6K+d6KaB5aSE55CG5LiA5LiLXHJcbiAgICAgICAgICAgIC8v5ou/5Yiw5Yig6Zmk55qE6KGM55qE5q2j56Gu6KGM5Y+35ZKM5Y2V5YWD5qC85ZCI5bm255qE5q2j56Gu5YiX5Y+3XHJcbiAgICAgICAgICAgIGZvcihsZXQgaj0wO2o8dGhpcy50cnMubGVuZ3RoO2orKyl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLnRyc1tqXS5yb3dJbmRleCA9PSBSb3dJbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZGVsZXRlUm93SW5kZXg9ajtcclxuICAgICAgICAgICAgICAgICAgICBpZihSb3dJbmRleD09cmVhbFJvd0luZGV4KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlUm93SW5kZXg9ajtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBtPTA7bTx0aGlzLnRyc1tqXS50ZHMubGVuZ3RoO20rKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMudHJzW2pdLnRkc1ttXS5jb2xJbmRleD09Q29sSW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZVJvd1NwYW49bTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLnRyc1tqXS5yb3dJbmRleCA9PSByZWFsUm93SW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZVJvd0luZGV4PWo7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy/nnIvnnIvliKDpmaTnmoTmnIDlkI7kuIDooYzmmK/lkKbmnInlkIjlubbljZXlhYPmoLxcclxuICAgICAgICAgICAgaWYodGhpcy50cnNbUm93SW5kZXgrdGhpcy50cnNbUm93SW5kZXhdLnRkc1toYXZlUm93U3Bhbl0ucm93c3Bhbi0xXS5oYXZlQ2VsbFNwYW4ubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgbGV0IGxhc3RUcj10aGlzLnRyc1tSb3dJbmRleCt0aGlzLnRyc1tSb3dJbmRleF0udGRzW2hhdmVSb3dTcGFuXS5yb3dzcGFuLTFdO1xyXG4gICAgICAgICAgICAgICAgbGFzdFRyLmhhdmVDZWxsU3Bhbi5mb3JFYWNoKGVsbT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBlbG1Sb3dJbmRleD1lbG0ucm93SW5kZXgsZWxtQ29sSW5kZXg9ZWxtLmNvbEluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkZWxSb3c9Um93SW5kZXgrdGhhdC50cnNbUm93SW5kZXhdLnRkc1toYXZlUm93U3Bhbl0ucm93c3BhbjtcclxuICAgICAgICAgICAgICAgICAgICAvLyAmJiAoZWxtLnJvd0luZGV4IT09Um93SW5kZXggJiZlbG0uY29sSW5kZXggIT09Q29sSW5kZXgpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoKGVsbS5yb3dJbmRleCtlbG0ucm93c3Bhbik+ZGVsUm93ICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8v5pyJ5ZCI5bm25Y2V5YWD5qC877yM5bm25LiU6LaF5Ye65LqG5Yig6Zmk55qE6IyD5Zu0LOe7meWIoOmZpOeahOacgOWQjuS4gOihjOeahOS4i+S4gOihjOWKoOS4iuaWsOeahOWNleWFg+agvO+8jOW5tuS4lOe7p+aJv3Jvd3NwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoZWxtLnJvd0luZGV4Pj1Sb3dJbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+acgOWQjuS4gOihjOacieWcqOWIoOmZpOihjOWQiOW5tuWNleWFg+agvOi1t+Wni+ihjOS5i+WQjueahOihjO+8jO+8iOacieeCuee7le+8iVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFkZFRkID0gbmV3IFRkTGF5b3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNvcHlUZChhZGRUZCx0aGF0LnRyc1tlbG0ucm93SW5kZXhdLnRkc1tlbG0uY29sSW5kZXhdKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRUZC5yb3dzcGFuPSBSb3dJbmRleCE9PWVsbS5yb3dJbmRleD9lbG0ucm93c3Bhbi0oUm93SW5kZXgrdGhhdC50cnNbUm93SW5kZXhdLnRkc1toYXZlUm93U3Bhbl0ucm93c3Bhbi0xKTplbG0ucm93c3Bhbi10aGF0LnRyc1tSb3dJbmRleF0udGRzW2hhdmVSb3dTcGFuXS5yb3dzcGFuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGg9YWRkVGQucm93c3BhbioodGhhdC50cnNbZWxtLnJvd0luZGV4XS50ZHNbZWxtLmNvbEluZGV4XS5oZWlnaHQvdGhhdC50cnNbZWxtLnJvd0luZGV4XS50ZHNbZWxtLmNvbEluZGV4XS5yb3dzcGFuKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVGQuaGVpZ2h0PWg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5zZXJ0UG9zaXRpb249bnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKFJvd0luZGV4PT1lbG0ucm93SW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydFBvc2l0aW9uPWVsbS5jb2xJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnRyc1tSb3dJbmRleCt0aGF0LnRyc1tSb3dJbmRleF0udGRzW2hhdmVSb3dTcGFuXS5yb3dzcGFuXS50ZHMuc3BsaWNlKGluc2VydFBvc2l0aW9uLDAsYWRkVGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQudHJzW1Jvd0luZGV4K3RoYXQudHJzW1Jvd0luZGV4XS50ZHNbaGF2ZVJvd1NwYW5dLnJvd3NwYW5dLmNvbHMrPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGM9MDtjPHRoYXQudHJzW1Jvd0luZGV4K3RoYXQudHJzW1Jvd0luZGV4XS50ZHNbaGF2ZVJvd1NwYW5dLnJvd3NwYW5dLnRkcy5sZW5ndGg7YysrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2codGhhdC50cnNbUm93SW5kZXgrdGhhdC50cnNbUm93SW5kZXhdLnRkc1toYXZlUm93U3Bhbl0ucm93c3Bhbl0udGRzW2NdLmNvbEluZGV4KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGF0LnRyc1tSb3dJbmRleCt0aGF0LnRyc1tSb3dJbmRleF0udGRzW2hhdmVSb3dTcGFuXS5yb3dzcGFuXS50ZHNbY10uY29sSW5kZXg9PWVsbS5jb2xJbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRQb3NpdGlvbiA9IGM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpbnNlcnRQb3NpdGlvbiA9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0UG9zaXRpb249MDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC50cnNbUm93SW5kZXgrdGhhdC50cnNbUm93SW5kZXhdLnRkc1toYXZlUm93U3Bhbl0ucm93c3Bhbl0udGRzLnNwbGljZShpbnNlcnRQb3NpdGlvbisxLDAsYWRkVGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQudHJzW1Jvd0luZGV4K3RoYXQudHJzW1Jvd0luZGV4XS50ZHNbaGF2ZVJvd1NwYW5dLnJvd3NwYW5dLmNvbHMrPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/ooaXlhYXlvZPnrKzkuIDliJfkuK3pl7TkuKTooYzmnInlkIjlubbvvIznrKzkuInliJfmnInlm5vooYzlkIjlubbvvIznhLblkI7lho3nrKzkuIDliJfliKDpmaTkuK3pl7TkuKTooYznmoTmg4XlhrXvvIzmraTml7blj6rpnIDopoHmlLnlj5jlvZPliY1lbG3nmoTpq5jluqblkoxyb3dzcGFuLOi/mOimgeaUueWPmOWboOS4uui/meS4quW9seWTjeeahOWFtuS7lmhhdmVDZWxsU3BhbueahOWAvFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlbEg9bnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgbj1Sb3dJbmRleDtuPHRoYXQudHJzW1Jvd0luZGV4XS50ZHNbaGF2ZVJvd1NwYW5dLnJvd3NwYW4rMTtuKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbEgrPXRoYXQudHJzW25dLmhlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQudHJzW2VsbS5yb3dJbmRleF0udGRzW2VsbS5jb2xJbmRleF0uaGVpZ2h0LT1kZWxIO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC50cnNbZWxtLnJvd0luZGV4XS50ZHNbZWxtLmNvbEluZGV4XS5yb3dzcGFuLT10aGF0LnRyc1tSb3dJbmRleF0udGRzW2hhdmVSb3dTcGFuXS5yb3dzcGFuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBhPTA7YTx0aGlzLnRycy5sZW5ndGg7YSsrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnRyc1thXS5oYXZlQ2VsbFNwYW4uZm9yRWFjaChlbD0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihlbC5yb3dJbmRleD09ZWxtLnJvd0luZGV4ICYmIGVsLmNvbEluZGV4ID09IGVsbS5jb2xJbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbC5yb3dzcGFuLT10aGF0LnRyc1tSb3dJbmRleF0udGRzW2hhdmVSb3dTcGFuXS5yb3dzcGFuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8v55yL55yL56ys5LiA6KGM5piv5ZCm5pyJ5Y+X5b2x5ZON55qEXHJcbiAgICAgICAgICAgIC8v6L+Y5rKh5YaZXHJcbiAgICAgICAgICAgIC8vIGZvcihsZXQgYT0wO2E8dGhpcy50cnNbUm93SW5kZXgrdGhpcy50cnNbUm93SW5kZXhdLnRkc1toYXZlUm93U3Bhbl0ucm93c3Bhbi0xXS5sZW5ndGg7YSsrKXtcclxuXHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLy/liKDpmaTkuYvlkI7opoHmm7TmlrDlkI7pnaLnmoTlnZDmoIflkoznm7jlhbPnmoTpq5jluqbkuYvnsbvnmoRcclxuICAgICAgICAgICAgbGV0IGRlbEg9bnVsbDtcclxuICAgICAgICAgICAgZm9yKGxldCBuPVJvd0luZGV4O248dGhpcy50cnNbUm93SW5kZXhdLnRkc1toYXZlUm93U3Bhbl0ucm93c3BhbisxO24rKyl7XHJcbiAgICAgICAgICAgICAgICBkZWxIKz10aGlzLnRyc1tuXS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy50cnMuc3BsaWNlKFJvd0luZGV4LHRoaXMudHJzW1Jvd0luZGV4XS50ZHNbaGF2ZVJvd1NwYW5dLnJvd3NwYW4pO1xyXG4gICAgICAgICAgICB0aGlzLmhlaWdodCAtPSBkZWxIO1xyXG4gICAgICAgICAgICBpZihSb3dJbmRleCE9MCl7XHJcbiAgICAgICAgICAgICAgICB4PXRoaXMudHJzW1Jvd0luZGV4LTFdLng7XHJcbiAgICAgICAgICAgICAgICB5PXRoaXMudHJzW1Jvd0luZGV4LTFdLnk7XHJcbiAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSBSb3dJbmRleDtpPHRoaXMudHJzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cnNbaV0ueCA9IHg7XHJcbiAgICAgICAgICAgICAgICBpZihpPT0wKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS5yb3dJbmRleD1pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJzW2ldLnk9eTtcclxuICAgICAgICAgICAgICAgICAgICB5Kz0wXHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS5yb3dJbmRleD10aGlzLnRyc1tpLTFdLnJvd0luZGV4KzE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cnNbaV0ueSA9IHkrdGhpcy50cnNbaS0xXS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgeSs9dGhpcy50cnNbaS0xXS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGs9MDtrPHRoaXMudHJzW2ldLnRkcy5sZW5ndGg7aysrKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS50ZHNba10ucm93SW5kZXggPSB0aGlzLnRyc1tpXS5yb3dJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS50ZHNba10ueT10aGlzLnRyc1tpXS55O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucm93cyAtPTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoYXQucmVzZXRBbGxDZWxsU3BhbigpXHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICAvKiogXHJcbiAgICAgKiDmlrDlop7kuIDliJdcclxuICAgICAqIDEu5ou/5Yiw6byg5qCH5omA5Zyo6L+Z5LiA5YiX55qE5omA5pyJ5YiXXHJcbiAgICAgKiAyLuWwhui/meS6m+WIl+aMieasoeW6j+aPkuWFpeWIsOavj+S4gOS4qnRy5Lit77yM6K6w5b6X5re75Yqg5LmL5ZCO6KaB5pu05paw5LmL5ZCO55qEdGTnmoTlnZDmoIdcclxuICAgICAqIDMu54S25ZCOdGFibGXnmoRjb2zliqDkuIDkuKrvvIx0cueahGNvbOWKoOS4gOS4qlxyXG4gICAgICogXHJcbiAgICAgKiAgMe+8ieWmguaenOW9k+WJjeWNleWFg+agvOacieWQkeWPs+WQiOW5tuWNleWFg+agvO+8jO+8iOS4jeeuoeaJgOWcqOWIl+aYr+WQpuacieWQkeS4i+eahOWQiOW5tu+8iemCo+WwseebtOaOpeWkjeWItuW9k+WJjeWQkeWPs+WQiOW5tuWNleWFg+agvOiMg+WbtOWGheeahOacgOWQjuS4gOWIl++8jOeEtuWQjuWinuWKoO+8jOS4jee7p+aJv+WQkeWPs+eahOWQiOW5tu+8jOS9huS8mue7p+aJv+WQkeS4i+eahOWQiOW5tlxyXG4gICAgICAgIDLvvInlpoLmnpzlvZPliY3ljZXlhYPmoLzmnInlkJHkuIvlkIjlubbljZXlhYPmoLzvvIzkuJTlvZPliY3ljZXlhYPmoLzmiYDlnKjliJfmnInlkJHlj7PlkIjlubbljZXlhYPmoLzvvIzoi6XlvZPliY3liJfkuI3mmK/ojIPlm7TlhoXmnIDlkI7kuIDliJfvvIzliJnmlrDlop7nmoTliJfopoHnu6fmib/lkJHlj7PlkozlkJHkuItcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOiLpeW9k+WJjeWIl+aYr+iMg+WbtOWGheacgOWQjuS4gOWIl++8jOWImeaWsOW7uueahOWIl+S4jee7p+aJv+WQkeWPs++8jOWPque7p+aJv+WQkeS4i1xyXG4gICAgICAgIDPvvInlpoLmnpzlvZPliY3ljZXlhYPmoLzmsqHmnInlkJHlj7PlkIjlubbljZXlhYPmoLzvvIzkvYbmmK/lvZPliY3ljZXlhYPmoLzmiYDlnKjliJfmnInlkJHlj7PlkIjlubbljZXlhYPmoLzvvIzkuJTlvZPliY3ljZXlhYPmoLzmiYDlnKjliJfkuI3mmK/lkJHlj7PlkIjlubbljZXlhYPmoLznmoTmnIDlkI7kuIDliJfvvIzpgqPopoHnu6fmib/lvZPliY3liJfvvIzkuJTnu6fmib/lkJHlj7PlkozlkJHkuIvnmoTlkIjlubZcclxuXHJcbiAgICAqL1xyXG4gICAgaW5zZXJ0Q29sKFJvd0luZGV4LENvbEluZGV4KXtcclxuICAgICAgICBsZXQgdGhhdD10aGlzLGluc2VydENvbEluZGV4PW51bGwsYWRkV2lkdGg9bnVsbCxoYXZlQm90dG9tUm93c3Bhbj1mYWxzZSxib3R0b21Sb3dzcGFuPTA7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJpbnNlcnRDb2xcIixDb2xJbmRleClcclxuICAgICAgICBcclxuICAgICAgICBpZih0aGlzLnRyc1tSb3dJbmRleF0udGRzW0NvbEluZGV4XS5jb2xzcGFuIT0xICl7XHJcbiAgICAgICAgICAgIC8v5b2T5YmN5Y2V5YWD5qC85piv5ZCR5Y+z5ZCI5bm255qE5Y2V5YWD5qC877yM55u05o6l5aSN5Yi25pyA5ZCO5LiA5YiX55qE77yM5aKe5Yqg5Yiw5ZCO6Z2iXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMudHJzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IGluc2VydEluZGV4PW51bGw7XHJcbiAgICAgICAgICAgICAgICBsZXQgaGF2ZT1mYWxzZTtcclxuICAgICAgICAgICAgICAgIGxldCBhZGRDZWxsPW5ldyBUZExheW91dCgpO1xyXG4gICAgICAgICAgICAgICAgaWYoaT09Um93SW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgICAgIGFkZENlbGwud2lkdGg9dGhpcy50cnNbUm93SW5kZXhdLnRkc1tDb2xJbmRleF0ud2lkdGgvdGhpcy50cnNbUm93SW5kZXhdLnRkc1tDb2xJbmRleF0uY29sc3BhbjtcclxuICAgICAgICAgICAgICAgICAgICBhZGRDZWxsLmhlaWdodD10aGlzLnRyc1tSb3dJbmRleF0udGRzW0NvbEluZGV4XS53aWR0aC90aGlzLnRyc1tSb3dJbmRleF0udGRzW0NvbEluZGV4XS5oZWlnaHQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGFkZFdpZHRoPWFkZENlbGwud2lkdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2VsbC5jb2xJbmRleD10aGlzLnRyc1tSb3dJbmRleF0udGRzW0NvbEluZGV4XS5jb2xJbmRleCt0aGlzLnRyc1tSb3dJbmRleF0udGRzW0NvbEluZGV4XS5jb2xzcGFuO1xyXG4gICAgICAgICAgICAgICAgICAgIGluc2VydEluZGV4PUNvbEluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIGluc2VydENvbEluZGV4PUNvbEluZGV4O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGF0LnRyc1tpXS50ZHMuc3BsaWNlKGluc2VydEluZGV4KzEsMCxhZGRDZWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJzW2ldLmNvbHMrPTE7XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAvL+WkjeWItuacgOWQjuS4gOWIl+eahO+8jOS9huaYr+imgeWIpOaWreacgOWQjuS4gOWIl+eahOWNleWFg+agvOaYr+WQpuaciei2heWHuuiMg+WbtOeahOWQiOW5tuWNleWFg+agvOeahO+8jOacieeahOivneimgee7p+aJv+OAglxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2xJbmRleD10aGlzLnRyc1tSb3dJbmRleF0udGRzW0NvbEluZGV4XS5jb2xJbmRleCt0aGlzLnRyc1tSb3dJbmRleF0udGRzW0NvbEluZGV4XS5jb2xzcGFuLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhhdC50cnNbaV0uaGF2ZUNlbGxSaWdodFNwYW4ubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnRyc1tpXS5oYXZlQ2VsbFJpZ2h0U3Bhbi5mb3JFYWNoKGVsbT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZWxtLmNvbEluZGV4K2VsbS5jb2xzcGFuPnRoYXQudHJzW1Jvd0luZGV4XS50ZHNbQ29sSW5kZXhdLmNvbHNwYW4rQ29sSW5kZXggJiYgZWxtLmNvbEluZGV4PD1jb2xJbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/lpoLmnpzlvZPliY3ooYzlnKjlvZPliY3ljZXlhYPmoLznmoTmg4XlhrXkuIvmnInotoXlh7rojIPlm7TnmoTlkJHlj7PljZXlhYPmoLzvvIzpgqPopoHnu6fmib/lkJHlj7PnmoTljZXlhYPmoLzvvIzmiYDku6XkuI3pnIDopoFhZGRDZWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ2VsbD1udWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQudHJzW2ldLnRkc1tlbG0uY29sSW5kZXhdLmNvbHNwYW4rPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC50cnNbaV0udGRzW2VsbS5jb2xJbmRleF0ud2lkdGgrPXRoYXQudHJzW2ldLnRkc1tlbG0uY29sSW5kZXhdLndpZHRoL3RoYXQudHJzW2ldLnRkc1tlbG0uY29sSW5kZXhdLmNvbHNwYW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZT10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZighaGF2ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8v5b2T5YmN6KGM55qE5oyH5a6a5Y2V5YWD5qC877yM5rKh5pyJ6LaF5Ye66IyD5Zu055qE5ZCR5Y+z5ZCI5bm25Y2V5YWD5qC8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaj0wO2o8dGhhdC50cnNbaV0udGRzLmxlbmd0aDtqKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhhdC50cnNbaV0udGRzW2pdLmNvbEluZGV4PT1jb2xJbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0SW5kZXg9ajsvL+aLv+WIsOacgOWQjuS4gOWIl+eahOS4i+agh1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGluc2VydEluZGV4KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENlbGwud2lkdGg9dGhhdC50cnNbaV0udGRzW2luc2VydEluZGV4XS53aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENlbGwuaGVpZ2h0PXRoYXQudHJzW2ldLnRkc1tpbnNlcnRJbmRleF0uaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkV2lkdGg9YWRkQ2VsbC53aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENlbGwucm93c3Bhbj10aGF0LnRyc1tpXS50ZHNbaW5zZXJ0SW5kZXhdLnJvd3NwYW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+WboOS4uuWcqOS4i+mdoue7n+S4gOWvuWNvbGluZGV46L+b6KGM5LiN5piv5b6I5pa55L6/77yM5Zug5Li66KaB6K6w5b2V6KGM5Y+35ZKM5YiX5Y+377yMXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGF0LnRyc1tpXS50ZHNbaW5zZXJ0SW5kZXhdLnJvd3NwYW4hPTEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQudHJzW2ldLmhhdmVDZWxsU3Bhbi5wdXNoKHtcInJvd0luZGV4XCI6aSxcImNvbEluZGV4XCI6aW5zZXJ0SW5kZXgrMSxcInJvd3NwYW5cIjp0aGF0LnRyc1tpXS50ZHNbaW5zZXJ0SW5kZXhdLnJvd3NwYW4sXCJpc0FjdGl2ZVwiOnRydWV9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgYj0wO2I8dGhhdC50cnNbaV0udGRzW2luc2VydEluZGV4XS5yb3dzcGFuLTE7YisrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC50cnNbaV0uaGF2ZUNlbGxTcGFuLnB1c2goe1wicm93SW5kZXhcIjppLFwiY29sSW5kZXhcIjppbnNlcnRJbmRleCsxLFwicm93c3BhblwiOnRoYXQudHJzW2ldLnRkc1tpbnNlcnRJbmRleF0ucm93c3BhbixcImlzQWN0aXZlXCI6ZmFsc2V9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LnRyc1tpXS50ZHMuc3BsaWNlKGluc2VydEluZGV4LDAsYWRkQ2VsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJzW2ldLmNvbHMrPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZENlbGwud2lkdGg9dGhpcy50cnNbaV0udGRzW2luc2VydEluZGV4XS53aWR0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKGhhdmUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2UgaWYodGhpcy50cnNbUm93SW5kZXhdLnRkc1tDb2xJbmRleF0ucm93c3BhbiE9MSApe1xyXG4gICAgICAgICAgICBsZXQgY29sSW5kZXg9dGhpcy50cnNbUm93SW5kZXhdLnRkc1tDb2xJbmRleF0uY29sSW5kZXg7XHJcbiAgICAgICAgICAgIC8v5b2T5YmN5Y2V5YWD5qC85LiN5piv5ZCR5Y+z5ZCI5bm255qE5Y2V5YWD5qC877yM5piv5ZCR5LiL5ZCI5bm255qE5Y2V5YWD5qC8LFxyXG4gICAgICAgICAgICAvL+WIpOaWreW9k+WJjeWNleWFg+agvOaJgOWcqOWIl+aYr+WQpuacieWQiOW5tuWNleWFg+agvOeahOWtmOWcqFxyXG4gICAgICAgICAgICBsZXQgaGF2ZT1mYWxzZSxyb3c9W107XHJcbiAgICAgICAgICAgIGZvcihsZXQgcz0wO3M8dGhpcy50cnMubGVuZ3RoO3MrKyl7XHJcbiAgICAgICAgICAgICAgICAvLyBmb3IobGV0IHQ9MDt0PHRoaXMudHJzW3NdLnRkcy5sZW5ndGg7dCsrKXtcclxuICAgICAgICAgICAgICAgIC8vICAgICBpZih0aGlzLnRyc1tzXS50ZHNbdF0uY29sSW5kZXg9PWNvbEluZGV4ICYmIClcclxuICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgICAgIGlmKHRoaXMudHJzW3NdLnRkc1tDb2xJbmRleF0uY29sSW5kZXghPT1jb2xJbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaGF2ZT10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvdy5wdXNoKHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGhhdmUpe1xyXG4gICAgICAgICAgICAgICAgLy/lvZPliY3lkJHkuIvlkIjlubbnmoTljZXlhYPmoLzmiYDlnKjliJfmnInlkJHlj7PlkIjlubbljZXlhYPmoLxcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBsZXQgYWRkV2lkdGg9MDtcclxuICAgICAgICAvLyBsZXQgaW5zZXJ0Q29sSW5kZXggPSBudWxsO1xyXG4gICAgICAgIC8vIGZvcihsZXQgbT0wO208dGhpcy50cnMubGVuZ3RoO20rKyl7XHJcbiAgICAgICAgLy8gICAgIGZvcihsZXQgbj0wO248dGhpcy50cnNbbV0udGRzLmxlbmd0aDtuKyspe1xyXG4gICAgICAgIC8vICAgICAgICAgaWYodGhpcy50cnNbbV0udGRzW25dLmNvbEluZGV4ID09IENvbEluZGV4KXtcclxuICAgICAgICAvLyAgICAgICAgICAgICBpbnNlcnRDb2xJbmRleD1uO1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vICAgICAgICAgfVxyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAvLyBmb3IobGV0IGs9MDtrPHRoaXMudHJzLmxlbmd0aDtrKyspe1xyXG4gICAgICAgIC8vICAgICBsZXQgY2xvbmVDb2wgPSBuZXcgVGRMYXlvdXQoKTtcclxuICAgICAgICAvLyAgICAgdGhpcy5jb3B5VGQoY2xvbmVDb2wsdGhpcy50cnNba10udGRzW2luc2VydENvbEluZGV4XSlcclxuICAgICAgICAvLyAgICAgaWYodGhpcy50cnNba10udGRzW2luc2VydENvbEluZGV4XS5jb2xzcGFuIT0xKXtcclxuICAgICAgICAvLyAgICAgICAgIGNsb25lQ29sLndpZHRoPXRoaXMudHJzW2tdLnRkc1tpbnNlcnRDb2xJbmRleF0ud2lkdGgvdGhpcy50cnNba10udGRzW2luc2VydENvbEluZGV4XS5jb2xzcGFuXHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyAgICAgYWRkV2lkdGg9Y2xvbmVDb2wud2lkdGg7XHJcbiAgICAgICAgLy8gICAgIHRoaXMudHJzW2tdLndpZHRoICs9IGNsb25lQ29sLndpZHRoXHJcbiAgICAgICAgLy8gICAgIHRoaXMudHJzW2tdLnRkcy5zcGxpY2UoaW5zZXJ0Q29sSW5kZXgsMCxjbG9uZUNvbClcclxuICAgICAgICAvLyAgICAgdGhpcy50cnNba10uY29scys9MTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgdGhpcy53aWR0aCArPSBhZGRXaWR0aDtcclxuICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMudHJzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBsZXQgeD0wLHk9MDtcclxuICAgICAgICAgICAgZm9yKGxldCBqID0gaW5zZXJ0Q29sSW5kZXg7ajx0aGlzLnRyc1tpXS50ZHMubGVuZ3RoO2orKyl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS50ZHNbal0ucm93SW5kZXg9dGhpcy50cnNbaV0ucm93SW5kZXg7XHJcbiAgICAgICAgICAgICAgICBpZihqIT0wKXtcclxuICAgICAgICAgICAgICAgICAgICB4PXRoaXMudHJzW2ldLnRkc1tqLTFdLng7XHJcbiAgICAgICAgICAgICAgICAgICAgeT10aGlzLnRyc1tpXS50ZHNbai0xXS55O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy50cnNbaV0udGRzW2pdLnkgPXk7XHJcbiAgICAgICAgICAgICAgICBpZihqPT0wKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLnRyc1tpXS50ZHNbal0uY29sSW5kZXggPSBqO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJzW2ldLnRkc1tqXS54PXg7XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAvL+i/memHjOmHjee9rmNvbGluZGV46KaB6ICD6JmR5LiK5LiA6KGM5pyJ5ZCR5LiL5ZCI5bm25Y2V5YWD5qC855qE5oOF5Ya1LOacgOWlveWGmeS4gOS4qumHjee9rnh55Z2Q5qCH5ZKMcm93aW5kZXjlkoxjb2xpbmRleOeahOaWueazlVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMudHJzW2ldLnRkc1tqXS5jb2xJbmRleCA9IHRoaXMudHJzW2ldLnRkc1tqLTFdLmNvbEluZGV4KzE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cnNbaV0udGRzW2pdLnggPXgrdGhpcy50cnNbaV0udGRzW2otMV0ud2lkdGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy/ljZXni6zlr7ljb2xpbmRleOi/m+ihjOWkhOeQhizov5nkuKrlsLHlvpfkv53or4Hmr4/ooYzlrZjlgqjnmoRoYXZlY2VsbHNwYW7ml7bmraPnoa7nmoRcclxuICAgICAgICAvL+ato+W4uOaDheWGteS4i++8jGNvbGluZGV455qE5YC85bqU6K+l5piv5pWw57uE5LiL5qCH5YC877yM5L2G5piv5aaC5p6c5pS56KGM5pyJ6KKr5Yqo5Y+X5b2x5ZON55qE5Y2V5YWD5qC85pe277yM5b2T5LiL5qCH562J5LqO6K+l6KKr5Yqo5Y+X5b2x5ZON55qE5Y2V5YWD5qC855qE5LiL6KGo77yM5bqU6K+l6L+b6KGM6Lez6LeDXHJcbiAgICAgICAgZm9yKGxldCBrPTA7azx0aGlzLnRycy5sZW5ndGg7aysrKXtcclxuICAgICAgICAgICAgbGV0IG51bT0wO1xyXG4gICAgICAgICAgICBmb3IobGV0IHQ9MDt0PHRoaXMudHJzW2tdO3QrKyl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLnRyc1trXS5oYXZlQ2VsbFNwYW4ubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBoYXZlPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJzW2tdLmhhdmVDZWxsU3Bhbi5mb3JFYWNoKGVsbT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihqPT1lbG0uY29sSW5kZXggJiYgIWVsbS5pc0FjdGl2ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0rPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKCFoYXZlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtKz0xO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIG51bSsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb2xzICs9MTtcclxuICAgICAgICBcclxuICAgIH1cclxuICAgIC8qKiBcclxuICAgICAqIOWIoOmZpOS4gOWIl1xyXG4gICAgICogMS7liKDpmaTmiYDmnInooYznmoTmjIflrprliJdcclxuICAgICAqIDIu5Yig6Zmk5LmL5ZCO5a+5dGFibGXnmoR3aWR0aOWSjHRy55qEd2lkdGjopoHmlLnliqjvvIzov5jopoHmlLnliqjkuYvlkI7nmoR0ZOeahHjlgLxcclxuICAgICAqIHBzIDIwMTkuMTIuMizliKDpmaTnmoTml7blgJnlpoLmnpzmnInlkIjlubbljZXlhYPmoLzvvIzlupTor6XlhYjlgZrmi4bliIblho3liKDpmaTov5nmoLfmm7TlkIjpgIJcclxuICAgICovXHJcbiAgICBkZWxldGVDb2woQ29sSW5kZXgpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiZGVsZXRlQ29sXCIsQ29sSW5kZXgpXHJcblxyXG4gICAgICAgIGxldCBkZWxldGVDb2xJbmRleCA9IG51bGw7XHJcbiAgICAgICAgZm9yKGxldCBtPTA7bTx0aGlzLnRycy5sZW5ndGg7bSsrKXtcclxuICAgICAgICAgICAgZm9yKGxldCBuPTA7bjx0aGlzLnRyc1ttXS50ZHMubGVuZ3RoO24rKyl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLnRyc1ttXS50ZHNbbl0uY29sSW5kZXggPT0gQ29sSW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZUNvbEluZGV4PW47XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGRlbFdpZHRoID0gMDtcclxuICAgICAgICBsZXQgdGhhdD10aGlzO1xyXG4gICAgICAgIHRoaXMudHJzLmZvckVhY2goZWxtPT57XHJcbiAgICAgICAgICAgIGxldCBhcnI9ZWxtLnRkcy5tYXAobyA9PiAoey4uLm99KSlcclxuICAgICAgICAgICAgZm9yKGxldCByPTA7cjxhcnIubGVuZ3RoO3IrKyl7XHJcbiAgICAgICAgICAgICAgICBpZihhcnJbcl0uY29sc3BhbiE9MSl7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFkZFRkPW5ldyBUZExheW91dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGFycltyXS53aWR0aD1hcnJbcl0ud2lkdGgvYXJyW3JdLmNvbHNwYW47XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyW3JdLmNvbHNwYW49MTtcclxuICAgICAgICAgICAgICAgICAgICBlbG0udGRzW3JdLndpZHRoPWVsbS50ZHNbcl0ud2lkdGgvZWxtLnRkc1tyXS5jb2xzcGFuO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsbS50ZHNbcl0uY29sc3Bhbj0xO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoYXQuY29weVRkKGFkZFRkLGFycltyXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxtLnRkcy5zcGxpY2UociwwLGFkZFRkKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRlbFdpZHRoPWVsbS50ZHNbZGVsZXRlQ29sSW5kZXhdLndpZHRoO1xyXG4gICAgICAgICAgICBlbG0ud2lkdGggLT1lbG0udGRzW2RlbGV0ZUNvbEluZGV4XS53aWR0aDtcclxuICAgICAgICAgICAgZWxtLnRkcy5zcGxpY2UoZGVsZXRlQ29sSW5kZXgsMSk7XHJcbiAgICAgICAgICAgIGVsbS5jb2xzLT0xO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy53aWR0aCAtPWRlbFdpZHRoO1xyXG4gICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy50cnMubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGxldCB4PTAseT0wO1xyXG4gICAgICAgICAgICBmb3IobGV0IGo9ZGVsZXRlQ29sSW5kZXg7ajx0aGlzLnRyc1tpXS50ZHMubGVuZ3RoO2orKyl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS50ZHNbal0ucm93SW5kZXg9dGhpcy50cnNbaV0ucm93SW5kZXg7XHJcbiAgICAgICAgICAgICAgICBpZihqIT0wKXtcclxuICAgICAgICAgICAgICAgICAgICB4PXRoaXMudHJzW2otMV0ueDtcclxuICAgICAgICAgICAgICAgICAgICB5PXRoaXMudHJzW2otMV0ueTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMudHJzW2ldLnRkc1tqXS55PXk7XHJcbiAgICAgICAgICAgICAgICBpZihqPT0wKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS50ZHNbal0uY29sSW5kZXg9ajtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyc1tpXS50ZHNbal0ueD14O1xyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cnNbaV0udGRzW2pdLmNvbEluZGV4ID0gdGhpcy50cnNbaV0udGRzW2otMV0uY29sSW5kZXggKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJzW2ldLnRkc1tqXS54PXgrdGhpcy50cnNbaV0udGRzW2otMV0ud2lkdGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb2xzIC09MTtcclxuICAgIH1cclxuICAgIC8qKiBcclxuICAgICAqIHBzIOS4jeiDveeUqOS4i+agh+adpeaTjeS9nOaVsOe7hO+8jOeUqOaVsOe7hOWGheeahOWxnuaAp+adpeaTjeS9nFxyXG4gICAgICog6K6w5b6X5a+55pWw57uE5YaF55qE5bGe5oCn6L+b6KGM5L+u5pS5XHJcbiAgICAgKiBcclxuICAgICAqIOWQkeWPs+WQiOW5tuWNleWFg+agvFxyXG4gICAgICogMS7mi7/liLDlvZPliY3nmoTljZXlhYPmoLzvvIzlkozlj7PovrnnmoTnrKzkuIDkuKrljZXlhYPmoLzvvIjlpoLmnpzmnInnmoTor53vvIlcclxuICAgICAqIDIu57uZ5b2T5YmN55qE5Y2V5YWD5qC86K6+572uY29sc3BhblxyXG4gICAgICogMy7kuYvlkI7nmoRjb2xz5bqU6K+l5Lmf6KaB5pu05pS5XHJcbiAgICAgKiA0LueEtuWQjuWIoOmZpOWPs+i+ueeahOWNleWFg+agvFxyXG4gICAgICog5ZCR5LiL5ZCI5bm25Y2V5YWD5qC8XHJcbiAgICAgKiAxLuaLv+WIsOW9k+WJjeeahOWNleWFg+agvO+8jOWIpOaWreW9k+WJjeeCueS4i+eahOWNleWFg+agvOS4i+mdouaYr+WQpui/mOacieWNleWFg+agvO+8jOacieeahOivneaLv+WIsOS4i+S4gOS4quWNleWFg+agvOi/m+ihjOWQiOW5tuaTjeS9nO+8jFxyXG4gICAgICog5rKh5pyJ55qE6K+d57un57ut5b6A5LiL5LiA6KGM5om+77yM55u05Yiw5om+5Yiw5Li65q2iIO+8jOaJvuWIsOacgOWQjuS4gOihjOmDveayoeacieeahOivne+8jOiusOW+l+W8ueeql+aPkOekulxyXG4gICAgICogXHJcbiAgICAgKiBcclxuICAgICAqIDIu57uZ5b2T5YmN55qE5Y2V5YWD5qC86K6+572ucm93c3BhblxyXG4gICAgICogMy7nhLblkI7kuIvkuIDooYznmoRjb2xzLTFcclxuICAgICAqIDQu5Yig6Zmk5LiL5LiA6KGM55qE5Y2V5YWD5qC8XHJcbiAgICAqL1xyXG4gICAgbWVyZ2VDZWxscyhkaXJlY3Rpb24sUm93SW5kZXgsQ29sSW5kZXgpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiY2VsbHNcIixSb3dJbmRleCxDb2xJbmRleClcclxuICAgICAgICBsZXQgcm93PW51bGwsY29sPW51bGwsbmV4dFJvdz1udWxsLG5leHRDb2w9bnVsbDtcclxuICAgICAgICAvL+aLv+WIsOm8oOagh+aJgOWcqOWNleWFg+agvOeahHRk55qE6KGM5Y+35ZKM5YiX5Y+3XHJcbiAgICAgICAgZm9yKGxldCBtPTA7bTx0aGlzLnRycy5sZW5ndGg7bSsrKXtcclxuICAgICAgICAgICAgaWYodGhpcy50cnNbbV0ucm93SW5kZXggPT0gUm93SW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgcm93PW07XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IG49MDtuPHRoaXMudHJzW21dLnRkcy5sZW5ndGg7bisrKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnRyc1ttXS50ZHNbbl0uY29sSW5kZXggPT0gQ29sSW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2w9bjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlkJHkuIvlkIjlubbljZXlhYPmoLzvvIwvLyjlkI7pnaLnmoTmsqHlgZop5YWI5Yik5pat5LiL6Z2i6L+Z5Liq5Y2V5YWD5qC85piv5ZCm5bey57uP5ZCI5bm277yM5aaC5p6c5bey57uP5ZCI5bm25bCx5b6A5LiL5YaN6LWw5LiA5Liq5Y2V5YWD5qC877yM5aaC5p6c5rKh5pyJ5ZCI5bm277yM5bCx5ou/5LiL6Z2i6L+Z5Liq5Y2V5YWD5qC855qEY29sXHJcbiAgICAgICAgaWYoZGlyZWN0aW9uID09IFwiYm90dG9tXCIgKXtcclxuICAgICAgICAgICAgLy8gZm9yKGxldCByPTE7cjx0aGlzLnRycy5sZW5ndGgtcm93O3IrKyl7XHJcbiAgICAgICAgICAgIC8vICAgICBpZih0aGlzLnRyc1tjb2wrcl0udGRzW3JdLnJvd3NwYW4gIT09IDApe1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIG5leHRDb2w9cjtcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICBmb3IobGV0IHI9cm93KzE7cjx0aGlzLnRycy5sZW5ndGg7cisrKXtcclxuICAgICAgICAgICAgICAgIGxldCBoYXZlPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBzPTA7czx0aGlzLnRyc1tyXS50ZHMubGVuZ3RoO3MrKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy50cnNbcl0udGRzW3NdLmNvbEluZGV4PT1Db2xJbmRleCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhdmU9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFJvdz1yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Q29sPXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYoaGF2ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy/lpb3lg4/ov5nmrrXlj6/ku6XkuI3opoHvvIznm7TmjqXmi7/lvZPliY3ljZXlhYPmoLznmoRyb3dzcGFu77yM55yL55yL5ZCI5bm25LqG5Yeg5Liq5Y2V5YWD5qC877yM57un57ut5b6A5LiL6Z2i5Zyo5ZCI5bm25LiA5Liq5bCx5Y+v5Lul77yM5aaC5p6c5LiL6Z2i6L+Y5pyJ5Y2V5YWD5qC855qE6K+dLOS9huaYr+WQjumdouaDs+aDs++8jOW6lOivpeimge+8jOimgeaLv+WIsOi/meS4quWNleWFg+agvOWcqOS4i+S4gOihjOeahOWIl+WPt1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOi/memHjOWIpOaWreaYr+WQpuacieW3pui+ueeahHRk5oiW6ICF5LiL6L6555qEdGTov5jopoHlho3nnIvnnIvvvIzmgI7kuYjlpITnkIblpb1cclxuICAgICAgICBcclxuICAgICAgICBpZih0aGlzLnRyc1tyb3ddLnRkc1tjb2wrMV0gJiYgZGlyZWN0aW9uPT1cInJpZ2h0XCIpe1xyXG4gICAgICAgICAgICB0aGlzLnRyc1tyb3ddLnRkc1tjb2xdLndpZHRoKz10aGlzLnRyc1tyb3ddLnRkc1tjb2wrMV0ud2lkdGg7XHJcbiAgICAgICAgICAgIHRoaXMudHJzW3Jvd10udGRzW2NvbF0uY29sc3Bhbis9MTtcclxuICAgICAgICAgICAgdGhpcy50cnNbcm93XS50ZHMuc3BsaWNlKGNvbCsxLDEpO1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0QWxsQ2VsbFJpZ2h0U3BhbigpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9ZWxzZSBpZihkaXJlY3Rpb24gPT0gXCJib3R0b21cIil7XHJcbiAgICAgICAgICAgIGlmKHRoaXMudHJzW25leHRSb3ddLnRkc1tuZXh0Q29sXS5yb3dzcGFuPT0xKXtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJzW3Jvd10udGRzW2NvbF0uaGVpZ2h0Kz10aGlzLnRyc1tuZXh0Um93XS50ZHNbbmV4dENvbF0uaGVpZ2h0O1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy50cnNbbmV4dFJvd10uY29scy09MTtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJzW25leHRSb3ddLnRkcy5zcGxpY2UobmV4dENvbCwxKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYodGhpcy50cnNbcm93XS5oYXZlQ2VsbFNwYW4ubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBoYXZlPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcihsZXQgYT0wO2E8dGhpcy50cnNbcm93XS5oYXZlQ2VsbFNwYW4ubGVuZ3RoO2ErKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMudHJzW3Jvd10uaGF2ZUNlbGxTcGFuW2FdLmNvbEluZGV4PT1jb2wgJiYgdGhpcy50cnNbcm93XS5oYXZlQ2VsbFNwYW5bYV0ucm93SW5kZXggPT0gcm93KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMudHJzW3Jvd10uaGF2ZUNlbGxTcGFuW2FdLnJvd3NwYW4rPTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZighaGF2ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJzW3Jvd10uaGF2ZUNlbGxTcGFuLnB1c2goe1wicm93SW5kZXhcIjpyb3csXCJjb2xJbmRleFwiOmNvbCxcInJvd3NwYW5cIjp0aGlzLnRyc1tyb3ddLnRkc1tjb2xdLnJvd3NwYW4sXCJpc0FjdGl2ZVwiOnRydWV9KVxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cnNbcm93XS5oYXZlQ2VsbFNwYW4ucHVzaCh7XCJyb3dJbmRleFwiOnJvdyxcImNvbEluZGV4XCI6Y29sLFwicm93c3BhblwiOnRoaXMudHJzW3Jvd10udGRzW2NvbF0ucm93c3BhbixcImlzQWN0aXZlXCI6dHJ1ZX0pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyc1tuZXh0Um93XS5oYXZlQ2VsbFNwYW4ucHVzaCh7XCJyb3dJbmRleFwiOnJvdyxcImNvbEluZGV4XCI6Y29sLFwicm93c3BhblwiOnRoaXMudHJzW3Jvd10udGRzW2NvbF0ucm93c3BhbixcImlzQWN0aXZlXCI6ZmFsc2V9KVxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyc1tyb3ddLnRkc1tjb2xdLnJvd3NwYW4rPTE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0Q2VsbFNwYW4ocm93LGNvbCk7XHJcbiAgICBcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAvL+S4i+S4gOS4quWNleWFg+agvOaXtuWQiOW5tuWNleWFg+agvO+8jOeEtuWQjuW6lOivpeaKiuS4i+S4gOS4quWNleWFg+agvOeahOi/meS4quWNleWFg+agvOe7mei/meS4quWNleWFg+agvO+8jOeEtuWQjuaUueWPmOiusOW9leWQiOW5tuWNleWFg+agvOWPmOmHj1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cnNbcm93XS50ZHNbY29sXS5oZWlnaHQ9dGhpcy50cnNbbmV4dFJvd10udGRzW25leHRDb2xdLmhlaWdodDtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJzW3Jvd10udGRzW2NvbF0ucm93c3Bhbj10aGlzLnRyc1tuZXh0Um93XS50ZHNbbmV4dENvbF0ucm93c3BhbisxO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50cnNbbmV4dFJvd10udGRzLnNwbGljZShuZXh0Q29sLDEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldEFsbENlbGxTcGFuKCk7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvL+WQiOW5tuWNleWFg+agvOS5i+WQjuimgeWcqOivpeWNleWFg+agvOaJgOWcqOihjOeVmeS4i+iusOW9lVxyXG4gICAgICAgICAgICAvL2lzYWN0aXZl6KGo56S65LuW5piv6KKr5Yqo5Y+X5b2x5ZON6L+Y5piv5Li75YqoIOiiq+WKqOeahOivne+8jHJvd2luZGV45a2Y55qE5bCx5piv5Zug5Li65ZOq6KGM6ICM6KKr5Y+X5b2x5ZON77yM5Li75Yqo55qE6K+d77yM5a2Y55qE5bCx5piv6Ieq5bex55qE5YC8XHJcbiAgICAgICAgICAgIFxyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgVGFibGVMYXlvdXQ7XHJcbi8v56ys5LiA5YiX56ys5LiA6KGM55qE5ZCR5LiL5ZCI5bm25LiJ5Liq77yM56ys5LiJ5YiX5LuO56ys5LqM6KGM5ZCR5LiL5ZCI5bm25Zub5Liq77yM54S25ZCO5Yig6Zmk5YmN5LiJ6KGM77yM5ZCO6Z2i5Lik6KGM55qE5ZCI5bm25pi+56S65pyJ6Zeu6aKYXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9mb3JtL0xheW91dC9UYWJsZUxheW91dC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7O0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBQUE7OztBQUNBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVhBO0FBWUE7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTs7O0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBcEJBO0FBc0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdkNBO0FBeUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTs7Ozs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7OztBQUdBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQVlBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFZQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWhFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBOERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7Ozs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7O0FBN2xDQTtBQUNBO0FBOGxDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///95\n");

/***/ }),
/* 96 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _utility = __webpack_require__(2);\n\nvar _TdLayout = __webpack_require__(28);\n\nvar _TdLayout2 = _interopRequireDefault(_TdLayout);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar TrLayout = function () {\n    function TrLayout() {\n        _classCallCheck(this, TrLayout);\n\n        this.type = \"\";\n        this.text = \"panelLayout\";\n        this.cursor = \"default\";\n        this.x = 0;\n        this.y = 0;\n        this.width = 0; //tr鐨勫搴﹁缃槸涓嶇敓鏁堢殑锛岃缃繖涓瓧娈靛彧鏄负浜嗙粰td璁剧疆鍊糪n        this.height = 0;\n        this.widthPre = 0;\n        this.heightPre = 0;\n        // this.tlx=0;//鏈€鏂扮殑tr涓嬮潰鐨勮竟绾跨殑x鍊糪n        // this.tly=0;\n        this.xPre = 0;\n        this.yPre = 0;\n        this.tds = [];\n        this.cols = 0;\n        this.iWhich = null;\n        this.rowIndex = 0;\n        this.haveCellSpan = []; //鐢ㄦ潵璁板綍鍚戜笅鐨勫崟鍏冩牸鍚堝苟\n        this.haveCellRightSpan = []; //鐢ㄦ潵璁板綍鍚戝彸鐨勫崟鍏冩牸鍚堝苟\n    }\n\n    _createClass(TrLayout, [{\n        key: 'init',\n        value: function init() {\n            for (var i = 0; i < this.cols; i++) {\n                var td = new _TdLayout2.default();\n                td.colIndex = i;\n                td.rowIndex = this.rowIndex;\n                td.width = this.width / this.cols;\n                td.height = this.height;\n                td.x = this.x + this.width / this.cols * i;\n                td.y = this.y;\n                this.tds.push(td);\n            }\n        }\n    }, {\n        key: 'paint',\n        value: function paint() {\n            if (!this.id) {\n                this.id = _utility.Sequence.createUuid();\n            }\n            //console.log(panel);\n            var h = '<tr ' + 'height=\"' + this.height + '\"' + 'width=\"' + this.width + '\">';\n            for (var i = 0; i < this.tds.length; i++) {\n                if (!this.tds[i].hide) {\n                    h += this.tds[i].paint();\n                }\n            }\n            h += '</tr>';\n            return h;\n        }\n    }, {\n        key: 'parseHtml',\n        value: function parseHtml(html) {\n            var that = this;\n            var y = this.y;\n            var x = this.x;\n            var rowIndex = this.rowIndex;\n            var colIndex = 0;\n\n            var root = $(html)[0];\n            var traversalNode = function traversalNode(htmlNode) {\n                var tagName = htmlNode.tagName;\n\n                switch (tagName) {\n                    case 'TD':\n\n                        var tdLayout = new _TdLayout2.default();\n                        // tdLayout.width=parseInt(htmlNode2.getAttribute(\"width\"));\n                        // tdLayout.height=parseInt(htmlNode2.getAttribute(\"height\"));\n                        // tdLayout.parent=that;\n                        tdLayout.width = parseInt(htmlNode.getAttribute(\"width\"));\n                        tdLayout.height = parseInt(htmlNode.getAttribute(\"height\"));\n                        tdLayout.colspan = parseInt(htmlNode.getAttribute(\"colspan\"));\n                        tdLayout.rowspan = parseInt(htmlNode.getAttribute(\"rowspan\"));\n\n                        tdLayout.x = x;\n                        x += tdLayout.width;\n                        tdLayout.y = y;\n                        tdLayout.rowIndex = rowIndex;\n                        tdLayout.colIndex = colIndex;\n                        colIndex++;\n                        tdLayout.parseHtml(htmlNode);\n                        that.tds.push(tdLayout);\n                        break;\n                    default:\n                        // console.log(\"no\");\n                        break;\n\n                }\n            };\n            if (root.hasChildNodes()) {\n                var style = root.getAttribute(\"style\");\n                // let obj={};\n                // do{\n                //     let i=style.indexOf(\":\");\n                //     let key = style.slice(0,i);\n                //     style=style.slice(i+1);\n\n                //     let j=style.indexOf(\";\");\n                //     let val=style.slice(0,j);\n                //     style=style.slice(j+1);\n\n                //     obj[key]=parseFloat(val);\n\n                // }while(style.length!=0);\n                // this.setProps(obj);\n                this.cols = root.children.length;\n\n                for (var j = 0; j < root.children.length; j++) {\n                    traversalNode(root.children[j]);\n                }\n            }\n        }\n    }, {\n        key: 'resetTdLayout',\n        value: function resetTdLayout(moveY) {\n            var _this = this;\n\n            this.tds.forEach(function (elm) {\n                elm.y = _this.y;\n                elm.height += moveY;\n            });\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-pencil';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n    }]);\n\n    return TrLayout;\n}();\n\nexports.default = TrLayout;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2Zvcm0vTGF5b3V0L1RyTGF5b3V0LmpzP2RlN2YiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXF1ZW5jZX0gZnJvbSAnLi4vLi4vdXRpbGl0eSc7XHJcbmltcG9ydCBUZExheW91dCBmcm9tICcuL1RkTGF5b3V0JztcclxuY2xhc3MgVHJMYXlvdXQge1xyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLnR5cGU9XCJcIjtcclxuICAgICAgICB0aGlzLnRleHQ9XCJwYW5lbExheW91dFwiO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yPVwiZGVmYXVsdFwiO1xyXG4gICAgICAgIHRoaXMueD0wO1xyXG4gICAgICAgIHRoaXMueT0wO1xyXG4gICAgICAgIHRoaXMud2lkdGg9MDsvL3Ry55qE5a695bqm6K6+572u5piv5LiN55Sf5pWI55qE77yM6K6+572u6L+Z5Liq5a2X5q615Y+q5piv5Li65LqG57uZdGTorr7nva7lgLxcclxuICAgICAgICB0aGlzLmhlaWdodD0wO1xyXG4gICAgICAgIHRoaXMud2lkdGhQcmU9MDtcclxuICAgICAgICB0aGlzLmhlaWdodFByZT0wO1xyXG4gICAgICAgIC8vIHRoaXMudGx4PTA7Ly/mnIDmlrDnmoR0cuS4i+mdoueahOi+uee6v+eahHjlgLxcclxuICAgICAgICAvLyB0aGlzLnRseT0wO1xyXG4gICAgICAgIHRoaXMueFByZT0wO1xyXG4gICAgICAgIHRoaXMueVByZT0wO1xyXG4gICAgICAgIHRoaXMudGRzPVtdO1xyXG4gICAgICAgIHRoaXMuY29scz0wO1xyXG4gICAgICAgIHRoaXMuaVdoaWNoPW51bGw7XHJcbiAgICAgICAgdGhpcy5yb3dJbmRleD0wO1xyXG4gICAgICAgIHRoaXMuaGF2ZUNlbGxTcGFuPVtdOy8v55So5p2l6K6w5b2V5ZCR5LiL55qE5Y2V5YWD5qC85ZCI5bm2XHJcbiAgICAgICAgdGhpcy5oYXZlQ2VsbFJpZ2h0U3Bhbj1bXTsvL+eUqOadpeiusOW9leWQkeWPs+eahOWNleWFg+agvOWQiOW5tlxyXG4gICAgfVxyXG4gICAgaW5pdCgpe1xyXG4gICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy5jb2xzO2krKyl7XHJcbiAgICAgICAgICAgIGxldCB0ZD1uZXcgVGRMYXlvdXQoKTtcclxuICAgICAgICAgICAgdGQuY29sSW5kZXg9aTtcclxuICAgICAgICAgICAgdGQucm93SW5kZXg9dGhpcy5yb3dJbmRleDtcclxuICAgICAgICAgICAgdGQud2lkdGg9dGhpcy53aWR0aC90aGlzLmNvbHM7XHJcbiAgICAgICAgICAgIHRkLmhlaWdodD10aGlzLmhlaWdodDtcclxuICAgICAgICAgICAgdGQueD10aGlzLngrKHRoaXMud2lkdGgvdGhpcy5jb2xzKSppO1xyXG4gICAgICAgICAgICB0ZC55PXRoaXMueTtcclxuICAgICAgICAgICAgdGhpcy50ZHMucHVzaCh0ZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcGFpbnQoKXtcclxuICAgICAgICBpZighdGhpcy5pZCkge1xyXG5cdFx0XHR0aGlzLmlkID0gU2VxdWVuY2UuY3JlYXRlVXVpZCgpO1xyXG5cdFx0fVxyXG4gICAgICAgIC8vY29uc29sZS5sb2cocGFuZWwpO1xyXG4gICAgICAgIGxldCBoPWA8dHIgYCtcclxuICAgICAgICBcclxuICAgICAgICBgaGVpZ2h0PVwiYCtcclxuICAgICAgICB0aGlzLmhlaWdodCtcclxuICAgICAgICBgXCJgK1xyXG4gICAgICAgIGB3aWR0aD1cImArXHJcbiAgICAgICAgdGhpcy53aWR0aCtcclxuICAgICAgICBgXCI+YDtcclxuICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMudGRzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBpZighdGhpcy50ZHNbaV0uaGlkZSl7XHJcbiAgICAgICAgICAgICAgICBoICs9IHRoaXMudGRzW2ldLnBhaW50KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGggKz0gYDwvdHI+YFxyXG4gICAgICAgIHJldHVybiBoO1xyXG4gICAgfVxyXG4gICAgcGFyc2VIdG1sKGh0bWwpe1xyXG4gICAgICAgIGxldCB0aGF0PXRoaXM7XHJcbiAgICAgICAgbGV0IHkgPSB0aGlzLnk7XHJcbiAgICAgICAgbGV0IHggPSB0aGlzLng7XHJcbiAgICAgICAgbGV0IHJvd0luZGV4ID0gdGhpcy5yb3dJbmRleDtcclxuICAgICAgICBsZXQgY29sSW5kZXggPSAwO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCByb290PSQoaHRtbClbMF07XHJcbiAgICAgICAgY29uc3QgdHJhdmVyc2FsTm9kZSA9IChodG1sTm9kZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7dGFnTmFtZX09aHRtbE5vZGU7XHJcbiAgICAgICAgICAgIHN3aXRjaCh0YWdOYW1lKXtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ1REJzpcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGRMYXlvdXQgPSBuZXcgVGRMYXlvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyB0ZExheW91dC53aWR0aD1wYXJzZUludChodG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwid2lkdGhcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRkTGF5b3V0LmhlaWdodD1wYXJzZUludChodG1sTm9kZTIuZ2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyB0ZExheW91dC5wYXJlbnQ9dGhhdDtcclxuICAgICAgICAgICAgICAgICAgICB0ZExheW91dC53aWR0aD1wYXJzZUludChodG1sTm9kZS5nZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGRMYXlvdXQuaGVpZ2h0PXBhcnNlSW50KGh0bWxOb2RlLmdldEF0dHJpYnV0ZShcImhlaWdodFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGRMYXlvdXQuY29sc3Bhbj1wYXJzZUludChodG1sTm9kZS5nZXRBdHRyaWJ1dGUoXCJjb2xzcGFuXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICB0ZExheW91dC5yb3dzcGFuPXBhcnNlSW50KGh0bWxOb2RlLmdldEF0dHJpYnV0ZShcInJvd3NwYW5cIikpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0ZExheW91dC54PXg7XHJcbiAgICAgICAgICAgICAgICAgICAgeCs9dGRMYXlvdXQud2lkdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgdGRMYXlvdXQueT15O1xyXG4gICAgICAgICAgICAgICAgICAgIHRkTGF5b3V0LnJvd0luZGV4PXJvd0luZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIHRkTGF5b3V0LmNvbEluZGV4PWNvbEluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbEluZGV4Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgdGRMYXlvdXQucGFyc2VIdG1sKGh0bWxOb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGF0LnRkcy5wdXNoKHRkTGF5b3V0KTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIm5vXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihyb290Lmhhc0NoaWxkTm9kZXMoKSkge1xyXG4gICAgICAgICAgICBsZXQgc3R5bGU9cm9vdC5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKTtcclxuICAgICAgICAgICAgLy8gbGV0IG9iaj17fTtcclxuICAgICAgICAgICAgLy8gZG97XHJcbiAgICAgICAgICAgIC8vICAgICBsZXQgaT1zdHlsZS5pbmRleE9mKFwiOlwiKTtcclxuICAgICAgICAgICAgLy8gICAgIGxldCBrZXkgPSBzdHlsZS5zbGljZSgwLGkpO1xyXG4gICAgICAgICAgICAvLyAgICAgc3R5bGU9c3R5bGUuc2xpY2UoaSsxKTtcclxuXHJcbiAgICAgICAgICAgIC8vICAgICBsZXQgaj1zdHlsZS5pbmRleE9mKFwiO1wiKTtcclxuICAgICAgICAgICAgLy8gICAgIGxldCB2YWw9c3R5bGUuc2xpY2UoMCxqKTtcclxuICAgICAgICAgICAgLy8gICAgIHN0eWxlPXN0eWxlLnNsaWNlKGorMSk7XHJcblxyXG4gICAgICAgICAgICAvLyAgICAgb2JqW2tleV09cGFyc2VGbG9hdCh2YWwpO1xyXG5cclxuICAgICAgICAgICAgLy8gfXdoaWxlKHN0eWxlLmxlbmd0aCE9MCk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuc2V0UHJvcHMob2JqKTtcclxuICAgICAgICAgICAgdGhpcy5jb2xzPXJvb3QuY2hpbGRyZW4ubGVuZ3RoO1xyXG5cclxuICAgICAgICAgICAgZm9yKGxldCBqID0gMDtqIDwgcm9vdC5jaGlsZHJlbi5sZW5ndGg7aisrKSB7XHJcbiAgICAgICAgICAgICAgICB0cmF2ZXJzYWxOb2RlKHJvb3QuY2hpbGRyZW5bal0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmVzZXRUZExheW91dChtb3ZlWSl7XHJcbiAgICAgICAgdGhpcy50ZHMuZm9yRWFjaCgoZWxtKT0+e1xyXG4gICAgICAgICAgICBlbG0ueSA9IHRoaXMueTtcclxuICAgICAgICAgICAgZWxtLmhlaWdodCArPW1vdmVZO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBnZXROb2RlQ29uZmlnSW5mbygpe1xyXG4gICAgICAgIGxldCBub2RlID0ge307XHJcblx0XHRub2RlLnRleHQgPSB0aGlzLnRleHQ7XHJcblx0XHRub2RlLmljb24gPSAnZ2x5cGhpY29uIGdseXBoaWNvbi1wZW5jaWwnO1xyXG5cdFx0bm9kZS51dWlkID0gdGhpcy5nZXRQcm9wKCdpZCcpO1x0XHJcblx0XHRub2RlLmluc3RhbmNlID0gdGhpcztcclxuXHRcdHJldHVybiBub2RlO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IFRyTGF5b3V0O1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9MYXlvdXQvVHJMYXlvdXQuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF4QkE7QUEwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///96\n");

/***/ }),
/* 97 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Input = function (_Element) {\n  _inherits(Input, _Element);\n\n  function Input() {\n    _classCallCheck(this, Input);\n\n    var _this = _possibleConstructorReturn(this, (Input.__proto__ || Object.getPrototypeOf(Input)).call(this));\n\n    _this.width = 170;\n    _this.height = 30;\n    _this.name = \"\"; //鍞竴鏍囪瘑\n    _this.text = \"input\";\n    _this.cursor = \"default\";\n    _this.scope = \"input\";\n    _this.id = _utility.Sequence.createUuid();\n    _this.belongId = \"\";\n    _this.preX = 0;\n    _this.preY = 0;\n    _this.moveX = 0;\n    _this.moveY = 0;\n    _this.fieldtype = \"VALUE_TYPE_VARCHAR\"; //绫诲瀷\n    _this.fieldkeyevent = \"Tabkey\"; //鐒︾偣鍒囨崲\n    _this.value = \"鍗曡鏂囨湰妗哱"; //鍊糪n    _this.numberpattern = \"\"; //鏍煎紡\n    _this.texttype = \"text\"; //鏄剧ず\n    _this.isdefaultvalue = \"false\"; //鏄惁鏄粯璁ゅ€糪n    _this.readonlyshowvalonly = \"true\"; //鍙鏃朵粎鍙樉绀哄€糪n    _this.refreshonchanged = \"false\"; //鍒锋柊\n    _this.calculateonrefresh = \"false\"; //鍐茶绠梊n    _this.editmode = 0; //鍊肩殑鏂瑰紡\n    _this.valuescript = \"\"; //鑴氭湰鍊糪n    _this.mobile = \"false\"; //鎵嬫満鍙敤\n    _this.discript = \"\"; //鎻忚堪\n    _this.refreshmode = 0; //鍐插埛鏂扮殑鏂瑰紡\n\n    _this.validatelibs = \"core.dynaform.form.formfield.validate.checkPhone_system\"; //鏍¢獙鏂瑰紡\n    _this.validaterule = \"\"; //鏍¢獙鑴氭湰\n    _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n    _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n    _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n    _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n    _this.readonlyscript = \"\"; //鍙鏉′欢鑴氭湰\n    _this.processdescription = \"\"; //鍊艰璁¤剼鏈殑鍊糪n    _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n\n    _this.smallwidth = 100;\n    _this.instantvalidate = \"false\"; //鍗虫椂鏍¢獙锛堟柊澧炲睘鎬э級\n    return _this;\n  }\n\n  _createClass(Input, [{\n    key: \"toHtml\",\n    value: function toHtml() {}\n  }, {\n    key: \"paint\",\n    value: function paint() {\n      // if(this.x==0&&this.y==0){\n      //     this.x=this.left;\n      //     this.y=this.top;\n      // }else{\n      //     this.left=this.x;\n      //     this.top=this.y;\n      // }\n      //console.log(panel);\n\n      var h = \"\";\n      if (this.isblock == \"true\") {\n        h = \"<div class=\\\"block\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\" style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      } else {\n        h = \"<div class=\\\"inlineBlock\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\"style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      }\n      if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n        h += \"<f-label style=\\\"line-height:\" + this.height + \"px;\\\">\" + this.labelvalue + \"</f-label>\";\n      }\n      h += \"<f-input type=\\\"text\\\" nodeid=\\\"\" + this.id + \"\\\" class=\\\"inlineBlock\\\" minwidth=\\\"\" + this.width + \"\\\" style=\\\"border:1px solid #ccc;min-width:\" + this.smallwidth + \"px;min-height:\" + this.height + \"px;\";\n      if (this.zIndex) {\n        h += \"z-index:\" + this.zIndex + \";\";\n      }\n      h += \"\\\" name=\\\"\" + this.name + \"\\\" isshowlabel=\\\"\" + this.isshowlabel + \"\\\" labelvalue=\\\"\" + this.labelvalue + \"\\\"  \\n            fieldtype=\\\"\" + this.fieldtype + \"\\\" fieldkeyevent=\\\"\" + this.fieldkeyevent + \"\\\" texttype=\\\"\" + this.texttype + \"\\\"\\n            numberpattern=\\\"\" + this.numberpattern + \"\\\"  instantvalidate=\\\"\" + this.instantvalidate + \"\\\"\\n             readonlyshowvalonly=\\\"\" + this.readonlyshowvalonly + \"\\\" \\n            isdefaultvalue=\\\"\" + this.isdefaultvalue + \"\\\" refreshonchanged=\\\"\" + this.refreshonchanged + \"\\\" \\n            calculateonrefresh=\\\"\" + this.calculateonrefresh + \"\\\" mobile=\\\"\" + this.mobile + \"\\\" discript=\\\"\" + this.discript + \"\\\"\\n            refreshmode=\\\"\" + this.refreshmode + \"\\\" validatelibs=\\\"\" + this.validatelibs + \"\\\" \\n            validaterule=\\\"\" + this.validaterule + \"\\\"\\n            hiddenscript=\\\"\" + this.hiddenscript + \"\\\" hiddenvalue=\\\"\" + this.hiddenvalue + \"\\\" \\n            hiddenprintscript=\\\"\" + this.hiddenprintscript + \"\\\" \\n            printhiddenvalue=\\\"\" + this.printhiddenvalue + \"\\\" readonlyscript=\\\"\" + this.readonlyscript + \"\\\"\\n            processdescription=\\\"\" + this.processprevalue + \"[\" + this.processdescription + \"]\\\"\\n            editmode=\\\"\" + this.editmode + \"\\\" valuescript=\\\"\" + this.valuescript + \"\\\"\";\n\n      h += \"refreshfields=\\\"\";\n\n      // processdescription=\"${this.processdescription}\"\n      if (this.refreshfields.length > 0) {\n        for (var i = 0; i < this.refreshfields.length; i++) {\n          h += this.refreshfields[i];\n          if (i != this.refreshfields.length - 1) {\n            h += \";\";\n          }\n        }\n      }\n\n      h += \"\\\"\" + \">\" + this.value + \"</f-input></div>\";\n      return h;\n    }\n  }, {\n    key: \"getNodeConfigInfo\",\n    value: function getNodeConfigInfo() {\n      var node = {};\n      node.text = this.text;\n      node.icon = \"glyphicon glyphicon-glass\";\n      node.uuid = this.getProp(\"id\");\n      node.instance = this;\n      return node;\n    }\n  }]);\n\n  return Input;\n}(_Element3.default);\n\nexports.default = Input;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2Zvcm0vY29tcG9uZW50L0lucHV0LmpzPzlkNWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVsZW1lbnQgZnJvbSBcIi4vRWxlbWVudFwiO1xyXG5pbXBvcnQgeyBTZXF1ZW5jZSB9IGZyb20gXCIuLi8uLi91dGlsaXR5XCI7XHJcbmNsYXNzIElucHV0IGV4dGVuZHMgRWxlbWVudCB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy53aWR0aCA9IDE3MDtcclxuICAgIHRoaXMuaGVpZ2h0ID0gMzA7XHJcbiAgICB0aGlzLm5hbWUgPSBcIlwiOyAvL+WUr+S4gOagh+ivhlxyXG4gICAgdGhpcy50ZXh0ID0gXCJpbnB1dFwiO1xyXG4gICAgdGhpcy5jdXJzb3IgPSBcImRlZmF1bHRcIjtcclxuICAgIHRoaXMuc2NvcGUgPSBcImlucHV0XCI7XHJcbiAgICB0aGlzLmlkID0gU2VxdWVuY2UuY3JlYXRlVXVpZCgpO1xyXG4gICAgdGhpcy5iZWxvbmdJZCA9IFwiXCI7XHJcbiAgICB0aGlzLnByZVggPSAwO1xyXG4gICAgdGhpcy5wcmVZID0gMDtcclxuICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgdGhpcy5tb3ZlWSA9IDA7XHJcbiAgICB0aGlzLmZpZWxkdHlwZSA9IFwiVkFMVUVfVFlQRV9WQVJDSEFSXCI7IC8v57G75Z6LXHJcbiAgICB0aGlzLmZpZWxka2V5ZXZlbnQgPSBcIlRhYmtleVwiOyAvL+eEpueCueWIh+aNolxyXG4gICAgdGhpcy52YWx1ZSA9IFwi5Y2V6KGM5paH5pys5qGGXCI7IC8v5YC8XHJcbiAgICB0aGlzLm51bWJlcnBhdHRlcm4gPSBcIlwiOyAvL+agvOW8j1xyXG4gICAgdGhpcy50ZXh0dHlwZSA9IFwidGV4dFwiOyAvL+aYvuekulxyXG4gICAgdGhpcy5pc2RlZmF1bHR2YWx1ZSA9IFwiZmFsc2VcIjsgLy/mmK/lkKbmmK/pu5jorqTlgLxcclxuICAgIHRoaXMucmVhZG9ubHlzaG93dmFsb25seSA9IFwidHJ1ZVwiOyAvL+WPquivu+aXtuS7heWPquaYvuekuuWAvFxyXG4gICAgdGhpcy5yZWZyZXNob25jaGFuZ2VkID0gXCJmYWxzZVwiOyAvL+WIt+aWsFxyXG4gICAgdGhpcy5jYWxjdWxhdGVvbnJlZnJlc2ggPSBcImZhbHNlXCI7IC8v5Yay6K6h566XXHJcbiAgICB0aGlzLmVkaXRtb2RlID0gMDsgLy/lgLznmoTmlrnlvI9cclxuICAgIHRoaXMudmFsdWVzY3JpcHQgPSBcIlwiOyAvL+iEmuacrOWAvFxyXG4gICAgdGhpcy5tb2JpbGUgPSBcImZhbHNlXCI7IC8v5omL5py65Y+v55SoXHJcbiAgICB0aGlzLmRpc2NyaXB0ID0gXCJcIjsgLy/mj4/ov7BcclxuICAgIHRoaXMucmVmcmVzaG1vZGUgPSAwOyAvL+WGsuWIt+aWsOeahOaWueW8j1xyXG5cclxuICAgIHRoaXMudmFsaWRhdGVsaWJzID1cclxuICAgICAgXCJjb3JlLmR5bmFmb3JtLmZvcm0uZm9ybWZpZWxkLnZhbGlkYXRlLmNoZWNrUGhvbmVfc3lzdGVtXCI7IC8v5qCh6aqM5pa55byPXHJcbiAgICB0aGlzLnZhbGlkYXRlcnVsZSA9IFwiXCI7IC8v5qCh6aqM6ISa5pysXHJcbiAgICB0aGlzLmhpZGRlbnNjcmlwdCA9IFwiXCI7IC8v6ZqQ6JeP5p2h5Lu26ISa5pysXHJcbiAgICB0aGlzLmhpZGRlbnZhbHVlID0gXCJcIjsgLy/pmpDol4/ml7bmmL7npLrlgLxcclxuICAgIHRoaXMuaGlkZGVucHJpbnRzY3JpcHQgPSBcIlwiOyAvL+aJk+WNsOaXtumakOiXj+adoeS7tuiEmuacrFxyXG4gICAgdGhpcy5wcmludGhpZGRlbnZhbHVlID0gXCJcIjsgLy/miZPljbDpmpDol4/ml7bmmL7npLrlgLxcclxuICAgIHRoaXMucmVhZG9ubHlzY3JpcHQgPSBcIlwiOyAvL+WPquivu+adoeS7tuiEmuacrFxyXG4gICAgdGhpcy5wcm9jZXNzZGVzY3JpcHRpb24gPSBcIlwiOyAvL+WAvOiuvuiuoeiEmuacrOeahOWAvFxyXG4gICAgdGhpcy5yZWZyZXNoZmllbGRzID0gW107IC8v5bGA6YOo5Yi35paw55qE5a2X5q6157uE5ZCIXHJcblxyXG4gICAgdGhpcy5zbWFsbHdpZHRoID0gMTAwO1xyXG4gICAgdGhpcy5pbnN0YW50dmFsaWRhdGUgPSBcImZhbHNlXCI7IC8v5Y2z5pe25qCh6aqM77yI5paw5aKe5bGe5oCn77yJXHJcbiAgfVxyXG4gIHRvSHRtbCgpIHt9XHJcblxyXG4gIHBhaW50KCkge1xyXG4gICAgLy8gaWYodGhpcy54PT0wJiZ0aGlzLnk9PTApe1xyXG4gICAgLy8gICAgIHRoaXMueD10aGlzLmxlZnQ7XHJcbiAgICAvLyAgICAgdGhpcy55PXRoaXMudG9wO1xyXG4gICAgLy8gfWVsc2V7XHJcbiAgICAvLyAgICAgdGhpcy5sZWZ0PXRoaXMueDtcclxuICAgIC8vICAgICB0aGlzLnRvcD10aGlzLnk7XHJcbiAgICAvLyB9XHJcbiAgICAvL2NvbnNvbGUubG9nKHBhbmVsKTtcclxuXHJcbiAgICBsZXQgaCA9IFwiXCI7XHJcbiAgICBpZiAodGhpcy5pc2Jsb2NrID09IFwidHJ1ZVwiKSB7XHJcbiAgICAgIGggPSBgPGRpdiBjbGFzcz1cImJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIHN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGggPSBgPGRpdiBjbGFzcz1cImlubGluZUJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwic3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNzaG93bGFiZWwgPT0gXCJ0cnVlXCIgfHwgdGhpcy5pc3Nob3dsYWJlbCA9PSB0cnVlKSB7XHJcbiAgICAgIGggKz0gYDxmLWxhYmVsIHN0eWxlPVwibGluZS1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj4ke3RoaXMubGFiZWx2YWx1ZX08L2YtbGFiZWw+YDtcclxuICAgIH1cclxuICAgIGggKz0gYDxmLWlucHV0IHR5cGU9XCJ0ZXh0XCIgbm9kZWlkPVwiJHt0aGlzLmlkfVwiIGNsYXNzPVwiaW5saW5lQmxvY2tcIiBtaW53aWR0aD1cIiR7dGhpcy53aWR0aH1cIiBzdHlsZT1cImJvcmRlcjoxcHggc29saWQgI2NjYzttaW4td2lkdGg6JHt0aGlzLnNtYWxsd2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O2A7XHJcbiAgICBpZiAodGhpcy56SW5kZXgpIHtcclxuICAgICAgaCArPSBgei1pbmRleDpgICsgdGhpcy56SW5kZXggKyBgO2A7XHJcbiAgICB9XHJcbiAgICBoICs9IGBcIiBuYW1lPVwiJHt0aGlzLm5hbWV9XCIgaXNzaG93bGFiZWw9XCIke3RoaXMuaXNzaG93bGFiZWx9XCIgbGFiZWx2YWx1ZT1cIiR7dGhpcy5sYWJlbHZhbHVlfVwiICBcclxuICAgICAgICAgICAgZmllbGR0eXBlPVwiJHt0aGlzLmZpZWxkdHlwZX1cIiBmaWVsZGtleWV2ZW50PVwiJHt0aGlzLmZpZWxka2V5ZXZlbnR9XCIgdGV4dHR5cGU9XCIke3RoaXMudGV4dHR5cGV9XCJcclxuICAgICAgICAgICAgbnVtYmVycGF0dGVybj1cIiR7dGhpcy5udW1iZXJwYXR0ZXJufVwiICBpbnN0YW50dmFsaWRhdGU9XCIke3RoaXMuaW5zdGFudHZhbGlkYXRlfVwiXHJcbiAgICAgICAgICAgICByZWFkb25seXNob3d2YWxvbmx5PVwiJHt0aGlzLnJlYWRvbmx5c2hvd3ZhbG9ubHl9XCIgXHJcbiAgICAgICAgICAgIGlzZGVmYXVsdHZhbHVlPVwiJHt0aGlzLmlzZGVmYXVsdHZhbHVlfVwiIHJlZnJlc2hvbmNoYW5nZWQ9XCIke3RoaXMucmVmcmVzaG9uY2hhbmdlZH1cIiBcclxuICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoPVwiJHt0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaH1cIiBtb2JpbGU9XCIke3RoaXMubW9iaWxlfVwiIGRpc2NyaXB0PVwiJHt0aGlzLmRpc2NyaXB0fVwiXHJcbiAgICAgICAgICAgIHJlZnJlc2htb2RlPVwiJHt0aGlzLnJlZnJlc2htb2RlfVwiIHZhbGlkYXRlbGlicz1cIiR7dGhpcy52YWxpZGF0ZWxpYnN9XCIgXHJcbiAgICAgICAgICAgIHZhbGlkYXRlcnVsZT1cIiR7dGhpcy52YWxpZGF0ZXJ1bGV9XCJcclxuICAgICAgICAgICAgaGlkZGVuc2NyaXB0PVwiJHt0aGlzLmhpZGRlbnNjcmlwdH1cIiBoaWRkZW52YWx1ZT1cIiR7dGhpcy5oaWRkZW52YWx1ZX1cIiBcclxuICAgICAgICAgICAgaGlkZGVucHJpbnRzY3JpcHQ9XCIke3RoaXMuaGlkZGVucHJpbnRzY3JpcHR9XCIgXHJcbiAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU9XCIke3RoaXMucHJpbnRoaWRkZW52YWx1ZX1cIiByZWFkb25seXNjcmlwdD1cIiR7dGhpcy5yZWFkb25seXNjcmlwdH1cIlxyXG4gICAgICAgICAgICBwcm9jZXNzZGVzY3JpcHRpb249XCIke3RoaXMucHJvY2Vzc3ByZXZhbHVlfVske3RoaXMucHJvY2Vzc2Rlc2NyaXB0aW9ufV1cIlxyXG4gICAgICAgICAgICBlZGl0bW9kZT1cIiR7dGhpcy5lZGl0bW9kZX1cIiB2YWx1ZXNjcmlwdD1cIiR7dGhpcy52YWx1ZXNjcmlwdH1cImA7XHJcblxyXG4gICAgaCArPSBgcmVmcmVzaGZpZWxkcz1cImA7XHJcblxyXG4gICAgLy8gcHJvY2Vzc2Rlc2NyaXB0aW9uPVwiJHt0aGlzLnByb2Nlc3NkZXNjcmlwdGlvbn1cIlxyXG4gICAgaWYgKHRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaCArPSB0aGlzLnJlZnJlc2hmaWVsZHNbaV07XHJcbiAgICAgICAgaWYgKGkgIT0gdGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgIGggKz0gXCI7XCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaCArPSBgXCJgICsgYD5gICsgdGhpcy52YWx1ZSArIGA8L2YtaW5wdXQ+PC9kaXY+YDtcclxuICAgIHJldHVybiBoO1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm9kZUNvbmZpZ0luZm8oKSB7XHJcbiAgICBsZXQgbm9kZSA9IHt9O1xyXG4gICAgbm9kZS50ZXh0ID0gdGhpcy50ZXh0O1xyXG4gICAgbm9kZS5pY29uID0gXCJnbHlwaGljb24gZ2x5cGhpY29uLWdsYXNzXCI7XHJcbiAgICBub2RlLnV1aWQgPSB0aGlzLmdldFByb3AoXCJpZFwiKTtcclxuICAgIG5vZGUuaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgcmV0dXJuIG5vZGU7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IElucHV0O1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2Zvcm0vY29tcG9uZW50L0lucHV0LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7OztBQUFBOzs7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBekNBO0FBMENBO0FBQ0E7OztBQUFBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQTFHQTtBQUNBO0FBMkdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///97\n");

/***/ }),
/* 98 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Textarea = function (_Element) {\n    _inherits(Textarea, _Element);\n\n    function Textarea() {\n        _classCallCheck(this, Textarea);\n\n        var _this = _possibleConstructorReturn(this, (Textarea.__proto__ || Object.getPrototypeOf(Textarea)).call(this));\n\n        _this.width = 270;\n        _this.height = 60;\n        _this.name = \"\"; //鍞竴鏍囪瘑\n        _this.text = \"Textarea\";\n        _this.cursor = \"default\";\n        _this.scope = \"textarea\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.belongId = \"\";\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n        _this.value = \"澶氳鏂囨湰妗哱";\n        _this.readonlyshowvalonly = \"true\";\n        _this.refreshonchanged = \"false\";\n        _this.calculateonrefresh = \"false\";\n        _this.isdefaultvalue = \"false\";\n        _this.editmode = 0;\n        _this.valuescript = ''; //鍊艰剼鏈琝n        _this.mobile = \"false\";\n        _this.discript = '';\n        _this.refreshmode = 0;\n\n        _this.validatelibs = \"core.dynaform.form.formfield.validate.checkPhone_system\";\n        _this.validaterule = \"\";\n        _this.hiddenscript = \"\";\n        _this.hiddenvalue = \"\";\n        _this.hiddenprintscript = \"\";\n        _this.printhiddenvalue = \"\";\n        _this.readonlyscript = \"\";\n        _this.processdescription = \"\"; //鍊艰璁¤剼鏈殑鍊糪n        _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n        _this.smallwidth = 100;\n        _this.instantvalidate = \"false\"; //鍗虫椂鏍¢獙锛堟柊澧炲睘鎬э級\n\n        return _this;\n    }\n\n    _createClass(Textarea, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            // let h=`<div class=\"inlineBlock\" id=\"${this.id}\" draggable=\"true\" style=\"min-width:${this.width}px;min-height:${this.height}px;\">`;\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-textarea nodeid=\"' + this.id + '\" class=\"inlineBlock\" minwidth=\"' + this.width + '\" style=\"border:1px solid #ccc;min-width:' + this.smallwidth + 'px;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\" name=\"' + this.name + '\" isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\" \\n            processdescription=\"' + this.processdescription + '\" readonlyshowvalonly=\"' + this.readonlyshowvalonly + '\"\\n            instantvalidate=\"' + this.instantvalidate + '\" \\n            isdefaultvalue=\"' + this.isdefaultvalue + '\" refreshonchanged=\"' + this.refreshonchanged + '\" \\n            calculateonrefresh=\"' + this.calculateonrefresh + '\" mobile=\"' + this.mobile + '\" discript=\"' + this.discript + '\"\\n            refreshmode=\"' + this.refreshmode + '\" validatelibs=\"' + this.validatelibs + '\" \\n            validaterule=\"' + this.validaterule + '\"\\n            hiddenscript=\"' + this.hiddenscript + '\" hiddenvalue=\"' + this.hiddenvalue + '\" \\n            hiddenprintscript=\"' + this.hiddenprintscript + '\" \\n            printhiddenvalue=\"' + this.printhiddenvalue + '\" readonlyscript=\"' + this.readonlyscript + '\" \\n            editmode=\"' + this.editmode + '\" valuescript=\"' + this.valuescript + '\"';\n\n            h += 'refreshfields=\"';\n            if (this.refreshfields.length > 0) {\n                for (var i = 0; i < this.refreshfields.length; i++) {\n                    h += this.refreshfields[i];\n                    if (i != this.refreshfields.length - 1) {\n                        h += \";\";\n                    }\n                }\n            }\n            h += '\"' + '>' + this.value + '</f-textarea></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n    }, {\n        key: 'isOnBaseLine',\n        value: function isOnBaseLine(x, y) {\n            if (this.x + this.width - 5 < x && this.x + this.width + 5 > x && this.y + this.height - 5 < y && this.y + this.height + 5 > y) {\n                return this;\n            }\n            return false;\n        }\n    }]);\n\n    return Textarea;\n}(_Element3.default);\n\nexports.default = Textarea;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2Zvcm0vY29tcG9uZW50L1RleHRhcmVhLmpzP2MwZDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVsZW1lbnQgZnJvbSAnLi9FbGVtZW50JztcclxuaW1wb3J0IHtTZXF1ZW5jZX0gZnJvbSAnLi4vLi4vdXRpbGl0eSc7XHJcbmNsYXNzIFRleHRhcmVhIGV4dGVuZHMgRWxlbWVudHtcclxuICAgIGNvbnN0cnVjdG9yKCl7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLndpZHRoPTI3MDtcclxuICAgICAgICB0aGlzLmhlaWdodD02MDtcclxuICAgICAgICB0aGlzLm5hbWU9XCJcIjsvL+WUr+S4gOagh+ivhlxyXG4gICAgICAgIHRoaXMudGV4dD1cIlRleHRhcmVhXCI7XHJcbiAgICAgICAgdGhpcy5jdXJzb3I9XCJkZWZhdWx0XCI7XHJcbiAgICAgICAgdGhpcy5zY29wZT1cInRleHRhcmVhXCI7XHJcbiAgICAgICAgdGhpcy5pZCA9IFNlcXVlbmNlLmNyZWF0ZVV1aWQoKTtcclxuICAgICAgICB0aGlzLmJlbG9uZ0lkPVwiXCI7XHJcbiAgICAgICAgdGhpcy5wcmVYPTA7XHJcbiAgICAgICAgdGhpcy5wcmVZPTA7XHJcbiAgICAgICAgdGhpcy5tb3ZlWD0wO1xyXG4gICAgICAgIHRoaXMubW92ZVk9MDtcclxuICAgICAgICB0aGlzLnZhbHVlPVwi5aSa6KGM5paH5pys5qGGXCI7XHJcbiAgICAgICAgdGhpcy5yZWFkb25seXNob3d2YWxvbmx5PVwidHJ1ZVwiO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaG9uY2hhbmdlZD1cImZhbHNlXCI7XHJcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVvbnJlZnJlc2g9XCJmYWxzZVwiO1xyXG4gICAgICAgIHRoaXMuaXNkZWZhdWx0dmFsdWU9XCJmYWxzZVwiO1xyXG4gICAgICAgIHRoaXMuZWRpdG1vZGU9MDtcclxuICAgICAgICB0aGlzLnZhbHVlc2NyaXB0PScnOy8v5YC86ISa5pysXHJcbiAgICAgICAgdGhpcy5tb2JpbGU9XCJmYWxzZVwiO1xyXG4gICAgICAgIHRoaXMuZGlzY3JpcHQ9Jyc7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNobW9kZT0wO1xyXG5cclxuICAgICAgICB0aGlzLnZhbGlkYXRlbGlicz1cImNvcmUuZHluYWZvcm0uZm9ybS5mb3JtZmllbGQudmFsaWRhdGUuY2hlY2tQaG9uZV9zeXN0ZW1cIjtcclxuICAgICAgICB0aGlzLnZhbGlkYXRlcnVsZT1cIlwiO1xyXG4gICAgICAgIHRoaXMuaGlkZGVuc2NyaXB0PVwiXCI7XHJcbiAgICAgICAgdGhpcy5oaWRkZW52YWx1ZT1cIlwiO1xyXG4gICAgICAgIHRoaXMuaGlkZGVucHJpbnRzY3JpcHQ9XCJcIjtcclxuICAgICAgICB0aGlzLnByaW50aGlkZGVudmFsdWU9XCJcIjtcclxuICAgICAgICB0aGlzLnJlYWRvbmx5c2NyaXB0PVwiXCI7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzZGVzY3JpcHRpb249XCJcIjsvL+WAvOiuvuiuoeiEmuacrOeahOWAvFxyXG4gICAgICAgIHRoaXMucmVmcmVzaGZpZWxkcz1bXTsvL+WxgOmDqOWIt+aWsOeahOWtl+autee7hOWQiFxyXG4gICAgICAgIHRoaXMuc21hbGx3aWR0aD0xMDA7XHJcbiAgICAgICAgdGhpcy5pbnN0YW50dmFsaWRhdGU9XCJmYWxzZVwiLy/ljbPml7bmoKHpqozvvIjmlrDlop7lsZ7mgKfvvIlcclxuXHJcbiAgICB9XHJcbiAgICB0b0h0bWwoKXt9XHJcbiAgICBcclxuICAgIHBhaW50KCl7XHJcbiAgICAgICAgbGV0IGg9XCJcIjtcclxuICAgICAgICBpZih0aGlzLmlzYmxvY2s9PVwidHJ1ZVwiKXtcclxuICAgICAgICAgICAgaD1gPGRpdiBjbGFzcz1cImJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIHN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGg9YDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGxldCBoPWA8ZGl2IGNsYXNzPVwiaW5saW5lQmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgc3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgIGlmKHRoaXMuaXNzaG93bGFiZWw9PVwidHJ1ZVwiIHx8IHRoaXMuaXNzaG93bGFiZWw9PXRydWUpe1xyXG4gICAgICAgICAgICBoKz1gPGYtbGFiZWwgc3R5bGU9XCJsaW5lLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPiR7dGhpcy5sYWJlbHZhbHVlfTwvZi1sYWJlbD5gXHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICBoKz1gPGYtdGV4dGFyZWEgbm9kZWlkPVwiJHt0aGlzLmlkfVwiIGNsYXNzPVwiaW5saW5lQmxvY2tcIiBtaW53aWR0aD1cIiR7dGhpcy53aWR0aH1cIiBzdHlsZT1cImJvcmRlcjoxcHggc29saWQgI2NjYzttaW4td2lkdGg6JHt0aGlzLnNtYWxsd2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O2BcclxuICAgICAgICAgICAgaWYodGhpcy56SW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgaCs9YHotaW5kZXg6YCt0aGlzLnpJbmRleCtgO2A7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaCs9YFwiIG5hbWU9XCIke3RoaXMubmFtZX1cIiBpc3Nob3dsYWJlbD1cIiR7dGhpcy5pc3Nob3dsYWJlbH1cIiBsYWJlbHZhbHVlPVwiJHt0aGlzLmxhYmVsdmFsdWV9XCIgXHJcbiAgICAgICAgICAgIHByb2Nlc3NkZXNjcmlwdGlvbj1cIiR7dGhpcy5wcm9jZXNzZGVzY3JpcHRpb259XCIgcmVhZG9ubHlzaG93dmFsb25seT1cIiR7dGhpcy5yZWFkb25seXNob3d2YWxvbmx5fVwiXHJcbiAgICAgICAgICAgIGluc3RhbnR2YWxpZGF0ZT1cIiR7dGhpcy5pbnN0YW50dmFsaWRhdGV9XCIgXHJcbiAgICAgICAgICAgIGlzZGVmYXVsdHZhbHVlPVwiJHt0aGlzLmlzZGVmYXVsdHZhbHVlfVwiIHJlZnJlc2hvbmNoYW5nZWQ9XCIke3RoaXMucmVmcmVzaG9uY2hhbmdlZH1cIiBcclxuICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoPVwiJHt0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaH1cIiBtb2JpbGU9XCIke3RoaXMubW9iaWxlfVwiIGRpc2NyaXB0PVwiJHt0aGlzLmRpc2NyaXB0fVwiXHJcbiAgICAgICAgICAgIHJlZnJlc2htb2RlPVwiJHt0aGlzLnJlZnJlc2htb2RlfVwiIHZhbGlkYXRlbGlicz1cIiR7dGhpcy52YWxpZGF0ZWxpYnN9XCIgXHJcbiAgICAgICAgICAgIHZhbGlkYXRlcnVsZT1cIiR7dGhpcy52YWxpZGF0ZXJ1bGV9XCJcclxuICAgICAgICAgICAgaGlkZGVuc2NyaXB0PVwiJHt0aGlzLmhpZGRlbnNjcmlwdH1cIiBoaWRkZW52YWx1ZT1cIiR7dGhpcy5oaWRkZW52YWx1ZX1cIiBcclxuICAgICAgICAgICAgaGlkZGVucHJpbnRzY3JpcHQ9XCIke3RoaXMuaGlkZGVucHJpbnRzY3JpcHR9XCIgXHJcbiAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU9XCIke3RoaXMucHJpbnRoaWRkZW52YWx1ZX1cIiByZWFkb25seXNjcmlwdD1cIiR7dGhpcy5yZWFkb25seXNjcmlwdH1cIiBcclxuICAgICAgICAgICAgZWRpdG1vZGU9XCIke3RoaXMuZWRpdG1vZGV9XCIgdmFsdWVzY3JpcHQ9XCIke3RoaXMudmFsdWVzY3JpcHR9XCJgO1xyXG4gICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgaCs9YHJlZnJlc2hmaWVsZHM9XCJgO1xyXG4gICAgICAgICAgICBpZih0aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaCs9dGhpcy5yZWZyZXNoZmllbGRzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGkhPXRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGgtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGgrPVwiO1wiO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBoKz1gXCJgK1xyXG5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGA+YCtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZStcclxuICAgICAgICAgICAgYDwvZi10ZXh0YXJlYT48L2Rpdj5gXHJcbiAgICAgICAgcmV0dXJuIGg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGdldE5vZGVDb25maWdJbmZvKCl7XHJcbiAgICAgICAgbGV0IG5vZGUgPSB7fTtcclxuXHRcdG5vZGUudGV4dCA9IHRoaXMudGV4dDtcclxuXHRcdG5vZGUuaWNvbiA9ICdnbHlwaGljb24gZ2x5cGhpY29uLWdsYXNzJztcclxuXHRcdG5vZGUudXVpZCA9IHRoaXMuZ2V0UHJvcCgnaWQnKTtcdFxyXG5cdFx0bm9kZS5pbnN0YW5jZSA9IHRoaXM7XHJcblx0XHRyZXR1cm4gbm9kZTtcclxuICAgIH1cclxuICAgIGlzT25CYXNlTGluZSh4LHkpe1xyXG4gICAgICAgIGlmKHRoaXMueCt0aGlzLndpZHRoLTU8eCAmJiB0aGlzLngrdGhpcy53aWR0aCs1PnggJiYgdGhpcy55K3RoaXMuaGVpZ2h0LTU8eSAmJiB0aGlzLnkrdGhpcy5oZWlnaHQrNT55KXtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICB9XHJcblxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IFRleHRhcmVhO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9jb21wb25lbnQvVGV4dGFyZWEuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7Ozs7Ozs7O0FBQUE7OztBQUNBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBcENBO0FBcUNBO0FBQ0E7OztBQUFBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7QUF0R0E7QUFDQTtBQXdHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///98\n");

/***/ }),
/* 99 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Radio = function (_Element) {\n    _inherits(Radio, _Element);\n\n    function Radio() {\n        _classCallCheck(this, Radio);\n\n        var _this = _possibleConstructorReturn(this, (Radio.__proto__ || Object.getPrototypeOf(Radio)).call(this));\n\n        _this.width = 170;\n        _this.height = 20;\n        _this.name = \"\"; //鍞竴鏍囪瘑\n        _this.text = \"Radio\";\n        _this.cursor = \"default\";\n        _this.scope = \"radio\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.belongId = \"\";\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n\n        _this.layout = \"horizontal\"; //甯冨眬\n\n        _this.value = \"鍗曢€夋\";\n        _this.texttype = \"text\";\n        _this.refreshonchanged = \"false\";\n        _this.calculateonrefresh = \"false\";\n        _this.isdefaultvalue = \"false\"; //鏄惁鏄粯璁ゅ€糪n\n        _this.editmode = 0;\n        _this.valuescript = '';\n        _this.mobile = \"false\";\n        _this.discript = '';\n        _this.refreshmode = 0;\n\n        _this.validatelibs = \"core.dynaform.form.formfield.validate.checkPhone_system\";\n        _this.validaterule = \"\"; //鏍¢獙鑴氭湰\n        _this.hiddenscript = \"\";\n        _this.hiddenvalue = \"\";\n        _this.hiddenprintscript = \"\";\n        _this.printhiddenvalue = \"\";\n        _this.readonlyscript = \"\";\n        _this.module = \"\"; //閫夐」-妯″潡\n        _this.dialogview = \"\"; //閫夐」-瑙嗗浘\n        _this.optionsvalue = \"\"; //閫夐」-鏄剧ず鍊糪n        _this.optionstext = \"\"; //閫夐」-鐪熷疄鍊糪n\n        _this.optionseditmode = \"00\"; //閫夐」璁捐杩樻槸鑴氭湰妯″紡鐨勫弬鏁癨n        _this.optionsscript = \"\"; //閫夐」鑴氭湰鐨勫€糪n        _this.processdescription = \"\"; //鍊艰璁¤剼鏈殑鍊糪n        _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n        _this.smallwidth = 100;\n        _this.instantvalidate = \"false\"; //鍗虫椂鏍¢獙锛堟柊澧炲睘鎬э級\n        return _this;\n    }\n\n    _createClass(Radio, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            // let h=`<div class=\"inlineBlock\" id=\"${this.id}\" draggable=\"true\" style=\"min-width:${this.width}px;min-height:${this.height}px;\">`;\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-input classname=\"cn.myapps.runtime.dynaform.form.ejb.RadioField\" type=\"radio\" nodeid=\"' + this.id + '\" class=\"inlineBlock\" minwidth=\"' + this.width + '\" style=\"border:1px solid #ccc;min-width:' + this.smallwidth + 'px;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\" name=\"' + this.name + '\" isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\" \\n            layout=\"' + this.layout + '\" texttype=\"' + this.texttype + '\"\\n            processdescription=\"' + this.processdescription + '\"  instantvalidate=\"' + this.instantvalidate + '\"\\n            isdefaultvalue=\"' + this.isdefaultvalue + '\" refreshonchanged=\"' + this.refreshonchanged + '\" \\n            calculateonrefresh=\"' + this.calculateonrefresh + '\" mobile=\"' + this.mobile + '\" discript=\"' + this.discript + '\"\\n            refreshmode=\"' + this.refreshmode + '\" validatelibs=\"' + this.validatelibs + '\" \\n            validaterule=\"' + this.validaterule + '\" hiddenscript=\"' + this.hiddenscript + '\" \\n            hiddenvalue=\"' + this.hiddenvalue + '\" hiddenprintscript=\"' + this.hiddenprintscript + '\" \\n            printhiddenvalue=\"' + this.printhiddenvalue + '\" readonlyscript=\"' + this.readonlyscript + '\" \\n            editmode=\"' + this.editmode + '\" module=\"' + this.module + '\"\\n            dialogview=\"' + this.dialogview + '\" optionseditmode=\"' + this.optionseditmode + '\"\\n            optionsvalue=\"' + this.optionsvalue + '\" optionstext=\"' + this.optionstext + '\"\\n            valuescript=\"' + this.valuescript + '\" optionsscript=\"' + this.optionsscript + '\" ';\n\n            h += 'refreshfields=\"';\n            if (this.refreshfields.length > 0) {\n                for (var i = 0; i < this.refreshfields.length; i++) {\n                    h += this.refreshfields[i];\n                    if (i != this.refreshfields.length - 1) {\n                        h += \";\";\n                    }\n                }\n            }\n            h += '\"' + '>' + this.value + '</f-input></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n    }]);\n\n    return Radio;\n}(_Element3.default);\n\nexports.default = Radio;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2Zvcm0vY29tcG9uZW50L1JhZGlvLmpzP2I5OTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVsZW1lbnQgZnJvbSAnLi9FbGVtZW50JztcclxuaW1wb3J0IHtTZXF1ZW5jZX0gZnJvbSAnLi4vLi4vdXRpbGl0eSc7XHJcbmNsYXNzIFJhZGlvIGV4dGVuZHMgRWxlbWVudHtcclxuICAgIGNvbnN0cnVjdG9yKCl7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLndpZHRoPTE3MDtcclxuICAgICAgICB0aGlzLmhlaWdodD0yMDtcclxuICAgICAgICB0aGlzLm5hbWU9XCJcIjsvL+WUr+S4gOagh+ivhlxyXG4gICAgICAgIHRoaXMudGV4dD1cIlJhZGlvXCI7XHJcbiAgICAgICAgdGhpcy5jdXJzb3I9XCJkZWZhdWx0XCI7XHJcbiAgICAgICAgdGhpcy5zY29wZT1cInJhZGlvXCI7XHJcbiAgICAgICAgdGhpcy5pZCA9IFNlcXVlbmNlLmNyZWF0ZVV1aWQoKTtcclxuICAgICAgICB0aGlzLmJlbG9uZ0lkPVwiXCI7XHJcbiAgICAgICAgdGhpcy5wcmVYPTA7XHJcbiAgICAgICAgdGhpcy5wcmVZPTA7XHJcbiAgICAgICAgdGhpcy5tb3ZlWD0wO1xyXG4gICAgICAgIHRoaXMubW92ZVk9MDtcclxuXHJcbiAgICAgICAgdGhpcy5sYXlvdXQ9XCJob3Jpem9udGFsXCI7Ly/luIPlsYBcclxuXHJcbiAgICAgICAgdGhpcy52YWx1ZT1cIuWNlemAieahhlwiO1xyXG4gICAgICAgIHRoaXMudGV4dHR5cGU9XCJ0ZXh0XCI7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNob25jaGFuZ2VkPVwiZmFsc2VcIjtcclxuICAgICAgICB0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaD1cImZhbHNlXCI7XHJcbiAgICAgICAgdGhpcy5pc2RlZmF1bHR2YWx1ZT1cImZhbHNlXCIvL+aYr+WQpuaYr+m7mOiupOWAvFxyXG5cclxuICAgICAgICB0aGlzLmVkaXRtb2RlPTA7XHJcbiAgICAgICAgdGhpcy52YWx1ZXNjcmlwdD0nJztcclxuICAgICAgICB0aGlzLm1vYmlsZT1cImZhbHNlXCI7XHJcbiAgICAgICAgdGhpcy5kaXNjcmlwdD0nJztcclxuICAgICAgICB0aGlzLnJlZnJlc2htb2RlPTA7XHJcblxyXG4gICAgICAgIHRoaXMudmFsaWRhdGVsaWJzPVwiY29yZS5keW5hZm9ybS5mb3JtLmZvcm1maWVsZC52YWxpZGF0ZS5jaGVja1Bob25lX3N5c3RlbVwiO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVydWxlPVwiXCI7Ly/moKHpqozohJrmnKxcclxuICAgICAgICB0aGlzLmhpZGRlbnNjcmlwdD1cIlwiO1xyXG4gICAgICAgIHRoaXMuaGlkZGVudmFsdWU9XCJcIjtcclxuICAgICAgICB0aGlzLmhpZGRlbnByaW50c2NyaXB0PVwiXCI7XHJcbiAgICAgICAgdGhpcy5wcmludGhpZGRlbnZhbHVlPVwiXCI7XHJcbiAgICAgICAgdGhpcy5yZWFkb25seXNjcmlwdD1cIlwiO1xyXG4gICAgICAgIHRoaXMubW9kdWxlPVwiXCI7Ly/pgInpobkt5qih5Z2XXHJcbiAgICAgICAgdGhpcy5kaWFsb2d2aWV3PVwiXCI7Ly/pgInpobkt6KeG5Zu+XHJcbiAgICAgICAgdGhpcy5vcHRpb25zdmFsdWU9XCJcIjsvL+mAiemhuS3mmL7npLrlgLxcclxuICAgICAgICB0aGlzLm9wdGlvbnN0ZXh0PVwiXCI7Ly/pgInpobkt55yf5a6e5YC8XHJcblxyXG4gICAgICAgIHRoaXMub3B0aW9uc2VkaXRtb2RlPVwiMDBcIjsvL+mAiemhueiuvuiuoei/mOaYr+iEmuacrOaooeW8j+eahOWPguaVsFxyXG4gICAgICAgIHRoaXMub3B0aW9uc3NjcmlwdD1cIlwiOy8v6YCJ6aG56ISa5pys55qE5YC8XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzZGVzY3JpcHRpb249XCJcIjsvL+WAvOiuvuiuoeiEmuacrOeahOWAvFxyXG4gICAgICAgIHRoaXMucmVmcmVzaGZpZWxkcz1bXTsvL+WxgOmDqOWIt+aWsOeahOWtl+autee7hOWQiFxyXG4gICAgICAgIHRoaXMuc21hbGx3aWR0aD0xMDA7XHJcbiAgICAgICAgdGhpcy5pbnN0YW50dmFsaWRhdGU9XCJmYWxzZVwiLy/ljbPml7bmoKHpqozvvIjmlrDlop7lsZ7mgKfvvIlcclxuICAgIH1cclxuICAgIHRvSHRtbCgpe31cclxuICAgIFxyXG4gICAgcGFpbnQoKXtcclxuICAgICAgICBsZXQgaD1cIlwiO1xyXG4gICAgICAgIGlmKHRoaXMuaXNibG9jaz09XCJ0cnVlXCIpe1xyXG4gICAgICAgICAgICBoPWA8ZGl2IGNsYXNzPVwiYmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgc3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgaD1gPGRpdiBjbGFzcz1cImlubGluZUJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIHN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbGV0IGg9YDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICAgICAgaWYodGhpcy5pc3Nob3dsYWJlbD09XCJ0cnVlXCIgfHwgdGhpcy5pc3Nob3dsYWJlbD09dHJ1ZSl7XHJcbiAgICAgICAgICAgIGgrPWA8Zi1sYWJlbCBzdHlsZT1cImxpbmUtaGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+JHt0aGlzLmxhYmVsdmFsdWV9PC9mLWxhYmVsPmBcclxuICAgICAgICB9XHJcbiAgICAgICAgICAgIGgrPWA8Zi1pbnB1dCBjbGFzc25hbWU9XCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5SYWRpb0ZpZWxkXCIgdHlwZT1cInJhZGlvXCIgbm9kZWlkPVwiJHt0aGlzLmlkfVwiIGNsYXNzPVwiaW5saW5lQmxvY2tcIiBtaW53aWR0aD1cIiR7dGhpcy53aWR0aH1cIiBzdHlsZT1cImJvcmRlcjoxcHggc29saWQgI2NjYzttaW4td2lkdGg6JHt0aGlzLnNtYWxsd2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O2BcclxuICAgICAgICAgICAgaWYodGhpcy56SW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgaCs9YHotaW5kZXg6YCt0aGlzLnpJbmRleCtgO2A7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaCs9YFwiIG5hbWU9XCIke3RoaXMubmFtZX1cIiBpc3Nob3dsYWJlbD1cIiR7dGhpcy5pc3Nob3dsYWJlbH1cIiBsYWJlbHZhbHVlPVwiJHt0aGlzLmxhYmVsdmFsdWV9XCIgXHJcbiAgICAgICAgICAgIGxheW91dD1cIiR7dGhpcy5sYXlvdXR9XCIgdGV4dHR5cGU9XCIke3RoaXMudGV4dHR5cGV9XCJcclxuICAgICAgICAgICAgcHJvY2Vzc2Rlc2NyaXB0aW9uPVwiJHt0aGlzLnByb2Nlc3NkZXNjcmlwdGlvbn1cIiAgaW5zdGFudHZhbGlkYXRlPVwiJHt0aGlzLmluc3RhbnR2YWxpZGF0ZX1cIlxyXG4gICAgICAgICAgICBpc2RlZmF1bHR2YWx1ZT1cIiR7dGhpcy5pc2RlZmF1bHR2YWx1ZX1cIiByZWZyZXNob25jaGFuZ2VkPVwiJHt0aGlzLnJlZnJlc2hvbmNoYW5nZWR9XCIgXHJcbiAgICAgICAgICAgIGNhbGN1bGF0ZW9ucmVmcmVzaD1cIiR7dGhpcy5jYWxjdWxhdGVvbnJlZnJlc2h9XCIgbW9iaWxlPVwiJHt0aGlzLm1vYmlsZX1cIiBkaXNjcmlwdD1cIiR7dGhpcy5kaXNjcmlwdH1cIlxyXG4gICAgICAgICAgICByZWZyZXNobW9kZT1cIiR7dGhpcy5yZWZyZXNobW9kZX1cIiB2YWxpZGF0ZWxpYnM9XCIke3RoaXMudmFsaWRhdGVsaWJzfVwiIFxyXG4gICAgICAgICAgICB2YWxpZGF0ZXJ1bGU9XCIke3RoaXMudmFsaWRhdGVydWxlfVwiIGhpZGRlbnNjcmlwdD1cIiR7dGhpcy5oaWRkZW5zY3JpcHR9XCIgXHJcbiAgICAgICAgICAgIGhpZGRlbnZhbHVlPVwiJHt0aGlzLmhpZGRlbnZhbHVlfVwiIGhpZGRlbnByaW50c2NyaXB0PVwiJHt0aGlzLmhpZGRlbnByaW50c2NyaXB0fVwiIFxyXG4gICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlPVwiJHt0aGlzLnByaW50aGlkZGVudmFsdWV9XCIgcmVhZG9ubHlzY3JpcHQ9XCIke3RoaXMucmVhZG9ubHlzY3JpcHR9XCIgXHJcbiAgICAgICAgICAgIGVkaXRtb2RlPVwiJHt0aGlzLmVkaXRtb2RlfVwiIG1vZHVsZT1cIiR7dGhpcy5tb2R1bGV9XCJcclxuICAgICAgICAgICAgZGlhbG9ndmlldz1cIiR7dGhpcy5kaWFsb2d2aWV3fVwiIG9wdGlvbnNlZGl0bW9kZT1cIiR7dGhpcy5vcHRpb25zZWRpdG1vZGV9XCJcclxuICAgICAgICAgICAgb3B0aW9uc3ZhbHVlPVwiJHt0aGlzLm9wdGlvbnN2YWx1ZX1cIiBvcHRpb25zdGV4dD1cIiR7dGhpcy5vcHRpb25zdGV4dH1cIlxyXG4gICAgICAgICAgICB2YWx1ZXNjcmlwdD1cIiR7dGhpcy52YWx1ZXNjcmlwdH1cIiBvcHRpb25zc2NyaXB0PVwiJHt0aGlzLm9wdGlvbnNzY3JpcHR9XCIgYDtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgaCs9YHJlZnJlc2hmaWVsZHM9XCJgO1xyXG4gICAgICAgICAgICBpZih0aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaCs9dGhpcy5yZWZyZXNoZmllbGRzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGkhPXRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGgtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGgrPVwiO1wiO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBoKz1gXCJgK1xyXG5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGA+YCtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZStcclxuICAgICAgICAgICAgYDwvZi1pbnB1dD48L2Rpdj5gXHJcbiAgICAgICAgcmV0dXJuIGg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGdldE5vZGVDb25maWdJbmZvKCl7XHJcbiAgICAgICAgbGV0IG5vZGUgPSB7fTtcclxuXHRcdG5vZGUudGV4dCA9IHRoaXMudGV4dDtcclxuXHRcdG5vZGUuaWNvbiA9ICdnbHlwaGljb24gZ2x5cGhpY29uLWdsYXNzJztcclxuXHRcdG5vZGUudXVpZCA9IHRoaXMuZ2V0UHJvcCgnaWQnKTtcdFxyXG5cdFx0bm9kZS5pbnN0YW5jZSA9IHRoaXM7XHJcblx0XHRyZXR1cm4gbm9kZTtcclxuICAgIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBSYWRpbztcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2Zvcm0vY29tcG9uZW50L1JhZGlvLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7OztBQUFBOzs7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBOUNBO0FBK0NBO0FBQ0E7OztBQUFBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBMUdBO0FBQ0E7QUEyR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///99\n");

/***/ }),
/* 100 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Checkbox = function (_Element) {\n    _inherits(Checkbox, _Element);\n\n    function Checkbox() {\n        _classCallCheck(this, Checkbox);\n\n        var _this = _possibleConstructorReturn(this, (Checkbox.__proto__ || Object.getPrototypeOf(Checkbox)).call(this));\n\n        _this.width = 170;\n        _this.height = 20;\n        _this.name = \"\"; //鍞竴鏍囪瘑\n        _this.type = \"text\";\n        _this.text = \"Radio\";\n        _this.cursor = \"default\";\n        _this.scope = \"checkbox\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.belongId = \"\";\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n\n        _this.layout = \"horizontal\"; //甯冨眬\n\n        _this.value = \"澶嶉€夋\";\n        _this.texttype = \"鏅€歕";\n        _this.refreshonchanged = \"false\";\n        _this.calculateonrefresh = \"false\";\n        _this.isdefaultvalue = \"false\"; //鏄惁鏄粯璁ゅ€糪n\n        _this.editmode = 0;\n        _this.valuescript = '';\n        _this.mobile = \"false\";\n        _this.discript = '';\n        _this.refreshmode = 0;\n\n        _this.validatelibs = 0;\n        _this.validaterule = \"\";\n        _this.hiddenscript = \"\";\n        _this.hiddenvalue = \"\";\n        _this.hiddenprintscript = \"\";\n        _this.printhiddenvalue = \"\";\n        _this.readonlyscript = \"\";\n        _this.module = \"\"; //閫夐」-妯″潡\n        _this.dialogview = \"\"; //閫夐」-瑙嗗浘\n        _this.optionsvalue = \"\"; //閫夐」-鏄剧ず鍊糪n        _this.optionstext = \"\"; //閫夐」-鐪熷疄鍊糪n        _this.optionseditmode = \"00\"; //閫夐」璁捐杩樻槸鑴氭湰妯″紡鐨勫弬鏁癨n        _this.optionsscript = \"\"; //閫夐」鑴氭湰鐨勫€糪n\n        _this.processdescription = \"\"; //鍊艰璁¤剼鏈殑鍊糪n        _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n        _this.smallwidth = 100;\n        _this.instantvalidate = \"false\";\n        return _this;\n    }\n\n    _createClass(Checkbox, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-input classname=\"cn.myapps.runtime.dynaform.form.ejb.CheckboxField\" type=\"checkbox\" nodeid=\"' + this.id + '\" class=\"inlineBlock\" minwidth=\"' + this.width + '\" style=\"border:1px solid #ccc;min-width:' + this.smallwidth + 'px;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\" name=\"' + this.name + '\" isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\"  \\n        layout=\"' + this.layout + '\" texttype=\"' + this.texttype + '\" processdescription=\"' + this.processdescription + '\"\\n        isdefaultvalue=\"' + this.isdefaultvalue + '\" refreshonchanged=\"' + this.refreshonchanged + '\" \\n        calculateonrefresh=\"' + this.calculateonrefresh + '\" mobile=\"' + this.mobile + '\" instantvalidate=\"' + this.instantvalidate + '\"\\n        discript=\"' + this.discript + '\" refreshmode=\"' + this.refreshmode + '\" validatelibs=\"' + this.validatelibs + '\"\\n        validaterule=\"' + this.validaterule + '\" hiddenscript=\"' + this.hiddenscript + '\"\\n        hiddenvalue=\"' + this.hiddenvalue + '\" hiddenprintscript=\"' + this.hiddenprintscript + '\" \\n        printhiddenvalue=\"' + this.printhiddenvalue + '\" readonlyscript=\"' + this.readonlyscript + '\" \\n        editmode=\"' + this.editmode + '\" module=\"' + this.module + '\" dialogview=\"' + this.dialogview + '\"\\n        optionseditmode=\"' + this.optionseditmode + '\" optionsvalue=\"' + this.optionsvalue + '\" optionstext=\"' + this.optionstext + '\"\\n        valuescript=\"' + this.valuescript + '\" optionsscript=\"' + this.optionsscript + '\" \\n        ';\n            h += 'refreshfields=\"';\n            if (this.refreshfields.length > 0) {\n                for (var i = 0; i < this.refreshfields.length; i++) {\n                    h += this.refreshfields[i];\n                    if (i != this.refreshfields.length - 1) {\n                        h += \";\";\n                    }\n                }\n            }\n            h += '\"' + '>' + this.value + '</f-input></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n    }]);\n\n    return Checkbox;\n}(_Element3.default);\n\nexports.default = Checkbox;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9DaGVja2JveC5qcz8xOGI3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFbGVtZW50IGZyb20gJy4vRWxlbWVudCc7XHJcbmltcG9ydCB7U2VxdWVuY2V9IGZyb20gJy4uLy4uL3V0aWxpdHknO1xyXG5jbGFzcyBDaGVja2JveCBleHRlbmRzIEVsZW1lbnR7XHJcbiAgICBjb25zdHJ1Y3Rvcigpe1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy53aWR0aD0xNzA7XHJcbiAgICAgICAgdGhpcy5oZWlnaHQ9MjA7XHJcbiAgICAgICAgdGhpcy5uYW1lPVwiXCI7Ly/llK/kuIDmoIfor4ZcclxuICAgICAgICB0aGlzLnR5cGU9XCJ0ZXh0XCI7XHJcbiAgICAgICAgdGhpcy50ZXh0PVwiUmFkaW9cIjtcclxuICAgICAgICB0aGlzLmN1cnNvcj1cImRlZmF1bHRcIjtcclxuICAgICAgICB0aGlzLnNjb3BlPVwiY2hlY2tib3hcIjtcclxuICAgICAgICB0aGlzLmlkID0gU2VxdWVuY2UuY3JlYXRlVXVpZCgpO1xyXG4gICAgICAgIHRoaXMuYmVsb25nSWQ9XCJcIjtcclxuICAgICAgICB0aGlzLnByZVg9MDtcclxuICAgICAgICB0aGlzLnByZVk9MDtcclxuICAgICAgICB0aGlzLm1vdmVYPTA7XHJcbiAgICAgICAgdGhpcy5tb3ZlWT0wO1xyXG5cclxuICAgICAgICB0aGlzLmxheW91dD1cImhvcml6b250YWxcIjsvL+W4g+WxgFxyXG5cclxuICAgICAgICB0aGlzLnZhbHVlPVwi5aSN6YCJ5qGGXCI7XHJcbiAgICAgICAgdGhpcy50ZXh0dHlwZT1cIuaZrumAmlwiO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaG9uY2hhbmdlZD1cImZhbHNlXCI7XHJcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVvbnJlZnJlc2g9XCJmYWxzZVwiO1xyXG4gICAgICAgIHRoaXMuaXNkZWZhdWx0dmFsdWU9XCJmYWxzZVwiLy/mmK/lkKbmmK/pu5jorqTlgLxcclxuXHJcbiAgICAgICAgdGhpcy5lZGl0bW9kZT0wO1xyXG4gICAgICAgIHRoaXMudmFsdWVzY3JpcHQ9Jyc7XHJcbiAgICAgICAgdGhpcy5tb2JpbGU9XCJmYWxzZVwiO1xyXG4gICAgICAgIHRoaXMuZGlzY3JpcHQ9Jyc7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNobW9kZT0wO1xyXG5cclxuICAgICAgICB0aGlzLnZhbGlkYXRlbGlicz0wO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVydWxlPVwiXCI7XHJcbiAgICAgICAgdGhpcy5oaWRkZW5zY3JpcHQ9XCJcIjtcclxuICAgICAgICB0aGlzLmhpZGRlbnZhbHVlPVwiXCI7XHJcbiAgICAgICAgdGhpcy5oaWRkZW5wcmludHNjcmlwdD1cIlwiO1xyXG4gICAgICAgIHRoaXMucHJpbnRoaWRkZW52YWx1ZT1cIlwiO1xyXG4gICAgICAgIHRoaXMucmVhZG9ubHlzY3JpcHQ9XCJcIjtcclxuICAgICAgICB0aGlzLm1vZHVsZT1cIlwiOy8v6YCJ6aG5LeaooeWdl1xyXG4gICAgICAgIHRoaXMuZGlhbG9ndmlldz1cIlwiOy8v6YCJ6aG5LeinhuWbvlxyXG4gICAgICAgIHRoaXMub3B0aW9uc3ZhbHVlPVwiXCI7Ly/pgInpobkt5pi+56S65YC8XHJcbiAgICAgICAgdGhpcy5vcHRpb25zdGV4dD1cIlwiOy8v6YCJ6aG5Leecn+WunuWAvFxyXG4gICAgICAgIHRoaXMub3B0aW9uc2VkaXRtb2RlPVwiMDBcIjsvL+mAiemhueiuvuiuoei/mOaYr+iEmuacrOaooeW8j+eahOWPguaVsFxyXG4gICAgICAgIHRoaXMub3B0aW9uc3NjcmlwdD1cIlwiOy8v6YCJ6aG56ISa5pys55qE5YC8XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5wcm9jZXNzZGVzY3JpcHRpb249XCJcIjsvL+WAvOiuvuiuoeiEmuacrOeahOWAvFxyXG4gICAgICAgIHRoaXMucmVmcmVzaGZpZWxkcz1bXTsvL+WxgOmDqOWIt+aWsOeahOWtl+autee7hOWQiFxyXG4gICAgICAgIHRoaXMuc21hbGx3aWR0aD0xMDA7XHJcbiAgICAgICAgdGhpcy5pbnN0YW50dmFsaWRhdGU9XCJmYWxzZVwiO1xyXG4gICAgfVxyXG4gICAgdG9IdG1sKCl7fVxyXG4gICAgXHJcbiAgICBwYWludCgpe1xyXG4gICAgICAgIGxldCBoPVwiXCI7XHJcbiAgICAgICAgaWYodGhpcy5pc2Jsb2NrPT1cInRydWVcIil7XHJcbiAgICAgICAgICAgIGg9YDxkaXYgY2xhc3M9XCJibG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBoPWA8ZGl2IGNsYXNzPVwiaW5saW5lQmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgc3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmlzc2hvd2xhYmVsPT1cInRydWVcIiB8fCB0aGlzLmlzc2hvd2xhYmVsPT10cnVlKXtcclxuICAgICAgICAgICAgaCs9YDxmLWxhYmVsIHN0eWxlPVwibGluZS1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj4ke3RoaXMubGFiZWx2YWx1ZX08L2YtbGFiZWw+YFxyXG4gICAgICAgIH1cclxuICAgICAgICBoKz1gPGYtaW5wdXQgY2xhc3NuYW1lPVwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuQ2hlY2tib3hGaWVsZFwiIHR5cGU9XCJjaGVja2JveFwiIG5vZGVpZD1cIiR7dGhpcy5pZH1cIiBjbGFzcz1cImlubGluZUJsb2NrXCIgbWlud2lkdGg9XCIke3RoaXMud2lkdGh9XCIgc3R5bGU9XCJib3JkZXI6MXB4IHNvbGlkICNjY2M7bWluLXdpZHRoOiR7dGhpcy5zbWFsbHdpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtgXHJcbiAgICAgICAgaWYodGhpcy56SW5kZXgpe1xyXG4gICAgICAgICAgICBoKz1gei1pbmRleDpgK3RoaXMuekluZGV4K2A7YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaCs9YFwiIG5hbWU9XCIke3RoaXMubmFtZX1cIiBpc3Nob3dsYWJlbD1cIiR7dGhpcy5pc3Nob3dsYWJlbH1cIiBsYWJlbHZhbHVlPVwiJHt0aGlzLmxhYmVsdmFsdWV9XCIgIFxyXG4gICAgICAgIGxheW91dD1cIiR7dGhpcy5sYXlvdXR9XCIgdGV4dHR5cGU9XCIke3RoaXMudGV4dHR5cGV9XCIgcHJvY2Vzc2Rlc2NyaXB0aW9uPVwiJHt0aGlzLnByb2Nlc3NkZXNjcmlwdGlvbn1cIlxyXG4gICAgICAgIGlzZGVmYXVsdHZhbHVlPVwiJHt0aGlzLmlzZGVmYXVsdHZhbHVlfVwiIHJlZnJlc2hvbmNoYW5nZWQ9XCIke3RoaXMucmVmcmVzaG9uY2hhbmdlZH1cIiBcclxuICAgICAgICBjYWxjdWxhdGVvbnJlZnJlc2g9XCIke3RoaXMuY2FsY3VsYXRlb25yZWZyZXNofVwiIG1vYmlsZT1cIiR7dGhpcy5tb2JpbGV9XCIgaW5zdGFudHZhbGlkYXRlPVwiJHt0aGlzLmluc3RhbnR2YWxpZGF0ZX1cIlxyXG4gICAgICAgIGRpc2NyaXB0PVwiJHt0aGlzLmRpc2NyaXB0fVwiIHJlZnJlc2htb2RlPVwiJHt0aGlzLnJlZnJlc2htb2RlfVwiIHZhbGlkYXRlbGlicz1cIiR7dGhpcy52YWxpZGF0ZWxpYnN9XCJcclxuICAgICAgICB2YWxpZGF0ZXJ1bGU9XCIke3RoaXMudmFsaWRhdGVydWxlfVwiIGhpZGRlbnNjcmlwdD1cIiR7dGhpcy5oaWRkZW5zY3JpcHR9XCJcclxuICAgICAgICBoaWRkZW52YWx1ZT1cIiR7dGhpcy5oaWRkZW52YWx1ZX1cIiBoaWRkZW5wcmludHNjcmlwdD1cIiR7dGhpcy5oaWRkZW5wcmludHNjcmlwdH1cIiBcclxuICAgICAgICBwcmludGhpZGRlbnZhbHVlPVwiJHt0aGlzLnByaW50aGlkZGVudmFsdWV9XCIgcmVhZG9ubHlzY3JpcHQ9XCIke3RoaXMucmVhZG9ubHlzY3JpcHR9XCIgXHJcbiAgICAgICAgZWRpdG1vZGU9XCIke3RoaXMuZWRpdG1vZGV9XCIgbW9kdWxlPVwiJHt0aGlzLm1vZHVsZX1cIiBkaWFsb2d2aWV3PVwiJHt0aGlzLmRpYWxvZ3ZpZXd9XCJcclxuICAgICAgICBvcHRpb25zZWRpdG1vZGU9XCIke3RoaXMub3B0aW9uc2VkaXRtb2RlfVwiIG9wdGlvbnN2YWx1ZT1cIiR7dGhpcy5vcHRpb25zdmFsdWV9XCIgb3B0aW9uc3RleHQ9XCIke3RoaXMub3B0aW9uc3RleHR9XCJcclxuICAgICAgICB2YWx1ZXNjcmlwdD1cIiR7dGhpcy52YWx1ZXNjcmlwdH1cIiBvcHRpb25zc2NyaXB0PVwiJHt0aGlzLm9wdGlvbnNzY3JpcHR9XCIgXHJcbiAgICAgICAgYDtcclxuICAgICAgICAgICAgaCs9YHJlZnJlc2hmaWVsZHM9XCJgO1xyXG4gICAgICAgICAgICBpZih0aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaCs9dGhpcy5yZWZyZXNoZmllbGRzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGkhPXRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGgtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGgrPVwiO1wiO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBoKz1gXCJgK1xyXG5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGA+YCtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZStcclxuICAgICAgICAgICAgYDwvZi1pbnB1dD48L2Rpdj5gXHJcbiAgICAgICAgcmV0dXJuIGg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGdldE5vZGVDb25maWdJbmZvKCl7XHJcbiAgICAgICAgbGV0IG5vZGUgPSB7fTtcclxuXHRcdG5vZGUudGV4dCA9IHRoaXMudGV4dDtcclxuXHRcdG5vZGUuaWNvbiA9ICdnbHlwaGljb24gZ2x5cGhpY29uLWdsYXNzJztcclxuXHRcdG5vZGUudXVpZCA9IHRoaXMuZ2V0UHJvcCgnaWQnKTtcdFxyXG5cdFx0bm9kZS5pbnN0YW5jZSA9IHRoaXM7XHJcblx0XHRyZXR1cm4gbm9kZTtcclxuICAgIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveDtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2Zvcm0vY29tcG9uZW50L0NoZWNrYm94LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7OztBQUFBOzs7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEvQ0E7QUFnREE7QUFDQTs7O0FBQUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQXhHQTtBQUNBO0FBeUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///100\n");

/***/ }),
/* 101 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Data = function (_Element) {\n    _inherits(Data, _Element);\n\n    function Data() {\n        _classCallCheck(this, Data);\n\n        var _this = _possibleConstructorReturn(this, (Data.__proto__ || Object.getPrototypeOf(Data)).call(this));\n\n        _this.width = 170;\n        _this.height = 50;\n        _this.name = \"\"; //鍞竴鏍囪瘑\n        _this.text = \"data\";\n        _this.cursor = \"default\";\n        _this.scope = \"data\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.belongId = \"\";\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n        // this.fieldtype=\"VALUE_TYPE_DATE\"//鐢ㄦ潵鏍囪瘑鏃ユ湡閫夋嫨妗嗙殑鍙傛暟\n        _this.value = \"鏃ユ湡閫夋嫨妗哱"; //鍊糪n        _this.datepattern = \"YM\"; //鏍煎紡\n        _this.texttype = \"text\"; //鏄剧ず\n        _this.isdefaultvalue = \"false\"; //鏄惁鏄粯璁ゅ€糪n        _this.readonlyshowvalonly = \"true\"; //鍙鏃朵粎鍙樉绀哄€糪n        _this.refreshonchanged = \"false\"; //鍒锋柊\n        _this.calculateonrefresh = \"false\"; //鍐茶绠梊n        _this.editmode = 0; //鍊肩殑鏂瑰紡\n        _this.valuescript = ''; //鑴氭湰鍊糪n        _this.mobile = \"false\"; //鎵嬫満鍙敤\n        _this.discript = ''; //鎻忚堪\n        _this.refreshmode = 0; //鍐插埛鏂扮殑鏂瑰紡\n\n        _this.validatelibs = \"core.dynaform.form.formfield.validate.checkPhone_system\"; //鏍¢獙鏂瑰紡\n        _this.validaterule = \"\"; //鏍¢獙鑴氭湰\n        _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n        _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n        _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n        _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n        _this.readonlyscript = \"\"; //鍙鏉′欢鑴氭湰\n\n        _this.limit = \"false\"; //闄愬埗\n        _this.prev_name = \"\"; //寮€濮嬫棩鏈熷瓧娈靛悕\n\n        _this.processdescription = \"\"; //鍊艰璁¤剼鏈殑鍊糪n        _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n        _this.smallwidth = 100;\n        _this.instantvalidate = \"false\"; //鍗虫椂鏍¢獙\n        return _this;\n    }\n\n    _createClass(Data, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            // let h=`<div class=\"inlineBlock\" id=\"${this.id}\" draggable=\"true\" style=\"min-width:${this.width}px;min-height:${this.height}px;\">`;\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-input classname=\"cn.myapps.runtime.dynaform.form.ejb.DateField\" nodeid=\"' + this.id + '\" class=\"inlineBlock\" minwidth=\"' + this.width + '\" style=\"border:1px solid #ccc;min-width:' + this.smallwidth + 'px;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\" name=\"' + this.name + '\" type=\"text\" fieldtype=\"VALUE_TYPE_DATE\" classname=\"cn.myapps.runtime.dynaform.form.ejb.DateField\" isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\" \\n        datepattern=\"' + this.datepattern + '\" texttype=\"' + this.texttype + '\" \\n        processdescription=\"' + this.processdescription + '\" readonlyshowvalonly=\"' + this.readonlyshowvalonly + '\"\\n        isdefaultvalue=\"' + this.isdefaultvalue + '\" refreshonchanged=\"' + this.refreshonchanged + '\" \\n        calculateonrefresh=\"' + this.calculateonrefresh + '\" mobile=\"' + this.mobile + '\"\\n        discript=\"' + this.discript + '\" refreshmode=\"' + this.refreshmode + '\" validatelibs=\"' + this.validatelibs + '\"\\n        validaterule=\"' + this.validaterule + '\" hiddenscript=\"' + this.hiddenscript + '\" hiddenvalue=\"' + this.hiddenvalue + '\"\\n        hiddenprintscript=\"' + this.hiddenprintscript + '\" printhiddenvalue=\"' + this.printhiddenvalue + '\" readonlyscript=\"' + this.readonlyscript + '\"\\n        editmode=\"' + this.editmode + '\" valuescript=\"' + this.valuescript + '\"\\n        limit=\"' + this.limit + '\" prev_name=\"' + this.prev_name + '\" instantvalidate=\"' + this.instantvalidate + '\"\\n        ';\n            h += 'refreshfields=\"';\n            if (this.refreshfields.length > 0) {\n                for (var i = 0; i < this.refreshfields.length; i++) {\n                    h += this.refreshfields[i];\n                    if (i != this.refreshfields.length - 1) {\n                        h += \";\";\n                    }\n                }\n            }\n            h += '\"' + '>' + this.value + '</f-input></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n    }]);\n\n    return Data;\n}(_Element3.default);\n\nexports.default = Data;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9EYXRhLmpzPzMxNDQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVsZW1lbnQgZnJvbSAnLi9FbGVtZW50JztcclxuaW1wb3J0IHtTZXF1ZW5jZX0gZnJvbSAnLi4vLi4vdXRpbGl0eSc7XHJcbmNsYXNzIERhdGEgZXh0ZW5kcyBFbGVtZW50e1xyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMud2lkdGg9MTcwO1xyXG4gICAgICAgIHRoaXMuaGVpZ2h0PTUwO1xyXG4gICAgICAgIHRoaXMubmFtZT1cIlwiOy8v5ZSv5LiA5qCH6K+GXHJcbiAgICAgICAgdGhpcy50ZXh0PVwiZGF0YVwiO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yPVwiZGVmYXVsdFwiO1xyXG4gICAgICAgIHRoaXMuc2NvcGU9XCJkYXRhXCI7XHJcbiAgICAgICAgdGhpcy5pZCA9IFNlcXVlbmNlLmNyZWF0ZVV1aWQoKTtcclxuICAgICAgICB0aGlzLmJlbG9uZ0lkPVwiXCI7XHJcbiAgICAgICAgdGhpcy5wcmVYPTA7XHJcbiAgICAgICAgdGhpcy5wcmVZPTA7XHJcbiAgICAgICAgdGhpcy5tb3ZlWD0wO1xyXG4gICAgICAgIHRoaXMubW92ZVk9MDtcclxuICAgICAgICAvLyB0aGlzLmZpZWxkdHlwZT1cIlZBTFVFX1RZUEVfREFURVwiLy/nlKjmnaXmoIfor4bml6XmnJ/pgInmi6nmoYbnmoTlj4LmlbBcclxuICAgICAgICB0aGlzLnZhbHVlPVwi5pel5pyf6YCJ5oup5qGGXCI7Ly/lgLxcclxuICAgICAgICB0aGlzLmRhdGVwYXR0ZXJuPVwiWU1cIjsvL+agvOW8j1xyXG4gICAgICAgIHRoaXMudGV4dHR5cGU9XCJ0ZXh0XCI7Ly/mmL7npLpcclxuICAgICAgICB0aGlzLmlzZGVmYXVsdHZhbHVlPVwiZmFsc2VcIi8v5piv5ZCm5piv6buY6K6k5YC8XHJcbiAgICAgICAgdGhpcy5yZWFkb25seXNob3d2YWxvbmx5PVwidHJ1ZVwiOy8v5Y+q6K+75pe25LuF5Y+q5pi+56S65YC8XHJcbiAgICAgICAgdGhpcy5yZWZyZXNob25jaGFuZ2VkPVwiZmFsc2VcIjsvL+WIt+aWsFxyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlb25yZWZyZXNoPVwiZmFsc2VcIjsvL+WGsuiuoeeul1xyXG4gICAgICAgIHRoaXMuZWRpdG1vZGU9MDsvL+WAvOeahOaWueW8j1xyXG4gICAgICAgIHRoaXMudmFsdWVzY3JpcHQ9Jyc7Ly/ohJrmnKzlgLxcclxuICAgICAgICB0aGlzLm1vYmlsZT1cImZhbHNlXCI7Ly/miYvmnLrlj6/nlKhcclxuICAgICAgICB0aGlzLmRpc2NyaXB0PScnOy8v5o+P6L+wXHJcbiAgICAgICAgdGhpcy5yZWZyZXNobW9kZT0wOy8v5Yay5Yi35paw55qE5pa55byPXHJcblxyXG4gICAgICAgIHRoaXMudmFsaWRhdGVsaWJzPVwiY29yZS5keW5hZm9ybS5mb3JtLmZvcm1maWVsZC52YWxpZGF0ZS5jaGVja1Bob25lX3N5c3RlbVwiOy8v5qCh6aqM5pa55byPXHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZXJ1bGU9XCJcIjsvL+agoemqjOiEmuacrFxyXG4gICAgICAgIHRoaXMuaGlkZGVuc2NyaXB0PVwiXCI7Ly/pmpDol4/mnaHku7bohJrmnKxcclxuICAgICAgICB0aGlzLmhpZGRlbnZhbHVlPVwiXCI7Ly/pmpDol4/ml7bmmL7npLrlgLxcclxuICAgICAgICB0aGlzLmhpZGRlbnByaW50c2NyaXB0PVwiXCI7Ly/miZPljbDml7bpmpDol4/mnaHku7bohJrmnKxcclxuICAgICAgICB0aGlzLnByaW50aGlkZGVudmFsdWU9XCJcIjsvL+aJk+WNsOmakOiXj+aXtuaYvuekuuWAvFxyXG4gICAgICAgIHRoaXMucmVhZG9ubHlzY3JpcHQ9XCJcIjsvL+WPquivu+adoeS7tuiEmuacrFxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMubGltaXQ9XCJmYWxzZVwiLy/pmZDliLZcclxuICAgICAgICB0aGlzLnByZXZfbmFtZT1cIlwiLy/lvIDlp4vml6XmnJ/lrZfmrrXlkI1cclxuXHJcbiAgICAgICAgdGhpcy5wcm9jZXNzZGVzY3JpcHRpb249XCJcIjsvL+WAvOiuvuiuoeiEmuacrOeahOWAvFxyXG4gICAgICAgIHRoaXMucmVmcmVzaGZpZWxkcz1bXTsvL+WxgOmDqOWIt+aWsOeahOWtl+autee7hOWQiFxyXG4gICAgICAgIHRoaXMuc21hbGx3aWR0aD0xMDA7XHJcbiAgICAgICAgdGhpcy5pbnN0YW50dmFsaWRhdGU9XCJmYWxzZVwiOy8v5Y2z5pe25qCh6aqMXHJcbiAgICB9XHJcbiAgICB0b0h0bWwoKXt9XHJcbiAgICBcclxuICAgIHBhaW50KCl7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IGg9XCJcIjtcclxuICAgICAgICBpZih0aGlzLmlzYmxvY2s9PVwidHJ1ZVwiKXtcclxuICAgICAgICAgICAgaD1gPGRpdiBjbGFzcz1cImJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIHN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGg9YDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGxldCBoPWA8ZGl2IGNsYXNzPVwiaW5saW5lQmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgc3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgIGlmKHRoaXMuaXNzaG93bGFiZWw9PVwidHJ1ZVwiIHx8IHRoaXMuaXNzaG93bGFiZWw9PXRydWUpe1xyXG4gICAgICAgICAgICBoKz1gPGYtbGFiZWwgc3R5bGU9XCJsaW5lLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPiR7dGhpcy5sYWJlbHZhbHVlfTwvZi1sYWJlbD5gXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGgrPWA8Zi1pbnB1dCBjbGFzc25hbWU9XCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5EYXRlRmllbGRcIiBub2RlaWQ9XCIke3RoaXMuaWR9XCIgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIG1pbndpZHRoPVwiJHt0aGlzLndpZHRofVwiIHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjY2NjO21pbi13aWR0aDoke3RoaXMuc21hbGx3aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7YFxyXG4gICAgICAgIGlmKHRoaXMuekluZGV4KXtcclxuICAgICAgICAgICAgaCs9YHotaW5kZXg6YCt0aGlzLnpJbmRleCtgO2A7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGgrPWBcIiBuYW1lPVwiJHt0aGlzLm5hbWV9XCIgdHlwZT1cInRleHRcIiBmaWVsZHR5cGU9XCJWQUxVRV9UWVBFX0RBVEVcIiBjbGFzc25hbWU9XCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5EYXRlRmllbGRcIiBpc3Nob3dsYWJlbD1cIiR7dGhpcy5pc3Nob3dsYWJlbH1cIiBsYWJlbHZhbHVlPVwiJHt0aGlzLmxhYmVsdmFsdWV9XCIgXHJcbiAgICAgICAgZGF0ZXBhdHRlcm49XCIke3RoaXMuZGF0ZXBhdHRlcm59XCIgdGV4dHR5cGU9XCIke3RoaXMudGV4dHR5cGV9XCIgXHJcbiAgICAgICAgcHJvY2Vzc2Rlc2NyaXB0aW9uPVwiJHt0aGlzLnByb2Nlc3NkZXNjcmlwdGlvbn1cIiByZWFkb25seXNob3d2YWxvbmx5PVwiJHt0aGlzLnJlYWRvbmx5c2hvd3ZhbG9ubHl9XCJcclxuICAgICAgICBpc2RlZmF1bHR2YWx1ZT1cIiR7dGhpcy5pc2RlZmF1bHR2YWx1ZX1cIiByZWZyZXNob25jaGFuZ2VkPVwiJHt0aGlzLnJlZnJlc2hvbmNoYW5nZWR9XCIgXHJcbiAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoPVwiJHt0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaH1cIiBtb2JpbGU9XCIke3RoaXMubW9iaWxlfVwiXHJcbiAgICAgICAgZGlzY3JpcHQ9XCIke3RoaXMuZGlzY3JpcHR9XCIgcmVmcmVzaG1vZGU9XCIke3RoaXMucmVmcmVzaG1vZGV9XCIgdmFsaWRhdGVsaWJzPVwiJHt0aGlzLnZhbGlkYXRlbGlic31cIlxyXG4gICAgICAgIHZhbGlkYXRlcnVsZT1cIiR7dGhpcy52YWxpZGF0ZXJ1bGV9XCIgaGlkZGVuc2NyaXB0PVwiJHt0aGlzLmhpZGRlbnNjcmlwdH1cIiBoaWRkZW52YWx1ZT1cIiR7dGhpcy5oaWRkZW52YWx1ZX1cIlxyXG4gICAgICAgIGhpZGRlbnByaW50c2NyaXB0PVwiJHt0aGlzLmhpZGRlbnByaW50c2NyaXB0fVwiIHByaW50aGlkZGVudmFsdWU9XCIke3RoaXMucHJpbnRoaWRkZW52YWx1ZX1cIiByZWFkb25seXNjcmlwdD1cIiR7dGhpcy5yZWFkb25seXNjcmlwdH1cIlxyXG4gICAgICAgIGVkaXRtb2RlPVwiJHt0aGlzLmVkaXRtb2RlfVwiIHZhbHVlc2NyaXB0PVwiJHt0aGlzLnZhbHVlc2NyaXB0fVwiXHJcbiAgICAgICAgbGltaXQ9XCIke3RoaXMubGltaXR9XCIgcHJldl9uYW1lPVwiJHt0aGlzLnByZXZfbmFtZX1cIiBpbnN0YW50dmFsaWRhdGU9XCIke3RoaXMuaW5zdGFudHZhbGlkYXRlfVwiXHJcbiAgICAgICAgYDtcclxuICAgICAgICBoKz1gcmVmcmVzaGZpZWxkcz1cImA7XHJcbiAgICAgICAgaWYodGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICBoKz10aGlzLnJlZnJlc2hmaWVsZHNbaV07XHJcbiAgICAgICAgICAgICAgICBpZihpIT10aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoLTEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGgrPVwiO1wiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGgrPWBcImArXHJcblxyXG4gICAgICAgIFxyXG4gICAgICAgIGA+YCtcclxuICAgICAgICB0aGlzLnZhbHVlK1xyXG4gICAgICAgIGA8L2YtaW5wdXQ+PC9kaXY+YFxyXG4gICAgICAgIHJldHVybiBoO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBnZXROb2RlQ29uZmlnSW5mbygpe1xyXG4gICAgICAgIGxldCBub2RlID0ge307XHJcblx0XHRub2RlLnRleHQgPSB0aGlzLnRleHQ7XHJcblx0XHRub2RlLmljb24gPSAnZ2x5cGhpY29uIGdseXBoaWNvbi1nbGFzcyc7XHJcblx0XHRub2RlLnV1aWQgPSB0aGlzLmdldFByb3AoJ2lkJyk7XHRcclxuXHRcdG5vZGUuaW5zdGFuY2UgPSB0aGlzO1xyXG5cdFx0cmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgRGF0YTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2Zvcm0vY29tcG9uZW50L0RhdGEuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7Ozs7Ozs7O0FBQUE7OztBQUNBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBMUNBO0FBMkNBO0FBQ0E7OztBQUFBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBcEdBO0FBQ0E7QUFxR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///101\n");

/***/ }),
/* 102 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Select = function (_Element) {\n    _inherits(Select, _Element);\n\n    function Select() {\n        _classCallCheck(this, Select);\n\n        var _this = _possibleConstructorReturn(this, (Select.__proto__ || Object.getPrototypeOf(Select)).call(this));\n\n        _this.width = 210;\n        _this.height = 30;\n        _this.name = \"\"; //鍞竴鏍囪瘑\n        _this.text = \"Select\";\n        _this.cursor = \"default\";\n        _this.scope = \"select\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.belongId = \"\";\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n        _this.texttype = \"text\"; //鏄剧ず\n\n        _this.value = \"涓嬫媺妗哱";\n        _this.readonlyshowvalonly = \"true\";\n        _this.refreshonchanged = \"false\";\n        _this.calculateonrefresh = \"false\";\n        _this.isdefaultvalue = \"false\";\n        _this.editmode = 0;\n        _this.valuescript = '';\n        _this.mobile = \"false\";\n        _this.discript = '';\n        _this.refreshmode = 0;\n\n        _this.validatelibs = 0;\n        _this.validaterule = \"\";\n        _this.hiddenscript = \"\";\n        _this.hiddenvalue = \"\";\n        _this.hiddenprintscript = \"\";\n        _this.printhiddenvalue = \"\";\n        _this.readonlyscript = \"\";\n        _this.processdescription = \"\"; //鍊艰璁¤剼鏈殑鍊糪n        _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n\n        _this.module = \"\"; //閫夐」-妯″潡\n        _this.dialogview = \"\"; //閫夐」-瑙嗗浘\n        _this.optionsvalue = \"\"; //閫夐」-鏄剧ず鍊糪n        _this.optionstext = \"\"; //閫夐」-鐪熷疄鍊糪n\n        _this.optionseditmode = \"00\"; //閫夐」璁捐杩樻槸鑴氭湰妯″紡鐨勫弬鏁癨n        _this.optionsscript = \"\"; //閫夐」鑴氭湰鍊糪n        _this.smallwidth = 100;\n        _this.instantvalidate = \"\"; //鍗虫椂鏍¢獙\n        return _this;\n    }\n\n    _createClass(Select, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            // let h=`<div class=\"inlineBlock\" id=\"${this.id}\" draggable=\"true\" style=\"min-width:${this.width}px;min-height:${this.height}px;\">`;\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-select classname=\"cn.myapps.runtime.dynaform.form.ejb.SelectField\" nodeid=\"' + this.id + '\" class=\"inlineBlock\" minwidth=\"' + this.width + '\" style=\"border:1px solid #ccc;min-width:' + this.smallwidth + 'px;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\" name=\"' + this.name + '\" isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\"  \\n            texttype=\"' + this.texttype + '\" \\n            processdescription=\"' + this.processdescription + '\" readonlyshowvalonly=\"' + this.readonlyshowvalonly + '\" \\n            isdefaultvalue=\"' + this.isdefaultvalue + '\" refreshonchanged=\"' + this.refreshonchanged + '\" \\n            calculateonrefresh=\"' + this.calculateonrefresh + '\" mobile=\"' + this.mobile + '\" discript=\"' + this.discript + '\"\\n            refreshmode=\"' + this.refreshmode + '\" validatelibs=\"' + this.validatelibs + '\" \\n            validaterule=\"' + this.validaterule + '\"\\n            hiddenscript=\"' + this.hiddenscript + '\" hiddenvalue=\"' + this.hiddenvalue + '\" \\n            hiddenprintscript=\"' + this.hiddenprintscript + '\" \\n            printhiddenvalue=\"' + this.printhiddenvalue + '\" readonlyscript=\"' + this.readonlyscript + '\" \\n            editmode=\"' + this.editmode + '\"  module=\"' + this.module + '\"\\n            dialogview=\"' + this.dialogview + '\" optionseditmode=\"' + this.optionseditmode + '\"\\n            optionsvalue=\"' + this.optionsvalue + '\" optionstext=\"' + this.optionstext + '\"\\n            valuescript=\"' + this.valuescript + '\" optionsscript=\"' + this.optionsscript + '\"\\n            instantvalidate=\"' + this.instantvalidate + '\"';\n\n            h += 'refreshfields=\"';\n            if (this.refreshfields.length > 0) {\n                for (var i = 0; i < this.refreshfields.length; i++) {\n                    h += this.refreshfields[i];\n                    if (i != this.refreshfields.length - 1) {\n                        h += \";\";\n                    }\n                }\n            }\n            h += '\"' + '>' + this.value + '</f-select></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n    }, {\n        key: 'isOnBaseLine',\n        value: function isOnBaseLine(x, y) {\n            if (this.x + this.width - 5 < x && this.x + this.width + 5 > x && this.y + this.height - 5 < y && this.y + this.height + 5 > y) {\n                return this;\n            }\n            return false;\n        }\n    }]);\n\n    return Select;\n}(_Element3.default);\n\nexports.default = Select;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9TZWxlY3QuanM/NTkwNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRWxlbWVudCBmcm9tICcuL0VsZW1lbnQnO1xyXG5pbXBvcnQge1NlcXVlbmNlfSBmcm9tICcuLi8uLi91dGlsaXR5JztcclxuY2xhc3MgU2VsZWN0IGV4dGVuZHMgRWxlbWVudHtcclxuICAgIGNvbnN0cnVjdG9yKCl7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLndpZHRoPTIxMDtcclxuICAgICAgICB0aGlzLmhlaWdodD0zMDtcclxuICAgICAgICB0aGlzLm5hbWU9XCJcIjsvL+WUr+S4gOagh+ivhlxyXG4gICAgICAgIHRoaXMudGV4dD1cIlNlbGVjdFwiO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yPVwiZGVmYXVsdFwiO1xyXG4gICAgICAgIHRoaXMuc2NvcGU9XCJzZWxlY3RcIjtcclxuICAgICAgICB0aGlzLmlkID0gU2VxdWVuY2UuY3JlYXRlVXVpZCgpO1xyXG4gICAgICAgIHRoaXMuYmVsb25nSWQ9XCJcIjtcclxuICAgICAgICB0aGlzLnByZVg9MDtcclxuICAgICAgICB0aGlzLnByZVk9MDtcclxuICAgICAgICB0aGlzLm1vdmVYPTA7XHJcbiAgICAgICAgdGhpcy5tb3ZlWT0wO1xyXG4gICAgICAgIHRoaXMudGV4dHR5cGU9XCJ0ZXh0XCI7Ly/mmL7npLpcclxuXHJcbiAgICAgICAgdGhpcy52YWx1ZT1cIuS4i+aLieahhlwiO1xyXG4gICAgICAgIHRoaXMucmVhZG9ubHlzaG93dmFsb25seT1cInRydWVcIjtcclxuICAgICAgICB0aGlzLnJlZnJlc2hvbmNoYW5nZWQ9XCJmYWxzZVwiO1xyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlb25yZWZyZXNoPVwiZmFsc2VcIjtcclxuICAgICAgICB0aGlzLmlzZGVmYXVsdHZhbHVlPVwiZmFsc2VcIjtcclxuICAgICAgICB0aGlzLmVkaXRtb2RlPTA7XHJcbiAgICAgICAgdGhpcy52YWx1ZXNjcmlwdD0nJztcclxuICAgICAgICB0aGlzLm1vYmlsZT1cImZhbHNlXCI7XHJcbiAgICAgICAgdGhpcy5kaXNjcmlwdD0nJztcclxuICAgICAgICB0aGlzLnJlZnJlc2htb2RlPTA7XHJcblxyXG4gICAgICAgIHRoaXMudmFsaWRhdGVsaWJzPTA7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZXJ1bGU9XCJcIjtcclxuICAgICAgICB0aGlzLmhpZGRlbnNjcmlwdD1cIlwiO1xyXG4gICAgICAgIHRoaXMuaGlkZGVudmFsdWU9XCJcIjtcclxuICAgICAgICB0aGlzLmhpZGRlbnByaW50c2NyaXB0PVwiXCI7XHJcbiAgICAgICAgdGhpcy5wcmludGhpZGRlbnZhbHVlPVwiXCI7XHJcbiAgICAgICAgdGhpcy5yZWFkb25seXNjcmlwdD1cIlwiO1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc2Rlc2NyaXB0aW9uPVwiXCI7Ly/lgLzorr7orqHohJrmnKznmoTlgLxcclxuICAgICAgICB0aGlzLnJlZnJlc2hmaWVsZHM9W107Ly/lsYDpg6jliLfmlrDnmoTlrZfmrrXnu4TlkIhcclxuXHJcbiAgICAgICAgdGhpcy5tb2R1bGU9XCJcIjsvL+mAiemhuS3mqKHlnZdcclxuICAgICAgICB0aGlzLmRpYWxvZ3ZpZXc9XCJcIjsvL+mAiemhuS3op4blm75cclxuICAgICAgICB0aGlzLm9wdGlvbnN2YWx1ZT1cIlwiOy8v6YCJ6aG5LeaYvuekuuWAvFxyXG4gICAgICAgIHRoaXMub3B0aW9uc3RleHQ9XCJcIjsvL+mAiemhuS3nnJ/lrp7lgLxcclxuXHJcbiAgICAgICAgdGhpcy5vcHRpb25zZWRpdG1vZGU9XCIwMFwiOy8v6YCJ6aG56K6+6K6h6L+Y5piv6ISa5pys5qih5byP55qE5Y+C5pWwXHJcbiAgICAgICAgdGhpcy5vcHRpb25zc2NyaXB0PVwiXCI7Ly/pgInpobnohJrmnKzlgLxcclxuICAgICAgICB0aGlzLnNtYWxsd2lkdGg9MTAwO1xyXG4gICAgICAgIHRoaXMuaW5zdGFudHZhbGlkYXRlPVwiXCI7Ly/ljbPml7bmoKHpqoxcclxuICAgIH1cclxuICAgIHRvSHRtbCgpe31cclxuICAgIFxyXG4gICAgcGFpbnQoKXtcclxuICAgICAgICBsZXQgaD1cIlwiO1xyXG4gICAgICAgIGlmKHRoaXMuaXNibG9jaz09XCJ0cnVlXCIpe1xyXG4gICAgICAgICAgICBoPWA8ZGl2IGNsYXNzPVwiYmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgc3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgaD1gPGRpdiBjbGFzcz1cImlubGluZUJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIHN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbGV0IGg9YDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICAgICAgaWYodGhpcy5pc3Nob3dsYWJlbD09XCJ0cnVlXCIgfHwgdGhpcy5pc3Nob3dsYWJlbD09dHJ1ZSl7XHJcbiAgICAgICAgICAgIGgrPWA8Zi1sYWJlbCBzdHlsZT1cImxpbmUtaGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+JHt0aGlzLmxhYmVsdmFsdWV9PC9mLWxhYmVsPmBcclxuICAgICAgICB9XHJcbiAgICAgICAgICAgIGgrPWA8Zi1zZWxlY3QgY2xhc3NuYW1lPVwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuU2VsZWN0RmllbGRcIiBub2RlaWQ9XCIke3RoaXMuaWR9XCIgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIG1pbndpZHRoPVwiJHt0aGlzLndpZHRofVwiIHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjY2NjO21pbi13aWR0aDoke3RoaXMuc21hbGx3aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7YFxyXG4gICAgICAgICAgICBpZih0aGlzLnpJbmRleCl7XHJcbiAgICAgICAgICAgICAgICBoKz1gei1pbmRleDpgK3RoaXMuekluZGV4K2A7YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBoKz1gXCIgbmFtZT1cIiR7dGhpcy5uYW1lfVwiIGlzc2hvd2xhYmVsPVwiJHt0aGlzLmlzc2hvd2xhYmVsfVwiIGxhYmVsdmFsdWU9XCIke3RoaXMubGFiZWx2YWx1ZX1cIiAgXHJcbiAgICAgICAgICAgIHRleHR0eXBlPVwiJHt0aGlzLnRleHR0eXBlfVwiIFxyXG4gICAgICAgICAgICBwcm9jZXNzZGVzY3JpcHRpb249XCIke3RoaXMucHJvY2Vzc2Rlc2NyaXB0aW9ufVwiIHJlYWRvbmx5c2hvd3ZhbG9ubHk9XCIke3RoaXMucmVhZG9ubHlzaG93dmFsb25seX1cIiBcclxuICAgICAgICAgICAgaXNkZWZhdWx0dmFsdWU9XCIke3RoaXMuaXNkZWZhdWx0dmFsdWV9XCIgcmVmcmVzaG9uY2hhbmdlZD1cIiR7dGhpcy5yZWZyZXNob25jaGFuZ2VkfVwiIFxyXG4gICAgICAgICAgICBjYWxjdWxhdGVvbnJlZnJlc2g9XCIke3RoaXMuY2FsY3VsYXRlb25yZWZyZXNofVwiIG1vYmlsZT1cIiR7dGhpcy5tb2JpbGV9XCIgZGlzY3JpcHQ9XCIke3RoaXMuZGlzY3JpcHR9XCJcclxuICAgICAgICAgICAgcmVmcmVzaG1vZGU9XCIke3RoaXMucmVmcmVzaG1vZGV9XCIgdmFsaWRhdGVsaWJzPVwiJHt0aGlzLnZhbGlkYXRlbGlic31cIiBcclxuICAgICAgICAgICAgdmFsaWRhdGVydWxlPVwiJHt0aGlzLnZhbGlkYXRlcnVsZX1cIlxyXG4gICAgICAgICAgICBoaWRkZW5zY3JpcHQ9XCIke3RoaXMuaGlkZGVuc2NyaXB0fVwiIGhpZGRlbnZhbHVlPVwiJHt0aGlzLmhpZGRlbnZhbHVlfVwiIFxyXG4gICAgICAgICAgICBoaWRkZW5wcmludHNjcmlwdD1cIiR7dGhpcy5oaWRkZW5wcmludHNjcmlwdH1cIiBcclxuICAgICAgICAgICAgcHJpbnRoaWRkZW52YWx1ZT1cIiR7dGhpcy5wcmludGhpZGRlbnZhbHVlfVwiIHJlYWRvbmx5c2NyaXB0PVwiJHt0aGlzLnJlYWRvbmx5c2NyaXB0fVwiIFxyXG4gICAgICAgICAgICBlZGl0bW9kZT1cIiR7dGhpcy5lZGl0bW9kZX1cIiAgbW9kdWxlPVwiJHt0aGlzLm1vZHVsZX1cIlxyXG4gICAgICAgICAgICBkaWFsb2d2aWV3PVwiJHt0aGlzLmRpYWxvZ3ZpZXd9XCIgb3B0aW9uc2VkaXRtb2RlPVwiJHt0aGlzLm9wdGlvbnNlZGl0bW9kZX1cIlxyXG4gICAgICAgICAgICBvcHRpb25zdmFsdWU9XCIke3RoaXMub3B0aW9uc3ZhbHVlfVwiIG9wdGlvbnN0ZXh0PVwiJHt0aGlzLm9wdGlvbnN0ZXh0fVwiXHJcbiAgICAgICAgICAgIHZhbHVlc2NyaXB0PVwiJHt0aGlzLnZhbHVlc2NyaXB0fVwiIG9wdGlvbnNzY3JpcHQ9XCIke3RoaXMub3B0aW9uc3NjcmlwdH1cIlxyXG4gICAgICAgICAgICBpbnN0YW50dmFsaWRhdGU9XCIke3RoaXMuaW5zdGFudHZhbGlkYXRlfVwiYDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGgrPWByZWZyZXNoZmllbGRzPVwiYDtcclxuICAgICAgICAgICAgaWYodGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgIGgrPXRoaXMucmVmcmVzaGZpZWxkc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICBpZihpIT10aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoLTEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoKz1cIjtcIjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaCs9YFwiYCtcclxuXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBgPmArXHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUrXHJcbiAgICAgICAgICAgIGA8L2Ytc2VsZWN0PjwvZGl2PmBcclxuICAgICAgICByZXR1cm4gaDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgZ2V0Tm9kZUNvbmZpZ0luZm8oKXtcclxuICAgICAgICBsZXQgbm9kZSA9IHt9O1xyXG5cdFx0bm9kZS50ZXh0ID0gdGhpcy50ZXh0O1xyXG5cdFx0bm9kZS5pY29uID0gJ2dseXBoaWNvbiBnbHlwaGljb24tZ2xhc3MnO1xyXG5cdFx0bm9kZS51dWlkID0gdGhpcy5nZXRQcm9wKCdpZCcpO1x0XHJcblx0XHRub2RlLmluc3RhbmNlID0gdGhpcztcclxuXHRcdHJldHVybiBub2RlO1xyXG4gICAgfVxyXG4gICAgaXNPbkJhc2VMaW5lKHgseSl7XHJcbiAgICAgICAgaWYodGhpcy54K3RoaXMud2lkdGgtNTx4ICYmIHRoaXMueCt0aGlzLndpZHRoKzU+eCAmJiB0aGlzLnkrdGhpcy5oZWlnaHQtNTx5ICYmIHRoaXMueSt0aGlzLmhlaWdodCs1Pnkpe1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIH1cclxuXHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgU2VsZWN0O1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9jb21wb25lbnQvU2VsZWN0LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7OztBQUFBOzs7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTdDQTtBQThDQTtBQUNBOzs7QUFBQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7O0FBbEhBO0FBQ0E7QUFvSEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///102\n");

/***/ }),
/* 103 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Dept = function (_Element) {\n    _inherits(Dept, _Element);\n\n    function Dept() {\n        _classCallCheck(this, Dept);\n\n        var _this = _possibleConstructorReturn(this, (Dept.__proto__ || Object.getPrototypeOf(Dept)).call(this));\n\n        _this.width = 150;\n        _this.height = 30;\n        _this.name = \"\"; //鍞竴鏍囪瘑\n        _this.text = \"Dept\";\n        _this.cursor = \"default\";\n        _this.scope = \"dept\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.belongId = \"\";\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n        _this.texttype = \"鏅€歕"; //鏄剧ず\n\n        _this.value = \"閮ㄩ棬閫夋嫨妗哱";\n        _this.readonlyshowvalonly = \"true\";\n        _this.refreshonchanged = \"false\";\n        _this.calculateonrefresh = \"false\";\n        _this.isdefaultvalue = \"false\";\n        _this.editmode = 0;\n        _this.valuescript = '';\n        _this.mobile = \"false\";\n        _this.discript = '';\n        _this.refreshmode = 0;\n\n        _this.validatelibs = \"core.dynaform.form.formfield.validate.checkPhone_system\";\n        _this.validaterule = \"\";\n        _this.hiddenscript = \"\";\n        _this.hiddenvalue = \"\";\n        _this.hiddenprintscript = \"\";\n        _this.printhiddenvalue = \"\";\n        _this.readonlyscript = \"\";\n        _this.processdescription = \"\"; //鍊艰璁¤剼鏈殑鍊糪n        _this.departmentlevel = -1; //鍙€夐儴闂╘n        _this.relatedfield = \"\"; //涓婄骇閮ㄩ棬鑱斿姩瀛楁\n        _this.limitbyuser = \"false\"; //浠呮樉绀哄綋鍓嶇敤鎴锋墍灞為儴闂ㄥ強涓嬪睘閮ㄩ棬\n        _this.allowempty = \"true\"; //閫夐」涓寘鍚┖鍊糪n        _this.defaultoptiontype = 16; //榛樿鍊糪n        _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n        _this.smallwidth = 100;\n        _this.instantvalidate = \"false\"; //鍗虫椂鏍¢獙锛堟柊澧炲睘鎬э級\n        return _this;\n    }\n\n    _createClass(Dept, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            // let h=`<div class=\"inlineBlock\" id=\"${this.id}\" draggable=\"true\" style=\"min-width:${this.width}px;min-height:${this.height}px;\">`;\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-select classname=\"cn.myapps.runtime.dynaform.form.ejb.DepartmentField\" type=\"text\" nodeid=\"' + this.id + '\" class=\"inlineBlock\" minwidth=\"' + this.width + '\" style=\"border:1px solid #ccc;min-width:' + this.smallwidth + 'px;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\" name=\"' + this.name + '\" isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\"  \\n            texttype=\"' + this.texttype + '\" processdescription=\"' + this.processdescription + '\" \\n            readonlyshowvalonly=\"' + this.readonlyshowvalonly + '\"\\n            isdefaultvalue=\"' + this.isdefaultvalue + '\" refreshonchanged=\"' + this.refreshonchanged + '\" \\n            calculateonrefresh=\"' + this.calculateonrefresh + '\" mobile=\"' + this.mobile + '\" discript=\"' + this.discript + '\"\\n            refreshmode=\"' + this.refreshmode + '\" departmentlevel=\"' + this.departmentlevel + '\" \\n            relatedfield=\"' + this.relatedfield + '\" limitbyuser=\"' + this.limitbyuser + '\" \\n            allowempty=\"' + this.allowempty + '\" defaultoptiontype=\"' + this.defaultoptiontype + '\" \\n            validatelibs=\"' + this.validatelibs + '\" validaterule=\"' + this.validaterule + '\" \\n            hiddenscript=\"' + this.hiddenscript + '\" hiddenvalue=\"' + this.hiddenvalue + '\" \\n            hiddenprintscript=\"' + this.hiddenprintscript + '\" \\n            printhiddenvalue=\"' + this.printhiddenvalue + '\" readonlyscript=\"' + this.readonlyscript + '\" \\n            editmode=\"' + this.editmode + '\" valuescript=\"' + this.valuescript + '\"\\n            instantvalidate=\"' + this.instantvalidate + '\"';\n\n            h += 'refreshfields=\"';\n            if (this.refreshfields.length > 0) {\n                for (var i = 0; i < this.refreshfields.length; i++) {\n                    h += this.refreshfields[i];\n                    if (i != this.refreshfields.length - 1) {\n                        h += \";\";\n                    }\n                }\n            }\n            h += '\"' + '>' + this.value + '</f-select></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n        // isOnBaseLine(x,y){\n        //     if(this.x+this.width-5<x && this.x+this.width+5>x && this.y+this.height-5<y && this.y+this.height+5>y){\n        //         return this;\n        //     }\n        //     return false;\n\n        // }\n\n    }]);\n\n    return Dept;\n}(_Element3.default);\n\nexports.default = Dept;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9EZXB0LmpzPzcwNjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVsZW1lbnQgZnJvbSAnLi9FbGVtZW50JztcclxuaW1wb3J0IHtTZXF1ZW5jZX0gZnJvbSAnLi4vLi4vdXRpbGl0eSc7XHJcbmNsYXNzIERlcHQgZXh0ZW5kcyBFbGVtZW50e1xyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMud2lkdGg9MTUwO1xyXG4gICAgICAgIHRoaXMuaGVpZ2h0PTMwO1xyXG4gICAgICAgIHRoaXMubmFtZT1cIlwiOy8v5ZSv5LiA5qCH6K+GXHJcbiAgICAgICAgdGhpcy50ZXh0PVwiRGVwdFwiO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yPVwiZGVmYXVsdFwiO1xyXG4gICAgICAgIHRoaXMuc2NvcGU9XCJkZXB0XCI7XHJcbiAgICAgICAgdGhpcy5pZCA9IFNlcXVlbmNlLmNyZWF0ZVV1aWQoKTtcclxuICAgICAgICB0aGlzLmJlbG9uZ0lkPVwiXCI7XHJcbiAgICAgICAgdGhpcy5wcmVYPTA7XHJcbiAgICAgICAgdGhpcy5wcmVZPTA7XHJcbiAgICAgICAgdGhpcy5tb3ZlWD0wO1xyXG4gICAgICAgIHRoaXMubW92ZVk9MDtcclxuICAgICAgICB0aGlzLnRleHR0eXBlPVwi5pmu6YCaXCI7Ly/mmL7npLpcclxuXHJcbiAgICAgICAgdGhpcy52YWx1ZT1cIumDqOmXqOmAieaLqeahhlwiO1xyXG4gICAgICAgIHRoaXMucmVhZG9ubHlzaG93dmFsb25seT1cInRydWVcIjtcclxuICAgICAgICB0aGlzLnJlZnJlc2hvbmNoYW5nZWQ9XCJmYWxzZVwiO1xyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlb25yZWZyZXNoPVwiZmFsc2VcIjtcclxuICAgICAgICB0aGlzLmlzZGVmYXVsdHZhbHVlPVwiZmFsc2VcIjtcclxuICAgICAgICB0aGlzLmVkaXRtb2RlPTA7XHJcbiAgICAgICAgdGhpcy52YWx1ZXNjcmlwdD0nJztcclxuICAgICAgICB0aGlzLm1vYmlsZT1cImZhbHNlXCI7XHJcbiAgICAgICAgdGhpcy5kaXNjcmlwdD0nJztcclxuICAgICAgICB0aGlzLnJlZnJlc2htb2RlPTA7XHJcblxyXG4gICAgICAgIHRoaXMudmFsaWRhdGVsaWJzPVwiY29yZS5keW5hZm9ybS5mb3JtLmZvcm1maWVsZC52YWxpZGF0ZS5jaGVja1Bob25lX3N5c3RlbVwiO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVydWxlPVwiXCI7XHJcbiAgICAgICAgdGhpcy5oaWRkZW5zY3JpcHQ9XCJcIjtcclxuICAgICAgICB0aGlzLmhpZGRlbnZhbHVlPVwiXCI7XHJcbiAgICAgICAgdGhpcy5oaWRkZW5wcmludHNjcmlwdD1cIlwiO1xyXG4gICAgICAgIHRoaXMucHJpbnRoaWRkZW52YWx1ZT1cIlwiO1xyXG4gICAgICAgIHRoaXMucmVhZG9ubHlzY3JpcHQ9XCJcIjtcclxuICAgICAgICB0aGlzLnByb2Nlc3NkZXNjcmlwdGlvbj1cIlwiOy8v5YC86K6+6K6h6ISa5pys55qE5YC8XHJcbiAgICAgICAgdGhpcy5kZXBhcnRtZW50bGV2ZWw9LTEvL+WPr+mAiemDqOmXqFxyXG4gICAgICAgIHRoaXMucmVsYXRlZGZpZWxkPVwiXCIvL+S4iue6p+mDqOmXqOiBlOWKqOWtl+autVxyXG4gICAgICAgIHRoaXMubGltaXRieXVzZXI9XCJmYWxzZVwiLy/ku4XmmL7npLrlvZPliY3nlKjmiLfmiYDlsZ7pg6jpl6jlj4rkuIvlsZ7pg6jpl6hcclxuICAgICAgICB0aGlzLmFsbG93ZW1wdHk9XCJ0cnVlXCIvL+mAiemhueS4reWMheWQq+epuuWAvFxyXG4gICAgICAgIHRoaXMuZGVmYXVsdG9wdGlvbnR5cGU9MTYvL+m7mOiupOWAvFxyXG4gICAgICAgIHRoaXMucmVmcmVzaGZpZWxkcz1bXTsvL+WxgOmDqOWIt+aWsOeahOWtl+autee7hOWQiFxyXG4gICAgICAgIHRoaXMuc21hbGx3aWR0aD0xMDA7XHJcbiAgICAgICAgdGhpcy5pbnN0YW50dmFsaWRhdGU9XCJmYWxzZVwiLy/ljbPml7bmoKHpqozvvIjmlrDlop7lsZ7mgKfvvIlcclxuICAgIH1cclxuICAgIHRvSHRtbCgpe31cclxuICAgIFxyXG4gICAgcGFpbnQoKXtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgaD1cIlwiO1xyXG4gICAgICAgIGlmKHRoaXMuaXNibG9jaz09XCJ0cnVlXCIpe1xyXG4gICAgICAgICAgICBoPWA8ZGl2IGNsYXNzPVwiYmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgc3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgaD1gPGRpdiBjbGFzcz1cImlubGluZUJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIHN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbGV0IGg9YDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICAgICAgaWYodGhpcy5pc3Nob3dsYWJlbD09XCJ0cnVlXCIgfHwgdGhpcy5pc3Nob3dsYWJlbD09dHJ1ZSl7XHJcbiAgICAgICAgICAgIGgrPWA8Zi1sYWJlbCBzdHlsZT1cImxpbmUtaGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+JHt0aGlzLmxhYmVsdmFsdWV9PC9mLWxhYmVsPmBcclxuICAgICAgICB9XHJcbiAgICAgICAgICAgIGgrPWA8Zi1zZWxlY3QgY2xhc3NuYW1lPVwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuRGVwYXJ0bWVudEZpZWxkXCIgdHlwZT1cInRleHRcIiBub2RlaWQ9XCIke3RoaXMuaWR9XCIgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIG1pbndpZHRoPVwiJHt0aGlzLndpZHRofVwiIHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjY2NjO21pbi13aWR0aDoke3RoaXMuc21hbGx3aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7YFxyXG4gICAgICAgICAgICBpZih0aGlzLnpJbmRleCl7XHJcbiAgICAgICAgICAgICAgICBoKz1gei1pbmRleDpgK3RoaXMuekluZGV4K2A7YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBoKz1gXCIgbmFtZT1cIiR7dGhpcy5uYW1lfVwiIGlzc2hvd2xhYmVsPVwiJHt0aGlzLmlzc2hvd2xhYmVsfVwiIGxhYmVsdmFsdWU9XCIke3RoaXMubGFiZWx2YWx1ZX1cIiAgXHJcbiAgICAgICAgICAgIHRleHR0eXBlPVwiJHt0aGlzLnRleHR0eXBlfVwiIHByb2Nlc3NkZXNjcmlwdGlvbj1cIiR7dGhpcy5wcm9jZXNzZGVzY3JpcHRpb259XCIgXHJcbiAgICAgICAgICAgIHJlYWRvbmx5c2hvd3ZhbG9ubHk9XCIke3RoaXMucmVhZG9ubHlzaG93dmFsb25seX1cIlxyXG4gICAgICAgICAgICBpc2RlZmF1bHR2YWx1ZT1cIiR7dGhpcy5pc2RlZmF1bHR2YWx1ZX1cIiByZWZyZXNob25jaGFuZ2VkPVwiJHt0aGlzLnJlZnJlc2hvbmNoYW5nZWR9XCIgXHJcbiAgICAgICAgICAgIGNhbGN1bGF0ZW9ucmVmcmVzaD1cIiR7dGhpcy5jYWxjdWxhdGVvbnJlZnJlc2h9XCIgbW9iaWxlPVwiJHt0aGlzLm1vYmlsZX1cIiBkaXNjcmlwdD1cIiR7dGhpcy5kaXNjcmlwdH1cIlxyXG4gICAgICAgICAgICByZWZyZXNobW9kZT1cIiR7dGhpcy5yZWZyZXNobW9kZX1cIiBkZXBhcnRtZW50bGV2ZWw9XCIke3RoaXMuZGVwYXJ0bWVudGxldmVsfVwiIFxyXG4gICAgICAgICAgICByZWxhdGVkZmllbGQ9XCIke3RoaXMucmVsYXRlZGZpZWxkfVwiIGxpbWl0Ynl1c2VyPVwiJHt0aGlzLmxpbWl0Ynl1c2VyfVwiIFxyXG4gICAgICAgICAgICBhbGxvd2VtcHR5PVwiJHt0aGlzLmFsbG93ZW1wdHl9XCIgZGVmYXVsdG9wdGlvbnR5cGU9XCIke3RoaXMuZGVmYXVsdG9wdGlvbnR5cGV9XCIgXHJcbiAgICAgICAgICAgIHZhbGlkYXRlbGlicz1cIiR7dGhpcy52YWxpZGF0ZWxpYnN9XCIgdmFsaWRhdGVydWxlPVwiJHt0aGlzLnZhbGlkYXRlcnVsZX1cIiBcclxuICAgICAgICAgICAgaGlkZGVuc2NyaXB0PVwiJHt0aGlzLmhpZGRlbnNjcmlwdH1cIiBoaWRkZW52YWx1ZT1cIiR7dGhpcy5oaWRkZW52YWx1ZX1cIiBcclxuICAgICAgICAgICAgaGlkZGVucHJpbnRzY3JpcHQ9XCIke3RoaXMuaGlkZGVucHJpbnRzY3JpcHR9XCIgXHJcbiAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU9XCIke3RoaXMucHJpbnRoaWRkZW52YWx1ZX1cIiByZWFkb25seXNjcmlwdD1cIiR7dGhpcy5yZWFkb25seXNjcmlwdH1cIiBcclxuICAgICAgICAgICAgZWRpdG1vZGU9XCIke3RoaXMuZWRpdG1vZGV9XCIgdmFsdWVzY3JpcHQ9XCIke3RoaXMudmFsdWVzY3JpcHR9XCJcclxuICAgICAgICAgICAgaW5zdGFudHZhbGlkYXRlPVwiJHt0aGlzLmluc3RhbnR2YWxpZGF0ZX1cImA7XHJcbiAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICBoKz1gcmVmcmVzaGZpZWxkcz1cImA7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgICAgICBoKz10aGlzLnJlZnJlc2hmaWVsZHNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoaSE9dGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaCs9XCI7XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGgrPWBcImArXHJcblxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgYD5gK1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlK1xyXG4gICAgICAgICAgICBgPC9mLXNlbGVjdD48L2Rpdj5gXHJcbiAgICAgICAgcmV0dXJuIGg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGdldE5vZGVDb25maWdJbmZvKCl7XHJcbiAgICAgICAgbGV0IG5vZGUgPSB7fTtcclxuXHRcdG5vZGUudGV4dCA9IHRoaXMudGV4dDtcclxuXHRcdG5vZGUuaWNvbiA9ICdnbHlwaGljb24gZ2x5cGhpY29uLWdsYXNzJztcclxuXHRcdG5vZGUudXVpZCA9IHRoaXMuZ2V0UHJvcCgnaWQnKTtcdFxyXG5cdFx0bm9kZS5pbnN0YW5jZSA9IHRoaXM7XHJcblx0XHRyZXR1cm4gbm9kZTtcclxuICAgIH1cclxuICAgIC8vIGlzT25CYXNlTGluZSh4LHkpe1xyXG4gICAgLy8gICAgIGlmKHRoaXMueCt0aGlzLndpZHRoLTU8eCAmJiB0aGlzLngrdGhpcy53aWR0aCs1PnggJiYgdGhpcy55K3RoaXMuaGVpZ2h0LTU8eSAmJiB0aGlzLnkrdGhpcy5oZWlnaHQrNT55KXtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAvLyB9XHJcblxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IERlcHQ7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9mb3JtL2NvbXBvbmVudC9EZXB0LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7OztBQUFBOzs7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFDQTtBQTJDQTtBQUNBOzs7QUFBQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQWpIQTtBQUNBO0FBa0hBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///103\n");

/***/ }),
/* 104 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Selectaboutfield = function (_Element) {\n    _inherits(Selectaboutfield, _Element);\n\n    function Selectaboutfield() {\n        _classCallCheck(this, Selectaboutfield);\n\n        var _this = _possibleConstructorReturn(this, (Selectaboutfield.__proto__ || Object.getPrototypeOf(Selectaboutfield)).call(this));\n\n        _this.width = 210;\n        _this.height = 20;\n        _this.name = \"\"; //鍞竴鏍囪瘑\n        _this.text = \"Selectaboutfield\";\n        _this.cursor = \"default\";\n        _this.scope = \"selectaboutfield\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.belongId = \"\";\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n\n        _this.value = \"宸﹀彸閫夋嫨妗哱";\n        _this.refreshonchanged = \"false\";\n        _this.calculateonrefresh = \"false\";\n        _this.isdefaultvalue = \"false\"; //鏄惁鏄粯璁ゅ€糪n\n        _this.editmode = 0;\n        _this.valuescript = '';\n        _this.discript = '';\n        _this.refreshmode = 0;\n\n        _this.validatelibs = \"core.dynaform.form.formfield.validate.checkPhone_system\";\n        _this.validaterule = \"\";\n        _this.hiddenscript = \"\";\n        _this.hiddenvalue = \"\";\n        _this.hiddenprintscript = \"\";\n        _this.printhiddenvalue = \"\";\n        _this.readonlyscript = \"\";\n        _this.module = \"\"; //閫夐」-妯″潡\n        _this.dialogview = \"\"; //閫夐」-瑙嗗浘\n        _this.optionsvalue = \"\"; //閫夐」-鏄剧ず鍊糪n        _this.optionstext = \"\"; //閫夐」-鐪熷疄鍊糪n\n        _this.optionseditmode = 0; //閫夐」璁捐杩樻槸鑴氭湰妯″紡鐨勫弬鏁癨n        _this.optionsscript = \"\"; //閫夐」鑴氭湰鍊糪n        _this.processdescription = \"\"; //鍊艰璁¤剼鏈殑鍊糪n        _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n        _this.smallwidth = 100;\n        _this.instantvalidate = \"false\"; //鍗虫椂鏍¢獙\n        return _this;\n    }\n\n    _createClass(Selectaboutfield, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n            // if(this.x==0&&this.y==0){\n            //     this.x=this.left;\n            //     this.y=this.top;\n            // }else{\n            //     this.left=this.x;\n            //     this.top=this.y;\n            // }\n            //console.log(panel);\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            // let h=`<div class=\"inlineBlock\" id=\"${this.id}\" draggable=\"true\" style=\"min-width:${this.width}px;min-height:${this.height}px;\">`;\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-select classname=\"cn.myapps.runtime.dynaform.form.ejb.SelectAboutField\" nodeid=\"' + this.id + '\" class=\"inlineBlock\" minwidth=\"' + this.width + '\" style=\"border:1px solid #ccc;min-width:' + this.smallwidth + 'px;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\" name=\"' + this.name + '\" isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\" \\n            processdescription=\"' + this.processdescription + '\" \\n            isdefaultvalue=\"' + this.isdefaultvalue + '\" refreshonchanged=\"' + this.refreshonchanged + '\" \\n            calculateonrefresh=\"' + this.calculateonrefresh + '\" discript=\"' + this.discript + '\"\\n            refreshmode=\"' + this.refreshmode + '\" validatelibs=\"' + this.validatelibs + '\" \\n            validaterule=\"' + this.validaterule + '\"\\n            hiddenscript=\"' + this.hiddenscript + '\" hiddenvalue=\"' + this.hiddenvalue + '\" \\n            hiddenprintscript=\"' + this.hiddenprintscript + '\" \\n            printhiddenvalue=\"' + this.printhiddenvalue + '\" readonlyscript=\"' + this.readonlyscript + '\" \\n            editmode=\"' + this.editmode + '\" module=\"' + this.module + '\"\\n            dialogview=\"' + this.dialogview + '\" optionseditmode=\"' + this.optionseditmode + '\"\\n            optionsvalue=\"' + this.optionsvalue + '\" optionstext=\"' + this.optionstext + '\"\\n            valuescript=\"' + this.valuescript + '\" optionsscript=\"' + this.optionsscript + '\"\\n            instantvalidate=\"' + this.instantvalidate + '\"';\n\n            h += 'refreshfields=\"';\n            if (this.refreshfields.length > 0) {\n                for (var i = 0; i < this.refreshfields.length; i++) {\n                    h += this.refreshfields[i];\n                    if (i != this.refreshfields.length - 1) {\n                        h += \";\";\n                    }\n                }\n            }\n            h += '\"' + '>' + this.value + '</f-select></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n    }]);\n\n    return Selectaboutfield;\n}(_Element3.default);\n\nexports.default = Selectaboutfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9TZWxlY3RhYm91dGZpZWxkLmpzP2NmZTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVsZW1lbnQgZnJvbSAnLi9FbGVtZW50JztcclxuaW1wb3J0IHtTZXF1ZW5jZX0gZnJvbSAnLi4vLi4vdXRpbGl0eSc7XHJcbmNsYXNzIFNlbGVjdGFib3V0ZmllbGQgZXh0ZW5kcyBFbGVtZW50e1xyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMud2lkdGg9MjEwO1xyXG4gICAgICAgIHRoaXMuaGVpZ2h0PTIwO1xyXG4gICAgICAgIHRoaXMubmFtZT1cIlwiOy8v5ZSv5LiA5qCH6K+GXHJcbiAgICAgICAgdGhpcy50ZXh0PVwiU2VsZWN0YWJvdXRmaWVsZFwiO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yPVwiZGVmYXVsdFwiO1xyXG4gICAgICAgIHRoaXMuc2NvcGU9XCJzZWxlY3RhYm91dGZpZWxkXCI7XHJcbiAgICAgICAgdGhpcy5pZCA9IFNlcXVlbmNlLmNyZWF0ZVV1aWQoKTtcclxuICAgICAgICB0aGlzLmJlbG9uZ0lkPVwiXCI7XHJcbiAgICAgICAgdGhpcy5wcmVYPTA7XHJcbiAgICAgICAgdGhpcy5wcmVZPTA7XHJcbiAgICAgICAgdGhpcy5tb3ZlWD0wO1xyXG4gICAgICAgIHRoaXMubW92ZVk9MDtcclxuXHJcbiAgICAgICAgdGhpcy52YWx1ZT1cIuW3puWPs+mAieaLqeahhlwiO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaG9uY2hhbmdlZD1cImZhbHNlXCI7XHJcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVvbnJlZnJlc2g9XCJmYWxzZVwiO1xyXG4gICAgICAgIHRoaXMuaXNkZWZhdWx0dmFsdWU9XCJmYWxzZVwiLy/mmK/lkKbmmK/pu5jorqTlgLxcclxuXHJcbiAgICAgICAgdGhpcy5lZGl0bW9kZT0wO1xyXG4gICAgICAgIHRoaXMudmFsdWVzY3JpcHQ9Jyc7XHJcbiAgICAgICAgdGhpcy5kaXNjcmlwdD0nJztcclxuICAgICAgICB0aGlzLnJlZnJlc2htb2RlPTA7XHJcblxyXG4gICAgICAgIHRoaXMudmFsaWRhdGVsaWJzPVwiY29yZS5keW5hZm9ybS5mb3JtLmZvcm1maWVsZC52YWxpZGF0ZS5jaGVja1Bob25lX3N5c3RlbVwiO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVydWxlPVwiXCI7XHJcbiAgICAgICAgdGhpcy5oaWRkZW5zY3JpcHQ9XCJcIjtcclxuICAgICAgICB0aGlzLmhpZGRlbnZhbHVlPVwiXCI7XHJcbiAgICAgICAgdGhpcy5oaWRkZW5wcmludHNjcmlwdD1cIlwiO1xyXG4gICAgICAgIHRoaXMucHJpbnRoaWRkZW52YWx1ZT1cIlwiO1xyXG4gICAgICAgIHRoaXMucmVhZG9ubHlzY3JpcHQ9XCJcIjtcclxuICAgICAgICB0aGlzLm1vZHVsZT1cIlwiOy8v6YCJ6aG5LeaooeWdl1xyXG4gICAgICAgIHRoaXMuZGlhbG9ndmlldz1cIlwiOy8v6YCJ6aG5LeinhuWbvlxyXG4gICAgICAgIHRoaXMub3B0aW9uc3ZhbHVlPVwiXCI7Ly/pgInpobkt5pi+56S65YC8XHJcbiAgICAgICAgdGhpcy5vcHRpb25zdGV4dD1cIlwiOy8v6YCJ6aG5Leecn+WunuWAvFxyXG5cclxuICAgICAgICB0aGlzLm9wdGlvbnNlZGl0bW9kZT0wOy8v6YCJ6aG56K6+6K6h6L+Y5piv6ISa5pys5qih5byP55qE5Y+C5pWwXHJcbiAgICAgICAgdGhpcy5vcHRpb25zc2NyaXB0PVwiXCI7Ly/pgInpobnohJrmnKzlgLxcclxuICAgICAgICB0aGlzLnByb2Nlc3NkZXNjcmlwdGlvbj1cIlwiOy8v5YC86K6+6K6h6ISa5pys55qE5YC8XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoZmllbGRzPVtdOy8v5bGA6YOo5Yi35paw55qE5a2X5q6157uE5ZCIXHJcbiAgICAgICAgdGhpcy5zbWFsbHdpZHRoPTEwMDtcclxuICAgICAgICB0aGlzLmluc3RhbnR2YWxpZGF0ZT1cImZhbHNlXCI7Ly/ljbPml7bmoKHpqoxcclxuICAgIH1cclxuICAgIHRvSHRtbCgpe31cclxuICAgIFxyXG4gICAgcGFpbnQoKXtcclxuICAgICAgICAvLyBpZih0aGlzLng9PTAmJnRoaXMueT09MCl7XHJcbiAgICAgICAgLy8gICAgIHRoaXMueD10aGlzLmxlZnQ7XHJcbiAgICAgICAgLy8gICAgIHRoaXMueT10aGlzLnRvcDtcclxuICAgICAgICAvLyB9ZWxzZXtcclxuICAgICAgICAvLyAgICAgdGhpcy5sZWZ0PXRoaXMueDtcclxuICAgICAgICAvLyAgICAgdGhpcy50b3A9dGhpcy55O1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvL2NvbnNvbGUubG9nKHBhbmVsKTtcclxuICAgICAgICBsZXQgaD1cIlwiO1xyXG4gICAgICAgIGlmKHRoaXMuaXNibG9jaz09XCJ0cnVlXCIpe1xyXG4gICAgICAgICAgICBoPWA8ZGl2IGNsYXNzPVwiYmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgc3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgaD1gPGRpdiBjbGFzcz1cImlubGluZUJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIHN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbGV0IGg9YDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICAgICAgaWYodGhpcy5pc3Nob3dsYWJlbD09XCJ0cnVlXCIgfHwgdGhpcy5pc3Nob3dsYWJlbD09dHJ1ZSl7XHJcbiAgICAgICAgICAgIGgrPWA8Zi1sYWJlbCBzdHlsZT1cImxpbmUtaGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+JHt0aGlzLmxhYmVsdmFsdWV9PC9mLWxhYmVsPmBcclxuICAgICAgICB9XHJcbiAgICAgICAgICAgIGgrPWA8Zi1zZWxlY3QgY2xhc3NuYW1lPVwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuU2VsZWN0QWJvdXRGaWVsZFwiIG5vZGVpZD1cIiR7dGhpcy5pZH1cIiBjbGFzcz1cImlubGluZUJsb2NrXCIgbWlud2lkdGg9XCIke3RoaXMud2lkdGh9XCIgc3R5bGU9XCJib3JkZXI6MXB4IHNvbGlkICNjY2M7bWluLXdpZHRoOiR7dGhpcy5zbWFsbHdpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtgXHJcbiAgICAgICAgICAgIGlmKHRoaXMuekluZGV4KXtcclxuICAgICAgICAgICAgICAgIGgrPWB6LWluZGV4OmArdGhpcy56SW5kZXgrYDtgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGgrPWBcIiBuYW1lPVwiJHt0aGlzLm5hbWV9XCIgaXNzaG93bGFiZWw9XCIke3RoaXMuaXNzaG93bGFiZWx9XCIgbGFiZWx2YWx1ZT1cIiR7dGhpcy5sYWJlbHZhbHVlfVwiIFxyXG4gICAgICAgICAgICBwcm9jZXNzZGVzY3JpcHRpb249XCIke3RoaXMucHJvY2Vzc2Rlc2NyaXB0aW9ufVwiIFxyXG4gICAgICAgICAgICBpc2RlZmF1bHR2YWx1ZT1cIiR7dGhpcy5pc2RlZmF1bHR2YWx1ZX1cIiByZWZyZXNob25jaGFuZ2VkPVwiJHt0aGlzLnJlZnJlc2hvbmNoYW5nZWR9XCIgXHJcbiAgICAgICAgICAgIGNhbGN1bGF0ZW9ucmVmcmVzaD1cIiR7dGhpcy5jYWxjdWxhdGVvbnJlZnJlc2h9XCIgZGlzY3JpcHQ9XCIke3RoaXMuZGlzY3JpcHR9XCJcclxuICAgICAgICAgICAgcmVmcmVzaG1vZGU9XCIke3RoaXMucmVmcmVzaG1vZGV9XCIgdmFsaWRhdGVsaWJzPVwiJHt0aGlzLnZhbGlkYXRlbGlic31cIiBcclxuICAgICAgICAgICAgdmFsaWRhdGVydWxlPVwiJHt0aGlzLnZhbGlkYXRlcnVsZX1cIlxyXG4gICAgICAgICAgICBoaWRkZW5zY3JpcHQ9XCIke3RoaXMuaGlkZGVuc2NyaXB0fVwiIGhpZGRlbnZhbHVlPVwiJHt0aGlzLmhpZGRlbnZhbHVlfVwiIFxyXG4gICAgICAgICAgICBoaWRkZW5wcmludHNjcmlwdD1cIiR7dGhpcy5oaWRkZW5wcmludHNjcmlwdH1cIiBcclxuICAgICAgICAgICAgcHJpbnRoaWRkZW52YWx1ZT1cIiR7dGhpcy5wcmludGhpZGRlbnZhbHVlfVwiIHJlYWRvbmx5c2NyaXB0PVwiJHt0aGlzLnJlYWRvbmx5c2NyaXB0fVwiIFxyXG4gICAgICAgICAgICBlZGl0bW9kZT1cIiR7dGhpcy5lZGl0bW9kZX1cIiBtb2R1bGU9XCIke3RoaXMubW9kdWxlfVwiXHJcbiAgICAgICAgICAgIGRpYWxvZ3ZpZXc9XCIke3RoaXMuZGlhbG9ndmlld31cIiBvcHRpb25zZWRpdG1vZGU9XCIke3RoaXMub3B0aW9uc2VkaXRtb2RlfVwiXHJcbiAgICAgICAgICAgIG9wdGlvbnN2YWx1ZT1cIiR7dGhpcy5vcHRpb25zdmFsdWV9XCIgb3B0aW9uc3RleHQ9XCIke3RoaXMub3B0aW9uc3RleHR9XCJcclxuICAgICAgICAgICAgdmFsdWVzY3JpcHQ9XCIke3RoaXMudmFsdWVzY3JpcHR9XCIgb3B0aW9uc3NjcmlwdD1cIiR7dGhpcy5vcHRpb25zc2NyaXB0fVwiXHJcbiAgICAgICAgICAgIGluc3RhbnR2YWxpZGF0ZT1cIiR7dGhpcy5pbnN0YW50dmFsaWRhdGV9XCJgO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICBoKz1gcmVmcmVzaGZpZWxkcz1cImA7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgICAgICBoKz10aGlzLnJlZnJlc2hmaWVsZHNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoaSE9dGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaCs9XCI7XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGgrPWBcImArXHJcblxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgYD5gK1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlK1xyXG4gICAgICAgICAgICBgPC9mLXNlbGVjdD48L2Rpdj5gXHJcbiAgICAgICAgcmV0dXJuIGg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGdldE5vZGVDb25maWdJbmZvKCl7XHJcbiAgICAgICAgbGV0IG5vZGUgPSB7fTtcclxuXHRcdG5vZGUudGV4dCA9IHRoaXMudGV4dDtcclxuXHRcdG5vZGUuaWNvbiA9ICdnbHlwaGljb24gZ2x5cGhpY29uLWdsYXNzJztcclxuXHRcdG5vZGUudXVpZCA9IHRoaXMuZ2V0UHJvcCgnaWQnKTtcdFxyXG5cdFx0bm9kZS5pbnN0YW5jZSA9IHRoaXM7XHJcblx0XHRyZXR1cm4gbm9kZTtcclxuICAgIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBTZWxlY3RhYm91dGZpZWxkO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9jb21wb25lbnQvU2VsZWN0YWJvdXRmaWVsZC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFBQTs7O0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUExQ0E7QUEyQ0E7QUFDQTs7O0FBQUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBL0dBO0FBQ0E7QUFnSEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///104\n");

/***/ }),
/* 105 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Treedepartmentfield = function (_Element) {\n    _inherits(Treedepartmentfield, _Element);\n\n    function Treedepartmentfield() {\n        _classCallCheck(this, Treedepartmentfield);\n\n        var _this = _possibleConstructorReturn(this, (Treedepartmentfield.__proto__ || Object.getPrototypeOf(Treedepartmentfield)).call(this));\n\n        _this.width = 150;\n        _this.height = 30;\n        _this.name = \"\"; //鍞竴鏍囪瘑\n        _this.text = \"Treedepartmentfield\";\n        _this.cursor = \"default\";\n        _this.scope = \"treedepartmentfield\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.belongId = \"\";\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n        _this.texttype = \"text\"; //鏄剧ず\n\n        _this.value = \"鏍戝舰閮ㄩ棬閫夋嫨妗哱";\n        _this.readonlyshowvalonly = \"true\";\n        _this.refreshonchanged = \"false\";\n        _this.calculateonrefresh = \"false\";\n        _this.isdefaultvalue = \"false\";\n        _this.editmode = 0;\n        _this.valuescript = '';\n        _this.mobile = \"false\";\n        _this.discript = '';\n        _this.refreshmode = 0;\n\n        _this.validatelibs = \"core.dynaform.form.formfield.validate.checkPhone_system\"; //鏍¢獙鏂瑰紡\n        _this.validaterule = \"\"; //鏍¢獙鑴氭湰\n        _this.hiddenscript = \"\";\n        _this.hiddenvalue = \"\";\n        _this.hiddenprintscript = \"\";\n        _this.printhiddenvalue = \"\";\n        _this.readonlyscript = \"\";\n        _this.processdescription = \"\"; //鍊艰璁¤剼鏈殑鍊糪n        _this.limit = \"\"; //鏈€澶氬彲閫塡n        _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n        _this.smallwidth = 100;\n        _this.instantvalidate = \"false\"; //鍗虫椂鏍¢獙\n        return _this;\n    }\n\n    _createClass(Treedepartmentfield, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n            // if(this.x==0&&this.y==0){\n            //     this.x=this.left;\n            //     this.y=this.top;\n            // }else{\n            //     this.left=this.x;\n            //     this.top=this.y;\n            // }\n            //console.log(panel);\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            // let h=`<div class=\"inlineBlock\" id=\"${this.id}\" draggable=\"true\" style=\"min-width:${this.width}px;min-height:${this.height}px;\">`;\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-select classname=\"cn.myapps.runtime.dynaform.form.ejb.TreeDepartmentField\" id=\"' + this.id + '\" draggable=\"true\" minwidth=\"' + this.width + '\" class=\"inlineBlock\" style=\"border:1px solid #ccc;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\" name=\"' + this.name + '\" isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\"  \\n            texttype=\"' + this.texttype + '\" \\n            processdescription=\"' + this.processdescription + '\" readonlyshowvalonly=\"' + this.readonlyshowvalonly + '\" \\n            isdefaultvalue=\"' + this.isdefaultvalue + '\" refreshonchanged=\"' + this.refreshonchanged + '\" \\n            calculateonrefresh=\"' + this.calculateonrefresh + '\" mobile=\"' + this.mobile + '\" discript=\"' + this.discript + '\"\\n            refreshmode=\"' + this.refreshmode + '\" validatelibs=\"' + this.validatelibs + '\" \\n            validaterule=\"' + this.validaterule + '\"\\n            hiddenscript=\"' + this.hiddenscript + '\" hiddenvalue=\"' + this.hiddenvalue + '\" \\n            hiddenprintscript=\"' + this.hiddenprintscript + '\" \\n            printhiddenvalue=\"' + this.printhiddenvalue + '\" readonlyscript=\"' + this.readonlyscript + '\" \\n            editmode=\"' + this.editmode + '\" valuescript=\"' + this.valuescript + '\"\\n            limit=\"' + this.limit + '\" instantvalidate=\"' + this.instantvalidate + '\"';\n\n            h += 'refreshfields=\"';\n            if (this.refreshfields.length > 0) {\n                for (var i = 0; i < this.refreshfields.length; i++) {\n                    h += this.refreshfields[i];\n                    if (i != this.refreshfields.length - 1) {\n                        h += \";\";\n                    }\n                }\n            }\n            h += '\"' + '>' + this.value + '</f-select></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n        // isOnBaseLine(x,y){\n        //     if(this.x+this.width-5<x && this.x+this.width+5>x && this.y+this.height-5<y && this.y+this.height+5>y){\n        //         return this;\n        //     }\n        //     return false;\n\n        // }\n\n    }]);\n\n    return Treedepartmentfield;\n}(_Element3.default);\n\nexports.default = Treedepartmentfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9UcmVlZGVwYXJ0bWVudGZpZWxkLmpzPzVhNmMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVsZW1lbnQgZnJvbSAnLi9FbGVtZW50JztcclxuaW1wb3J0IHtTZXF1ZW5jZX0gZnJvbSAnLi4vLi4vdXRpbGl0eSc7XHJcbmNsYXNzIFRyZWVkZXBhcnRtZW50ZmllbGQgZXh0ZW5kcyBFbGVtZW50e1xyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMud2lkdGg9MTUwO1xyXG4gICAgICAgIHRoaXMuaGVpZ2h0PTMwO1xyXG4gICAgICAgIHRoaXMubmFtZT1cIlwiOy8v5ZSv5LiA5qCH6K+GXHJcbiAgICAgICAgdGhpcy50ZXh0PVwiVHJlZWRlcGFydG1lbnRmaWVsZFwiO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yPVwiZGVmYXVsdFwiO1xyXG4gICAgICAgIHRoaXMuc2NvcGU9XCJ0cmVlZGVwYXJ0bWVudGZpZWxkXCI7XHJcbiAgICAgICAgdGhpcy5pZCA9IFNlcXVlbmNlLmNyZWF0ZVV1aWQoKTtcclxuICAgICAgICB0aGlzLmJlbG9uZ0lkPVwiXCI7XHJcbiAgICAgICAgdGhpcy5wcmVYPTA7XHJcbiAgICAgICAgdGhpcy5wcmVZPTA7XHJcbiAgICAgICAgdGhpcy5tb3ZlWD0wO1xyXG4gICAgICAgIHRoaXMubW92ZVk9MDtcclxuICAgICAgICB0aGlzLnRleHR0eXBlPVwidGV4dFwiOy8v5pi+56S6XHJcblxyXG4gICAgICAgIHRoaXMudmFsdWU9XCLmoJHlvaLpg6jpl6jpgInmi6nmoYZcIjtcclxuICAgICAgICB0aGlzLnJlYWRvbmx5c2hvd3ZhbG9ubHk9XCJ0cnVlXCI7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNob25jaGFuZ2VkPVwiZmFsc2VcIjtcclxuICAgICAgICB0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaD1cImZhbHNlXCI7XHJcbiAgICAgICAgdGhpcy5pc2RlZmF1bHR2YWx1ZT1cImZhbHNlXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0bW9kZT0wO1xyXG4gICAgICAgIHRoaXMudmFsdWVzY3JpcHQ9Jyc7XHJcbiAgICAgICAgdGhpcy5tb2JpbGU9XCJmYWxzZVwiO1xyXG4gICAgICAgIHRoaXMuZGlzY3JpcHQ9Jyc7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNobW9kZT0wO1xyXG5cclxuICAgICAgICB0aGlzLnZhbGlkYXRlbGlicz1cImNvcmUuZHluYWZvcm0uZm9ybS5mb3JtZmllbGQudmFsaWRhdGUuY2hlY2tQaG9uZV9zeXN0ZW1cIjsvL+agoemqjOaWueW8j1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVydWxlPVwiXCI7Ly/moKHpqozohJrmnKxcclxuICAgICAgICB0aGlzLmhpZGRlbnNjcmlwdD1cIlwiO1xyXG4gICAgICAgIHRoaXMuaGlkZGVudmFsdWU9XCJcIjtcclxuICAgICAgICB0aGlzLmhpZGRlbnByaW50c2NyaXB0PVwiXCI7XHJcbiAgICAgICAgdGhpcy5wcmludGhpZGRlbnZhbHVlPVwiXCI7XHJcbiAgICAgICAgdGhpcy5yZWFkb25seXNjcmlwdD1cIlwiO1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc2Rlc2NyaXB0aW9uPVwiXCI7Ly/lgLzorr7orqHohJrmnKznmoTlgLxcclxuICAgICAgICB0aGlzLmxpbWl0PVwiXCIvL+acgOWkmuWPr+mAiVxyXG4gICAgICAgIHRoaXMucmVmcmVzaGZpZWxkcz1bXTsvL+WxgOmDqOWIt+aWsOeahOWtl+autee7hOWQiFxyXG4gICAgICAgIHRoaXMuc21hbGx3aWR0aD0xMDA7XHJcbiAgICAgICAgdGhpcy5pbnN0YW50dmFsaWRhdGU9XCJmYWxzZVwiOy8v5Y2z5pe25qCh6aqMXHJcbiAgICB9XHJcbiAgICB0b0h0bWwoKXt9XHJcbiAgICBcclxuICAgIHBhaW50KCl7XHJcbiAgICAgICAgLy8gaWYodGhpcy54PT0wJiZ0aGlzLnk9PTApe1xyXG4gICAgICAgIC8vICAgICB0aGlzLng9dGhpcy5sZWZ0O1xyXG4gICAgICAgIC8vICAgICB0aGlzLnk9dGhpcy50b3A7XHJcbiAgICAgICAgLy8gfWVsc2V7XHJcbiAgICAgICAgLy8gICAgIHRoaXMubGVmdD10aGlzLng7XHJcbiAgICAgICAgLy8gICAgIHRoaXMudG9wPXRoaXMueTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyhwYW5lbCk7XHJcbiAgICAgICAgbGV0IGg9XCJcIjtcclxuICAgICAgICBpZih0aGlzLmlzYmxvY2s9PVwidHJ1ZVwiKXtcclxuICAgICAgICAgICAgaD1gPGRpdiBjbGFzcz1cImJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIHN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGg9YDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGxldCBoPWA8ZGl2IGNsYXNzPVwiaW5saW5lQmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgc3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgIGlmKHRoaXMuaXNzaG93bGFiZWw9PVwidHJ1ZVwiIHx8IHRoaXMuaXNzaG93bGFiZWw9PXRydWUpe1xyXG4gICAgICAgICAgICBoKz1gPGYtbGFiZWwgc3R5bGU9XCJsaW5lLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPiR7dGhpcy5sYWJlbHZhbHVlfTwvZi1sYWJlbD5gXHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICBoKz1gPGYtc2VsZWN0IGNsYXNzbmFtZT1cImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLlRyZWVEZXBhcnRtZW50RmllbGRcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgbWlud2lkdGg9XCIke3RoaXMud2lkdGh9XCIgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjY2NjO21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtgXHJcbiAgICAgICAgICAgIGlmKHRoaXMuekluZGV4KXtcclxuICAgICAgICAgICAgICAgIGgrPWB6LWluZGV4OmArdGhpcy56SW5kZXgrYDtgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGgrPWBcIiBuYW1lPVwiJHt0aGlzLm5hbWV9XCIgaXNzaG93bGFiZWw9XCIke3RoaXMuaXNzaG93bGFiZWx9XCIgbGFiZWx2YWx1ZT1cIiR7dGhpcy5sYWJlbHZhbHVlfVwiICBcclxuICAgICAgICAgICAgdGV4dHR5cGU9XCIke3RoaXMudGV4dHR5cGV9XCIgXHJcbiAgICAgICAgICAgIHByb2Nlc3NkZXNjcmlwdGlvbj1cIiR7dGhpcy5wcm9jZXNzZGVzY3JpcHRpb259XCIgcmVhZG9ubHlzaG93dmFsb25seT1cIiR7dGhpcy5yZWFkb25seXNob3d2YWxvbmx5fVwiIFxyXG4gICAgICAgICAgICBpc2RlZmF1bHR2YWx1ZT1cIiR7dGhpcy5pc2RlZmF1bHR2YWx1ZX1cIiByZWZyZXNob25jaGFuZ2VkPVwiJHt0aGlzLnJlZnJlc2hvbmNoYW5nZWR9XCIgXHJcbiAgICAgICAgICAgIGNhbGN1bGF0ZW9ucmVmcmVzaD1cIiR7dGhpcy5jYWxjdWxhdGVvbnJlZnJlc2h9XCIgbW9iaWxlPVwiJHt0aGlzLm1vYmlsZX1cIiBkaXNjcmlwdD1cIiR7dGhpcy5kaXNjcmlwdH1cIlxyXG4gICAgICAgICAgICByZWZyZXNobW9kZT1cIiR7dGhpcy5yZWZyZXNobW9kZX1cIiB2YWxpZGF0ZWxpYnM9XCIke3RoaXMudmFsaWRhdGVsaWJzfVwiIFxyXG4gICAgICAgICAgICB2YWxpZGF0ZXJ1bGU9XCIke3RoaXMudmFsaWRhdGVydWxlfVwiXHJcbiAgICAgICAgICAgIGhpZGRlbnNjcmlwdD1cIiR7dGhpcy5oaWRkZW5zY3JpcHR9XCIgaGlkZGVudmFsdWU9XCIke3RoaXMuaGlkZGVudmFsdWV9XCIgXHJcbiAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0PVwiJHt0aGlzLmhpZGRlbnByaW50c2NyaXB0fVwiIFxyXG4gICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlPVwiJHt0aGlzLnByaW50aGlkZGVudmFsdWV9XCIgcmVhZG9ubHlzY3JpcHQ9XCIke3RoaXMucmVhZG9ubHlzY3JpcHR9XCIgXHJcbiAgICAgICAgICAgIGVkaXRtb2RlPVwiJHt0aGlzLmVkaXRtb2RlfVwiIHZhbHVlc2NyaXB0PVwiJHt0aGlzLnZhbHVlc2NyaXB0fVwiXHJcbiAgICAgICAgICAgIGxpbWl0PVwiJHt0aGlzLmxpbWl0fVwiIGluc3RhbnR2YWxpZGF0ZT1cIiR7dGhpcy5pbnN0YW50dmFsaWRhdGV9XCJgO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICBoKz1gcmVmcmVzaGZpZWxkcz1cImA7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgICAgICBoKz10aGlzLnJlZnJlc2hmaWVsZHNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoaSE9dGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaCs9XCI7XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGgrPWBcImArXHJcblxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgYD5gK1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlK1xyXG4gICAgICAgICAgICBgPC9mLXNlbGVjdD48L2Rpdj5gXHJcbiAgICAgICAgcmV0dXJuIGg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGdldE5vZGVDb25maWdJbmZvKCl7XHJcbiAgICAgICAgbGV0IG5vZGUgPSB7fTtcclxuXHRcdG5vZGUudGV4dCA9IHRoaXMudGV4dDtcclxuXHRcdG5vZGUuaWNvbiA9ICdnbHlwaGljb24gZ2x5cGhpY29uLWdsYXNzJztcclxuXHRcdG5vZGUudXVpZCA9IHRoaXMuZ2V0UHJvcCgnaWQnKTtcdFxyXG5cdFx0bm9kZS5pbnN0YW5jZSA9IHRoaXM7XHJcblx0XHRyZXR1cm4gbm9kZTtcclxuICAgIH1cclxuICAgIC8vIGlzT25CYXNlTGluZSh4LHkpe1xyXG4gICAgLy8gICAgIGlmKHRoaXMueCt0aGlzLndpZHRoLTU8eCAmJiB0aGlzLngrdGhpcy53aWR0aCs1PnggJiYgdGhpcy55K3RoaXMuaGVpZ2h0LTU8eSAmJiB0aGlzLnkrdGhpcy5oZWlnaHQrNT55KXtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAvLyB9XHJcblxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IFRyZWVkZXBhcnRtZW50ZmllbGQ7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9mb3JtL2NvbXBvbmVudC9UcmVlZGVwYXJ0bWVudGZpZWxkLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7OztBQUFBOzs7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF0Q0E7QUF1Q0E7QUFDQTs7O0FBQUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQWpIQTtBQUNBO0FBa0hBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///105\n");

/***/ }),
/* 106 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Userfield = function (_Element) {\n    _inherits(Userfield, _Element);\n\n    function Userfield() {\n        _classCallCheck(this, Userfield);\n\n        var _this = _possibleConstructorReturn(this, (Userfield.__proto__ || Object.getPrototypeOf(Userfield)).call(this));\n\n        _this.width = 170;\n        _this.height = 50;\n        _this.name = \"\"; //鍞竴鏍囪瘑\n        _this.text = \"userfield\";\n        _this.cursor = \"default\";\n        _this.scope = \"userfield\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.belongId = \"\";\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n        _this.value = \"鐢ㄦ埛閫夋嫨妗哱"; //鍊糪n        _this.texttype = \"鏅€歕"; //鏄剧ず\n        _this.isdefaultvalue = \"false\"; //鏄惁鏄粯璁ゅ€糪n        _this.readonlyshowvalonly = \"true\"; //鍙鏃朵粎鍙樉绀哄€糪n        _this.refreshonchanged = \"false\"; //鍒锋柊\n        _this.calculateonrefresh = \"false\"; //鍐茶绠梊n        _this.editmode = 0; //鍊肩殑鏂瑰紡\n        _this.valuescript = ''; //鑴氭湰鍊糪n        _this.mobile = \"false\"; //鎵嬫満鍙敤\n        _this.discript = ''; //鎻忚堪\n        _this.refreshmode = 0; //鍐插埛鏂扮殑鏂瑰紡\n\n        _this.validatelibs = \"core.dynaform.form.formfield.validate.checkPhone_system\"; //鏍¢獙鏂瑰紡\n        _this.validaterule = \"\"; //鏍¢獙鑴氭湰\n        _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n        _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n        _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n        _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n        _this.readonlyscript = \"\"; //鍙鏉′欢鑴氭湰\n\n\n        _this.processdescription = \"\"; //鍊艰璁¤剼鏈殑鍊糪n        _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n\n        _this.selectmode = \"multiSelect\"; //閫夋嫨妯″紡\n        _this.smallwidth = 100;\n        _this.instantvalidate = \"false\"; //鍗虫椂鏍¢獙锛堟柊澧炲睘鎬э級\n\n        return _this;\n    }\n\n    _createClass(Userfield, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            // let h=`<div class=\"inlineBlock\" id=\"${this.id}\" draggable=\"true\" style=\"min-width:${this.width}px;min-height:${this.height}px;\">`;\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-select classname=\"cn.myapps.runtime.dynaform.form.ejb.UserField\" nodeid=\"' + this.id + '\" class=\"inlineBlock\" minwidth=\"' + this.width + '\" style=\"border:1px solid #ccc;min-width:' + this.smallwidth + 'px;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\" name=\"' + this.name + '\" isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\" \\n        texttype=\"' + this.texttype + '\" \\n        processdescription=\"' + this.processdescription + '\" readonlyshowvalonly=\"' + this.readonlyshowvalonly + '\"\\n        isdefaultvalue=\"' + this.isdefaultvalue + '\" refreshonchanged=\"' + this.refreshonchanged + '\"\\n        calculateonrefresh=\"' + this.calculateonrefresh + '\" mobile=\"' + this.mobile + '\"\\n        discript=\"' + this.discript + '\" refreshmode=\"' + this.refreshmode + '\" validatelibs=\"' + this.validatelibs + '\"\\n        validaterule=\"' + this.validaterule + '\" hiddenscript=\"' + this.hiddenscript + '\" hiddenvalue=\"' + this.hiddenvalue + '\"\\n        hiddenprintscript=\"' + this.hiddenprintscript + '\" printhiddenvalue=\"' + this.printhiddenvalue + '\" readonlyscript=\"' + this.readonlyscript + '\"\\n        editmode=\"' + this.editmode + '\" valuescript=\"' + this.valuescript + '\" selectmode=\"' + this.selectmode + '\"\\n        instantvalidate=\"' + this.instantvalidate + '\"\\n        ';\n            h += 'refreshfields=\"';\n            if (this.refreshfields.length > 0) {\n                for (var i = 0; i < this.refreshfields.length; i++) {\n                    h += this.refreshfields[i];\n                    if (i != this.refreshfields.length - 1) {\n                        h += \";\";\n                    }\n                }\n            }\n            h += '\"' + '>' + this.value + '</f-select></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n    }]);\n\n    return Userfield;\n}(_Element3.default);\n\nexports.default = Userfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9Vc2VyZmllbGQuanM/NDNlNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRWxlbWVudCBmcm9tICcuL0VsZW1lbnQnO1xyXG5pbXBvcnQge1NlcXVlbmNlfSBmcm9tICcuLi8uLi91dGlsaXR5JztcclxuY2xhc3MgVXNlcmZpZWxkIGV4dGVuZHMgRWxlbWVudHtcclxuICAgIGNvbnN0cnVjdG9yKCl7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLndpZHRoPTE3MDtcclxuICAgICAgICB0aGlzLmhlaWdodD01MDtcclxuICAgICAgICB0aGlzLm5hbWU9XCJcIjsvL+WUr+S4gOagh+ivhlxyXG4gICAgICAgIHRoaXMudGV4dD1cInVzZXJmaWVsZFwiO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yPVwiZGVmYXVsdFwiO1xyXG4gICAgICAgIHRoaXMuc2NvcGU9XCJ1c2VyZmllbGRcIjtcclxuICAgICAgICB0aGlzLmlkID0gU2VxdWVuY2UuY3JlYXRlVXVpZCgpO1xyXG4gICAgICAgIHRoaXMuYmVsb25nSWQ9XCJcIjtcclxuICAgICAgICB0aGlzLnByZVg9MDtcclxuICAgICAgICB0aGlzLnByZVk9MDtcclxuICAgICAgICB0aGlzLm1vdmVYPTA7XHJcbiAgICAgICAgdGhpcy5tb3ZlWT0wO1xyXG4gICAgICAgIHRoaXMudmFsdWU9XCLnlKjmiLfpgInmi6nmoYZcIjsvL+WAvFxyXG4gICAgICAgIHRoaXMudGV4dHR5cGU9XCLmma7pgJpcIjsvL+aYvuekulxyXG4gICAgICAgIHRoaXMuaXNkZWZhdWx0dmFsdWU9XCJmYWxzZVwiLy/mmK/lkKbmmK/pu5jorqTlgLxcclxuICAgICAgICB0aGlzLnJlYWRvbmx5c2hvd3ZhbG9ubHk9XCJ0cnVlXCI7Ly/lj6ror7vml7bku4Xlj6rmmL7npLrlgLxcclxuICAgICAgICB0aGlzLnJlZnJlc2hvbmNoYW5nZWQ9XCJmYWxzZVwiOy8v5Yi35pawXHJcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVvbnJlZnJlc2g9XCJmYWxzZVwiOy8v5Yay6K6h566XXHJcbiAgICAgICAgdGhpcy5lZGl0bW9kZT0wOy8v5YC855qE5pa55byPXHJcbiAgICAgICAgdGhpcy52YWx1ZXNjcmlwdD0nJzsvL+iEmuacrOWAvFxyXG4gICAgICAgIHRoaXMubW9iaWxlPVwiZmFsc2VcIjsvL+aJi+acuuWPr+eUqFxyXG4gICAgICAgIHRoaXMuZGlzY3JpcHQ9Jyc7Ly/mj4/ov7BcclxuICAgICAgICB0aGlzLnJlZnJlc2htb2RlPTA7Ly/lhrLliLfmlrDnmoTmlrnlvI9cclxuXHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZWxpYnM9XCJjb3JlLmR5bmFmb3JtLmZvcm0uZm9ybWZpZWxkLnZhbGlkYXRlLmNoZWNrUGhvbmVfc3lzdGVtXCI7Ly/moKHpqozmlrnlvI9cclxuICAgICAgICB0aGlzLnZhbGlkYXRlcnVsZT1cIlwiOy8v5qCh6aqM6ISa5pysXHJcbiAgICAgICAgdGhpcy5oaWRkZW5zY3JpcHQ9XCJcIjsvL+makOiXj+adoeS7tuiEmuacrFxyXG4gICAgICAgIHRoaXMuaGlkZGVudmFsdWU9XCJcIjsvL+makOiXj+aXtuaYvuekuuWAvFxyXG4gICAgICAgIHRoaXMuaGlkZGVucHJpbnRzY3JpcHQ9XCJcIjsvL+aJk+WNsOaXtumakOiXj+adoeS7tuiEmuacrFxyXG4gICAgICAgIHRoaXMucHJpbnRoaWRkZW52YWx1ZT1cIlwiOy8v5omT5Y2w6ZqQ6JeP5pe25pi+56S65YC8XHJcbiAgICAgICAgdGhpcy5yZWFkb25seXNjcmlwdD1cIlwiOy8v5Y+q6K+75p2h5Lu26ISa5pysXHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIHRoaXMucHJvY2Vzc2Rlc2NyaXB0aW9uPVwiXCI7Ly/lgLzorr7orqHohJrmnKznmoTlgLxcclxuICAgICAgICB0aGlzLnJlZnJlc2hmaWVsZHM9W107Ly/lsYDpg6jliLfmlrDnmoTlrZfmrrXnu4TlkIhcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3Rtb2RlPVwibXVsdGlTZWxlY3RcIjsvL+mAieaLqeaooeW8j1xyXG4gICAgICAgIHRoaXMuc21hbGx3aWR0aD0xMDA7XHJcbiAgICAgICAgdGhpcy5pbnN0YW50dmFsaWRhdGU9XCJmYWxzZVwiLy/ljbPml7bmoKHpqozvvIjmlrDlop7lsZ7mgKfvvIlcclxuXHJcbiAgICB9XHJcbiAgICB0b0h0bWwoKXt9XHJcbiAgICBcclxuICAgIHBhaW50KCl7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IGg9XCJcIjtcclxuICAgICAgICBpZih0aGlzLmlzYmxvY2s9PVwidHJ1ZVwiKXtcclxuICAgICAgICAgICAgaD1gPGRpdiBjbGFzcz1cImJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIHN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGg9YDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGxldCBoPWA8ZGl2IGNsYXNzPVwiaW5saW5lQmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgc3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgIGlmKHRoaXMuaXNzaG93bGFiZWw9PVwidHJ1ZVwiIHx8IHRoaXMuaXNzaG93bGFiZWw9PXRydWUpe1xyXG4gICAgICAgICAgICBoKz1gPGYtbGFiZWwgc3R5bGU9XCJsaW5lLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPiR7dGhpcy5sYWJlbHZhbHVlfTwvZi1sYWJlbD5gXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGgrPWA8Zi1zZWxlY3QgY2xhc3NuYW1lPVwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuVXNlckZpZWxkXCIgbm9kZWlkPVwiJHt0aGlzLmlkfVwiIGNsYXNzPVwiaW5saW5lQmxvY2tcIiBtaW53aWR0aD1cIiR7dGhpcy53aWR0aH1cIiBzdHlsZT1cImJvcmRlcjoxcHggc29saWQgI2NjYzttaW4td2lkdGg6JHt0aGlzLnNtYWxsd2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O2BcclxuICAgICAgICBpZih0aGlzLnpJbmRleCl7XHJcbiAgICAgICAgICAgIGgrPWB6LWluZGV4OmArdGhpcy56SW5kZXgrYDtgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBoKz1gXCIgbmFtZT1cIiR7dGhpcy5uYW1lfVwiIGlzc2hvd2xhYmVsPVwiJHt0aGlzLmlzc2hvd2xhYmVsfVwiIGxhYmVsdmFsdWU9XCIke3RoaXMubGFiZWx2YWx1ZX1cIiBcclxuICAgICAgICB0ZXh0dHlwZT1cIiR7dGhpcy50ZXh0dHlwZX1cIiBcclxuICAgICAgICBwcm9jZXNzZGVzY3JpcHRpb249XCIke3RoaXMucHJvY2Vzc2Rlc2NyaXB0aW9ufVwiIHJlYWRvbmx5c2hvd3ZhbG9ubHk9XCIke3RoaXMucmVhZG9ubHlzaG93dmFsb25seX1cIlxyXG4gICAgICAgIGlzZGVmYXVsdHZhbHVlPVwiJHt0aGlzLmlzZGVmYXVsdHZhbHVlfVwiIHJlZnJlc2hvbmNoYW5nZWQ9XCIke3RoaXMucmVmcmVzaG9uY2hhbmdlZH1cIlxyXG4gICAgICAgIGNhbGN1bGF0ZW9ucmVmcmVzaD1cIiR7dGhpcy5jYWxjdWxhdGVvbnJlZnJlc2h9XCIgbW9iaWxlPVwiJHt0aGlzLm1vYmlsZX1cIlxyXG4gICAgICAgIGRpc2NyaXB0PVwiJHt0aGlzLmRpc2NyaXB0fVwiIHJlZnJlc2htb2RlPVwiJHt0aGlzLnJlZnJlc2htb2RlfVwiIHZhbGlkYXRlbGlicz1cIiR7dGhpcy52YWxpZGF0ZWxpYnN9XCJcclxuICAgICAgICB2YWxpZGF0ZXJ1bGU9XCIke3RoaXMudmFsaWRhdGVydWxlfVwiIGhpZGRlbnNjcmlwdD1cIiR7dGhpcy5oaWRkZW5zY3JpcHR9XCIgaGlkZGVudmFsdWU9XCIke3RoaXMuaGlkZGVudmFsdWV9XCJcclxuICAgICAgICBoaWRkZW5wcmludHNjcmlwdD1cIiR7dGhpcy5oaWRkZW5wcmludHNjcmlwdH1cIiBwcmludGhpZGRlbnZhbHVlPVwiJHt0aGlzLnByaW50aGlkZGVudmFsdWV9XCIgcmVhZG9ubHlzY3JpcHQ9XCIke3RoaXMucmVhZG9ubHlzY3JpcHR9XCJcclxuICAgICAgICBlZGl0bW9kZT1cIiR7dGhpcy5lZGl0bW9kZX1cIiB2YWx1ZXNjcmlwdD1cIiR7dGhpcy52YWx1ZXNjcmlwdH1cIiBzZWxlY3Rtb2RlPVwiJHt0aGlzLnNlbGVjdG1vZGV9XCJcclxuICAgICAgICBpbnN0YW50dmFsaWRhdGU9XCIke3RoaXMuaW5zdGFudHZhbGlkYXRlfVwiXHJcbiAgICAgICAgYDtcclxuICAgICAgICBoKz1gcmVmcmVzaGZpZWxkcz1cImA7XHJcbiAgICAgICAgaWYodGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7aTx0aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICBoKz10aGlzLnJlZnJlc2hmaWVsZHNbaV07XHJcbiAgICAgICAgICAgICAgICBpZihpIT10aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoLTEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGgrPVwiO1wiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGgrPWBcImArXHJcblxyXG4gICAgICAgIFxyXG4gICAgICAgIGA+YCtcclxuICAgICAgICB0aGlzLnZhbHVlK1xyXG4gICAgICAgIGA8L2Ytc2VsZWN0PjwvZGl2PmBcclxuICAgICAgICByZXR1cm4gaDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgZ2V0Tm9kZUNvbmZpZ0luZm8oKXtcclxuICAgICAgICBsZXQgbm9kZSA9IHt9O1xyXG5cdFx0bm9kZS50ZXh0ID0gdGhpcy50ZXh0O1xyXG5cdFx0bm9kZS5pY29uID0gJ2dseXBoaWNvbiBnbHlwaGljb24tZ2xhc3MnO1xyXG5cdFx0bm9kZS51dWlkID0gdGhpcy5nZXRQcm9wKCdpZCcpO1x0XHJcblx0XHRub2RlLmluc3RhbmNlID0gdGhpcztcclxuXHRcdHJldHVybiBub2RlO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IFVzZXJmaWVsZDtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2Zvcm0vY29tcG9uZW50L1VzZXJmaWVsZC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFBQTs7O0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBekNBO0FBMENBO0FBQ0E7OztBQUFBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBbkdBO0FBQ0E7QUFvR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///106\n");

/***/ }),
/* 107 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Suggestfield = function (_Element) {\n    _inherits(Suggestfield, _Element);\n\n    function Suggestfield() {\n        _classCallCheck(this, Suggestfield);\n\n        var _this = _possibleConstructorReturn(this, (Suggestfield.__proto__ || Object.getPrototypeOf(Suggestfield)).call(this));\n\n        _this.width = 210;\n        _this.height = 30;\n        _this.name = \"\"; //鍞竴鏍囪瘑\n        _this.text = \"Suggestfield\";\n        _this.cursor = \"default\";\n        _this.scope = \"suggestfield\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.belongId = \"\";\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n        _this.texttype = \"鏅€歕"; //鏄剧ず\n\n        _this.value = \"鏅鸿兘鎼滅储鎻愮ず妗哱";\n        _this.readonlyshowvalonly = \"true\";\n        _this.refreshonchanged = \"false\";\n        _this.calculateonrefresh = \"false\";\n        _this.isdefaultvalue = \"false\";\n        _this.editmode = 0;\n        _this.valuescript = '';\n        _this.mobile = \"false\";\n        _this.discript = '';\n        _this.refreshmode = 0;\n\n        _this.validatelibs = \"core.dynaform.form.formfield.validate.checkPhone_system\"; //鏍¢獙鏂瑰紡\n        _this.validaterule = \"\"; //鏍¢獙鑴氭湰\n        _this.hiddenscript = \"\";\n        _this.hiddenvalue = \"\";\n        _this.hiddenprintscript = \"\";\n        _this.printhiddenvalue = \"\";\n        _this.readonlyscript = \"\";\n        _this.processdescription = \"\"; //鍊艰璁¤剼鏈殑鍊糪n        _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n\n        _this.module = \"\"; //閫夐」-妯″潡\n        _this.dialogview = \"\"; //閫夐」-瑙嗗浘\n        _this.optionsvalue = \"\"; //閫夐」-鏄剧ず鍊糪n        _this.optionstext = \"\"; //閫夐」-鐪熷疄鍊糪n\n        _this.optionseditmode = 0; //閫夐」璁捐杩樻槸鑴氭湰妯″紡鐨勫弬鏁癨n        _this.optionsscript = \"\"; //閫夐」鑴氭湰鐨勫€糪n        _this.smallwidth = 100;\n        _this.datamode = \"local\";\n        _this.instantvalidate = \"false\"; //鍗虫椂鏍¢獙锛堟柊澧炲睘鎬э級\n\n        return _this;\n    }\n\n    _createClass(Suggestfield, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            // let h=`<div class=\"inlineBlock\" id=\"${this.id}\" draggable=\"true\" style=\"min-width:${this.width}px;min-height:${this.height}px;\">`;\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-input classname=\"cn.myapps.runtime.dynaform.form.ejb.SuggestField\" nodeid=\"' + this.id + '\" class=\"inlineBlock\" minwidth=\"' + this.width + '\" style=\"border:1px solid #ccc;min-width:' + this.smallwidth + 'px;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\" name=\"' + this.name + '\" isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\"  \\n            texttype=\"' + this.texttype + '\" \\n            processdescription=\"' + this.processdescription + '\" readonlyshowvalonly=\"' + this.readonlyshowvalonly + '\" \\n            isdefaultvalue=\"' + this.isdefaultvalue + '\" refreshonchanged=\"' + this.refreshonchanged + '\" \\n            calculateonrefresh=\"' + this.calculateonrefresh + '\" mobile=\"' + this.mobile + '\" discript=\"' + this.discript + '\"\\n            refreshmode=\"' + this.refreshmode + '\" validatelibs=\"' + this.validatelibs + '\" \\n            validaterule=\"' + this.validaterule + '\"\\n            hiddenscript=\"' + this.hiddenscript + '\" hiddenvalue=\"' + this.hiddenvalue + '\" \\n            hiddenprintscript=\"' + this.hiddenprintscript + '\" \\n            printhiddenvalue=\"' + this.printhiddenvalue + '\" readonlyscript=\"' + this.readonlyscript + '\" \\n            editmode=\"' + this.editmode + '\"  module=\"' + this.module + '\"\\n            dialogview=\"' + this.dialogview + '\" optionseditmode=\"' + this.optionseditmode + '\"\\n            optionsvalue=\"' + this.optionsvalue + '\" optionstext=\"' + this.optionstext + '\"\\n            valuescript=\"' + this.valuescript + '\" datamode=\"' + this.datamode + '\" optionsscript=\"' + this.optionsscript + '\"\\n            instantvalidate=\"' + this.instantvalidate + '\"';\n\n            h += 'refreshfields=\"';\n            if (this.refreshfields.length > 0) {\n                for (var i = 0; i < this.refreshfields.length; i++) {\n                    h += this.refreshfields[i];\n                    if (i != this.refreshfields.length - 1) {\n                        h += \";\";\n                    }\n                }\n            }\n            h += '\"' + '>' + this.value + '</f-input></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n    }, {\n        key: 'isOnBaseLine',\n        value: function isOnBaseLine(x, y) {\n            if (this.x + this.width - 5 < x && this.x + this.width + 5 > x && this.y + this.height - 5 < y && this.y + this.height + 5 > y) {\n                return this;\n            }\n            return false;\n        }\n    }]);\n\n    return Suggestfield;\n}(_Element3.default);\n\nexports.default = Suggestfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9TdWdnZXN0ZmllbGQuanM/MGZhNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRWxlbWVudCBmcm9tICcuL0VsZW1lbnQnO1xyXG5pbXBvcnQge1NlcXVlbmNlfSBmcm9tICcuLi8uLi91dGlsaXR5JztcclxuY2xhc3MgU3VnZ2VzdGZpZWxkIGV4dGVuZHMgRWxlbWVudHtcclxuICAgIGNvbnN0cnVjdG9yKCl7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLndpZHRoPTIxMDtcclxuICAgICAgICB0aGlzLmhlaWdodD0zMDtcclxuICAgICAgICB0aGlzLm5hbWU9XCJcIjsvL+WUr+S4gOagh+ivhlxyXG4gICAgICAgIHRoaXMudGV4dD1cIlN1Z2dlc3RmaWVsZFwiO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yPVwiZGVmYXVsdFwiO1xyXG4gICAgICAgIHRoaXMuc2NvcGU9XCJzdWdnZXN0ZmllbGRcIjtcclxuICAgICAgICB0aGlzLmlkID0gU2VxdWVuY2UuY3JlYXRlVXVpZCgpO1xyXG4gICAgICAgIHRoaXMuYmVsb25nSWQ9XCJcIjtcclxuICAgICAgICB0aGlzLnByZVg9MDtcclxuICAgICAgICB0aGlzLnByZVk9MDtcclxuICAgICAgICB0aGlzLm1vdmVYPTA7XHJcbiAgICAgICAgdGhpcy5tb3ZlWT0wO1xyXG4gICAgICAgIHRoaXMudGV4dHR5cGU9XCLmma7pgJpcIjsvL+aYvuekulxyXG5cclxuICAgICAgICB0aGlzLnZhbHVlPVwi5pm66IO95pCc57Si5o+Q56S65qGGXCI7XHJcbiAgICAgICAgdGhpcy5yZWFkb25seXNob3d2YWxvbmx5PVwidHJ1ZVwiO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaG9uY2hhbmdlZD1cImZhbHNlXCI7XHJcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVvbnJlZnJlc2g9XCJmYWxzZVwiO1xyXG4gICAgICAgIHRoaXMuaXNkZWZhdWx0dmFsdWU9XCJmYWxzZVwiO1xyXG4gICAgICAgIHRoaXMuZWRpdG1vZGU9MDtcclxuICAgICAgICB0aGlzLnZhbHVlc2NyaXB0PScnO1xyXG4gICAgICAgIHRoaXMubW9iaWxlPVwiZmFsc2VcIjtcclxuICAgICAgICB0aGlzLmRpc2NyaXB0PScnO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaG1vZGU9MDtcclxuXHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZWxpYnM9XCJjb3JlLmR5bmFmb3JtLmZvcm0uZm9ybWZpZWxkLnZhbGlkYXRlLmNoZWNrUGhvbmVfc3lzdGVtXCI7Ly/moKHpqozmlrnlvI9cclxuICAgICAgICB0aGlzLnZhbGlkYXRlcnVsZT1cIlwiOy8v5qCh6aqM6ISa5pysXHJcbiAgICAgICAgdGhpcy5oaWRkZW5zY3JpcHQ9XCJcIjtcclxuICAgICAgICB0aGlzLmhpZGRlbnZhbHVlPVwiXCI7XHJcbiAgICAgICAgdGhpcy5oaWRkZW5wcmludHNjcmlwdD1cIlwiO1xyXG4gICAgICAgIHRoaXMucHJpbnRoaWRkZW52YWx1ZT1cIlwiO1xyXG4gICAgICAgIHRoaXMucmVhZG9ubHlzY3JpcHQ9XCJcIjtcclxuICAgICAgICB0aGlzLnByb2Nlc3NkZXNjcmlwdGlvbj1cIlwiOy8v5YC86K6+6K6h6ISa5pys55qE5YC8XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoZmllbGRzPVtdOy8v5bGA6YOo5Yi35paw55qE5a2X5q6157uE5ZCIXHJcblxyXG4gICAgICAgIHRoaXMubW9kdWxlPVwiXCI7Ly/pgInpobkt5qih5Z2XXHJcbiAgICAgICAgdGhpcy5kaWFsb2d2aWV3PVwiXCI7Ly/pgInpobkt6KeG5Zu+XHJcbiAgICAgICAgdGhpcy5vcHRpb25zdmFsdWU9XCJcIjsvL+mAiemhuS3mmL7npLrlgLxcclxuICAgICAgICB0aGlzLm9wdGlvbnN0ZXh0PVwiXCI7Ly/pgInpobkt55yf5a6e5YC8XHJcblxyXG4gICAgICAgIHRoaXMub3B0aW9uc2VkaXRtb2RlPTA7Ly/pgInpobnorr7orqHov5jmmK/ohJrmnKzmqKHlvI/nmoTlj4LmlbBcclxuICAgICAgICB0aGlzLm9wdGlvbnNzY3JpcHQ9XCJcIjsvL+mAiemhueiEmuacrOeahOWAvFxyXG4gICAgICAgIHRoaXMuc21hbGx3aWR0aD0xMDA7XHJcbiAgICAgICAgdGhpcy5kYXRhbW9kZT1cImxvY2FsXCI7XHJcbiAgICAgICAgdGhpcy5pbnN0YW50dmFsaWRhdGU9XCJmYWxzZVwiLy/ljbPml7bmoKHpqozvvIjmlrDlop7lsZ7mgKfvvIlcclxuXHJcbiAgICB9XHJcbiAgICB0b0h0bWwoKXt9XHJcbiAgICBcclxuICAgIHBhaW50KCl7XHJcbiAgICAgICAgbGV0IGg9XCJcIjtcclxuICAgICAgICBpZih0aGlzLmlzYmxvY2s9PVwidHJ1ZVwiKXtcclxuICAgICAgICAgICAgaD1gPGRpdiBjbGFzcz1cImJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIHN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGg9YDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGxldCBoPWA8ZGl2IGNsYXNzPVwiaW5saW5lQmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgc3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgIGlmKHRoaXMuaXNzaG93bGFiZWw9PVwidHJ1ZVwiIHx8IHRoaXMuaXNzaG93bGFiZWw9PXRydWUpe1xyXG4gICAgICAgICAgICBoKz1gPGYtbGFiZWwgc3R5bGU9XCJsaW5lLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPiR7dGhpcy5sYWJlbHZhbHVlfTwvZi1sYWJlbD5gXHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICBoKz1gPGYtaW5wdXQgY2xhc3NuYW1lPVwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuU3VnZ2VzdEZpZWxkXCIgbm9kZWlkPVwiJHt0aGlzLmlkfVwiIGNsYXNzPVwiaW5saW5lQmxvY2tcIiBtaW53aWR0aD1cIiR7dGhpcy53aWR0aH1cIiBzdHlsZT1cImJvcmRlcjoxcHggc29saWQgI2NjYzttaW4td2lkdGg6JHt0aGlzLnNtYWxsd2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O2BcclxuICAgICAgICAgICAgaWYodGhpcy56SW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgaCs9YHotaW5kZXg6YCt0aGlzLnpJbmRleCtgO2A7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaCs9YFwiIG5hbWU9XCIke3RoaXMubmFtZX1cIiBpc3Nob3dsYWJlbD1cIiR7dGhpcy5pc3Nob3dsYWJlbH1cIiBsYWJlbHZhbHVlPVwiJHt0aGlzLmxhYmVsdmFsdWV9XCIgIFxyXG4gICAgICAgICAgICB0ZXh0dHlwZT1cIiR7dGhpcy50ZXh0dHlwZX1cIiBcclxuICAgICAgICAgICAgcHJvY2Vzc2Rlc2NyaXB0aW9uPVwiJHt0aGlzLnByb2Nlc3NkZXNjcmlwdGlvbn1cIiByZWFkb25seXNob3d2YWxvbmx5PVwiJHt0aGlzLnJlYWRvbmx5c2hvd3ZhbG9ubHl9XCIgXHJcbiAgICAgICAgICAgIGlzZGVmYXVsdHZhbHVlPVwiJHt0aGlzLmlzZGVmYXVsdHZhbHVlfVwiIHJlZnJlc2hvbmNoYW5nZWQ9XCIke3RoaXMucmVmcmVzaG9uY2hhbmdlZH1cIiBcclxuICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoPVwiJHt0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaH1cIiBtb2JpbGU9XCIke3RoaXMubW9iaWxlfVwiIGRpc2NyaXB0PVwiJHt0aGlzLmRpc2NyaXB0fVwiXHJcbiAgICAgICAgICAgIHJlZnJlc2htb2RlPVwiJHt0aGlzLnJlZnJlc2htb2RlfVwiIHZhbGlkYXRlbGlicz1cIiR7dGhpcy52YWxpZGF0ZWxpYnN9XCIgXHJcbiAgICAgICAgICAgIHZhbGlkYXRlcnVsZT1cIiR7dGhpcy52YWxpZGF0ZXJ1bGV9XCJcclxuICAgICAgICAgICAgaGlkZGVuc2NyaXB0PVwiJHt0aGlzLmhpZGRlbnNjcmlwdH1cIiBoaWRkZW52YWx1ZT1cIiR7dGhpcy5oaWRkZW52YWx1ZX1cIiBcclxuICAgICAgICAgICAgaGlkZGVucHJpbnRzY3JpcHQ9XCIke3RoaXMuaGlkZGVucHJpbnRzY3JpcHR9XCIgXHJcbiAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU9XCIke3RoaXMucHJpbnRoaWRkZW52YWx1ZX1cIiByZWFkb25seXNjcmlwdD1cIiR7dGhpcy5yZWFkb25seXNjcmlwdH1cIiBcclxuICAgICAgICAgICAgZWRpdG1vZGU9XCIke3RoaXMuZWRpdG1vZGV9XCIgIG1vZHVsZT1cIiR7dGhpcy5tb2R1bGV9XCJcclxuICAgICAgICAgICAgZGlhbG9ndmlldz1cIiR7dGhpcy5kaWFsb2d2aWV3fVwiIG9wdGlvbnNlZGl0bW9kZT1cIiR7dGhpcy5vcHRpb25zZWRpdG1vZGV9XCJcclxuICAgICAgICAgICAgb3B0aW9uc3ZhbHVlPVwiJHt0aGlzLm9wdGlvbnN2YWx1ZX1cIiBvcHRpb25zdGV4dD1cIiR7dGhpcy5vcHRpb25zdGV4dH1cIlxyXG4gICAgICAgICAgICB2YWx1ZXNjcmlwdD1cIiR7dGhpcy52YWx1ZXNjcmlwdH1cIiBkYXRhbW9kZT1cIiR7dGhpcy5kYXRhbW9kZX1cIiBvcHRpb25zc2NyaXB0PVwiJHt0aGlzLm9wdGlvbnNzY3JpcHR9XCJcclxuICAgICAgICAgICAgaW5zdGFudHZhbGlkYXRlPVwiJHt0aGlzLmluc3RhbnR2YWxpZGF0ZX1cImA7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBoKz1gcmVmcmVzaGZpZWxkcz1cImA7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgICAgICBoKz10aGlzLnJlZnJlc2hmaWVsZHNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoaSE9dGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaCs9XCI7XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGgrPWBcImArXHJcblxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgYD5gK1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlK1xyXG4gICAgICAgICAgICBgPC9mLWlucHV0PjwvZGl2PmBcclxuICAgICAgICByZXR1cm4gaDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgZ2V0Tm9kZUNvbmZpZ0luZm8oKXtcclxuICAgICAgICBsZXQgbm9kZSA9IHt9O1xyXG5cdFx0bm9kZS50ZXh0ID0gdGhpcy50ZXh0O1xyXG5cdFx0bm9kZS5pY29uID0gJ2dseXBoaWNvbiBnbHlwaGljb24tZ2xhc3MnO1xyXG5cdFx0bm9kZS51dWlkID0gdGhpcy5nZXRQcm9wKCdpZCcpO1x0XHJcblx0XHRub2RlLmluc3RhbmNlID0gdGhpcztcclxuXHRcdHJldHVybiBub2RlO1xyXG4gICAgfVxyXG4gICAgaXNPbkJhc2VMaW5lKHgseSl7XHJcbiAgICAgICAgaWYodGhpcy54K3RoaXMud2lkdGgtNTx4ICYmIHRoaXMueCt0aGlzLndpZHRoKzU+eCAmJiB0aGlzLnkrdGhpcy5oZWlnaHQtNTx5ICYmIHRoaXMueSt0aGlzLmhlaWdodCs1Pnkpe1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIH1cclxuXHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgU3VnZ2VzdGZpZWxkO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9jb21wb25lbnQvU3VnZ2VzdGZpZWxkLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7OztBQUFBOzs7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEvQ0E7QUFnREE7QUFDQTs7O0FBQUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFlQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7OztBQXBIQTtBQUNBO0FBc0hBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///107\n");

/***/ }),
/* 108 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Button = function (_Element) {\n    _inherits(Button, _Element);\n\n    function Button() {\n        _classCallCheck(this, Button);\n\n        var _this = _possibleConstructorReturn(this, (Button.__proto__ || Object.getPrototypeOf(Button)).call(this));\n\n        _this.width = 170;\n        _this.height = 30;\n        _this.name = \"\"; //鍞竴鏍囪瘑\n        _this.text = \"button\";\n        _this.cursor = \"default\";\n        _this.scope = \"button\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.belongId = \"\";\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n        _this.value = \"鎸夐挳\"; //鍊糪n        _this.isdefaultvalue = \"false\"; //鏄惁鏄粯璁ゅ€糪n        _this.refreshonchanged = \"false\"; //鍒锋柊\n        _this.calculateonrefresh = \"false\"; //閲嶈绠梊n        _this.discript = ''; //鎻忚堪\n        _this.refreshmode = 0; //閲嶅埛鏂扮殑鏂瑰紡\n        _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n        _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n        _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n        _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n        _this.readonlyscript = \"\"; //鍙鏉′欢鑴氭湰\n        _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n        _this.smallwidth = 100;\n        _this.acttype = \"\"; //鍔ㄤ綔绫诲瀷\n        _this.beforeactionscript = \"\"; //鍔ㄤ綔鎵ц鍓嶈剼鏈琝n        _this.afteractionscript = \"\"; //鍔ㄤ綔鎵ц鍚庤剼鏈琝n        _this.statetoshow = \"\"; //鐘舵€佹爣绛綷n        _this.filenamescript = \"\"; //鏂囦欢璺緞鑴氭湰\n        return _this;\n    }\n\n    _createClass(Button, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\"style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-input classname=\"cn.myapps.runtime.dynaform.form.ejb.ButtonField\" value=\"' + this.name + '\" type=\"button\" nodeid=\"' + this.id + '\" class=\"inlineBlock\" minwidth=\"' + this.width + '\" style=\"border:1px solid #ccc;min-width:' + this.smallwidth + 'px;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\" name=\"' + this.name + '\" isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\" \\n            isdefaultvalue=\"' + this.isdefaultvalue + '\" refreshonchanged=\"' + this.refreshonchanged + '\" \\n            calculateonrefresh=\"' + this.calculateonrefresh + '\" \\n            hiddenscript=\"' + this.hiddenscript + '\" hiddenvalue=\"' + this.hiddenvalue + '\" \\n            hiddenprintscript=\"' + this.hiddenprintscript + '\" \\n            printhiddenvalue=\"' + this.printhiddenvalue + '\" readonlyscript=\"' + this.readonlyscript + '\" \\n            valuescript=\"' + this.valuescript + '\" acttype=\"' + this.acttype + '\" \\n            beforeactionscript=\"' + this.beforeactionscript + '\" afteractionscript=\"' + this.afteractionscript + '\"\\n            filenamescript=\"' + this.filenamescript + '\"';\n\n            h += 'refreshfields=\"';\n            if (this.refreshfields.length > 0) {\n                for (var i = 0; i < this.refreshfields.length; i++) {\n                    h += this.refreshfields[i];\n                    if (i != this.refreshfields.length - 1) {\n                        h += \";\";\n                    }\n                }\n            }\n            h += '\"' + '>' + this.value + '</f-input></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n    }]);\n\n    return Button;\n}(_Element3.default);\n\nexports.default = Button;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9CdXR0b24uanM/ZjIxZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRWxlbWVudCBmcm9tICcuL0VsZW1lbnQnO1xyXG5pbXBvcnQge1NlcXVlbmNlfSBmcm9tICcuLi8uLi91dGlsaXR5JztcclxuY2xhc3MgQnV0dG9uIGV4dGVuZHMgRWxlbWVudHtcclxuICAgIGNvbnN0cnVjdG9yKCl7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLndpZHRoPTE3MDtcclxuICAgICAgICB0aGlzLmhlaWdodD0zMDtcclxuICAgICAgICB0aGlzLm5hbWU9XCJcIjsvL+WUr+S4gOagh+ivhlxyXG4gICAgICAgIHRoaXMudGV4dD1cImJ1dHRvblwiO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yPVwiZGVmYXVsdFwiO1xyXG4gICAgICAgIHRoaXMuc2NvcGU9XCJidXR0b25cIjtcclxuICAgICAgICB0aGlzLmlkID0gU2VxdWVuY2UuY3JlYXRlVXVpZCgpO1xyXG4gICAgICAgIHRoaXMuYmVsb25nSWQ9XCJcIjtcclxuICAgICAgICB0aGlzLnByZVg9MDtcclxuICAgICAgICB0aGlzLnByZVk9MDtcclxuICAgICAgICB0aGlzLm1vdmVYPTA7XHJcbiAgICAgICAgdGhpcy5tb3ZlWT0wO1xyXG4gICAgICAgIHRoaXMudmFsdWU9XCLmjInpkq5cIjsvL+WAvFxyXG4gICAgICAgIHRoaXMuaXNkZWZhdWx0dmFsdWU9XCJmYWxzZVwiLy/mmK/lkKbmmK/pu5jorqTlgLxcclxuICAgICAgICB0aGlzLnJlZnJlc2hvbmNoYW5nZWQ9XCJmYWxzZVwiOy8v5Yi35pawXHJcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVvbnJlZnJlc2g9XCJmYWxzZVwiOy8v6YeN6K6h566XXHJcbiAgICAgICAgdGhpcy5kaXNjcmlwdD0nJzsvL+aPj+i/sFxyXG4gICAgICAgIHRoaXMucmVmcmVzaG1vZGU9MDsvL+mHjeWIt+aWsOeahOaWueW8j1xyXG4gICAgICAgIHRoaXMuaGlkZGVuc2NyaXB0PVwiXCI7Ly/pmpDol4/mnaHku7bohJrmnKxcclxuICAgICAgICB0aGlzLmhpZGRlbnZhbHVlPVwiXCI7Ly/pmpDol4/ml7bmmL7npLrlgLxcclxuICAgICAgICB0aGlzLmhpZGRlbnByaW50c2NyaXB0PVwiXCI7Ly/miZPljbDml7bpmpDol4/mnaHku7bohJrmnKxcclxuICAgICAgICB0aGlzLnByaW50aGlkZGVudmFsdWU9XCJcIjsvL+aJk+WNsOmakOiXj+aXtuaYvuekuuWAvFxyXG4gICAgICAgIHRoaXMucmVhZG9ubHlzY3JpcHQ9XCJcIjsvL+WPquivu+adoeS7tuiEmuacrFxyXG4gICAgICAgIHRoaXMucmVmcmVzaGZpZWxkcz1bXTsvL+WxgOmDqOWIt+aWsOeahOWtl+autee7hOWQiFxyXG4gICAgICAgIHRoaXMuc21hbGx3aWR0aD0xMDA7XHJcbiAgICAgICAgdGhpcy5hY3R0eXBlPVwiXCIvL+WKqOS9nOexu+Wei1xyXG4gICAgICAgIHRoaXMuYmVmb3JlYWN0aW9uc2NyaXB0PVwiXCIvL+WKqOS9nOaJp+ihjOWJjeiEmuacrFxyXG4gICAgICAgIHRoaXMuYWZ0ZXJhY3Rpb25zY3JpcHQ9XCJcIi8v5Yqo5L2c5omn6KGM5ZCO6ISa5pysXHJcbiAgICAgICAgdGhpcy5zdGF0ZXRvc2hvdz1cIlwiLy/nirbmgIHmoIfnrb5cclxuICAgICAgICB0aGlzLmZpbGVuYW1lc2NyaXB0PVwiXCI7Ly/mlofku7bot6/lvoTohJrmnKxcclxuICAgIH1cclxuICAgIHRvSHRtbCgpe31cclxuICAgIFxyXG4gICAgcGFpbnQoKXtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgaD1cIlwiO1xyXG4gICAgICAgIGlmKHRoaXMuaXNibG9jaz09XCJ0cnVlXCIpe1xyXG4gICAgICAgICAgICBoPWA8ZGl2IGNsYXNzPVwiYmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgc3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgaD1gPGRpdiBjbGFzcz1cImlubGluZUJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwic3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmlzc2hvd2xhYmVsPT1cInRydWVcIiB8fCB0aGlzLmlzc2hvd2xhYmVsPT10cnVlKXtcclxuICAgICAgICAgICAgaCs9YDxmLWxhYmVsIHN0eWxlPVwibGluZS1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj4ke3RoaXMubGFiZWx2YWx1ZX08L2YtbGFiZWw+YFxyXG4gICAgICAgIH1cclxuICAgICAgICAgICAgaCs9YDxmLWlucHV0IGNsYXNzbmFtZT1cImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLkJ1dHRvbkZpZWxkXCIgdmFsdWU9XCIke3RoaXMubmFtZX1cIiB0eXBlPVwiYnV0dG9uXCIgbm9kZWlkPVwiJHt0aGlzLmlkfVwiIGNsYXNzPVwiaW5saW5lQmxvY2tcIiBtaW53aWR0aD1cIiR7dGhpcy53aWR0aH1cIiBzdHlsZT1cImJvcmRlcjoxcHggc29saWQgI2NjYzttaW4td2lkdGg6JHt0aGlzLnNtYWxsd2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O2BcclxuICAgICAgICAgICAgaWYodGhpcy56SW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgaCs9YHotaW5kZXg6YCt0aGlzLnpJbmRleCtgO2A7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaCs9YFwiIG5hbWU9XCIke3RoaXMubmFtZX1cIiBpc3Nob3dsYWJlbD1cIiR7dGhpcy5pc3Nob3dsYWJlbH1cIiBsYWJlbHZhbHVlPVwiJHt0aGlzLmxhYmVsdmFsdWV9XCIgXHJcbiAgICAgICAgICAgIGlzZGVmYXVsdHZhbHVlPVwiJHt0aGlzLmlzZGVmYXVsdHZhbHVlfVwiIHJlZnJlc2hvbmNoYW5nZWQ9XCIke3RoaXMucmVmcmVzaG9uY2hhbmdlZH1cIiBcclxuICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoPVwiJHt0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaH1cIiBcclxuICAgICAgICAgICAgaGlkZGVuc2NyaXB0PVwiJHt0aGlzLmhpZGRlbnNjcmlwdH1cIiBoaWRkZW52YWx1ZT1cIiR7dGhpcy5oaWRkZW52YWx1ZX1cIiBcclxuICAgICAgICAgICAgaGlkZGVucHJpbnRzY3JpcHQ9XCIke3RoaXMuaGlkZGVucHJpbnRzY3JpcHR9XCIgXHJcbiAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU9XCIke3RoaXMucHJpbnRoaWRkZW52YWx1ZX1cIiByZWFkb25seXNjcmlwdD1cIiR7dGhpcy5yZWFkb25seXNjcmlwdH1cIiBcclxuICAgICAgICAgICAgdmFsdWVzY3JpcHQ9XCIke3RoaXMudmFsdWVzY3JpcHR9XCIgYWN0dHlwZT1cIiR7dGhpcy5hY3R0eXBlfVwiIFxyXG4gICAgICAgICAgICBiZWZvcmVhY3Rpb25zY3JpcHQ9XCIke3RoaXMuYmVmb3JlYWN0aW9uc2NyaXB0fVwiIGFmdGVyYWN0aW9uc2NyaXB0PVwiJHt0aGlzLmFmdGVyYWN0aW9uc2NyaXB0fVwiXHJcbiAgICAgICAgICAgIGZpbGVuYW1lc2NyaXB0PVwiJHt0aGlzLmZpbGVuYW1lc2NyaXB0fVwiYDtcclxuICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgIGgrPWByZWZyZXNoZmllbGRzPVwiYDtcclxuICAgICAgICAgICAgaWYodGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgIGgrPXRoaXMucmVmcmVzaGZpZWxkc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICBpZihpIT10aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoLTEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoKz1cIjtcIjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaCs9YFwiYCtcclxuXHJcbiAgICAgICAgICAgIGA+YCtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZStcclxuICAgICAgICAgICAgYDwvZi1pbnB1dD48L2Rpdj5gXHJcbiAgICAgICAgcmV0dXJuIGg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGdldE5vZGVDb25maWdJbmZvKCl7XHJcbiAgICAgICAgbGV0IG5vZGUgPSB7fTtcclxuXHRcdG5vZGUudGV4dCA9IHRoaXMudGV4dDtcclxuXHRcdG5vZGUuaWNvbiA9ICdnbHlwaGljb24gZ2x5cGhpY29uLWdsYXNzJztcclxuXHRcdG5vZGUudXVpZCA9IHRoaXMuZ2V0UHJvcCgnaWQnKTtcdFxyXG5cdFx0bm9kZS5pbnN0YW5jZSA9IHRoaXM7XHJcblx0XHRyZXR1cm4gbm9kZTtcclxuICAgIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBCdXR0b247XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9mb3JtL2NvbXBvbmVudC9CdXR0b24uanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7Ozs7Ozs7O0FBQUE7OztBQUNBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEvQkE7QUFnQ0E7QUFDQTs7O0FBQUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUF2RkE7QUFDQTtBQXdGQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///108\n");

/***/ }),
/* 109 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Viewdialogfield = function (_Element) {\n    _inherits(Viewdialogfield, _Element);\n\n    function Viewdialogfield() {\n        _classCallCheck(this, Viewdialogfield);\n\n        var _this = _possibleConstructorReturn(this, (Viewdialogfield.__proto__ || Object.getPrototypeOf(Viewdialogfield)).call(this));\n\n        _this.width = 170;\n        _this.height = 30;\n        _this.name = \"\"; //鍞竴鏍囪瘑\n        _this.text = \"viewdialogfield\";\n        _this.cursor = \"default\";\n        _this.scope = \"viewdialogfield\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.belongId = \"\";\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n        _this.value = \"瑙嗗浘閫夋嫨妗哱"; //鍊糪n        _this.refreshonchanged = \"false\"; //鍒锋柊\n        _this.calculateonrefresh = \"false\"; //鍐茶绠梊n        _this.mobile = \"false\"; //鎵嬫満鍙敤\n        _this.refreshmode = 0; //鍐插埛鏂扮殑鏂瑰紡\n\n        _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n        _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n        _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n        _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n        _this.readonlyscript = \"\"; //鍙鏉′欢鑴氭湰\n        _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n\n        _this.smallwidth = 100;\n\n        _this.caption = \"\"; //璇存槑鏂囧瓧\n        _this.module = \"d\"; //妯″潡\n        _this.dialogview = \"s\"; //瑙嗗浘\n        _this.opentype = \"寮瑰嚭灞傛樉绀篭"; //鎵撳紑绫诲瀷\n        _this.maximization = \"default\"; //鏄剧ず澶у皬\n        _this.divwidth = \"\";\n        _this.divheight = \"\";\n        _this.selectone = \"false\"; //鎷兼帴妯″紡\n        _this.mutilselect = \"false\"; //澶氶」閫夋嫨\n        _this.allowviewdoc = \"false\"; //鍏佽鏌ョ湅鏂囨。\n        _this.mapping = []; //鏄犲皠\n        _this.okscript = \"\"; //纭畾鏉′欢鑴氭湰\n        _this.callbackscript = \"\"; //纭畾鍚庢墽琛岃剼鏈琝n\n\n        return _this;\n    }\n\n    _createClass(Viewdialogfield, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n            // if(this.x==0&&this.y==0){\n            //     this.x=this.left;\n            //     this.y=this.top;\n            // }else{\n            //     this.left=this.x;\n            //     this.top=this.y;\n            // }\n            //console.log(panel);\n            var map = JSON.stringify(this.mapping).replace(/\"/g, \"'\");\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\"style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-img  classname=\"cn.myapps.runtime.dynaform.form.ejb.ViewDialogField\" type=\"text\" nodeid=\"' + this.id + '\" class=\"inlineBlock\" minwidth=\"' + this.width + '\" style=\"border:1px solid #ccc;min-width:' + this.smallwidth + 'px;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\" name=\"' + this.name + '\" isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\"\\n            refreshonchanged=\"' + this.refreshonchanged + '\" \\n            calculateonrefresh=\"' + this.calculateonrefresh + '\" mobile=\"' + this.mobile + '\"\\n            refreshmode=\"' + this.refreshmode + '\" maximization=\"' + this.maximization + '\"\\n            hiddenscript=\"' + this.hiddenscript + '\" hiddenvalue=\"' + this.hiddenvalue + '\" \\n            hiddenprintscript=\"' + this.hiddenprintscript + '\" \\n            printhiddenvalue=\"' + this.printhiddenvalue + '\" readonlyscript=\"' + this.readonlyscript + '\"\\n            caption=\"' + this.caption + '\" module=\"' + this.module + '\"\\n            dialogview=\"' + this.dialogview + '\" opentype=\"' + this.opentype + '\" mapping=\"' + map + '\"\\n            okscript=\"' + this.okscript + '\" callbackscript=\"' + this.callbackscript + '\"\\n            divwidth=\"' + this.divwidth + '\" divheight=\"' + this.divheight + '\"\\n            ';\n\n            h += 'refreshfields=\"';\n            if (this.refreshfields.length > 0) {\n                for (var i = 0; i < this.refreshfields.length; i++) {\n                    h += this.refreshfields[i];\n                    if (i != this.refreshfields.length - 1) {\n                        h += \";\";\n                    }\n                }\n            }\n\n            h += '\"' + '>' + this.value + '</f-img></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n    }]);\n\n    return Viewdialogfield;\n}(_Element3.default);\n\nexports.default = Viewdialogfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9WaWV3ZGlhbG9nZmllbGQuanM/NmZhYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRWxlbWVudCBmcm9tICcuL0VsZW1lbnQnO1xyXG5pbXBvcnQge1NlcXVlbmNlfSBmcm9tICcuLi8uLi91dGlsaXR5JztcclxuY2xhc3MgVmlld2RpYWxvZ2ZpZWxkIGV4dGVuZHMgRWxlbWVudHtcclxuICAgIGNvbnN0cnVjdG9yKCl7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLndpZHRoPTE3MDtcclxuICAgICAgICB0aGlzLmhlaWdodD0zMDtcclxuICAgICAgICB0aGlzLm5hbWU9XCJcIjsvL+WUr+S4gOagh+ivhlxyXG4gICAgICAgIHRoaXMudGV4dD1cInZpZXdkaWFsb2dmaWVsZFwiO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yPVwiZGVmYXVsdFwiO1xyXG4gICAgICAgIHRoaXMuc2NvcGU9XCJ2aWV3ZGlhbG9nZmllbGRcIjtcclxuICAgICAgICB0aGlzLmlkID0gU2VxdWVuY2UuY3JlYXRlVXVpZCgpO1xyXG4gICAgICAgIHRoaXMuYmVsb25nSWQ9XCJcIjtcclxuICAgICAgICB0aGlzLnByZVg9MDtcclxuICAgICAgICB0aGlzLnByZVk9MDtcclxuICAgICAgICB0aGlzLm1vdmVYPTA7XHJcbiAgICAgICAgdGhpcy5tb3ZlWT0wO1xyXG4gICAgICAgIHRoaXMudmFsdWU9XCLop4blm77pgInmi6nmoYZcIjsvL+WAvFxyXG4gICAgICAgIHRoaXMucmVmcmVzaG9uY2hhbmdlZD1cImZhbHNlXCI7Ly/liLfmlrBcclxuICAgICAgICB0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaD1cImZhbHNlXCI7Ly/lhrLorqHnrpdcclxuICAgICAgICB0aGlzLm1vYmlsZT1cImZhbHNlXCI7Ly/miYvmnLrlj6/nlKhcclxuICAgICAgICB0aGlzLnJlZnJlc2htb2RlPTA7Ly/lhrLliLfmlrDnmoTmlrnlvI9cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmhpZGRlbnNjcmlwdD1cIlwiOy8v6ZqQ6JeP5p2h5Lu26ISa5pysXHJcbiAgICAgICAgdGhpcy5oaWRkZW52YWx1ZT1cIlwiOy8v6ZqQ6JeP5pe25pi+56S65YC8XHJcbiAgICAgICAgdGhpcy5oaWRkZW5wcmludHNjcmlwdD1cIlwiOy8v5omT5Y2w5pe26ZqQ6JeP5p2h5Lu26ISa5pysXHJcbiAgICAgICAgdGhpcy5wcmludGhpZGRlbnZhbHVlPVwiXCI7Ly/miZPljbDpmpDol4/ml7bmmL7npLrlgLxcclxuICAgICAgICB0aGlzLnJlYWRvbmx5c2NyaXB0PVwiXCI7Ly/lj6ror7vmnaHku7bohJrmnKxcclxuICAgICAgICB0aGlzLnJlZnJlc2hmaWVsZHM9W107Ly/lsYDpg6jliLfmlrDnmoTlrZfmrrXnu4TlkIhcclxuXHJcbiAgICAgICAgdGhpcy5zbWFsbHdpZHRoPTEwMDtcclxuXHJcbiAgICAgICAgdGhpcy5jYXB0aW9uPVwiXCI7Ly/or7TmmI7mloflrZdcclxuICAgICAgICB0aGlzLm1vZHVsZT1cImRcIjsvL+aooeWdl1xyXG4gICAgICAgIHRoaXMuZGlhbG9ndmlldz1cInNcIjsvL+inhuWbvlxyXG4gICAgICAgIHRoaXMub3BlbnR5cGU9XCLlvLnlh7rlsYLmmL7npLpcIjsvL+aJk+W8gOexu+Wei1xyXG4gICAgICAgIHRoaXMubWF4aW1pemF0aW9uPVwiZGVmYXVsdFwiOy8v5pi+56S65aSn5bCPXHJcbiAgICAgICAgdGhpcy5kaXZ3aWR0aD1cIlwiO1xyXG4gICAgICAgIHRoaXMuZGl2aGVpZ2h0PVwiXCI7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RvbmU9XCJmYWxzZVwiOy8v5ou85o6l5qih5byPXHJcbiAgICAgICAgdGhpcy5tdXRpbHNlbGVjdD1cImZhbHNlXCI7Ly/lpJrpobnpgInmi6lcclxuICAgICAgICB0aGlzLmFsbG93dmlld2RvYz1cImZhbHNlXCI7Ly/lhYHorrjmn6XnnIvmlofmoaNcclxuICAgICAgICB0aGlzLm1hcHBpbmc9W107Ly/mmKDlsIRcclxuICAgICAgICB0aGlzLm9rc2NyaXB0PVwiXCIvL+ehruWumuadoeS7tuiEmuacrFxyXG4gICAgICAgIHRoaXMuY2FsbGJhY2tzY3JpcHQ9XCJcIi8v56Gu5a6a5ZCO5omn6KGM6ISa5pysXHJcbiAgICAgICAgXHJcblxyXG4gICAgfVxyXG4gICAgdG9IdG1sKCl7fVxyXG4gICAgXHJcbiAgICBwYWludCgpe1xyXG4gICAgICAgIC8vIGlmKHRoaXMueD09MCYmdGhpcy55PT0wKXtcclxuICAgICAgICAvLyAgICAgdGhpcy54PXRoaXMubGVmdDtcclxuICAgICAgICAvLyAgICAgdGhpcy55PXRoaXMudG9wO1xyXG4gICAgICAgIC8vIH1lbHNle1xyXG4gICAgICAgIC8vICAgICB0aGlzLmxlZnQ9dGhpcy54O1xyXG4gICAgICAgIC8vICAgICB0aGlzLnRvcD10aGlzLnk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vY29uc29sZS5sb2cocGFuZWwpO1xyXG4gICAgICAgIGxldCBtYXA9SlNPTi5zdHJpbmdpZnkodGhpcy5tYXBwaW5nKS5yZXBsYWNlKC9cIi9nLFwiJ1wiKTtcclxuICAgICAgICBsZXQgaD1cIlwiO1xyXG4gICAgICAgIGlmKHRoaXMuaXNibG9jaz09XCJ0cnVlXCIpe1xyXG4gICAgICAgICAgICBoPWA8ZGl2IGNsYXNzPVwiYmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgc3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgaD1gPGRpdiBjbGFzcz1cImlubGluZUJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwic3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmlzc2hvd2xhYmVsPT1cInRydWVcIiB8fCB0aGlzLmlzc2hvd2xhYmVsPT10cnVlKXtcclxuICAgICAgICAgICAgaCs9YDxmLWxhYmVsIHN0eWxlPVwibGluZS1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj4ke3RoaXMubGFiZWx2YWx1ZX08L2YtbGFiZWw+YFxyXG4gICAgICAgIH1cclxuICAgICAgICAgICAgaCs9YDxmLWltZyAgY2xhc3NuYW1lPVwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuVmlld0RpYWxvZ0ZpZWxkXCIgdHlwZT1cInRleHRcIiBub2RlaWQ9XCIke3RoaXMuaWR9XCIgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIG1pbndpZHRoPVwiJHt0aGlzLndpZHRofVwiIHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjY2NjO21pbi13aWR0aDoke3RoaXMuc21hbGx3aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7YFxyXG4gICAgICAgICAgICBpZih0aGlzLnpJbmRleCl7XHJcbiAgICAgICAgICAgICAgICBoKz1gei1pbmRleDpgK3RoaXMuekluZGV4K2A7YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBoKz1gXCIgbmFtZT1cIiR7dGhpcy5uYW1lfVwiIGlzc2hvd2xhYmVsPVwiJHt0aGlzLmlzc2hvd2xhYmVsfVwiIGxhYmVsdmFsdWU9XCIke3RoaXMubGFiZWx2YWx1ZX1cIlxyXG4gICAgICAgICAgICByZWZyZXNob25jaGFuZ2VkPVwiJHt0aGlzLnJlZnJlc2hvbmNoYW5nZWR9XCIgXHJcbiAgICAgICAgICAgIGNhbGN1bGF0ZW9ucmVmcmVzaD1cIiR7dGhpcy5jYWxjdWxhdGVvbnJlZnJlc2h9XCIgbW9iaWxlPVwiJHt0aGlzLm1vYmlsZX1cIlxyXG4gICAgICAgICAgICByZWZyZXNobW9kZT1cIiR7dGhpcy5yZWZyZXNobW9kZX1cIiBtYXhpbWl6YXRpb249XCIke3RoaXMubWF4aW1pemF0aW9ufVwiXHJcbiAgICAgICAgICAgIGhpZGRlbnNjcmlwdD1cIiR7dGhpcy5oaWRkZW5zY3JpcHR9XCIgaGlkZGVudmFsdWU9XCIke3RoaXMuaGlkZGVudmFsdWV9XCIgXHJcbiAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0PVwiJHt0aGlzLmhpZGRlbnByaW50c2NyaXB0fVwiIFxyXG4gICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlPVwiJHt0aGlzLnByaW50aGlkZGVudmFsdWV9XCIgcmVhZG9ubHlzY3JpcHQ9XCIke3RoaXMucmVhZG9ubHlzY3JpcHR9XCJcclxuICAgICAgICAgICAgY2FwdGlvbj1cIiR7dGhpcy5jYXB0aW9ufVwiIG1vZHVsZT1cIiR7dGhpcy5tb2R1bGV9XCJcclxuICAgICAgICAgICAgZGlhbG9ndmlldz1cIiR7dGhpcy5kaWFsb2d2aWV3fVwiIG9wZW50eXBlPVwiJHt0aGlzLm9wZW50eXBlfVwiIG1hcHBpbmc9XCIke21hcH1cIlxyXG4gICAgICAgICAgICBva3NjcmlwdD1cIiR7dGhpcy5va3NjcmlwdH1cIiBjYWxsYmFja3NjcmlwdD1cIiR7dGhpcy5jYWxsYmFja3NjcmlwdH1cIlxyXG4gICAgICAgICAgICBkaXZ3aWR0aD1cIiR7dGhpcy5kaXZ3aWR0aH1cIiBkaXZoZWlnaHQ9XCIke3RoaXMuZGl2aGVpZ2h0fVwiXHJcbiAgICAgICAgICAgIGA7XHJcbiAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICBoKz1gcmVmcmVzaGZpZWxkcz1cImA7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgICAgICBoKz10aGlzLnJlZnJlc2hmaWVsZHNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoaSE9dGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaCs9XCI7XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBoKz1gXCJgK1xyXG5cclxuICAgICAgICAgICAgYD5gK1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlK1xyXG4gICAgICAgICAgICBgPC9mLWltZz48L2Rpdj5gXHJcbiAgICAgICAgcmV0dXJuIGg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGdldE5vZGVDb25maWdJbmZvKCl7XHJcbiAgICAgICAgbGV0IG5vZGUgPSB7fTtcclxuXHRcdG5vZGUudGV4dCA9IHRoaXMudGV4dDtcclxuXHRcdG5vZGUuaWNvbiA9ICdnbHlwaGljb24gZ2x5cGhpY29uLWdsYXNzJztcclxuXHRcdG5vZGUudXVpZCA9IHRoaXMuZ2V0UHJvcCgnaWQnKTtcdFxyXG5cdFx0bm9kZS5pbnN0YW5jZSA9IHRoaXM7XHJcblx0XHRyZXR1cm4gbm9kZTtcclxuICAgIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBWaWV3ZGlhbG9nZmllbGQ7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9mb3JtL2NvbXBvbmVudC9WaWV3ZGlhbG9nZmllbGQuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7Ozs7Ozs7O0FBQUE7OztBQUNBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEzQ0E7QUE0Q0E7QUFDQTs7O0FBQUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUEvR0E7QUFDQTtBQWdIQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///109\n");

/***/ }),
/* 110 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Tabfield = function (_Element) {\n    _inherits(Tabfield, _Element);\n\n    function Tabfield() {\n        _classCallCheck(this, Tabfield);\n\n        var _this = _possibleConstructorReturn(this, (Tabfield.__proto__ || Object.getPrototypeOf(Tabfield)).call(this));\n\n        _this.width = 170;\n        _this.height = 30;\n        _this.cursor = \"default\";\n        _this.scope = \"tabfield\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n        _this.value = \"閫夐」鍗"; //鍊糪n        _this.smallwidth = 100;\n        _this.showmode = \"0\"; //\n        _this.allowsamename = \"false\";\n        _this.relstr = [{\n            \"name\": \"32\",\n            \"type\": \"form\",\n            \"module\": \"1\",\n            \"moduleId\": \"1\",\n            \"formId\": \"1\",\n            \"hiddenScript\": \"3223\",\n            \"readOnlyScript\": \"cds\",\n            \"hiddenPrintScript\": \"sdsdfs\",\n            \"refreshOnChanged\": \"1\",\n            \"calculateOnRefresh\": \"false\",\n            \"relate\": \"false\"\n\n        }]; //閫夐」鍗″唴瀹筡n        _this.selectedscript = \"\"; //椤电鑴氭湰\n        return _this;\n    }\n\n    _createClass(Tabfield, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\"style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-img type=\"tabfield\"  classname=\"cn.myapps.runtime.dynaform.form.ejb.TabField\" nodeid=\"' + this.id + '\" class=\"inlineBlock\" minwidth=\"' + this.width + '\" style=\"border:1px solid #ccc;min-width:' + this.smallwidth + 'px;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\"  isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\" \\n            showmode=\"' + this.showmode + '\" allowsamename=\"' + this.allowsamename + '\" selectedscript=\"' + this.selectedscript + '\" ';\n            if (this.relstr.length > 0) {\n                // for(let i=0;i<this.relstr.length;i++){\n                //    if(this.relstr[i].name==\"\"){\n                //     this.relstr.splice(i,1);\n                //     if(i!=0)i=i-1;\n                //    }\n                // }\n                h += 'relstr=\"' + JSON.stringify(this.relstr).replace(/\"/g, \"'\") + '\"';\n            } else {\n                h += 'relstr=\"\"';\n            }\n            h += ';';\n            h += '\"' + '>' + this.value + '</f-img></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n    }]);\n\n    return Tabfield;\n}(_Element3.default);\n\nexports.default = Tabfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9UYWJmaWVsZC5qcz8zZTRjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFbGVtZW50IGZyb20gJy4vRWxlbWVudCc7XHJcbmltcG9ydCB7U2VxdWVuY2V9IGZyb20gJy4uLy4uL3V0aWxpdHknO1xyXG5jbGFzcyBUYWJmaWVsZCBleHRlbmRzIEVsZW1lbnR7XHJcbiAgICBjb25zdHJ1Y3Rvcigpe1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy53aWR0aD0xNzA7XHJcbiAgICAgICAgdGhpcy5oZWlnaHQ9MzA7XHJcbiAgICAgICAgdGhpcy5jdXJzb3I9XCJkZWZhdWx0XCI7XHJcbiAgICAgICAgdGhpcy5zY29wZT1cInRhYmZpZWxkXCI7XHJcbiAgICAgICAgdGhpcy5pZCA9IFNlcXVlbmNlLmNyZWF0ZVV1aWQoKTtcclxuICAgICAgICB0aGlzLnByZVg9MDtcclxuICAgICAgICB0aGlzLnByZVk9MDtcclxuICAgICAgICB0aGlzLm1vdmVYPTA7XHJcbiAgICAgICAgdGhpcy5tb3ZlWT0wO1xyXG4gICAgICAgIHRoaXMudmFsdWU9XCLpgInpobnljaFcIjsvL+WAvFxyXG4gICAgICAgIHRoaXMuc21hbGx3aWR0aD0xMDA7XHJcbiAgICAgICAgdGhpcy5zaG93bW9kZT1cIjBcIjsvL1xyXG4gICAgICAgIHRoaXMuYWxsb3dzYW1lbmFtZT1cImZhbHNlXCI7XHJcbiAgICAgICAgdGhpcy5yZWxzdHI9W3tcclxuICAgICAgICAgICAgXCJuYW1lXCI6XCIzMlwiLFxyXG4gICAgICAgICAgICBcInR5cGVcIjpcImZvcm1cIixcclxuICAgICAgICAgICAgXCJtb2R1bGVcIjpcIjFcIixcclxuICAgICAgICAgICAgXCJtb2R1bGVJZFwiOlwiMVwiLFxyXG4gICAgICAgICAgICBcImZvcm1JZFwiOlwiMVwiLFxyXG4gICAgICAgICAgICBcImhpZGRlblNjcmlwdFwiOlwiMzIyM1wiLFxyXG4gICAgICAgICAgICBcInJlYWRPbmx5U2NyaXB0XCI6XCJjZHNcIixcclxuICAgICAgICAgICAgXCJoaWRkZW5QcmludFNjcmlwdFwiOlwic2RzZGZzXCIsXHJcbiAgICAgICAgICAgIFwicmVmcmVzaE9uQ2hhbmdlZFwiOlwiMVwiLFxyXG4gICAgICAgICAgICBcImNhbGN1bGF0ZU9uUmVmcmVzaFwiOlwiZmFsc2VcIixcclxuICAgICAgICAgICAgXCJyZWxhdGVcIjpcImZhbHNlXCIsXHJcblxyXG4gICAgICAgIH1dOy8v6YCJ6aG55Y2h5YaF5a65XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZHNjcmlwdD1cIlwiOy8v6aG1562+6ISa5pysXHJcbiAgICB9XHJcbiAgICB0b0h0bWwoKXt9XHJcbiAgICBcclxuICAgIHBhaW50KCl7XHJcbiAgICAgICAgbGV0IGg9XCJcIjtcclxuICAgICAgICBpZih0aGlzLmlzYmxvY2s9PVwidHJ1ZVwiKXtcclxuICAgICAgICAgICAgaD1gPGRpdiBjbGFzcz1cImJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIHN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGg9YDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcInN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpcy5pc3Nob3dsYWJlbD09XCJ0cnVlXCIgfHwgdGhpcy5pc3Nob3dsYWJlbD09dHJ1ZSl7XHJcbiAgICAgICAgICAgIGgrPWA8Zi1sYWJlbCBzdHlsZT1cImxpbmUtaGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+JHt0aGlzLmxhYmVsdmFsdWV9PC9mLWxhYmVsPmBcclxuICAgICAgICB9XHJcbiAgICAgICAgICAgIGgrPWA8Zi1pbWcgdHlwZT1cInRhYmZpZWxkXCIgIGNsYXNzbmFtZT1cImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLlRhYkZpZWxkXCIgbm9kZWlkPVwiJHt0aGlzLmlkfVwiIGNsYXNzPVwiaW5saW5lQmxvY2tcIiBtaW53aWR0aD1cIiR7dGhpcy53aWR0aH1cIiBzdHlsZT1cImJvcmRlcjoxcHggc29saWQgI2NjYzttaW4td2lkdGg6JHt0aGlzLnNtYWxsd2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O2BcclxuICAgICAgICAgICAgaWYodGhpcy56SW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgaCs9YHotaW5kZXg6YCt0aGlzLnpJbmRleCtgO2A7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaCs9YFwiICBpc3Nob3dsYWJlbD1cIiR7dGhpcy5pc3Nob3dsYWJlbH1cIiBsYWJlbHZhbHVlPVwiJHt0aGlzLmxhYmVsdmFsdWV9XCIgXHJcbiAgICAgICAgICAgIHNob3dtb2RlPVwiJHt0aGlzLnNob3dtb2RlfVwiIGFsbG93c2FtZW5hbWU9XCIke3RoaXMuYWxsb3dzYW1lbmFtZX1cIiBzZWxlY3RlZHNjcmlwdD1cIiR7dGhpcy5zZWxlY3RlZHNjcmlwdH1cIiBgXHJcbiAgICAgICAgICAgIGlmKHRoaXMucmVsc3RyLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgIC8vIGZvcihsZXQgaT0wO2k8dGhpcy5yZWxzdHIubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICAvLyAgICBpZih0aGlzLnJlbHN0cltpXS5uYW1lPT1cIlwiKXtcclxuICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLnJlbHN0ci5zcGxpY2UoaSwxKTtcclxuICAgICAgICAgICAgICAgIC8vICAgICBpZihpIT0wKWk9aS0xO1xyXG4gICAgICAgICAgICAgICAgLy8gICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgaCs9YHJlbHN0cj1cImArSlNPTi5zdHJpbmdpZnkodGhpcy5yZWxzdHIpLnJlcGxhY2UoL1wiL2csXCInXCIpK2BcImA7XHJcbiAgICAgICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgICAgICAgIGgrPWByZWxzdHI9XCJcImA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaCs9YDtgXHJcbiAgICAgICAgICAgIGgrPWBcImArXHJcbiAgICAgICAgICAgIGA+YCtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZStcclxuICAgICAgICAgICAgYDwvZi1pbWc+PC9kaXY+YFxyXG4gICAgICAgIHJldHVybiBoO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBnZXROb2RlQ29uZmlnSW5mbygpe1xyXG4gICAgICAgIGxldCBub2RlID0ge307XHJcblx0XHRub2RlLnRleHQgPSB0aGlzLnRleHQ7XHJcblx0XHRub2RlLmljb24gPSAnZ2x5cGhpY29uIGdseXBoaWNvbi1nbGFzcyc7XHJcblx0XHRub2RlLnV1aWQgPSB0aGlzLmdldFByb3AoJ2lkJyk7XHRcclxuXHRcdG5vZGUuaW5zdGFuY2UgPSB0aGlzO1xyXG5cdFx0cmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgVGFiZmllbGQ7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9mb3JtL2NvbXBvbmVudC9UYWJmaWVsZC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFBQTs7O0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQWNBO0FBN0JBO0FBOEJBO0FBQ0E7OztBQUFBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUE3RUE7QUFDQTtBQThFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///110\n");

/***/ }),
/* 111 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Calctextfield = function (_Element) {\n    _inherits(Calctextfield, _Element);\n\n    function Calctextfield() {\n        _classCallCheck(this, Calctextfield);\n\n        var _this = _possibleConstructorReturn(this, (Calctextfield.__proto__ || Object.getPrototypeOf(Calctextfield)).call(this));\n\n        _this.width = 170;\n        _this.height = 30;\n        _this.name = \"\"; //鍞竴鏍囪瘑\n        _this.text = \"calctextfield\";\n        _this.cursor = \"default\";\n        _this.scope = \"calctextfield\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.belongId = \"\";\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n        _this.smallwidth = 100;\n        _this.value = \"璁$畻鑴氭湰\";\n        _this.valuescript = \"\"; //\n        _this.calculateonrefresh = \"false\"; //\n        return _this;\n    }\n\n    _createClass(Calctextfield, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n            // if(this.x==0&&this.y==0){\n            //     this.x=this.left;\n            //     this.y=this.top;\n            // }else{\n            //     this.left=this.x;\n            //     this.top=this.y;\n            // }\n            //console.log(panel);\n\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\"style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-img classname=\"cn.myapps.runtime.dynaform.form.ejb.CalctextField\" type=\"text\" nodeid=\"' + this.id + '\" class=\"inlineBlock\" minwidth=\"' + this.width + '\" style=\"border:1px solid #ccc;min-width:' + this.smallwidth + 'px;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\" name=\"' + this.name + '\" isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\" \\n            valuescript=\"' + this.valuescript + '\" calculateonrefresh=\"' + this.calculateonrefresh + '\" \\n           \"';\n            h += '\"' + '>' + this.value + '</f-img></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n    }]);\n\n    return Calctextfield;\n}(_Element3.default);\n\nexports.default = Calctextfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTExLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9DYWxjdGV4dGZpZWxkLmpzPzFkNjYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVsZW1lbnQgZnJvbSAnLi9FbGVtZW50JztcclxuaW1wb3J0IHtTZXF1ZW5jZX0gZnJvbSAnLi4vLi4vdXRpbGl0eSc7XHJcbmNsYXNzIENhbGN0ZXh0ZmllbGQgZXh0ZW5kcyBFbGVtZW50e1xyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMud2lkdGg9MTcwO1xyXG4gICAgICAgIHRoaXMuaGVpZ2h0PTMwO1xyXG4gICAgICAgIHRoaXMubmFtZT1cIlwiOy8v5ZSv5LiA5qCH6K+GXHJcbiAgICAgICAgdGhpcy50ZXh0PVwiY2FsY3RleHRmaWVsZFwiO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yPVwiZGVmYXVsdFwiO1xyXG4gICAgICAgIHRoaXMuc2NvcGU9XCJjYWxjdGV4dGZpZWxkXCI7XHJcbiAgICAgICAgdGhpcy5pZCA9IFNlcXVlbmNlLmNyZWF0ZVV1aWQoKTtcclxuICAgICAgICB0aGlzLmJlbG9uZ0lkPVwiXCI7XHJcbiAgICAgICAgdGhpcy5wcmVYPTA7XHJcbiAgICAgICAgdGhpcy5wcmVZPTA7XHJcbiAgICAgICAgdGhpcy5tb3ZlWD0wO1xyXG4gICAgICAgIHRoaXMubW92ZVk9MDtcclxuICAgICAgICB0aGlzLnNtYWxsd2lkdGg9MTAwO1xyXG4gICAgICAgIHRoaXMudmFsdWU9XCLorqHnrpfohJrmnKxcIjtcclxuICAgICAgICB0aGlzLnZhbHVlc2NyaXB0PVwiXCI7Ly9cclxuICAgICAgICB0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaD1cImZhbHNlXCIvL1xyXG4gICAgfVxyXG4gICAgdG9IdG1sKCl7fVxyXG4gICAgXHJcbiAgICBwYWludCgpe1xyXG4gICAgICAgIC8vIGlmKHRoaXMueD09MCYmdGhpcy55PT0wKXtcclxuICAgICAgICAvLyAgICAgdGhpcy54PXRoaXMubGVmdDtcclxuICAgICAgICAvLyAgICAgdGhpcy55PXRoaXMudG9wO1xyXG4gICAgICAgIC8vIH1lbHNle1xyXG4gICAgICAgIC8vICAgICB0aGlzLmxlZnQ9dGhpcy54O1xyXG4gICAgICAgIC8vICAgICB0aGlzLnRvcD10aGlzLnk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vY29uc29sZS5sb2cocGFuZWwpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBoPVwiXCI7XHJcbiAgICAgICAgaWYodGhpcy5pc2Jsb2NrPT1cInRydWVcIil7XHJcbiAgICAgICAgICAgIGg9YDxkaXYgY2xhc3M9XCJibG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBoPWA8ZGl2IGNsYXNzPVwiaW5saW5lQmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCJzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRoaXMuaXNzaG93bGFiZWw9PVwidHJ1ZVwiIHx8IHRoaXMuaXNzaG93bGFiZWw9PXRydWUpe1xyXG4gICAgICAgICAgICBoKz1gPGYtbGFiZWwgc3R5bGU9XCJsaW5lLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPiR7dGhpcy5sYWJlbHZhbHVlfTwvZi1sYWJlbD5gXHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICBoKz1gPGYtaW1nIGNsYXNzbmFtZT1cImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLkNhbGN0ZXh0RmllbGRcIiB0eXBlPVwidGV4dFwiIG5vZGVpZD1cIiR7dGhpcy5pZH1cIiBjbGFzcz1cImlubGluZUJsb2NrXCIgbWlud2lkdGg9XCIke3RoaXMud2lkdGh9XCIgc3R5bGU9XCJib3JkZXI6MXB4IHNvbGlkICNjY2M7bWluLXdpZHRoOiR7dGhpcy5zbWFsbHdpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtgXHJcbiAgICAgICAgICAgIGlmKHRoaXMuekluZGV4KXtcclxuICAgICAgICAgICAgICAgIGgrPWB6LWluZGV4OmArdGhpcy56SW5kZXgrYDtgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGgrPWBcIiBuYW1lPVwiJHt0aGlzLm5hbWV9XCIgaXNzaG93bGFiZWw9XCIke3RoaXMuaXNzaG93bGFiZWx9XCIgbGFiZWx2YWx1ZT1cIiR7dGhpcy5sYWJlbHZhbHVlfVwiIFxyXG4gICAgICAgICAgICB2YWx1ZXNjcmlwdD1cIiR7dGhpcy52YWx1ZXNjcmlwdH1cIiBjYWxjdWxhdGVvbnJlZnJlc2g9XCIke3RoaXMuY2FsY3VsYXRlb25yZWZyZXNofVwiIFxyXG4gICAgICAgICAgIFwiYDtcclxuICAgICAgICAgICAgaCs9YFwiYCtcclxuICAgICAgICAgICAgYD5gK1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlK1xyXG4gICAgICAgICAgICBgPC9mLWltZz48L2Rpdj5gXHJcbiAgICAgICAgcmV0dXJuIGg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGdldE5vZGVDb25maWdJbmZvKCl7XHJcbiAgICAgICAgbGV0IG5vZGUgPSB7fTtcclxuXHRcdG5vZGUudGV4dCA9IHRoaXMudGV4dDtcclxuXHRcdG5vZGUuaWNvbiA9ICdnbHlwaGljb24gZ2x5cGhpY29uLWdsYXNzJztcclxuXHRcdG5vZGUudXVpZCA9IHRoaXMuZ2V0UHJvcCgnaWQnKTtcdFxyXG5cdFx0bm9kZS5pbnN0YW5jZSA9IHRoaXM7XHJcblx0XHRyZXR1cm4gbm9kZTtcclxuICAgIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBDYWxjdGV4dGZpZWxkO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9jb21wb25lbnQvQ2FsY3RleHRmaWVsZC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFBQTs7O0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBakJBO0FBa0JBO0FBQ0E7OztBQUFBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUlBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUEvREE7QUFDQTtBQWdFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///111\n");

/***/ }),
/* 112 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Includefield = function (_Element) {\n    _inherits(Includefield, _Element);\n\n    function Includefield() {\n        _classCallCheck(this, Includefield);\n\n        var _this = _possibleConstructorReturn(this, (Includefield.__proto__ || Object.getPrototypeOf(Includefield)).call(this));\n\n        _this.width = 170;\n        _this.height = 30;\n        _this.name = \"\"; //鍞竴鏍囪瘑\n        _this.text = \"Includefield\";\n        _this.cursor = \"default\";\n        _this.scope = \"includefield\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.belongId = \"\";\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n        _this.value = \"鍖呭惈鍏冪礌\"; //鍊糪n        _this.editmode = \"00\"; //鍊兼柟寮廫n        _this.isdefaultvalue = \"false\"; //鏄惁鏄粯璁ゅ€糪n        _this.refreshonchanged = \"false\"; //鍒锋柊\n        _this.calculateonrefresh = \"false\"; //鍐茶绠梊n        _this.valuescript = ''; //鑴氭湰鍊糪n        _this.refreshmode = 0; //鍐插埛鏂扮殑鏂瑰紡\n\n\n        _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n        _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n        _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n        _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n        _this.processdescription = \"\"; //鍊艰璁¤剼鏈殑鍊糪n        _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n\n        _this.smallwidth = 100;\n\n        _this.includetype = \"0\"; //鍖呭惈鍏冪礌绫诲瀷\n        _this.module = \"none\"; //妯″潡\n        _this.viewid = \"\"; //瑙嗗浘\n        _this.relate = \"true\"; //鏄惁涓虹埗瀛愬叧绯籠n        _this.fixation = \"false\"; //鍥哄畾楂樺害\n        _this.fixationheight = 0; //鍥哄畾楂樺害鐨勯珮搴n        return _this;\n    }\n\n    _createClass(Includefield, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n            // if(this.x==0&&this.y==0){\n            //     this.x=this.left;\n            //     this.y=this.top;\n            // }else{\n            //     this.left=this.x;\n            //     this.top=this.y;\n            // }\n            //console.log(panel);\n\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\"style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-img type=\"text\" classname=\"cn.myapps.runtime.dynaform.form.ejb.IncludeField\" nodeid=\"' + this.id + '\" class=\"inlineBlock\" minwidth=\"' + this.width + '\" style=\"border:1px solid #ccc;min-width:' + this.smallwidth + 'px;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\" name=\"' + this.name + '\" isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\"\\n            \\n            isdefaultvalue=\"' + this.isdefaultvalue + '\" refreshonchanged=\"' + this.refreshonchanged + '\" \\n            calculateonrefresh=\"' + this.calculateonrefresh + '\"\\n            refreshmode=\"' + this.refreshmode + '\" \\n            hiddenscript=\"' + this.hiddenscript + '\" hiddenvalue=\"' + this.hiddenvalue + '\" \\n            hiddenprintscript=\"' + this.hiddenprintscript + '\" \\n            printhiddenvalue=\"' + this.printhiddenvalue + '\" \\n            processdescription=\"' + this.processprevalue + '[' + this.processdescription + ']\"\\n            editmode=\"' + this.editmode + '\" valuescript=\"' + this.valuescript + '\"\\n            includetype=\"' + this.includetype + '\" module=\"' + this.module + '\"\\n            viewid=\"' + this.viewid + '\" relate=\"' + this.relate + '\"\\n            fixation=\"' + this.fixation + '\"\\n            fixationheight=\"' + this.fixationheight + 'px\"\\n            ';\n\n            h += 'refreshfields=\"';\n            // processdescription=\"${this.processdescription}\"\n            if (this.refreshfields.length > 0) {\n                for (var i = 0; i < this.refreshfields.length; i++) {\n                    h += this.refreshfields[i];\n                    if (i != this.refreshfields.length - 1) {\n                        h += \";\";\n                    }\n                }\n            }\n\n            h += '\"' + '>' + this.value + '</f-img></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n    }]);\n\n    return Includefield;\n}(_Element3.default);\n\nexports.default = Includefield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9JbmNsdWRlZmllbGQuanM/MjI2NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRWxlbWVudCBmcm9tICcuL0VsZW1lbnQnO1xyXG5pbXBvcnQge1NlcXVlbmNlfSBmcm9tICcuLi8uLi91dGlsaXR5JztcclxuY2xhc3MgSW5jbHVkZWZpZWxkIGV4dGVuZHMgRWxlbWVudHtcclxuICAgIGNvbnN0cnVjdG9yKCl7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLndpZHRoPTE3MDtcclxuICAgICAgICB0aGlzLmhlaWdodD0zMDtcclxuICAgICAgICB0aGlzLm5hbWU9XCJcIjsvL+WUr+S4gOagh+ivhlxyXG4gICAgICAgIHRoaXMudGV4dD1cIkluY2x1ZGVmaWVsZFwiO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yPVwiZGVmYXVsdFwiO1xyXG4gICAgICAgIHRoaXMuc2NvcGU9XCJpbmNsdWRlZmllbGRcIjtcclxuICAgICAgICB0aGlzLmlkID0gU2VxdWVuY2UuY3JlYXRlVXVpZCgpO1xyXG4gICAgICAgIHRoaXMuYmVsb25nSWQ9XCJcIjtcclxuICAgICAgICB0aGlzLnByZVg9MDtcclxuICAgICAgICB0aGlzLnByZVk9MDtcclxuICAgICAgICB0aGlzLm1vdmVYPTA7XHJcbiAgICAgICAgdGhpcy5tb3ZlWT0wO1xyXG4gICAgICAgIHRoaXMudmFsdWU9XCLljIXlkKvlhYPntKBcIjsvL+WAvFxyXG4gICAgICAgIHRoaXMuZWRpdG1vZGU9XCIwMFwiOy8v5YC85pa55byPXHJcbiAgICAgICAgdGhpcy5pc2RlZmF1bHR2YWx1ZT1cImZhbHNlXCIvL+aYr+WQpuaYr+m7mOiupOWAvFxyXG4gICAgICAgIHRoaXMucmVmcmVzaG9uY2hhbmdlZD1cImZhbHNlXCI7Ly/liLfmlrBcclxuICAgICAgICB0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaD1cImZhbHNlXCI7Ly/lhrLorqHnrpdcclxuICAgICAgICB0aGlzLnZhbHVlc2NyaXB0PScnOy8v6ISa5pys5YC8XHJcbiAgICAgICAgdGhpcy5yZWZyZXNobW9kZT0wOy8v5Yay5Yi35paw55qE5pa55byPXHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5oaWRkZW5zY3JpcHQ9XCJcIjsvL+makOiXj+adoeS7tuiEmuacrFxyXG4gICAgICAgIHRoaXMuaGlkZGVudmFsdWU9XCJcIjsvL+makOiXj+aXtuaYvuekuuWAvFxyXG4gICAgICAgIHRoaXMuaGlkZGVucHJpbnRzY3JpcHQ9XCJcIjsvL+aJk+WNsOaXtumakOiXj+adoeS7tuiEmuacrFxyXG4gICAgICAgIHRoaXMucHJpbnRoaWRkZW52YWx1ZT1cIlwiOy8v5omT5Y2w6ZqQ6JeP5pe25pi+56S65YC8XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzZGVzY3JpcHRpb249XCJcIjsvL+WAvOiuvuiuoeiEmuacrOeahOWAvFxyXG4gICAgICAgIHRoaXMucmVmcmVzaGZpZWxkcz1bXTsvL+WxgOmDqOWIt+aWsOeahOWtl+autee7hOWQiFxyXG5cclxuICAgICAgICB0aGlzLnNtYWxsd2lkdGg9MTAwO1xyXG5cclxuICAgICAgICB0aGlzLmluY2x1ZGV0eXBlPVwiMFwiOy8v5YyF5ZCr5YWD57Sg57G75Z6LXHJcbiAgICAgICAgdGhpcy5tb2R1bGU9XCJub25lXCI7Ly/mqKHlnZdcclxuICAgICAgICB0aGlzLnZpZXdpZD1cIlwiOy8v6KeG5Zu+XHJcbiAgICAgICAgdGhpcy5yZWxhdGU9XCJ0cnVlXCI7Ly/mmK/lkKbkuLrniLblrZDlhbPns7tcclxuICAgICAgICB0aGlzLmZpeGF0aW9uPVwiZmFsc2VcIjsvL+WbuuWumumrmOW6plxyXG4gICAgICAgIHRoaXMuZml4YXRpb25oZWlnaHQ9MDsvL+WbuuWumumrmOW6pueahOmrmOW6plxyXG4gICAgfVxyXG4gICAgdG9IdG1sKCl7fVxyXG4gICAgXHJcbiAgICBwYWludCgpe1xyXG4gICAgICAgIC8vIGlmKHRoaXMueD09MCYmdGhpcy55PT0wKXtcclxuICAgICAgICAvLyAgICAgdGhpcy54PXRoaXMubGVmdDtcclxuICAgICAgICAvLyAgICAgdGhpcy55PXRoaXMudG9wO1xyXG4gICAgICAgIC8vIH1lbHNle1xyXG4gICAgICAgIC8vICAgICB0aGlzLmxlZnQ9dGhpcy54O1xyXG4gICAgICAgIC8vICAgICB0aGlzLnRvcD10aGlzLnk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vY29uc29sZS5sb2cocGFuZWwpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBoPVwiXCI7XHJcbiAgICAgICAgaWYodGhpcy5pc2Jsb2NrPT1cInRydWVcIil7XHJcbiAgICAgICAgICAgIGg9YDxkaXYgY2xhc3M9XCJibG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBoPWA8ZGl2IGNsYXNzPVwiaW5saW5lQmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCJzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRoaXMuaXNzaG93bGFiZWw9PVwidHJ1ZVwiIHx8IHRoaXMuaXNzaG93bGFiZWw9PXRydWUpe1xyXG4gICAgICAgICAgICBoKz1gPGYtbGFiZWwgc3R5bGU9XCJsaW5lLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPiR7dGhpcy5sYWJlbHZhbHVlfTwvZi1sYWJlbD5gXHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICBoKz1gPGYtaW1nIHR5cGU9XCJ0ZXh0XCIgY2xhc3NuYW1lPVwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuSW5jbHVkZUZpZWxkXCIgbm9kZWlkPVwiJHt0aGlzLmlkfVwiIGNsYXNzPVwiaW5saW5lQmxvY2tcIiBtaW53aWR0aD1cIiR7dGhpcy53aWR0aH1cIiBzdHlsZT1cImJvcmRlcjoxcHggc29saWQgI2NjYzttaW4td2lkdGg6JHt0aGlzLnNtYWxsd2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O2BcclxuICAgICAgICAgICAgaWYodGhpcy56SW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgaCs9YHotaW5kZXg6YCt0aGlzLnpJbmRleCtgO2A7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaCs9YFwiIG5hbWU9XCIke3RoaXMubmFtZX1cIiBpc3Nob3dsYWJlbD1cIiR7dGhpcy5pc3Nob3dsYWJlbH1cIiBsYWJlbHZhbHVlPVwiJHt0aGlzLmxhYmVsdmFsdWV9XCJcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlzZGVmYXVsdHZhbHVlPVwiJHt0aGlzLmlzZGVmYXVsdHZhbHVlfVwiIHJlZnJlc2hvbmNoYW5nZWQ9XCIke3RoaXMucmVmcmVzaG9uY2hhbmdlZH1cIiBcclxuICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoPVwiJHt0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaH1cIlxyXG4gICAgICAgICAgICByZWZyZXNobW9kZT1cIiR7dGhpcy5yZWZyZXNobW9kZX1cIiBcclxuICAgICAgICAgICAgaGlkZGVuc2NyaXB0PVwiJHt0aGlzLmhpZGRlbnNjcmlwdH1cIiBoaWRkZW52YWx1ZT1cIiR7dGhpcy5oaWRkZW52YWx1ZX1cIiBcclxuICAgICAgICAgICAgaGlkZGVucHJpbnRzY3JpcHQ9XCIke3RoaXMuaGlkZGVucHJpbnRzY3JpcHR9XCIgXHJcbiAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU9XCIke3RoaXMucHJpbnRoaWRkZW52YWx1ZX1cIiBcclxuICAgICAgICAgICAgcHJvY2Vzc2Rlc2NyaXB0aW9uPVwiJHt0aGlzLnByb2Nlc3NwcmV2YWx1ZX1bJHt0aGlzLnByb2Nlc3NkZXNjcmlwdGlvbn1dXCJcclxuICAgICAgICAgICAgZWRpdG1vZGU9XCIke3RoaXMuZWRpdG1vZGV9XCIgdmFsdWVzY3JpcHQ9XCIke3RoaXMudmFsdWVzY3JpcHR9XCJcclxuICAgICAgICAgICAgaW5jbHVkZXR5cGU9XCIke3RoaXMuaW5jbHVkZXR5cGV9XCIgbW9kdWxlPVwiJHt0aGlzLm1vZHVsZX1cIlxyXG4gICAgICAgICAgICB2aWV3aWQ9XCIke3RoaXMudmlld2lkfVwiIHJlbGF0ZT1cIiR7dGhpcy5yZWxhdGV9XCJcclxuICAgICAgICAgICAgZml4YXRpb249XCIke3RoaXMuZml4YXRpb259XCJcclxuICAgICAgICAgICAgZml4YXRpb25oZWlnaHQ9XCIke3RoaXMuZml4YXRpb25oZWlnaHR9cHhcIlxyXG4gICAgICAgICAgICBgO1xyXG4gICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgaCs9YHJlZnJlc2hmaWVsZHM9XCJgO1xyXG4gICAgICAgICAgICAvLyBwcm9jZXNzZGVzY3JpcHRpb249XCIke3RoaXMucHJvY2Vzc2Rlc2NyaXB0aW9ufVwiXHJcbiAgICAgICAgICAgIGlmKHRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IGk9MDtpPHRoaXMucmVmcmVzaGZpZWxkcy5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgICAgICBoKz10aGlzLnJlZnJlc2hmaWVsZHNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoaSE9dGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaCs9XCI7XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBoKz1gXCJgK1xyXG5cclxuICAgICAgICAgICAgYD5gK1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlK1xyXG4gICAgICAgICAgICBgPC9mLWltZz48L2Rpdj5gXHJcbiAgICAgICAgcmV0dXJuIGg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGdldE5vZGVDb25maWdJbmZvKCl7XHJcbiAgICAgICAgbGV0IG5vZGUgPSB7fTtcclxuXHRcdG5vZGUudGV4dCA9IHRoaXMudGV4dDtcclxuXHRcdG5vZGUuaWNvbiA9ICdnbHlwaGljb24gZ2x5cGhpY29uLWdsYXNzJztcclxuXHRcdG5vZGUudXVpZCA9IHRoaXMuZ2V0UHJvcCgnaWQnKTtcdFxyXG5cdFx0bm9kZS5pbnN0YW5jZSA9IHRoaXM7XHJcblx0XHRyZXR1cm4gbm9kZTtcclxuICAgIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBJbmNsdWRlZmllbGQ7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9mb3JtL2NvbXBvbmVudC9JbmNsdWRlZmllbGQuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7Ozs7Ozs7O0FBQUE7OztBQUNBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFyQ0E7QUFzQ0E7QUFDQTs7O0FBQUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZ0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUE3R0E7QUFDQTtBQThHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///112\n");

/***/ }),
/* 113 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Surveyfield = function (_Element) {\n    _inherits(Surveyfield, _Element);\n\n    function Surveyfield() {\n        _classCallCheck(this, Surveyfield);\n\n        var _this = _possibleConstructorReturn(this, (Surveyfield.__proto__ || Object.getPrototypeOf(Surveyfield)).call(this));\n\n        _this.width = 170;\n        _this.height = 30;\n        _this.name = \"\"; //鍞竴鏍囪瘑\n        _this.text = \"Surveyfield\";\n        _this.cursor = \"default\";\n        _this.scope = \"surveyfield\";\n        _this.id = _utility.Sequence.createUuid();\n        _this.belongId = \"\";\n        _this.preX = 0;\n        _this.preY = 0;\n        _this.moveX = 0;\n        _this.moveY = 0;\n        _this.value = \"璋冩煡鎺т欢\"; //鍊糪n        _this.calculateonrefresh = \"false\"; //鍐茶绠梊n        _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n        _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n        _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n        _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n\n        _this.smallwidth = 100;\n\n        _this.mobile = \"false\"; //鎵嬫満鍙敤\n        _this.discript = \"\"; //鎻忚堪\n        _this.questionscript = \"\"; //闂嵎鑴氭湰\n        _this.readonlyscript = \"\"; //鍙鏉′欢\n        return _this;\n    }\n\n    _createClass(Surveyfield, [{\n        key: 'toHtml',\n        value: function toHtml() {}\n    }, {\n        key: 'paint',\n        value: function paint() {\n            // if(this.x==0&&this.y==0){\n            //     this.x=this.left;\n            //     this.y=this.top;\n            // }else{\n            //     this.left=this.x;\n            //     this.top=this.y;\n            // }\n            //console.log(panel);\n\n            var h = \"\";\n            if (this.isblock == \"true\") {\n                h = '<div class=\"block\" id=\"' + this.id + '\" draggable=\"true\" style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            } else {\n                h = '<div class=\"inlineBlock\" id=\"' + this.id + '\" draggable=\"true\"style=\"min-width:' + this.width + 'px;min-height:' + this.height + 'px;\">';\n            }\n            if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n                h += '<f-label style=\"line-height:' + this.height + 'px;\">' + this.labelvalue + '</f-label>';\n            }\n            h += '<f-img type=\"text\" classname=\"cn.myapps.runtime.dynaform.form.ejb.SurveyField\" nodeid=\"' + this.id + '\" class=\"inlineBlock\" minwidth=\"' + this.width + '\" style=\"border:1px solid #ccc;min-width:' + this.smallwidth + 'px;min-height:' + this.height + 'px;';\n            if (this.zIndex) {\n                h += 'z-index:' + this.zIndex + ';';\n            }\n            h += '\" name=\"' + this.name + '\" isshowlabel=\"' + this.isshowlabel + '\" labelvalue=\"' + this.labelvalue + '\"\\n            calculateonrefresh=\"' + this.calculateonrefresh + '\"\\n            hiddenscript=\"' + this.hiddenscript + '\" hiddenvalue=\"' + this.hiddenvalue + '\" \\n            hiddenprintscript=\"' + this.hiddenprintscript + '\" \\n            printhiddenvalue=\"' + this.printhiddenvalue + '\" \\n            mobile=\"' + this.mobile + '\" discript=\"' + this.discript + '\"\\n            questionscript=\"' + this.questionscript + '\" readonlyscript=\"' + this.readonlyscript + '\"\\n            ';\n            h += '\"' + '>' + this.value + '</f-img></div>';\n            return h;\n        }\n    }, {\n        key: 'getNodeConfigInfo',\n        value: function getNodeConfigInfo() {\n            var node = {};\n            node.text = this.text;\n            node.icon = 'glyphicon glyphicon-glass';\n            node.uuid = this.getProp('id');\n            node.instance = this;\n            return node;\n        }\n    }]);\n\n    return Surveyfield;\n}(_Element3.default);\n\nexports.default = Surveyfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9TdXJ2ZXlmaWVsZC5qcz8xMDRiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFbGVtZW50IGZyb20gJy4vRWxlbWVudCc7XHJcbmltcG9ydCB7U2VxdWVuY2V9IGZyb20gJy4uLy4uL3V0aWxpdHknO1xyXG5jbGFzcyBTdXJ2ZXlmaWVsZCBleHRlbmRzIEVsZW1lbnR7XHJcbiAgICBjb25zdHJ1Y3Rvcigpe1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy53aWR0aD0xNzA7XHJcbiAgICAgICAgdGhpcy5oZWlnaHQ9MzA7XHJcbiAgICAgICAgdGhpcy5uYW1lPVwiXCI7Ly/llK/kuIDmoIfor4ZcclxuICAgICAgICB0aGlzLnRleHQ9XCJTdXJ2ZXlmaWVsZFwiO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yPVwiZGVmYXVsdFwiO1xyXG4gICAgICAgIHRoaXMuc2NvcGU9XCJzdXJ2ZXlmaWVsZFwiO1xyXG4gICAgICAgIHRoaXMuaWQgPSBTZXF1ZW5jZS5jcmVhdGVVdWlkKCk7XHJcbiAgICAgICAgdGhpcy5iZWxvbmdJZD1cIlwiO1xyXG4gICAgICAgIHRoaXMucHJlWD0wO1xyXG4gICAgICAgIHRoaXMucHJlWT0wO1xyXG4gICAgICAgIHRoaXMubW92ZVg9MDtcclxuICAgICAgICB0aGlzLm1vdmVZPTA7XHJcbiAgICAgICAgdGhpcy52YWx1ZT1cIuiwg+afpeaOp+S7tlwiOy8v5YC8XHJcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVvbnJlZnJlc2g9XCJmYWxzZVwiOy8v5Yay6K6h566XXHJcbiAgICAgICAgdGhpcy5oaWRkZW5zY3JpcHQ9XCJcIjsvL+makOiXj+adoeS7tuiEmuacrFxyXG4gICAgICAgIHRoaXMuaGlkZGVudmFsdWU9XCJcIjsvL+makOiXj+aXtuaYvuekuuWAvFxyXG4gICAgICAgIHRoaXMuaGlkZGVucHJpbnRzY3JpcHQ9XCJcIjsvL+aJk+WNsOaXtumakOiXj+adoeS7tuiEmuacrFxyXG4gICAgICAgIHRoaXMucHJpbnRoaWRkZW52YWx1ZT1cIlwiOy8v5omT5Y2w6ZqQ6JeP5pe25pi+56S65YC8XHJcblxyXG4gICAgICAgIHRoaXMuc21hbGx3aWR0aD0xMDA7XHJcblxyXG4gICAgICAgIHRoaXMubW9iaWxlPVwiZmFsc2VcIjsvL+aJi+acuuWPr+eUqFxyXG4gICAgICAgIHRoaXMuZGlzY3JpcHQ9XCJcIjsvL+aPj+i/sFxyXG4gICAgICAgIHRoaXMucXVlc3Rpb25zY3JpcHQ9XCJcIi8v6Zeu5Y236ISa5pysXHJcbiAgICAgICAgdGhpcy5yZWFkb25seXNjcmlwdD1cIlwiLy/lj6ror7vmnaHku7ZcclxuICAgIH1cclxuICAgIHRvSHRtbCgpe31cclxuICAgIFxyXG4gICAgcGFpbnQoKXtcclxuICAgICAgICAvLyBpZih0aGlzLng9PTAmJnRoaXMueT09MCl7XHJcbiAgICAgICAgLy8gICAgIHRoaXMueD10aGlzLmxlZnQ7XHJcbiAgICAgICAgLy8gICAgIHRoaXMueT10aGlzLnRvcDtcclxuICAgICAgICAvLyB9ZWxzZXtcclxuICAgICAgICAvLyAgICAgdGhpcy5sZWZ0PXRoaXMueDtcclxuICAgICAgICAvLyAgICAgdGhpcy50b3A9dGhpcy55O1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvL2NvbnNvbGUubG9nKHBhbmVsKTtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgaD1cIlwiO1xyXG4gICAgICAgIGlmKHRoaXMuaXNibG9jaz09XCJ0cnVlXCIpe1xyXG4gICAgICAgICAgICBoPWA8ZGl2IGNsYXNzPVwiYmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgc3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgaD1gPGRpdiBjbGFzcz1cImlubGluZUJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwic3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmlzc2hvd2xhYmVsPT1cInRydWVcIiB8fCB0aGlzLmlzc2hvd2xhYmVsPT10cnVlKXtcclxuICAgICAgICAgICAgaCs9YDxmLWxhYmVsIHN0eWxlPVwibGluZS1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj4ke3RoaXMubGFiZWx2YWx1ZX08L2YtbGFiZWw+YFxyXG4gICAgICAgIH1cclxuICAgICAgICAgICAgaCs9YDxmLWltZyB0eXBlPVwidGV4dFwiIGNsYXNzbmFtZT1cImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLlN1cnZleUZpZWxkXCIgbm9kZWlkPVwiJHt0aGlzLmlkfVwiIGNsYXNzPVwiaW5saW5lQmxvY2tcIiBtaW53aWR0aD1cIiR7dGhpcy53aWR0aH1cIiBzdHlsZT1cImJvcmRlcjoxcHggc29saWQgI2NjYzttaW4td2lkdGg6JHt0aGlzLnNtYWxsd2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O2BcclxuICAgICAgICAgICAgaWYodGhpcy56SW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgaCs9YHotaW5kZXg6YCt0aGlzLnpJbmRleCtgO2A7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaCs9YFwiIG5hbWU9XCIke3RoaXMubmFtZX1cIiBpc3Nob3dsYWJlbD1cIiR7dGhpcy5pc3Nob3dsYWJlbH1cIiBsYWJlbHZhbHVlPVwiJHt0aGlzLmxhYmVsdmFsdWV9XCJcclxuICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoPVwiJHt0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaH1cIlxyXG4gICAgICAgICAgICBoaWRkZW5zY3JpcHQ9XCIke3RoaXMuaGlkZGVuc2NyaXB0fVwiIGhpZGRlbnZhbHVlPVwiJHt0aGlzLmhpZGRlbnZhbHVlfVwiIFxyXG4gICAgICAgICAgICBoaWRkZW5wcmludHNjcmlwdD1cIiR7dGhpcy5oaWRkZW5wcmludHNjcmlwdH1cIiBcclxuICAgICAgICAgICAgcHJpbnRoaWRkZW52YWx1ZT1cIiR7dGhpcy5wcmludGhpZGRlbnZhbHVlfVwiIFxyXG4gICAgICAgICAgICBtb2JpbGU9XCIke3RoaXMubW9iaWxlfVwiIGRpc2NyaXB0PVwiJHt0aGlzLmRpc2NyaXB0fVwiXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uc2NyaXB0PVwiJHt0aGlzLnF1ZXN0aW9uc2NyaXB0fVwiIHJlYWRvbmx5c2NyaXB0PVwiJHt0aGlzLnJlYWRvbmx5c2NyaXB0fVwiXHJcbiAgICAgICAgICAgIGA7XHJcbiAgICAgICAgICAgIGgrPWBcImArXHJcblxyXG4gICAgICAgICAgICBgPmArXHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUrXHJcbiAgICAgICAgICAgIGA8L2YtaW1nPjwvZGl2PmBcclxuICAgICAgICByZXR1cm4gaDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgZ2V0Tm9kZUNvbmZpZ0luZm8oKXtcclxuICAgICAgICBsZXQgbm9kZSA9IHt9O1xyXG5cdFx0bm9kZS50ZXh0ID0gdGhpcy50ZXh0O1xyXG5cdFx0bm9kZS5pY29uID0gJ2dseXBoaWNvbiBnbHlwaGljb24tZ2xhc3MnO1xyXG5cdFx0bm9kZS51dWlkID0gdGhpcy5nZXRQcm9wKCdpZCcpO1x0XHJcblx0XHRub2RlLmluc3RhbmNlID0gdGhpcztcclxuXHRcdHJldHVybiBub2RlO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IFN1cnZleWZpZWxkO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9jb21wb25lbnQvU3VydmV5ZmllbGQuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7Ozs7Ozs7O0FBQUE7OztBQUNBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFCQTtBQTJCQTtBQUNBOzs7QUFBQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUUE7QUFLQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBOUVBO0FBQ0E7QUErRUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///113\n");

/***/ }),
/* 114 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Attachment = function (_Element) {\n  _inherits(Attachment, _Element);\n\n  function Attachment() {\n    _classCallCheck(this, Attachment);\n\n    var _this = _possibleConstructorReturn(this, (Attachment.__proto__ || Object.getPrototypeOf(Attachment)).call(this));\n\n    _this.width = 170;\n    _this.height = 30;\n    _this.name = \"\"; //鍞竴鏍囪瘑\n    _this.text = \"attachment\";\n    _this.cursor = \"default\";\n    _this.scope = \"attachment\";\n    _this.id = _utility.Sequence.createUuid();\n    _this.belongId = \"\";\n    _this.preX = 0;\n    _this.preY = 0;\n    _this.moveX = 0;\n    _this.moveY = 0;\n    _this.value = \"鏂囦欢涓婁紶\"; //鍊糪n    _this.readonlyshowvalonly = \"true\"; //鍙鏃朵粎鍙樉绀哄€糪n    _this.refreshonchanged = \"false\"; //鍒锋柊\n    _this.calculateonrefresh = \"false\"; //鍐茶绠梊n    _this.valuescript = \"\"; //鑴氭湰鍊糪n    _this.mobile = \"false\"; //鎵嬫満鍙敤\n    _this.discript = \"\"; //鎻忚堪\n    _this.refreshmode = 0; //鍐插埛鏂扮殑鏂瑰紡\n\n    _this.validatelibs = \"core.dynaform.form.formfield.validate.checkPhone_system\"; //鏍¢獙鏂瑰紡\n    _this.validaterule = \"\"; //鏍¢獙鑴氭湰\n    _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n    _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n    _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n    _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n    _this.readonlyscript = \"\"; //鍙鏉′欢鑴氭湰\n    _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n\n    _this.smallwidth = 100;\n    _this.instantvalidate = \"false\"; //鍗虫椂鏍¢獙锛堟柊澧炲睘鎬э級\n    _this.limitsize = \"\"; //闄愬埗鍗曚釜涓婁紶鏂囦欢澶у皬\n    _this.filetype = \"00\"; //涓婁紶鏂囦欢绫诲瀷\n    _this.customizetype = \"\"; //鑷畾涔変笂浼犵被鍨嬬殑鍐呭\n    _this.limitnumber = 10; //鏈€澶т笂浼犳暟閲廫n    _this.filepattern = \"00\"; //瀛樻斁璺緞\n    _this.filecatalog = \"\"; //鑷畾涔夊瓨鏀捐矾寰刓n    _this.previewedit = \"true\"; //office 鏂囨。棰勮鏃跺彲缂栬緫\n    _this.openwatermark = \"false\"; //鏄惁娣诲姞姘村嵃\n    _this.supportsorting = \"false\"; //鏂囦欢鎺掑簭鍔熻兘浠呮敮鎸丠5鐨偆\n    _this.watermarksupportmode = \"\"; //娣诲姞姘村嵃妯″紡\n    _this.watermarkscript = \"\"; //娣诲姞姘村嵃鑴氭湰\n    return _this;\n  }\n\n  _createClass(Attachment, [{\n    key: \"toHtml\",\n    value: function toHtml() {}\n  }, {\n    key: \"paint\",\n    value: function paint() {\n      // if(this.x==0&&this.y==0){\n      //     this.x=this.left;\n      //     this.y=this.top;\n      // }else{\n      //     this.left=this.x;\n      //     this.top=this.y;\n      // }\n      //console.log(panel);\n\n      var h = \"\";\n      if (this.isblock == \"true\") {\n        h = \"<div class=\\\"block\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\" style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      } else {\n        h = \"<div class=\\\"inlineBlock\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\"style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      }\n      if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n        h += \"<f-label style=\\\"line-height:\" + this.height + \"px;\\\">\" + this.labelvalue + \"</f-label>\";\n      }\n      h += \"<f-img type=\\\"text\\\" nodeid=\\\"\" + this.id + \"\\\" class=\\\"inlineBlock\\\" minwidth=\\\"\" + this.width + \"\\\" style=\\\"border:1px solid #ccc;min-width:\" + this.smallwidth + \"px;min-height:\" + this.height + \"px;\";\n      if (this.zIndex) {\n        h += \"z-index:\" + this.zIndex + \";\";\n      }\n      h += \"\\\" name=\\\"\" + this.name + \"\\\" classname=\\\"cn.myapps.runtime.dynaform.form.ejb.AttachmentUploadField\\\" isshowlabel=\\\"\" + this.isshowlabel + \"\\\" labelvalue=\\\"\" + this.labelvalue + \"\\\"  \\n            \\n            instantvalidate=\\\"\" + this.instantvalidate + \"\\\"\\n            readonlyshowvalonly=\\\"\" + this.readonlyshowvalonly + \"\\\" \\n            refreshonchanged=\\\"\" + this.refreshonchanged + \"\\\" \\n            calculateonrefresh=\\\"\" + this.calculateonrefresh + \"\\\" mobile=\\\"\" + this.mobile + \"\\\" discript=\\\"\" + this.discript + \"\\\"\\n            refreshmode=\\\"\" + this.refreshmode + \"\\\" validatelibs=\\\"\" + this.validatelibs + \"\\\" \\n            validaterule=\\\"\" + this.validaterule + \"\\\"\\n            hiddenscript=\\\"\" + this.hiddenscript + \"\\\" hiddenvalue=\\\"\" + this.hiddenvalue + \"\\\" \\n            hiddenprintscript=\\\"\" + this.hiddenprintscript + \"\\\" \\n            printhiddenvalue=\\\"\" + this.printhiddenvalue + \"\\\" readonlyscript=\\\"\" + this.readonlyscript + \"\\\"\\n            valuescript=\\\"\" + this.valuescript + \"\\\"\\n            limitsize=\\\"\" + this.limitsize + \"\\\"\\n            filetype=\\\"\" + this.filetype + \"\\\"\\n            limitnumber=\\\"\" + this.limitnumber + \"\\\"\\n            customizetype=\\\"\" + this.customizetype + \"\\\"\\n            filepattern=\\\"\" + this.filepattern + \"\\\"\\n            filecatalog=\\\"\" + this.filecatalog + \"\\\"\\n            previewedit=\\\"\" + this.previewedit + \"\\\"\\n            openwatermark=\\\"\" + this.openwatermark + \"\\\"\\n            supportsorting=\\\"\" + this.supportsorting + \"\\\"\\n            watermarksupportmode=\\\"\" + this.watermarksupportmode + \"\\\"\\n            watermarkscript=\\\"\" + this.watermarkscript + \"\\\"\\n            \";\n\n      h += \"refreshfields=\\\"\";\n\n      // processdescription=\"${this.processdescription}\"\n      if (this.refreshfields.length > 0) {\n        for (var i = 0; i < this.refreshfields.length; i++) {\n          h += this.refreshfields[i];\n          if (i != this.refreshfields.length - 1) {\n            h += \";\";\n          }\n        }\n      }\n\n      h += \"\\\"\" + \">\" + this.value + \"</f-img></div>\";\n      return h;\n    }\n  }, {\n    key: \"getNodeConfigInfo\",\n    value: function getNodeConfigInfo() {\n      var node = {};\n      node.text = this.text;\n      node.icon = \"glyphicon glyphicon-glass\";\n      node.uuid = this.getProp(\"id\");\n      node.instance = this;\n      return node;\n    }\n  }]);\n\n  return Attachment;\n}(_Element3.default);\n\nexports.default = Attachment;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9BdHRhY2htZW50LmpzPzMyNGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVsZW1lbnQgZnJvbSBcIi4vRWxlbWVudFwiO1xyXG5pbXBvcnQgeyBTZXF1ZW5jZSB9IGZyb20gXCIuLi8uLi91dGlsaXR5XCI7XHJcbmNsYXNzIEF0dGFjaG1lbnQgZXh0ZW5kcyBFbGVtZW50IHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLndpZHRoID0gMTcwO1xyXG4gICAgdGhpcy5oZWlnaHQgPSAzMDtcclxuICAgIHRoaXMubmFtZSA9IFwiXCI7IC8v5ZSv5LiA5qCH6K+GXHJcbiAgICB0aGlzLnRleHQgPSBcImF0dGFjaG1lbnRcIjtcclxuICAgIHRoaXMuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLnNjb3BlID0gXCJhdHRhY2htZW50XCI7XHJcbiAgICB0aGlzLmlkID0gU2VxdWVuY2UuY3JlYXRlVXVpZCgpO1xyXG4gICAgdGhpcy5iZWxvbmdJZCA9IFwiXCI7XHJcbiAgICB0aGlzLnByZVggPSAwO1xyXG4gICAgdGhpcy5wcmVZID0gMDtcclxuICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgdGhpcy5tb3ZlWSA9IDA7XHJcbiAgICB0aGlzLnZhbHVlID0gXCLmlofku7bkuIrkvKBcIjsgLy/lgLxcclxuICAgIHRoaXMucmVhZG9ubHlzaG93dmFsb25seSA9IFwidHJ1ZVwiOyAvL+WPquivu+aXtuS7heWPquaYvuekuuWAvFxyXG4gICAgdGhpcy5yZWZyZXNob25jaGFuZ2VkID0gXCJmYWxzZVwiOyAvL+WIt+aWsFxyXG4gICAgdGhpcy5jYWxjdWxhdGVvbnJlZnJlc2ggPSBcImZhbHNlXCI7IC8v5Yay6K6h566XXHJcbiAgICB0aGlzLnZhbHVlc2NyaXB0ID0gXCJcIjsgLy/ohJrmnKzlgLxcclxuICAgIHRoaXMubW9iaWxlID0gXCJmYWxzZVwiOyAvL+aJi+acuuWPr+eUqFxyXG4gICAgdGhpcy5kaXNjcmlwdCA9IFwiXCI7IC8v5o+P6L+wXHJcbiAgICB0aGlzLnJlZnJlc2htb2RlID0gMDsgLy/lhrLliLfmlrDnmoTmlrnlvI9cclxuXHJcbiAgICB0aGlzLnZhbGlkYXRlbGlicyA9XHJcbiAgICAgIFwiY29yZS5keW5hZm9ybS5mb3JtLmZvcm1maWVsZC52YWxpZGF0ZS5jaGVja1Bob25lX3N5c3RlbVwiOyAvL+agoemqjOaWueW8j1xyXG4gICAgdGhpcy52YWxpZGF0ZXJ1bGUgPSBcIlwiOyAvL+agoemqjOiEmuacrFxyXG4gICAgdGhpcy5oaWRkZW5zY3JpcHQgPSBcIlwiOyAvL+makOiXj+adoeS7tuiEmuacrFxyXG4gICAgdGhpcy5oaWRkZW52YWx1ZSA9IFwiXCI7IC8v6ZqQ6JeP5pe25pi+56S65YC8XHJcbiAgICB0aGlzLmhpZGRlbnByaW50c2NyaXB0ID0gXCJcIjsgLy/miZPljbDml7bpmpDol4/mnaHku7bohJrmnKxcclxuICAgIHRoaXMucHJpbnRoaWRkZW52YWx1ZSA9IFwiXCI7IC8v5omT5Y2w6ZqQ6JeP5pe25pi+56S65YC8XHJcbiAgICB0aGlzLnJlYWRvbmx5c2NyaXB0ID0gXCJcIjsgLy/lj6ror7vmnaHku7bohJrmnKxcclxuICAgIHRoaXMucmVmcmVzaGZpZWxkcyA9IFtdOyAvL+WxgOmDqOWIt+aWsOeahOWtl+autee7hOWQiFxyXG5cclxuICAgIHRoaXMuc21hbGx3aWR0aCA9IDEwMDtcclxuICAgIHRoaXMuaW5zdGFudHZhbGlkYXRlID0gXCJmYWxzZVwiOyAvL+WNs+aXtuagoemqjO+8iOaWsOWinuWxnuaAp++8iVxyXG4gICAgdGhpcy5saW1pdHNpemUgPSBcIlwiOyAvL+mZkOWItuWNleS4quS4iuS8oOaWh+S7tuWkp+Wwj1xyXG4gICAgdGhpcy5maWxldHlwZT1cIjAwXCI7Ly/kuIrkvKDmlofku7bnsbvlnotcclxuICAgIHRoaXMuY3VzdG9taXpldHlwZT1cIlwiOy8v6Ieq5a6a5LmJ5LiK5Lyg57G75Z6L55qE5YaF5a65XHJcbiAgICB0aGlzLmxpbWl0bnVtYmVyPTEwOy8v5pyA5aSn5LiK5Lyg5pWw6YePXHJcbiAgICB0aGlzLmZpbGVwYXR0ZXJuPVwiMDBcIjsvL+WtmOaUvui3r+W+hFxyXG4gICAgdGhpcy5maWxlY2F0YWxvZz1cIlwiOy8v6Ieq5a6a5LmJ5a2Y5pS+6Lev5b6EXHJcbiAgICB0aGlzLnByZXZpZXdlZGl0PVwidHJ1ZVwiOy8vb2ZmaWNlIOaWh+aho+mihOiniOaXtuWPr+e8lui+kVxyXG4gICAgdGhpcy5vcGVud2F0ZXJtYXJrPVwiZmFsc2VcIjsvL+aYr+WQpua3u+WKoOawtOWNsFxyXG4gICAgdGhpcy5zdXBwb3J0c29ydGluZz1cImZhbHNlXCI7Ly/mlofku7bmjpLluo/lip/og73ku4XmlK/mjIFINeearuiCpFxyXG4gICAgdGhpcy53YXRlcm1hcmtzdXBwb3J0bW9kZT1cIlwiOy8v5re75Yqg5rC05Y2w5qih5byPXHJcbiAgICB0aGlzLndhdGVybWFya3NjcmlwdD1cIlwiLy/mt7vliqDmsLTljbDohJrmnKxcclxuICB9XHJcbiAgdG9IdG1sKCkge31cclxuXHJcbiAgcGFpbnQoKSB7XHJcbiAgICAvLyBpZih0aGlzLng9PTAmJnRoaXMueT09MCl7XHJcbiAgICAvLyAgICAgdGhpcy54PXRoaXMubGVmdDtcclxuICAgIC8vICAgICB0aGlzLnk9dGhpcy50b3A7XHJcbiAgICAvLyB9ZWxzZXtcclxuICAgIC8vICAgICB0aGlzLmxlZnQ9dGhpcy54O1xyXG4gICAgLy8gICAgIHRoaXMudG9wPXRoaXMueTtcclxuICAgIC8vIH1cclxuICAgIC8vY29uc29sZS5sb2cocGFuZWwpO1xyXG5cclxuICAgIGxldCBoID0gXCJcIjtcclxuICAgIGlmICh0aGlzLmlzYmxvY2sgPT0gXCJ0cnVlXCIpIHtcclxuICAgICAgaCA9IGA8ZGl2IGNsYXNzPVwiYmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgc3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaCA9IGA8ZGl2IGNsYXNzPVwiaW5saW5lQmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCJzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc3Nob3dsYWJlbCA9PSBcInRydWVcIiB8fCB0aGlzLmlzc2hvd2xhYmVsID09IHRydWUpIHtcclxuICAgICAgaCArPSBgPGYtbGFiZWwgc3R5bGU9XCJsaW5lLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPiR7dGhpcy5sYWJlbHZhbHVlfTwvZi1sYWJlbD5gO1xyXG4gICAgfVxyXG4gICAgaCArPSBgPGYtaW1nIHR5cGU9XCJ0ZXh0XCIgbm9kZWlkPVwiJHt0aGlzLmlkfVwiIGNsYXNzPVwiaW5saW5lQmxvY2tcIiBtaW53aWR0aD1cIiR7dGhpcy53aWR0aH1cIiBzdHlsZT1cImJvcmRlcjoxcHggc29saWQgI2NjYzttaW4td2lkdGg6JHt0aGlzLnNtYWxsd2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O2A7XHJcbiAgICBpZiAodGhpcy56SW5kZXgpIHtcclxuICAgICAgaCArPSBgei1pbmRleDpgICsgdGhpcy56SW5kZXggKyBgO2A7XHJcbiAgICB9XHJcbiAgICBoICs9IGBcIiBuYW1lPVwiJHt0aGlzLm5hbWV9XCIgY2xhc3NuYW1lPVwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuQXR0YWNobWVudFVwbG9hZEZpZWxkXCIgaXNzaG93bGFiZWw9XCIke3RoaXMuaXNzaG93bGFiZWx9XCIgbGFiZWx2YWx1ZT1cIiR7dGhpcy5sYWJlbHZhbHVlfVwiICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGluc3RhbnR2YWxpZGF0ZT1cIiR7dGhpcy5pbnN0YW50dmFsaWRhdGV9XCJcclxuICAgICAgICAgICAgcmVhZG9ubHlzaG93dmFsb25seT1cIiR7dGhpcy5yZWFkb25seXNob3d2YWxvbmx5fVwiIFxyXG4gICAgICAgICAgICByZWZyZXNob25jaGFuZ2VkPVwiJHt0aGlzLnJlZnJlc2hvbmNoYW5nZWR9XCIgXHJcbiAgICAgICAgICAgIGNhbGN1bGF0ZW9ucmVmcmVzaD1cIiR7dGhpcy5jYWxjdWxhdGVvbnJlZnJlc2h9XCIgbW9iaWxlPVwiJHt0aGlzLm1vYmlsZX1cIiBkaXNjcmlwdD1cIiR7dGhpcy5kaXNjcmlwdH1cIlxyXG4gICAgICAgICAgICByZWZyZXNobW9kZT1cIiR7dGhpcy5yZWZyZXNobW9kZX1cIiB2YWxpZGF0ZWxpYnM9XCIke3RoaXMudmFsaWRhdGVsaWJzfVwiIFxyXG4gICAgICAgICAgICB2YWxpZGF0ZXJ1bGU9XCIke3RoaXMudmFsaWRhdGVydWxlfVwiXHJcbiAgICAgICAgICAgIGhpZGRlbnNjcmlwdD1cIiR7dGhpcy5oaWRkZW5zY3JpcHR9XCIgaGlkZGVudmFsdWU9XCIke3RoaXMuaGlkZGVudmFsdWV9XCIgXHJcbiAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0PVwiJHt0aGlzLmhpZGRlbnByaW50c2NyaXB0fVwiIFxyXG4gICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlPVwiJHt0aGlzLnByaW50aGlkZGVudmFsdWV9XCIgcmVhZG9ubHlzY3JpcHQ9XCIke3RoaXMucmVhZG9ubHlzY3JpcHR9XCJcclxuICAgICAgICAgICAgdmFsdWVzY3JpcHQ9XCIke3RoaXMudmFsdWVzY3JpcHR9XCJcclxuICAgICAgICAgICAgbGltaXRzaXplPVwiJHt0aGlzLmxpbWl0c2l6ZX1cIlxyXG4gICAgICAgICAgICBmaWxldHlwZT1cIiR7dGhpcy5maWxldHlwZX1cIlxyXG4gICAgICAgICAgICBsaW1pdG51bWJlcj1cIiR7dGhpcy5saW1pdG51bWJlcn1cIlxyXG4gICAgICAgICAgICBjdXN0b21pemV0eXBlPVwiJHt0aGlzLmN1c3RvbWl6ZXR5cGV9XCJcclxuICAgICAgICAgICAgZmlsZXBhdHRlcm49XCIke3RoaXMuZmlsZXBhdHRlcm59XCJcclxuICAgICAgICAgICAgZmlsZWNhdGFsb2c9XCIke3RoaXMuZmlsZWNhdGFsb2d9XCJcclxuICAgICAgICAgICAgcHJldmlld2VkaXQ9XCIke3RoaXMucHJldmlld2VkaXR9XCJcclxuICAgICAgICAgICAgb3BlbndhdGVybWFyaz1cIiR7dGhpcy5vcGVud2F0ZXJtYXJrfVwiXHJcbiAgICAgICAgICAgIHN1cHBvcnRzb3J0aW5nPVwiJHt0aGlzLnN1cHBvcnRzb3J0aW5nfVwiXHJcbiAgICAgICAgICAgIHdhdGVybWFya3N1cHBvcnRtb2RlPVwiJHt0aGlzLndhdGVybWFya3N1cHBvcnRtb2RlfVwiXHJcbiAgICAgICAgICAgIHdhdGVybWFya3NjcmlwdD1cIiR7dGhpcy53YXRlcm1hcmtzY3JpcHR9XCJcclxuICAgICAgICAgICAgYDtcclxuXHJcbiAgICBoICs9IGByZWZyZXNoZmllbGRzPVwiYDtcclxuXHJcbiAgICAvLyBwcm9jZXNzZGVzY3JpcHRpb249XCIke3RoaXMucHJvY2Vzc2Rlc2NyaXB0aW9ufVwiXHJcbiAgICBpZiAodGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBoICs9IHRoaXMucmVmcmVzaGZpZWxkc1tpXTtcclxuICAgICAgICBpZiAoaSAhPSB0aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgaCArPSBcIjtcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBoICs9IGBcImAgKyBgPmAgKyB0aGlzLnZhbHVlICsgYDwvZi1pbWc+PC9kaXY+YDtcclxuICAgIHJldHVybiBoO1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm9kZUNvbmZpZ0luZm8oKSB7XHJcbiAgICBsZXQgbm9kZSA9IHt9O1xyXG4gICAgbm9kZS50ZXh0ID0gdGhpcy50ZXh0O1xyXG4gICAgbm9kZS5pY29uID0gXCJnbHlwaGljb24gZ2x5cGhpY29uLWdsYXNzXCI7XHJcbiAgICBub2RlLnV1aWQgPSB0aGlzLmdldFByb3AoXCJpZFwiKTtcclxuICAgIG5vZGUuaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgcmV0dXJuIG5vZGU7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEF0dGFjaG1lbnQ7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9jb21wb25lbnQvQXR0YWNobWVudC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFBQTs7O0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBN0NBO0FBOENBO0FBQ0E7OztBQUFBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUF6SEE7QUFDQTtBQTBIQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///114\n");

/***/ }),
/* 115 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Imageuploadfield = function (_Element) {\n  _inherits(Imageuploadfield, _Element);\n\n  function Imageuploadfield() {\n    _classCallCheck(this, Imageuploadfield);\n\n    var _this = _possibleConstructorReturn(this, (Imageuploadfield.__proto__ || Object.getPrototypeOf(Imageuploadfield)).call(this));\n\n    _this.width = 170;\n    _this.height = 30;\n    _this.name = \"\"; //鍞竴鏍囪瘑\n    _this.text = \"imageuploadfield\";\n    _this.cursor = \"default\";\n    _this.scope = \"imageuploadfield\";\n    _this.id = _utility.Sequence.createUuid();\n    _this.belongId = \"\";\n    _this.preX = 0;\n    _this.preY = 0;\n    _this.moveX = 0;\n    _this.moveY = 0;\n    _this.value = \"鍥剧墖涓婁紶\"; //鍊糪n    _this.readonlyshowvalonly = \"true\"; //鍙鏃朵粎鍙樉绀哄€糪n    _this.refreshonchanged = \"false\"; //鍒锋柊\n    _this.calculateonrefresh = \"false\"; //鍐茶绠梊n    _this.valuescript = \"\"; //鑴氭湰鍊糪n    _this.mobile = \"false\"; //鎵嬫満鍙敤\n    _this.discript = \"\"; //鎻忚堪\n    _this.refreshmode = 0; //鍐插埛鏂扮殑鏂瑰紡\n\n    _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n    _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n    _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n    _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n    _this.readonlyscript = \"\"; //鍙鏉′欢鑴氭湰\n    _this.refreshfields = []; //灞€閮ㄥ埛鏂扮殑瀛楁缁勫悎\n\n    _this.smallwidth = 100;\n    _this.limitsize = \"\"; //闄愬埗鍗曚釜涓婁紶鏂囦欢澶у皬\n    _this.limitnumber = 10; //鏈€澶т笂浼犳暟閲廫n    _this.filepattern = \"00\"; //瀛樻斁璺緞\n    _this.filecatalog = \"\"; //鑷畾涔夊瓨鏀捐矾寰刓n    _this.imgh = 100; //瀛樻斁璺緞\n    _this.imgw = 100; //鑷畾涔夊瓨鏀捐矾寰刓n    return _this;\n  }\n\n  _createClass(Imageuploadfield, [{\n    key: \"toHtml\",\n    value: function toHtml() {}\n  }, {\n    key: \"paint\",\n    value: function paint() {\n      // if(this.x==0&&this.y==0){\n      //     this.x=this.left;\n      //     this.y=this.top;\n      // }else{\n      //     this.left=this.x;\n      //     this.top=this.y;\n      // }\n      //console.log(panel);\n\n      var h = \"\";\n      if (this.isblock == \"true\") {\n        h = \"<div class=\\\"block\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\" style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      } else {\n        h = \"<div class=\\\"inlineBlock\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\"style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      }\n      if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n        h += \"<f-label style=\\\"line-height:\" + this.height + \"px;\\\">\" + this.labelvalue + \"</f-label>\";\n      }\n      h += \"<f-img type=\\\"text\\\" nodeid=\\\"\" + this.id + \"\\\" class=\\\"inlineBlock\\\" minwidth=\\\"\" + this.width + \"\\\" style=\\\"border:1px solid #ccc;min-width:\" + this.smallwidth + \"px;min-height:\" + this.height + \"px;\";\n      if (this.zIndex) {\n        h += \"z-index:\" + this.zIndex + \";\";\n      }\n      h += \"\\\" name=\\\"\" + this.name + \"\\\" classname=\\\"cn.myapps.runtime.dynaform.form.ejb.ImageUploadField\\\" isshowlabel=\\\"\" + this.isshowlabel + \"\\\" labelvalue=\\\"\" + this.labelvalue + \"\\\"  \\n            \\n            readonlyshowvalonly=\\\"\" + this.readonlyshowvalonly + \"\\\" \\n            refreshonchanged=\\\"\" + this.refreshonchanged + \"\\\" \\n            calculateonrefresh=\\\"\" + this.calculateonrefresh + \"\\\" mobile=\\\"\" + this.mobile + \"\\\" discript=\\\"\" + this.discript + \"\\\"\\n            refreshmode=\\\"\" + this.refreshmode + \"\\\"\\n            hiddenscript=\\\"\" + this.hiddenscript + \"\\\" hiddenvalue=\\\"\" + this.hiddenvalue + \"\\\" \\n            hiddenprintscript=\\\"\" + this.hiddenprintscript + \"\\\" \\n            printhiddenvalue=\\\"\" + this.printhiddenvalue + \"\\\" readonlyscript=\\\"\" + this.readonlyscript + \"\\\"\\n            valuescript=\\\"\" + this.valuescript + \"\\\"\\n            limitsize=\\\"\" + this.limitsize + \"\\\"\\n            limitnumber=\\\"\" + this.limitnumber + \"\\\"\\n            filepattern=\\\"\" + this.filepattern + \"\\\"\\n            filecatalog=\\\"\" + this.filecatalog + \"\\\"\\n            imgh=\\\"\" + this.imgh + \"\\\"\\n            imgw=\\\"\" + this.imgw + \"\\\"\\n            \";\n\n      h += \"refreshfields=\\\"\";\n\n      // processdescription=\"${this.processdescription}\"\n      if (this.refreshfields.length > 0) {\n        for (var i = 0; i < this.refreshfields.length; i++) {\n          h += this.refreshfields[i];\n          if (i != this.refreshfields.length - 1) {\n            h += \";\";\n          }\n        }\n      }\n\n      h += \"\\\"\" + \">\" + this.value + \"</f-img></div>\";\n      return h;\n    }\n  }, {\n    key: \"getNodeConfigInfo\",\n    value: function getNodeConfigInfo() {\n      var node = {};\n      node.text = this.text;\n      node.icon = \"glyphicon glyphicon-glass\";\n      node.uuid = this.getProp(\"id\");\n      node.instance = this;\n      return node;\n    }\n  }]);\n\n  return Imageuploadfield;\n}(_Element3.default);\n\nexports.default = Imageuploadfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9JbWFnZXVwbG9hZGZpZWxkLmpzP2RmNTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVsZW1lbnQgZnJvbSBcIi4vRWxlbWVudFwiO1xyXG5pbXBvcnQgeyBTZXF1ZW5jZSB9IGZyb20gXCIuLi8uLi91dGlsaXR5XCI7XHJcbmNsYXNzIEltYWdldXBsb2FkZmllbGQgZXh0ZW5kcyBFbGVtZW50IHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLndpZHRoID0gMTcwO1xyXG4gICAgdGhpcy5oZWlnaHQgPSAzMDtcclxuICAgIHRoaXMubmFtZSA9IFwiXCI7IC8v5ZSv5LiA5qCH6K+GXHJcbiAgICB0aGlzLnRleHQgPSBcImltYWdldXBsb2FkZmllbGRcIjtcclxuICAgIHRoaXMuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLnNjb3BlID0gXCJpbWFnZXVwbG9hZGZpZWxkXCI7XHJcbiAgICB0aGlzLmlkID0gU2VxdWVuY2UuY3JlYXRlVXVpZCgpO1xyXG4gICAgdGhpcy5iZWxvbmdJZCA9IFwiXCI7XHJcbiAgICB0aGlzLnByZVggPSAwO1xyXG4gICAgdGhpcy5wcmVZID0gMDtcclxuICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgdGhpcy5tb3ZlWSA9IDA7XHJcbiAgICB0aGlzLnZhbHVlID0gXCLlm77niYfkuIrkvKBcIjsgLy/lgLxcclxuICAgIHRoaXMucmVhZG9ubHlzaG93dmFsb25seSA9IFwidHJ1ZVwiOyAvL+WPquivu+aXtuS7heWPquaYvuekuuWAvFxyXG4gICAgdGhpcy5yZWZyZXNob25jaGFuZ2VkID0gXCJmYWxzZVwiOyAvL+WIt+aWsFxyXG4gICAgdGhpcy5jYWxjdWxhdGVvbnJlZnJlc2ggPSBcImZhbHNlXCI7IC8v5Yay6K6h566XXHJcbiAgICB0aGlzLnZhbHVlc2NyaXB0ID0gXCJcIjsgLy/ohJrmnKzlgLxcclxuICAgIHRoaXMubW9iaWxlID0gXCJmYWxzZVwiOyAvL+aJi+acuuWPr+eUqFxyXG4gICAgdGhpcy5kaXNjcmlwdCA9IFwiXCI7IC8v5o+P6L+wXHJcbiAgICB0aGlzLnJlZnJlc2htb2RlID0gMDsgLy/lhrLliLfmlrDnmoTmlrnlvI9cclxuXHJcbiAgICB0aGlzLmhpZGRlbnNjcmlwdCA9IFwiXCI7IC8v6ZqQ6JeP5p2h5Lu26ISa5pysXHJcbiAgICB0aGlzLmhpZGRlbnZhbHVlID0gXCJcIjsgLy/pmpDol4/ml7bmmL7npLrlgLxcclxuICAgIHRoaXMuaGlkZGVucHJpbnRzY3JpcHQgPSBcIlwiOyAvL+aJk+WNsOaXtumakOiXj+adoeS7tuiEmuacrFxyXG4gICAgdGhpcy5wcmludGhpZGRlbnZhbHVlID0gXCJcIjsgLy/miZPljbDpmpDol4/ml7bmmL7npLrlgLxcclxuICAgIHRoaXMucmVhZG9ubHlzY3JpcHQgPSBcIlwiOyAvL+WPquivu+adoeS7tuiEmuacrFxyXG4gICAgdGhpcy5yZWZyZXNoZmllbGRzID0gW107IC8v5bGA6YOo5Yi35paw55qE5a2X5q6157uE5ZCIXHJcblxyXG4gICAgdGhpcy5zbWFsbHdpZHRoID0gMTAwO1xyXG4gICAgdGhpcy5saW1pdHNpemUgPSBcIlwiOyAvL+mZkOWItuWNleS4quS4iuS8oOaWh+S7tuWkp+Wwj1xyXG4gICAgdGhpcy5saW1pdG51bWJlcj0xMDsvL+acgOWkp+S4iuS8oOaVsOmHj1xyXG4gICAgdGhpcy5maWxlcGF0dGVybj1cIjAwXCI7Ly/lrZjmlL7ot6/lvoRcclxuICAgIHRoaXMuZmlsZWNhdGFsb2c9XCJcIjsvL+iHquWumuS5ieWtmOaUvui3r+W+hFxyXG4gICAgdGhpcy5pbWdoPTEwMDsvL+WtmOaUvui3r+W+hFxyXG4gICAgdGhpcy5pbWd3PTEwMDsvL+iHquWumuS5ieWtmOaUvui3r+W+hFxyXG4gIH1cclxuICB0b0h0bWwoKSB7fVxyXG5cclxuICBwYWludCgpIHtcclxuICAgIC8vIGlmKHRoaXMueD09MCYmdGhpcy55PT0wKXtcclxuICAgIC8vICAgICB0aGlzLng9dGhpcy5sZWZ0O1xyXG4gICAgLy8gICAgIHRoaXMueT10aGlzLnRvcDtcclxuICAgIC8vIH1lbHNle1xyXG4gICAgLy8gICAgIHRoaXMubGVmdD10aGlzLng7XHJcbiAgICAvLyAgICAgdGhpcy50b3A9dGhpcy55O1xyXG4gICAgLy8gfVxyXG4gICAgLy9jb25zb2xlLmxvZyhwYW5lbCk7XHJcblxyXG4gICAgbGV0IGggPSBcIlwiO1xyXG4gICAgaWYgKHRoaXMuaXNibG9jayA9PSBcInRydWVcIikge1xyXG4gICAgICBoID0gYDxkaXYgY2xhc3M9XCJibG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBoID0gYDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcInN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzc2hvd2xhYmVsID09IFwidHJ1ZVwiIHx8IHRoaXMuaXNzaG93bGFiZWwgPT0gdHJ1ZSkge1xyXG4gICAgICBoICs9IGA8Zi1sYWJlbCBzdHlsZT1cImxpbmUtaGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+JHt0aGlzLmxhYmVsdmFsdWV9PC9mLWxhYmVsPmA7XHJcbiAgICB9XHJcbiAgICBoICs9IGA8Zi1pbWcgdHlwZT1cInRleHRcIiBub2RlaWQ9XCIke3RoaXMuaWR9XCIgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIG1pbndpZHRoPVwiJHt0aGlzLndpZHRofVwiIHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjY2NjO21pbi13aWR0aDoke3RoaXMuc21hbGx3aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7YDtcclxuICAgIGlmICh0aGlzLnpJbmRleCkge1xyXG4gICAgICBoICs9IGB6LWluZGV4OmAgKyB0aGlzLnpJbmRleCArIGA7YDtcclxuICAgIH1cclxuICAgIGggKz0gYFwiIG5hbWU9XCIke3RoaXMubmFtZX1cIiBjbGFzc25hbWU9XCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5JbWFnZVVwbG9hZEZpZWxkXCIgaXNzaG93bGFiZWw9XCIke3RoaXMuaXNzaG93bGFiZWx9XCIgbGFiZWx2YWx1ZT1cIiR7dGhpcy5sYWJlbHZhbHVlfVwiICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJlYWRvbmx5c2hvd3ZhbG9ubHk9XCIke3RoaXMucmVhZG9ubHlzaG93dmFsb25seX1cIiBcclxuICAgICAgICAgICAgcmVmcmVzaG9uY2hhbmdlZD1cIiR7dGhpcy5yZWZyZXNob25jaGFuZ2VkfVwiIFxyXG4gICAgICAgICAgICBjYWxjdWxhdGVvbnJlZnJlc2g9XCIke3RoaXMuY2FsY3VsYXRlb25yZWZyZXNofVwiIG1vYmlsZT1cIiR7dGhpcy5tb2JpbGV9XCIgZGlzY3JpcHQ9XCIke3RoaXMuZGlzY3JpcHR9XCJcclxuICAgICAgICAgICAgcmVmcmVzaG1vZGU9XCIke3RoaXMucmVmcmVzaG1vZGV9XCJcclxuICAgICAgICAgICAgaGlkZGVuc2NyaXB0PVwiJHt0aGlzLmhpZGRlbnNjcmlwdH1cIiBoaWRkZW52YWx1ZT1cIiR7dGhpcy5oaWRkZW52YWx1ZX1cIiBcclxuICAgICAgICAgICAgaGlkZGVucHJpbnRzY3JpcHQ9XCIke3RoaXMuaGlkZGVucHJpbnRzY3JpcHR9XCIgXHJcbiAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU9XCIke3RoaXMucHJpbnRoaWRkZW52YWx1ZX1cIiByZWFkb25seXNjcmlwdD1cIiR7dGhpcy5yZWFkb25seXNjcmlwdH1cIlxyXG4gICAgICAgICAgICB2YWx1ZXNjcmlwdD1cIiR7dGhpcy52YWx1ZXNjcmlwdH1cIlxyXG4gICAgICAgICAgICBsaW1pdHNpemU9XCIke3RoaXMubGltaXRzaXplfVwiXHJcbiAgICAgICAgICAgIGxpbWl0bnVtYmVyPVwiJHt0aGlzLmxpbWl0bnVtYmVyfVwiXHJcbiAgICAgICAgICAgIGZpbGVwYXR0ZXJuPVwiJHt0aGlzLmZpbGVwYXR0ZXJufVwiXHJcbiAgICAgICAgICAgIGZpbGVjYXRhbG9nPVwiJHt0aGlzLmZpbGVjYXRhbG9nfVwiXHJcbiAgICAgICAgICAgIGltZ2g9XCIke3RoaXMuaW1naH1cIlxyXG4gICAgICAgICAgICBpbWd3PVwiJHt0aGlzLmltZ3d9XCJcclxuICAgICAgICAgICAgYDtcclxuXHJcbiAgICBoICs9IGByZWZyZXNoZmllbGRzPVwiYDtcclxuXHJcbiAgICAvLyBwcm9jZXNzZGVzY3JpcHRpb249XCIke3RoaXMucHJvY2Vzc2Rlc2NyaXB0aW9ufVwiXHJcbiAgICBpZiAodGhpcy5yZWZyZXNoZmllbGRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBoICs9IHRoaXMucmVmcmVzaGZpZWxkc1tpXTtcclxuICAgICAgICBpZiAoaSAhPSB0aGlzLnJlZnJlc2hmaWVsZHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgaCArPSBcIjtcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBoICs9IGBcImAgKyBgPmAgKyB0aGlzLnZhbHVlICsgYDwvZi1pbWc+PC9kaXY+YDtcclxuICAgIHJldHVybiBoO1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm9kZUNvbmZpZ0luZm8oKSB7XHJcbiAgICBsZXQgbm9kZSA9IHt9O1xyXG4gICAgbm9kZS50ZXh0ID0gdGhpcy50ZXh0O1xyXG4gICAgbm9kZS5pY29uID0gXCJnbHlwaGljb24gZ2x5cGhpY29uLWdsYXNzXCI7XHJcbiAgICBub2RlLnV1aWQgPSB0aGlzLmdldFByb3AoXCJpZFwiKTtcclxuICAgIG5vZGUuaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgcmV0dXJuIG5vZGU7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEltYWdldXBsb2FkZmllbGQ7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9jb21wb25lbnQvSW1hZ2V1cGxvYWRmaWVsZC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFBQTs7O0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFwQ0E7QUFxQ0E7QUFDQTs7O0FBQUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQXpHQTtBQUNBO0FBMEdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///115\n");

/***/ }),
/* 116 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Onlinetakephotofield = function (_Element) {\n  _inherits(Onlinetakephotofield, _Element);\n\n  function Onlinetakephotofield() {\n    _classCallCheck(this, Onlinetakephotofield);\n\n    var _this = _possibleConstructorReturn(this, (Onlinetakephotofield.__proto__ || Object.getPrototypeOf(Onlinetakephotofield)).call(this));\n\n    _this.width = 170;\n    _this.height = 30;\n    _this.name = \"\"; //鍞竴鏍囪瘑\n    _this.text = \"onlinetakephotofield\";\n    _this.cursor = \"default\";\n    _this.scope = \"onlinetakephotofield\";\n    _this.id = _utility.Sequence.createUuid();\n    _this.belongId = \"\";\n    _this.preX = 0;\n    _this.preY = 0;\n    _this.moveX = 0;\n    _this.moveY = 0;\n    _this.value = \"鍦ㄧ嚎鎷嶇収\"; //鍊糪n    _this.calculateonrefresh = \"false\"; //鍐茶绠梊n    _this.valuescript = \"\"; //鑴氭湰鍊糪n    _this.discript = \"\"; //鎻忚堪\n\n    _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n    _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n    _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n    _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n    _this.readonlyscript = \"\"; //鍙鏉′欢鑴氭湰\n\n    _this.smallwidth = 100;\n    _this.imgh = 100; //瀛樻斁璺緞\n    _this.imgw = 100; //鑷畾涔夊瓨鏀捐矾寰刓n    _this.album = \"false\"; //鍏佽浠庢墜鏈虹浉鍐岄€夋嫨鐓х墖\n    return _this;\n  }\n\n  _createClass(Onlinetakephotofield, [{\n    key: \"toHtml\",\n    value: function toHtml() {}\n  }, {\n    key: \"paint\",\n    value: function paint() {\n      // if(this.x==0&&this.y==0){\n      //     this.x=this.left;\n      //     this.y=this.top;\n      // }else{\n      //     this.left=this.x;\n      //     this.top=this.y;\n      // }\n      //console.log(panel);\n\n      var h = \"\";\n      if (this.isblock == \"true\") {\n        h = \"<div class=\\\"block\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\" style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      } else {\n        h = \"<div class=\\\"inlineBlock\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\"style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      }\n      if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n        h += \"<f-label style=\\\"line-height:\" + this.height + \"px;\\\">\" + this.labelvalue + \"</f-label>\";\n      }\n      h += \"<f-img type=\\\"text\\\" nodeid=\\\"\" + this.id + \"\\\" class=\\\"inlineBlock\\\" minwidth=\\\"\" + this.width + \"\\\" style=\\\"border:1px solid #ccc;min-width:\" + this.smallwidth + \"px;min-height:\" + this.height + \"px;\";\n      if (this.zIndex) {\n        h += \"z-index:\" + this.zIndex + \";\";\n      }\n      h += \"\\\" name=\\\"\" + this.name + \"\\\" classname=\\\"cn.myapps.runtime.dynaform.form.ejb.OnLineTakePhotoField\\\" isshowlabel=\\\"\" + this.isshowlabel + \"\\\" labelvalue=\\\"\" + this.labelvalue + \"\\\"  \\n            \\n            calculateonrefresh=\\\"\" + this.calculateonrefresh + \"\\\" discript=\\\"\" + this.discript + \"\\\"\\n            hiddenscript=\\\"\" + this.hiddenscript + \"\\\" hiddenvalue=\\\"\" + this.hiddenvalue + \"\\\" \\n            hiddenprintscript=\\\"\" + this.hiddenprintscript + \"\\\" \\n            printhiddenvalue=\\\"\" + this.printhiddenvalue + \"\\\" readonlyscript=\\\"\" + this.readonlyscript + \"\\\"\\n            valuescript=\\\"\" + this.valuescript + \"\\\"\\n            imgh=\\\"\" + this.imgh + \"\\\"\\n            imgw=\\\"\" + this.imgw + \"\\\"\\n            album=\\\"\" + this.album + \"\\\"\\n            \";\n      h += \">\" + this.value + \"</f-img></div>\";\n      return h;\n    }\n  }, {\n    key: \"getNodeConfigInfo\",\n    value: function getNodeConfigInfo() {\n      var node = {};\n      node.text = this.text;\n      node.icon = \"glyphicon glyphicon-glass\";\n      node.uuid = this.getProp(\"id\");\n      node.instance = this;\n      return node;\n    }\n  }]);\n\n  return Onlinetakephotofield;\n}(_Element3.default);\n\nexports.default = Onlinetakephotofield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9PbmxpbmV0YWtlcGhvdG9maWVsZC5qcz8zNDMyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFbGVtZW50IGZyb20gXCIuL0VsZW1lbnRcIjtcclxuaW1wb3J0IHsgU2VxdWVuY2UgfSBmcm9tIFwiLi4vLi4vdXRpbGl0eVwiO1xyXG5jbGFzcyBPbmxpbmV0YWtlcGhvdG9maWVsZCBleHRlbmRzIEVsZW1lbnQge1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMud2lkdGggPSAxNzA7XHJcbiAgICB0aGlzLmhlaWdodCA9IDMwO1xyXG4gICAgdGhpcy5uYW1lID0gXCJcIjsgLy/llK/kuIDmoIfor4ZcclxuICAgIHRoaXMudGV4dCA9IFwib25saW5ldGFrZXBob3RvZmllbGRcIjtcclxuICAgIHRoaXMuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLnNjb3BlID0gXCJvbmxpbmV0YWtlcGhvdG9maWVsZFwiO1xyXG4gICAgdGhpcy5pZCA9IFNlcXVlbmNlLmNyZWF0ZVV1aWQoKTtcclxuICAgIHRoaXMuYmVsb25nSWQgPSBcIlwiO1xyXG4gICAgdGhpcy5wcmVYID0gMDtcclxuICAgIHRoaXMucHJlWSA9IDA7XHJcbiAgICB0aGlzLm1vdmVYID0gMDtcclxuICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgdGhpcy52YWx1ZSA9IFwi5Zyo57q/5ouN54WnXCI7IC8v5YC8XHJcbiAgICB0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaCA9IFwiZmFsc2VcIjsgLy/lhrLorqHnrpdcclxuICAgIHRoaXMudmFsdWVzY3JpcHQgPSBcIlwiOyAvL+iEmuacrOWAvFxyXG4gICAgdGhpcy5kaXNjcmlwdCA9IFwiXCI7IC8v5o+P6L+wXHJcblxyXG4gICAgdGhpcy5oaWRkZW5zY3JpcHQgPSBcIlwiOyAvL+makOiXj+adoeS7tuiEmuacrFxyXG4gICAgdGhpcy5oaWRkZW52YWx1ZSA9IFwiXCI7IC8v6ZqQ6JeP5pe25pi+56S65YC8XHJcbiAgICB0aGlzLmhpZGRlbnByaW50c2NyaXB0ID0gXCJcIjsgLy/miZPljbDml7bpmpDol4/mnaHku7bohJrmnKxcclxuICAgIHRoaXMucHJpbnRoaWRkZW52YWx1ZSA9IFwiXCI7IC8v5omT5Y2w6ZqQ6JeP5pe25pi+56S65YC8XHJcbiAgICB0aGlzLnJlYWRvbmx5c2NyaXB0ID0gXCJcIjsgLy/lj6ror7vmnaHku7bohJrmnKxcclxuXHJcbiAgICB0aGlzLnNtYWxsd2lkdGggPSAxMDA7XHJcbiAgICB0aGlzLmltZ2g9MTAwOy8v5a2Y5pS+6Lev5b6EXHJcbiAgICB0aGlzLmltZ3c9MTAwOy8v6Ieq5a6a5LmJ5a2Y5pS+6Lev5b6EXHJcbiAgICB0aGlzLmFsYnVtPVwiZmFsc2VcIjsvL+WFgeiuuOS7juaJi+acuuebuOWGjOmAieaLqeeFp+eJh1xyXG4gIH1cclxuICB0b0h0bWwoKSB7fVxyXG5cclxuICBwYWludCgpIHtcclxuICAgIC8vIGlmKHRoaXMueD09MCYmdGhpcy55PT0wKXtcclxuICAgIC8vICAgICB0aGlzLng9dGhpcy5sZWZ0O1xyXG4gICAgLy8gICAgIHRoaXMueT10aGlzLnRvcDtcclxuICAgIC8vIH1lbHNle1xyXG4gICAgLy8gICAgIHRoaXMubGVmdD10aGlzLng7XHJcbiAgICAvLyAgICAgdGhpcy50b3A9dGhpcy55O1xyXG4gICAgLy8gfVxyXG4gICAgLy9jb25zb2xlLmxvZyhwYW5lbCk7XHJcblxyXG4gICAgbGV0IGggPSBcIlwiO1xyXG4gICAgaWYgKHRoaXMuaXNibG9jayA9PSBcInRydWVcIikge1xyXG4gICAgICBoID0gYDxkaXYgY2xhc3M9XCJibG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBoID0gYDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcInN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzc2hvd2xhYmVsID09IFwidHJ1ZVwiIHx8IHRoaXMuaXNzaG93bGFiZWwgPT0gdHJ1ZSkge1xyXG4gICAgICBoICs9IGA8Zi1sYWJlbCBzdHlsZT1cImxpbmUtaGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+JHt0aGlzLmxhYmVsdmFsdWV9PC9mLWxhYmVsPmA7XHJcbiAgICB9XHJcbiAgICBoICs9IGA8Zi1pbWcgdHlwZT1cInRleHRcIiBub2RlaWQ9XCIke3RoaXMuaWR9XCIgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIG1pbndpZHRoPVwiJHt0aGlzLndpZHRofVwiIHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjY2NjO21pbi13aWR0aDoke3RoaXMuc21hbGx3aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7YDtcclxuICAgIGlmICh0aGlzLnpJbmRleCkge1xyXG4gICAgICBoICs9IGB6LWluZGV4OmAgKyB0aGlzLnpJbmRleCArIGA7YDtcclxuICAgIH1cclxuICAgIGggKz0gYFwiIG5hbWU9XCIke3RoaXMubmFtZX1cIiBjbGFzc25hbWU9XCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5PbkxpbmVUYWtlUGhvdG9GaWVsZFwiIGlzc2hvd2xhYmVsPVwiJHt0aGlzLmlzc2hvd2xhYmVsfVwiIGxhYmVsdmFsdWU9XCIke3RoaXMubGFiZWx2YWx1ZX1cIiAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjYWxjdWxhdGVvbnJlZnJlc2g9XCIke3RoaXMuY2FsY3VsYXRlb25yZWZyZXNofVwiIGRpc2NyaXB0PVwiJHt0aGlzLmRpc2NyaXB0fVwiXHJcbiAgICAgICAgICAgIGhpZGRlbnNjcmlwdD1cIiR7dGhpcy5oaWRkZW5zY3JpcHR9XCIgaGlkZGVudmFsdWU9XCIke3RoaXMuaGlkZGVudmFsdWV9XCIgXHJcbiAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0PVwiJHt0aGlzLmhpZGRlbnByaW50c2NyaXB0fVwiIFxyXG4gICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlPVwiJHt0aGlzLnByaW50aGlkZGVudmFsdWV9XCIgcmVhZG9ubHlzY3JpcHQ9XCIke3RoaXMucmVhZG9ubHlzY3JpcHR9XCJcclxuICAgICAgICAgICAgdmFsdWVzY3JpcHQ9XCIke3RoaXMudmFsdWVzY3JpcHR9XCJcclxuICAgICAgICAgICAgaW1naD1cIiR7dGhpcy5pbWdofVwiXHJcbiAgICAgICAgICAgIGltZ3c9XCIke3RoaXMuaW1nd31cIlxyXG4gICAgICAgICAgICBhbGJ1bT1cIiR7dGhpcy5hbGJ1bX1cIlxyXG4gICAgICAgICAgICBgO1xyXG4gICAgaCArPSBgPmAgKyB0aGlzLnZhbHVlICsgYDwvZi1pbWc+PC9kaXY+YDtcclxuICAgIHJldHVybiBoO1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm9kZUNvbmZpZ0luZm8oKSB7XHJcbiAgICBsZXQgbm9kZSA9IHt9O1xyXG4gICAgbm9kZS50ZXh0ID0gdGhpcy50ZXh0O1xyXG4gICAgbm9kZS5pY29uID0gXCJnbHlwaGljb24gZ2x5cGhpY29uLWdsYXNzXCI7XHJcbiAgICBub2RlLnV1aWQgPSB0aGlzLmdldFByb3AoXCJpZFwiKTtcclxuICAgIG5vZGUuaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgcmV0dXJuIG5vZGU7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IE9ubGluZXRha2VwaG90b2ZpZWxkO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2Zvcm0vY29tcG9uZW50L09ubGluZXRha2VwaG90b2ZpZWxkLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7OztBQUFBOzs7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBNUJBO0FBNkJBO0FBQ0E7OztBQUFBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFXQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUE5RUE7QUFDQTtBQStFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///116\n");

/***/ }),
/* 117 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Weixingpsfield = function (_Element) {\n  _inherits(Weixingpsfield, _Element);\n\n  function Weixingpsfield() {\n    _classCallCheck(this, Weixingpsfield);\n\n    var _this = _possibleConstructorReturn(this, (Weixingpsfield.__proto__ || Object.getPrototypeOf(Weixingpsfield)).call(this));\n\n    _this.width = 170;\n    _this.height = 30;\n    _this.name = \"\"; //鍞竴鏍囪瘑\n    _this.text = \"weixingpsfield\";\n    _this.cursor = \"default\";\n    _this.scope = \"weixingpsfield\";\n    _this.id = _utility.Sequence.createUuid();\n    _this.belongId = \"\";\n    _this.preX = 0;\n    _this.preY = 0;\n    _this.moveX = 0;\n    _this.moveY = 0;\n    _this.value = \"寰俊gps瀹氫綅\"; //鍊糪n    _this.discript = \"\"; //鎻忚堪\n\n    _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n    _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n    _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n    _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n\n    _this.smallwidth = 100;\n    _this.refreshonchanged = \"false\"; //鍒锋柊\n    return _this;\n  }\n\n  _createClass(Weixingpsfield, [{\n    key: \"toHtml\",\n    value: function toHtml() {}\n  }, {\n    key: \"paint\",\n    value: function paint() {\n      // if(this.x==0&&this.y==0){\n      //     this.x=this.left;\n      //     this.y=this.top;\n      // }else{\n      //     this.left=this.x;\n      //     this.top=this.y;\n      // }\n      //console.log(panel);\n\n      var h = \"\";\n      if (this.isblock == \"true\") {\n        h = \"<div class=\\\"block\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\" style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      } else {\n        h = \"<div class=\\\"inlineBlock\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\"style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      }\n      if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n        h += \"<f-label style=\\\"line-height:\" + this.height + \"px;\\\">\" + this.labelvalue + \"</f-label>\";\n      }\n      h += \"<f-img type=\\\"text\\\" nodeid=\\\"\" + this.id + \"\\\" class=\\\"inlineBlock\\\" minwidth=\\\"\" + this.width + \"\\\" style=\\\"border:1px solid #ccc;min-width:\" + this.smallwidth + \"px;min-height:\" + this.height + \"px;\";\n      if (this.zIndex) {\n        h += \"z-index:\" + this.zIndex + \";\";\n      }\n      h += \"\\\" name=\\\"\" + this.name + \"\\\" classname=\\\"cn.myapps.runtime.dynaform.form.ejb.WeixinGpsField\\\" isshowlabel=\\\"\" + this.isshowlabel + \"\\\" labelvalue=\\\"\" + this.labelvalue + \"\\\"  \\n            fieldtype=\\\"VALUE_TYPE_VARCHAR\\\"\\n            discript=\\\"\" + this.discript + \"\\\"\\n            hiddenscript=\\\"\" + this.hiddenscript + \"\\\" hiddenvalue=\\\"\" + this.hiddenvalue + \"\\\" \\n            hiddenprintscript=\\\"\" + this.hiddenprintscript + \"\\\" \\n            printhiddenvalue=\\\"\" + this.printhiddenvalue + \"\\\"\\n            refreshonchanged=\\\"\" + this.refreshonchanged + \"\\\"\\n            \";\n      h += \">\" + this.value + \"</f-img></div>\";\n      return h;\n    }\n  }, {\n    key: \"getNodeConfigInfo\",\n    value: function getNodeConfigInfo() {\n      var node = {};\n      node.text = this.text;\n      node.icon = \"glyphicon glyphicon-glass\";\n      node.uuid = this.getProp(\"id\");\n      node.instance = this;\n      return node;\n    }\n  }]);\n\n  return Weixingpsfield;\n}(_Element3.default);\n\nexports.default = Weixingpsfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9XZWl4aW5ncHNmaWVsZC5qcz8zNGY1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFbGVtZW50IGZyb20gXCIuL0VsZW1lbnRcIjtcclxuaW1wb3J0IHsgU2VxdWVuY2UgfSBmcm9tIFwiLi4vLi4vdXRpbGl0eVwiO1xyXG5jbGFzcyBXZWl4aW5ncHNmaWVsZCBleHRlbmRzIEVsZW1lbnQge1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMud2lkdGggPSAxNzA7XHJcbiAgICB0aGlzLmhlaWdodCA9IDMwO1xyXG4gICAgdGhpcy5uYW1lID0gXCJcIjsgLy/llK/kuIDmoIfor4ZcclxuICAgIHRoaXMudGV4dCA9IFwid2VpeGluZ3BzZmllbGRcIjtcclxuICAgIHRoaXMuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLnNjb3BlID0gXCJ3ZWl4aW5ncHNmaWVsZFwiO1xyXG4gICAgdGhpcy5pZCA9IFNlcXVlbmNlLmNyZWF0ZVV1aWQoKTtcclxuICAgIHRoaXMuYmVsb25nSWQgPSBcIlwiO1xyXG4gICAgdGhpcy5wcmVYID0gMDtcclxuICAgIHRoaXMucHJlWSA9IDA7XHJcbiAgICB0aGlzLm1vdmVYID0gMDtcclxuICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgdGhpcy52YWx1ZSA9IFwi5b6u5L+hZ3Bz5a6a5L2NXCI7IC8v5YC8XHJcbiAgICB0aGlzLmRpc2NyaXB0ID0gXCJcIjsgLy/mj4/ov7BcclxuXHJcbiAgICB0aGlzLmhpZGRlbnNjcmlwdCA9IFwiXCI7IC8v6ZqQ6JeP5p2h5Lu26ISa5pysXHJcbiAgICB0aGlzLmhpZGRlbnZhbHVlID0gXCJcIjsgLy/pmpDol4/ml7bmmL7npLrlgLxcclxuICAgIHRoaXMuaGlkZGVucHJpbnRzY3JpcHQgPSBcIlwiOyAvL+aJk+WNsOaXtumakOiXj+adoeS7tuiEmuacrFxyXG4gICAgdGhpcy5wcmludGhpZGRlbnZhbHVlID0gXCJcIjsgLy/miZPljbDpmpDol4/ml7bmmL7npLrlgLxcclxuXHJcbiAgICB0aGlzLnNtYWxsd2lkdGggPSAxMDA7XHJcbiAgICB0aGlzLnJlZnJlc2hvbmNoYW5nZWQ9XCJmYWxzZVwiOy8v5Yi35pawXHJcbiAgfVxyXG4gIHRvSHRtbCgpIHt9XHJcblxyXG4gIHBhaW50KCkge1xyXG4gICAgLy8gaWYodGhpcy54PT0wJiZ0aGlzLnk9PTApe1xyXG4gICAgLy8gICAgIHRoaXMueD10aGlzLmxlZnQ7XHJcbiAgICAvLyAgICAgdGhpcy55PXRoaXMudG9wO1xyXG4gICAgLy8gfWVsc2V7XHJcbiAgICAvLyAgICAgdGhpcy5sZWZ0PXRoaXMueDtcclxuICAgIC8vICAgICB0aGlzLnRvcD10aGlzLnk7XHJcbiAgICAvLyB9XHJcbiAgICAvL2NvbnNvbGUubG9nKHBhbmVsKTtcclxuXHJcbiAgICBsZXQgaCA9IFwiXCI7XHJcbiAgICBpZiAodGhpcy5pc2Jsb2NrID09IFwidHJ1ZVwiKSB7XHJcbiAgICAgIGggPSBgPGRpdiBjbGFzcz1cImJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIHN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGggPSBgPGRpdiBjbGFzcz1cImlubGluZUJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwic3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNzaG93bGFiZWwgPT0gXCJ0cnVlXCIgfHwgdGhpcy5pc3Nob3dsYWJlbCA9PSB0cnVlKSB7XHJcbiAgICAgIGggKz0gYDxmLWxhYmVsIHN0eWxlPVwibGluZS1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj4ke3RoaXMubGFiZWx2YWx1ZX08L2YtbGFiZWw+YDtcclxuICAgIH1cclxuICAgIGggKz0gYDxmLWltZyB0eXBlPVwidGV4dFwiIG5vZGVpZD1cIiR7dGhpcy5pZH1cIiBjbGFzcz1cImlubGluZUJsb2NrXCIgbWlud2lkdGg9XCIke3RoaXMud2lkdGh9XCIgc3R5bGU9XCJib3JkZXI6MXB4IHNvbGlkICNjY2M7bWluLXdpZHRoOiR7dGhpcy5zbWFsbHdpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtgO1xyXG4gICAgaWYgKHRoaXMuekluZGV4KSB7XHJcbiAgICAgIGggKz0gYHotaW5kZXg6YCArIHRoaXMuekluZGV4ICsgYDtgO1xyXG4gICAgfVxyXG4gICAgaCArPSBgXCIgbmFtZT1cIiR7dGhpcy5uYW1lfVwiIGNsYXNzbmFtZT1cImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLldlaXhpbkdwc0ZpZWxkXCIgaXNzaG93bGFiZWw9XCIke3RoaXMuaXNzaG93bGFiZWx9XCIgbGFiZWx2YWx1ZT1cIiR7dGhpcy5sYWJlbHZhbHVlfVwiICBcclxuICAgICAgICAgICAgZmllbGR0eXBlPVwiVkFMVUVfVFlQRV9WQVJDSEFSXCJcclxuICAgICAgICAgICAgZGlzY3JpcHQ9XCIke3RoaXMuZGlzY3JpcHR9XCJcclxuICAgICAgICAgICAgaGlkZGVuc2NyaXB0PVwiJHt0aGlzLmhpZGRlbnNjcmlwdH1cIiBoaWRkZW52YWx1ZT1cIiR7dGhpcy5oaWRkZW52YWx1ZX1cIiBcclxuICAgICAgICAgICAgaGlkZGVucHJpbnRzY3JpcHQ9XCIke3RoaXMuaGlkZGVucHJpbnRzY3JpcHR9XCIgXHJcbiAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU9XCIke3RoaXMucHJpbnRoaWRkZW52YWx1ZX1cIlxyXG4gICAgICAgICAgICByZWZyZXNob25jaGFuZ2VkPVwiJHt0aGlzLnJlZnJlc2hvbmNoYW5nZWR9XCJcclxuICAgICAgICAgICAgYDtcclxuICAgIGggKz0gYD5gICsgdGhpcy52YWx1ZSArIGA8L2YtaW1nPjwvZGl2PmA7XHJcbiAgICByZXR1cm4gaDtcclxuICB9XHJcblxyXG4gIGdldE5vZGVDb25maWdJbmZvKCkge1xyXG4gICAgbGV0IG5vZGUgPSB7fTtcclxuICAgIG5vZGUudGV4dCA9IHRoaXMudGV4dDtcclxuICAgIG5vZGUuaWNvbiA9IFwiZ2x5cGhpY29uIGdseXBoaWNvbi1nbGFzc1wiO1xyXG4gICAgbm9kZS51dWlkID0gdGhpcy5nZXRQcm9wKFwiaWRcIik7XHJcbiAgICBub2RlLmluc3RhbmNlID0gdGhpcztcclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBXZWl4aW5ncHNmaWVsZDtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9mb3JtL2NvbXBvbmVudC9XZWl4aW5ncHNmaWVsZC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFBQTs7O0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdkJBO0FBd0JBO0FBQ0E7OztBQUFBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUF0RUE7QUFDQTtBQXVFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///117\n");

/***/ }),
/* 118 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Weixinrecordfield = function (_Element) {\n  _inherits(Weixinrecordfield, _Element);\n\n  function Weixinrecordfield() {\n    _classCallCheck(this, Weixinrecordfield);\n\n    var _this = _possibleConstructorReturn(this, (Weixinrecordfield.__proto__ || Object.getPrototypeOf(Weixinrecordfield)).call(this));\n\n    _this.width = 170;\n    _this.height = 30;\n    _this.name = \"\"; //鍞竴鏍囪瘑\n    _this.text = \"weixinrecordfield\";\n    _this.cursor = \"default\";\n    _this.scope = \"weixinrecordfield\";\n    _this.id = _utility.Sequence.createUuid();\n    _this.belongId = \"\";\n    _this.preX = 0;\n    _this.preY = 0;\n    _this.moveX = 0;\n    _this.moveY = 0;\n    _this.value = \"寰俊褰曢煶鎺т欢\"; //鍊糪n    _this.discript = \"\"; //鎻忚堪\n\n    _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n    _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n    _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n    _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n\n    _this.smallwidth = 100;\n    _this.mobile = \"false\"; //鎵嬫満鍙敤\n    _this.readonlyscript = \"\"; //鍙鑴氭湰\n    return _this;\n  }\n\n  _createClass(Weixinrecordfield, [{\n    key: \"toHtml\",\n    value: function toHtml() {}\n  }, {\n    key: \"paint\",\n    value: function paint() {\n      // if(this.x==0&&this.y==0){\n      //     this.x=this.left;\n      //     this.y=this.top;\n      // }else{\n      //     this.left=this.x;\n      //     this.top=this.y;\n      // }\n      //console.log(panel);\n\n      var h = \"\";\n      if (this.isblock == \"true\") {\n        h = \"<div class=\\\"block\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\" style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      } else {\n        h = \"<div class=\\\"inlineBlock\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\"style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      }\n      if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n        h += \"<f-label style=\\\"line-height:\" + this.height + \"px;\\\">\" + this.labelvalue + \"</f-label>\";\n      }\n      h += \"<f-img type=\\\"text\\\" nodeid=\\\"\" + this.id + \"\\\" class=\\\"inlineBlock\\\" minwidth=\\\"\" + this.width + \"\\\" style=\\\"border:1px solid #ccc;min-width:\" + this.smallwidth + \"px;min-height:\" + this.height + \"px;\";\n      if (this.zIndex) {\n        h += \"z-index:\" + this.zIndex + \";\";\n      }\n      h += \"\\\" name=\\\"\" + this.name + \"\\\" classname=\\\"cn.myapps.runtime.dynaform.form.ejb.WeixinRecordField\\\" isshowlabel=\\\"\" + this.isshowlabel + \"\\\" labelvalue=\\\"\" + this.labelvalue + \"\\\"  \\n            fieldtype=\\\"VALUE_TYPE_TEXT\\\"\\n            discript=\\\"\" + this.discript + \"\\\"\\n            hiddenscript=\\\"\" + this.hiddenscript + \"\\\" hiddenvalue=\\\"\" + this.hiddenvalue + \"\\\" \\n            hiddenprintscript=\\\"\" + this.hiddenprintscript + \"\\\" \\n            printhiddenvalue=\\\"\" + this.printhiddenvalue + \"\\\"\\n            mobile=\\\"\" + this.mobile + \"\\\"\\n            readonlyscript=\\\"\" + this.readonlyscript + \"\\\"\\n            \";\n      h += \">\" + this.value + \"</f-img></div>\";\n      return h;\n    }\n  }, {\n    key: \"getNodeConfigInfo\",\n    value: function getNodeConfigInfo() {\n      var node = {};\n      node.text = this.text;\n      node.icon = \"glyphicon glyphicon-glass\";\n      node.uuid = this.getProp(\"id\");\n      node.instance = this;\n      return node;\n    }\n  }]);\n\n  return Weixinrecordfield;\n}(_Element3.default);\n\nexports.default = Weixinrecordfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9XZWl4aW5yZWNvcmRmaWVsZC5qcz85ZmMxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFbGVtZW50IGZyb20gXCIuL0VsZW1lbnRcIjtcclxuaW1wb3J0IHsgU2VxdWVuY2UgfSBmcm9tIFwiLi4vLi4vdXRpbGl0eVwiO1xyXG5jbGFzcyBXZWl4aW5yZWNvcmRmaWVsZCBleHRlbmRzIEVsZW1lbnQge1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMud2lkdGggPSAxNzA7XHJcbiAgICB0aGlzLmhlaWdodCA9IDMwO1xyXG4gICAgdGhpcy5uYW1lID0gXCJcIjsgLy/llK/kuIDmoIfor4ZcclxuICAgIHRoaXMudGV4dCA9IFwid2VpeGlucmVjb3JkZmllbGRcIjtcclxuICAgIHRoaXMuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLnNjb3BlID0gXCJ3ZWl4aW5yZWNvcmRmaWVsZFwiO1xyXG4gICAgdGhpcy5pZCA9IFNlcXVlbmNlLmNyZWF0ZVV1aWQoKTtcclxuICAgIHRoaXMuYmVsb25nSWQgPSBcIlwiO1xyXG4gICAgdGhpcy5wcmVYID0gMDtcclxuICAgIHRoaXMucHJlWSA9IDA7XHJcbiAgICB0aGlzLm1vdmVYID0gMDtcclxuICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgdGhpcy52YWx1ZSA9IFwi5b6u5L+h5b2V6Z+z5o6n5Lu2XCI7IC8v5YC8XHJcbiAgICB0aGlzLmRpc2NyaXB0ID0gXCJcIjsgLy/mj4/ov7BcclxuXHJcbiAgICB0aGlzLmhpZGRlbnNjcmlwdCA9IFwiXCI7IC8v6ZqQ6JeP5p2h5Lu26ISa5pysXHJcbiAgICB0aGlzLmhpZGRlbnZhbHVlID0gXCJcIjsgLy/pmpDol4/ml7bmmL7npLrlgLxcclxuICAgIHRoaXMuaGlkZGVucHJpbnRzY3JpcHQgPSBcIlwiOyAvL+aJk+WNsOaXtumakOiXj+adoeS7tuiEmuacrFxyXG4gICAgdGhpcy5wcmludGhpZGRlbnZhbHVlID0gXCJcIjsgLy/miZPljbDpmpDol4/ml7bmmL7npLrlgLxcclxuXHJcbiAgICB0aGlzLnNtYWxsd2lkdGggPSAxMDA7XHJcbiAgICB0aGlzLm1vYmlsZT1cImZhbHNlXCI7Ly/miYvmnLrlj6/nlKhcclxuICAgIHRoaXMucmVhZG9ubHlzY3JpcHQ9XCJcIjsvL+WPquivu+iEmuacrFxyXG4gIH1cclxuICB0b0h0bWwoKSB7fVxyXG5cclxuICBwYWludCgpIHtcclxuICAgIC8vIGlmKHRoaXMueD09MCYmdGhpcy55PT0wKXtcclxuICAgIC8vICAgICB0aGlzLng9dGhpcy5sZWZ0O1xyXG4gICAgLy8gICAgIHRoaXMueT10aGlzLnRvcDtcclxuICAgIC8vIH1lbHNle1xyXG4gICAgLy8gICAgIHRoaXMubGVmdD10aGlzLng7XHJcbiAgICAvLyAgICAgdGhpcy50b3A9dGhpcy55O1xyXG4gICAgLy8gfVxyXG4gICAgLy9jb25zb2xlLmxvZyhwYW5lbCk7XHJcblxyXG4gICAgbGV0IGggPSBcIlwiO1xyXG4gICAgaWYgKHRoaXMuaXNibG9jayA9PSBcInRydWVcIikge1xyXG4gICAgICBoID0gYDxkaXYgY2xhc3M9XCJibG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBoID0gYDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcInN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzc2hvd2xhYmVsID09IFwidHJ1ZVwiIHx8IHRoaXMuaXNzaG93bGFiZWwgPT0gdHJ1ZSkge1xyXG4gICAgICBoICs9IGA8Zi1sYWJlbCBzdHlsZT1cImxpbmUtaGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+JHt0aGlzLmxhYmVsdmFsdWV9PC9mLWxhYmVsPmA7XHJcbiAgICB9XHJcbiAgICBoICs9IGA8Zi1pbWcgdHlwZT1cInRleHRcIiBub2RlaWQ9XCIke3RoaXMuaWR9XCIgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIG1pbndpZHRoPVwiJHt0aGlzLndpZHRofVwiIHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjY2NjO21pbi13aWR0aDoke3RoaXMuc21hbGx3aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7YDtcclxuICAgIGlmICh0aGlzLnpJbmRleCkge1xyXG4gICAgICBoICs9IGB6LWluZGV4OmAgKyB0aGlzLnpJbmRleCArIGA7YDtcclxuICAgIH1cclxuICAgIGggKz0gYFwiIG5hbWU9XCIke3RoaXMubmFtZX1cIiBjbGFzc25hbWU9XCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5XZWl4aW5SZWNvcmRGaWVsZFwiIGlzc2hvd2xhYmVsPVwiJHt0aGlzLmlzc2hvd2xhYmVsfVwiIGxhYmVsdmFsdWU9XCIke3RoaXMubGFiZWx2YWx1ZX1cIiAgXHJcbiAgICAgICAgICAgIGZpZWxkdHlwZT1cIlZBTFVFX1RZUEVfVEVYVFwiXHJcbiAgICAgICAgICAgIGRpc2NyaXB0PVwiJHt0aGlzLmRpc2NyaXB0fVwiXHJcbiAgICAgICAgICAgIGhpZGRlbnNjcmlwdD1cIiR7dGhpcy5oaWRkZW5zY3JpcHR9XCIgaGlkZGVudmFsdWU9XCIke3RoaXMuaGlkZGVudmFsdWV9XCIgXHJcbiAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0PVwiJHt0aGlzLmhpZGRlbnByaW50c2NyaXB0fVwiIFxyXG4gICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlPVwiJHt0aGlzLnByaW50aGlkZGVudmFsdWV9XCJcclxuICAgICAgICAgICAgbW9iaWxlPVwiJHt0aGlzLm1vYmlsZX1cIlxyXG4gICAgICAgICAgICByZWFkb25seXNjcmlwdD1cIiR7dGhpcy5yZWFkb25seXNjcmlwdH1cIlxyXG4gICAgICAgICAgICBgO1xyXG4gICAgaCArPSBgPmAgKyB0aGlzLnZhbHVlICsgYDwvZi1pbWc+PC9kaXY+YDtcclxuICAgIHJldHVybiBoO1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm9kZUNvbmZpZ0luZm8oKSB7XHJcbiAgICBsZXQgbm9kZSA9IHt9O1xyXG4gICAgbm9kZS50ZXh0ID0gdGhpcy50ZXh0O1xyXG4gICAgbm9kZS5pY29uID0gXCJnbHlwaGljb24gZ2x5cGhpY29uLWdsYXNzXCI7XHJcbiAgICBub2RlLnV1aWQgPSB0aGlzLmdldFByb3AoXCJpZFwiKTtcclxuICAgIG5vZGUuaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgcmV0dXJuIG5vZGU7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IFdlaXhpbnJlY29yZGZpZWxkO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2Zvcm0vY29tcG9uZW50L1dlaXhpbnJlY29yZGZpZWxkLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7OztBQUFBOzs7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXhCQTtBQXlCQTtBQUNBOzs7QUFBQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBU0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBeEVBO0FBQ0E7QUF5RUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///118\n");

/***/ }),
/* 119 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Qrcodefield = function (_Element) {\n  _inherits(Qrcodefield, _Element);\n\n  function Qrcodefield() {\n    _classCallCheck(this, Qrcodefield);\n\n    var _this = _possibleConstructorReturn(this, (Qrcodefield.__proto__ || Object.getPrototypeOf(Qrcodefield)).call(this));\n\n    _this.width = 170;\n    _this.height = 30;\n    _this.name = \"\"; //鍞竴鏍囪瘑\n    _this.text = \"qrcodefield\";\n    _this.cursor = \"default\";\n    _this.scope = \"qrcodefield\";\n    _this.id = _utility.Sequence.createUuid();\n    _this.belongId = \"\";\n    _this.preX = 0;\n    _this.preY = 0;\n    _this.moveX = 0;\n    _this.moveY = 0;\n    _this.value = \"浜岀淮鐮佹帶浠禱"; //鍊糪n    _this.discript = \"\"; //鎻忚堪\n\n    _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n    _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n    _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n    _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n\n    _this.smallwidth = 100;\n    _this.mobile = \"false\"; //鎵嬫満鍙敤\n    _this.readonlyscript = \"\"; //鍙鑴氭湰\n    _this.valuescript = \"\"; //鍐呭鑴氭湰\n    _this.calculateonrefresh = \"false\"; //閲嶈绠梊n    _this.size = 0; //澶у皬\n    _this.handletype = \"text\"; //鎵爜澶勭悊鏂瑰紡\n    return _this;\n  }\n\n  _createClass(Qrcodefield, [{\n    key: \"toHtml\",\n    value: function toHtml() {}\n  }, {\n    key: \"paint\",\n    value: function paint() {\n      // if(this.x==0&&this.y==0){\n      //     this.x=this.left;\n      //     this.y=this.top;\n      // }else{\n      //     this.left=this.x;\n      //     this.top=this.y;\n      // }\n      //console.log(panel);\n\n      var h = \"\";\n      if (this.isblock == \"true\") {\n        h = \"<div class=\\\"block\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\" style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      } else {\n        h = \"<div class=\\\"inlineBlock\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\"style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      }\n      if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n        h += \"<f-label style=\\\"line-height:\" + this.height + \"px;\\\">\" + this.labelvalue + \"</f-label>\";\n      }\n      h += \"<f-img type=\\\"text\\\" nodeid=\\\"\" + this.id + \"\\\" class=\\\"inlineBlock\\\" minwidth=\\\"\" + this.width + \"\\\" style=\\\"border:1px solid #ccc;min-width:\" + this.smallwidth + \"px;min-height:\" + this.height + \"px;\";\n      if (this.zIndex) {\n        h += \"z-index:\" + this.zIndex + \";\";\n      }\n      h += \"\\\" name=\\\"\" + this.name + \"\\\" classname=\\\"cn.myapps.runtime.dynaform.form.ejb.QRCodeField\\\" isshowlabel=\\\"\" + this.isshowlabel + \"\\\" labelvalue=\\\"\" + this.labelvalue + \"\\\"  \\n            fieldtype=\\\"VALUE_TYPE_TEXT\\\"\\n            discript=\\\"\" + this.discript + \"\\\"\\n            hiddenscript=\\\"\" + this.hiddenscript + \"\\\" hiddenvalue=\\\"\" + this.hiddenvalue + \"\\\" \\n            hiddenprintscript=\\\"\" + this.hiddenprintscript + \"\\\" \\n            printhiddenvalue=\\\"\" + this.printhiddenvalue + \"\\\"\\n            mobile=\\\"\" + this.mobile + \"\\\"\\n            readonlyscript=\\\"\" + this.readonlyscript + \"\\\"\\n            valuescript=\\\"\" + this.valuescript + \"\\\"\\n            calculateonrefresh=\\\"\" + this.calculateonrefresh + \"\\\"\\n            size=\\\"\" + this.size + \"\\\" handletype=\\\"\" + this.handletype + \"\\\"\\n            \";\n      h += \">\" + this.value + \"</f-img></div>\";\n      return h;\n    }\n  }, {\n    key: \"getNodeConfigInfo\",\n    value: function getNodeConfigInfo() {\n      var node = {};\n      node.text = this.text;\n      node.icon = \"glyphicon glyphicon-glass\";\n      node.uuid = this.getProp(\"id\");\n      node.instance = this;\n      return node;\n    }\n  }]);\n\n  return Qrcodefield;\n}(_Element3.default);\n\nexports.default = Qrcodefield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTE5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9RcmNvZGVmaWVsZC5qcz8zYzg4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFbGVtZW50IGZyb20gXCIuL0VsZW1lbnRcIjtcclxuaW1wb3J0IHsgU2VxdWVuY2UgfSBmcm9tIFwiLi4vLi4vdXRpbGl0eVwiO1xyXG5jbGFzcyBRcmNvZGVmaWVsZCBleHRlbmRzIEVsZW1lbnQge1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMud2lkdGggPSAxNzA7XHJcbiAgICB0aGlzLmhlaWdodCA9IDMwO1xyXG4gICAgdGhpcy5uYW1lID0gXCJcIjsgLy/llK/kuIDmoIfor4ZcclxuICAgIHRoaXMudGV4dCA9IFwicXJjb2RlZmllbGRcIjtcclxuICAgIHRoaXMuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLnNjb3BlID0gXCJxcmNvZGVmaWVsZFwiO1xyXG4gICAgdGhpcy5pZCA9IFNlcXVlbmNlLmNyZWF0ZVV1aWQoKTtcclxuICAgIHRoaXMuYmVsb25nSWQgPSBcIlwiO1xyXG4gICAgdGhpcy5wcmVYID0gMDtcclxuICAgIHRoaXMucHJlWSA9IDA7XHJcbiAgICB0aGlzLm1vdmVYID0gMDtcclxuICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgdGhpcy52YWx1ZSA9IFwi5LqM57u056CB5o6n5Lu2XCI7IC8v5YC8XHJcbiAgICB0aGlzLmRpc2NyaXB0ID0gXCJcIjsgLy/mj4/ov7BcclxuXHJcbiAgICB0aGlzLmhpZGRlbnNjcmlwdCA9IFwiXCI7IC8v6ZqQ6JeP5p2h5Lu26ISa5pysXHJcbiAgICB0aGlzLmhpZGRlbnZhbHVlID0gXCJcIjsgLy/pmpDol4/ml7bmmL7npLrlgLxcclxuICAgIHRoaXMuaGlkZGVucHJpbnRzY3JpcHQgPSBcIlwiOyAvL+aJk+WNsOaXtumakOiXj+adoeS7tuiEmuacrFxyXG4gICAgdGhpcy5wcmludGhpZGRlbnZhbHVlID0gXCJcIjsgLy/miZPljbDpmpDol4/ml7bmmL7npLrlgLxcclxuXHJcbiAgICB0aGlzLnNtYWxsd2lkdGggPSAxMDA7XHJcbiAgICB0aGlzLm1vYmlsZT1cImZhbHNlXCI7Ly/miYvmnLrlj6/nlKhcclxuICAgIHRoaXMucmVhZG9ubHlzY3JpcHQ9XCJcIjsvL+WPquivu+iEmuacrFxyXG4gICAgdGhpcy52YWx1ZXNjcmlwdD1cIlwiOy8v5YaF5a656ISa5pysXHJcbiAgICB0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaD1cImZhbHNlXCI7Ly/ph43orqHnrpdcclxuICAgIHRoaXMuc2l6ZT0wOy8v5aSn5bCPXHJcbiAgICB0aGlzLmhhbmRsZXR5cGU9XCJ0ZXh0XCI7Ly/miavnoIHlpITnkIbmlrnlvI9cclxuICB9XHJcbiAgdG9IdG1sKCkge31cclxuXHJcbiAgcGFpbnQoKSB7XHJcbiAgICAvLyBpZih0aGlzLng9PTAmJnRoaXMueT09MCl7XHJcbiAgICAvLyAgICAgdGhpcy54PXRoaXMubGVmdDtcclxuICAgIC8vICAgICB0aGlzLnk9dGhpcy50b3A7XHJcbiAgICAvLyB9ZWxzZXtcclxuICAgIC8vICAgICB0aGlzLmxlZnQ9dGhpcy54O1xyXG4gICAgLy8gICAgIHRoaXMudG9wPXRoaXMueTtcclxuICAgIC8vIH1cclxuICAgIC8vY29uc29sZS5sb2cocGFuZWwpO1xyXG5cclxuICAgIGxldCBoID0gXCJcIjtcclxuICAgIGlmICh0aGlzLmlzYmxvY2sgPT0gXCJ0cnVlXCIpIHtcclxuICAgICAgaCA9IGA8ZGl2IGNsYXNzPVwiYmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCIgc3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaCA9IGA8ZGl2IGNsYXNzPVwiaW5saW5lQmxvY2tcIiBpZD1cIiR7dGhpcy5pZH1cIiBkcmFnZ2FibGU9XCJ0cnVlXCJzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc3Nob3dsYWJlbCA9PSBcInRydWVcIiB8fCB0aGlzLmlzc2hvd2xhYmVsID09IHRydWUpIHtcclxuICAgICAgaCArPSBgPGYtbGFiZWwgc3R5bGU9XCJsaW5lLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPiR7dGhpcy5sYWJlbHZhbHVlfTwvZi1sYWJlbD5gO1xyXG4gICAgfVxyXG4gICAgaCArPSBgPGYtaW1nIHR5cGU9XCJ0ZXh0XCIgbm9kZWlkPVwiJHt0aGlzLmlkfVwiIGNsYXNzPVwiaW5saW5lQmxvY2tcIiBtaW53aWR0aD1cIiR7dGhpcy53aWR0aH1cIiBzdHlsZT1cImJvcmRlcjoxcHggc29saWQgI2NjYzttaW4td2lkdGg6JHt0aGlzLnNtYWxsd2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O2A7XHJcbiAgICBpZiAodGhpcy56SW5kZXgpIHtcclxuICAgICAgaCArPSBgei1pbmRleDpgICsgdGhpcy56SW5kZXggKyBgO2A7XHJcbiAgICB9XHJcbiAgICBoICs9IGBcIiBuYW1lPVwiJHt0aGlzLm5hbWV9XCIgY2xhc3NuYW1lPVwiY24ubXlhcHBzLnJ1bnRpbWUuZHluYWZvcm0uZm9ybS5lamIuUVJDb2RlRmllbGRcIiBpc3Nob3dsYWJlbD1cIiR7dGhpcy5pc3Nob3dsYWJlbH1cIiBsYWJlbHZhbHVlPVwiJHt0aGlzLmxhYmVsdmFsdWV9XCIgIFxyXG4gICAgICAgICAgICBmaWVsZHR5cGU9XCJWQUxVRV9UWVBFX1RFWFRcIlxyXG4gICAgICAgICAgICBkaXNjcmlwdD1cIiR7dGhpcy5kaXNjcmlwdH1cIlxyXG4gICAgICAgICAgICBoaWRkZW5zY3JpcHQ9XCIke3RoaXMuaGlkZGVuc2NyaXB0fVwiIGhpZGRlbnZhbHVlPVwiJHt0aGlzLmhpZGRlbnZhbHVlfVwiIFxyXG4gICAgICAgICAgICBoaWRkZW5wcmludHNjcmlwdD1cIiR7dGhpcy5oaWRkZW5wcmludHNjcmlwdH1cIiBcclxuICAgICAgICAgICAgcHJpbnRoaWRkZW52YWx1ZT1cIiR7dGhpcy5wcmludGhpZGRlbnZhbHVlfVwiXHJcbiAgICAgICAgICAgIG1vYmlsZT1cIiR7dGhpcy5tb2JpbGV9XCJcclxuICAgICAgICAgICAgcmVhZG9ubHlzY3JpcHQ9XCIke3RoaXMucmVhZG9ubHlzY3JpcHR9XCJcclxuICAgICAgICAgICAgdmFsdWVzY3JpcHQ9XCIke3RoaXMudmFsdWVzY3JpcHR9XCJcclxuICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoPVwiJHt0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaH1cIlxyXG4gICAgICAgICAgICBzaXplPVwiJHt0aGlzLnNpemV9XCIgaGFuZGxldHlwZT1cIiR7dGhpcy5oYW5kbGV0eXBlfVwiXHJcbiAgICAgICAgICAgIGA7XHJcbiAgICBoICs9IGA+YCArIHRoaXMudmFsdWUgKyBgPC9mLWltZz48L2Rpdj5gO1xyXG4gICAgcmV0dXJuIGg7XHJcbiAgfVxyXG5cclxuICBnZXROb2RlQ29uZmlnSW5mbygpIHtcclxuICAgIGxldCBub2RlID0ge307XHJcbiAgICBub2RlLnRleHQgPSB0aGlzLnRleHQ7XHJcbiAgICBub2RlLmljb24gPSBcImdseXBoaWNvbiBnbHlwaGljb24tZ2xhc3NcIjtcclxuICAgIG5vZGUudXVpZCA9IHRoaXMuZ2V0UHJvcChcImlkXCIpO1xyXG4gICAgbm9kZS5pbnN0YW5jZSA9IHRoaXM7XHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgUXJjb2RlZmllbGQ7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9jb21wb25lbnQvUXJjb2RlZmllbGQuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7Ozs7Ozs7O0FBQUE7OztBQUNBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1QkE7QUE2QkE7QUFDQTs7O0FBQUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVlBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQS9FQTtBQUNBO0FBZ0ZBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///119\n");

/***/ }),
/* 120 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Mapfield = function (_Element) {\n  _inherits(Mapfield, _Element);\n\n  function Mapfield() {\n    _classCallCheck(this, Mapfield);\n\n    var _this = _possibleConstructorReturn(this, (Mapfield.__proto__ || Object.getPrototypeOf(Mapfield)).call(this));\n\n    _this.width = 170;\n    _this.height = 30;\n    _this.name = \"\"; //鍞竴鏍囪瘑\n    _this.text = \"mapfield\";\n    _this.cursor = \"default\";\n    _this.scope = \"mapfield\";\n    _this.id = _utility.Sequence.createUuid();\n    _this.belongId = \"\";\n    _this.preX = 0;\n    _this.preY = 0;\n    _this.moveX = 0;\n    _this.moveY = 0;\n    _this.value = \"鍦板浘\"; //鍊糪n    _this.discript = \"\"; //鎻忚堪\n\n    _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n    _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n    _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n    _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n\n    _this.smallwidth = 100;\n    _this.calculateonrefresh = \"false\"; //鍒锋柊\n    _this.maptype = \"baidumap\"; //鍦板浘鎻掍欢绫诲瀷\n    _this.opentype = \"iframe\"; //鎵撳紑绫诲瀷\n    return _this;\n  }\n\n  _createClass(Mapfield, [{\n    key: \"toHtml\",\n    value: function toHtml() {}\n  }, {\n    key: \"paint\",\n    value: function paint() {\n      // if(this.x==0&&this.y==0){\n      //     this.x=this.left;\n      //     this.y=this.top;\n      // }else{\n      //     this.left=this.x;\n      //     this.top=this.y;\n      // }\n      //console.log(panel);\n\n      var h = \"\";\n      if (this.isblock == \"true\") {\n        h = \"<div class=\\\"block\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\" style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      } else {\n        h = \"<div class=\\\"inlineBlock\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\"style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      }\n      if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n        h += \"<f-label style=\\\"line-height:\" + this.height + \"px;\\\">\" + this.labelvalue + \"</f-label>\";\n      }\n      h += \"<f-img type=\\\"text\\\" nodeid=\\\"\" + this.id + \"\\\" class=\\\"inlineBlock\\\" minwidth=\\\"\" + this.width + \"\\\" style=\\\"border:1px solid #ccc;min-width:\" + this.smallwidth + \"px;min-height:\" + this.height + \"px;\";\n      if (this.zIndex) {\n        h += \"z-index:\" + this.zIndex + \";\";\n      }\n      h += \"\\\" name=\\\"\" + this.name + \"\\\" classname=\\\"cn.myapps.runtime.dynaform.form.ejb.MapField\\\" isshowlabel=\\\"\" + this.isshowlabel + \"\\\" labelvalue=\\\"\" + this.labelvalue + \"\\\"  \\n            fieldtype=\\\"VALUE_TYPE_TEXT\\\"\\n            discript=\\\"\" + this.discript + \"\\\"\\n            hiddenscript=\\\"\" + this.hiddenscript + \"\\\" hiddenvalue=\\\"\" + this.hiddenvalue + \"\\\" \\n            hiddenprintscript=\\\"\" + this.hiddenprintscript + \"\\\" \\n            printhiddenvalue=\\\"\" + this.printhiddenvalue + \"\\\"\\n            calculateonrefresh=\\\"\" + this.calculateonrefresh + \"\\\"\\n            maptype=\\\"\" + this.maptype + \"\\\"\\n            opentype=\\\"\" + this.opentype + \"\\\"\\n            \";\n      h += \">\" + this.value + \"</f-img></div>\";\n      return h;\n    }\n  }, {\n    key: \"getNodeConfigInfo\",\n    value: function getNodeConfigInfo() {\n      var node = {};\n      node.text = this.text;\n      node.icon = \"glyphicon glyphicon-glass\";\n      node.uuid = this.getProp(\"id\");\n      node.instance = this;\n      return node;\n    }\n  }]);\n\n  return Mapfield;\n}(_Element3.default);\n\nexports.default = Mapfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9NYXBmaWVsZC5qcz8zYzQwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFbGVtZW50IGZyb20gXCIuL0VsZW1lbnRcIjtcclxuaW1wb3J0IHsgU2VxdWVuY2UgfSBmcm9tIFwiLi4vLi4vdXRpbGl0eVwiO1xyXG5jbGFzcyBNYXBmaWVsZCBleHRlbmRzIEVsZW1lbnQge1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMud2lkdGggPSAxNzA7XHJcbiAgICB0aGlzLmhlaWdodCA9IDMwO1xyXG4gICAgdGhpcy5uYW1lID0gXCJcIjsgLy/llK/kuIDmoIfor4ZcclxuICAgIHRoaXMudGV4dCA9IFwibWFwZmllbGRcIjtcclxuICAgIHRoaXMuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLnNjb3BlID0gXCJtYXBmaWVsZFwiO1xyXG4gICAgdGhpcy5pZCA9IFNlcXVlbmNlLmNyZWF0ZVV1aWQoKTtcclxuICAgIHRoaXMuYmVsb25nSWQgPSBcIlwiO1xyXG4gICAgdGhpcy5wcmVYID0gMDtcclxuICAgIHRoaXMucHJlWSA9IDA7XHJcbiAgICB0aGlzLm1vdmVYID0gMDtcclxuICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgdGhpcy52YWx1ZSA9IFwi5Zyw5Zu+XCI7IC8v5YC8XHJcbiAgICB0aGlzLmRpc2NyaXB0ID0gXCJcIjsgLy/mj4/ov7BcclxuXHJcbiAgICB0aGlzLmhpZGRlbnNjcmlwdCA9IFwiXCI7IC8v6ZqQ6JeP5p2h5Lu26ISa5pysXHJcbiAgICB0aGlzLmhpZGRlbnZhbHVlID0gXCJcIjsgLy/pmpDol4/ml7bmmL7npLrlgLxcclxuICAgIHRoaXMuaGlkZGVucHJpbnRzY3JpcHQgPSBcIlwiOyAvL+aJk+WNsOaXtumakOiXj+adoeS7tuiEmuacrFxyXG4gICAgdGhpcy5wcmludGhpZGRlbnZhbHVlID0gXCJcIjsgLy/miZPljbDpmpDol4/ml7bmmL7npLrlgLxcclxuXHJcbiAgICB0aGlzLnNtYWxsd2lkdGggPSAxMDA7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaD1cImZhbHNlXCI7Ly/liLfmlrBcclxuICAgIHRoaXMubWFwdHlwZT1cImJhaWR1bWFwXCI7Ly/lnLDlm77mj5Lku7bnsbvlnotcclxuICAgIHRoaXMub3BlbnR5cGU9XCJpZnJhbWVcIjsvL+aJk+W8gOexu+Wei1xyXG4gIH1cclxuICB0b0h0bWwoKSB7fVxyXG5cclxuICBwYWludCgpIHtcclxuICAgIC8vIGlmKHRoaXMueD09MCYmdGhpcy55PT0wKXtcclxuICAgIC8vICAgICB0aGlzLng9dGhpcy5sZWZ0O1xyXG4gICAgLy8gICAgIHRoaXMueT10aGlzLnRvcDtcclxuICAgIC8vIH1lbHNle1xyXG4gICAgLy8gICAgIHRoaXMubGVmdD10aGlzLng7XHJcbiAgICAvLyAgICAgdGhpcy50b3A9dGhpcy55O1xyXG4gICAgLy8gfVxyXG4gICAgLy9jb25zb2xlLmxvZyhwYW5lbCk7XHJcblxyXG4gICAgbGV0IGggPSBcIlwiO1xyXG4gICAgaWYgKHRoaXMuaXNibG9jayA9PSBcInRydWVcIikge1xyXG4gICAgICBoID0gYDxkaXYgY2xhc3M9XCJibG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBoID0gYDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcInN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzc2hvd2xhYmVsID09IFwidHJ1ZVwiIHx8IHRoaXMuaXNzaG93bGFiZWwgPT0gdHJ1ZSkge1xyXG4gICAgICBoICs9IGA8Zi1sYWJlbCBzdHlsZT1cImxpbmUtaGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+JHt0aGlzLmxhYmVsdmFsdWV9PC9mLWxhYmVsPmA7XHJcbiAgICB9XHJcbiAgICBoICs9IGA8Zi1pbWcgdHlwZT1cInRleHRcIiBub2RlaWQ9XCIke3RoaXMuaWR9XCIgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIG1pbndpZHRoPVwiJHt0aGlzLndpZHRofVwiIHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjY2NjO21pbi13aWR0aDoke3RoaXMuc21hbGx3aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7YDtcclxuICAgIGlmICh0aGlzLnpJbmRleCkge1xyXG4gICAgICBoICs9IGB6LWluZGV4OmAgKyB0aGlzLnpJbmRleCArIGA7YDtcclxuICAgIH1cclxuICAgIGggKz0gYFwiIG5hbWU9XCIke3RoaXMubmFtZX1cIiBjbGFzc25hbWU9XCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5NYXBGaWVsZFwiIGlzc2hvd2xhYmVsPVwiJHt0aGlzLmlzc2hvd2xhYmVsfVwiIGxhYmVsdmFsdWU9XCIke3RoaXMubGFiZWx2YWx1ZX1cIiAgXHJcbiAgICAgICAgICAgIGZpZWxkdHlwZT1cIlZBTFVFX1RZUEVfVEVYVFwiXHJcbiAgICAgICAgICAgIGRpc2NyaXB0PVwiJHt0aGlzLmRpc2NyaXB0fVwiXHJcbiAgICAgICAgICAgIGhpZGRlbnNjcmlwdD1cIiR7dGhpcy5oaWRkZW5zY3JpcHR9XCIgaGlkZGVudmFsdWU9XCIke3RoaXMuaGlkZGVudmFsdWV9XCIgXHJcbiAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0PVwiJHt0aGlzLmhpZGRlbnByaW50c2NyaXB0fVwiIFxyXG4gICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlPVwiJHt0aGlzLnByaW50aGlkZGVudmFsdWV9XCJcclxuICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoPVwiJHt0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaH1cIlxyXG4gICAgICAgICAgICBtYXB0eXBlPVwiJHt0aGlzLm1hcHR5cGV9XCJcclxuICAgICAgICAgICAgb3BlbnR5cGU9XCIke3RoaXMub3BlbnR5cGV9XCJcclxuICAgICAgICAgICAgYDtcclxuICAgIGggKz0gYD5gICsgdGhpcy52YWx1ZSArIGA8L2YtaW1nPjwvZGl2PmA7XHJcbiAgICByZXR1cm4gaDtcclxuICB9XHJcblxyXG4gIGdldE5vZGVDb25maWdJbmZvKCkge1xyXG4gICAgbGV0IG5vZGUgPSB7fTtcclxuICAgIG5vZGUudGV4dCA9IHRoaXMudGV4dDtcclxuICAgIG5vZGUuaWNvbiA9IFwiZ2x5cGhpY29uIGdseXBoaWNvbi1nbGFzc1wiO1xyXG4gICAgbm9kZS51dWlkID0gdGhpcy5nZXRQcm9wKFwiaWRcIik7XHJcbiAgICBub2RlLmluc3RhbmNlID0gdGhpcztcclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBNYXBmaWVsZDtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9mb3JtL2NvbXBvbmVudC9NYXBmaWVsZC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFBQTs7O0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXpCQTtBQTBCQTtBQUNBOzs7QUFBQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBMUVBO0FBQ0E7QUEyRUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///120\n");

/***/ }),
/* 121 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Genericwordfield = function (_Element) {\n  _inherits(Genericwordfield, _Element);\n\n  function Genericwordfield() {\n    _classCallCheck(this, Genericwordfield);\n\n    var _this = _possibleConstructorReturn(this, (Genericwordfield.__proto__ || Object.getPrototypeOf(Genericwordfield)).call(this));\n\n    _this.width = 170;\n    _this.height = 30;\n    _this.name = \"\"; //鍞竴鏍囪瘑\n    _this.text = \"genericwordfield\";\n    _this.cursor = \"default\";\n    _this.scope = \"genericwordfield\";\n    _this.id = _utility.Sequence.createUuid();\n    _this.belongId = \"\";\n    _this.preX = 0;\n    _this.preY = 0;\n    _this.moveX = 0;\n    _this.moveY = 0;\n    _this.value = \"閫氱敤WORD缂栬緫鍣╘"; //鍊糪n    _this.discript = \"\"; //鎻忚堪\n\n    _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n    _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n    _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n    _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n\n    _this.smallwidth = 100;\n    _this.calculateonrefresh = \"false\"; //閲嶈绠梊n    _this.readonlyscript = \"\"; //鍙鑴氭湰\n    _this.opentype = \"3\"; //鏄剧ず鏂瑰紡\n    return _this;\n  }\n\n  _createClass(Genericwordfield, [{\n    key: \"toHtml\",\n    value: function toHtml() {}\n  }, {\n    key: \"paint\",\n    value: function paint() {\n      // if(this.x==0&&this.y==0){\n      //     this.x=this.left;\n      //     this.y=this.top;\n      // }else{\n      //     this.left=this.x;\n      //     this.top=this.y;\n      // }\n      //console.log(panel);\n\n      var h = \"\";\n      if (this.isblock == \"true\") {\n        h = \"<div class=\\\"block\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\" style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      } else {\n        h = \"<div class=\\\"inlineBlock\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\"style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      }\n      if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n        h += \"<f-label style=\\\"line-height:\" + this.height + \"px;\\\">\" + this.labelvalue + \"</f-label>\";\n      }\n      h += \"<f-img type=\\\"text\\\" nodeid=\\\"\" + this.id + \"\\\" class=\\\"inlineBlock\\\" minwidth=\\\"\" + this.width + \"\\\" style=\\\"border:1px solid #ccc;min-width:\" + this.smallwidth + \"px;min-height:\" + this.height + \"px;\";\n      if (this.zIndex) {\n        h += \"z-index:\" + this.zIndex + \";\";\n      }\n      h += \"\\\" name=\\\"\" + this.name + \"\\\" classname=\\\"cn.myapps.runtime.dynaform.form.ejb.GenericWordField\\\" isshowlabel=\\\"\" + this.isshowlabel + \"\\\" labelvalue=\\\"\" + this.labelvalue + \"\\\"  \\n            fieldtype=\\\"VALUE_TYPE_TEXT\\\"\\n            discript=\\\"\" + this.discript + \"\\\"\\n            hiddenscript=\\\"\" + this.hiddenscript + \"\\\" hiddenvalue=\\\"\" + this.hiddenvalue + \"\\\" \\n            hiddenprintscript=\\\"\" + this.hiddenprintscript + \"\\\" \\n            printhiddenvalue=\\\"\" + this.printhiddenvalue + \"\\\"\\n            calculateonrefresh=\\\"\" + this.calculateonrefresh + \"\\\"\\n            readonlyscript=\\\"\" + this.readonlyscript + \"\\\"\\n            opentype=\\\"\" + this.opentype + \"\\\"\\n            \";\n      h += \">\" + this.value + \"</f-img></div>\";\n      return h;\n    }\n  }, {\n    key: \"getNodeConfigInfo\",\n    value: function getNodeConfigInfo() {\n      var node = {};\n      node.text = this.text;\n      node.icon = \"glyphicon glyphicon-glass\";\n      node.uuid = this.getProp(\"id\");\n      node.instance = this;\n      return node;\n    }\n  }]);\n\n  return Genericwordfield;\n}(_Element3.default);\n\nexports.default = Genericwordfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9HZW5lcmljd29yZGZpZWxkLmpzPzM3NDMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVsZW1lbnQgZnJvbSBcIi4vRWxlbWVudFwiO1xyXG5pbXBvcnQgeyBTZXF1ZW5jZSB9IGZyb20gXCIuLi8uLi91dGlsaXR5XCI7XHJcbmNsYXNzIEdlbmVyaWN3b3JkZmllbGQgZXh0ZW5kcyBFbGVtZW50IHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLndpZHRoID0gMTcwO1xyXG4gICAgdGhpcy5oZWlnaHQgPSAzMDtcclxuICAgIHRoaXMubmFtZSA9IFwiXCI7IC8v5ZSv5LiA5qCH6K+GXHJcbiAgICB0aGlzLnRleHQgPSBcImdlbmVyaWN3b3JkZmllbGRcIjtcclxuICAgIHRoaXMuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLnNjb3BlID0gXCJnZW5lcmljd29yZGZpZWxkXCI7XHJcbiAgICB0aGlzLmlkID0gU2VxdWVuY2UuY3JlYXRlVXVpZCgpO1xyXG4gICAgdGhpcy5iZWxvbmdJZCA9IFwiXCI7XHJcbiAgICB0aGlzLnByZVggPSAwO1xyXG4gICAgdGhpcy5wcmVZID0gMDtcclxuICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgdGhpcy5tb3ZlWSA9IDA7XHJcbiAgICB0aGlzLnZhbHVlID0gXCLpgJrnlKhXT1JE57yW6L6R5ZmoXCI7IC8v5YC8XHJcbiAgICB0aGlzLmRpc2NyaXB0ID0gXCJcIjsgLy/mj4/ov7BcclxuXHJcbiAgICB0aGlzLmhpZGRlbnNjcmlwdCA9IFwiXCI7IC8v6ZqQ6JeP5p2h5Lu26ISa5pysXHJcbiAgICB0aGlzLmhpZGRlbnZhbHVlID0gXCJcIjsgLy/pmpDol4/ml7bmmL7npLrlgLxcclxuICAgIHRoaXMuaGlkZGVucHJpbnRzY3JpcHQgPSBcIlwiOyAvL+aJk+WNsOaXtumakOiXj+adoeS7tuiEmuacrFxyXG4gICAgdGhpcy5wcmludGhpZGRlbnZhbHVlID0gXCJcIjsgLy/miZPljbDpmpDol4/ml7bmmL7npLrlgLxcclxuXHJcbiAgICB0aGlzLnNtYWxsd2lkdGggPSAxMDA7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZW9ucmVmcmVzaD1cImZhbHNlXCI7Ly/ph43orqHnrpdcclxuICAgIHRoaXMucmVhZG9ubHlzY3JpcHQ9XCJcIjsvL+WPquivu+iEmuacrFxyXG4gICAgdGhpcy5vcGVudHlwZT1cIjNcIjsvL+aYvuekuuaWueW8j1xyXG4gIH1cclxuICB0b0h0bWwoKSB7fVxyXG5cclxuICBwYWludCgpIHtcclxuICAgIC8vIGlmKHRoaXMueD09MCYmdGhpcy55PT0wKXtcclxuICAgIC8vICAgICB0aGlzLng9dGhpcy5sZWZ0O1xyXG4gICAgLy8gICAgIHRoaXMueT10aGlzLnRvcDtcclxuICAgIC8vIH1lbHNle1xyXG4gICAgLy8gICAgIHRoaXMubGVmdD10aGlzLng7XHJcbiAgICAvLyAgICAgdGhpcy50b3A9dGhpcy55O1xyXG4gICAgLy8gfVxyXG4gICAgLy9jb25zb2xlLmxvZyhwYW5lbCk7XHJcblxyXG4gICAgbGV0IGggPSBcIlwiO1xyXG4gICAgaWYgKHRoaXMuaXNibG9jayA9PSBcInRydWVcIikge1xyXG4gICAgICBoID0gYDxkaXYgY2xhc3M9XCJibG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBoID0gYDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcInN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzc2hvd2xhYmVsID09IFwidHJ1ZVwiIHx8IHRoaXMuaXNzaG93bGFiZWwgPT0gdHJ1ZSkge1xyXG4gICAgICBoICs9IGA8Zi1sYWJlbCBzdHlsZT1cImxpbmUtaGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+JHt0aGlzLmxhYmVsdmFsdWV9PC9mLWxhYmVsPmA7XHJcbiAgICB9XHJcbiAgICBoICs9IGA8Zi1pbWcgdHlwZT1cInRleHRcIiBub2RlaWQ9XCIke3RoaXMuaWR9XCIgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIG1pbndpZHRoPVwiJHt0aGlzLndpZHRofVwiIHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjY2NjO21pbi13aWR0aDoke3RoaXMuc21hbGx3aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7YDtcclxuICAgIGlmICh0aGlzLnpJbmRleCkge1xyXG4gICAgICBoICs9IGB6LWluZGV4OmAgKyB0aGlzLnpJbmRleCArIGA7YDtcclxuICAgIH1cclxuICAgIGggKz0gYFwiIG5hbWU9XCIke3RoaXMubmFtZX1cIiBjbGFzc25hbWU9XCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5HZW5lcmljV29yZEZpZWxkXCIgaXNzaG93bGFiZWw9XCIke3RoaXMuaXNzaG93bGFiZWx9XCIgbGFiZWx2YWx1ZT1cIiR7dGhpcy5sYWJlbHZhbHVlfVwiICBcclxuICAgICAgICAgICAgZmllbGR0eXBlPVwiVkFMVUVfVFlQRV9URVhUXCJcclxuICAgICAgICAgICAgZGlzY3JpcHQ9XCIke3RoaXMuZGlzY3JpcHR9XCJcclxuICAgICAgICAgICAgaGlkZGVuc2NyaXB0PVwiJHt0aGlzLmhpZGRlbnNjcmlwdH1cIiBoaWRkZW52YWx1ZT1cIiR7dGhpcy5oaWRkZW52YWx1ZX1cIiBcclxuICAgICAgICAgICAgaGlkZGVucHJpbnRzY3JpcHQ9XCIke3RoaXMuaGlkZGVucHJpbnRzY3JpcHR9XCIgXHJcbiAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU9XCIke3RoaXMucHJpbnRoaWRkZW52YWx1ZX1cIlxyXG4gICAgICAgICAgICBjYWxjdWxhdGVvbnJlZnJlc2g9XCIke3RoaXMuY2FsY3VsYXRlb25yZWZyZXNofVwiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5c2NyaXB0PVwiJHt0aGlzLnJlYWRvbmx5c2NyaXB0fVwiXHJcbiAgICAgICAgICAgIG9wZW50eXBlPVwiJHt0aGlzLm9wZW50eXBlfVwiXHJcbiAgICAgICAgICAgIGA7XHJcbiAgICBoICs9IGA+YCArIHRoaXMudmFsdWUgKyBgPC9mLWltZz48L2Rpdj5gO1xyXG4gICAgcmV0dXJuIGg7XHJcbiAgfVxyXG5cclxuICBnZXROb2RlQ29uZmlnSW5mbygpIHtcclxuICAgIGxldCBub2RlID0ge307XHJcbiAgICBub2RlLnRleHQgPSB0aGlzLnRleHQ7XHJcbiAgICBub2RlLmljb24gPSBcImdseXBoaWNvbiBnbHlwaGljb24tZ2xhc3NcIjtcclxuICAgIG5vZGUudXVpZCA9IHRoaXMuZ2V0UHJvcChcImlkXCIpO1xyXG4gICAgbm9kZS5pbnN0YW5jZSA9IHRoaXM7XHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgR2VuZXJpY3dvcmRmaWVsZDtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9mb3JtL2NvbXBvbmVudC9HZW5lcmljd29yZGZpZWxkLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7OztBQUFBOzs7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBekJBO0FBMEJBO0FBQ0E7OztBQUFBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFVQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUExRUE7QUFDQTtBQTJFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///121\n");

/***/ }),
/* 122 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Htmleditorfield = function (_Element) {\n  _inherits(Htmleditorfield, _Element);\n\n  function Htmleditorfield() {\n    _classCallCheck(this, Htmleditorfield);\n\n    var _this = _possibleConstructorReturn(this, (Htmleditorfield.__proto__ || Object.getPrototypeOf(Htmleditorfield)).call(this));\n\n    _this.width = 200;\n    _this.height = 30;\n    _this.name = \"\"; //鍞竴鏍囪瘑\n    _this.text = \"htmleditorfield\";\n    _this.cursor = \"default\";\n    _this.scope = \"htmleditorfield\";\n    _this.id = _utility.Sequence.createUuid();\n    _this.belongId = \"\";\n    _this.preX = 0;\n    _this.preY = 0;\n    _this.moveX = 0;\n    _this.moveY = 0;\n    _this.value = \"HTML缂栬緫鍣╘"; //鍊糪n    _this.discript = \"\"; //鎻忚堪\n\n    _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n    _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n    _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n    _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n\n    _this.smallwidth = 130;\n    _this.calculateonrefresh = \"false\"; //閲嶈绠梊n    _this.readonlyscript = \"\"; //鍙鑴氭湰\n    _this.mobile = \"true\"; //鎵嬫満鍙敤\n    _this.areawidth = \"\"; //瀹絓n    _this.areaheight = \"\"; //楂榎n    _this.editmode = \"0\"; //鍊肩殑鏂瑰紡\n    _this.processdescription = \"\"; //鍊艰璁¤剼鏈殑鍊糪n    _this.valuescript = \"\"; //鑴氭湰鍊糪n    _this.isdefaultvalue = \"false\"; //鏄惁鏄粯璁ゅ€糪n\n\n    return _this;\n  }\n\n  _createClass(Htmleditorfield, [{\n    key: \"toHtml\",\n    value: function toHtml() {}\n  }, {\n    key: \"paint\",\n    value: function paint() {\n      // if(this.x==0&&this.y==0){\n      //     this.x=this.left;\n      //     this.y=this.top;\n      // }else{\n      //     this.left=this.x;\n      //     this.top=this.y;\n      // }\n      //console.log(panel);\n\n      var h = \"\";\n      if (this.isblock == \"true\") {\n        h = \"<div class=\\\"block\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\" style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      } else {\n        h = \"<div class=\\\"inlineBlock\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\"style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      }\n      if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n        h += \"<f-label style=\\\"line-height:\" + this.height + \"px;\\\">\" + this.labelvalue + \"</f-label>\";\n      }\n      h += \"<f-img type=\\\"text\\\" nodeid=\\\"\" + this.id + \"\\\" class=\\\"inlineBlock\\\" minwidth=\\\"\" + this.width + \"\\\" style=\\\"border:1px solid #ccc;min-width:\" + this.smallwidth + \"px;min-height:\" + this.height + \"px;\";\n      if (this.zIndex) {\n        h += \"z-index:\" + this.zIndex + \";\";\n      }\n      h += \"\\\" name=\\\"\" + this.name + \"\\\" classname=\\\"cn.myapps.runtime.dynaform.form.ejb.HTMLEditorField\\\" isshowlabel=\\\"\" + this.isshowlabel + \"\\\" labelvalue=\\\"\" + this.labelvalue + \"\\\"  \\n            fieldtype=\\\"VALUE_TYPE_TEXT\\\"\\n            discript=\\\"\" + this.discript + \"\\\"\\n            hiddenscript=\\\"\" + this.hiddenscript + \"\\\" hiddenvalue=\\\"\" + this.hiddenvalue + \"\\\" \\n            hiddenprintscript=\\\"\" + this.hiddenprintscript + \"\\\" \\n            printhiddenvalue=\\\"\" + this.printhiddenvalue + \"\\\"\\n            calculateonrefresh=\\\"\" + this.calculateonrefresh + \"\\\"\\n            readonlyscript=\\\"\" + this.readonlyscript + \"\\\"\\n            mobile=\\\"\" + this.mobile + \"\\\"\\n            editmode=\\\"\" + this.editmode + \"\\\"\\n            areawidth=\\\"\" + this.areawidth + \"\\\"\\n            areaheight=\\\"\" + this.areaheight + \"\\\"\\n            processdescription=\\\"\" + this.processdescription + \"\\\"\\n            valuescript=\\\"\" + this.valuescript + \"\\\"\\n            isdefaultvalue=\\\"\" + this.isdefaultvalue + \"\\\"\\n            \";\n      h += \">\" + this.value + \"</f-img></div>\";\n      return h;\n    }\n  }, {\n    key: \"getNodeConfigInfo\",\n    value: function getNodeConfigInfo() {\n      var node = {};\n      node.text = this.text;\n      node.icon = \"glyphicon glyphicon-glass\";\n      node.uuid = this.getProp(\"id\");\n      node.instance = this;\n      return node;\n    }\n  }]);\n\n  return Htmleditorfield;\n}(_Element3.default);\n\nexports.default = Htmleditorfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9IdG1sZWRpdG9yZmllbGQuanM/OWIyOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRWxlbWVudCBmcm9tIFwiLi9FbGVtZW50XCI7XHJcbmltcG9ydCB7IFNlcXVlbmNlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdHlcIjtcclxuY2xhc3MgSHRtbGVkaXRvcmZpZWxkIGV4dGVuZHMgRWxlbWVudCB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy53aWR0aCA9IDIwMDtcclxuICAgIHRoaXMuaGVpZ2h0ID0gMzA7XHJcbiAgICB0aGlzLm5hbWUgPSBcIlwiOyAvL+WUr+S4gOagh+ivhlxyXG4gICAgdGhpcy50ZXh0ID0gXCJodG1sZWRpdG9yZmllbGRcIjtcclxuICAgIHRoaXMuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLnNjb3BlID0gXCJodG1sZWRpdG9yZmllbGRcIjtcclxuICAgIHRoaXMuaWQgPSBTZXF1ZW5jZS5jcmVhdGVVdWlkKCk7XHJcbiAgICB0aGlzLmJlbG9uZ0lkID0gXCJcIjtcclxuICAgIHRoaXMucHJlWCA9IDA7XHJcbiAgICB0aGlzLnByZVkgPSAwO1xyXG4gICAgdGhpcy5tb3ZlWCA9IDA7XHJcbiAgICB0aGlzLm1vdmVZID0gMDtcclxuICAgIHRoaXMudmFsdWUgPSBcIkhUTUznvJbovpHlmahcIjsgLy/lgLxcclxuICAgIHRoaXMuZGlzY3JpcHQgPSBcIlwiOyAvL+aPj+i/sFxyXG5cclxuICAgIHRoaXMuaGlkZGVuc2NyaXB0ID0gXCJcIjsgLy/pmpDol4/mnaHku7bohJrmnKxcclxuICAgIHRoaXMuaGlkZGVudmFsdWUgPSBcIlwiOyAvL+makOiXj+aXtuaYvuekuuWAvFxyXG4gICAgdGhpcy5oaWRkZW5wcmludHNjcmlwdCA9IFwiXCI7IC8v5omT5Y2w5pe26ZqQ6JeP5p2h5Lu26ISa5pysXHJcbiAgICB0aGlzLnByaW50aGlkZGVudmFsdWUgPSBcIlwiOyAvL+aJk+WNsOmakOiXj+aXtuaYvuekuuWAvFxyXG5cclxuICAgIHRoaXMuc21hbGx3aWR0aCA9IDEzMDtcclxuICAgIHRoaXMuY2FsY3VsYXRlb25yZWZyZXNoPVwiZmFsc2VcIjsvL+mHjeiuoeeul1xyXG4gICAgdGhpcy5yZWFkb25seXNjcmlwdD1cIlwiOy8v5Y+q6K+76ISa5pysXHJcbiAgICB0aGlzLm1vYmlsZT1cInRydWVcIjsvL+aJi+acuuWPr+eUqFxyXG4gICAgdGhpcy5hcmVhd2lkdGg9XCJcIjsvL+WuvVxyXG4gICAgdGhpcy5hcmVhaGVpZ2h0PVwiXCI7Ly/pq5hcclxuICAgIHRoaXMuZWRpdG1vZGU9XCIwXCI7Ly/lgLznmoTmlrnlvI9cclxuICAgIHRoaXMucHJvY2Vzc2Rlc2NyaXB0aW9uPVwiXCI7Ly/lgLzorr7orqHohJrmnKznmoTlgLxcclxuICAgIHRoaXMudmFsdWVzY3JpcHQgPSBcIlwiOyAvL+iEmuacrOWAvFxyXG4gICAgdGhpcy5pc2RlZmF1bHR2YWx1ZSA9IFwiZmFsc2VcIjsgLy/mmK/lkKbmmK/pu5jorqTlgLxcclxuXHJcblxyXG4gIH1cclxuICB0b0h0bWwoKSB7fVxyXG5cclxuICBwYWludCgpIHtcclxuICAgIC8vIGlmKHRoaXMueD09MCYmdGhpcy55PT0wKXtcclxuICAgIC8vICAgICB0aGlzLng9dGhpcy5sZWZ0O1xyXG4gICAgLy8gICAgIHRoaXMueT10aGlzLnRvcDtcclxuICAgIC8vIH1lbHNle1xyXG4gICAgLy8gICAgIHRoaXMubGVmdD10aGlzLng7XHJcbiAgICAvLyAgICAgdGhpcy50b3A9dGhpcy55O1xyXG4gICAgLy8gfVxyXG4gICAgLy9jb25zb2xlLmxvZyhwYW5lbCk7XHJcblxyXG4gICAgbGV0IGggPSBcIlwiO1xyXG4gICAgaWYgKHRoaXMuaXNibG9jayA9PSBcInRydWVcIikge1xyXG4gICAgICBoID0gYDxkaXYgY2xhc3M9XCJibG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBoID0gYDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcInN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzc2hvd2xhYmVsID09IFwidHJ1ZVwiIHx8IHRoaXMuaXNzaG93bGFiZWwgPT0gdHJ1ZSkge1xyXG4gICAgICBoICs9IGA8Zi1sYWJlbCBzdHlsZT1cImxpbmUtaGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+JHt0aGlzLmxhYmVsdmFsdWV9PC9mLWxhYmVsPmA7XHJcbiAgICB9XHJcbiAgICBoICs9IGA8Zi1pbWcgdHlwZT1cInRleHRcIiBub2RlaWQ9XCIke3RoaXMuaWR9XCIgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIG1pbndpZHRoPVwiJHt0aGlzLndpZHRofVwiIHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjY2NjO21pbi13aWR0aDoke3RoaXMuc21hbGx3aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7YDtcclxuICAgIGlmICh0aGlzLnpJbmRleCkge1xyXG4gICAgICBoICs9IGB6LWluZGV4OmAgKyB0aGlzLnpJbmRleCArIGA7YDtcclxuICAgIH1cclxuICAgIGggKz0gYFwiIG5hbWU9XCIke3RoaXMubmFtZX1cIiBjbGFzc25hbWU9XCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5IVE1MRWRpdG9yRmllbGRcIiBpc3Nob3dsYWJlbD1cIiR7dGhpcy5pc3Nob3dsYWJlbH1cIiBsYWJlbHZhbHVlPVwiJHt0aGlzLmxhYmVsdmFsdWV9XCIgIFxyXG4gICAgICAgICAgICBmaWVsZHR5cGU9XCJWQUxVRV9UWVBFX1RFWFRcIlxyXG4gICAgICAgICAgICBkaXNjcmlwdD1cIiR7dGhpcy5kaXNjcmlwdH1cIlxyXG4gICAgICAgICAgICBoaWRkZW5zY3JpcHQ9XCIke3RoaXMuaGlkZGVuc2NyaXB0fVwiIGhpZGRlbnZhbHVlPVwiJHt0aGlzLmhpZGRlbnZhbHVlfVwiIFxyXG4gICAgICAgICAgICBoaWRkZW5wcmludHNjcmlwdD1cIiR7dGhpcy5oaWRkZW5wcmludHNjcmlwdH1cIiBcclxuICAgICAgICAgICAgcHJpbnRoaWRkZW52YWx1ZT1cIiR7dGhpcy5wcmludGhpZGRlbnZhbHVlfVwiXHJcbiAgICAgICAgICAgIGNhbGN1bGF0ZW9ucmVmcmVzaD1cIiR7dGhpcy5jYWxjdWxhdGVvbnJlZnJlc2h9XCJcclxuICAgICAgICAgICAgcmVhZG9ubHlzY3JpcHQ9XCIke3RoaXMucmVhZG9ubHlzY3JpcHR9XCJcclxuICAgICAgICAgICAgbW9iaWxlPVwiJHt0aGlzLm1vYmlsZX1cIlxyXG4gICAgICAgICAgICBlZGl0bW9kZT1cIiR7dGhpcy5lZGl0bW9kZX1cIlxyXG4gICAgICAgICAgICBhcmVhd2lkdGg9XCIke3RoaXMuYXJlYXdpZHRofVwiXHJcbiAgICAgICAgICAgIGFyZWFoZWlnaHQ9XCIke3RoaXMuYXJlYWhlaWdodH1cIlxyXG4gICAgICAgICAgICBwcm9jZXNzZGVzY3JpcHRpb249XCIke3RoaXMucHJvY2Vzc2Rlc2NyaXB0aW9ufVwiXHJcbiAgICAgICAgICAgIHZhbHVlc2NyaXB0PVwiJHt0aGlzLnZhbHVlc2NyaXB0fVwiXHJcbiAgICAgICAgICAgIGlzZGVmYXVsdHZhbHVlPVwiJHt0aGlzLmlzZGVmYXVsdHZhbHVlfVwiXHJcbiAgICAgICAgICAgIGA7XHJcbiAgICBoICs9IGA+YCArIHRoaXMudmFsdWUgKyBgPC9mLWltZz48L2Rpdj5gO1xyXG4gICAgcmV0dXJuIGg7XHJcbiAgfVxyXG5cclxuICBnZXROb2RlQ29uZmlnSW5mbygpIHtcclxuICAgIGxldCBub2RlID0ge307XHJcbiAgICBub2RlLnRleHQgPSB0aGlzLnRleHQ7XHJcbiAgICBub2RlLmljb24gPSBcImdseXBoaWNvbiBnbHlwaGljb24tZ2xhc3NcIjtcclxuICAgIG5vZGUudXVpZCA9IHRoaXMuZ2V0UHJvcChcImlkXCIpO1xyXG4gICAgbm9kZS5pbnN0YW5jZSA9IHRoaXM7XHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgSHRtbGVkaXRvcmZpZWxkO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2Zvcm0vY29tcG9uZW50L0h0bWxlZGl0b3JmaWVsZC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFBQTs7O0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqQ0E7QUFrQ0E7QUFDQTs7O0FBQUE7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWdCQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUF4RkE7QUFDQTtBQXlGQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///122\n");

/***/ }),
/* 123 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Flowhistoryfield = function (_Element) {\n  _inherits(Flowhistoryfield, _Element);\n\n  function Flowhistoryfield() {\n    _classCallCheck(this, Flowhistoryfield);\n\n    var _this = _possibleConstructorReturn(this, (Flowhistoryfield.__proto__ || Object.getPrototypeOf(Flowhistoryfield)).call(this));\n\n    _this.width = 170;\n    _this.height = 30;\n    _this.name = \"\"; //鍞竴鏍囪瘑\n    _this.text = \"flowhistoryfield\";\n    _this.cursor = \"default\";\n    _this.scope = \"flowhistoryfield\";\n    _this.id = _utility.Sequence.createUuid();\n    _this.belongId = \"\";\n    _this.preX = 0;\n    _this.preY = 0;\n    _this.moveX = 0;\n    _this.moveY = 0;\n    _this.value = \"娴佺▼鍘嗗彶\"; //鍊糪n    _this.discript = \"\"; //鎻忚堪\n\n    _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n    _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n    _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n    _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n\n    _this.smallwidth = 100;\n    _this.mobile = \"false\"; //鎵嬫満鍙敤\n    _this.showmode = \"\"; //灞曠幇鏂瑰紡\n    return _this;\n  }\n\n  _createClass(Flowhistoryfield, [{\n    key: \"toHtml\",\n    value: function toHtml() {}\n  }, {\n    key: \"paint\",\n    value: function paint() {\n      // if(this.x==0&&this.y==0){\n      //     this.x=this.left;\n      //     this.y=this.top;\n      // }else{\n      //     this.left=this.x;\n      //     this.top=this.y;\n      // }\n      //console.log(panel);\n\n      var h = \"\";\n      if (this.isblock == \"true\") {\n        h = \"<div class=\\\"block\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\" style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      } else {\n        h = \"<div class=\\\"inlineBlock\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\"style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      }\n      if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n        h += \"<f-label style=\\\"line-height:\" + this.height + \"px;\\\">\" + this.labelvalue + \"</f-label>\";\n      }\n      h += \"<f-img type=\\\"text\\\" nodeid=\\\"\" + this.id + \"\\\" class=\\\"inlineBlock\\\" minwidth=\\\"\" + this.width + \"\\\" style=\\\"border:1px solid #ccc;min-width:\" + this.smallwidth + \"px;min-height:\" + this.height + \"px;\";\n      if (this.zIndex) {\n        h += \"z-index:\" + this.zIndex + \";\";\n      }\n      h += \"\\\" name=\\\"\" + this.name + \"\\\" classname=\\\"cn.myapps.runtime.dynaform.form.ejb.FlowHistoryField\\\" isshowlabel=\\\"\" + this.isshowlabel + \"\\\" labelvalue=\\\"\" + this.labelvalue + \"\\\"  \\n            fieldtype=\\\"VALUE_TYPE_TEXT\\\"\\n            discript=\\\"\" + this.discript + \"\\\"\\n            hiddenscript=\\\"\" + this.hiddenscript + \"\\\" hiddenvalue=\\\"\" + this.hiddenvalue + \"\\\" \\n            hiddenprintscript=\\\"\" + this.hiddenprintscript + \"\\\" \\n            printhiddenvalue=\\\"\" + this.printhiddenvalue + \"\\\"\\n            mobile=\\\"\" + this.mobile + \"\\\"\\n            showmode=\\\"\" + this.showmode + \"\\\"\\n            \";\n      h += \">\" + this.value + \"</f-img></div>\";\n      return h;\n    }\n  }, {\n    key: \"getNodeConfigInfo\",\n    value: function getNodeConfigInfo() {\n      var node = {};\n      node.text = this.text;\n      node.icon = \"glyphicon glyphicon-glass\";\n      node.uuid = this.getProp(\"id\");\n      node.instance = this;\n      return node;\n    }\n  }]);\n\n  return Flowhistoryfield;\n}(_Element3.default);\n\nexports.default = Flowhistoryfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9GbG93aGlzdG9yeWZpZWxkLmpzPzYwMmEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVsZW1lbnQgZnJvbSBcIi4vRWxlbWVudFwiO1xyXG5pbXBvcnQgeyBTZXF1ZW5jZSB9IGZyb20gXCIuLi8uLi91dGlsaXR5XCI7XHJcbmNsYXNzIEZsb3doaXN0b3J5ZmllbGQgZXh0ZW5kcyBFbGVtZW50IHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLndpZHRoID0gMTcwO1xyXG4gICAgdGhpcy5oZWlnaHQgPSAzMDtcclxuICAgIHRoaXMubmFtZSA9IFwiXCI7IC8v5ZSv5LiA5qCH6K+GXHJcbiAgICB0aGlzLnRleHQgPSBcImZsb3doaXN0b3J5ZmllbGRcIjtcclxuICAgIHRoaXMuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLnNjb3BlID0gXCJmbG93aGlzdG9yeWZpZWxkXCI7XHJcbiAgICB0aGlzLmlkID0gU2VxdWVuY2UuY3JlYXRlVXVpZCgpO1xyXG4gICAgdGhpcy5iZWxvbmdJZCA9IFwiXCI7XHJcbiAgICB0aGlzLnByZVggPSAwO1xyXG4gICAgdGhpcy5wcmVZID0gMDtcclxuICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgdGhpcy5tb3ZlWSA9IDA7XHJcbiAgICB0aGlzLnZhbHVlID0gXCLmtYHnqIvljoblj7JcIjsgLy/lgLxcclxuICAgIHRoaXMuZGlzY3JpcHQgPSBcIlwiOyAvL+aPj+i/sFxyXG5cclxuICAgIHRoaXMuaGlkZGVuc2NyaXB0ID0gXCJcIjsgLy/pmpDol4/mnaHku7bohJrmnKxcclxuICAgIHRoaXMuaGlkZGVudmFsdWUgPSBcIlwiOyAvL+makOiXj+aXtuaYvuekuuWAvFxyXG4gICAgdGhpcy5oaWRkZW5wcmludHNjcmlwdCA9IFwiXCI7IC8v5omT5Y2w5pe26ZqQ6JeP5p2h5Lu26ISa5pysXHJcbiAgICB0aGlzLnByaW50aGlkZGVudmFsdWUgPSBcIlwiOyAvL+aJk+WNsOmakOiXj+aXtuaYvuekuuWAvFxyXG5cclxuICAgIHRoaXMuc21hbGx3aWR0aCA9IDEwMDtcclxuICAgIHRoaXMubW9iaWxlPVwiZmFsc2VcIjsvL+aJi+acuuWPr+eUqFxyXG4gICAgdGhpcy5zaG93bW9kZT1cIlwiOy8v5bGV546w5pa55byPXHJcbiAgfVxyXG4gIHRvSHRtbCgpIHt9XHJcblxyXG4gIHBhaW50KCkge1xyXG4gICAgLy8gaWYodGhpcy54PT0wJiZ0aGlzLnk9PTApe1xyXG4gICAgLy8gICAgIHRoaXMueD10aGlzLmxlZnQ7XHJcbiAgICAvLyAgICAgdGhpcy55PXRoaXMudG9wO1xyXG4gICAgLy8gfWVsc2V7XHJcbiAgICAvLyAgICAgdGhpcy5sZWZ0PXRoaXMueDtcclxuICAgIC8vICAgICB0aGlzLnRvcD10aGlzLnk7XHJcbiAgICAvLyB9XHJcbiAgICAvL2NvbnNvbGUubG9nKHBhbmVsKTtcclxuXHJcbiAgICBsZXQgaCA9IFwiXCI7XHJcbiAgICBpZiAodGhpcy5pc2Jsb2NrID09IFwidHJ1ZVwiKSB7XHJcbiAgICAgIGggPSBgPGRpdiBjbGFzcz1cImJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIHN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGggPSBgPGRpdiBjbGFzcz1cImlubGluZUJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwic3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNzaG93bGFiZWwgPT0gXCJ0cnVlXCIgfHwgdGhpcy5pc3Nob3dsYWJlbCA9PSB0cnVlKSB7XHJcbiAgICAgIGggKz0gYDxmLWxhYmVsIHN0eWxlPVwibGluZS1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj4ke3RoaXMubGFiZWx2YWx1ZX08L2YtbGFiZWw+YDtcclxuICAgIH1cclxuICAgIGggKz0gYDxmLWltZyB0eXBlPVwidGV4dFwiIG5vZGVpZD1cIiR7dGhpcy5pZH1cIiBjbGFzcz1cImlubGluZUJsb2NrXCIgbWlud2lkdGg9XCIke3RoaXMud2lkdGh9XCIgc3R5bGU9XCJib3JkZXI6MXB4IHNvbGlkICNjY2M7bWluLXdpZHRoOiR7dGhpcy5zbWFsbHdpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtgO1xyXG4gICAgaWYgKHRoaXMuekluZGV4KSB7XHJcbiAgICAgIGggKz0gYHotaW5kZXg6YCArIHRoaXMuekluZGV4ICsgYDtgO1xyXG4gICAgfVxyXG4gICAgaCArPSBgXCIgbmFtZT1cIiR7dGhpcy5uYW1lfVwiIGNsYXNzbmFtZT1cImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLkZsb3dIaXN0b3J5RmllbGRcIiBpc3Nob3dsYWJlbD1cIiR7dGhpcy5pc3Nob3dsYWJlbH1cIiBsYWJlbHZhbHVlPVwiJHt0aGlzLmxhYmVsdmFsdWV9XCIgIFxyXG4gICAgICAgICAgICBmaWVsZHR5cGU9XCJWQUxVRV9UWVBFX1RFWFRcIlxyXG4gICAgICAgICAgICBkaXNjcmlwdD1cIiR7dGhpcy5kaXNjcmlwdH1cIlxyXG4gICAgICAgICAgICBoaWRkZW5zY3JpcHQ9XCIke3RoaXMuaGlkZGVuc2NyaXB0fVwiIGhpZGRlbnZhbHVlPVwiJHt0aGlzLmhpZGRlbnZhbHVlfVwiIFxyXG4gICAgICAgICAgICBoaWRkZW5wcmludHNjcmlwdD1cIiR7dGhpcy5oaWRkZW5wcmludHNjcmlwdH1cIiBcclxuICAgICAgICAgICAgcHJpbnRoaWRkZW52YWx1ZT1cIiR7dGhpcy5wcmludGhpZGRlbnZhbHVlfVwiXHJcbiAgICAgICAgICAgIG1vYmlsZT1cIiR7dGhpcy5tb2JpbGV9XCJcclxuICAgICAgICAgICAgc2hvd21vZGU9XCIke3RoaXMuc2hvd21vZGV9XCJcclxuICAgICAgICAgICAgYDtcclxuICAgIGggKz0gYD5gICsgdGhpcy52YWx1ZSArIGA8L2YtaW1nPjwvZGl2PmA7XHJcbiAgICByZXR1cm4gaDtcclxuICB9XHJcblxyXG4gIGdldE5vZGVDb25maWdJbmZvKCkge1xyXG4gICAgbGV0IG5vZGUgPSB7fTtcclxuICAgIG5vZGUudGV4dCA9IHRoaXMudGV4dDtcclxuICAgIG5vZGUuaWNvbiA9IFwiZ2x5cGhpY29uIGdseXBoaWNvbi1nbGFzc1wiO1xyXG4gICAgbm9kZS51dWlkID0gdGhpcy5nZXRQcm9wKFwiaWRcIik7XHJcbiAgICBub2RlLmluc3RhbmNlID0gdGhpcztcclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBGbG93aGlzdG9yeWZpZWxkO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2Zvcm0vY29tcG9uZW50L0Zsb3doaXN0b3J5ZmllbGQuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTs7O0FBQUE7QUFDQTs7Ozs7Ozs7O0FBQUE7OztBQUNBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBeEJBO0FBeUJBO0FBQ0E7OztBQUFBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFTQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUF4RUE7QUFDQTtBQXlFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///123\n");

/***/ }),
/* 124 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Flowreminderhistoryfield = function (_Element) {\n  _inherits(Flowreminderhistoryfield, _Element);\n\n  function Flowreminderhistoryfield() {\n    _classCallCheck(this, Flowreminderhistoryfield);\n\n    var _this = _possibleConstructorReturn(this, (Flowreminderhistoryfield.__proto__ || Object.getPrototypeOf(Flowreminderhistoryfield)).call(this));\n\n    _this.width = 170;\n    _this.height = 30;\n    _this.name = \"\"; //鍞竴鏍囪瘑\n    _this.text = \"flowreminderhistoryfield\";\n    _this.cursor = \"default\";\n    _this.scope = \"flowreminderhistoryfield\";\n    _this.id = _utility.Sequence.createUuid();\n    _this.belongId = \"\";\n    _this.preX = 0;\n    _this.preY = 0;\n    _this.moveX = 0;\n    _this.moveY = 0;\n    _this.value = \"娴佺▼鍌姙鍘嗗彶\"; //鍊糪n    _this.discript = \"\"; //鎻忚堪\n\n    _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n    _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n    _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n    _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n\n    _this.smallwidth = 100;\n    return _this;\n  }\n\n  _createClass(Flowreminderhistoryfield, [{\n    key: \"toHtml\",\n    value: function toHtml() {}\n  }, {\n    key: \"paint\",\n    value: function paint() {\n      // if(this.x==0&&this.y==0){\n      //     this.x=this.left;\n      //     this.y=this.top;\n      // }else{\n      //     this.left=this.x;\n      //     this.top=this.y;\n      // }\n      //console.log(panel);\n\n      var h = \"\";\n      if (this.isblock == \"true\") {\n        h = \"<div class=\\\"block\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\" style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      } else {\n        h = \"<div class=\\\"inlineBlock\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\"style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      }\n      if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n        h += \"<f-label style=\\\"line-height:\" + this.height + \"px;\\\">\" + this.labelvalue + \"</f-label>\";\n      }\n      h += \"<f-img type=\\\"text\\\" nodeid=\\\"\" + this.id + \"\\\" class=\\\"inlineBlock\\\" minwidth=\\\"\" + this.width + \"\\\" style=\\\"border:1px solid #ccc;min-width:\" + this.smallwidth + \"px;min-height:\" + this.height + \"px;\";\n      if (this.zIndex) {\n        h += \"z-index:\" + this.zIndex + \";\";\n      }\n      h += \"\\\" name=\\\"\" + this.name + \"\\\" classname=\\\"cn.myapps.runtime.dynaform.form.ejb.FlowReminderHistoryField\\\" isshowlabel=\\\"\" + this.isshowlabel + \"\\\" labelvalue=\\\"\" + this.labelvalue + \"\\\"  \\n            fieldtype=\\\"VALUE_TYPE_VARCHAR\\\"\\n            discript=\\\"\" + this.discript + \"\\\"\\n            hiddenscript=\\\"\" + this.hiddenscript + \"\\\" hiddenvalue=\\\"\" + this.hiddenvalue + \"\\\" \\n            hiddenprintscript=\\\"\" + this.hiddenprintscript + \"\\\" \\n            printhiddenvalue=\\\"\" + this.printhiddenvalue + \"\\\"\\n            \";\n      h += \">\" + this.value + \"</f-img></div>\";\n      return h;\n    }\n  }, {\n    key: \"getNodeConfigInfo\",\n    value: function getNodeConfigInfo() {\n      var node = {};\n      node.text = this.text;\n      node.icon = \"glyphicon glyphicon-glass\";\n      node.uuid = this.getProp(\"id\");\n      node.instance = this;\n      return node;\n    }\n  }]);\n\n  return Flowreminderhistoryfield;\n}(_Element3.default);\n\nexports.default = Flowreminderhistoryfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9GbG93cmVtaW5kZXJoaXN0b3J5ZmllbGQuanM/MzVmMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRWxlbWVudCBmcm9tIFwiLi9FbGVtZW50XCI7XHJcbmltcG9ydCB7IFNlcXVlbmNlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdHlcIjtcclxuY2xhc3MgRmxvd3JlbWluZGVyaGlzdG9yeWZpZWxkIGV4dGVuZHMgRWxlbWVudCB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy53aWR0aCA9IDE3MDtcclxuICAgIHRoaXMuaGVpZ2h0ID0gMzA7XHJcbiAgICB0aGlzLm5hbWUgPSBcIlwiOyAvL+WUr+S4gOagh+ivhlxyXG4gICAgdGhpcy50ZXh0ID0gXCJmbG93cmVtaW5kZXJoaXN0b3J5ZmllbGRcIjtcclxuICAgIHRoaXMuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLnNjb3BlID0gXCJmbG93cmVtaW5kZXJoaXN0b3J5ZmllbGRcIjtcclxuICAgIHRoaXMuaWQgPSBTZXF1ZW5jZS5jcmVhdGVVdWlkKCk7XHJcbiAgICB0aGlzLmJlbG9uZ0lkID0gXCJcIjtcclxuICAgIHRoaXMucHJlWCA9IDA7XHJcbiAgICB0aGlzLnByZVkgPSAwO1xyXG4gICAgdGhpcy5tb3ZlWCA9IDA7XHJcbiAgICB0aGlzLm1vdmVZID0gMDtcclxuICAgIHRoaXMudmFsdWUgPSBcIua1geeoi+WCrOWKnuWOhuWPslwiOyAvL+WAvFxyXG4gICAgdGhpcy5kaXNjcmlwdCA9IFwiXCI7IC8v5o+P6L+wXHJcblxyXG4gICAgdGhpcy5oaWRkZW5zY3JpcHQgPSBcIlwiOyAvL+makOiXj+adoeS7tuiEmuacrFxyXG4gICAgdGhpcy5oaWRkZW52YWx1ZSA9IFwiXCI7IC8v6ZqQ6JeP5pe25pi+56S65YC8XHJcbiAgICB0aGlzLmhpZGRlbnByaW50c2NyaXB0ID0gXCJcIjsgLy/miZPljbDml7bpmpDol4/mnaHku7bohJrmnKxcclxuICAgIHRoaXMucHJpbnRoaWRkZW52YWx1ZSA9IFwiXCI7IC8v5omT5Y2w6ZqQ6JeP5pe25pi+56S65YC8XHJcblxyXG4gICAgdGhpcy5zbWFsbHdpZHRoID0gMTAwO1xyXG4gIH1cclxuICB0b0h0bWwoKSB7fVxyXG5cclxuICBwYWludCgpIHtcclxuICAgIC8vIGlmKHRoaXMueD09MCYmdGhpcy55PT0wKXtcclxuICAgIC8vICAgICB0aGlzLng9dGhpcy5sZWZ0O1xyXG4gICAgLy8gICAgIHRoaXMueT10aGlzLnRvcDtcclxuICAgIC8vIH1lbHNle1xyXG4gICAgLy8gICAgIHRoaXMubGVmdD10aGlzLng7XHJcbiAgICAvLyAgICAgdGhpcy50b3A9dGhpcy55O1xyXG4gICAgLy8gfVxyXG4gICAgLy9jb25zb2xlLmxvZyhwYW5lbCk7XHJcblxyXG4gICAgbGV0IGggPSBcIlwiO1xyXG4gICAgaWYgKHRoaXMuaXNibG9jayA9PSBcInRydWVcIikge1xyXG4gICAgICBoID0gYDxkaXYgY2xhc3M9XCJibG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcIiBzdHlsZT1cIm1pbi13aWR0aDoke3RoaXMud2lkdGh9cHg7bWluLWhlaWdodDoke3RoaXMuaGVpZ2h0fXB4O1wiPmA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBoID0gYDxkaXYgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIGlkPVwiJHt0aGlzLmlkfVwiIGRyYWdnYWJsZT1cInRydWVcInN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzc2hvd2xhYmVsID09IFwidHJ1ZVwiIHx8IHRoaXMuaXNzaG93bGFiZWwgPT0gdHJ1ZSkge1xyXG4gICAgICBoICs9IGA8Zi1sYWJlbCBzdHlsZT1cImxpbmUtaGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+JHt0aGlzLmxhYmVsdmFsdWV9PC9mLWxhYmVsPmA7XHJcbiAgICB9XHJcbiAgICBoICs9IGA8Zi1pbWcgdHlwZT1cInRleHRcIiBub2RlaWQ9XCIke3RoaXMuaWR9XCIgY2xhc3M9XCJpbmxpbmVCbG9ja1wiIG1pbndpZHRoPVwiJHt0aGlzLndpZHRofVwiIHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjY2NjO21pbi13aWR0aDoke3RoaXMuc21hbGx3aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7YDtcclxuICAgIGlmICh0aGlzLnpJbmRleCkge1xyXG4gICAgICBoICs9IGB6LWluZGV4OmAgKyB0aGlzLnpJbmRleCArIGA7YDtcclxuICAgIH1cclxuICAgIGggKz0gYFwiIG5hbWU9XCIke3RoaXMubmFtZX1cIiBjbGFzc25hbWU9XCJjbi5teWFwcHMucnVudGltZS5keW5hZm9ybS5mb3JtLmVqYi5GbG93UmVtaW5kZXJIaXN0b3J5RmllbGRcIiBpc3Nob3dsYWJlbD1cIiR7dGhpcy5pc3Nob3dsYWJlbH1cIiBsYWJlbHZhbHVlPVwiJHt0aGlzLmxhYmVsdmFsdWV9XCIgIFxyXG4gICAgICAgICAgICBmaWVsZHR5cGU9XCJWQUxVRV9UWVBFX1ZBUkNIQVJcIlxyXG4gICAgICAgICAgICBkaXNjcmlwdD1cIiR7dGhpcy5kaXNjcmlwdH1cIlxyXG4gICAgICAgICAgICBoaWRkZW5zY3JpcHQ9XCIke3RoaXMuaGlkZGVuc2NyaXB0fVwiIGhpZGRlbnZhbHVlPVwiJHt0aGlzLmhpZGRlbnZhbHVlfVwiIFxyXG4gICAgICAgICAgICBoaWRkZW5wcmludHNjcmlwdD1cIiR7dGhpcy5oaWRkZW5wcmludHNjcmlwdH1cIiBcclxuICAgICAgICAgICAgcHJpbnRoaWRkZW52YWx1ZT1cIiR7dGhpcy5wcmludGhpZGRlbnZhbHVlfVwiXHJcbiAgICAgICAgICAgIGA7XHJcbiAgICBoICs9IGA+YCArIHRoaXMudmFsdWUgKyBgPC9mLWltZz48L2Rpdj5gO1xyXG4gICAgcmV0dXJuIGg7XHJcbiAgfVxyXG5cclxuICBnZXROb2RlQ29uZmlnSW5mbygpIHtcclxuICAgIGxldCBub2RlID0ge307XHJcbiAgICBub2RlLnRleHQgPSB0aGlzLnRleHQ7XHJcbiAgICBub2RlLmljb24gPSBcImdseXBoaWNvbiBnbHlwaGljb24tZ2xhc3NcIjtcclxuICAgIG5vZGUudXVpZCA9IHRoaXMuZ2V0UHJvcChcImlkXCIpO1xyXG4gICAgbm9kZS5pbnN0YW5jZSA9IHRoaXM7XHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgRmxvd3JlbWluZGVyaGlzdG9yeWZpZWxkO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2Zvcm0vY29tcG9uZW50L0Zsb3dyZW1pbmRlcmhpc3RvcnlmaWVsZC5qcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOzs7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFBQTs7O0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXRCQTtBQXVCQTtBQUNBOzs7QUFBQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBcEVBO0FBQ0E7QUFxRUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///124\n");

/***/ }),
/* 125 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _Element2 = __webpack_require__(3);\n\nvar _Element3 = _interopRequireDefault(_Element2);\n\nvar _utility = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Flowreminderhistoryfield = function (_Element) {\n  _inherits(Flowreminderhistoryfield, _Element);\n\n  function Flowreminderhistoryfield() {\n    _classCallCheck(this, Flowreminderhistoryfield);\n\n    var _this = _possibleConstructorReturn(this, (Flowreminderhistoryfield.__proto__ || Object.getPrototypeOf(Flowreminderhistoryfield)).call(this));\n\n    _this.width = 170;\n    _this.height = 30;\n    _this.name = \"\"; //鍞竴鏍囪瘑\n    _this.text = \"informationfeedbackfield\";\n    _this.cursor = \"default\";\n    _this.scope = \"informationfeedbackfield\";\n    _this.id = _utility.Sequence.createUuid();\n    _this.belongId = \"\";\n    _this.preX = 0;\n    _this.preY = 0;\n    _this.moveX = 0;\n    _this.moveY = 0;\n    _this.value = \"淇℃伅鍙嶉\"; //鍊糪n    _this.discript = \"\"; //鎻忚堪\n\n    _this.hiddenscript = \"\"; //闅愯棌鏉′欢鑴氭湰\n    _this.hiddenvalue = \"\"; //闅愯棌鏃舵樉绀哄€糪n    _this.hiddenprintscript = \"\"; //鎵撳嵃鏃堕殣钘忔潯浠惰剼鏈琝n    _this.printhiddenvalue = \"\"; //鎵撳嵃闅愯棌鏃舵樉绀哄€糪n    _this.areawidth = \"\"; //瀹絓n    _this.areaheight = \"\"; //楂榎n\n    _this.smallwidth = 100;\n    return _this;\n  }\n\n  _createClass(Flowreminderhistoryfield, [{\n    key: \"toHtml\",\n    value: function toHtml() {}\n  }, {\n    key: \"paint\",\n    value: function paint() {\n      // if(this.x==0&&this.y==0){\n      //     this.x=this.left;\n      //     this.y=this.top;\n      // }else{\n      //     this.left=this.x;\n      //     this.top=this.y;\n      // }\n      //console.log(panel);\n\n      var h = \"\";\n      if (this.isblock == \"true\") {\n        h = \"<div class=\\\"block\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\" style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      } else {\n        h = \"<div class=\\\"inlineBlock\\\" id=\\\"\" + this.id + \"\\\" draggable=\\\"true\\\"style=\\\"min-width:\" + this.width + \"px;min-height:\" + this.height + \"px;\\\">\";\n      }\n      if (this.isshowlabel == \"true\" || this.isshowlabel == true) {\n        h += \"<f-label style=\\\"line-height:\" + this.height + \"px;\\\">\" + this.labelvalue + \"</f-label>\";\n      }\n      h += \"<f-img type=\\\"text\\\" nodeid=\\\"\" + this.id + \"\\\" class=\\\"inlineBlock\\\" minwidth=\\\"\" + this.width + \"\\\" style=\\\"border:1px solid #ccc;min-width:\" + this.smallwidth + \"px;min-height:\" + this.height + \"px;\";\n      if (this.zIndex) {\n        h += \"z-index:\" + this.zIndex + \";\";\n      }\n      h += \"\\\" name=\\\"\" + this.name + \"\\\" classname=\\\"cn.myapps.runtime.dynaform.form.ejb.InformationFeedbackField\\\" isshowlabel=\\\"\" + this.isshowlabel + \"\\\" labelvalue=\\\"\" + this.labelvalue + \"\\\"  \\n            fieldtype=\\\"VALUE_TYPE_VARCHAR\\\"\\n            discript=\\\"\" + this.discript + \"\\\"\\n            hiddenscript=\\\"\" + this.hiddenscript + \"\\\" hiddenvalue=\\\"\" + this.hiddenvalue + \"\\\" \\n            hiddenprintscript=\\\"\" + this.hiddenprintscript + \"\\\" \\n            printhiddenvalue=\\\"\" + this.printhiddenvalue + \"\\\"\\n            areawidth=\\\"\" + this.areawidth + \"\\\"\\n            areaheight=\\\"\" + this.areaheight + \"\\\"\\n            \";\n      h += \">\" + this.value + \"</f-img></div>\";\n      return h;\n    }\n  }, {\n    key: \"getNodeConfigInfo\",\n    value: function getNodeConfigInfo() {\n      var node = {};\n      node.text = this.text;\n      node.icon = \"glyphicon glyphicon-glass\";\n      node.uuid = this.getProp(\"id\");\n      node.instance = this;\n      return node;\n    }\n  }]);\n\n  return Flowreminderhistoryfield;\n}(_Element3.default);\n\nexports.default = Flowreminderhistoryfield;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL2NvbXBvbmVudC9JbmZvcm1hdGlvbmZlZWRiYWNrZmllbGQuanM/M2QxMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRWxlbWVudCBmcm9tIFwiLi9FbGVtZW50XCI7XHJcbmltcG9ydCB7IFNlcXVlbmNlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdHlcIjtcclxuY2xhc3MgRmxvd3JlbWluZGVyaGlzdG9yeWZpZWxkIGV4dGVuZHMgRWxlbWVudCB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy53aWR0aCA9IDE3MDtcclxuICAgIHRoaXMuaGVpZ2h0ID0gMzA7XHJcbiAgICB0aGlzLm5hbWUgPSBcIlwiOyAvL+WUr+S4gOagh+ivhlxyXG4gICAgdGhpcy50ZXh0ID0gXCJpbmZvcm1hdGlvbmZlZWRiYWNrZmllbGRcIjtcclxuICAgIHRoaXMuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICB0aGlzLnNjb3BlID0gXCJpbmZvcm1hdGlvbmZlZWRiYWNrZmllbGRcIjtcclxuICAgIHRoaXMuaWQgPSBTZXF1ZW5jZS5jcmVhdGVVdWlkKCk7XHJcbiAgICB0aGlzLmJlbG9uZ0lkID0gXCJcIjtcclxuICAgIHRoaXMucHJlWCA9IDA7XHJcbiAgICB0aGlzLnByZVkgPSAwO1xyXG4gICAgdGhpcy5tb3ZlWCA9IDA7XHJcbiAgICB0aGlzLm1vdmVZID0gMDtcclxuICAgIHRoaXMudmFsdWUgPSBcIuS/oeaBr+WPjemmiFwiOyAvL+WAvFxyXG4gICAgdGhpcy5kaXNjcmlwdCA9IFwiXCI7IC8v5o+P6L+wXHJcblxyXG4gICAgdGhpcy5oaWRkZW5zY3JpcHQgPSBcIlwiOyAvL+makOiXj+adoeS7tuiEmuacrFxyXG4gICAgdGhpcy5oaWRkZW52YWx1ZSA9IFwiXCI7IC8v6ZqQ6JeP5pe25pi+56S65YC8XHJcbiAgICB0aGlzLmhpZGRlbnByaW50c2NyaXB0ID0gXCJcIjsgLy/miZPljbDml7bpmpDol4/mnaHku7bohJrmnKxcclxuICAgIHRoaXMucHJpbnRoaWRkZW52YWx1ZSA9IFwiXCI7IC8v5omT5Y2w6ZqQ6JeP5pe25pi+56S65YC8XHJcbiAgICB0aGlzLmFyZWF3aWR0aD1cIlwiOy8v5a69XHJcbiAgICB0aGlzLmFyZWFoZWlnaHQ9XCJcIjsvL+mrmFxyXG4gICAgXHJcbiAgICB0aGlzLnNtYWxsd2lkdGggPSAxMDA7XHJcbiAgfVxyXG4gIHRvSHRtbCgpIHt9XHJcblxyXG4gIHBhaW50KCkge1xyXG4gICAgLy8gaWYodGhpcy54PT0wJiZ0aGlzLnk9PTApe1xyXG4gICAgLy8gICAgIHRoaXMueD10aGlzLmxlZnQ7XHJcbiAgICAvLyAgICAgdGhpcy55PXRoaXMudG9wO1xyXG4gICAgLy8gfWVsc2V7XHJcbiAgICAvLyAgICAgdGhpcy5sZWZ0PXRoaXMueDtcclxuICAgIC8vICAgICB0aGlzLnRvcD10aGlzLnk7XHJcbiAgICAvLyB9XHJcbiAgICAvL2NvbnNvbGUubG9nKHBhbmVsKTtcclxuXHJcbiAgICBsZXQgaCA9IFwiXCI7XHJcbiAgICBpZiAodGhpcy5pc2Jsb2NrID09IFwidHJ1ZVwiKSB7XHJcbiAgICAgIGggPSBgPGRpdiBjbGFzcz1cImJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIHN0eWxlPVwibWluLXdpZHRoOiR7dGhpcy53aWR0aH1weDttaW4taGVpZ2h0OiR7dGhpcy5oZWlnaHR9cHg7XCI+YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGggPSBgPGRpdiBjbGFzcz1cImlubGluZUJsb2NrXCIgaWQ9XCIke3RoaXMuaWR9XCIgZHJhZ2dhYmxlPVwidHJ1ZVwic3R5bGU9XCJtaW4td2lkdGg6JHt0aGlzLndpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj5gO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNzaG93bGFiZWwgPT0gXCJ0cnVlXCIgfHwgdGhpcy5pc3Nob3dsYWJlbCA9PSB0cnVlKSB7XHJcbiAgICAgIGggKz0gYDxmLWxhYmVsIHN0eWxlPVwibGluZS1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtcIj4ke3RoaXMubGFiZWx2YWx1ZX08L2YtbGFiZWw+YDtcclxuICAgIH1cclxuICAgIGggKz0gYDxmLWltZyB0eXBlPVwidGV4dFwiIG5vZGVpZD1cIiR7dGhpcy5pZH1cIiBjbGFzcz1cImlubGluZUJsb2NrXCIgbWlud2lkdGg9XCIke3RoaXMud2lkdGh9XCIgc3R5bGU9XCJib3JkZXI6MXB4IHNvbGlkICNjY2M7bWluLXdpZHRoOiR7dGhpcy5zbWFsbHdpZHRofXB4O21pbi1oZWlnaHQ6JHt0aGlzLmhlaWdodH1weDtgO1xyXG4gICAgaWYgKHRoaXMuekluZGV4KSB7XHJcbiAgICAgIGggKz0gYHotaW5kZXg6YCArIHRoaXMuekluZGV4ICsgYDtgO1xyXG4gICAgfVxyXG4gICAgaCArPSBgXCIgbmFtZT1cIiR7dGhpcy5uYW1lfVwiIGNsYXNzbmFtZT1cImNuLm15YXBwcy5ydW50aW1lLmR5bmFmb3JtLmZvcm0uZWpiLkluZm9ybWF0aW9uRmVlZGJhY2tGaWVsZFwiIGlzc2hvd2xhYmVsPVwiJHt0aGlzLmlzc2hvd2xhYmVsfVwiIGxhYmVsdmFsdWU9XCIke3RoaXMubGFiZWx2YWx1ZX1cIiAgXHJcbiAgICAgICAgICAgIGZpZWxkdHlwZT1cIlZBTFVFX1RZUEVfVkFSQ0hBUlwiXHJcbiAgICAgICAgICAgIGRpc2NyaXB0PVwiJHt0aGlzLmRpc2NyaXB0fVwiXHJcbiAgICAgICAgICAgIGhpZGRlbnNjcmlwdD1cIiR7dGhpcy5oaWRkZW5zY3JpcHR9XCIgaGlkZGVudmFsdWU9XCIke3RoaXMuaGlkZGVudmFsdWV9XCIgXHJcbiAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0PVwiJHt0aGlzLmhpZGRlbnByaW50c2NyaXB0fVwiIFxyXG4gICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlPVwiJHt0aGlzLnByaW50aGlkZGVudmFsdWV9XCJcclxuICAgICAgICAgICAgYXJlYXdpZHRoPVwiJHt0aGlzLmFyZWF3aWR0aH1cIlxyXG4gICAgICAgICAgICBhcmVhaGVpZ2h0PVwiJHt0aGlzLmFyZWFoZWlnaHR9XCJcclxuICAgICAgICAgICAgYDtcclxuICAgIGggKz0gYD5gICsgdGhpcy52YWx1ZSArIGA8L2YtaW1nPjwvZGl2PmA7XHJcbiAgICByZXR1cm4gaDtcclxuICB9XHJcblxyXG4gIGdldE5vZGVDb25maWdJbmZvKCkge1xyXG4gICAgbGV0IG5vZGUgPSB7fTtcclxuICAgIG5vZGUudGV4dCA9IHRoaXMudGV4dDtcclxuICAgIG5vZGUuaWNvbiA9IFwiZ2x5cGhpY29uIGdseXBoaWNvbi1nbGFzc1wiO1xyXG4gICAgbm9kZS51dWlkID0gdGhpcy5nZXRQcm9wKFwiaWRcIik7XHJcbiAgICBub2RlLmluc3RhbmNlID0gdGhpcztcclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBGbG93cmVtaW5kZXJoaXN0b3J5ZmllbGQ7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS9jb21wb25lbnQvSW5mb3JtYXRpb25mZWVkYmFja2ZpZWxkLmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7OztBQUFBOzs7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXhCQTtBQXlCQTtBQUNBOzs7QUFBQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBU0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBeEVBO0FBQ0E7QUF5RUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///125\n");

/***/ }),
/* 126 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _utility = __webpack_require__(2);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PropsPanel = function () {\n    _createClass(PropsPanel, null, [{\n        key: 'getInstance',\n        value: function getInstance() {\n            if (!PropsPanel.instance || !(PropsPanel.instance instanceof PropsPanel)) {\n                PropsPanel.instance = new PropsPanel();\n            }\n            //console.log(Tree.instance)\n            return PropsPanel.instance;\n        }\n    }]);\n\n    function PropsPanel() {\n        _classCallCheck(this, PropsPanel);\n\n        this.form = null;\n        this.container = null;\n        this.api = new _utility.Api();\n    }\n\n    _createClass(PropsPanel, [{\n        key: 'setProps',\n        value: function setProps(newProps) {\n            Object.assign(this, newProps);\n        }\n    }, {\n        key: 'getProp',\n        value: function getProp(prop) {\n            return this[prop];\n        }\n    }, {\n        key: 'init',\n        value: function init(params) {\n            this.setProps(params);\n            this.render();\n        }\n    }, {\n        key: 'render',\n        value: function render() {\n            var form = this.form;\n            var api = this.api;\n            var $container = $(this.container);\n            var that = this;\n            var $html = '';\n            console.log(\"props\");\n\n            if (form) {\n                var currToEdit = form.getCurrToEdit();\n                if (currToEdit == null) {\n                    console.log(\"props,null\");\n\n                    console.log(\"褰撳墠娌℃湁鐐瑰嚮鍏冪礌\");\n                    $.when(api.getTemplete('editFormPanel-tmpl'), api.getJSON()).done(function (tml, json) {\n\n                        $html = _utility.Helper.getInstance().handleTemplete(tml[0], {}, 'editFormPanel-tmpl');\n\n                        $container.html($html);\n                    });\n                } else {\n                    console.log(\"props,have\");\n\n                    var scope = currToEdit.scope;\n                    var h = '<div>\\n                <span class=\"input-group-addon d-inline\">\\u5B57\\u6BB5\\u540D\\u79F0</span>\\n                <select id=\\'refreshfields\\' name=\"refreshfields\" class=\"form-control\"><option>\\u9009\\u62E9</option>';\n                    if (form.allName.length > 0) {\n                        for (var k = 0; k < form.allName.length; k++) {\n                            h += '<option value=' + form.allName[k].value + '>' + form.allName[k].name + '</option>';\n                        }\n                    }\n                    h += '</select>\\n                <button class=\"btn btn-primary d-block\" id=\"delRefreshField\">\\u5220\\u9664</button>\\n            </div>';\n\n                    switch (scope) {\n                        case 'input':\n                            $.when(api.getTemplete('editInput-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n                                config.inputType.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('fieldtype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.texttypes.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('texttype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.FocusSwitchKey.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('fieldkeyevent')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.validatelibsOption.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('validatelibs')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    fieldtype: currToEdit.getProp('fieldtype'),\n                                    numberpattern: currToEdit.getProp('numberpattern'),\n                                    value: currToEdit.getProp('value'),\n                                    valuescript: currToEdit.getProp('valuescript'),\n\n                                    readonlyshowvalonly: currToEdit.getProp('readonlyshowvalonly'),\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    mobile: currToEdit.getProp('mobile'),\n                                    discript: currToEdit.getProp('discript'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    editmode: currToEdit.getProp('editmode'),\n                                    validatelibs: currToEdit.getProp(\"validatelibs\"),\n                                    validaterule: currToEdit.getProp(\"validaterule\"),\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    isdefaultvalue: currToEdit.getProp(\"isdefaultvalue\"),\n                                    allName: form.allName,\n                                    processdescription: currToEdit.getProp(\"processdescription\") == \"[];[]\" ? \"\" : currToEdit.getProp(\"processdescription\"),\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    instantvalidate: currToEdit.getProp(\"instantvalidate\")\n                                };\n                                var inputData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], inputData, 'editInput-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                            });\n                            break;\n                        case 'textarea':\n                            $.when(api.getTemplete('editTextarea-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n                                config.validatelibsOption.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('validatelibs')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    valuescript: currToEdit.getProp('valuescript'),\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    mobile: currToEdit.getProp('mobile'),\n                                    discript: currToEdit.getProp('discript'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    editmode: currToEdit.getProp('editmode'),\n                                    validatelibs: currToEdit.getProp(\"validatelibs\"),\n                                    validaterule: currToEdit.getProp(\"validaterule\"),\n\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    isdefaultvalue: currToEdit.getProp(\"isdefaultvalue\"),\n                                    allName: form.allName,\n                                    processdescription: currToEdit.getProp(\"processdescription\") == \"[];[]\" ? \"\" : currToEdit.getProp(\"processdescription\"),\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    instantvalidate: currToEdit.getProp(\"instantvalidate\")\n\n                                };\n                                var textareaData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], textareaData, 'editTextarea-tmpl');\n\n                                $container.html($html);\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                            });\n                            break;\n                        case 'radio':\n                            $.when(api.getTemplete('editRadio-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n                                // config.fontName[currToEdit.getProp('fontName')] = \"true\";\n                                config.radiotexttypes.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('texttype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.validatelibsOption.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('validatelibs')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.radioLayout.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('layout')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.modules[currToEdit.getProp('module')] = \"true\";\n                                config.dialogview[currToEdit.getProp('dialogview')] = \"true\";\n                                config.optionsvalue[currToEdit.getProp('optionsvalue')] = \"true\";\n                                config.optionstext[currToEdit.getProp('optionstext')] = \"true\";\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    valuescript: currToEdit.getProp('valuescript'),\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    mobile: currToEdit.getProp('mobile'),\n                                    discript: currToEdit.getProp('discript'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    editmode: currToEdit.getProp('editmode'),\n                                    validatelibs: currToEdit.getProp(\"validatelibs\"),\n                                    validaterule: currToEdit.getProp(\"validaterule\"),\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    isdefaultvalue: currToEdit.getProp(\"isdefaultvalue\"),\n                                    optionseditmode: currToEdit.getProp(\"optionseditmode\"),\n                                    allName: form.allName,\n                                    processdescription: currToEdit.getProp(\"processdescription\") == \"[];[]\" ? \"\" : currToEdit.getProp(\"processdescription\"),\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    optionsscript: currToEdit.getProp(\"optionsscript\"),\n                                    instantvalidate: currToEdit.getProp(\"instantvalidate\")\n\n                                };\n                                var radioData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], radioData, 'editRadio-tmpl');\n\n                                $container.html($html);\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                            });\n                            break;\n                        case 'checkbox':\n                            $.when(api.getTemplete('editCheckbox-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n                                config.radiotexttypes.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('texttype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.validatelibsOption.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('validatelibs')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.radioLayout.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('layout')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                // config.fontName[currToEdit.getProp('fontName')] = \"true\";\n                                // config.radioLayout[currToEdit.getProp('layout')==\"horizontal\"?\"姘村钩\":\"鍨傜洿\"]=\"true\";\n                                config.modules[currToEdit.getProp('module')] = \"true\";\n                                config.dialogview[currToEdit.getProp('dialogview')] = \"true\";\n                                config.optionsvalue[currToEdit.getProp('optionsvalue')] = \"true\";\n                                config.optionstext[currToEdit.getProp('optionstext')] = \"true\";\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    valuescript: currToEdit.getProp('valuescript'),\n\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    mobile: currToEdit.getProp('mobile'),\n                                    discript: currToEdit.getProp('discript'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    editmode: currToEdit.getProp('editmode'),\n                                    validatelibs: currToEdit.getProp(\"validatelibs\"),\n                                    validaterule: currToEdit.getProp(\"validaterule\"),\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    isdefaultvalue: currToEdit.getProp(\"isdefaultvalue\"),\n                                    optionseditmode: currToEdit.getProp(\"optionseditmode\"),\n                                    allName: form.allName,\n                                    processdescription: currToEdit.getProp(\"processdescription\") == \"[];[]\" ? \"\" : currToEdit.getProp(\"processdescription\"),\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    optionsscript: currToEdit.getProp(\"optionsscript\"),\n                                    instantvalidate: currToEdit.getProp(\"instantvalidate\")\n                                };\n                                var checkboxData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], checkboxData, 'editCheckbox-tmpl');\n\n                                $container.html($html);\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                            });\n                            break;\n                        case 'data':\n                            $.when(api.getTemplete('editData-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n                                // config.fontName[currToEdit.getProp('fontName')] = \"true\";\n                                config.datatexttypes.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('texttype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.validatelibsOption.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('validatelibs')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.dataformat.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('datepattern')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.limitoption[currToEdit.getProp('prev_name')] = \"true\";\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    valuescript: currToEdit.getProp('valuescript'),\n\n                                    readonlyshowvalonly: currToEdit.getProp('readonlyshowvalonly'),\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    mobile: currToEdit.getProp('mobile'),\n                                    discript: currToEdit.getProp('discript'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    editmode: currToEdit.getProp('editmode'),\n                                    validatelibs: currToEdit.getProp(\"validatelibs\"),\n                                    validaterule: currToEdit.getProp(\"validaterule\"),\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    isdefaultvalue: currToEdit.getProp(\"isdefaultvalue\"),\n                                    limit: currToEdit.getProp(\"limit\"),\n                                    allName: form.allName,\n                                    processdescription: currToEdit.getProp(\"processdescription\") == \"[];[]\" ? \"\" : currToEdit.getProp(\"processdescription\"),\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    instantvalidate: currToEdit.getProp(\"instantvalidate\")\n                                };\n                                var dataData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], dataData, 'editData-tmpl');\n\n                                $container.html($html);\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                            });\n                            break;\n                        case 'select':\n                            $.when(api.getTemplete('editSelect-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n                                config.datatexttypes.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('texttype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.validatelibsOption.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('validatelibs')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.modules[currToEdit.getProp('module')] = \"true\";\n                                config.dialogview[currToEdit.getProp('dialogview')] = \"true\";\n                                config.optionsvalue[currToEdit.getProp('optionsvalue')] = \"true\";\n                                config.optionstext[currToEdit.getProp('optionstext')] = \"true\";\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    valuescript: currToEdit.getProp('valuescript'),\n\n                                    readonlyshowvalonly: currToEdit.getProp('readonlyshowvalonly'),\n\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    mobile: currToEdit.getProp('mobile'),\n                                    discript: currToEdit.getProp('discript'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    editmode: currToEdit.getProp('editmode'),\n                                    validatelibs: currToEdit.getProp(\"validatelibs\"),\n                                    validaterule: currToEdit.getProp(\"validaterule\"),\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    isdefaultvalue: currToEdit.getProp(\"isdefaultvalue\"),\n                                    allName: form.allName,\n                                    processdescription: currToEdit.getProp(\"processdescription\") == \"[];[]\" ? \"\" : currToEdit.getProp(\"processdescription\"),\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    optionseditmode: currToEdit.getProp(\"optionseditmode\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    optionsscript: currToEdit.getProp(\"optionsscript\"),\n                                    instantvalidate: currToEdit.getProp(\"instantvalidate\")\n                                };\n                                var selectData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], selectData, 'editSelect-tmpl');\n\n                                $container.html($html);\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                            });\n                            break;\n                        case 'dept':\n\n                            $.when(api.getTemplete('editDept-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n\n                                config.datatexttypes.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('texttype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.validatelibsOption.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('validatelibs')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.defaultOptionTypeOptions.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('defaultoptiontype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.departmentLevelOptions.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('departmentlevel')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                var relatedFieldOptions = form.getallDeptName(currToEdit.getProp('name'));\n                                relatedFieldOptions[currToEdit.getProp('relatedfield')] = \"true\";\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    valuescript: currToEdit.getProp('valuescript'),\n                                    readonlyshowvalonly: currToEdit.getProp('readonlyshowvalonly'),\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    mobile: currToEdit.getProp('mobile'),\n                                    discript: currToEdit.getProp('discript'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    editmode: currToEdit.getProp('editmode'),\n                                    validatelibs: currToEdit.getProp(\"validatelibs\"),\n                                    validaterule: currToEdit.getProp(\"validaterule\"),\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    isdefaultvalue: currToEdit.getProp(\"isdefaultvalue\"),\n                                    allName: form.allName,\n                                    allDeptName: form.allDeptName,\n                                    processdescription: currToEdit.getProp(\"processdescription\") == \"[];[]\" ? \"\" : currToEdit.getProp(\"processdescription\"),\n                                    relatedFieldOptions: relatedFieldOptions,\n                                    limitbyuser: currToEdit.getProp(\"limitbyuser\"),\n                                    allowempty: currToEdit.getProp(\"allowempty\"),\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    instantvalidate: currToEdit.getProp(\"instantvalidate\")\n                                    //                            relatedField:currToEdit.getProp(\"relatedField\"),\n\n                                };var deptData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], deptData, 'editDept-tmpl');\n\n                                $container.html($html);\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                            });\n                            break;\n                        case 'selectaboutfield':\n                            $.when(api.getTemplete('editSelectaboutfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n                                config.validatelibsOption.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('validatelibs')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.modules[currToEdit.getProp('module')] = \"true\";\n                                config.dialogview[currToEdit.getProp('dialogview')] = \"true\";\n                                config.optionsvalue[currToEdit.getProp('optionsvalue')] = \"true\";\n                                config.optionstext[currToEdit.getProp('optionstext')] = \"true\";\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    valuescript: currToEdit.getProp('valuescript'),\n\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    discript: currToEdit.getProp('discript'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    editmode: currToEdit.getProp('editmode'),\n                                    validatelibs: currToEdit.getProp(\"validatelibs\"),\n                                    validaterule: currToEdit.getProp(\"validaterule\"),\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    isdefaultvalue: currToEdit.getProp(\"isdefaultvalue\"),\n                                    optionseditmode: currToEdit.getProp(\"optionseditmode\"),\n                                    allName: form.allName,\n                                    processdescription: currToEdit.getProp(\"processdescription\") == \"[];[]\" ? \"\" : currToEdit.getProp(\"processdescription\"),\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    optionsscript: currToEdit.getProp(\"optionsscript\"),\n                                    instantvalidate: currToEdit.getProp(\"instantvalidate\")\n                                };\n                                var selectaboutfieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], selectaboutfieldData, 'editSelectaboutfield-tmpl');\n\n                                $container.html($html);\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                            });\n                            break;\n                        case 'treedepartmentfield':\n\n                            $.when(api.getTemplete('editTreedepartmentfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n                                config.datatexttypes.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('texttype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.validatelibsOption.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('validatelibs')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    valuescript: currToEdit.getProp('valuescript'),\n\n                                    readonlyshowvalonly: currToEdit.getProp('readonlyshowvalonly'),\n\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    mobile: currToEdit.getProp('mobile'),\n                                    discript: currToEdit.getProp('discript'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    validatelibs: currToEdit.getProp(\"validatelibs\"),\n                                    validaterule: currToEdit.getProp(\"validaterule\"),\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    isdefaultvalue: currToEdit.getProp(\"isdefaultvalue\"),\n                                    limit: currToEdit.getProp(\"limit\"),\n                                    allName: form.allName,\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    instantvalidate: currToEdit.getProp(\"instantvalidate\")\n                                };\n\n                                var treedepartmentfieldData = $.extend({}, baseData, config);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], treedepartmentfieldData, 'editTreedepartmentfield-tmpl');\n\n                                $container.html($html);\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                            });\n                            break;\n                        case 'userfield':\n                            $.when(api.getTemplete('editUserfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n\n                                config.datatexttypes.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('texttype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.selectModeOption.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('selectmode')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.validatelibsOption.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('validatelibs')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                // config.datatexttypes[currToEdit.getProp('texttype')] = \"true\";\n                                // config.selectModeOption[currToEdit.getProp('selectmode')==\"multiselect\"?'澶氶€�':'鍗曢€�'] = \"true\";\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    valuescript: currToEdit.getProp('valuescript'),\n\n                                    readonlyshowvalonly: currToEdit.getProp('readonlyshowvalonly'),\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    mobile: currToEdit.getProp('mobile'),\n                                    discript: currToEdit.getProp('discript'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    editmode: currToEdit.getProp('editmode'),\n                                    validatelibs: currToEdit.getProp(\"validatelibs\"),\n                                    validaterule: currToEdit.getProp(\"validaterule\"),\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    isdefaultvalue: currToEdit.getProp(\"isdefaultvalue\"),\n                                    allName: form.allName,\n                                    processdescription: currToEdit.getProp(\"processdescription\") == \"[];[]\" ? \"\" : currToEdit.getProp(\"processdescription\"),\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    instantvalidate: currToEdit.getProp(\"instantvalidate\")\n                                };\n                                var userfieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], userfieldData, 'editUserfield-tmpl');\n\n                                $container.html($html);\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                            });\n                            break;\n                        case 'suggestfield':\n                            $.when(api.getTemplete('editSuggestfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n                                config.datatexttypes.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('texttype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.validatelibsOption.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('validatelibs')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.modules[currToEdit.getProp('module')] = \"true\";\n                                config.dialogview[currToEdit.getProp('dialogview')] = \"true\";\n                                config.optionsvalue[currToEdit.getProp('optionsvalue')] = \"true\";\n                                config.optionstext[currToEdit.getProp('optionstext')] = \"true\";\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    valuescript: currToEdit.getProp('valuescript'),\n\n                                    readonlyshowvalonly: currToEdit.getProp('readonlyshowvalonly'),\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    mobile: currToEdit.getProp('mobile'),\n                                    discript: currToEdit.getProp('discript'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    editmode: currToEdit.getProp('editmode'),\n                                    validatelibs: currToEdit.getProp(\"validatelibs\"),\n                                    validaterule: currToEdit.getProp(\"validaterule\"),\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    isdefaultvalue: currToEdit.getProp(\"isdefaultvalue\"),\n                                    allName: form.allName,\n                                    processdescription: currToEdit.getProp(\"processdescription\") == \"[];[]\" ? \"\" : currToEdit.getProp(\"processdescription\"),\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    optionseditmode: currToEdit.getProp(\"optionseditmode\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    datamode: currToEdit.getProp('datamode'),\n                                    optionsscript: currToEdit.getProp('optionsscript')\n                                };\n                                var suggestfieldData = $.extend({}, baseData, config);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], suggestfieldData, 'editSuggestfield-tmpl');\n\n                                $container.html($html);\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").off(\"click\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").off(\"click\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                            });\n                            break;\n                        case 'button':\n                            $.when(api.getTemplete('editButton-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n                                config.actTypeOption.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('acttype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                // config.actTypeOption[currToEdit.getProp('acttype')]=\"true\";\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    discript: currToEdit.getProp('discript'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    isdefaultvalue: currToEdit.getProp(\"isdefaultvalue\"),\n                                    allName: form.allName,\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    acttype: currToEdit.getProp(\"acttype\"),\n                                    beforeactionscript: currToEdit.getProp(\"beforeactionscript\"),\n                                    afteractionscript: currToEdit.getProp(\"afteractionscript\"),\n                                    statetoshow: currToEdit.getProp(\"statetoshow\"),\n                                    filenamescript: currToEdit.getProp(\"filenamescript\")\n                                };\n                                var buttonData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], buttonData, 'editButton-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                            });\n                            break;\n                        case 'viewdialogfield':\n                            $.when(api.getTemplete('editViewdialogfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n                                var addMap = '<div style=\"display:flex;\">\\n                                \\u4ECE\\n                                <select id=\\'colname\\' name=\"colname\" class=\"form-control\"  style=\"width:100px\">';\n\n                                config.colnameOption.forEach(function (val) {\n                                    addMap += '<option value=' + val.value + '>' + val.name + '</option>';\n                                });\n                                addMap += '</select>\\n                                \\u81F3\\n                                <select id=\\'fldname\\' name=\"fldname\" class=\"form-control\"  style=\"width:140px\">';\n                                form.allName.forEach(function (val) {\n                                    addMap += '<option value=' + val.name + '>' + val.name + '</option>';\n                                });\n                                addMap += '</select>\\n                                <button class=\"btn btn-primary d-block\" id=\"delmapping\">\\u5220\\u9664</button>\\n                            </div>';\n                                config.moduleTest.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('module')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.moduleTest.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('dialogview')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.maximizationOption.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('maximization')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    mobile: currToEdit.getProp('mobile'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    allName: form.allName,\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    caption: currToEdit.getProp(\"caption\"),\n                                    opentype: currToEdit.getProp(\"opentype\"),\n                                    selectone: currToEdit.getProp(\"selectone\"),\n                                    mutilselect: currToEdit.getProp(\"mutilselect\"),\n                                    allowviewdoc: currToEdit.getProp(\"allowviewdoc\"),\n                                    mapping: currToEdit.getProp(\"mapping\"),\n                                    okscript: currToEdit.getProp(\"okscript\"),\n                                    callbackscript: currToEdit.getProp(\"callbackscript\"),\n                                    divheight: currToEdit.getProp(\"divheight\"),\n                                    divwidth: currToEdit.getProp(\"divwidth\")\n\n                                };\n                                var viewdialogfieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], viewdialogfieldData, 'editViewdialogfield-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                                //鏄犲皠鐨勬坊鍔犲瓧娈靛拰鍒犻櫎\n                                $container.find(\"button[id='addmapping']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(addMap);\n                                    $container.find(\"button[id='delmapping']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.mapping.splice($(event.target.parentElement).index() - 3, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delmapping']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.mapping.splice($(event.target.parentElement).index() - 3, 1);\n                                });\n                            });\n                            break;\n                        case 'tabfield':\n                            $.when(api.getTemplete('editTabfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n\n                                config.showmodes.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('showmode')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                var arr = [].concat(_toConsumableArray(currToEdit.getProp(\"relstr\")));\n                                var num = 0;\n                                for (var rel = 0; rel < arr.length; rel++) {\n                                    if (arr[rel].name == \"\") {\n                                        currToEdit.getProp(\"relstr\").splice(rel - num, 1);\n                                        num++;\n                                    }\n                                }\n                                var baseData = {\n                                    value: currToEdit.getProp('value'),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    showmode: currToEdit.getProp(\"showmode\"),\n                                    allowsamename: currToEdit.getProp(\"allowsamename\"),\n                                    relstr: currToEdit.getProp(\"relstr\"),\n                                    selectedscript: currToEdit.getProp(\"selectedscript\")\n                                };\n                                var tabfieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], tabfieldData, 'editTabfield-tmpl');\n\n                                $container.html($html);\n                                $container.find(\"button[id='addTabfield']\").on(\"click\", function (event) {\n                                    var relstrLength = currToEdit.relstr.length;\n                                    var tabfieldCon = '<div class=\"input-group\">\\n                                    <input type=\\'text\\' name=\"name\" id=\"name' + relstrLength + '\" class=\"form-control d-block widthAuto\"   />\\n                                    <select id=\\'type' + relstrLength + '\\' name=\"type\" class=\"form-control\">';\n\n                                    for (var a = 0; a < config.tabfieldtype.length; a++) {\n                                        tabfieldCon += '<option value=' + config.tabfieldtype[a].value + '>' + config.tabfieldtype[a].name + '</option>';\n                                    }\n                                    tabfieldCon += '</select>\\n                                    <select id=\\'module' + relstrLength + '\\' name=\"module\" class=\"form-control\">';\n                                    for (var b = 0; b < config.tabfieldtest.length; b++) {\n                                        tabfieldCon += '<option value=' + config.tabfieldtest[b].value + '>' + config.tabfieldtest[b].name + '</option>';\n                                    }\n                                    tabfieldCon += '</select>\\t\\n                                    <select id=\\'formId' + relstrLength + '\\' name=\"formId\" class=\"form-control\">';\n                                    for (var c = 0; c < config.tabfieldtest.length; c++) {\n                                        tabfieldCon += '<option value=' + config.tabfieldtest[c].value + '>' + config.tabfieldtest[c].name + '</option>';\n                                    }\n                                    tabfieldCon += '</select>\\n                                    <input type=\"checkbox\" style=\"height:34px;\" name=\"calculateOnRefresh\" id=\"calculateOnRefresh' + relstrLength + '\" class=\"checkbox\" checked/>\\n                                    <input type=\"checkbox\" style=\"height:34px;\" name=\"relate\" id=\"relate' + relstrLength + '\" class=\"checkbox\"  />\\n                                    <textarea id=\"hiddenScript' + relstrLength + '\" style=\"height:34px;\" name=\"hiddenScript\"></textarea>\\n                                    <textarea id=\"readOnlyScript' + relstrLength + '\" style=\"height:34px;\" name=\"readOnlyScript\"></textarea>\\n                                    <textarea id=\"hiddenPrintScript' + relstrLength + '\" style=\"height:34px;\" name=\"hiddenPrintScript\"></textarea>\\n                                    <button class=\"btn btn-primary d-block\" id=\"delTabfield\">\\u5220\\u9664</button>\\n                                </div>';\n                                    $(event.currentTarget).next().append(tabfieldCon);\n                                    currToEdit.relstr.push({\n                                        \"name\": \"\",\n                                        \"type\": \"\",\n                                        \"module\": \"\",\n                                        \"moduleId\": \"\",\n                                        \"formId\": \"\",\n                                        \"hiddenScript\": \"\",\n                                        \"readOnlyScript\": \"\",\n                                        \"hiddenPrintScript\": \"\",\n                                        \"refreshOnChanged\": \"\",\n                                        \"calculateOnRefresh\": \"true\",\n                                        \"relate\": \"false\"\n                                    });\n                                    $container.find(\"button[id='delTabfield']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.relstr.splice($(event.target.parentElement).index() - 1, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delTabfield']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.relstr.splice($(event.target.parentElement).index() - 1, 1);\n                                });\n                            });\n                            break;\n                        case 'calctextfield':\n                            $.when(api.getTemplete('editCalctextfield-tmpl'), api.getJSON()).done(function (tml, json) {\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    calculateonrefresh: currToEdit.getProp(\"calculateonrefresh\"),\n                                    valuescript: currToEdit.getProp(\"valuescript\")\n\n                                };\n                                var calctextfieldData = $.extend({}, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], calctextfieldData, 'editCalctextfield-tmpl');\n\n                                $container.html($html);\n                            });\n                            break;\n                        case 'includefield':\n                            $.when(api.getTemplete('editIncludefield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n                                config.includetypes.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('includetype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.moduless.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('module')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.viewids.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('viewid')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    valuescript: currToEdit.getProp('valuescript'),\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    isdefaultvalue: currToEdit.getProp(\"isdefaultvalue\"),\n                                    allName: form.allName,\n                                    processdescription: currToEdit.getProp(\"processdescription\") == \"[];[]\" ? \"\" : currToEdit.getProp(\"processdescription\"),\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    relate: currToEdit.getProp(\"relate\"),\n                                    fixation: currToEdit.getProp(\"fixation\"),\n                                    fixationheight: currToEdit.getProp(\"fixationheight\"),\n                                    editmode: currToEdit.getProp(\"editmode\")\n                                };\n                                var includefieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], includefieldData, 'editIncludefield-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                            });\n                            break;\n                        case 'surveyfield':\n                            $.when(api.getTemplete('editSurveyfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n\n                                    mobile: currToEdit.getProp(\"mobile\"),\n                                    discript: currToEdit.getProp(\"discript\"),\n                                    questionscript: currToEdit.getProp(\"questionscript\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\")\n                                };\n                                var surveyfieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], surveyfieldData, 'editSurveyfield-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                            });\n                            break;\n                        case 'attachment':\n                            $.when(api.getTemplete('editAttachment-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n\n                                config.validatelibsOption.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('validatelibs')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    valuescript: currToEdit.getProp('valuescript'),\n\n                                    readonlyshowvalonly: currToEdit.getProp('readonlyshowvalonly'),\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    mobile: currToEdit.getProp('mobile'),\n                                    discript: currToEdit.getProp('discript'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    validatelibs: currToEdit.getProp(\"validatelibs\"),\n                                    validaterule: currToEdit.getProp(\"validaterule\"),\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    allName: form.allName,\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    instantvalidate: currToEdit.getProp(\"instantvalidate\"),\n                                    filetype: currToEdit.getProp(\"filetype\"),\n                                    customizetype: currToEdit.getProp(\"customizetype\"),\n                                    limitsize: currToEdit.getProp(\"limitsize\"),\n                                    limitnumber: currToEdit.getProp(\"limitnumber\"),\n                                    filepattern: currToEdit.getProp(\"filepattern\"),\n                                    filecatalog: currToEdit.getProp(\"filecatalog\"),\n                                    previewedit: currToEdit.getProp(\"previewedit\"),\n                                    openwatermark: currToEdit.getProp(\"openwatermark\"),\n                                    supportsorting: currToEdit.getProp(\"supportsorting\"),\n                                    watermarksupportmode: currToEdit.getProp(\"watermarksupportmode\"),\n                                    watermarkscript: currToEdit.getProp(\"watermarkscript\")\n                                };\n                                var attachmentData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], attachmentData, 'editAttachment-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                            });\n                            break;\n                        case 'imageuploadfield':\n                            $.when(api.getTemplete('editImageuploadfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    valuescript: currToEdit.getProp('valuescript'),\n\n                                    readonlyshowvalonly: currToEdit.getProp('readonlyshowvalonly'),\n                                    refreshonchanged: currToEdit.getProp('refreshonchanged'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    mobile: currToEdit.getProp('mobile'),\n                                    discript: currToEdit.getProp('discript'),\n                                    refreshmode: currToEdit.getProp('refreshmode'),\n                                    isLimited: false,\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    allName: form.allName,\n                                    refreshfields: currToEdit.getProp(\"refreshfields\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    limitsize: currToEdit.getProp(\"limitsize\"),\n                                    limitnumber: currToEdit.getProp(\"limitnumber\"),\n                                    filepattern: currToEdit.getProp(\"filepattern\"),\n                                    filecatalog: currToEdit.getProp(\"filecatalog\"),\n                                    imgh: currToEdit.getProp(\"imgh\"),\n                                    imgw: currToEdit.getProp(\"imgw\")\n\n                                };\n                                var imageuploadfieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], imageuploadfieldData, 'editImageuploadfield-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                                //灞€閮ㄥ埛鏂扮殑娣诲姞瀛楁鍜屽垹闄n                                $container.find(\"button[id='addRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).append(h);\n                                    $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                        $(event.currentTarget.parentElement).remove();\n                                        currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                    });\n                                });\n                                $container.find(\"button[id='delRefreshField']\").on(\"click\", function (event) {\n                                    $(event.currentTarget.parentElement).remove();\n                                    currToEdit.refreshfields.splice($(event.target.parentElement).index() - 2, 1);\n                                });\n                            });\n                            break;\n                        case 'onlinetakephotofield':\n                            $.when(api.getTemplete('editOnlinetakephotofield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    valuescript: currToEdit.getProp('valuescript'),\n                                    calculateonrefresh: currToEdit.getProp('calculateonrefresh'),\n                                    discript: currToEdit.getProp('discript'),\n                                    isLimited: false,\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    allName: form.allName,\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    imgh: currToEdit.getProp(\"imgh\"),\n                                    imgw: currToEdit.getProp(\"imgw\"),\n                                    album: currToEdit.getProp(\"album\")\n                                };\n                                var onlinetakephotofieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], onlinetakephotofieldData, 'editOnlinetakephotofield-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                            });\n                            break;\n                        case 'weixingpsfield':\n                            $.when(api.getTemplete('editWeixingpsfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    discript: currToEdit.getProp('discript'),\n                                    isLimited: false,\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    refreshonchanged: currToEdit.getProp(\"refreshonchanged\")\n                                };\n                                var weixingpsfieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], weixingpsfieldData, 'editWeixingpsfield-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                            });\n                            break;\n                        case 'weixinrecordfield':\n                            $.when(api.getTemplete('editWeixinrecordfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    discript: currToEdit.getProp('discript'),\n                                    isLimited: false,\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    mobile: currToEdit.getProp(\"mobile\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\")\n                                };\n                                var weixinrecordfieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], weixinrecordfieldData, 'editWeixinrecordfield-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                            });\n                            break;\n                        case 'qrcodefield':\n                            $.when(api.getTemplete('editQrcodefield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    discript: currToEdit.getProp('discript'),\n                                    isLimited: false,\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    mobile: currToEdit.getProp(\"mobile\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    valuescript: currToEdit.getProp(\"valuescript\"),\n                                    calculateonrefresh: currToEdit.getProp(\"calculateonrefresh\"),\n                                    size: currToEdit.getProp(\"size\"),\n                                    handletype: currToEdit.getProp(\"handletype\")\n\n                                };\n                                var qrcodefieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], qrcodefieldData, 'editQrcodefield-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                            });\n                            break;\n                        case 'mapfield':\n                            $.when(api.getTemplete('editMapfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n                                config.maptypes.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('maptype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                config.opentypes.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('opentype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    discript: currToEdit.getProp('discript'),\n                                    isLimited: false,\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    calculateonrefresh: currToEdit.getProp(\"calculateonrefresh\")\n                                };\n                                var mapfieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], mapfieldData, 'editMapfield-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                            });\n                            break;\n                        case 'genericwordfield':\n                            $.when(api.getTemplete('editGenericwordfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n                                config.wordopentypes.forEach(function (val) {\n                                    if (val.value == currToEdit.getProp('opentype')) {\n                                        val.select = \"true\";\n                                    }\n                                });\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    discript: currToEdit.getProp('discript'),\n                                    isLimited: false,\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    calculateonrefresh: currToEdit.getProp(\"calculateonrefresh\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\")\n                                };\n                                var genericwordfieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], genericwordfieldData, 'editGenericwordfield-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                            });\n                            break;\n                        case 'htmleditorfield':\n                            $.when(api.getTemplete('editHtmleditorfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    discript: currToEdit.getProp('discript'),\n                                    isLimited: false,\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    calculateonrefresh: currToEdit.getProp(\"calculateonrefresh\"),\n                                    readonlyscript: currToEdit.getProp(\"readonlyscript\"),\n                                    mobile: currToEdit.getProp(\"mobile\"),\n                                    areawidth: currToEdit.getProp(\"areawidth\"),\n                                    areaheight: currToEdit.getProp(\"areaheight\"),\n\n                                    editmode: currToEdit.getProp(\"editmode\"),\n                                    processdescription: currToEdit.getProp(\"processdescription\"),\n                                    valuescript: currToEdit.getProp(\"valuescript\"),\n                                    isdefaultvalue: currToEdit.getProp(\"isdefaultvalue\")\n\n                                };\n                                var htmleditorfieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], htmleditorfieldData, 'editHtmleditorfield-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                            });\n                            break;\n                        case 'flowhistoryfield':\n                            $.when(api.getTemplete('editFlowhistoryfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    discript: currToEdit.getProp('discript'),\n                                    isLimited: false,\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    mobile: currToEdit.getProp(\"mobile\"),\n                                    showmode: currToEdit.getProp(\"showmode\")\n\n                                };\n                                var flowhistoryfieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], flowhistoryfieldData, 'editFlowhistoryfield-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                            });\n                            break;\n                        case 'flowreminderhistoryfield':\n                            $.when(api.getTemplete('editFlowreminderhistoryfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    discript: currToEdit.getProp('discript'),\n                                    isLimited: false,\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\")\n                                };\n                                var flowreminderhistoryfieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], flowreminderhistoryfieldData, 'editFlowreminderhistoryfield-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                            });\n                            break;\n                        case 'informationfeedbackfield':\n                            $.when(api.getTemplete('editInformationfeedbackfield-tmpl'), api.getJSON()).done(function (tml, json) {\n                                var config = json[0];\n\n                                var baseData = {\n                                    name: currToEdit.getProp('name'),\n                                    value: currToEdit.getProp('value'),\n                                    discript: currToEdit.getProp('discript'),\n                                    isLimited: false,\n                                    hiddenscript: currToEdit.getProp(\"hiddenscript\"),\n                                    hiddenvalue: currToEdit.getProp(\"hiddenvalue\"),\n                                    hiddenprintscript: currToEdit.getProp(\"hiddenprintscript\"),\n                                    printhiddenvalue: currToEdit.getProp(\"printhiddenvalue\"),\n                                    isshowlabel: currToEdit.getProp(\"isshowlabel\"),\n                                    labelvalue: currToEdit.getProp(\"labelvalue\"),\n                                    areawidth: currToEdit.getProp(\"areawidth\"),\n                                    areaheight: currToEdit.getProp(\"areaheight\")\n                                };\n                                var informationfeedbackfieldData = $.extend({}, config, baseData);\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], informationfeedbackfieldData, 'editInformationfeedbackfield-tmpl');\n\n                                $container.html($html);\n\n                                $container.find(\"input[type='radio'], input[type='checkbox'], select\").on(\"change\", function () {\n                                    that.changeEditContentPanel(this);\n                                });\n                            });\n                            break;\n                        default:\n                            $.when(api.getTemplete('editFormPanel-tmpl'), api.getJSON()).done(function (tml, json) {\n\n                                $html = _utility.Helper.getInstance().handleTemplete(tml[0], {}, 'editFormPanel-tmpl');\n\n                                $container.html($html);\n                            });\n                            break;\n\n                    }\n                }\n                this.registerEvent($container);\n            }\n        }\n    }, {\n        key: 'changeEditContentPanel',\n        value: function changeEditContentPanel(dom) {\n            var $this = $(dom);\n            var name = $this.attr(\"name\");\n            var value = $this.val();\n\n            var $panels = $(\"div[data-componentName='\" + name + \"']\");\n\n            $panels.each(function () {\n                var dataValue = $(this).data(\"value\");\n                if (typeof dataValue == \"boolean\") {\n                    dataValue = dataValue ? \"true\" : \"false\";\n                }\n                if (dataValue == value && $(this).hasClass(\"d-none\")) {\n                    $(this).removeClass(\"d-none\");\n                } else {\n                    $(this).addClass(\"d-none\");\n                }\n            });\n        }\n    }, {\n        key: 'registerEvent',\n        value: function registerEvent(container) {\n            var $container = $(container);\n            var form = this.form;\n            var currToEdit = form.getCurrToEdit();\n            // const tree = Tree.getInstance();\n            var need = false;\n            $container.off('input change').on('input change', function (e) {\n                // 灞炴€ч潰鏉跨殑鏂囨湰妗嗕簨浠禱n\n                var target = $(e.target);\n                var key = target.attr('id') ? target.attr('id') : target.attr('name');\n                var type = target.attr('type');\n                var prop = {};\n                if (type == 'number') {\n                    prop[key] = parseInt(target.val());\n                } else if (type == 'checkbox') {\n                    prop[key] = target.prop('checked');\n                } else {\n                    prop[key] = target.val();\n                }\n                if (key == \"refreshfields\") {\n                    // if(currToEdit.refreshfields.indexOf(target.val())==-1){\n                    currToEdit.refreshfields[$(event.target.parentElement).index() - 2] = target.val();\n\n                    // }\n\n                    prop = {};\n                } else if (key == \"labelvalue\") {\n                    var id = void 0;\n                    if (currToEdit) id = \"#\" + currToEdit.id;\n\n                    console.log($(form.panel).find(id));\n                    var width = $(form.panel).find(id).width();\n                    var smallwidth = $(form.panel).find(id).children().eq(1).width();\n                    if (width && smallwidth) {\n                        prop.width = width;\n                        prop.smallwidth = smallwidth;\n                        need = true;\n                    }\n                } else if (key == \"isshowlabel\") {\n                    if (target.prop(\"checked\") == false) {\n                        var id2 = void 0;\n                        if (currToEdit) id2 = \"#\" + currToEdit.id;\n\n                        console.log($(form.panel).find(id2));\n                        var smallwidth2 = $(form.panel).find(id2).children().eq(1).width();\n                        if (smallwidth2) {\n                            prop.width = smallwidth2;\n                            prop.smallwidth = smallwidth2;\n                            need = true;\n                        }\n                    }\n                } else if (key == \"statetoshows\") {\n                    if ($(e.target).prop('checked')) {\n                        if ($(e.target).siblings(\"input[name='statetoshow']\").val() != \"\") {\n                            var arr = $(e.target).siblings(\"input[name='statetoshow']\").val().split(\";\");\n                            var index = -1;\n                            arr.forEach(function (val, ind) {\n                                if (val == target.val()) {\n                                    index = ind;\n                                }\n                            });\n                            if (index == -1) $(e.target).siblings(\"input[name='statetoshow']\").val(target.val() + \";\" + $(e.target).siblings(\"input[name='statetoshow']\").val());\n                        } else {\n                            $(e.target).siblings(\"input[name='statetoshow']\").val(target.val());\n                        }\n                        // if($(e.target).siblings(\"input[name='statetoshow']\").val().indexOf(target.val())==-1)\n                        // $(e.target).siblings(\"input[name='statetoshow']\").val($(e.target).siblings(\"input[name='statetoshow']\").val()+target.val())\n                    } else {\n                        var arr2 = $(e.target).siblings(\"input[name='statetoshow']\").val().split(\";\");\n                        var index2 = -1;\n                        arr2.forEach(function (val, ind) {\n                            if (val == target.val()) {\n                                index2 = ind;\n                            }\n                        });\n                        if (index2 != -1) arr2.splice(index2, 1);\n                        $(e.target).siblings(\"input[name='statetoshow']\").val(arr2.join(\";\"));\n                        // $(e.target).siblings(\"input[name='statetoshow']\").val($(e.target).siblings(\"input[name='statetoshow']\").val().replace(target.val(),\"\"))\n                    }\n                } else if (key == \"colname\" || key == \"fldname\") {\n                    if (target.siblings(\"select\").val()) {\n                        prop = {};\n                        prop[\"mapping\"] = [];\n                        if (key == \"colname\") {\n                            var a = {};\n                            a[target.val()] = target.siblings(\"select\").val();\n                            prop[\"mapping\"].push(a);\n                        } else {\n                            var a2 = {};\n                            a2[target.siblings(\"select\").val()] = target.val();\n                            prop[\"mapping\"].push(a2);\n                        }\n                    }\n                } else if (key == \"selectone\") {\n                    if ($(e.target).prop('checked')) target.parent().next().next().children(\"input\").prop(\"disabled\", \"disabled\");else target.parent().next().next().children(\"input\").prop(\"disabled\", false);\n                } else if (key == \"mutilselect\") {\n                    if ($(e.target).prop('checked')) target.parent().prev().prev().children(\"input\").prop(\"disabled\", \"disabled\");else target.parent().prev().prev().children(\"input\").prop(\"disabled\", false);\n                } else if (key == \"watermarksupportmode\") {\n                    // if($(e.target).prop('checked')){\n                    var watermarksupportmodevalue = \"\";\n                    for (var b = 0; b < $(e.target).parent().parent().children(\"label\").length; b++) {\n                        if ($(e.target).parent().parent().children(\"label\").eq(b).children(\"input\").prop(\"checked\")) {\n                            if (b != 0) {\n                                watermarksupportmodevalue += \",\";\n                            }\n                            watermarksupportmodevalue += $(e.target).parent().parent().children(\"label\").eq(b).children(\"input\").val();\n                        }\n                    }\n                    prop[key] = watermarksupportmodevalue;\n                }\n\n                if (currToEdit != null) {\n                    if (currToEdit.scope == \"tabfield\" && (key.indexOf(\"name\") == 0 || key.indexOf(\"type\") != -1 || key.indexOf(\"module\") != -1 || key.indexOf(\"moduleId\") != -1 || key.indexOf(\"formId\") != -1 || key.indexOf(\"hiddenScript\") != -1 || key.indexOf(\"readOnlyScript\") != -1 || key.indexOf(\"hiddenPrintScript\") != -1 || key.indexOf(\"refreshOnChanged\") != -1 || key.indexOf(\"calculateOnRefresh\") != -1 || key.indexOf(\"relate\") != -1)) {\n                        var relstrInd = parseInt(key.replace(/[a-z|A-Z]*/g, \"\"));\n                        var relstrId = key.replace(/[0-9]*/g, \"\");\n\n                        if (type == \"checkbox\") {\n                            currToEdit.relstr[relstrInd][relstrId] = target.prop('checked');\n                        } else {\n                            currToEdit.relstr[relstrInd][relstrId] = target.val();\n                        }\n                    }\n                    currToEdit.setProps(prop);\n                } else {\n                    form.setProps(prop);\n                }\n                if (need) {\n                    form.resetChunkPosition();\n                }\n                form.repaint();\n                e.preventDefault();\n                e.stopPropagation();\n                // tree.render();\n            });\n            $container.off('select click').on('select click', function (e) {\n                var target = $(e.target);\n                var key = target.parent().attr('id') ? target.parent().attr('id') : target.parent().attr('name');\n                // const key2 = target.attr('id')?target.attr('id'):target.attr('name');\n\n                var val = target.val();\n                //鍊艰璁¤剼鏈殑鍐呭\n                if (key == \"field\" || key == \"fieldOption\") {\n                    //鍊�-璁捐鑴氭湰鐨勯棶棰榎n                    target.parent().siblings(\"textarea\").val(target.parent().siblings(\"textarea\").val() + target.parent().val());\n                    //currToEdit.processdescription=target.parent().siblings(\"textarea\").val();\n                    currToEdit.setProps({ \"processdescription\": target.parent().siblings(\"textarea\").val() });\n                }\n                if (val == \"clear\") {\n                    target.parent().siblings(\"textarea\").val(\"\");\n                    currToEdit.processdescription = \"\";\n                }\n                // //灞€閮ㄥ埛鏂扮殑\n                // if(key2==\"refreshfields\"){\n                //     currToEdit.refreshfields+=val;\n                // }\n                form.repaint();\n            });\n        }\n    }]);\n\n    return PropsPanel;\n}();\n\nexports.default = PropsPanel;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3NyYy9mb3JtL3ZpZXcvUHJvcHNQYW5lbC5qcz9jMDNiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBpLCBIZWxwZXJ9IGZyb20gJy4uLy4uL3V0aWxpdHknO1xyXG5cclxuY2xhc3MgUHJvcHNQYW5lbHtcclxuICAgIHN0YXRpYyBnZXRJbnN0YW5jZSgpIHtcclxuXHRcdGlmKCFQcm9wc1BhbmVsLmluc3RhbmNlIHx8ICEoUHJvcHNQYW5lbC5pbnN0YW5jZSBpbnN0YW5jZW9mIFByb3BzUGFuZWwpKSB7XHJcblx0XHRcdFByb3BzUGFuZWwuaW5zdGFuY2UgPSBuZXcgUHJvcHNQYW5lbCgpO1xyXG5cdFx0fVxyXG5cdFx0Ly9jb25zb2xlLmxvZyhUcmVlLmluc3RhbmNlKVxyXG5cdFx0cmV0dXJuIFByb3BzUGFuZWwuaW5zdGFuY2U7XHJcblx0fVxyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgICAgICB0aGlzLmZvcm09bnVsbDtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lcj1udWxsO1xyXG4gICAgICAgIHRoaXMuYXBpID0gbmV3IEFwaSgpO1xyXG5cclxuICAgIH1cclxuICAgIHNldFByb3BzKG5ld1Byb3BzKSB7XHJcblx0XHRPYmplY3QuYXNzaWduKHRoaXMsIG5ld1Byb3BzKTtcclxuXHR9XHJcblx0XHJcblx0Z2V0UHJvcChwcm9wKSB7XHJcblx0XHRyZXR1cm4gdGhpc1twcm9wXTtcclxuXHR9XHJcbiAgICBpbml0KHBhcmFtcyl7XHJcbiAgICAgICAgdGhpcy5zZXRQcm9wcyhwYXJhbXMpO1xyXG5cdFx0dGhpcy5yZW5kZXIoKTtcclxuICAgIH1cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtO1xyXG5cdFx0Y29uc3QgYXBpID0gdGhpcy5hcGk7XHJcblx0XHRjb25zdCAkY29udGFpbmVyID0gJCh0aGlzLmNvbnRhaW5lcik7XHJcblx0XHRsZXQgdGhhdD10aGlzO1xyXG4gICAgICAgIGxldCAkaHRtbCA9ICcnO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwicHJvcHNcIilcclxuXHJcbiAgICAgICAgaWYoZm9ybSl7XHJcbiAgICAgICAgICAgIGxldCBjdXJyVG9FZGl0PWZvcm0uZ2V0Q3VyclRvRWRpdCgpO1xyXG4gICAgICAgICAgICBpZihjdXJyVG9FZGl0PT1udWxsKXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJwcm9wcyxudWxsXCIpXHJcblxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLlvZPliY3msqHmnInngrnlh7vlhYPntKBcIilcclxuICAgICAgICAgICAgICAgICQud2hlbihhcGkuZ2V0VGVtcGxldGUoJ2VkaXRGb3JtUGFuZWwtdG1wbCcpLCBhcGkuZ2V0SlNPTigpKS5kb25lKCh0bWwsIGpzb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRodG1sID0gIEhlbHBlci5nZXRJbnN0YW5jZSgpLmhhbmRsZVRlbXBsZXRlKHRtbFswXSwge30sJ2VkaXRGb3JtUGFuZWwtdG1wbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuaHRtbCgkaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwicHJvcHMsaGF2ZVwiKVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHNjb3BlPWN1cnJUb0VkaXQuc2NvcGU7XHJcbiAgICAgICAgICAgICAgICBsZXQgaD1gPGRpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb24gZC1pbmxpbmVcIj7lrZfmrrXlkI3np7A8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSdyZWZyZXNoZmllbGRzJyBuYW1lPVwicmVmcmVzaGZpZWxkc1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+PG9wdGlvbj7pgInmi6k8L29wdGlvbj5gO1xyXG4gICAgICAgICAgICAgICAgaWYoZm9ybS5hbGxOYW1lLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGs9MDtrPGZvcm0uYWxsTmFtZS5sZW5ndGg7aysrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaCs9YDxvcHRpb24gdmFsdWU9JHtmb3JtLmFsbE5hbWVba10udmFsdWV9PiR7Zm9ybS5hbGxOYW1lW2tdLm5hbWV9PC9vcHRpb24+YFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGgrPWA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgZC1ibG9ja1wiIGlkPVwiZGVsUmVmcmVzaEZpZWxkXCI+5Yig6ZmkPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PmA7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHN3aXRjaChzY29wZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5wdXQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkLndoZW4oYXBpLmdldFRlbXBsZXRlKCdlZGl0SW5wdXQtdG1wbCcpLCBhcGkuZ2V0SlNPTigpKS5kb25lKCh0bWwsIGpzb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25maWc9anNvblswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5pbnB1dFR5cGUuZm9yRWFjaCgodmFsKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbC52YWx1ZT09Y3VyclRvRWRpdC5nZXRQcm9wKCdmaWVsZHR5cGUnKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy50ZXh0dHlwZXMuZm9yRWFjaCgodmFsKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbC52YWx1ZT09Y3VyclRvRWRpdC5nZXRQcm9wKCd0ZXh0dHlwZScpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnNlbGVjdD1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLkZvY3VzU3dpdGNoS2V5LmZvckVhY2goKHZhbCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWwudmFsdWU9PWN1cnJUb0VkaXQuZ2V0UHJvcCgnZmllbGRrZXlldmVudCcpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnNlbGVjdD1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRlbGlic09wdGlvbi5mb3JFYWNoKCh2YWwpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsLnZhbHVlPT1jdXJyVG9FZGl0LmdldFByb3AoJ3ZhbGlkYXRlbGlicycpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnNlbGVjdD1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJhc2VEYXRhPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOmN1cnJUb0VkaXQuZ2V0UHJvcCgnbmFtZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkdHlwZTpjdXJyVG9FZGl0LmdldFByb3AoJ2ZpZWxkdHlwZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlcnBhdHRlcm46Y3VyclRvRWRpdC5nZXRQcm9wKCdudW1iZXJwYXR0ZXJuJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWx1ZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcCgndmFsdWVzY3JpcHQnKSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlzaG93dmFsb25seTpjdXJyVG9FZGl0LmdldFByb3AoJ3JlYWRvbmx5c2hvd3ZhbG9ubHknKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNob25jaGFuZ2VkOmN1cnJUb0VkaXQuZ2V0UHJvcCgncmVmcmVzaG9uY2hhbmdlZCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZW9ucmVmcmVzaDpjdXJyVG9FZGl0LmdldFByb3AoJ2NhbGN1bGF0ZW9ucmVmcmVzaCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vYmlsZTpjdXJyVG9FZGl0LmdldFByb3AoJ21vYmlsZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcCgnZGlzY3JpcHQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNobW9kZTpjdXJyVG9FZGl0LmdldFByb3AoJ3JlZnJlc2htb2RlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMaW1pdGVkOmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRtb2RlOmN1cnJUb0VkaXQuZ2V0UHJvcCgnZWRpdG1vZGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZWxpYnM6Y3VyclRvRWRpdC5nZXRQcm9wKFwidmFsaWRhdGVsaWJzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlcnVsZTpjdXJyVG9FZGl0LmdldFByb3AoXCJ2YWxpZGF0ZXJ1bGVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW52YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5wcmludHNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW5wcmludHNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcInByaW50aGlkZGVudmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwicmVhZG9ubHlzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNkZWZhdWx0dmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaXNkZWZhdWx0dmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsTmFtZTpmb3JtLmFsbE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2Rlc2NyaXB0aW9uOmN1cnJUb0VkaXQuZ2V0UHJvcChcInByb2Nlc3NkZXNjcmlwdGlvblwiKT09XCJbXTtbXVwiP1wiXCI6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJvY2Vzc2Rlc2NyaXB0aW9uXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hmaWVsZHM6Y3VyclRvRWRpdC5nZXRQcm9wKFwicmVmcmVzaGZpZWxkc1wiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3Nob3dsYWJlbDpjdXJyVG9FZGl0LmdldFByb3AoXCJpc3Nob3dsYWJlbFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImxhYmVsdmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFudHZhbGlkYXRlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImluc3RhbnR2YWxpZGF0ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbnB1dERhdGE9JC5leHRlbmQoe30sIGNvbmZpZywgYmFzZURhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRodG1sID0gIEhlbHBlci5nZXRJbnN0YW5jZSgpLmhhbmRsZVRlbXBsZXRlKHRtbFswXSwgaW5wdXREYXRhLCdlZGl0SW5wdXQtdG1wbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmh0bWwoJGh0bWwpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImlucHV0W3R5cGU9J3JhZGlvJ10sIGlucHV0W3R5cGU9J2NoZWNrYm94J10sIHNlbGVjdFwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2hhbmdlRWRpdENvbnRlbnRQYW5lbCh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+WxgOmDqOWIt+aWsOeahOa3u+WKoOWtl+auteWSjOWIoOmZpFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdhZGRSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkuYXBwZW5kKGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nZGVsUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRvRWRpdC5yZWZyZXNoZmllbGRzLnNwbGljZSgkKGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KS5pbmRleCgpLTIsMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJidXR0b25baWQ9J2RlbFJlZnJlc2hGaWVsZCddXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyVG9FZGl0LnJlZnJlc2hmaWVsZHMuc3BsaWNlKCQoZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQpLmluZGV4KCktMiwxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICd0ZXh0YXJlYSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQud2hlbihhcGkuZ2V0VGVtcGxldGUoJ2VkaXRUZXh0YXJlYS10bXBsJyksIGFwaS5nZXRKU09OKCkpLmRvbmUoKHRtbCwganNvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZz1qc29uWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRlbGlic09wdGlvbi5mb3JFYWNoKCh2YWwpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsLnZhbHVlPT1jdXJyVG9FZGl0LmdldFByb3AoJ3ZhbGlkYXRlbGlicycpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnNlbGVjdD1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJhc2VEYXRhPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOmN1cnJUb0VkaXQuZ2V0UHJvcCgnbmFtZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcCgndmFsdWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlc2NyaXB0JyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaG9uY2hhbmdlZDpjdXJyVG9FZGl0LmdldFByb3AoJ3JlZnJlc2hvbmNoYW5nZWQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdGVvbnJlZnJlc2g6Y3VyclRvRWRpdC5nZXRQcm9wKCdjYWxjdWxhdGVvbnJlZnJlc2gnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2JpbGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdtb2JpbGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoJ2Rpc2NyaXB0JyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaG1vZGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWZyZXNobW9kZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGltaXRlZDpmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0bW9kZTpjdXJyVG9FZGl0LmdldFByb3AoJ2VkaXRtb2RlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVsaWJzOmN1cnJUb0VkaXQuZ2V0UHJvcChcInZhbGlkYXRlbGlic1wiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZXJ1bGU6Y3VyclRvRWRpdC5nZXRQcm9wKFwidmFsaWRhdGVydWxlXCIpLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5zY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVuc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnByaW50c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJpbnRoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWFkb25seXNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2RlZmF1bHR2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJpc2RlZmF1bHR2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxOYW1lOmZvcm0uYWxsTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZGVzY3JpcHRpb246Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJvY2Vzc2Rlc2NyaXB0aW9uXCIpPT1cIltdO1tdXCI/XCJcIjpjdXJyVG9FZGl0LmdldFByb3AoXCJwcm9jZXNzZGVzY3JpcHRpb25cIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaGZpZWxkczpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWZyZXNoZmllbGRzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2hvd2xhYmVsOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzc2hvd2xhYmVsXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGFiZWx2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW50dmFsaWRhdGU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaW5zdGFudHZhbGlkYXRlXCIpLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0YXJlYURhdGE9JC5leHRlbmQoe30sY29uZmlnLCBiYXNlRGF0YSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGh0bWwgPSAgSGVscGVyLmdldEluc3RhbmNlKCkuaGFuZGxlVGVtcGxldGUodG1sWzBdLHRleHRhcmVhRGF0YSwnZWRpdFRleHRhcmVhLXRtcGwnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5odG1sKCRodG1sKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImlucHV0W3R5cGU9J3JhZGlvJ10sIGlucHV0W3R5cGU9J2NoZWNrYm94J10sIHNlbGVjdFwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2hhbmdlRWRpdENvbnRlbnRQYW5lbCh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+WxgOmDqOWIt+aWsOeahOa3u+WKoOWtl+auteWSjOWIoOmZpFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdhZGRSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkuYXBwZW5kKGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nZGVsUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRvRWRpdC5yZWZyZXNoZmllbGRzLnNwbGljZSgkKGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KS5pbmRleCgpLTIsMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nZGVsUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQucmVmcmVzaGZpZWxkcy5zcGxpY2UoJChldmVudC50YXJnZXQucGFyZW50RWxlbWVudCkuaW5kZXgoKS0yLDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdyYWRpbyc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQud2hlbihhcGkuZ2V0VGVtcGxldGUoJ2VkaXRSYWRpby10bXBsJyksIGFwaS5nZXRKU09OKCkpLmRvbmUoKHRtbCwganNvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZz1qc29uWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlnLmZvbnROYW1lW2N1cnJUb0VkaXQuZ2V0UHJvcCgnZm9udE5hbWUnKV0gPSBcInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5yYWRpb3RleHR0eXBlcy5mb3JFYWNoKCh2YWwpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsLnZhbHVlPT1jdXJyVG9FZGl0LmdldFByb3AoJ3RleHR0eXBlJykpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuc2VsZWN0PVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcudmFsaWRhdGVsaWJzT3B0aW9uLmZvckVhY2goKHZhbCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWwudmFsdWU9PWN1cnJUb0VkaXQuZ2V0UHJvcCgndmFsaWRhdGVsaWJzJykpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuc2VsZWN0PVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcucmFkaW9MYXlvdXQuZm9yRWFjaCgodmFsKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbC52YWx1ZT09Y3VyclRvRWRpdC5nZXRQcm9wKCdsYXlvdXQnKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5tb2R1bGVzW2N1cnJUb0VkaXQuZ2V0UHJvcCgnbW9kdWxlJyldPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRpYWxvZ3ZpZXdbY3VyclRvRWRpdC5nZXRQcm9wKCdkaWFsb2d2aWV3JyldPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLm9wdGlvbnN2YWx1ZVtjdXJyVG9FZGl0LmdldFByb3AoJ29wdGlvbnN2YWx1ZScpXT1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5vcHRpb25zdGV4dFtjdXJyVG9FZGl0LmdldFByb3AoJ29wdGlvbnN0ZXh0JyldPVwidHJ1ZVwiO1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmFzZURhdGE9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6Y3VyclRvRWRpdC5nZXRQcm9wKCduYW1lJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWx1ZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcCgndmFsdWVzY3JpcHQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNob25jaGFuZ2VkOmN1cnJUb0VkaXQuZ2V0UHJvcCgncmVmcmVzaG9uY2hhbmdlZCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZW9ucmVmcmVzaDpjdXJyVG9FZGl0LmdldFByb3AoJ2NhbGN1bGF0ZW9ucmVmcmVzaCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vYmlsZTpjdXJyVG9FZGl0LmdldFByb3AoJ21vYmlsZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcCgnZGlzY3JpcHQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNobW9kZTpjdXJyVG9FZGl0LmdldFByb3AoJ3JlZnJlc2htb2RlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMaW1pdGVkOmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRtb2RlOmN1cnJUb0VkaXQuZ2V0UHJvcCgnZWRpdG1vZGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZWxpYnM6Y3VyclRvRWRpdC5nZXRQcm9wKFwidmFsaWRhdGVsaWJzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlcnVsZTpjdXJyVG9FZGl0LmdldFByb3AoXCJ2YWxpZGF0ZXJ1bGVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW52YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5wcmludHNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW5wcmludHNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcInByaW50aGlkZGVudmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwicmVhZG9ubHlzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNkZWZhdWx0dmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaXNkZWZhdWx0dmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc2VkaXRtb2RlOmN1cnJUb0VkaXQuZ2V0UHJvcChcIm9wdGlvbnNlZGl0bW9kZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxOYW1lOmZvcm0uYWxsTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZGVzY3JpcHRpb246Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJvY2Vzc2Rlc2NyaXB0aW9uXCIpPT1cIltdO1tdXCI/XCJcIjpjdXJyVG9FZGl0LmdldFByb3AoXCJwcm9jZXNzZGVzY3JpcHRpb25cIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaGZpZWxkczpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWZyZXNoZmllbGRzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2hvd2xhYmVsOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzc2hvd2xhYmVsXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGFiZWx2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcIm9wdGlvbnNzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFudHZhbGlkYXRlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImluc3RhbnR2YWxpZGF0ZVwiKSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmFkaW9EYXRhPSQuZXh0ZW5kKHt9LCBjb25maWcsIGJhc2VEYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaHRtbCA9ICBIZWxwZXIuZ2V0SW5zdGFuY2UoKS5oYW5kbGVUZW1wbGV0ZSh0bWxbMF0sIHJhZGlvRGF0YSwnZWRpdFJhZGlvLXRtcGwnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5odG1sKCRodG1sKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImlucHV0W3R5cGU9J3JhZGlvJ10sIGlucHV0W3R5cGU9J2NoZWNrYm94J10sIHNlbGVjdFwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2hhbmdlRWRpdENvbnRlbnRQYW5lbCh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+WxgOmDqOWIt+aWsOeahOa3u+WKoOWtl+auteWSjOWIoOmZpFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdhZGRSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkuYXBwZW5kKGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nZGVsUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRvRWRpdC5yZWZyZXNoZmllbGRzLnNwbGljZSgkKGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KS5pbmRleCgpLTIsMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nZGVsUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQucmVmcmVzaGZpZWxkcy5zcGxpY2UoJChldmVudC50YXJnZXQucGFyZW50RWxlbWVudCkuaW5kZXgoKS0yLDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdjaGVja2JveCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQud2hlbihhcGkuZ2V0VGVtcGxldGUoJ2VkaXRDaGVja2JveC10bXBsJyksIGFwaS5nZXRKU09OKCkpLmRvbmUoKHRtbCwganNvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZz1qc29uWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnJhZGlvdGV4dHR5cGVzLmZvckVhY2goKHZhbCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWwudmFsdWU9PWN1cnJUb0VkaXQuZ2V0UHJvcCgndGV4dHR5cGUnKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0ZWxpYnNPcHRpb24uZm9yRWFjaCgodmFsKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbC52YWx1ZT09Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWxpZGF0ZWxpYnMnKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5yYWRpb0xheW91dC5mb3JFYWNoKCh2YWwpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsLnZhbHVlPT1jdXJyVG9FZGl0LmdldFByb3AoJ2xheW91dCcpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnNlbGVjdD1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlnLmZvbnROYW1lW2N1cnJUb0VkaXQuZ2V0UHJvcCgnZm9udE5hbWUnKV0gPSBcInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZy5yYWRpb0xheW91dFtjdXJyVG9FZGl0LmdldFByb3AoJ2xheW91dCcpPT1cImhvcml6b250YWxcIj9cIuawtOW5s1wiOlwi5Z6C55u0XCJdPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLm1vZHVsZXNbY3VyclRvRWRpdC5nZXRQcm9wKCdtb2R1bGUnKV09XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZGlhbG9ndmlld1tjdXJyVG9FZGl0LmdldFByb3AoJ2RpYWxvZ3ZpZXcnKV09XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcub3B0aW9uc3ZhbHVlW2N1cnJUb0VkaXQuZ2V0UHJvcCgnb3B0aW9uc3ZhbHVlJyldPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLm9wdGlvbnN0ZXh0W2N1cnJUb0VkaXQuZ2V0UHJvcCgnb3B0aW9uc3RleHQnKV09XCJ0cnVlXCI7XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiYXNlRGF0YT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpjdXJyVG9FZGl0LmdldFByb3AoJ25hbWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWx1ZXNjcmlwdCcpLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNob25jaGFuZ2VkOmN1cnJUb0VkaXQuZ2V0UHJvcCgncmVmcmVzaG9uY2hhbmdlZCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZW9ucmVmcmVzaDpjdXJyVG9FZGl0LmdldFByb3AoJ2NhbGN1bGF0ZW9ucmVmcmVzaCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vYmlsZTpjdXJyVG9FZGl0LmdldFByb3AoJ21vYmlsZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcCgnZGlzY3JpcHQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNobW9kZTpjdXJyVG9FZGl0LmdldFByb3AoJ3JlZnJlc2htb2RlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMaW1pdGVkOmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRtb2RlOmN1cnJUb0VkaXQuZ2V0UHJvcCgnZWRpdG1vZGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZWxpYnM6Y3VyclRvRWRpdC5nZXRQcm9wKFwidmFsaWRhdGVsaWJzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlcnVsZTpjdXJyVG9FZGl0LmdldFByb3AoXCJ2YWxpZGF0ZXJ1bGVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW52YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5wcmludHNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW5wcmludHNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcInByaW50aGlkZGVudmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwicmVhZG9ubHlzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNkZWZhdWx0dmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaXNkZWZhdWx0dmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc2VkaXRtb2RlOmN1cnJUb0VkaXQuZ2V0UHJvcChcIm9wdGlvbnNlZGl0bW9kZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxOYW1lOmZvcm0uYWxsTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZGVzY3JpcHRpb246Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJvY2Vzc2Rlc2NyaXB0aW9uXCIpPT1cIltdO1tdXCI/XCJcIjpjdXJyVG9FZGl0LmdldFByb3AoXCJwcm9jZXNzZGVzY3JpcHRpb25cIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaGZpZWxkczpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWZyZXNoZmllbGRzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2hvd2xhYmVsOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzc2hvd2xhYmVsXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGFiZWx2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcIm9wdGlvbnNzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFudHZhbGlkYXRlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImluc3RhbnR2YWxpZGF0ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGVja2JveERhdGE9JC5leHRlbmQoe30sIGNvbmZpZywgYmFzZURhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRodG1sID0gIEhlbHBlci5nZXRJbnN0YW5jZSgpLmhhbmRsZVRlbXBsZXRlKHRtbFswXSwgY2hlY2tib3hEYXRhLCdlZGl0Q2hlY2tib3gtdG1wbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmh0bWwoJGh0bWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiaW5wdXRbdHlwZT0ncmFkaW8nXSwgaW5wdXRbdHlwZT0nY2hlY2tib3gnXSwgc2VsZWN0XCIpLm9uKFwiY2hhbmdlXCIsIGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaGFuZ2VFZGl0Q29udGVudFBhbmVsKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v5bGA6YOo5Yi35paw55qE5re75Yqg5a2X5q615ZKM5Yig6ZmkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJidXR0b25baWQ9J2FkZFJlZnJlc2hGaWVsZCddXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5hcHBlbmQoaCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdkZWxSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyVG9FZGl0LnJlZnJlc2hmaWVsZHMuc3BsaWNlKCQoZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQpLmluZGV4KCktMiwxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdkZWxSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRvRWRpdC5yZWZyZXNoZmllbGRzLnNwbGljZSgkKGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KS5pbmRleCgpLTIsMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RhdGEnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkLndoZW4oYXBpLmdldFRlbXBsZXRlKCdlZGl0RGF0YS10bXBsJyksIGFwaS5nZXRKU09OKCkpLmRvbmUoKHRtbCwganNvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZz1qc29uWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlnLmZvbnROYW1lW2N1cnJUb0VkaXQuZ2V0UHJvcCgnZm9udE5hbWUnKV0gPSBcInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kYXRhdGV4dHR5cGVzLmZvckVhY2goKHZhbCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWwudmFsdWU9PWN1cnJUb0VkaXQuZ2V0UHJvcCgndGV4dHR5cGUnKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0ZWxpYnNPcHRpb24uZm9yRWFjaCgodmFsKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbC52YWx1ZT09Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWxpZGF0ZWxpYnMnKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kYXRhZm9ybWF0LmZvckVhY2goKHZhbCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWwudmFsdWU9PWN1cnJUb0VkaXQuZ2V0UHJvcCgnZGF0ZXBhdHRlcm4nKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5saW1pdG9wdGlvbltjdXJyVG9FZGl0LmdldFByb3AoJ3ByZXZfbmFtZScpXSA9IFwidHJ1ZVwiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiYXNlRGF0YT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpjdXJyVG9FZGl0LmdldFByb3AoJ25hbWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWx1ZXNjcmlwdCcpLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seXNob3d2YWxvbmx5OmN1cnJUb0VkaXQuZ2V0UHJvcCgncmVhZG9ubHlzaG93dmFsb25seScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hvbmNoYW5nZWQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWZyZXNob25jaGFuZ2VkJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoOmN1cnJUb0VkaXQuZ2V0UHJvcCgnY2FsY3VsYXRlb25yZWZyZXNoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOmN1cnJUb0VkaXQuZ2V0UHJvcCgnbW9iaWxlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdkaXNjcmlwdCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2htb2RlOmN1cnJUb0VkaXQuZ2V0UHJvcCgncmVmcmVzaG1vZGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xpbWl0ZWQ6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG1vZGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdlZGl0bW9kZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlbGliczpjdXJyVG9FZGl0LmdldFByb3AoXCJ2YWxpZGF0ZWxpYnNcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVydWxlOmN1cnJUb0VkaXQuZ2V0UHJvcChcInZhbGlkYXRlcnVsZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5zY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVuc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnByaW50c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJpbnRoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWFkb25seXNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2RlZmF1bHR2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJpc2RlZmF1bHR2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdDpjdXJyVG9FZGl0LmdldFByb3AoXCJsaW1pdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxOYW1lOmZvcm0uYWxsTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZGVzY3JpcHRpb246Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJvY2Vzc2Rlc2NyaXB0aW9uXCIpPT1cIltdO1tdXCI/XCJcIjpjdXJyVG9FZGl0LmdldFByb3AoXCJwcm9jZXNzZGVzY3JpcHRpb25cIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaGZpZWxkczpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWZyZXNoZmllbGRzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2hvd2xhYmVsOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzc2hvd2xhYmVsXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGFiZWx2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW50dmFsaWRhdGU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaW5zdGFudHZhbGlkYXRlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGFEYXRhPSQuZXh0ZW5kKHt9LCBjb25maWcsIGJhc2VEYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaHRtbCA9ICBIZWxwZXIuZ2V0SW5zdGFuY2UoKS5oYW5kbGVUZW1wbGV0ZSh0bWxbMF0sIGRhdGFEYXRhLCdlZGl0RGF0YS10bXBsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuaHRtbCgkaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJpbnB1dFt0eXBlPSdyYWRpbyddLCBpbnB1dFt0eXBlPSdjaGVja2JveCddLCBzZWxlY3RcIikub24oXCJjaGFuZ2VcIiwgZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNoYW5nZUVkaXRDb250ZW50UGFuZWwodGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/lsYDpg6jliLfmlrDnmoTmt7vliqDlrZfmrrXlkozliKDpmaRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nYWRkUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLmFwcGVuZChoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJidXR0b25baWQ9J2RlbFJlZnJlc2hGaWVsZCddXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQucmVmcmVzaGZpZWxkcy5zcGxpY2UoJChldmVudC50YXJnZXQucGFyZW50RWxlbWVudCkuaW5kZXgoKS0yLDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJidXR0b25baWQ9J2RlbFJlZnJlc2hGaWVsZCddXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyVG9FZGl0LnJlZnJlc2hmaWVsZHMuc3BsaWNlKCQoZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQpLmluZGV4KCktMiwxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2VsZWN0JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgJC53aGVuKGFwaS5nZXRUZW1wbGV0ZSgnZWRpdFNlbGVjdC10bXBsJyksIGFwaS5nZXRKU09OKCkpLmRvbmUoKHRtbCwganNvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZz1qc29uWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRhdGF0ZXh0dHlwZXMuZm9yRWFjaCgodmFsKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbC52YWx1ZT09Y3VyclRvRWRpdC5nZXRQcm9wKCd0ZXh0dHlwZScpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnNlbGVjdD1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRlbGlic09wdGlvbi5mb3JFYWNoKCh2YWwpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsLnZhbHVlPT1jdXJyVG9FZGl0LmdldFByb3AoJ3ZhbGlkYXRlbGlicycpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnNlbGVjdD1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLm1vZHVsZXNbY3VyclRvRWRpdC5nZXRQcm9wKCdtb2R1bGUnKV09XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZGlhbG9ndmlld1tjdXJyVG9FZGl0LmdldFByb3AoJ2RpYWxvZ3ZpZXcnKV09XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcub3B0aW9uc3ZhbHVlW2N1cnJUb0VkaXQuZ2V0UHJvcCgnb3B0aW9uc3ZhbHVlJyldPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLm9wdGlvbnN0ZXh0W2N1cnJUb0VkaXQuZ2V0UHJvcCgnb3B0aW9uc3RleHQnKV09XCJ0cnVlXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJhc2VEYXRhPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOmN1cnJUb0VkaXQuZ2V0UHJvcCgnbmFtZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcCgndmFsdWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlc2NyaXB0JyksXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5c2hvd3ZhbG9ubHk6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWFkb25seXNob3d2YWxvbmx5JyksXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hvbmNoYW5nZWQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWZyZXNob25jaGFuZ2VkJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoOmN1cnJUb0VkaXQuZ2V0UHJvcCgnY2FsY3VsYXRlb25yZWZyZXNoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOmN1cnJUb0VkaXQuZ2V0UHJvcCgnbW9iaWxlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdkaXNjcmlwdCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2htb2RlOmN1cnJUb0VkaXQuZ2V0UHJvcCgncmVmcmVzaG1vZGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xpbWl0ZWQ6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG1vZGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdlZGl0bW9kZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlbGliczpjdXJyVG9FZGl0LmdldFByb3AoXCJ2YWxpZGF0ZWxpYnNcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVydWxlOmN1cnJUb0VkaXQuZ2V0UHJvcChcInZhbGlkYXRlcnVsZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5zY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVuc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnByaW50c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJpbnRoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWFkb25seXNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2RlZmF1bHR2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJpc2RlZmF1bHR2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxOYW1lOmZvcm0uYWxsTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZGVzY3JpcHRpb246Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJvY2Vzc2Rlc2NyaXB0aW9uXCIpPT1cIltdO1tdXCI/XCJcIjpjdXJyVG9FZGl0LmdldFByb3AoXCJwcm9jZXNzZGVzY3JpcHRpb25cIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaGZpZWxkczpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWZyZXNoZmllbGRzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNlZGl0bW9kZTpjdXJyVG9FZGl0LmdldFByb3AoXCJvcHRpb25zZWRpdG1vZGVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzaG93bGFiZWw6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaXNzaG93bGFiZWxcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWx2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJsYWJlbHZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwib3B0aW9uc3NjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW50dmFsaWRhdGU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaW5zdGFudHZhbGlkYXRlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdERhdGE9JC5leHRlbmQoe30sY29uZmlnLCBiYXNlRGF0YSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGh0bWwgPSAgSGVscGVyLmdldEluc3RhbmNlKCkuaGFuZGxlVGVtcGxldGUodG1sWzBdLHNlbGVjdERhdGEsJ2VkaXRTZWxlY3QtdG1wbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmh0bWwoJGh0bWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiaW5wdXRbdHlwZT0ncmFkaW8nXSwgaW5wdXRbdHlwZT0nY2hlY2tib3gnXSwgc2VsZWN0XCIpLm9uKFwiY2hhbmdlXCIsIGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaGFuZ2VFZGl0Q29udGVudFBhbmVsKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v5bGA6YOo5Yi35paw55qE5re75Yqg5a2X5q615ZKM5Yig6ZmkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJidXR0b25baWQ9J2FkZFJlZnJlc2hGaWVsZCddXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5hcHBlbmQoaCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdkZWxSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyVG9FZGl0LnJlZnJlc2hmaWVsZHMuc3BsaWNlKCQoZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQpLmluZGV4KCktMiwxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdkZWxSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRvRWRpdC5yZWZyZXNoZmllbGRzLnNwbGljZSgkKGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KS5pbmRleCgpLTIsMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RlcHQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJC53aGVuKGFwaS5nZXRUZW1wbGV0ZSgnZWRpdERlcHQtdG1wbCcpLCBhcGkuZ2V0SlNPTigpKS5kb25lKCh0bWwsIGpzb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25maWc9anNvblswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRhdGF0ZXh0dHlwZXMuZm9yRWFjaCgodmFsKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbC52YWx1ZT09Y3VyclRvRWRpdC5nZXRQcm9wKCd0ZXh0dHlwZScpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnNlbGVjdD1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRlbGlic09wdGlvbi5mb3JFYWNoKCh2YWwpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsLnZhbHVlPT1jdXJyVG9FZGl0LmdldFByb3AoJ3ZhbGlkYXRlbGlicycpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnNlbGVjdD1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRlZmF1bHRPcHRpb25UeXBlT3B0aW9ucy5mb3JFYWNoKCh2YWwpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsLnZhbHVlPT1jdXJyVG9FZGl0LmdldFByb3AoJ2RlZmF1bHRvcHRpb250eXBlJykpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuc2VsZWN0PVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZGVwYXJ0bWVudExldmVsT3B0aW9ucy5mb3JFYWNoKCh2YWwpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsLnZhbHVlPT1jdXJyVG9FZGl0LmdldFByb3AoJ2RlcGFydG1lbnRsZXZlbCcpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnNlbGVjdD1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlbGF0ZWRGaWVsZE9wdGlvbnMgPSBmb3JtLmdldGFsbERlcHROYW1lKGN1cnJUb0VkaXQuZ2V0UHJvcCgnbmFtZScpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRGaWVsZE9wdGlvbnNbY3VyclRvRWRpdC5nZXRQcm9wKCdyZWxhdGVkZmllbGQnKV0gPSBcInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiYXNlRGF0YT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpjdXJyVG9FZGl0LmdldFByb3AoJ25hbWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWx1ZXNjcmlwdCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5c2hvd3ZhbG9ubHk6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWFkb25seXNob3d2YWxvbmx5JyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaG9uY2hhbmdlZDpjdXJyVG9FZGl0LmdldFByb3AoJ3JlZnJlc2hvbmNoYW5nZWQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdGVvbnJlZnJlc2g6Y3VyclRvRWRpdC5nZXRQcm9wKCdjYWxjdWxhdGVvbnJlZnJlc2gnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2JpbGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdtb2JpbGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoJ2Rpc2NyaXB0JyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaG1vZGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWZyZXNobW9kZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGltaXRlZDpmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0bW9kZTpjdXJyVG9FZGl0LmdldFByb3AoJ2VkaXRtb2RlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVsaWJzOmN1cnJUb0VkaXQuZ2V0UHJvcChcInZhbGlkYXRlbGlic1wiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZXJ1bGU6Y3VyclRvRWRpdC5nZXRQcm9wKFwidmFsaWRhdGVydWxlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW5zY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVudmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVucHJpbnRzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVucHJpbnRzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRoaWRkZW52YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJwcmludGhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcInJlYWRvbmx5c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZGVmYXVsdHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzZGVmYXVsdHZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbE5hbWU6Zm9ybS5hbGxOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbERlcHROYW1lOmZvcm0uYWxsRGVwdE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2Rlc2NyaXB0aW9uOmN1cnJUb0VkaXQuZ2V0UHJvcChcInByb2Nlc3NkZXNjcmlwdGlvblwiKT09XCJbXTtbXVwiP1wiXCI6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJvY2Vzc2Rlc2NyaXB0aW9uXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRGaWVsZE9wdGlvbnM6cmVsYXRlZEZpZWxkT3B0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdGJ5dXNlcjpjdXJyVG9FZGl0LmdldFByb3AoXCJsaW1pdGJ5dXNlclwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VtcHR5OmN1cnJUb0VkaXQuZ2V0UHJvcChcImFsbG93ZW1wdHlcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaGZpZWxkczpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWZyZXNoZmllbGRzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2hvd2xhYmVsOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzc2hvd2xhYmVsXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGFiZWx2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW50dmFsaWRhdGU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaW5zdGFudHZhbGlkYXRlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkRmllbGQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwicmVsYXRlZEZpZWxkXCIpLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZXB0RGF0YT0kLmV4dGVuZCh7fSxjb25maWcsIGJhc2VEYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaHRtbCA9ICBIZWxwZXIuZ2V0SW5zdGFuY2UoKS5oYW5kbGVUZW1wbGV0ZSh0bWxbMF0sZGVwdERhdGEsJ2VkaXREZXB0LXRtcGwnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5odG1sKCRodG1sKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImlucHV0W3R5cGU9J3JhZGlvJ10sIGlucHV0W3R5cGU9J2NoZWNrYm94J10sIHNlbGVjdFwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2hhbmdlRWRpdENvbnRlbnRQYW5lbCh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+WxgOmDqOWIt+aWsOeahOa3u+WKoOWtl+auteWSjOWIoOmZpFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdhZGRSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkuYXBwZW5kKGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nZGVsUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRvRWRpdC5yZWZyZXNoZmllbGRzLnNwbGljZSgkKGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KS5pbmRleCgpLTIsMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nZGVsUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQucmVmcmVzaGZpZWxkcy5zcGxpY2UoJChldmVudC50YXJnZXQucGFyZW50RWxlbWVudCkuaW5kZXgoKS0yLDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdzZWxlY3RhYm91dGZpZWxkJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgJC53aGVuKGFwaS5nZXRUZW1wbGV0ZSgnZWRpdFNlbGVjdGFib3V0ZmllbGQtdG1wbCcpLCBhcGkuZ2V0SlNPTigpKS5kb25lKCh0bWwsIGpzb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25maWc9anNvblswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0ZWxpYnNPcHRpb24uZm9yRWFjaCgodmFsKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbC52YWx1ZT09Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWxpZGF0ZWxpYnMnKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5tb2R1bGVzW2N1cnJUb0VkaXQuZ2V0UHJvcCgnbW9kdWxlJyldPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRpYWxvZ3ZpZXdbY3VyclRvRWRpdC5nZXRQcm9wKCdkaWFsb2d2aWV3JyldPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLm9wdGlvbnN2YWx1ZVtjdXJyVG9FZGl0LmdldFByb3AoJ29wdGlvbnN2YWx1ZScpXT1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5vcHRpb25zdGV4dFtjdXJyVG9FZGl0LmdldFByb3AoJ29wdGlvbnN0ZXh0JyldPVwidHJ1ZVwiO1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmFzZURhdGE9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6Y3VyclRvRWRpdC5nZXRQcm9wKCduYW1lJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWx1ZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcCgndmFsdWVzY3JpcHQnKSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaG9uY2hhbmdlZDpjdXJyVG9FZGl0LmdldFByb3AoJ3JlZnJlc2hvbmNoYW5nZWQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdGVvbnJlZnJlc2g6Y3VyclRvRWRpdC5nZXRQcm9wKCdjYWxjdWxhdGVvbnJlZnJlc2gnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoJ2Rpc2NyaXB0JyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaG1vZGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWZyZXNobW9kZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGltaXRlZDpmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0bW9kZTpjdXJyVG9FZGl0LmdldFByb3AoJ2VkaXRtb2RlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVsaWJzOmN1cnJUb0VkaXQuZ2V0UHJvcChcInZhbGlkYXRlbGlic1wiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZXJ1bGU6Y3VyclRvRWRpdC5nZXRQcm9wKFwidmFsaWRhdGVydWxlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW5zY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVudmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVucHJpbnRzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVucHJpbnRzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRoaWRkZW52YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJwcmludGhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcInJlYWRvbmx5c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZGVmYXVsdHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzZGVmYXVsdHZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNlZGl0bW9kZTpjdXJyVG9FZGl0LmdldFByb3AoXCJvcHRpb25zZWRpdG1vZGVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsTmFtZTpmb3JtLmFsbE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2Rlc2NyaXB0aW9uOmN1cnJUb0VkaXQuZ2V0UHJvcChcInByb2Nlc3NkZXNjcmlwdGlvblwiKT09XCJbXTtbXVwiP1wiXCI6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJvY2Vzc2Rlc2NyaXB0aW9uXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hmaWVsZHM6Y3VyclRvRWRpdC5nZXRQcm9wKFwicmVmcmVzaGZpZWxkc1wiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3Nob3dsYWJlbDpjdXJyVG9FZGl0LmdldFByb3AoXCJpc3Nob3dsYWJlbFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImxhYmVsdmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc3NjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJvcHRpb25zc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbnR2YWxpZGF0ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJpbnN0YW50dmFsaWRhdGVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0YWJvdXRmaWVsZERhdGE9JC5leHRlbmQoe30sIGNvbmZpZywgYmFzZURhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRodG1sID0gIEhlbHBlci5nZXRJbnN0YW5jZSgpLmhhbmRsZVRlbXBsZXRlKHRtbFswXSwgc2VsZWN0YWJvdXRmaWVsZERhdGEsJ2VkaXRTZWxlY3RhYm91dGZpZWxkLXRtcGwnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5odG1sKCRodG1sKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImlucHV0W3R5cGU9J3JhZGlvJ10sIGlucHV0W3R5cGU9J2NoZWNrYm94J10sIHNlbGVjdFwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2hhbmdlRWRpdENvbnRlbnRQYW5lbCh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+WxgOmDqOWIt+aWsOeahOa3u+WKoOWtl+auteWSjOWIoOmZpFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdhZGRSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkuYXBwZW5kKGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nZGVsUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRvRWRpdC5yZWZyZXNoZmllbGRzLnNwbGljZSgkKGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KS5pbmRleCgpLTIsMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nZGVsUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQucmVmcmVzaGZpZWxkcy5zcGxpY2UoJChldmVudC50YXJnZXQucGFyZW50RWxlbWVudCkuaW5kZXgoKS0yLDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICd0cmVlZGVwYXJ0bWVudGZpZWxkJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQud2hlbihhcGkuZ2V0VGVtcGxldGUoJ2VkaXRUcmVlZGVwYXJ0bWVudGZpZWxkLXRtcGwnKSwgYXBpLmdldEpTT04oKSkuZG9uZSgodG1sLCBqc29uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uZmlnPWpzb25bMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZGF0YXRleHR0eXBlcy5mb3JFYWNoKCh2YWwpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsLnZhbHVlPT1jdXJyVG9FZGl0LmdldFByb3AoJ3RleHR0eXBlJykpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuc2VsZWN0PVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcudmFsaWRhdGVsaWJzT3B0aW9uLmZvckVhY2goKHZhbCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWwudmFsdWU9PWN1cnJUb0VkaXQuZ2V0UHJvcCgndmFsaWRhdGVsaWJzJykpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuc2VsZWN0PVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmFzZURhdGE9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6Y3VyclRvRWRpdC5nZXRQcm9wKCduYW1lJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWx1ZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcCgndmFsdWVzY3JpcHQnKSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlzaG93dmFsb25seTpjdXJyVG9FZGl0LmdldFByb3AoJ3JlYWRvbmx5c2hvd3ZhbG9ubHknKSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaG9uY2hhbmdlZDpjdXJyVG9FZGl0LmdldFByb3AoJ3JlZnJlc2hvbmNoYW5nZWQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdGVvbnJlZnJlc2g6Y3VyclRvRWRpdC5nZXRQcm9wKCdjYWxjdWxhdGVvbnJlZnJlc2gnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2JpbGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdtb2JpbGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoJ2Rpc2NyaXB0JyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaG1vZGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWZyZXNobW9kZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGltaXRlZDpmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZWxpYnM6Y3VyclRvRWRpdC5nZXRQcm9wKFwidmFsaWRhdGVsaWJzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlcnVsZTpjdXJyVG9FZGl0LmdldFByb3AoXCJ2YWxpZGF0ZXJ1bGVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW52YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5wcmludHNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW5wcmludHNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcInByaW50aGlkZGVudmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwicmVhZG9ubHlzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNkZWZhdWx0dmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaXNkZWZhdWx0dmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGltaXRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsTmFtZTpmb3JtLmFsbE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaGZpZWxkczpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWZyZXNoZmllbGRzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2hvd2xhYmVsOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzc2hvd2xhYmVsXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGFiZWx2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW50dmFsaWRhdGU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaW5zdGFudHZhbGlkYXRlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0cmVlZGVwYXJ0bWVudGZpZWxkRGF0YT0kLmV4dGVuZCh7fSwgYmFzZURhdGEsY29uZmlnKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaHRtbCA9ICBIZWxwZXIuZ2V0SW5zdGFuY2UoKS5oYW5kbGVUZW1wbGV0ZSh0bWxbMF0sdHJlZWRlcGFydG1lbnRmaWVsZERhdGEsJ2VkaXRUcmVlZGVwYXJ0bWVudGZpZWxkLXRtcGwnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5odG1sKCRodG1sKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImlucHV0W3R5cGU9J3JhZGlvJ10sIGlucHV0W3R5cGU9J2NoZWNrYm94J10sIHNlbGVjdFwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2hhbmdlRWRpdENvbnRlbnRQYW5lbCh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+WxgOmDqOWIt+aWsOeahOa3u+WKoOWtl+auteWSjOWIoOmZpFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdhZGRSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkuYXBwZW5kKGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nZGVsUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRvRWRpdC5yZWZyZXNoZmllbGRzLnNwbGljZSgkKGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KS5pbmRleCgpLTIsMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nZGVsUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQucmVmcmVzaGZpZWxkcy5zcGxpY2UoJChldmVudC50YXJnZXQucGFyZW50RWxlbWVudCkuaW5kZXgoKS0yLDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICd1c2VyZmllbGQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkLndoZW4oYXBpLmdldFRlbXBsZXRlKCdlZGl0VXNlcmZpZWxkLXRtcGwnKSwgYXBpLmdldEpTT04oKSkuZG9uZSgodG1sLCBqc29uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uZmlnPWpzb25bMF07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRhdGF0ZXh0dHlwZXMuZm9yRWFjaCgodmFsKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbC52YWx1ZT09Y3VyclRvRWRpdC5nZXRQcm9wKCd0ZXh0dHlwZScpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnNlbGVjdD1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnNlbGVjdE1vZGVPcHRpb24uZm9yRWFjaCgodmFsKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbC52YWx1ZT09Y3VyclRvRWRpdC5nZXRQcm9wKCdzZWxlY3Rtb2RlJykpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuc2VsZWN0PVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcudmFsaWRhdGVsaWJzT3B0aW9uLmZvckVhY2goKHZhbCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWwudmFsdWU9PWN1cnJUb0VkaXQuZ2V0UHJvcCgndmFsaWRhdGVsaWJzJykpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuc2VsZWN0PVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWcuZGF0YXRleHR0eXBlc1tjdXJyVG9FZGl0LmdldFByb3AoJ3RleHR0eXBlJyldID0gXCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWcuc2VsZWN0TW9kZU9wdGlvbltjdXJyVG9FZGl0LmdldFByb3AoJ3NlbGVjdG1vZGUnKT09XCJtdWx0aXNlbGVjdFwiPyflpJrpgIknOifljZXpgIknXSA9IFwidHJ1ZVwiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiYXNlRGF0YT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpjdXJyVG9FZGl0LmdldFByb3AoJ25hbWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWx1ZXNjcmlwdCcpLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seXNob3d2YWxvbmx5OmN1cnJUb0VkaXQuZ2V0UHJvcCgncmVhZG9ubHlzaG93dmFsb25seScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hvbmNoYW5nZWQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWZyZXNob25jaGFuZ2VkJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoOmN1cnJUb0VkaXQuZ2V0UHJvcCgnY2FsY3VsYXRlb25yZWZyZXNoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOmN1cnJUb0VkaXQuZ2V0UHJvcCgnbW9iaWxlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdkaXNjcmlwdCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2htb2RlOmN1cnJUb0VkaXQuZ2V0UHJvcCgncmVmcmVzaG1vZGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xpbWl0ZWQ6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG1vZGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdlZGl0bW9kZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlbGliczpjdXJyVG9FZGl0LmdldFByb3AoXCJ2YWxpZGF0ZWxpYnNcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVydWxlOmN1cnJUb0VkaXQuZ2V0UHJvcChcInZhbGlkYXRlcnVsZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5zY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVuc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnByaW50c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJpbnRoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWFkb25seXNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2RlZmF1bHR2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJpc2RlZmF1bHR2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxOYW1lOmZvcm0uYWxsTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZGVzY3JpcHRpb246Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJvY2Vzc2Rlc2NyaXB0aW9uXCIpPT1cIltdO1tdXCI/XCJcIjpjdXJyVG9FZGl0LmdldFByb3AoXCJwcm9jZXNzZGVzY3JpcHRpb25cIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaGZpZWxkczpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWZyZXNoZmllbGRzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2hvd2xhYmVsOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzc2hvd2xhYmVsXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGFiZWx2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW50dmFsaWRhdGU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaW5zdGFudHZhbGlkYXRlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVzZXJmaWVsZERhdGE9JC5leHRlbmQoe30sIGNvbmZpZywgYmFzZURhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRodG1sID0gIEhlbHBlci5nZXRJbnN0YW5jZSgpLmhhbmRsZVRlbXBsZXRlKHRtbFswXSwgdXNlcmZpZWxkRGF0YSwnZWRpdFVzZXJmaWVsZC10bXBsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuaHRtbCgkaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJpbnB1dFt0eXBlPSdyYWRpbyddLCBpbnB1dFt0eXBlPSdjaGVja2JveCddLCBzZWxlY3RcIikub24oXCJjaGFuZ2VcIiwgZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNoYW5nZUVkaXRDb250ZW50UGFuZWwodGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/lsYDpg6jliLfmlrDnmoTmt7vliqDlrZfmrrXlkozliKDpmaRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nYWRkUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLmFwcGVuZChoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJidXR0b25baWQ9J2RlbFJlZnJlc2hGaWVsZCddXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQucmVmcmVzaGZpZWxkcy5zcGxpY2UoJChldmVudC50YXJnZXQucGFyZW50RWxlbWVudCkuaW5kZXgoKS0yLDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJidXR0b25baWQ9J2RlbFJlZnJlc2hGaWVsZCddXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyVG9FZGl0LnJlZnJlc2hmaWVsZHMuc3BsaWNlKCQoZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQpLmluZGV4KCktMiwxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3VnZ2VzdGZpZWxkJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgJC53aGVuKGFwaS5nZXRUZW1wbGV0ZSgnZWRpdFN1Z2dlc3RmaWVsZC10bXBsJyksIGFwaS5nZXRKU09OKCkpLmRvbmUoKHRtbCwganNvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZz1qc29uWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmRhdGF0ZXh0dHlwZXMuZm9yRWFjaCgodmFsKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbC52YWx1ZT09Y3VyclRvRWRpdC5nZXRQcm9wKCd0ZXh0dHlwZScpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnNlbGVjdD1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRlbGlic09wdGlvbi5mb3JFYWNoKCh2YWwpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsLnZhbHVlPT1jdXJyVG9FZGl0LmdldFByb3AoJ3ZhbGlkYXRlbGlicycpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnNlbGVjdD1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLm1vZHVsZXNbY3VyclRvRWRpdC5nZXRQcm9wKCdtb2R1bGUnKV09XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuZGlhbG9ndmlld1tjdXJyVG9FZGl0LmdldFByb3AoJ2RpYWxvZ3ZpZXcnKV09XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcub3B0aW9uc3ZhbHVlW2N1cnJUb0VkaXQuZ2V0UHJvcCgnb3B0aW9uc3ZhbHVlJyldPVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLm9wdGlvbnN0ZXh0W2N1cnJUb0VkaXQuZ2V0UHJvcCgnb3B0aW9uc3RleHQnKV09XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiYXNlRGF0YT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpjdXJyVG9FZGl0LmdldFByb3AoJ25hbWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWx1ZXNjcmlwdCcpLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seXNob3d2YWxvbmx5OmN1cnJUb0VkaXQuZ2V0UHJvcCgncmVhZG9ubHlzaG93dmFsb25seScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hvbmNoYW5nZWQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWZyZXNob25jaGFuZ2VkJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoOmN1cnJUb0VkaXQuZ2V0UHJvcCgnY2FsY3VsYXRlb25yZWZyZXNoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOmN1cnJUb0VkaXQuZ2V0UHJvcCgnbW9iaWxlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdkaXNjcmlwdCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2htb2RlOmN1cnJUb0VkaXQuZ2V0UHJvcCgncmVmcmVzaG1vZGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xpbWl0ZWQ6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG1vZGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdlZGl0bW9kZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlbGliczpjdXJyVG9FZGl0LmdldFByb3AoXCJ2YWxpZGF0ZWxpYnNcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVydWxlOmN1cnJUb0VkaXQuZ2V0UHJvcChcInZhbGlkYXRlcnVsZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5zY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVuc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnByaW50c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJpbnRoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWFkb25seXNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2RlZmF1bHR2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJpc2RlZmF1bHR2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxOYW1lOmZvcm0uYWxsTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZGVzY3JpcHRpb246Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJvY2Vzc2Rlc2NyaXB0aW9uXCIpPT1cIltdO1tdXCI/XCJcIjpjdXJyVG9FZGl0LmdldFByb3AoXCJwcm9jZXNzZGVzY3JpcHRpb25cIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaGZpZWxkczpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWZyZXNoZmllbGRzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNlZGl0bW9kZTpjdXJyVG9FZGl0LmdldFByb3AoXCJvcHRpb25zZWRpdG1vZGVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzaG93bGFiZWw6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaXNzaG93bGFiZWxcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWx2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJsYWJlbHZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFtb2RlOmN1cnJUb0VkaXQuZ2V0UHJvcCgnZGF0YW1vZGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcCgnb3B0aW9uc3NjcmlwdCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1Z2dlc3RmaWVsZERhdGE9JC5leHRlbmQoe30sIGJhc2VEYXRhLGNvbmZpZyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGh0bWwgPSAgSGVscGVyLmdldEluc3RhbmNlKCkuaGFuZGxlVGVtcGxldGUodG1sWzBdLHN1Z2dlc3RmaWVsZERhdGEsJ2VkaXRTdWdnZXN0ZmllbGQtdG1wbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmh0bWwoJGh0bWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiaW5wdXRbdHlwZT0ncmFkaW8nXSwgaW5wdXRbdHlwZT0nY2hlY2tib3gnXSwgc2VsZWN0XCIpLm9uKFwiY2hhbmdlXCIsIGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaGFuZ2VFZGl0Q29udGVudFBhbmVsKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v5bGA6YOo5Yi35paw55qE5re75Yqg5a2X5q615ZKM5Yig6ZmkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJidXR0b25baWQ9J2FkZFJlZnJlc2hGaWVsZCddXCIpLm9mZihcImNsaWNrXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5hcHBlbmQoaCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdkZWxSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyVG9FZGl0LnJlZnJlc2hmaWVsZHMuc3BsaWNlKCQoZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQpLmluZGV4KCktMiwxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdkZWxSZWZyZXNoRmllbGQnXVwiKS5vZmYoXCJjbGlja1wiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRvRWRpdC5yZWZyZXNoZmllbGRzLnNwbGljZSgkKGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KS5pbmRleCgpLTIsMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdidXR0b24nOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkLndoZW4oYXBpLmdldFRlbXBsZXRlKCdlZGl0QnV0dG9uLXRtcGwnKSwgYXBpLmdldEpTT04oKSkuZG9uZSgodG1sLCBqc29uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uZmlnPWpzb25bMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuYWN0VHlwZU9wdGlvbi5mb3JFYWNoKCh2YWwpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsLnZhbHVlPT1jdXJyVG9FZGl0LmdldFByb3AoJ2FjdHR5cGUnKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbmZpZy5hY3RUeXBlT3B0aW9uW2N1cnJUb0VkaXQuZ2V0UHJvcCgnYWN0dHlwZScpXT1cInRydWVcIjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmFzZURhdGE9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6Y3VyclRvRWRpdC5nZXRQcm9wKCduYW1lJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWx1ZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hvbmNoYW5nZWQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWZyZXNob25jaGFuZ2VkJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoOmN1cnJUb0VkaXQuZ2V0UHJvcCgnY2FsY3VsYXRlb25yZWZyZXNoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdkaXNjcmlwdCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2htb2RlOmN1cnJUb0VkaXQuZ2V0UHJvcCgncmVmcmVzaG1vZGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xpbWl0ZWQ6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW52YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5wcmludHNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW5wcmludHNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcInByaW50aGlkZGVudmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwicmVhZG9ubHlzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNkZWZhdWx0dmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaXNkZWZhdWx0dmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsTmFtZTpmb3JtLmFsbE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaGZpZWxkczpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWZyZXNoZmllbGRzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2hvd2xhYmVsOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzc2hvd2xhYmVsXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGFiZWx2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R0eXBlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImFjdHR5cGVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlYWN0aW9uc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImJlZm9yZWFjdGlvbnNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcmFjdGlvbnNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJhZnRlcmFjdGlvbnNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZXRvc2hvdzpjdXJyVG9FZGl0LmdldFByb3AoXCJzdGF0ZXRvc2hvd1wiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJmaWxlbmFtZXNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBidXR0b25EYXRhPSQuZXh0ZW5kKHt9LCBjb25maWcsIGJhc2VEYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaHRtbCA9ICBIZWxwZXIuZ2V0SW5zdGFuY2UoKS5oYW5kbGVUZW1wbGV0ZSh0bWxbMF0sIGJ1dHRvbkRhdGEsJ2VkaXRCdXR0b24tdG1wbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmh0bWwoJGh0bWwpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImlucHV0W3R5cGU9J3JhZGlvJ10sIGlucHV0W3R5cGU9J2NoZWNrYm94J10sIHNlbGVjdFwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2hhbmdlRWRpdENvbnRlbnRQYW5lbCh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/lsYDpg6jliLfmlrDnmoTmt7vliqDlrZfmrrXlkozliKDpmaRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nYWRkUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLmFwcGVuZChoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJidXR0b25baWQ9J2RlbFJlZnJlc2hGaWVsZCddXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQucmVmcmVzaGZpZWxkcy5zcGxpY2UoJChldmVudC50YXJnZXQucGFyZW50RWxlbWVudCkuaW5kZXgoKS0yLDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdkZWxSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRvRWRpdC5yZWZyZXNoZmllbGRzLnNwbGljZSgkKGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KS5pbmRleCgpLTIsMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndmlld2RpYWxvZ2ZpZWxkJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgJC53aGVuKGFwaS5nZXRUZW1wbGV0ZSgnZWRpdFZpZXdkaWFsb2dmaWVsZC10bXBsJyksIGFwaS5nZXRKU09OKCkpLmRvbmUoKHRtbCwganNvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZz1qc29uWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFkZE1hcD1gPGRpdiBzdHlsZT1cImRpc3BsYXk6ZmxleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDku45cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSdjb2xuYW1lJyBuYW1lPVwiY29sbmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgIHN0eWxlPVwid2lkdGg6MTAwcHhcIj5gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5jb2xuYW1lT3B0aW9uLmZvckVhY2goKHZhbCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkTWFwKz1gPG9wdGlvbiB2YWx1ZT0ke3ZhbC52YWx1ZX0+JHt2YWwubmFtZX08L29wdGlvbj5gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNYXArPWA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDoh7NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSdmbGRuYW1lJyBuYW1lPVwiZmxkbmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgIHN0eWxlPVwid2lkdGg6MTQwcHhcIj5gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybS5hbGxOYW1lLmZvckVhY2goKHZhbCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkTWFwKz1gPG9wdGlvbiB2YWx1ZT0ke3ZhbC5uYW1lfT4ke3ZhbC5uYW1lfTwvb3B0aW9uPmBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZE1hcCs9YDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgZC1ibG9ja1wiIGlkPVwiZGVsbWFwcGluZ1wiPuWIoOmZpDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5tb2R1bGVUZXN0LmZvckVhY2goKHZhbCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWwudmFsdWU9PWN1cnJUb0VkaXQuZ2V0UHJvcCgnbW9kdWxlJykpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuc2VsZWN0PVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcubW9kdWxlVGVzdC5mb3JFYWNoKCh2YWwpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsLnZhbHVlPT1jdXJyVG9FZGl0LmdldFByb3AoJ2RpYWxvZ3ZpZXcnKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5tYXhpbWl6YXRpb25PcHRpb24uZm9yRWFjaCgodmFsKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbC52YWx1ZT09Y3VyclRvRWRpdC5nZXRQcm9wKCdtYXhpbWl6YXRpb24nKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiYXNlRGF0YT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpjdXJyVG9FZGl0LmdldFByb3AoJ25hbWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaG9uY2hhbmdlZDpjdXJyVG9FZGl0LmdldFByb3AoJ3JlZnJlc2hvbmNoYW5nZWQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdGVvbnJlZnJlc2g6Y3VyclRvRWRpdC5nZXRQcm9wKCdjYWxjdWxhdGVvbnJlZnJlc2gnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2JpbGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdtb2JpbGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNobW9kZTpjdXJyVG9FZGl0LmdldFByb3AoJ3JlZnJlc2htb2RlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMaW1pdGVkOmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW5zY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVudmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVucHJpbnRzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVucHJpbnRzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRoaWRkZW52YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJwcmludGhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcInJlYWRvbmx5c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbE5hbWU6Zm9ybS5hbGxOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hmaWVsZHM6Y3VyclRvRWRpdC5nZXRQcm9wKFwicmVmcmVzaGZpZWxkc1wiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3Nob3dsYWJlbDpjdXJyVG9FZGl0LmdldFByb3AoXCJpc3Nob3dsYWJlbFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImxhYmVsdmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbjpjdXJyVG9FZGl0LmdldFByb3AoXCJjYXB0aW9uXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW50eXBlOmN1cnJUb0VkaXQuZ2V0UHJvcChcIm9wZW50eXBlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9uZTpjdXJyVG9FZGl0LmdldFByb3AoXCJzZWxlY3RvbmVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0aWxzZWxlY3Q6Y3VyclRvRWRpdC5nZXRQcm9wKFwibXV0aWxzZWxlY3RcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3d2aWV3ZG9jOmN1cnJUb0VkaXQuZ2V0UHJvcChcImFsbG93dmlld2RvY1wiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nOmN1cnJUb0VkaXQuZ2V0UHJvcChcIm1hcHBpbmdcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2tzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwib2tzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiY2FsbGJhY2tzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2aGVpZ2h0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImRpdmhlaWdodFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZ3aWR0aDpjdXJyVG9FZGl0LmdldFByb3AoXCJkaXZ3aWR0aFwiKSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmlld2RpYWxvZ2ZpZWxkRGF0YT0kLmV4dGVuZCh7fSwgY29uZmlnLCBiYXNlRGF0YSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGh0bWwgPSAgSGVscGVyLmdldEluc3RhbmNlKCkuaGFuZGxlVGVtcGxldGUodG1sWzBdLCB2aWV3ZGlhbG9nZmllbGREYXRhLCdlZGl0Vmlld2RpYWxvZ2ZpZWxkLXRtcGwnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5odG1sKCRodG1sKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJpbnB1dFt0eXBlPSdyYWRpbyddLCBpbnB1dFt0eXBlPSdjaGVja2JveCddLCBzZWxlY3RcIikub24oXCJjaGFuZ2VcIiwgZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNoYW5nZUVkaXRDb250ZW50UGFuZWwodGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/lsYDpg6jliLfmlrDnmoTmt7vliqDlrZfmrrXlkozliKDpmaRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nYWRkUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLmFwcGVuZChoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJidXR0b25baWQ9J2RlbFJlZnJlc2hGaWVsZCddXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQucmVmcmVzaGZpZWxkcy5zcGxpY2UoJChldmVudC50YXJnZXQucGFyZW50RWxlbWVudCkuaW5kZXgoKS0yLDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdkZWxSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRvRWRpdC5yZWZyZXNoZmllbGRzLnNwbGljZSgkKGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KS5pbmRleCgpLTIsMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+aYoOWwhOeahOa3u+WKoOWtl+auteWSjOWIoOmZpFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdhZGRtYXBwaW5nJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLmFwcGVuZChhZGRNYXApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nZGVsbWFwcGluZyddXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQubWFwcGluZy5zcGxpY2UoJChldmVudC50YXJnZXQucGFyZW50RWxlbWVudCkuaW5kZXgoKS0zLDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdkZWxtYXBwaW5nJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQubWFwcGluZy5zcGxpY2UoJChldmVudC50YXJnZXQucGFyZW50RWxlbWVudCkuaW5kZXgoKS0zLDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICd0YWJmaWVsZCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQud2hlbihhcGkuZ2V0VGVtcGxldGUoJ2VkaXRUYWJmaWVsZC10bXBsJyksIGFwaS5nZXRKU09OKCkpLmRvbmUoKHRtbCwganNvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZz1qc29uWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuc2hvd21vZGVzLmZvckVhY2goKHZhbCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWwudmFsdWU9PWN1cnJUb0VkaXQuZ2V0UHJvcCgnc2hvd21vZGUnKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcnI9Wy4uLmN1cnJUb0VkaXQuZ2V0UHJvcChcInJlbHN0clwiKV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBudW09MDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihsZXQgcmVsPTA7cmVsPGFyci5sZW5ndGg7cmVsKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFycltyZWxdLm5hbWU9PVwiXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyVG9FZGl0LmdldFByb3AoXCJyZWxzdHJcIikuc3BsaWNlKHJlbC1udW0sMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtKys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiYXNlRGF0YT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWx1ZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2hvd2xhYmVsOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzc2hvd2xhYmVsXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGFiZWx2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93bW9kZTpjdXJyVG9FZGl0LmdldFByb3AoXCJzaG93bW9kZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd3NhbWVuYW1lOmN1cnJUb0VkaXQuZ2V0UHJvcChcImFsbG93c2FtZW5hbWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsc3RyOmN1cnJUb0VkaXQuZ2V0UHJvcChcInJlbHN0clwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZHNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJzZWxlY3RlZHNjcmlwdFwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRhYmZpZWxkRGF0YT0kLmV4dGVuZCh7fSwgY29uZmlnLCBiYXNlRGF0YSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGh0bWwgPSAgSGVscGVyLmdldEluc3RhbmNlKCkuaGFuZGxlVGVtcGxldGUodG1sWzBdLCB0YWJmaWVsZERhdGEsJ2VkaXRUYWJmaWVsZC10bXBsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuaHRtbCgkaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJidXR0b25baWQ9J2FkZFRhYmZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlbHN0ckxlbmd0aD1jdXJyVG9FZGl0LnJlbHN0ci5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRhYmZpZWxkQ29uPWA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9XCJuYW1lXCIgaWQ9XCJuYW1lJHtyZWxzdHJMZW5ndGh9XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZC1ibG9jayB3aWR0aEF1dG9cIiAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9J3R5cGUke3JlbHN0ckxlbmd0aH0nIG5hbWU9XCJ0eXBlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIj5gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGE9MDthPGNvbmZpZy50YWJmaWVsZHR5cGUubGVuZ3RoO2ErKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJmaWVsZENvbis9YDxvcHRpb24gdmFsdWU9JHtjb25maWcudGFiZmllbGR0eXBlW2FdLnZhbHVlfT4ke2NvbmZpZy50YWJmaWVsZHR5cGVbYV0ubmFtZX08L29wdGlvbj5gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmZpZWxkQ29uKz0gYDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSdtb2R1bGUke3JlbHN0ckxlbmd0aH0nIG5hbWU9XCJtb2R1bGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiPmBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBiPTA7Yjxjb25maWcudGFiZmllbGR0ZXN0Lmxlbmd0aDtiKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiZmllbGRDb24rPWA8b3B0aW9uIHZhbHVlPSR7Y29uZmlnLnRhYmZpZWxkdGVzdFtiXS52YWx1ZX0+JHtjb25maWcudGFiZmllbGR0ZXN0W2JdLm5hbWV9PC9vcHRpb24+YFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJmaWVsZENvbis9YDwvc2VsZWN0Plx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9J2Zvcm1JZCR7cmVsc3RyTGVuZ3RofScgbmFtZT1cImZvcm1JZFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+YFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGM9MDtjPGNvbmZpZy50YWJmaWVsZHRlc3QubGVuZ3RoO2MrKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJmaWVsZENvbis9YDxvcHRpb24gdmFsdWU9JHtjb25maWcudGFiZmllbGR0ZXN0W2NdLnZhbHVlfT4ke2NvbmZpZy50YWJmaWVsZHRlc3RbY10ubmFtZX08L29wdGlvbj5gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmZpZWxkQ29uKz1gPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBzdHlsZT1cImhlaWdodDozNHB4O1wiIG5hbWU9XCJjYWxjdWxhdGVPblJlZnJlc2hcIiBpZD1cImNhbGN1bGF0ZU9uUmVmcmVzaCR7cmVsc3RyTGVuZ3RofVwiIGNsYXNzPVwiY2hlY2tib3hcIiBjaGVja2VkLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIHN0eWxlPVwiaGVpZ2h0OjM0cHg7XCIgbmFtZT1cInJlbGF0ZVwiIGlkPVwicmVsYXRlJHtyZWxzdHJMZW5ndGh9XCIgY2xhc3M9XCJjaGVja2JveFwiICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9XCJoaWRkZW5TY3JpcHQke3JlbHN0ckxlbmd0aH1cIiBzdHlsZT1cImhlaWdodDozNHB4O1wiIG5hbWU9XCJoaWRkZW5TY3JpcHRcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9XCJyZWFkT25seVNjcmlwdCR7cmVsc3RyTGVuZ3RofVwiIHN0eWxlPVwiaGVpZ2h0OjM0cHg7XCIgbmFtZT1cInJlYWRPbmx5U2NyaXB0XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPVwiaGlkZGVuUHJpbnRTY3JpcHQke3JlbHN0ckxlbmd0aH1cIiBzdHlsZT1cImhlaWdodDozNHB4O1wiIG5hbWU9XCJoaWRkZW5QcmludFNjcmlwdFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgZC1ibG9ja1wiIGlkPVwiZGVsVGFiZmllbGRcIj7liKDpmaQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldCkubmV4dCgpLmFwcGVuZCh0YWJmaWVsZENvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRvRWRpdC5yZWxzdHIucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOlwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOlwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibW9kdWxlXCI6XCJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJtb2R1bGVJZFwiOlwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZm9ybUlkXCI6XCJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoaWRkZW5TY3JpcHRcIjpcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInJlYWRPbmx5U2NyaXB0XCI6XCJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoaWRkZW5QcmludFNjcmlwdFwiOlwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicmVmcmVzaE9uQ2hhbmdlZFwiOlwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY2FsY3VsYXRlT25SZWZyZXNoXCI6XCJ0cnVlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicmVsYXRlXCI6XCJmYWxzZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdkZWxUYWJmaWVsZCddXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQucmVsc3RyLnNwbGljZSgkKGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KS5pbmRleCgpLTEsMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJidXR0b25baWQ9J2RlbFRhYmZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQucmVsc3RyLnNwbGljZSgkKGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KS5pbmRleCgpLTEsMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdjYWxjdGV4dGZpZWxkJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgJC53aGVuKGFwaS5nZXRUZW1wbGV0ZSgnZWRpdENhbGN0ZXh0ZmllbGQtdG1wbCcpLCBhcGkuZ2V0SlNPTigpKS5kb25lKCh0bWwsIGpzb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJhc2VEYXRhPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOmN1cnJUb0VkaXQuZ2V0UHJvcCgnbmFtZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcCgndmFsdWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3Nob3dsYWJlbDpjdXJyVG9FZGl0LmdldFByb3AoXCJpc3Nob3dsYWJlbFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImxhYmVsdmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoOmN1cnJUb0VkaXQuZ2V0UHJvcChcImNhbGN1bGF0ZW9ucmVmcmVzaFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJ2YWx1ZXNjcmlwdFwiKSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2FsY3RleHRmaWVsZERhdGE9JC5leHRlbmQoe30sIGJhc2VEYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaHRtbCA9ICBIZWxwZXIuZ2V0SW5zdGFuY2UoKS5oYW5kbGVUZW1wbGV0ZSh0bWxbMF0sIGNhbGN0ZXh0ZmllbGREYXRhLCdlZGl0Q2FsY3RleHRmaWVsZC10bXBsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuaHRtbCgkaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmNsdWRlZmllbGQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkLndoZW4oYXBpLmdldFRlbXBsZXRlKCdlZGl0SW5jbHVkZWZpZWxkLXRtcGwnKSwgYXBpLmdldEpTT04oKSkuZG9uZSgodG1sLCBqc29uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uZmlnPWpzb25bMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuaW5jbHVkZXR5cGVzLmZvckVhY2goKHZhbCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWwudmFsdWU9PWN1cnJUb0VkaXQuZ2V0UHJvcCgnaW5jbHVkZXR5cGUnKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5tb2R1bGVzcy5mb3JFYWNoKCh2YWwpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsLnZhbHVlPT1jdXJyVG9FZGl0LmdldFByb3AoJ21vZHVsZScpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnNlbGVjdD1cInRydWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnZpZXdpZHMuZm9yRWFjaCgodmFsKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbC52YWx1ZT09Y3VyclRvRWRpdC5nZXRQcm9wKCd2aWV3aWQnKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiYXNlRGF0YT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpjdXJyVG9FZGl0LmdldFByb3AoJ25hbWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWx1ZXNjcmlwdCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hvbmNoYW5nZWQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWZyZXNob25jaGFuZ2VkJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoOmN1cnJUb0VkaXQuZ2V0UHJvcCgnY2FsY3VsYXRlb25yZWZyZXNoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaG1vZGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWZyZXNobW9kZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGltaXRlZDpmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5zY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVuc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnByaW50c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJpbnRoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2RlZmF1bHR2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJpc2RlZmF1bHR2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxOYW1lOmZvcm0uYWxsTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZGVzY3JpcHRpb246Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJvY2Vzc2Rlc2NyaXB0aW9uXCIpPT1cIltdO1tdXCI/XCJcIjpjdXJyVG9FZGl0LmdldFByb3AoXCJwcm9jZXNzZGVzY3JpcHRpb25cIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaGZpZWxkczpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWZyZXNoZmllbGRzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2hvd2xhYmVsOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzc2hvd2xhYmVsXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGFiZWx2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGU6Y3VyclRvRWRpdC5nZXRQcm9wKFwicmVsYXRlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGF0aW9uOmN1cnJUb0VkaXQuZ2V0UHJvcChcImZpeGF0aW9uXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGF0aW9uaGVpZ2h0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImZpeGF0aW9uaGVpZ2h0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRtb2RlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImVkaXRtb2RlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluY2x1ZGVmaWVsZERhdGE9JC5leHRlbmQoe30sIGNvbmZpZywgYmFzZURhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRodG1sID0gIEhlbHBlci5nZXRJbnN0YW5jZSgpLmhhbmRsZVRlbXBsZXRlKHRtbFswXSwgaW5jbHVkZWZpZWxkRGF0YSwnZWRpdEluY2x1ZGVmaWVsZC10bXBsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuaHRtbCgkaHRtbCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiaW5wdXRbdHlwZT0ncmFkaW8nXSwgaW5wdXRbdHlwZT0nY2hlY2tib3gnXSwgc2VsZWN0XCIpLm9uKFwiY2hhbmdlXCIsIGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaGFuZ2VFZGl0Q29udGVudFBhbmVsKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v5bGA6YOo5Yi35paw55qE5re75Yqg5a2X5q615ZKM5Yig6ZmkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJidXR0b25baWQ9J2FkZFJlZnJlc2hGaWVsZCddXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5hcHBlbmQoaCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdkZWxSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyVG9FZGl0LnJlZnJlc2hmaWVsZHMuc3BsaWNlKCQoZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQpLmluZGV4KCktMiwxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nZGVsUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQucmVmcmVzaGZpZWxkcy5zcGxpY2UoJChldmVudC50YXJnZXQucGFyZW50RWxlbWVudCkuaW5kZXgoKS0yLDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdzdXJ2ZXlmaWVsZCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQud2hlbihhcGkuZ2V0VGVtcGxldGUoJ2VkaXRTdXJ2ZXlmaWVsZC10bXBsJyksIGFwaS5nZXRKU09OKCkpLmRvbmUoKHRtbCwganNvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZz1qc29uWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmFzZURhdGE9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6Y3VyclRvRWRpdC5nZXRQcm9wKCduYW1lJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWx1ZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZW9ucmVmcmVzaDpjdXJyVG9FZGl0LmdldFByb3AoJ2NhbGN1bGF0ZW9ucmVmcmVzaCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW5zY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVudmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVucHJpbnRzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVucHJpbnRzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRoaWRkZW52YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJwcmludGhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2hvd2xhYmVsOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzc2hvd2xhYmVsXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGFiZWx2YWx1ZVwiKSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOmN1cnJUb0VkaXQuZ2V0UHJvcChcIm1vYmlsZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJkaXNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbnNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJxdWVzdGlvbnNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWFkb25seXNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdXJ2ZXlmaWVsZERhdGE9JC5leHRlbmQoe30sIGNvbmZpZywgYmFzZURhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRodG1sID0gIEhlbHBlci5nZXRJbnN0YW5jZSgpLmhhbmRsZVRlbXBsZXRlKHRtbFswXSwgc3VydmV5ZmllbGREYXRhLCdlZGl0U3VydmV5ZmllbGQtdG1wbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmh0bWwoJGh0bWwpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImlucHV0W3R5cGU9J3JhZGlvJ10sIGlucHV0W3R5cGU9J2NoZWNrYm94J10sIHNlbGVjdFwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2hhbmdlRWRpdENvbnRlbnRQYW5lbCh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYXR0YWNobWVudCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQud2hlbihhcGkuZ2V0VGVtcGxldGUoJ2VkaXRBdHRhY2htZW50LXRtcGwnKSwgYXBpLmdldEpTT04oKSkuZG9uZSgodG1sLCBqc29uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uZmlnPWpzb25bMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0ZWxpYnNPcHRpb24uZm9yRWFjaCgodmFsKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbC52YWx1ZT09Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWxpZGF0ZWxpYnMnKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJhc2VEYXRhPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOmN1cnJUb0VkaXQuZ2V0UHJvcCgnbmFtZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcCgndmFsdWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlc2NyaXB0JyksXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5c2hvd3ZhbG9ubHk6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWFkb25seXNob3d2YWxvbmx5JyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaG9uY2hhbmdlZDpjdXJyVG9FZGl0LmdldFByb3AoJ3JlZnJlc2hvbmNoYW5nZWQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdGVvbnJlZnJlc2g6Y3VyclRvRWRpdC5nZXRQcm9wKCdjYWxjdWxhdGVvbnJlZnJlc2gnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2JpbGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdtb2JpbGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoJ2Rpc2NyaXB0JyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaG1vZGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWZyZXNobW9kZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGltaXRlZDpmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZWxpYnM6Y3VyclRvRWRpdC5nZXRQcm9wKFwidmFsaWRhdGVsaWJzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlcnVsZTpjdXJyVG9FZGl0LmdldFByb3AoXCJ2YWxpZGF0ZXJ1bGVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW52YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5wcmludHNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW5wcmludHNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcInByaW50aGlkZGVudmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwicmVhZG9ubHlzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsTmFtZTpmb3JtLmFsbE5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaGZpZWxkczpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWZyZXNoZmllbGRzXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2hvd2xhYmVsOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzc2hvd2xhYmVsXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGFiZWx2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW50dmFsaWRhdGU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaW5zdGFudHZhbGlkYXRlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGV0eXBlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImZpbGV0eXBlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6ZXR5cGU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiY3VzdG9taXpldHlwZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHNpemU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGltaXRzaXplXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0bnVtYmVyOmN1cnJUb0VkaXQuZ2V0UHJvcChcImxpbWl0bnVtYmVyXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVwYXR0ZXJuOmN1cnJUb0VkaXQuZ2V0UHJvcChcImZpbGVwYXR0ZXJuXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVjYXRhbG9nOmN1cnJUb0VkaXQuZ2V0UHJvcChcImZpbGVjYXRhbG9nXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpZXdlZGl0OmN1cnJUb0VkaXQuZ2V0UHJvcChcInByZXZpZXdlZGl0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW53YXRlcm1hcms6Y3VyclRvRWRpdC5nZXRQcm9wKFwib3BlbndhdGVybWFya1wiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c29ydGluZzpjdXJyVG9FZGl0LmdldFByb3AoXCJzdXBwb3J0c29ydGluZ1wiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXRlcm1hcmtzdXBwb3J0bW9kZTpjdXJyVG9FZGl0LmdldFByb3AoXCJ3YXRlcm1hcmtzdXBwb3J0bW9kZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXRlcm1hcmtzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwid2F0ZXJtYXJrc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGF0dGFjaG1lbnREYXRhPSQuZXh0ZW5kKHt9LCBjb25maWcsIGJhc2VEYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaHRtbCA9ICBIZWxwZXIuZ2V0SW5zdGFuY2UoKS5oYW5kbGVUZW1wbGV0ZSh0bWxbMF0sIGF0dGFjaG1lbnREYXRhLCdlZGl0QXR0YWNobWVudC10bXBsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuaHRtbCgkaHRtbCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiaW5wdXRbdHlwZT0ncmFkaW8nXSwgaW5wdXRbdHlwZT0nY2hlY2tib3gnXSwgc2VsZWN0XCIpLm9uKFwiY2hhbmdlXCIsIGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaGFuZ2VFZGl0Q29udGVudFBhbmVsKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v5bGA6YOo5Yi35paw55qE5re75Yqg5a2X5q615ZKM5Yig6ZmkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJidXR0b25baWQ9J2FkZFJlZnJlc2hGaWVsZCddXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5hcHBlbmQoaCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdkZWxSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyVG9FZGl0LnJlZnJlc2hmaWVsZHMuc3BsaWNlKCQoZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQpLmluZGV4KCktMiwxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nZGVsUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQucmVmcmVzaGZpZWxkcy5zcGxpY2UoJChldmVudC50YXJnZXQucGFyZW50RWxlbWVudCkuaW5kZXgoKS0yLDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdpbWFnZXVwbG9hZGZpZWxkJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgJC53aGVuKGFwaS5nZXRUZW1wbGV0ZSgnZWRpdEltYWdldXBsb2FkZmllbGQtdG1wbCcpLCBhcGkuZ2V0SlNPTigpKS5kb25lKCh0bWwsIGpzb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25maWc9anNvblswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJhc2VEYXRhPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOmN1cnJUb0VkaXQuZ2V0UHJvcCgnbmFtZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcCgndmFsdWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlc2NyaXB0JyksXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5c2hvd3ZhbG9ubHk6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWFkb25seXNob3d2YWxvbmx5JyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaG9uY2hhbmdlZDpjdXJyVG9FZGl0LmdldFByb3AoJ3JlZnJlc2hvbmNoYW5nZWQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxjdWxhdGVvbnJlZnJlc2g6Y3VyclRvRWRpdC5nZXRQcm9wKCdjYWxjdWxhdGVvbnJlZnJlc2gnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2JpbGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdtb2JpbGUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoJ2Rpc2NyaXB0JyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaG1vZGU6Y3VyclRvRWRpdC5nZXRQcm9wKCdyZWZyZXNobW9kZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGltaXRlZDpmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5zY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVuc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnByaW50c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJpbnRoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWFkb25seXNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxOYW1lOmZvcm0uYWxsTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoZmllbGRzOmN1cnJUb0VkaXQuZ2V0UHJvcChcInJlZnJlc2hmaWVsZHNcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzaG93bGFiZWw6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaXNzaG93bGFiZWxcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWx2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJsYWJlbHZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0c2l6ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJsaW1pdHNpemVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRudW1iZXI6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGltaXRudW1iZXJcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXBhdHRlcm46Y3VyclRvRWRpdC5nZXRQcm9wKFwiZmlsZXBhdHRlcm5cIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZWNhdGFsb2c6Y3VyclRvRWRpdC5nZXRQcm9wKFwiZmlsZWNhdGFsb2dcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1naDpjdXJyVG9FZGl0LmdldFByb3AoXCJpbWdoXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ3c6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaW1nd1wiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbWFnZXVwbG9hZGZpZWxkRGF0YT0kLmV4dGVuZCh7fSwgY29uZmlnLCBiYXNlRGF0YSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGh0bWwgPSAgSGVscGVyLmdldEluc3RhbmNlKCkuaGFuZGxlVGVtcGxldGUodG1sWzBdLCBpbWFnZXVwbG9hZGZpZWxkRGF0YSwnZWRpdEltYWdldXBsb2FkZmllbGQtdG1wbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmh0bWwoJGh0bWwpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImlucHV0W3R5cGU9J3JhZGlvJ10sIGlucHV0W3R5cGU9J2NoZWNrYm94J10sIHNlbGVjdFwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2hhbmdlRWRpdENvbnRlbnRQYW5lbCh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+WxgOmDqOWIt+aWsOeahOa3u+WKoOWtl+auteWSjOWIoOmZpFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiYnV0dG9uW2lkPSdhZGRSZWZyZXNoRmllbGQnXVwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCkuYXBwZW5kKGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImJ1dHRvbltpZD0nZGVsUmVmcmVzaEZpZWxkJ11cIikub24oXCJjbGlja1wiLCBmdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRvRWRpdC5yZWZyZXNoZmllbGRzLnNwbGljZSgkKGV2ZW50LnRhcmdldC5wYXJlbnRFbGVtZW50KS5pbmRleCgpLTIsMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJidXR0b25baWQ9J2RlbFJlZnJlc2hGaWVsZCddXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50KS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyVG9FZGl0LnJlZnJlc2hmaWVsZHMuc3BsaWNlKCQoZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQpLmluZGV4KCktMiwxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnb25saW5ldGFrZXBob3RvZmllbGQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkLndoZW4oYXBpLmdldFRlbXBsZXRlKCdlZGl0T25saW5ldGFrZXBob3RvZmllbGQtdG1wbCcpLCBhcGkuZ2V0SlNPTigpKS5kb25lKCh0bWwsIGpzb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25maWc9anNvblswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJhc2VEYXRhPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOmN1cnJUb0VkaXQuZ2V0UHJvcCgnbmFtZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcCgndmFsdWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlc2NyaXB0JyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoOmN1cnJUb0VkaXQuZ2V0UHJvcCgnY2FsY3VsYXRlb25yZWZyZXNoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdkaXNjcmlwdCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGltaXRlZDpmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5zY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVuc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnByaW50c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJpbnRoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWFkb25seXNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxOYW1lOmZvcm0uYWxsTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3Nob3dsYWJlbDpjdXJyVG9FZGl0LmdldFByb3AoXCJpc3Nob3dsYWJlbFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImxhYmVsdmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1naDpjdXJyVG9FZGl0LmdldFByb3AoXCJpbWdoXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ3c6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaW1nd1wiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGJ1bTpjdXJyVG9FZGl0LmdldFByb3AoXCJhbGJ1bVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvbmxpbmV0YWtlcGhvdG9maWVsZERhdGE9JC5leHRlbmQoe30sIGNvbmZpZywgYmFzZURhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRodG1sID0gIEhlbHBlci5nZXRJbnN0YW5jZSgpLmhhbmRsZVRlbXBsZXRlKHRtbFswXSwgb25saW5ldGFrZXBob3RvZmllbGREYXRhLCdlZGl0T25saW5ldGFrZXBob3RvZmllbGQtdG1wbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmh0bWwoJGh0bWwpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImlucHV0W3R5cGU9J3JhZGlvJ10sIGlucHV0W3R5cGU9J2NoZWNrYm94J10sIHNlbGVjdFwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2hhbmdlRWRpdENvbnRlbnRQYW5lbCh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICd3ZWl4aW5ncHNmaWVsZCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQud2hlbihhcGkuZ2V0VGVtcGxldGUoJ2VkaXRXZWl4aW5ncHNmaWVsZC10bXBsJyksIGFwaS5nZXRKU09OKCkpLmRvbmUoKHRtbCwganNvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZz1qc29uWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmFzZURhdGE9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6Y3VyclRvRWRpdC5nZXRQcm9wKCduYW1lJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWx1ZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcCgnZGlzY3JpcHQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xpbWl0ZWQ6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW52YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5wcmludHNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW5wcmludHNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcInByaW50aGlkZGVudmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzaG93bGFiZWw6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaXNzaG93bGFiZWxcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWx2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJsYWJlbHZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hvbmNoYW5nZWQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwicmVmcmVzaG9uY2hhbmdlZFwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdlaXhpbmdwc2ZpZWxkRGF0YT0kLmV4dGVuZCh7fSwgY29uZmlnLCBiYXNlRGF0YSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGh0bWwgPSAgSGVscGVyLmdldEluc3RhbmNlKCkuaGFuZGxlVGVtcGxldGUodG1sWzBdLCB3ZWl4aW5ncHNmaWVsZERhdGEsJ2VkaXRXZWl4aW5ncHNmaWVsZC10bXBsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuaHRtbCgkaHRtbCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiaW5wdXRbdHlwZT0ncmFkaW8nXSwgaW5wdXRbdHlwZT0nY2hlY2tib3gnXSwgc2VsZWN0XCIpLm9uKFwiY2hhbmdlXCIsIGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaGFuZ2VFZGl0Q29udGVudFBhbmVsKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICd3ZWl4aW5yZWNvcmRmaWVsZCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQud2hlbihhcGkuZ2V0VGVtcGxldGUoJ2VkaXRXZWl4aW5yZWNvcmRmaWVsZC10bXBsJyksIGFwaS5nZXRKU09OKCkpLmRvbmUoKHRtbCwganNvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmZpZz1qc29uWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmFzZURhdGE9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6Y3VyclRvRWRpdC5nZXRQcm9wKCduYW1lJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKCd2YWx1ZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcCgnZGlzY3JpcHQnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xpbWl0ZWQ6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW52YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5wcmludHNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW5wcmludHNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcInByaW50aGlkZGVudmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzaG93bGFiZWw6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaXNzaG93bGFiZWxcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWx2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJsYWJlbHZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vYmlsZTpjdXJyVG9FZGl0LmdldFByb3AoXCJtb2JpbGVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwicmVhZG9ubHlzY3JpcHRcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB3ZWl4aW5yZWNvcmRmaWVsZERhdGE9JC5leHRlbmQoe30sIGNvbmZpZywgYmFzZURhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRodG1sID0gIEhlbHBlci5nZXRJbnN0YW5jZSgpLmhhbmRsZVRlbXBsZXRlKHRtbFswXSwgd2VpeGlucmVjb3JkZmllbGREYXRhLCdlZGl0V2VpeGlucmVjb3JkZmllbGQtdG1wbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmh0bWwoJGh0bWwpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImlucHV0W3R5cGU9J3JhZGlvJ10sIGlucHV0W3R5cGU9J2NoZWNrYm94J10sIHNlbGVjdFwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2hhbmdlRWRpdENvbnRlbnRQYW5lbCh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncXJjb2RlZmllbGQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkLndoZW4oYXBpLmdldFRlbXBsZXRlKCdlZGl0UXJjb2RlZmllbGQtdG1wbCcpLCBhcGkuZ2V0SlNPTigpKS5kb25lKCh0bWwsIGpzb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25maWc9anNvblswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJhc2VEYXRhPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOmN1cnJUb0VkaXQuZ2V0UHJvcCgnbmFtZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcCgndmFsdWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoJ2Rpc2NyaXB0JyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMaW1pdGVkOmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW5zY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVudmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVucHJpbnRzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVucHJpbnRzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRoaWRkZW52YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJwcmludGhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2hvd2xhYmVsOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzc2hvd2xhYmVsXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGFiZWx2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2JpbGU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibW9iaWxlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcInJlYWRvbmx5c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcInZhbHVlc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZW9ucmVmcmVzaDpjdXJyVG9FZGl0LmdldFByb3AoXCJjYWxjdWxhdGVvbnJlZnJlc2hcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJzaXplXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXR5cGU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGFuZGxldHlwZVwiKSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcXJjb2RlZmllbGREYXRhPSQuZXh0ZW5kKHt9LCBjb25maWcsIGJhc2VEYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaHRtbCA9ICBIZWxwZXIuZ2V0SW5zdGFuY2UoKS5oYW5kbGVUZW1wbGV0ZSh0bWxbMF0sIHFyY29kZWZpZWxkRGF0YSwnZWRpdFFyY29kZWZpZWxkLXRtcGwnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5odG1sKCRodG1sKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJpbnB1dFt0eXBlPSdyYWRpbyddLCBpbnB1dFt0eXBlPSdjaGVja2JveCddLCBzZWxlY3RcIikub24oXCJjaGFuZ2VcIiwgZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNoYW5nZUVkaXRDb250ZW50UGFuZWwodGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ21hcGZpZWxkJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgJC53aGVuKGFwaS5nZXRUZW1wbGV0ZSgnZWRpdE1hcGZpZWxkLXRtcGwnKSwgYXBpLmdldEpTT04oKSkuZG9uZSgodG1sLCBqc29uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uZmlnPWpzb25bMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcubWFwdHlwZXMuZm9yRWFjaCgodmFsKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbC52YWx1ZT09Y3VyclRvRWRpdC5nZXRQcm9wKCdtYXB0eXBlJykpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuc2VsZWN0PVwidHJ1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcub3BlbnR5cGVzLmZvckVhY2goKHZhbCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWwudmFsdWU9PWN1cnJUb0VkaXQuZ2V0UHJvcCgnb3BlbnR5cGUnKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiYXNlRGF0YT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpjdXJyVG9FZGl0LmdldFByb3AoJ25hbWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdkaXNjcmlwdCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGltaXRlZDpmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5zY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVuc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnByaW50c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJpbnRoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3Nob3dsYWJlbDpjdXJyVG9FZGl0LmdldFByb3AoXCJpc3Nob3dsYWJlbFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImxhYmVsdmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoOmN1cnJUb0VkaXQuZ2V0UHJvcChcImNhbGN1bGF0ZW9ucmVmcmVzaFwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hcGZpZWxkRGF0YT0kLmV4dGVuZCh7fSwgY29uZmlnLCBiYXNlRGF0YSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGh0bWwgPSAgSGVscGVyLmdldEluc3RhbmNlKCkuaGFuZGxlVGVtcGxldGUodG1sWzBdLCBtYXBmaWVsZERhdGEsJ2VkaXRNYXBmaWVsZC10bXBsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuaHRtbCgkaHRtbCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiaW5wdXRbdHlwZT0ncmFkaW8nXSwgaW5wdXRbdHlwZT0nY2hlY2tib3gnXSwgc2VsZWN0XCIpLm9uKFwiY2hhbmdlXCIsIGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaGFuZ2VFZGl0Q29udGVudFBhbmVsKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdnZW5lcmljd29yZGZpZWxkJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgJC53aGVuKGFwaS5nZXRUZW1wbGV0ZSgnZWRpdEdlbmVyaWN3b3JkZmllbGQtdG1wbCcpLCBhcGkuZ2V0SlNPTigpKS5kb25lKCh0bWwsIGpzb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25maWc9anNvblswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy53b3Jkb3BlbnR5cGVzLmZvckVhY2goKHZhbCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWwudmFsdWU9PWN1cnJUb0VkaXQuZ2V0UHJvcCgnb3BlbnR5cGUnKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5zZWxlY3Q9XCJ0cnVlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiYXNlRGF0YT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpjdXJyVG9FZGl0LmdldFByb3AoJ25hbWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdkaXNjcmlwdCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGltaXRlZDpmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5zY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVuc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnByaW50c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJpbnRoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3Nob3dsYWJlbDpjdXJyVG9FZGl0LmdldFByb3AoXCJpc3Nob3dsYWJlbFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImxhYmVsdmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoOmN1cnJUb0VkaXQuZ2V0UHJvcChcImNhbGN1bGF0ZW9ucmVmcmVzaFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWFkb25seXNjcmlwdFwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdlbmVyaWN3b3JkZmllbGREYXRhPSQuZXh0ZW5kKHt9LCBjb25maWcsIGJhc2VEYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaHRtbCA9ICBIZWxwZXIuZ2V0SW5zdGFuY2UoKS5oYW5kbGVUZW1wbGV0ZSh0bWxbMF0sIGdlbmVyaWN3b3JkZmllbGREYXRhLCdlZGl0R2VuZXJpY3dvcmRmaWVsZC10bXBsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuaHRtbCgkaHRtbCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5maW5kKFwiaW5wdXRbdHlwZT0ncmFkaW8nXSwgaW5wdXRbdHlwZT0nY2hlY2tib3gnXSwgc2VsZWN0XCIpLm9uKFwiY2hhbmdlXCIsIGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5jaGFuZ2VFZGl0Q29udGVudFBhbmVsKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdodG1sZWRpdG9yZmllbGQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkLndoZW4oYXBpLmdldFRlbXBsZXRlKCdlZGl0SHRtbGVkaXRvcmZpZWxkLXRtcGwnKSwgYXBpLmdldEpTT04oKSkuZG9uZSgodG1sLCBqc29uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uZmlnPWpzb25bMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiYXNlRGF0YT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpjdXJyVG9FZGl0LmdldFByb3AoJ25hbWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdkaXNjcmlwdCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGltaXRlZDpmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5zY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVuc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnByaW50c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJpbnRoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3Nob3dsYWJlbDpjdXJyVG9FZGl0LmdldFByb3AoXCJpc3Nob3dsYWJlbFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImxhYmVsdmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlb25yZWZyZXNoOmN1cnJUb0VkaXQuZ2V0UHJvcChcImNhbGN1bGF0ZW9ucmVmcmVzaFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJyZWFkb25seXNjcmlwdFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2JpbGU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibW9iaWxlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWF3aWR0aDpjdXJyVG9FZGl0LmdldFByb3AoXCJhcmVhd2lkdGhcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYWhlaWdodDpjdXJyVG9FZGl0LmdldFByb3AoXCJhcmVhaGVpZ2h0XCIpLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0bW9kZTpjdXJyVG9FZGl0LmdldFByb3AoXCJlZGl0bW9kZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZGVzY3JpcHRpb246Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJvY2Vzc2Rlc2NyaXB0aW9uXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcInZhbHVlc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZGVmYXVsdHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzZGVmYXVsdHZhbHVlXCIpLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBodG1sZWRpdG9yZmllbGREYXRhPSQuZXh0ZW5kKHt9LCBjb25maWcsIGJhc2VEYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaHRtbCA9ICBIZWxwZXIuZ2V0SW5zdGFuY2UoKS5oYW5kbGVUZW1wbGV0ZSh0bWxbMF0sIGh0bWxlZGl0b3JmaWVsZERhdGEsJ2VkaXRIdG1sZWRpdG9yZmllbGQtdG1wbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmh0bWwoJGh0bWwpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImlucHV0W3R5cGU9J3JhZGlvJ10sIGlucHV0W3R5cGU9J2NoZWNrYm94J10sIHNlbGVjdFwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2hhbmdlRWRpdENvbnRlbnRQYW5lbCh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmxvd2hpc3RvcnlmaWVsZCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQud2hlbihhcGkuZ2V0VGVtcGxldGUoJ2VkaXRGbG93aGlzdG9yeWZpZWxkLXRtcGwnKSwgYXBpLmdldEpTT04oKSkuZG9uZSgodG1sLCBqc29uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uZmlnPWpzb25bMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiYXNlRGF0YT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpjdXJyVG9FZGl0LmdldFByb3AoJ25hbWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdkaXNjcmlwdCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGltaXRlZDpmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5zY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVuc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnByaW50c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJpbnRoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3Nob3dsYWJlbDpjdXJyVG9FZGl0LmdldFByb3AoXCJpc3Nob3dsYWJlbFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImxhYmVsdmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOmN1cnJUb0VkaXQuZ2V0UHJvcChcIm1vYmlsZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93bW9kZTpjdXJyVG9FZGl0LmdldFByb3AoXCJzaG93bW9kZVwiKSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmxvd2hpc3RvcnlmaWVsZERhdGE9JC5leHRlbmQoe30sIGNvbmZpZywgYmFzZURhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRodG1sID0gIEhlbHBlci5nZXRJbnN0YW5jZSgpLmhhbmRsZVRlbXBsZXRlKHRtbFswXSwgZmxvd2hpc3RvcnlmaWVsZERhdGEsJ2VkaXRGbG93aGlzdG9yeWZpZWxkLXRtcGwnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5odG1sKCRodG1sKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJpbnB1dFt0eXBlPSdyYWRpbyddLCBpbnB1dFt0eXBlPSdjaGVja2JveCddLCBzZWxlY3RcIikub24oXCJjaGFuZ2VcIiwgZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNoYW5nZUVkaXRDb250ZW50UGFuZWwodGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdmbG93cmVtaW5kZXJoaXN0b3J5ZmllbGQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkLndoZW4oYXBpLmdldFRlbXBsZXRlKCdlZGl0Rmxvd3JlbWluZGVyaGlzdG9yeWZpZWxkLXRtcGwnKSwgYXBpLmdldEpTT04oKSkuZG9uZSgodG1sLCBqc29uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uZmlnPWpzb25bMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiYXNlRGF0YT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpjdXJyVG9FZGl0LmdldFByb3AoJ25hbWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoJ3ZhbHVlJyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKCdkaXNjcmlwdCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGltaXRlZDpmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5zY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVuc2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnByaW50c2NyaXB0OmN1cnJUb0VkaXQuZ2V0UHJvcChcImhpZGRlbnByaW50c2NyaXB0XCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwicHJpbnRoaWRkZW52YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3Nob3dsYWJlbDpjdXJyVG9FZGl0LmdldFByb3AoXCJpc3Nob3dsYWJlbFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcChcImxhYmVsdmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmxvd3JlbWluZGVyaGlzdG9yeWZpZWxkRGF0YT0kLmV4dGVuZCh7fSwgY29uZmlnLCBiYXNlRGF0YSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGh0bWwgPSAgSGVscGVyLmdldEluc3RhbmNlKCkuaGFuZGxlVGVtcGxldGUodG1sWzBdLCBmbG93cmVtaW5kZXJoaXN0b3J5ZmllbGREYXRhLCdlZGl0Rmxvd3JlbWluZGVyaGlzdG9yeWZpZWxkLXRtcGwnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5odG1sKCRodG1sKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmZpbmQoXCJpbnB1dFt0eXBlPSdyYWRpbyddLCBpbnB1dFt0eXBlPSdjaGVja2JveCddLCBzZWxlY3RcIikub24oXCJjaGFuZ2VcIiwgZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmNoYW5nZUVkaXRDb250ZW50UGFuZWwodGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9ybWF0aW9uZmVlZGJhY2tmaWVsZCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQud2hlbihhcGkuZ2V0VGVtcGxldGUoJ2VkaXRJbmZvcm1hdGlvbmZlZWRiYWNrZmllbGQtdG1wbCcpLCBhcGkuZ2V0SlNPTigpKS5kb25lKCh0bWwsIGpzb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25maWc9anNvblswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJhc2VEYXRhPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOmN1cnJUb0VkaXQuZ2V0UHJvcCgnbmFtZScpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOmN1cnJUb0VkaXQuZ2V0UHJvcCgndmFsdWUnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoJ2Rpc2NyaXB0JyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMaW1pdGVkOmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbnNjcmlwdDpjdXJyVG9FZGl0LmdldFByb3AoXCJoaWRkZW5zY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVudmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVudmFsdWVcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVucHJpbnRzY3JpcHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiaGlkZGVucHJpbnRzY3JpcHRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRoaWRkZW52YWx1ZTpjdXJyVG9FZGl0LmdldFByb3AoXCJwcmludGhpZGRlbnZhbHVlXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzc2hvd2xhYmVsOmN1cnJUb0VkaXQuZ2V0UHJvcChcImlzc2hvd2xhYmVsXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsdmFsdWU6Y3VyclRvRWRpdC5nZXRQcm9wKFwibGFiZWx2YWx1ZVwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhd2lkdGg6Y3VyclRvRWRpdC5nZXRQcm9wKFwiYXJlYXdpZHRoXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWFoZWlnaHQ6Y3VyclRvRWRpdC5nZXRQcm9wKFwiYXJlYWhlaWdodFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmZvcm1hdGlvbmZlZWRiYWNrZmllbGREYXRhPSQuZXh0ZW5kKHt9LCBjb25maWcsIGJhc2VEYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaHRtbCA9ICBIZWxwZXIuZ2V0SW5zdGFuY2UoKS5oYW5kbGVUZW1wbGV0ZSh0bWxbMF0sIGluZm9ybWF0aW9uZmVlZGJhY2tmaWVsZERhdGEsJ2VkaXRJbmZvcm1hdGlvbmZlZWRiYWNrZmllbGQtdG1wbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyLmh0bWwoJGh0bWwpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXIuZmluZChcImlucHV0W3R5cGU9J3JhZGlvJ10sIGlucHV0W3R5cGU9J2NoZWNrYm94J10sIHNlbGVjdFwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY2hhbmdlRWRpdENvbnRlbnRQYW5lbCh0aGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgJC53aGVuKGFwaS5nZXRUZW1wbGV0ZSgnZWRpdEZvcm1QYW5lbC10bXBsJyksIGFwaS5nZXRKU09OKCkpLmRvbmUoKHRtbCwganNvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaHRtbCA9ICBIZWxwZXIuZ2V0SW5zdGFuY2UoKS5oYW5kbGVUZW1wbGV0ZSh0bWxbMF0sIHt9LCdlZGl0Rm9ybVBhbmVsLXRtcGwnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci5odG1sKCRodG1sKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnQoJGNvbnRhaW5lcik7XHJcbiAgICAgICAgfVxyXG5cdFx0XHJcbiAgICB9XHJcbiAgICBjaGFuZ2VFZGl0Q29udGVudFBhbmVsKGRvbSl7XHJcbiAgICAgICAgdmFyICR0aGlzID0gJChkb20pO1xyXG4gICAgICAgIHZhciBuYW1lID0gJHRoaXMuYXR0cihcIm5hbWVcIik7XHJcbiAgICAgICAgdmFyIHZhbHVlID0gJHRoaXMudmFsKCk7XHJcblxyXG4gICAgICAgIHZhciAkcGFuZWxzID0gJChcImRpdltkYXRhLWNvbXBvbmVudE5hbWU9J1wiK25hbWUrXCInXVwiKTtcclxuXHJcbiAgICAgICAgJHBhbmVscy5lYWNoKGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIHZhciBkYXRhVmFsdWUgPSAkKHRoaXMpLmRhdGEoXCJ2YWx1ZVwiKTtcclxuICAgICAgICAgICAgaWYodHlwZW9mIGRhdGFWYWx1ZSA9PSBcImJvb2xlYW5cIil7XHJcbiAgICAgICAgICAgICAgICBkYXRhVmFsdWUgPSBkYXRhVmFsdWUgPyBcInRydWVcIiA6IFwiZmFsc2VcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihkYXRhVmFsdWUgPT0gdmFsdWUgJiYgJCh0aGlzKS5oYXNDbGFzcyhcImQtbm9uZVwiKSl7XHJcbiAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKFwiZC1ub25lXCIpO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoXCJkLW5vbmVcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gICAgcmVnaXN0ZXJFdmVudChjb250YWluZXIpe1xyXG4gICAgICAgIGNvbnN0ICRjb250YWluZXIgPSAkKGNvbnRhaW5lcik7XHJcblx0XHRjb25zdCBmb3JtID0gdGhpcy5mb3JtO1xyXG5cdFx0Y29uc3QgY3VyclRvRWRpdCA9IGZvcm0uZ2V0Q3VyclRvRWRpdCgpO1xyXG4gICAgICAgIC8vIGNvbnN0IHRyZWUgPSBUcmVlLmdldEluc3RhbmNlKCk7XHJcbiAgICAgICAgbGV0IG5lZWQ9ZmFsc2U7XHJcbiAgICAgICAgJGNvbnRhaW5lci5vZmYoJ2lucHV0IGNoYW5nZScpLm9uKCdpbnB1dCBjaGFuZ2UnLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAvLyDlsZ7mgKfpnaLmnb/nmoTmlofmnKzmoYbkuovku7ZcclxuICAgICAgICAgICAgXHJcblx0XHRcdGNvbnN0IHRhcmdldCA9ICQoZS50YXJnZXQpO1xyXG5cdFx0XHRjb25zdCBrZXkgPSB0YXJnZXQuYXR0cignaWQnKT90YXJnZXQuYXR0cignaWQnKTp0YXJnZXQuYXR0cignbmFtZScpO1xyXG5cdFx0XHRjb25zdCB0eXBlID0gdGFyZ2V0LmF0dHIoJ3R5cGUnKTtcclxuICAgICAgICAgICAgbGV0IHByb3AgPSB7fTtcclxuICAgICAgICAgICAgaWYodHlwZT09J251bWJlcicpe1xyXG4gICAgICAgICAgICAgICAgcHJvcFtrZXldID0gcGFyc2VJbnQodGFyZ2V0LnZhbCgpKTtcclxuICAgICAgICAgICAgfWVsc2UgaWYodHlwZT09J2NoZWNrYm94Jyl7XHJcbiAgICAgICAgICAgICAgICBwcm9wW2tleV0gPSB0YXJnZXQucHJvcCgnY2hlY2tlZCcpO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHByb3Bba2V5XSA9IHRhcmdldC52YWwoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihrZXk9PVwicmVmcmVzaGZpZWxkc1wiKXtcclxuICAgICAgICAgICAgICAgIC8vIGlmKGN1cnJUb0VkaXQucmVmcmVzaGZpZWxkcy5pbmRleE9mKHRhcmdldC52YWwoKSk9PS0xKXtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyVG9FZGl0LnJlZnJlc2hmaWVsZHNbJChldmVudC50YXJnZXQucGFyZW50RWxlbWVudCkuaW5kZXgoKS0yXT10YXJnZXQudmFsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgICAgICAgICAgcHJvcD17fTtcclxuICAgICAgICAgICAgfWVsc2UgaWYoa2V5PT1cImxhYmVsdmFsdWVcIil7XHJcbiAgICAgICAgICAgICAgICBsZXQgaWQ7XHJcbiAgICAgICAgICAgICAgICBpZihjdXJyVG9FZGl0KVxyXG4gICAgICAgICAgICAgICAgaWQ9XCIjXCIrY3VyclRvRWRpdC5pZDtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygkKGZvcm0ucGFuZWwpLmZpbmQoaWQpKVxyXG4gICAgICAgICAgICAgICAgbGV0IHdpZHRoPSQoZm9ybS5wYW5lbCkuZmluZChpZCkud2lkdGgoKTtcclxuICAgICAgICAgICAgICAgIGxldCBzbWFsbHdpZHRoPSQoZm9ybS5wYW5lbCkuZmluZChpZCkuY2hpbGRyZW4oKS5lcSgxKS53aWR0aCgpO1xyXG4gICAgICAgICAgICAgICAgaWYod2lkdGggJiYgc21hbGx3aWR0aCl7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcC53aWR0aD13aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBwcm9wLnNtYWxsd2lkdGg9c21hbGx3aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBuZWVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfWVsc2UgaWYoa2V5PT1cImlzc2hvd2xhYmVsXCIpe1xyXG4gICAgICAgICAgICAgICAgaWYodGFyZ2V0LnByb3AoXCJjaGVja2VkXCIpPT1mYWxzZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlkMjtcclxuICAgICAgICAgICAgICAgICAgICBpZihjdXJyVG9FZGl0KVxyXG4gICAgICAgICAgICAgICAgICAgIGlkMj1cIiNcIitjdXJyVG9FZGl0LmlkO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygkKGZvcm0ucGFuZWwpLmZpbmQoaWQyKSlcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc21hbGx3aWR0aDI9JChmb3JtLnBhbmVsKS5maW5kKGlkMikuY2hpbGRyZW4oKS5lcSgxKS53aWR0aCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHNtYWxsd2lkdGgyKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcC53aWR0aD1zbWFsbHdpZHRoMjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcC5zbWFsbHdpZHRoPXNtYWxsd2lkdGgyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1lbHNlIGlmKGtleT09XCJzdGF0ZXRvc2hvd3NcIil7XHJcbiAgICAgICAgICAgICAgICBpZigkKGUudGFyZ2V0KS5wcm9wKCdjaGVja2VkJykpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKCQoZS50YXJnZXQpLnNpYmxpbmdzKFwiaW5wdXRbbmFtZT0nc3RhdGV0b3Nob3cnXVwiKS52YWwoKSE9XCJcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcnI9JChlLnRhcmdldCkuc2libGluZ3MoXCJpbnB1dFtuYW1lPSdzdGF0ZXRvc2hvdyddXCIpLnZhbCgpLnNwbGl0KFwiO1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4PS0xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnIuZm9yRWFjaCgodmFsLGluZCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbD09dGFyZ2V0LnZhbCgpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD1pbmQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGluZGV4PT0tMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgJChlLnRhcmdldCkuc2libGluZ3MoXCJpbnB1dFtuYW1lPSdzdGF0ZXRvc2hvdyddXCIpLnZhbCh0YXJnZXQudmFsKCkrXCI7XCIrJChlLnRhcmdldCkuc2libGluZ3MoXCJpbnB1dFtuYW1lPSdzdGF0ZXRvc2hvdyddXCIpLnZhbCgpKTtcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJChlLnRhcmdldCkuc2libGluZ3MoXCJpbnB1dFtuYW1lPSdzdGF0ZXRvc2hvdyddXCIpLnZhbCh0YXJnZXQudmFsKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBpZigkKGUudGFyZ2V0KS5zaWJsaW5ncyhcImlucHV0W25hbWU9J3N0YXRldG9zaG93J11cIikudmFsKCkuaW5kZXhPZih0YXJnZXQudmFsKCkpPT0tMSlcclxuICAgICAgICAgICAgICAgICAgICAvLyAkKGUudGFyZ2V0KS5zaWJsaW5ncyhcImlucHV0W25hbWU9J3N0YXRldG9zaG93J11cIikudmFsKCQoZS50YXJnZXQpLnNpYmxpbmdzKFwiaW5wdXRbbmFtZT0nc3RhdGV0b3Nob3cnXVwiKS52YWwoKSt0YXJnZXQudmFsKCkpXHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYXJyMj0kKGUudGFyZ2V0KS5zaWJsaW5ncyhcImlucHV0W25hbWU9J3N0YXRldG9zaG93J11cIikudmFsKCkuc3BsaXQoXCI7XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpbmRleDI9LTE7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyMi5mb3JFYWNoKCh2YWwsaW5kKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih2YWw9PXRhcmdldC52YWwoKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDI9aW5kO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICBpZihpbmRleDIhPS0xKVxyXG4gICAgICAgICAgICAgICAgICAgIGFycjIuc3BsaWNlKGluZGV4MiwxKVxyXG4gICAgICAgICAgICAgICAgICAgICQoZS50YXJnZXQpLnNpYmxpbmdzKFwiaW5wdXRbbmFtZT0nc3RhdGV0b3Nob3cnXVwiKS52YWwoYXJyMi5qb2luKFwiO1wiKSlcclxuICAgICAgICAgICAgICAgICAgICAvLyAkKGUudGFyZ2V0KS5zaWJsaW5ncyhcImlucHV0W25hbWU9J3N0YXRldG9zaG93J11cIikudmFsKCQoZS50YXJnZXQpLnNpYmxpbmdzKFwiaW5wdXRbbmFtZT0nc3RhdGV0b3Nob3cnXVwiKS52YWwoKS5yZXBsYWNlKHRhcmdldC52YWwoKSxcIlwiKSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfWVsc2UgaWYoa2V5PT1cImNvbG5hbWVcIiB8fCBrZXk9PVwiZmxkbmFtZVwiKXtcclxuICAgICAgICAgICAgICAgIGlmKHRhcmdldC5zaWJsaW5ncyhcInNlbGVjdFwiKS52YWwoKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcD17fVxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BbXCJtYXBwaW5nXCJdPVtdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGtleT09XCJjb2xuYW1lXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYT17fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYVt0YXJnZXQudmFsKCldPXRhcmdldC5zaWJsaW5ncyhcInNlbGVjdFwiKS52YWwoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wW1wibWFwcGluZ1wiXS5wdXNoKGEpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYTI9e307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGEyW3RhcmdldC5zaWJsaW5ncyhcInNlbGVjdFwiKS52YWwoKV09dGFyZ2V0LnZhbCgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BbXCJtYXBwaW5nXCJdLnB1c2goYTIpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfWVsc2UgaWYoa2V5PT1cInNlbGVjdG9uZVwiKXtcclxuICAgICAgICAgICAgICAgIGlmKCQoZS50YXJnZXQpLnByb3AoJ2NoZWNrZWQnKSlcclxuICAgICAgICAgICAgICAgIHRhcmdldC5wYXJlbnQoKS5uZXh0KCkubmV4dCgpLmNoaWxkcmVuKFwiaW5wdXRcIikucHJvcChcImRpc2FibGVkXCIsXCJkaXNhYmxlZFwiKVxyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnBhcmVudCgpLm5leHQoKS5uZXh0KCkuY2hpbGRyZW4oXCJpbnB1dFwiKS5wcm9wKFwiZGlzYWJsZWRcIixmYWxzZSlcclxuICAgICAgICAgICAgfWVsc2UgaWYoa2V5PT1cIm11dGlsc2VsZWN0XCIpe1xyXG4gICAgICAgICAgICAgICAgaWYoJChlLnRhcmdldCkucHJvcCgnY2hlY2tlZCcpKVxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnBhcmVudCgpLnByZXYoKS5wcmV2KCkuY2hpbGRyZW4oXCJpbnB1dFwiKS5wcm9wKFwiZGlzYWJsZWRcIixcImRpc2FibGVkXCIpXHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQucGFyZW50KCkucHJldigpLnByZXYoKS5jaGlsZHJlbihcImlucHV0XCIpLnByb3AoXCJkaXNhYmxlZFwiLGZhbHNlKVxyXG4gICAgICAgICAgICB9ZWxzZSBpZihrZXkgPT0gXCJ3YXRlcm1hcmtzdXBwb3J0bW9kZVwiKXtcclxuICAgICAgICAgICAgICAgIC8vIGlmKCQoZS50YXJnZXQpLnByb3AoJ2NoZWNrZWQnKSl7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2F0ZXJtYXJrc3VwcG9ydG1vZGV2YWx1ZT1cIlwiO1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBiPTA7YjwkKGUudGFyZ2V0KS5wYXJlbnQoKS5wYXJlbnQoKS5jaGlsZHJlbihcImxhYmVsXCIpLmxlbmd0aDtiKyspe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKCQoZS50YXJnZXQpLnBhcmVudCgpLnBhcmVudCgpLmNoaWxkcmVuKFwibGFiZWxcIikuZXEoYikuY2hpbGRyZW4oXCJpbnB1dFwiKS5wcm9wKFwiY2hlY2tlZFwiKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGIhPTApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F0ZXJtYXJrc3VwcG9ydG1vZGV2YWx1ZSs9XCIsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXRlcm1hcmtzdXBwb3J0bW9kZXZhbHVlKz0kKGUudGFyZ2V0KS5wYXJlbnQoKS5wYXJlbnQoKS5jaGlsZHJlbihcImxhYmVsXCIpLmVxKGIpLmNoaWxkcmVuKFwiaW5wdXRcIikudmFsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHByb3Bba2V5XT13YXRlcm1hcmtzdXBwb3J0bW9kZXZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG5cdFx0XHRpZihjdXJyVG9FZGl0ICE9IG51bGwgKSB7XHJcbiAgICAgICAgICAgICAgICBpZihjdXJyVG9FZGl0LnNjb3BlPT1cInRhYmZpZWxkXCIgJiYgKGtleS5pbmRleE9mKFwibmFtZVwiKT09MHx8a2V5LmluZGV4T2YoXCJ0eXBlXCIpIT0tMXx8a2V5LmluZGV4T2YoXCJtb2R1bGVcIikhPS0xfHxrZXkuaW5kZXhPZihcIm1vZHVsZUlkXCIpIT0tMXx8a2V5LmluZGV4T2YoXCJmb3JtSWRcIikhPS0xfHxrZXkuaW5kZXhPZihcImhpZGRlblNjcmlwdFwiKSE9LTF8fGtleS5pbmRleE9mKFwicmVhZE9ubHlTY3JpcHRcIikhPS0xfHxrZXkuaW5kZXhPZihcImhpZGRlblByaW50U2NyaXB0XCIpIT0tMXx8a2V5LmluZGV4T2YoXCJyZWZyZXNoT25DaGFuZ2VkXCIpIT0tMXx8a2V5LmluZGV4T2YoXCJjYWxjdWxhdGVPblJlZnJlc2hcIikhPS0xfHxrZXkuaW5kZXhPZihcInJlbGF0ZVwiKSE9LTEpKXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVsc3RySW5kPXBhcnNlSW50KGtleS5yZXBsYWNlKC9bYS16fEEtWl0qL2csXCJcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByZWxzdHJJZD1rZXkucmVwbGFjZSgvWzAtOV0qL2csXCJcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYodHlwZT09XCJjaGVja2JveFwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRvRWRpdC5yZWxzdHJbcmVsc3RySW5kXVtyZWxzdHJJZF09dGFyZ2V0LnByb3AoJ2NoZWNrZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VyclRvRWRpdC5yZWxzdHJbcmVsc3RySW5kXVtyZWxzdHJJZF09dGFyZ2V0LnZhbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHRcdFx0XHRjdXJyVG9FZGl0LnNldFByb3BzKHByb3ApO1xyXG5cdFx0XHR9IGVsc2V7XHJcblx0XHRcdFx0Zm9ybS5zZXRQcm9wcyhwcm9wKTtcclxuXHRcdFx0fVxyXG4gICAgICAgICAgICBpZihuZWVkKXtcclxuICAgICAgICAgICAgICAgIGZvcm0ucmVzZXRDaHVua1Bvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9ybS5yZXBhaW50KCk7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxyXG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXHJcblx0XHRcdC8vIHRyZWUucmVuZGVyKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgJGNvbnRhaW5lci5vZmYoJ3NlbGVjdCBjbGljaycpLm9uKCdzZWxlY3QgY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSAkKGUudGFyZ2V0KTtcclxuICAgICAgICAgICAgY29uc3Qga2V5ID0gdGFyZ2V0LnBhcmVudCgpLmF0dHIoJ2lkJyk/dGFyZ2V0LnBhcmVudCgpLmF0dHIoJ2lkJyk6dGFyZ2V0LnBhcmVudCgpLmF0dHIoJ25hbWUnKTtcclxuXHRcdFx0Ly8gY29uc3Qga2V5MiA9IHRhcmdldC5hdHRyKCdpZCcpP3RhcmdldC5hdHRyKCdpZCcpOnRhcmdldC5hdHRyKCduYW1lJyk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjb25zdCB2YWwgPSB0YXJnZXQudmFsKCk7XHJcbiAgICAgICAgICAgIC8v5YC86K6+6K6h6ISa5pys55qE5YaF5a65XHJcbiAgICAgICAgICAgIGlmKGtleT09XCJmaWVsZFwiIHx8IGtleT09XCJmaWVsZE9wdGlvblwiKXtcclxuICAgICAgICAgICAgICAgIC8v5YC8LeiuvuiuoeiEmuacrOeahOmXrumimFxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnBhcmVudCgpLnNpYmxpbmdzKFwidGV4dGFyZWFcIikudmFsKHRhcmdldC5wYXJlbnQoKS5zaWJsaW5ncyhcInRleHRhcmVhXCIpLnZhbCgpK3RhcmdldC5wYXJlbnQoKS52YWwoKSlcclxuICAgICAgICAgICAgICAgIC8vY3VyclRvRWRpdC5wcm9jZXNzZGVzY3JpcHRpb249dGFyZ2V0LnBhcmVudCgpLnNpYmxpbmdzKFwidGV4dGFyZWFcIikudmFsKCk7XHJcblx0XHRcdFx0Y3VyclRvRWRpdC5zZXRQcm9wcyh7XCJwcm9jZXNzZGVzY3JpcHRpb25cIjp0YXJnZXQucGFyZW50KCkuc2libGluZ3MoXCJ0ZXh0YXJlYVwiKS52YWwoKX0pO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih2YWw9PVwiY2xlYXJcIil7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQucGFyZW50KCkuc2libGluZ3MoXCJ0ZXh0YXJlYVwiKS52YWwoXCJcIilcclxuICAgICAgICAgICAgICAgIGN1cnJUb0VkaXQucHJvY2Vzc2Rlc2NyaXB0aW9uPVwiXCI7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIC8v5bGA6YOo5Yi35paw55qEXHJcbiAgICAgICAgICAgIC8vIGlmKGtleTI9PVwicmVmcmVzaGZpZWxkc1wiKXtcclxuICAgICAgICAgICAgLy8gICAgIGN1cnJUb0VkaXQucmVmcmVzaGZpZWxkcys9dmFsO1xyXG4gICAgICAgICAgICAvLyB9XHJcblx0XHRcdGZvcm0ucmVwYWludCgpO1xyXG4gICAgICAgICAgICBcclxuXHJcbiAgICAgICAgfSk7ICAgICAgICBcclxuICAgIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBQcm9wc1BhbmVsO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvZm9ybS92aWV3L1Byb3BzUGFuZWwuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTs7Ozs7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1QkE7QUE4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUExQkE7QUE0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTNCQTtBQTZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEzQkE7QUE2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTNCQTtBQTZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTdCQTtBQStCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFoQ0E7QUFDQTtBQWtDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUExQkE7QUE0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBMUJBO0FBQ0E7QUE0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFCQTtBQTRCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1QkE7QUE4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF0QkE7QUF3QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTNCQTtBQTZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWEE7QUFhQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXJCQTtBQXVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFkQTtBQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbENBO0FBb0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBM0JBO0FBNkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWpCQTtBQW1CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFYQTtBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWkE7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqQkE7QUFtQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWEE7QUFhQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWkE7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXJCQTtBQXVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBYkE7QUFlQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVkE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVpBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQTdsREE7QUFpbURBO0FBQ0E7QUFDQTtBQUVBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBOzs7Ozs7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///126\n");

/***/ }),
/* 127 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = __webpack_require__(13)\nexports.createHash = exports.Hash = __webpack_require__(15)\nexports.createHmac = exports.Hmac = __webpack_require__(58)\n\nvar algos = __webpack_require__(146)\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n  return hashes\n}\n\nvar p = __webpack_require__(61)\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = __webpack_require__(148)\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = __webpack_require__(165)\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = __webpack_require__(171)\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = __webpack_require__(209)\n\nvar publicEncrypt = __webpack_require__(210)\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n//   'createCredentials'\n// ].forEach(function (name) {\n//   exports[name] = function () {\n//     throw new Error([\n//       'sorry, ' + name + ' is not implemented yet',\n//       'we accept pull requests',\n//       'https://github.com/crypto-browserify/crypto-browserify'\n//     ].join('\\n'))\n//   }\n// })\n\nvar rf = __webpack_require__(213)\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n  throw new Error([\n    'sorry, createCredentials is not implemented yet',\n    'we accept pull requests',\n    'https://github.com/crypto-browserify/crypto-browserify'\n  ].join('\\n'))\n}\n\nexports.constants = {\n  'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n  'DH_CHECK_P_NOT_PRIME': 1,\n  'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n  'DH_NOT_SUITABLE_GENERATOR': 8,\n  'NPN_ENABLED': 1,\n  'ALPN_ENABLED': 1,\n  'RSA_PKCS1_PADDING': 1,\n  'RSA_SSLV23_PADDING': 2,\n  'RSA_NO_PADDING': 3,\n  'RSA_PKCS1_OAEP_PADDING': 4,\n  'RSA_X931_PADDING': 5,\n  'RSA_PKCS1_PSS_PADDING': 6,\n  'POINT_CONVERSION_COMPRESSED': 2,\n  'POINT_CONVERSION_UNCOMPRESSED': 4,\n  'POINT_CONVERSION_HYBRID': 6\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyeXB0by1icm93c2VyaWZ5L2luZGV4LmpzPzU0OGYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydHMucmFuZG9tQnl0ZXMgPSBleHBvcnRzLnJuZyA9IGV4cG9ydHMucHNldWRvUmFuZG9tQnl0ZXMgPSBleHBvcnRzLnBybmcgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpXG5leHBvcnRzLmNyZWF0ZUhhc2ggPSBleHBvcnRzLkhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpXG5leHBvcnRzLmNyZWF0ZUhtYWMgPSBleHBvcnRzLkhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG5cbnZhciBhbGdvcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktc2lnbi9hbGdvcycpXG52YXIgYWxnb0tleXMgPSBPYmplY3Qua2V5cyhhbGdvcylcbnZhciBoYXNoZXMgPSBbJ3NoYTEnLCAnc2hhMjI0JywgJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJywgJ21kNScsICdybWQxNjAnXS5jb25jYXQoYWxnb0tleXMpXG5leHBvcnRzLmdldEhhc2hlcyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGhhc2hlc1xufVxuXG52YXIgcCA9IHJlcXVpcmUoJ3Bia2RmMicpXG5leHBvcnRzLnBia2RmMiA9IHAucGJrZGYyXG5leHBvcnRzLnBia2RmMlN5bmMgPSBwLnBia2RmMlN5bmNcblxudmFyIGFlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktY2lwaGVyJylcblxuZXhwb3J0cy5DaXBoZXIgPSBhZXMuQ2lwaGVyXG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGFlcy5jcmVhdGVDaXBoZXJcbmV4cG9ydHMuQ2lwaGVyaXYgPSBhZXMuQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyaXYgPSBhZXMuY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuRGVjaXBoZXIgPSBhZXMuRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBhZXMuY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuRGVjaXBoZXJpdiA9IGFlcy5EZWNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyaXYgPSBhZXMuY3JlYXRlRGVjaXBoZXJpdlxuZXhwb3J0cy5nZXRDaXBoZXJzID0gYWVzLmdldENpcGhlcnNcbmV4cG9ydHMubGlzdENpcGhlcnMgPSBhZXMubGlzdENpcGhlcnNcblxudmFyIGRoID0gcmVxdWlyZSgnZGlmZmllLWhlbGxtYW4nKVxuXG5leHBvcnRzLkRpZmZpZUhlbGxtYW5Hcm91cCA9IGRoLkRpZmZpZUhlbGxtYW5Hcm91cFxuZXhwb3J0cy5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXAgPSBkaC5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXBcbmV4cG9ydHMuZ2V0RGlmZmllSGVsbG1hbiA9IGRoLmdldERpZmZpZUhlbGxtYW5cbmV4cG9ydHMuY3JlYXRlRGlmZmllSGVsbG1hbiA9IGRoLmNyZWF0ZURpZmZpZUhlbGxtYW5cbmV4cG9ydHMuRGlmZmllSGVsbG1hbiA9IGRoLkRpZmZpZUhlbGxtYW5cblxudmFyIHNpZ24gPSByZXF1aXJlKCdicm93c2VyaWZ5LXNpZ24nKVxuXG5leHBvcnRzLmNyZWF0ZVNpZ24gPSBzaWduLmNyZWF0ZVNpZ25cbmV4cG9ydHMuU2lnbiA9IHNpZ24uU2lnblxuZXhwb3J0cy5jcmVhdGVWZXJpZnkgPSBzaWduLmNyZWF0ZVZlcmlmeVxuZXhwb3J0cy5WZXJpZnkgPSBzaWduLlZlcmlmeVxuXG5leHBvcnRzLmNyZWF0ZUVDREggPSByZXF1aXJlKCdjcmVhdGUtZWNkaCcpXG5cbnZhciBwdWJsaWNFbmNyeXB0ID0gcmVxdWlyZSgncHVibGljLWVuY3J5cHQnKVxuXG5leHBvcnRzLnB1YmxpY0VuY3J5cHQgPSBwdWJsaWNFbmNyeXB0LnB1YmxpY0VuY3J5cHRcbmV4cG9ydHMucHJpdmF0ZUVuY3J5cHQgPSBwdWJsaWNFbmNyeXB0LnByaXZhdGVFbmNyeXB0XG5leHBvcnRzLnB1YmxpY0RlY3J5cHQgPSBwdWJsaWNFbmNyeXB0LnB1YmxpY0RlY3J5cHRcbmV4cG9ydHMucHJpdmF0ZURlY3J5cHQgPSBwdWJsaWNFbmNyeXB0LnByaXZhdGVEZWNyeXB0XG5cbi8vIHRoZSBsZWFzdCBJIGNhbiBkbyBpcyBtYWtlIGVycm9yIG1lc3NhZ2VzIGZvciB0aGUgcmVzdCBvZiB0aGUgbm9kZS5qcy9jcnlwdG8gYXBpLlxuLy8gO1tcbi8vICAgJ2NyZWF0ZUNyZWRlbnRpYWxzJ1xuLy8gXS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4vLyAgIGV4cG9ydHNbbmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4vLyAgICAgdGhyb3cgbmV3IEVycm9yKFtcbi8vICAgICAgICdzb3JyeSwgJyArIG5hbWUgKyAnIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQnLFxuLy8gICAgICAgJ3dlIGFjY2VwdCBwdWxsIHJlcXVlc3RzJyxcbi8vICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vY3J5cHRvLWJyb3dzZXJpZnkvY3J5cHRvLWJyb3dzZXJpZnknXG4vLyAgICAgXS5qb2luKCdcXG4nKSlcbi8vICAgfVxuLy8gfSlcblxudmFyIHJmID0gcmVxdWlyZSgncmFuZG9tZmlsbCcpXG5cbmV4cG9ydHMucmFuZG9tRmlsbCA9IHJmLnJhbmRvbUZpbGxcbmV4cG9ydHMucmFuZG9tRmlsbFN5bmMgPSByZi5yYW5kb21GaWxsU3luY1xuXG5leHBvcnRzLmNyZWF0ZUNyZWRlbnRpYWxzID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoW1xuICAgICdzb3JyeSwgY3JlYXRlQ3JlZGVudGlhbHMgaXMgbm90IGltcGxlbWVudGVkIHlldCcsXG4gICAgJ3dlIGFjY2VwdCBwdWxsIHJlcXVlc3RzJyxcbiAgICAnaHR0cHM6Ly9naXRodWIuY29tL2NyeXB0by1icm93c2VyaWZ5L2NyeXB0by1icm93c2VyaWZ5J1xuICBdLmpvaW4oJ1xcbicpKVxufVxuXG5leHBvcnRzLmNvbnN0YW50cyA9IHtcbiAgJ0RIX0NIRUNLX1BfTk9UX1NBRkVfUFJJTUUnOiAyLFxuICAnREhfQ0hFQ0tfUF9OT1RfUFJJTUUnOiAxLFxuICAnREhfVU5BQkxFX1RPX0NIRUNLX0dFTkVSQVRPUic6IDQsXG4gICdESF9OT1RfU1VJVEFCTEVfR0VORVJBVE9SJzogOCxcbiAgJ05QTl9FTkFCTEVEJzogMSxcbiAgJ0FMUE5fRU5BQkxFRCc6IDEsXG4gICdSU0FfUEtDUzFfUEFERElORyc6IDEsXG4gICdSU0FfU1NMVjIzX1BBRERJTkcnOiAyLFxuICAnUlNBX05PX1BBRERJTkcnOiAzLFxuICAnUlNBX1BLQ1MxX09BRVBfUEFERElORyc6IDQsXG4gICdSU0FfWDkzMV9QQURESU5HJzogNSxcbiAgJ1JTQV9QS0NTMV9QU1NfUEFERElORyc6IDYsXG4gICdQT0lOVF9DT05WRVJTSU9OX0NPTVBSRVNTRUQnOiAyLFxuICAnUE9JTlRfQ09OVkVSU0lPTl9VTkNPTVBSRVNTRUQnOiA0LFxuICAnUE9JTlRfQ09OVkVSU0lPTl9IWUJSSUQnOiA2XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jcnlwdG8tYnJvd3NlcmlmeS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTI3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///127\n");

/***/ }),
/* 128 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  for (var i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(\n      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n    ))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jhc2U2NC1qcy9pbmRleC5qcz8xMGFiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5leHBvcnRzLnRvQnl0ZUFycmF5ID0gdG9CeXRlQXJyYXlcbmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXlcblxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcblxudmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcbmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbi8vIFN1cHBvcnQgZGVjb2RpbmcgVVJMLXNhZmUgYmFzZTY0IHN0cmluZ3MsIGFzIE5vZGUuanMgZG9lcy5cbi8vIFNlZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzZTY0I1VSTF9hcHBsaWNhdGlvbnNcbnJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxucmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzXG5cbmZ1bmN0aW9uIGdldExlbnMgKGI2NCkge1xuICB2YXIgbGVuID0gYjY0Lmxlbmd0aFxuXG4gIGlmIChsZW4gJSA0ID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCcpXG4gIH1cblxuICAvLyBUcmltIG9mZiBleHRyYSBieXRlcyBhZnRlciBwbGFjZWhvbGRlciBieXRlcyBhcmUgZm91bmRcbiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmVhdGdhbW1pdC9iYXNlNjQtanMvaXNzdWVzLzQyXG4gIHZhciB2YWxpZExlbiA9IGI2NC5pbmRleE9mKCc9JylcbiAgaWYgKHZhbGlkTGVuID09PSAtMSkgdmFsaWRMZW4gPSBsZW5cblxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gdmFsaWRMZW4gPT09IGxlblxuICAgID8gMFxuICAgIDogNCAtICh2YWxpZExlbiAlIDQpXG5cbiAgcmV0dXJuIFt2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuXVxufVxuXG4vLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkge1xuICB2YXIgbGVucyA9IGdldExlbnMoYjY0KVxuICB2YXIgdmFsaWRMZW4gPSBsZW5zWzBdXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSBsZW5zWzFdXG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiBfYnl0ZUxlbmd0aCAoYjY0LCB2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuKSB7XG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiB0b0J5dGVBcnJheSAoYjY0KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuXG4gIHZhciBhcnIgPSBuZXcgQXJyKF9ieXRlTGVuZ3RoKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikpXG5cbiAgdmFyIGN1ckJ5dGUgPSAwXG5cbiAgLy8gaWYgdGhlcmUgYXJlIHBsYWNlaG9sZGVycywgb25seSBnZXQgdXAgdG8gdGhlIGxhc3QgY29tcGxldGUgNCBjaGFyc1xuICB2YXIgbGVuID0gcGxhY2VIb2xkZXJzTGVuID4gMFxuICAgID8gdmFsaWRMZW4gLSA0XG4gICAgOiB2YWxpZExlblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTgpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCAxMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildIDw8IDYpIHxcbiAgICAgIHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMyldXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDE2KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gOCkgJiAweEZGXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAyKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA+PiA0KVxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gMSkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxMCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDQpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA+PiAyKVxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gdHJpcGxldFRvQmFzZTY0IChudW0pIHtcbiAgcmV0dXJuIGxvb2t1cFtudW0gPj4gMTggJiAweDNGXSArXG4gICAgbG9va3VwW251bSA+PiAxMiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDYgJiAweDNGXSArXG4gICAgbG9va3VwW251bSAmIDB4M0ZdXG59XG5cbmZ1bmN0aW9uIGVuY29kZUNodW5rICh1aW50OCwgc3RhcnQsIGVuZCkge1xuICB2YXIgdG1wXG4gIHZhciBvdXRwdXQgPSBbXVxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykge1xuICAgIHRtcCA9XG4gICAgICAoKHVpbnQ4W2ldIDw8IDE2KSAmIDB4RkYwMDAwKSArXG4gICAgICAoKHVpbnQ4W2kgKyAxXSA8PCA4KSAmIDB4RkYwMCkgK1xuICAgICAgKHVpbnQ4W2kgKyAyXSAmIDB4RkYpXG4gICAgb3V0cHV0LnB1c2godHJpcGxldFRvQmFzZTY0KHRtcCkpXG4gIH1cbiAgcmV0dXJuIG91dHB1dC5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBmcm9tQnl0ZUFycmF5ICh1aW50OCkge1xuICB2YXIgdG1wXG4gIHZhciBsZW4gPSB1aW50OC5sZW5ndGhcbiAgdmFyIGV4dHJhQnl0ZXMgPSBsZW4gJSAzIC8vIGlmIHdlIGhhdmUgMSBieXRlIGxlZnQsIHBhZCAyIGJ5dGVzXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsoXG4gICAgICB1aW50OCwgaSwgKGkgKyBtYXhDaHVua0xlbmd0aCkgPiBsZW4yID8gbGVuMiA6IChpICsgbWF4Q2h1bmtMZW5ndGgpXG4gICAgKSlcbiAgfVxuXG4gIC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXNcbiAgaWYgKGV4dHJhQnl0ZXMgPT09IDEpIHtcbiAgICB0bXAgPSB1aW50OFtsZW4gLSAxXVxuICAgIHBhcnRzLnB1c2goXG4gICAgICBsb29rdXBbdG1wID4+IDJdICtcbiAgICAgIGxvb2t1cFsodG1wIDw8IDQpICYgMHgzRl0gK1xuICAgICAgJz09J1xuICAgIClcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgdWludDhbbGVuIC0gMV1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgbG9va3VwW3RtcCA+PiAxMF0gK1xuICAgICAgbG9va3VwWyh0bXAgPj4gNCkgJiAweDNGXSArXG4gICAgICBsb29rdXBbKHRtcCA8PCAyKSAmIDB4M0ZdICtcbiAgICAgICc9J1xuICAgIClcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCcnKVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFzZTY0LWpzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///128\n");

/***/ }),
/* 129 */
/***/ (function(module, exports) {

eval("exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTI5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2llZWU3NTQvaW5kZXguanM/YmEzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IChuQnl0ZXMgKiA4KSAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgbkJpdHMgPSAtN1xuICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwXG4gIHZhciBkID0gaXNMRSA/IC0xIDogMVxuICB2YXIgcyA9IGJ1ZmZlcltvZmZzZXQgKyBpXVxuXG4gIGkgKz0gZFxuXG4gIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIHMgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IGVMZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IChlICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIGUgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IG1MZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IChtICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSAobkJ5dGVzICogOCkgLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIHJ0ID0gKG1MZW4gPT09IDIzID8gTWF0aC5wb3coMiwgLTI0KSAtIE1hdGgucG93KDIsIC03NykgOiAwKVxuICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpXG4gIHZhciBkID0gaXNMRSA/IDEgOiAtMVxuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkgPyAxIDogMFxuXG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpXG5cbiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICBtID0gaXNOYU4odmFsdWUpID8gMSA6IDBcbiAgICBlID0gZU1heFxuICB9IGVsc2Uge1xuICAgIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbHVlKSAvIE1hdGguTE4yKVxuICAgIGlmICh2YWx1ZSAqIChjID0gTWF0aC5wb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLVxuICAgICAgYyAqPSAyXG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKVxuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrK1xuICAgICAgYyAvPSAyXG4gICAgfVxuXG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMFxuICAgICAgZSA9IGVNYXhcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKCh2YWx1ZSAqIGMpIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IGUgKyBlQmlhc1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSAwXG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge31cblxuICBlID0gKGUgPDwgbUxlbikgfCBtXG4gIGVMZW4gKz0gbUxlblxuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGUgJiAweGZmLCBpICs9IGQsIGUgLz0gMjU2LCBlTGVuIC09IDgpIHt9XG5cbiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9pZWVlNzU0L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///129\n");

/***/ }),
/* 130 */
/***/ (function(module, exports) {

eval("/* (ignored) *///# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3V0aWwgKGlnbm9yZWQpPzEzN2YiXSwic291cmNlc0NvbnRlbnQiOlsiLyogKGlnbm9yZWQpICovXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gdXRpbCAoaWdub3JlZClcbi8vIG1vZHVsZSBpZCA9IDEzMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///130\n");

/***/ }),
/* 131 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = __webpack_require__(1).Buffer;\nvar util = __webpack_require__(132);\n\nfunction copyBuffer(src, target, offset) {\n  src.copy(target, offset);\n}\n\nmodule.exports = function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n\n  BufferList.prototype.push = function push(v) {\n    var entry = { data: v, next: null };\n    if (this.length > 0) this.tail.next = entry;else this.head = entry;\n    this.tail = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.unshift = function unshift(v) {\n    var entry = { data: v, next: this.head };\n    if (this.length === 0) this.tail = entry;\n    this.head = entry;\n    ++this.length;\n  };\n\n  BufferList.prototype.shift = function shift() {\n    if (this.length === 0) return;\n    var ret = this.head.data;\n    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n    --this.length;\n    return ret;\n  };\n\n  BufferList.prototype.clear = function clear() {\n    this.head = this.tail = null;\n    this.length = 0;\n  };\n\n  BufferList.prototype.join = function join(s) {\n    if (this.length === 0) return '';\n    var p = this.head;\n    var ret = '' + p.data;\n    while (p = p.next) {\n      ret += s + p.data;\n    }return ret;\n  };\n\n  BufferList.prototype.concat = function concat(n) {\n    if (this.length === 0) return Buffer.alloc(0);\n    if (this.length === 1) return this.head.data;\n    var ret = Buffer.allocUnsafe(n >>> 0);\n    var p = this.head;\n    var i = 0;\n    while (p) {\n      copyBuffer(p.data, ret, i);\n      i += p.data.length;\n      p = p.next;\n    }\n    return ret;\n  };\n\n  return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n  module.exports.prototype[util.inspect.custom] = function () {\n    var obj = util.inspect({ length: this.length });\n    return this.constructor.name + ' ' + obj;\n  };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9CdWZmZXJMaXN0LmpzP2Y4NzQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXI7XG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuZnVuY3Rpb24gY29weUJ1ZmZlcihzcmMsIHRhcmdldCwgb2Zmc2V0KSB7XG4gIHNyYy5jb3B5KHRhcmdldCwgb2Zmc2V0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEJ1ZmZlckxpc3QoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJ1ZmZlckxpc3QpO1xuXG4gICAgdGhpcy5oZWFkID0gbnVsbDtcbiAgICB0aGlzLnRhaWwgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgfVxuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiBwdXNoKHYpIHtcbiAgICB2YXIgZW50cnkgPSB7IGRhdGE6IHYsIG5leHQ6IG51bGwgfTtcbiAgICBpZiAodGhpcy5sZW5ndGggPiAwKSB0aGlzLnRhaWwubmV4dCA9IGVudHJ5O2Vsc2UgdGhpcy5oZWFkID0gZW50cnk7XG4gICAgdGhpcy50YWlsID0gZW50cnk7XG4gICAgKyt0aGlzLmxlbmd0aDtcbiAgfTtcblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24gdW5zaGlmdCh2KSB7XG4gICAgdmFyIGVudHJ5ID0geyBkYXRhOiB2LCBuZXh0OiB0aGlzLmhlYWQgfTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHRoaXMudGFpbCA9IGVudHJ5O1xuICAgIHRoaXMuaGVhZCA9IGVudHJ5O1xuICAgICsrdGhpcy5sZW5ndGg7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuc2hpZnQgPSBmdW5jdGlvbiBzaGlmdCgpIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICB2YXIgcmV0ID0gdGhpcy5oZWFkLmRhdGE7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO2Vsc2UgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7XG4gICAgLS10aGlzLmxlbmd0aDtcbiAgICByZXR1cm4gcmV0O1xuICB9O1xuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuam9pbiA9IGZ1bmN0aW9uIGpvaW4ocykge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICAgIHZhciBwID0gdGhpcy5oZWFkO1xuICAgIHZhciByZXQgPSAnJyArIHAuZGF0YTtcbiAgICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgICAgcmV0ICs9IHMgKyBwLmRhdGE7XG4gICAgfXJldHVybiByZXQ7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0KG4pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybiBCdWZmZXIuYWxsb2MoMCk7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSByZXR1cm4gdGhpcy5oZWFkLmRhdGE7XG4gICAgdmFyIHJldCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuID4+PiAwKTtcbiAgICB2YXIgcCA9IHRoaXMuaGVhZDtcbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKHApIHtcbiAgICAgIGNvcHlCdWZmZXIocC5kYXRhLCByZXQsIGkpO1xuICAgICAgaSArPSBwLmRhdGEubGVuZ3RoO1xuICAgICAgcCA9IHAubmV4dDtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcblxuICByZXR1cm4gQnVmZmVyTGlzdDtcbn0oKTtcblxuaWYgKHV0aWwgJiYgdXRpbC5pbnNwZWN0ICYmIHV0aWwuaW5zcGVjdC5jdXN0b20pIHtcbiAgbW9kdWxlLmV4cG9ydHMucHJvdG90eXBlW3V0aWwuaW5zcGVjdC5jdXN0b21dID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBvYmogPSB1dGlsLmluc3BlY3QoeyBsZW5ndGg6IHRoaXMubGVuZ3RoIH0pO1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnICcgKyBvYmo7XG4gIH07XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL0J1ZmZlckxpc3QuanNcbi8vIG1vZHVsZSBpZCA9IDEzMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///131\n");

/***/ }),
/* 132 */
/***/ (function(module, exports) {

eval("/* (ignored) *///# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3V0aWwgKGlnbm9yZWQpPzRkNDMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogKGlnbm9yZWQpICovXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gdXRpbCAoaWdub3JlZClcbi8vIG1vZHVsZSBpZCA9IDEzMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///132\n");

/***/ }),
/* 133 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== \"undefined\" && global) ||\n            (typeof self !== \"undefined\" && self) ||\n            window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n  if (timeout) {\n    timeout.close();\n  }\n};\n\nfunction Timeout(id, clearFn) {\n  this._id = id;\n  this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n  this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n  clearTimeout(item._idleTimeoutId);\n\n  var msecs = item._idleTimeout;\n  if (msecs >= 0) {\n    item._idleTimeoutId = setTimeout(function onTimeout() {\n      if (item._onTimeout)\n        item._onTimeout();\n    }, msecs);\n  }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(134);\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto.  Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n                       (typeof global !== \"undefined\" && global.setImmediate) ||\n                       (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n                         (typeof global !== \"undefined\" && global.clearImmediate) ||\n                         (this && this.clearImmediate);\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3RpbWVycy1icm93c2VyaWZ5L21haW4uanM/ZDdhZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2NvcGUgPSAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBnbG9iYWwpIHx8XG4gICAgICAgICAgICAodHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiYgc2VsZikgfHxcbiAgICAgICAgICAgIHdpbmRvdztcbnZhciBhcHBseSA9IEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseTtcblxuLy8gRE9NIEFQSXMsIGZvciBjb21wbGV0ZW5lc3NcblxuZXhwb3J0cy5zZXRUaW1lb3V0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgVGltZW91dChhcHBseS5jYWxsKHNldFRpbWVvdXQsIHNjb3BlLCBhcmd1bWVudHMpLCBjbGVhclRpbWVvdXQpO1xufTtcbmV4cG9ydHMuc2V0SW50ZXJ2YWwgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBUaW1lb3V0KGFwcGx5LmNhbGwoc2V0SW50ZXJ2YWwsIHNjb3BlLCBhcmd1bWVudHMpLCBjbGVhckludGVydmFsKTtcbn07XG5leHBvcnRzLmNsZWFyVGltZW91dCA9XG5leHBvcnRzLmNsZWFySW50ZXJ2YWwgPSBmdW5jdGlvbih0aW1lb3V0KSB7XG4gIGlmICh0aW1lb3V0KSB7XG4gICAgdGltZW91dC5jbG9zZSgpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBUaW1lb3V0KGlkLCBjbGVhckZuKSB7XG4gIHRoaXMuX2lkID0gaWQ7XG4gIHRoaXMuX2NsZWFyRm4gPSBjbGVhckZuO1xufVxuVGltZW91dC5wcm90b3R5cGUudW5yZWYgPSBUaW1lb3V0LnByb3RvdHlwZS5yZWYgPSBmdW5jdGlvbigpIHt9O1xuVGltZW91dC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fY2xlYXJGbi5jYWxsKHNjb3BlLCB0aGlzLl9pZCk7XG59O1xuXG4vLyBEb2VzIG5vdCBzdGFydCB0aGUgdGltZSwganVzdCBzZXRzIHVwIHRoZSBtZW1iZXJzIG5lZWRlZC5cbmV4cG9ydHMuZW5yb2xsID0gZnVuY3Rpb24oaXRlbSwgbXNlY3MpIHtcbiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpO1xuICBpdGVtLl9pZGxlVGltZW91dCA9IG1zZWNzO1xufTtcblxuZXhwb3J0cy51bmVucm9sbCA9IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpO1xuICBpdGVtLl9pZGxlVGltZW91dCA9IC0xO1xufTtcblxuZXhwb3J0cy5fdW5yZWZBY3RpdmUgPSBleHBvcnRzLmFjdGl2ZSA9IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpO1xuXG4gIHZhciBtc2VjcyA9IGl0ZW0uX2lkbGVUaW1lb3V0O1xuICBpZiAobXNlY3MgPj0gMCkge1xuICAgIGl0ZW0uX2lkbGVUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uIG9uVGltZW91dCgpIHtcbiAgICAgIGlmIChpdGVtLl9vblRpbWVvdXQpXG4gICAgICAgIGl0ZW0uX29uVGltZW91dCgpO1xuICAgIH0sIG1zZWNzKTtcbiAgfVxufTtcblxuLy8gc2V0aW1tZWRpYXRlIGF0dGFjaGVzIGl0c2VsZiB0byB0aGUgZ2xvYmFsIG9iamVjdFxucmVxdWlyZShcInNldGltbWVkaWF0ZVwiKTtcbi8vIE9uIHNvbWUgZXhvdGljIGVudmlyb25tZW50cywgaXQncyBub3QgY2xlYXIgd2hpY2ggb2JqZWN0IGBzZXRpbW1lZGlhdGVgIHdhc1xuLy8gYWJsZSB0byBpbnN0YWxsIG9udG8uICBTZWFyY2ggZWFjaCBwb3NzaWJpbGl0eSBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGVcbi8vIGBzZXRpbW1lZGlhdGVgIGxpYnJhcnkuXG5leHBvcnRzLnNldEltbWVkaWF0ZSA9ICh0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWxmLnNldEltbWVkaWF0ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgJiYgZ2xvYmFsLnNldEltbWVkaWF0ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMgJiYgdGhpcy5zZXRJbW1lZGlhdGUpO1xuZXhwb3J0cy5jbGVhckltbWVkaWF0ZSA9ICh0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWxmLmNsZWFySW1tZWRpYXRlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiICYmIGdsb2JhbC5jbGVhckltbWVkaWF0ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcyAmJiB0aGlzLmNsZWFySW1tZWRpYXRlKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3RpbWVycy1icm93c2VyaWZ5L21haW4uanNcbi8vIG1vZHVsZSBpZCA9IDEzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///133\n");

/***/ }),
/* 134 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6鈥�8\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9), __webpack_require__(10)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3NldGltbWVkaWF0ZS9zZXRJbW1lZGlhdGUuanM/OWIyYSJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKGdsb2JhbCwgdW5kZWZpbmVkKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICBpZiAoZ2xvYmFsLnNldEltbWVkaWF0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG5leHRIYW5kbGUgPSAxOyAvLyBTcGVjIHNheXMgZ3JlYXRlciB0aGFuIHplcm9cbiAgICB2YXIgdGFza3NCeUhhbmRsZSA9IHt9O1xuICAgIHZhciBjdXJyZW50bHlSdW5uaW5nQVRhc2sgPSBmYWxzZTtcbiAgICB2YXIgZG9jID0gZ2xvYmFsLmRvY3VtZW50O1xuICAgIHZhciByZWdpc3RlckltbWVkaWF0ZTtcblxuICAgIGZ1bmN0aW9uIHNldEltbWVkaWF0ZShjYWxsYmFjaykge1xuICAgICAgLy8gQ2FsbGJhY2sgY2FuIGVpdGhlciBiZSBhIGZ1bmN0aW9uIG9yIGEgc3RyaW5nXG4gICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY2FsbGJhY2sgPSBuZXcgRnVuY3Rpb24oXCJcIiArIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgIC8vIENvcHkgZnVuY3Rpb24gYXJndW1lbnRzXG4gICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2kgKyAxXTtcbiAgICAgIH1cbiAgICAgIC8vIFN0b3JlIGFuZCByZWdpc3RlciB0aGUgdGFza1xuICAgICAgdmFyIHRhc2sgPSB7IGNhbGxiYWNrOiBjYWxsYmFjaywgYXJnczogYXJncyB9O1xuICAgICAgdGFza3NCeUhhbmRsZVtuZXh0SGFuZGxlXSA9IHRhc2s7XG4gICAgICByZWdpc3RlckltbWVkaWF0ZShuZXh0SGFuZGxlKTtcbiAgICAgIHJldHVybiBuZXh0SGFuZGxlKys7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaGFuZGxlKSB7XG4gICAgICAgIGRlbGV0ZSB0YXNrc0J5SGFuZGxlW2hhbmRsZV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcnVuKHRhc2spIHtcbiAgICAgICAgdmFyIGNhbGxiYWNrID0gdGFzay5jYWxsYmFjaztcbiAgICAgICAgdmFyIGFyZ3MgPSB0YXNrLmFyZ3M7XG4gICAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcnVuSWZQcmVzZW50KGhhbmRsZSkge1xuICAgICAgICAvLyBGcm9tIHRoZSBzcGVjOiBcIldhaXQgdW50aWwgYW55IGludm9jYXRpb25zIG9mIHRoaXMgYWxnb3JpdGhtIHN0YXJ0ZWQgYmVmb3JlIHRoaXMgb25lIGhhdmUgY29tcGxldGVkLlwiXG4gICAgICAgIC8vIFNvIGlmIHdlJ3JlIGN1cnJlbnRseSBydW5uaW5nIGEgdGFzaywgd2UnbGwgbmVlZCB0byBkZWxheSB0aGlzIGludm9jYXRpb24uXG4gICAgICAgIGlmIChjdXJyZW50bHlSdW5uaW5nQVRhc2spIHtcbiAgICAgICAgICAgIC8vIERlbGF5IGJ5IGRvaW5nIGEgc2V0VGltZW91dC4gc2V0SW1tZWRpYXRlIHdhcyB0cmllZCBpbnN0ZWFkLCBidXQgaW4gRmlyZWZveCA3IGl0IGdlbmVyYXRlZCBhXG4gICAgICAgICAgICAvLyBcInRvbyBtdWNoIHJlY3Vyc2lvblwiIGVycm9yLlxuICAgICAgICAgICAgc2V0VGltZW91dChydW5JZlByZXNlbnQsIDAsIGhhbmRsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgdGFzayA9IHRhc2tzQnlIYW5kbGVbaGFuZGxlXTtcbiAgICAgICAgICAgIGlmICh0YXNrKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudGx5UnVubmluZ0FUYXNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBydW4odGFzayk7XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbW1lZGlhdGUoaGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5UnVubmluZ0FUYXNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbE5leHRUaWNrSW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHsgcnVuSWZQcmVzZW50KGhhbmRsZSk7IH0pO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhblVzZVBvc3RNZXNzYWdlKCkge1xuICAgICAgICAvLyBUaGUgdGVzdCBhZ2FpbnN0IGBpbXBvcnRTY3JpcHRzYCBwcmV2ZW50cyB0aGlzIGltcGxlbWVudGF0aW9uIGZyb20gYmVpbmcgaW5zdGFsbGVkIGluc2lkZSBhIHdlYiB3b3JrZXIsXG4gICAgICAgIC8vIHdoZXJlIGBnbG9iYWwucG9zdE1lc3NhZ2VgIG1lYW5zIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudCBhbmQgY2FuJ3QgYmUgdXNlZCBmb3IgdGhpcyBwdXJwb3NlLlxuICAgICAgICBpZiAoZ2xvYmFsLnBvc3RNZXNzYWdlICYmICFnbG9iYWwuaW1wb3J0U2NyaXB0cykge1xuICAgICAgICAgICAgdmFyIHBvc3RNZXNzYWdlSXNBc3luY2hyb25vdXMgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIG9sZE9uTWVzc2FnZSA9IGdsb2JhbC5vbm1lc3NhZ2U7XG4gICAgICAgICAgICBnbG9iYWwub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cyA9IGZhbHNlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShcIlwiLCBcIipcIik7XG4gICAgICAgICAgICBnbG9iYWwub25tZXNzYWdlID0gb2xkT25NZXNzYWdlO1xuICAgICAgICAgICAgcmV0dXJuIHBvc3RNZXNzYWdlSXNBc3luY2hyb25vdXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsUG9zdE1lc3NhZ2VJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgLy8gSW5zdGFsbHMgYW4gZXZlbnQgaGFuZGxlciBvbiBgZ2xvYmFsYCBmb3IgdGhlIGBtZXNzYWdlYCBldmVudDogc2VlXG4gICAgICAgIC8vICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vRE9NL3dpbmRvdy5wb3N0TWVzc2FnZVxuICAgICAgICAvLyAqIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1zLmh0bWwjY3Jvc3NEb2N1bWVudE1lc3NhZ2VzXG5cbiAgICAgICAgdmFyIG1lc3NhZ2VQcmVmaXggPSBcInNldEltbWVkaWF0ZSRcIiArIE1hdGgucmFuZG9tKCkgKyBcIiRcIjtcbiAgICAgICAgdmFyIG9uR2xvYmFsTWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09PSBnbG9iYWwgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgZXZlbnQuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIGV2ZW50LmRhdGEuaW5kZXhPZihtZXNzYWdlUHJlZml4KSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJ1bklmUHJlc2VudCgrZXZlbnQuZGF0YS5zbGljZShtZXNzYWdlUHJlZml4Lmxlbmd0aCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIG9uR2xvYmFsTWVzc2FnZSwgZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2xvYmFsLmF0dGFjaEV2ZW50KFwib25tZXNzYWdlXCIsIG9uR2xvYmFsTWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgICAgICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKG1lc3NhZ2VQcmVmaXggKyBoYW5kbGUsIFwiKlwiKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsTWVzc2FnZUNoYW5uZWxJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICAgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgdmFyIGhhbmRsZSA9IGV2ZW50LmRhdGE7XG4gICAgICAgICAgICBydW5JZlByZXNlbnQoaGFuZGxlKTtcbiAgICAgICAgfTtcblxuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgICAgICAgICAgY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZShoYW5kbGUpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxSZWFkeVN0YXRlQ2hhbmdlSW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHZhciBodG1sID0gZG9jLmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUgPSBmdW5jdGlvbihoYW5kbGUpIHtcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIDxzY3JpcHQ+IGVsZW1lbnQ7IGl0cyByZWFkeXN0YXRlY2hhbmdlIGV2ZW50IHdpbGwgYmUgZmlyZWQgYXN5bmNocm9ub3VzbHkgb25jZSBpdCBpcyBpbnNlcnRlZFxuICAgICAgICAgICAgLy8gaW50byB0aGUgZG9jdW1lbnQuIERvIHNvLCB0aHVzIHF1ZXVpbmcgdXAgdGhlIHRhc2suIFJlbWVtYmVyIHRvIGNsZWFuIHVwIG9uY2UgaXQncyBiZWVuIGNhbGxlZC5cbiAgICAgICAgICAgIHZhciBzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcnVuSWZQcmVzZW50KGhhbmRsZSk7XG4gICAgICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgaHRtbC5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgICAgIHNjcmlwdCA9IG51bGw7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaHRtbC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxTZXRUaW1lb3V0SW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KHJ1bklmUHJlc2VudCwgMCwgaGFuZGxlKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBJZiBzdXBwb3J0ZWQsIHdlIHNob3VsZCBhdHRhY2ggdG8gdGhlIHByb3RvdHlwZSBvZiBnbG9iYWwsIHNpbmNlIHRoYXQgaXMgd2hlcmUgc2V0VGltZW91dCBldCBhbC4gbGl2ZS5cbiAgICB2YXIgYXR0YWNoVG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbCk7XG4gICAgYXR0YWNoVG8gPSBhdHRhY2hUbyAmJiBhdHRhY2hUby5zZXRUaW1lb3V0ID8gYXR0YWNoVG8gOiBnbG9iYWw7XG5cbiAgICAvLyBEb24ndCBnZXQgZm9vbGVkIGJ5IGUuZy4gYnJvd3NlcmlmeSBlbnZpcm9ubWVudHMuXG4gICAgaWYgKHt9LnRvU3RyaW5nLmNhbGwoZ2xvYmFsLnByb2Nlc3MpID09PSBcIltvYmplY3QgcHJvY2Vzc11cIikge1xuICAgICAgICAvLyBGb3IgTm9kZS5qcyBiZWZvcmUgMC45XG4gICAgICAgIGluc3RhbGxOZXh0VGlja0ltcGxlbWVudGF0aW9uKCk7XG5cbiAgICB9IGVsc2UgaWYgKGNhblVzZVBvc3RNZXNzYWdlKCkpIHtcbiAgICAgICAgLy8gRm9yIG5vbi1JRTEwIG1vZGVybiBicm93c2Vyc1xuICAgICAgICBpbnN0YWxsUG9zdE1lc3NhZ2VJbXBsZW1lbnRhdGlvbigpO1xuXG4gICAgfSBlbHNlIGlmIChnbG9iYWwuTWVzc2FnZUNoYW5uZWwpIHtcbiAgICAgICAgLy8gRm9yIHdlYiB3b3JrZXJzLCB3aGVyZSBzdXBwb3J0ZWRcbiAgICAgICAgaW5zdGFsbE1lc3NhZ2VDaGFubmVsSW1wbGVtZW50YXRpb24oKTtcblxuICAgIH0gZWxzZSBpZiAoZG9jICYmIFwib25yZWFkeXN0YXRlY2hhbmdlXCIgaW4gZG9jLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIikpIHtcbiAgICAgICAgLy8gRm9yIElFIDbigJM4XG4gICAgICAgIGluc3RhbGxSZWFkeVN0YXRlQ2hhbmdlSW1wbGVtZW50YXRpb24oKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZvciBvbGRlciBicm93c2Vyc1xuICAgICAgICBpbnN0YWxsU2V0VGltZW91dEltcGxlbWVudGF0aW9uKCk7XG4gICAgfVxuXG4gICAgYXR0YWNoVG8uc2V0SW1tZWRpYXRlID0gc2V0SW1tZWRpYXRlO1xuICAgIGF0dGFjaFRvLmNsZWFySW1tZWRpYXRlID0gY2xlYXJJbW1lZGlhdGU7XG59KHR5cGVvZiBzZWxmID09PSBcInVuZGVmaW5lZFwiID8gdHlwZW9mIGdsb2JhbCA9PT0gXCJ1bmRlZmluZWRcIiA/IHRoaXMgOiBnbG9iYWwgOiBzZWxmKSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9zZXRpbW1lZGlhdGUvc2V0SW1tZWRpYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAxMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///134\n");

/***/ }),
/* 135 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(global) {\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n  if (config('noDeprecation')) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (config('throwDeprecation')) {\n        throw new Error(msg);\n      } else if (config('traceDeprecation')) {\n        console.trace(msg);\n      } else {\n        console.warn(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n  // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n  try {\n    if (!global.localStorage) return false;\n  } catch (_) {\n    return false;\n  }\n  var val = global.localStorage[name];\n  if (null == val) return false;\n  return String(val).toLowerCase() === 'true';\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3V0aWwtZGVwcmVjYXRlL2Jyb3dzZXIuanM/ODhmZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBkZXByZWNhdGU7XG5cbi8qKlxuICogTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbiAqIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS5ub0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50aHJvd0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIHRocm93IGFuIEVycm9yIHdoZW4gaW52b2tlZC5cbiAqXG4gKiBJZiBgbG9jYWxTdG9yYWdlLnRyYWNlRGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gZGVwcmVjYXRlZCBmdW5jdGlvbnNcbiAqIHdpbGwgaW52b2tlIGBjb25zb2xlLnRyYWNlKClgIGluc3RlYWQgb2YgYGNvbnNvbGUuZXJyb3IoKWAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSB0aGUgZnVuY3Rpb24gdG8gZGVwcmVjYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gbXNnIC0gdGhlIHN0cmluZyB0byBwcmludCB0byB0aGUgY29uc29sZSB3aGVuIGBmbmAgaXMgaW52b2tlZFxuICogQHJldHVybnMge0Z1bmN0aW9ufSBhIG5ldyBcImRlcHJlY2F0ZWRcIiB2ZXJzaW9uIG9mIGBmbmBcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVwcmVjYXRlIChmbiwgbXNnKSB7XG4gIGlmIChjb25maWcoJ25vRGVwcmVjYXRpb24nKSkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgaWYgKGNvbmZpZygndGhyb3dEZXByZWNhdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChjb25maWcoJ3RyYWNlRGVwcmVjYXRpb24nKSkge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgIH1cbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGBsb2NhbFN0b3JhZ2VgIGZvciBib29sZWFuIHZhbHVlcyBmb3IgdGhlIGdpdmVuIGBuYW1lYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb25maWcgKG5hbWUpIHtcbiAgLy8gYWNjZXNzaW5nIGdsb2JhbC5sb2NhbFN0b3JhZ2UgY2FuIHRyaWdnZXIgYSBET01FeGNlcHRpb24gaW4gc2FuZGJveGVkIGlmcmFtZXNcbiAgdHJ5IHtcbiAgICBpZiAoIWdsb2JhbC5sb2NhbFN0b3JhZ2UpIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdmFsID0gZ2xvYmFsLmxvY2FsU3RvcmFnZVtuYW1lXTtcbiAgaWYgKG51bGwgPT0gdmFsKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBTdHJpbmcodmFsKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy91dGlsLWRlcHJlY2F0ZS9icm93c2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAxMzVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///135\n");

/***/ }),
/* 136 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n\n\nmodule.exports = PassThrough;\n\nvar Transform = __webpack_require__(55);\n\n/*<replacement>*/\nvar util = __webpack_require__(16);\nutil.inherits = __webpack_require__(0);\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n  Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcz83ZjhmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIHBhc3N0aHJvdWdoIHN0cmVhbS5cbi8vIGJhc2ljYWxseSBqdXN0IHRoZSBtb3N0IG1pbmltYWwgc29ydCBvZiBUcmFuc2Zvcm0gc3RyZWFtLlxuLy8gRXZlcnkgd3JpdHRlbiBjaHVuayBnZXRzIG91dHB1dCBhcy1pcy5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhc3NUaHJvdWdoO1xuXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9fc3RyZWFtX3RyYW5zZm9ybScpO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnV0aWwuaW5oZXJpdHMoUGFzc1Rocm91Z2gsIFRyYW5zZm9ybSk7XG5cbmZ1bmN0aW9uIFBhc3NUaHJvdWdoKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBhc3NUaHJvdWdoKSkgcmV0dXJuIG5ldyBQYXNzVGhyb3VnaChvcHRpb25zKTtcblxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcbn1cblxuUGFzc1Rocm91Z2gucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihudWxsLCBjaHVuayk7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qc1xuLy8gbW9kdWxlIGlkID0gMTM2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///136\n");

/***/ }),
/* 137 */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__(33);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS93cml0YWJsZS1icm93c2VyLmpzP2YzYmIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vd3JpdGFibGUtYnJvd3Nlci5qc1xuLy8gbW9kdWxlIGlkID0gMTM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///137\n");

/***/ }),
/* 138 */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__(12);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9kdXBsZXgtYnJvd3Nlci5qcz80ODMzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9kdXBsZXguanMnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9kdXBsZXgtYnJvd3Nlci5qc1xuLy8gbW9kdWxlIGlkID0gMTM4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///138\n");

/***/ }),
/* 139 */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__(32).Transform\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTM5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS90cmFuc2Zvcm0uanM/ZTNmZSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vcmVhZGFibGUnKS5UcmFuc2Zvcm1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS90cmFuc2Zvcm0uanNcbi8vIG1vZHVsZSBpZCA9IDEzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///139\n");

/***/ }),
/* 140 */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__(32).PassThrough\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9wYXNzdGhyb3VnaC5qcz9mY2MyIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9yZWFkYWJsZScpLlBhc3NUaHJvdWdoXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vcGFzc3Rocm91Z2guanNcbi8vIG1vZHVsZSBpZCA9IDE0MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///140\n");

/***/ }),
/* 141 */
/***/ (function(module, exports, __webpack_require__) {

eval("/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = __webpack_require__(0)\nvar Hash = __webpack_require__(14)\nvar Buffer = __webpack_require__(1).Buffer\n\nvar K = [\n  0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n\n  return this\n}\n\nfunction rotl5 (num) {\n  return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n  return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n  if (s === 0) return (b & c) | ((~b) & d)\n  if (s === 2) return (b & c) | (b & d) | (c & d)\n  return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n  var W = this._w\n\n  var a = this._a | 0\n  var b = this._b | 0\n  var c = this._c | 0\n  var d = this._d | 0\n  var e = this._e | 0\n\n  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n  for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n  for (var j = 0; j < 80; ++j) {\n    var s = ~~(j / 20)\n    var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n    e = d\n    d = c\n    c = rotl30(b)\n    b = a\n    a = t\n  }\n\n  this._a = (a + this._a) | 0\n  this._b = (b + this._b) | 0\n  this._c = (c + this._c) | 0\n  this._d = (d + this._d) | 0\n  this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(20)\n\n  H.writeInt32BE(this._a | 0, 0)\n  H.writeInt32BE(this._b | 0, 4)\n  H.writeInt32BE(this._c | 0, 8)\n  H.writeInt32BE(this._d | 0, 12)\n  H.writeInt32BE(this._e | 0, 16)\n\n  return H\n}\n\nmodule.exports = Sha\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9zaGEuanM/Mzc1NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgSGFzaCBBbGdvcml0aG0sIFNIQS0wLCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIFBVQiAxODAtMVxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBkZXJpdmVkIGZyb20gc2hhMS5qcyBvZiB0aGUgc2FtZSByZXBvc2l0b3J5LlxuICogVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBTSEEtMCBhbmQgU0hBLTEgaXMganVzdCBhIGJpdHdpc2Ugcm90YXRlIGxlZnRcbiAqIG9wZXJhdGlvbiB3YXMgYWRkZWQuXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBLID0gW1xuICAweDVhODI3OTk5LCAweDZlZDllYmExLCAweDhmMWJiY2RjIHwgMCwgMHhjYTYyYzFkNiB8IDBcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoODApXG5cbmZ1bmN0aW9uIFNoYSAoKSB7XG4gIHRoaXMuaW5pdCgpXG4gIHRoaXMuX3cgPSBXXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDY0LCA1Nilcbn1cblxuaW5oZXJpdHMoU2hhLCBIYXNoKVxuXG5TaGEucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweDY3NDUyMzAxXG4gIHRoaXMuX2IgPSAweGVmY2RhYjg5XG4gIHRoaXMuX2MgPSAweDk4YmFkY2ZlXG4gIHRoaXMuX2QgPSAweDEwMzI1NDc2XG4gIHRoaXMuX2UgPSAweGMzZDJlMWYwXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gcm90bDUgKG51bSkge1xuICByZXR1cm4gKG51bSA8PCA1KSB8IChudW0gPj4+IDI3KVxufVxuXG5mdW5jdGlvbiByb3RsMzAgKG51bSkge1xuICByZXR1cm4gKG51bSA8PCAzMCkgfCAobnVtID4+PiAyKVxufVxuXG5mdW5jdGlvbiBmdCAocywgYiwgYywgZCkge1xuICBpZiAocyA9PT0gMCkgcmV0dXJuIChiICYgYykgfCAoKH5iKSAmIGQpXG4gIGlmIChzID09PSAyKSByZXR1cm4gKGIgJiBjKSB8IChiICYgZCkgfCAoYyAmIGQpXG4gIHJldHVybiBiIF4gYyBeIGRcbn1cblxuU2hhLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA4MDsgKytpKSBXW2ldID0gV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XVxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgODA7ICsraikge1xuICAgIHZhciBzID0gfn4oaiAvIDIwKVxuICAgIHZhciB0ID0gKHJvdGw1KGEpICsgZnQocywgYiwgYywgZCkgKyBlICsgV1tqXSArIEtbc10pIHwgMFxuXG4gICAgZSA9IGRcbiAgICBkID0gY1xuICAgIGMgPSByb3RsMzAoYilcbiAgICBiID0gYVxuICAgIGEgPSB0XG4gIH1cblxuICB0aGlzLl9hID0gKGEgKyB0aGlzLl9hKSB8IDBcbiAgdGhpcy5fYiA9IChiICsgdGhpcy5fYikgfCAwXG4gIHRoaXMuX2MgPSAoYyArIHRoaXMuX2MpIHwgMFxuICB0aGlzLl9kID0gKGQgKyB0aGlzLl9kKSB8IDBcbiAgdGhpcy5fZSA9IChlICsgdGhpcy5fZSkgfCAwXG59XG5cblNoYS5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gQnVmZmVyLmFsbG9jVW5zYWZlKDIwKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EgfCAwLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iIHwgMCwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYyB8IDAsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QgfCAwLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSB8IDAsIDE2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9zaGEuanMvc2hhLmpzXG4vLyBtb2R1bGUgaWQgPSAxNDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///141\n");

/***/ }),
/* 142 */
/***/ (function(module, exports, __webpack_require__) {

eval("/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = __webpack_require__(0)\nvar Hash = __webpack_require__(14)\nvar Buffer = __webpack_require__(1).Buffer\n\nvar K = [\n  0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n  this._a = 0x67452301\n  this._b = 0xefcdab89\n  this._c = 0x98badcfe\n  this._d = 0x10325476\n  this._e = 0xc3d2e1f0\n\n  return this\n}\n\nfunction rotl1 (num) {\n  return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n  return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n  return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n  if (s === 0) return (b & c) | ((~b) & d)\n  if (s === 2) return (b & c) | (b & d) | (c & d)\n  return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n  var W = this._w\n\n  var a = this._a | 0\n  var b = this._b | 0\n  var c = this._c | 0\n  var d = this._d | 0\n  var e = this._e | 0\n\n  for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n  for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n  for (var j = 0; j < 80; ++j) {\n    var s = ~~(j / 20)\n    var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n    e = d\n    d = c\n    c = rotl30(b)\n    b = a\n    a = t\n  }\n\n  this._a = (a + this._a) | 0\n  this._b = (b + this._b) | 0\n  this._c = (c + this._c) | 0\n  this._d = (d + this._d) | 0\n  this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(20)\n\n  H.writeInt32BE(this._a | 0, 0)\n  H.writeInt32BE(this._b | 0, 4)\n  H.writeInt32BE(this._c | 0, 8)\n  H.writeInt32BE(this._d | 0, 12)\n  H.writeInt32BE(this._e | 0, 16)\n\n  return H\n}\n\nmodule.exports = Sha1\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9zaGExLmpzPzI5MGUiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMSwgYXMgZGVmaW5lZFxuICogaW4gRklQUyBQVUIgMTgwLTFcbiAqIFZlcnNpb24gMi4xYSBDb3B5cmlnaHQgUGF1bCBKb2huc3RvbiAyMDAwIC0gMjAwMi5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCU0QgTGljZW5zZVxuICogU2VlIGh0dHA6Ly9wYWpob21lLm9yZy51ay9jcnlwdC9tZDUgZm9yIGRldGFpbHMuXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBLID0gW1xuICAweDVhODI3OTk5LCAweDZlZDllYmExLCAweDhmMWJiY2RjIHwgMCwgMHhjYTYyYzFkNiB8IDBcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoODApXG5cbmZ1bmN0aW9uIFNoYTEgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTEsIEhhc2gpXG5cblNoYTEucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweDY3NDUyMzAxXG4gIHRoaXMuX2IgPSAweGVmY2RhYjg5XG4gIHRoaXMuX2MgPSAweDk4YmFkY2ZlXG4gIHRoaXMuX2QgPSAweDEwMzI1NDc2XG4gIHRoaXMuX2UgPSAweGMzZDJlMWYwXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gcm90bDEgKG51bSkge1xuICByZXR1cm4gKG51bSA8PCAxKSB8IChudW0gPj4+IDMxKVxufVxuXG5mdW5jdGlvbiByb3RsNSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDUpIHwgKG51bSA+Pj4gMjcpXG59XG5cbmZ1bmN0aW9uIHJvdGwzMCAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDMwKSB8IChudW0gPj4+IDIpXG59XG5cbmZ1bmN0aW9uIGZ0IChzLCBiLCBjLCBkKSB7XG4gIGlmIChzID09PSAwKSByZXR1cm4gKGIgJiBjKSB8ICgofmIpICYgZClcbiAgaWYgKHMgPT09IDIpIHJldHVybiAoYiAmIGMpIHwgKGIgJiBkKSB8IChjICYgZClcbiAgcmV0dXJuIGIgXiBjIF4gZFxufVxuXG5TaGExLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA4MDsgKytpKSBXW2ldID0gcm90bDEoV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XSlcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyArK2opIHtcbiAgICB2YXIgcyA9IH5+KGogLyAyMClcbiAgICB2YXIgdCA9IChyb3RsNShhKSArIGZ0KHMsIGIsIGMsIGQpICsgZSArIFdbal0gKyBLW3NdKSB8IDBcblxuICAgIGUgPSBkXG4gICAgZCA9IGNcbiAgICBjID0gcm90bDMwKGIpXG4gICAgYiA9IGFcbiAgICBhID0gdFxuICB9XG5cbiAgdGhpcy5fYSA9IChhICsgdGhpcy5fYSkgfCAwXG4gIHRoaXMuX2IgPSAoYiArIHRoaXMuX2IpIHwgMFxuICB0aGlzLl9jID0gKGMgKyB0aGlzLl9jKSB8IDBcbiAgdGhpcy5fZCA9IChkICsgdGhpcy5fZCkgfCAwXG4gIHRoaXMuX2UgPSAoZSArIHRoaXMuX2UpIHwgMFxufVxuXG5TaGExLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBCdWZmZXIuYWxsb2NVbnNhZmUoMjApXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSB8IDAsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IgfCAwLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jIHwgMCwgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCB8IDAsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lIHwgMCwgMTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGExXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9zaGEuanMvc2hhMS5qc1xuLy8gbW9kdWxlIGlkID0gMTQyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///142\n");

/***/ }),
/* 143 */
/***/ (function(module, exports, __webpack_require__) {

eval("/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = __webpack_require__(0)\nvar Sha256 = __webpack_require__(56)\nvar Hash = __webpack_require__(14)\nvar Buffer = __webpack_require__(1).Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n  this.init()\n\n  this._w = W // new Array(64)\n\n  Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n  this._a = 0xc1059ed8\n  this._b = 0x367cd507\n  this._c = 0x3070dd17\n  this._d = 0xf70e5939\n  this._e = 0xffc00b31\n  this._f = 0x68581511\n  this._g = 0x64f98fa7\n  this._h = 0xbefa4fa4\n\n  return this\n}\n\nSha224.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(28)\n\n  H.writeInt32BE(this._a, 0)\n  H.writeInt32BE(this._b, 4)\n  H.writeInt32BE(this._c, 8)\n  H.writeInt32BE(this._d, 12)\n  H.writeInt32BE(this._e, 16)\n  H.writeInt32BE(this._f, 20)\n  H.writeInt32BE(this._g, 24)\n\n  return H\n}\n\nmodule.exports = Sha224\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9zaGEyMjQuanM/OTU3OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMjU2LCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIDE4MC0yXG4gKiBWZXJzaW9uIDIuMi1iZXRhIENvcHlyaWdodCBBbmdlbCBNYXJpbiwgUGF1bCBKb2huc3RvbiAyMDAwIC0gMjAwOS5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIFNoYTI1NiA9IHJlcXVpcmUoJy4vc2hhMjU2JylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgVyA9IG5ldyBBcnJheSg2NClcblxuZnVuY3Rpb24gU2hhMjI0ICgpIHtcbiAgdGhpcy5pbml0KClcblxuICB0aGlzLl93ID0gVyAvLyBuZXcgQXJyYXkoNjQpXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDY0LCA1Nilcbn1cblxuaW5oZXJpdHMoU2hhMjI0LCBTaGEyNTYpXG5cblNoYTIyNC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYSA9IDB4YzEwNTllZDhcbiAgdGhpcy5fYiA9IDB4MzY3Y2Q1MDdcbiAgdGhpcy5fYyA9IDB4MzA3MGRkMTdcbiAgdGhpcy5fZCA9IDB4ZjcwZTU5MzlcbiAgdGhpcy5fZSA9IDB4ZmZjMDBiMzFcbiAgdGhpcy5fZiA9IDB4Njg1ODE1MTFcbiAgdGhpcy5fZyA9IDB4NjRmOThmYTdcbiAgdGhpcy5faCA9IDB4YmVmYTRmYTRcblxuICByZXR1cm4gdGhpc1xufVxuXG5TaGEyMjQucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgyOClcblxuICBILndyaXRlSW50MzJCRSh0aGlzLl9hLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jLCA4KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9kLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSwgMTYpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2YsIDIwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9nLCAyNClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTIyNFxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvc2hhLmpzL3NoYTIyNC5qc1xuLy8gbW9kdWxlIGlkID0gMTQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///143\n");

/***/ }),
/* 144 */
/***/ (function(module, exports, __webpack_require__) {

eval("var inherits = __webpack_require__(0)\nvar SHA512 = __webpack_require__(57)\nvar Hash = __webpack_require__(14)\nvar Buffer = __webpack_require__(1).Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n  this.init()\n  this._w = W\n\n  Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n  this._ah = 0xcbbb9d5d\n  this._bh = 0x629a292a\n  this._ch = 0x9159015a\n  this._dh = 0x152fecd8\n  this._eh = 0x67332667\n  this._fh = 0x8eb44a87\n  this._gh = 0xdb0c2e0d\n  this._hh = 0x47b5481d\n\n  this._al = 0xc1059ed8\n  this._bl = 0x367cd507\n  this._cl = 0x3070dd17\n  this._dl = 0xf70e5939\n  this._el = 0xffc00b31\n  this._fl = 0x68581511\n  this._gl = 0x64f98fa7\n  this._hl = 0xbefa4fa4\n\n  return this\n}\n\nSha384.prototype._hash = function () {\n  var H = Buffer.allocUnsafe(48)\n\n  function writeInt64BE (h, l, offset) {\n    H.writeInt32BE(h, offset)\n    H.writeInt32BE(l, offset + 4)\n  }\n\n  writeInt64BE(this._ah, this._al, 0)\n  writeInt64BE(this._bh, this._bl, 8)\n  writeInt64BE(this._ch, this._cl, 16)\n  writeInt64BE(this._dh, this._dl, 24)\n  writeInt64BE(this._eh, this._el, 32)\n  writeInt64BE(this._fh, this._fl, 40)\n\n  return H\n}\n\nmodule.exports = Sha384\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9zaGEzODQuanM/Njk4ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgU0hBNTEyID0gcmVxdWlyZSgnLi9zaGE1MTInKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBXID0gbmV3IEFycmF5KDE2MClcblxuZnVuY3Rpb24gU2hhMzg0ICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgMTI4LCAxMTIpXG59XG5cbmluaGVyaXRzKFNoYTM4NCwgU0hBNTEyKVxuXG5TaGEzODQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2FoID0gMHhjYmJiOWQ1ZFxuICB0aGlzLl9iaCA9IDB4NjI5YTI5MmFcbiAgdGhpcy5fY2ggPSAweDkxNTkwMTVhXG4gIHRoaXMuX2RoID0gMHgxNTJmZWNkOFxuICB0aGlzLl9laCA9IDB4NjczMzI2NjdcbiAgdGhpcy5fZmggPSAweDhlYjQ0YTg3XG4gIHRoaXMuX2doID0gMHhkYjBjMmUwZFxuICB0aGlzLl9oaCA9IDB4NDdiNTQ4MWRcblxuICB0aGlzLl9hbCA9IDB4YzEwNTllZDhcbiAgdGhpcy5fYmwgPSAweDM2N2NkNTA3XG4gIHRoaXMuX2NsID0gMHgzMDcwZGQxN1xuICB0aGlzLl9kbCA9IDB4ZjcwZTU5MzlcbiAgdGhpcy5fZWwgPSAweGZmYzAwYjMxXG4gIHRoaXMuX2ZsID0gMHg2ODU4MTUxMVxuICB0aGlzLl9nbCA9IDB4NjRmOThmYTdcbiAgdGhpcy5faGwgPSAweGJlZmE0ZmE0XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuU2hhMzg0LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBCdWZmZXIuYWxsb2NVbnNhZmUoNDgpXG5cbiAgZnVuY3Rpb24gd3JpdGVJbnQ2NEJFIChoLCBsLCBvZmZzZXQpIHtcbiAgICBILndyaXRlSW50MzJCRShoLCBvZmZzZXQpXG4gICAgSC53cml0ZUludDMyQkUobCwgb2Zmc2V0ICsgNClcbiAgfVxuXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9haCwgdGhpcy5fYWwsIDApXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9iaCwgdGhpcy5fYmwsIDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9jaCwgdGhpcy5fY2wsIDE2KVxuICB3cml0ZUludDY0QkUodGhpcy5fZGgsIHRoaXMuX2RsLCAyNClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2VoLCB0aGlzLl9lbCwgMzIpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9maCwgdGhpcy5fZmwsIDQwKVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMzg0XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9zaGEuanMvc2hhMzg0LmpzXG4vLyBtb2R1bGUgaWQgPSAxNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///144\n");

/***/ }),
/* 145 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\nvar inherits = __webpack_require__(0)\nvar Buffer = __webpack_require__(1).Buffer\n\nvar Base = __webpack_require__(11)\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n  Base.call(this, 'digest')\n  if (typeof key === 'string') {\n    key = Buffer.from(key)\n  }\n\n  this._alg = alg\n  this._key = key\n\n  if (key.length > blocksize) {\n    key = alg(key)\n  } else if (key.length < blocksize) {\n    key = Buffer.concat([key, ZEROS], blocksize)\n  }\n\n  var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n  var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n  for (var i = 0; i < blocksize; i++) {\n    ipad[i] = key[i] ^ 0x36\n    opad[i] = key[i] ^ 0x5C\n  }\n\n  this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n  this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n  var h = this._alg(Buffer.concat(this._hash))\n  return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1obWFjL2xlZ2FjeS5qcz82MTBjIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxuXG52YXIgWkVST1MgPSBCdWZmZXIuYWxsb2MoMTI4KVxudmFyIGJsb2Nrc2l6ZSA9IDY0XG5cbmZ1bmN0aW9uIEhtYWMgKGFsZywga2V5KSB7XG4gIEJhc2UuY2FsbCh0aGlzLCAnZGlnZXN0JylcbiAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAga2V5ID0gQnVmZmVyLmZyb20oa2V5KVxuICB9XG5cbiAgdGhpcy5fYWxnID0gYWxnXG4gIHRoaXMuX2tleSA9IGtleVxuXG4gIGlmIChrZXkubGVuZ3RoID4gYmxvY2tzaXplKSB7XG4gICAga2V5ID0gYWxnKGtleSlcbiAgfSBlbHNlIGlmIChrZXkubGVuZ3RoIDwgYmxvY2tzaXplKSB7XG4gICAga2V5ID0gQnVmZmVyLmNvbmNhdChba2V5LCBaRVJPU10sIGJsb2Nrc2l6ZSlcbiAgfVxuXG4gIHZhciBpcGFkID0gdGhpcy5faXBhZCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja3NpemUpXG4gIHZhciBvcGFkID0gdGhpcy5fb3BhZCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja3NpemUpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja3NpemU7IGkrKykge1xuICAgIGlwYWRbaV0gPSBrZXlbaV0gXiAweDM2XG4gICAgb3BhZFtpXSA9IGtleVtpXSBeIDB4NUNcbiAgfVxuXG4gIHRoaXMuX2hhc2ggPSBbaXBhZF1cbn1cblxuaW5oZXJpdHMoSG1hYywgQmFzZSlcblxuSG1hYy5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2hhc2gucHVzaChkYXRhKVxufVxuXG5IbWFjLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBoID0gdGhpcy5fYWxnKEJ1ZmZlci5jb25jYXQodGhpcy5faGFzaCkpXG4gIHJldHVybiB0aGlzLl9hbGcoQnVmZmVyLmNvbmNhdChbdGhpcy5fb3BhZCwgaF0pKVxufVxubW9kdWxlLmV4cG9ydHMgPSBIbWFjXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jcmVhdGUtaG1hYy9sZWdhY3kuanNcbi8vIG1vZHVsZSBpZCA9IDE0NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///145\n");

/***/ }),
/* 146 */
/***/ (function(module, exports, __webpack_require__) {

eval("module.exports = __webpack_require__(60)\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9hbGdvcy5qcz8zYmU4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9icm93c2VyL2FsZ29yaXRobXMuanNvbicpXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ24vYWxnb3MuanNcbi8vIG1vZHVsZSBpZCA9IDE0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///146\n");

/***/ }),
/* 147 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(global, process) {var checkParameters = __webpack_require__(62)\nvar defaultEncoding = __webpack_require__(63)\nvar sync = __webpack_require__(64)\nvar Buffer = __webpack_require__(1).Buffer\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n  'sha': 'SHA-1',\n  'sha-1': 'SHA-1',\n  'sha1': 'SHA-1',\n  'sha256': 'SHA-256',\n  'sha-256': 'SHA-256',\n  'sha384': 'SHA-384',\n  'sha-384': 'SHA-384',\n  'sha-512': 'SHA-512',\n  'sha512': 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n  if (global.process && !global.process.browser) {\n    return Promise.resolve(false)\n  }\n  if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n    return Promise.resolve(false)\n  }\n  if (checks[algo] !== undefined) {\n    return checks[algo]\n  }\n  ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n  var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n    .then(function () {\n      return true\n    }).catch(function () {\n      return false\n    })\n  checks[algo] = prom\n  return prom\n}\n\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n  return subtle.importKey(\n    'raw', password, {name: 'PBKDF2'}, false, ['deriveBits']\n  ).then(function (key) {\n    return subtle.deriveBits({\n      name: 'PBKDF2',\n      salt: salt,\n      iterations: iterations,\n      hash: {\n        name: algo\n      }\n    }, key, length << 3)\n  }).then(function (res) {\n    return Buffer.from(res)\n  })\n}\n\nfunction resolvePromise (promise, callback) {\n  promise.then(function (out) {\n    process.nextTick(function () {\n      callback(null, out)\n    })\n  }, function (e) {\n    process.nextTick(function () {\n      callback(e)\n    })\n  })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n  if (typeof digest === 'function') {\n    callback = digest\n    digest = undefined\n  }\n\n  digest = digest || 'sha1'\n  var algo = toBrowser[digest.toLowerCase()]\n\n  if (!algo || typeof global.Promise !== 'function') {\n    return process.nextTick(function () {\n      var out\n      try {\n        out = sync(password, salt, iterations, keylen, digest)\n      } catch (e) {\n        return callback(e)\n      }\n      callback(null, out)\n    })\n  }\n\n  checkParameters(password, salt, iterations, keylen)\n  if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n  if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n  if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n  resolvePromise(checkNative(algo).then(function (resp) {\n    if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n    return sync(password, salt, iterations, keylen, digest)\n  }), callback)\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9), __webpack_require__(10)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Bia2RmMi9saWIvYXN5bmMuanM/MTk0MSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY2hlY2tQYXJhbWV0ZXJzID0gcmVxdWlyZSgnLi9wcmVjb25kaXRpb24nKVxudmFyIGRlZmF1bHRFbmNvZGluZyA9IHJlcXVpcmUoJy4vZGVmYXVsdC1lbmNvZGluZycpXG52YXIgc3luYyA9IHJlcXVpcmUoJy4vc3luYycpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIFpFUk9fQlVGXG52YXIgc3VidGxlID0gZ2xvYmFsLmNyeXB0byAmJiBnbG9iYWwuY3J5cHRvLnN1YnRsZVxudmFyIHRvQnJvd3NlciA9IHtcbiAgJ3NoYSc6ICdTSEEtMScsXG4gICdzaGEtMSc6ICdTSEEtMScsXG4gICdzaGExJzogJ1NIQS0xJyxcbiAgJ3NoYTI1Nic6ICdTSEEtMjU2JyxcbiAgJ3NoYS0yNTYnOiAnU0hBLTI1NicsXG4gICdzaGEzODQnOiAnU0hBLTM4NCcsXG4gICdzaGEtMzg0JzogJ1NIQS0zODQnLFxuICAnc2hhLTUxMic6ICdTSEEtNTEyJyxcbiAgJ3NoYTUxMic6ICdTSEEtNTEyJ1xufVxudmFyIGNoZWNrcyA9IFtdXG5mdW5jdGlvbiBjaGVja05hdGl2ZSAoYWxnbykge1xuICBpZiAoZ2xvYmFsLnByb2Nlc3MgJiYgIWdsb2JhbC5wcm9jZXNzLmJyb3dzZXIpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKVxuICB9XG4gIGlmICghc3VidGxlIHx8ICFzdWJ0bGUuaW1wb3J0S2V5IHx8ICFzdWJ0bGUuZGVyaXZlQml0cykge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpXG4gIH1cbiAgaWYgKGNoZWNrc1thbGdvXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGNoZWNrc1thbGdvXVxuICB9XG4gIFpFUk9fQlVGID0gWkVST19CVUYgfHwgQnVmZmVyLmFsbG9jKDgpXG4gIHZhciBwcm9tID0gYnJvd3NlclBia2RmMihaRVJPX0JVRiwgWkVST19CVUYsIDEwLCAxMjgsIGFsZ28pXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9KVxuICBjaGVja3NbYWxnb10gPSBwcm9tXG4gIHJldHVybiBwcm9tXG59XG5cbmZ1bmN0aW9uIGJyb3dzZXJQYmtkZjIgKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBsZW5ndGgsIGFsZ28pIHtcbiAgcmV0dXJuIHN1YnRsZS5pbXBvcnRLZXkoXG4gICAgJ3JhdycsIHBhc3N3b3JkLCB7bmFtZTogJ1BCS0RGMid9LCBmYWxzZSwgWydkZXJpdmVCaXRzJ11cbiAgKS50aGVuKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gc3VidGxlLmRlcml2ZUJpdHMoe1xuICAgICAgbmFtZTogJ1BCS0RGMicsXG4gICAgICBzYWx0OiBzYWx0LFxuICAgICAgaXRlcmF0aW9uczogaXRlcmF0aW9ucyxcbiAgICAgIGhhc2g6IHtcbiAgICAgICAgbmFtZTogYWxnb1xuICAgICAgfVxuICAgIH0sIGtleSwgbGVuZ3RoIDw8IDMpXG4gIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShyZXMpXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVQcm9taXNlIChwcm9taXNlLCBjYWxsYmFjaykge1xuICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKG91dCkge1xuICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbGJhY2sobnVsbCwgb3V0KVxuICAgIH0pXG4gIH0sIGZ1bmN0aW9uIChlKSB7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICBjYWxsYmFjayhlKVxuICAgIH0pXG4gIH0pXG59XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChwYXNzd29yZCwgc2FsdCwgaXRlcmF0aW9ucywga2V5bGVuLCBkaWdlc3QsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2YgZGlnZXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBkaWdlc3RcbiAgICBkaWdlc3QgPSB1bmRlZmluZWRcbiAgfVxuXG4gIGRpZ2VzdCA9IGRpZ2VzdCB8fCAnc2hhMSdcbiAgdmFyIGFsZ28gPSB0b0Jyb3dzZXJbZGlnZXN0LnRvTG93ZXJDYXNlKCldXG5cbiAgaWYgKCFhbGdvIHx8IHR5cGVvZiBnbG9iYWwuUHJvbWlzZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBvdXRcbiAgICAgIHRyeSB7XG4gICAgICAgIG91dCA9IHN5bmMocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0KVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2soZSlcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKG51bGwsIG91dClcbiAgICB9KVxuICB9XG5cbiAgY2hlY2tQYXJhbWV0ZXJzKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4pXG4gIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBFcnJvcignTm8gY2FsbGJhY2sgcHJvdmlkZWQgdG8gcGJrZGYyJylcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocGFzc3dvcmQpKSBwYXNzd29yZCA9IEJ1ZmZlci5mcm9tKHBhc3N3b3JkLCBkZWZhdWx0RW5jb2RpbmcpXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHNhbHQpKSBzYWx0ID0gQnVmZmVyLmZyb20oc2FsdCwgZGVmYXVsdEVuY29kaW5nKVxuXG4gIHJlc29sdmVQcm9taXNlKGNoZWNrTmF0aXZlKGFsZ28pLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHtcbiAgICBpZiAocmVzcCkgcmV0dXJuIGJyb3dzZXJQYmtkZjIocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgYWxnbylcblxuICAgIHJldHVybiBzeW5jKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdClcbiAgfSksIGNhbGxiYWNrKVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi9hc3luYy5qc1xuLy8gbW9kdWxlIGlkID0gMTQ3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///147\n");

/***/ }),
/* 148 */
/***/ (function(module, exports, __webpack_require__) {

eval("var DES = __webpack_require__(149)\nvar aes = __webpack_require__(38)\nvar aesModes = __webpack_require__(39)\nvar desModes = __webpack_require__(164)\nvar ebtk = __webpack_require__(25)\n\nfunction createCipher (suite, password) {\n  suite = suite.toLowerCase()\n\n  var keyLen, ivLen\n  if (aesModes[suite]) {\n    keyLen = aesModes[suite].key\n    ivLen = aesModes[suite].iv\n  } else if (desModes[suite]) {\n    keyLen = desModes[suite].key * 8\n    ivLen = desModes[suite].iv\n  } else {\n    throw new TypeError('invalid suite type')\n  }\n\n  var keys = ebtk(password, false, keyLen, ivLen)\n  return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n  suite = suite.toLowerCase()\n\n  var keyLen, ivLen\n  if (aesModes[suite]) {\n    keyLen = aesModes[suite].key\n    ivLen = aesModes[suite].iv\n  } else if (desModes[suite]) {\n    keyLen = desModes[suite].key * 8\n    ivLen = desModes[suite].iv\n  } else {\n    throw new TypeError('invalid suite type')\n  }\n\n  var keys = ebtk(password, false, keyLen, ivLen)\n  return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n  suite = suite.toLowerCase()\n  if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n  if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n  throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n  suite = suite.toLowerCase()\n  if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n  if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n  throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n  return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktY2lwaGVyL2Jyb3dzZXIuanM/NTRhMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgREVTID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1kZXMnKVxudmFyIGFlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL2Jyb3dzZXInKVxudmFyIGFlc01vZGVzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1hZXMvbW9kZXMnKVxudmFyIGRlc01vZGVzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1kZXMvbW9kZXMnKVxudmFyIGVidGsgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG5cbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlciAoc3VpdGUsIHBhc3N3b3JkKSB7XG4gIHN1aXRlID0gc3VpdGUudG9Mb3dlckNhc2UoKVxuXG4gIHZhciBrZXlMZW4sIGl2TGVuXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0ua2V5XG4gICAgaXZMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0uaXZcbiAgfSBlbHNlIGlmIChkZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBkZXNNb2Rlc1tzdWl0ZV0ua2V5ICogOFxuICAgIGl2TGVuID0gZGVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuXG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGtleUxlbiwgaXZMZW4pXG4gIHJldHVybiBjcmVhdGVDaXBoZXJpdihzdWl0ZSwga2V5cy5rZXksIGtleXMuaXYpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG5cbiAgdmFyIGtleUxlbiwgaXZMZW5cbiAgaWYgKGFlc01vZGVzW3N1aXRlXSkge1xuICAgIGtleUxlbiA9IGFlc01vZGVzW3N1aXRlXS5rZXlcbiAgICBpdkxlbiA9IGFlc01vZGVzW3N1aXRlXS5pdlxuICB9IGVsc2UgaWYgKGRlc01vZGVzW3N1aXRlXSkge1xuICAgIGtleUxlbiA9IGRlc01vZGVzW3N1aXRlXS5rZXkgKiA4XG4gICAgaXZMZW4gPSBkZXNNb2Rlc1tzdWl0ZV0uaXZcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG5cbiAgdmFyIGtleXMgPSBlYnRrKHBhc3N3b3JkLCBmYWxzZSwga2V5TGVuLCBpdkxlbilcbiAgcmV0dXJuIGNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDaXBoZXJpdiAoc3VpdGUsIGtleSwgaXYpIHtcbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHJldHVybiBhZXMuY3JlYXRlQ2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIGlmIChkZXNNb2Rlc1tzdWl0ZV0pIHJldHVybiBuZXcgREVTKHsga2V5OiBrZXksIGl2OiBpdiwgbW9kZTogc3VpdGUgfSlcblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWNpcGhlcml2IChzdWl0ZSwga2V5LCBpdikge1xuICBzdWl0ZSA9IHN1aXRlLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFlc01vZGVzW3N1aXRlXSkgcmV0dXJuIGFlcy5jcmVhdGVEZWNpcGhlcml2KHN1aXRlLCBrZXksIGl2KVxuICBpZiAoZGVzTW9kZXNbc3VpdGVdKSByZXR1cm4gbmV3IERFUyh7IGtleToga2V5LCBpdjogaXYsIG1vZGU6IHN1aXRlLCBkZWNyeXB0OiB0cnVlIH0pXG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbn1cblxuZnVuY3Rpb24gZ2V0Q2lwaGVycyAoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhkZXNNb2RlcykuY29uY2F0KGFlcy5nZXRDaXBoZXJzKCkpXG59XG5cbmV4cG9ydHMuY3JlYXRlQ2lwaGVyID0gZXhwb3J0cy5DaXBoZXIgPSBjcmVhdGVDaXBoZXJcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyaXYgPSBleHBvcnRzLkNpcGhlcml2ID0gY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBleHBvcnRzLkRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXJpdiA9IGV4cG9ydHMuRGVjaXBoZXJpdiA9IGNyZWF0ZURlY2lwaGVyaXZcbmV4cG9ydHMubGlzdENpcGhlcnMgPSBleHBvcnRzLmdldENpcGhlcnMgPSBnZXRDaXBoZXJzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWNpcGhlci9icm93c2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAxNDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///148\n");

/***/ }),
/* 149 */
/***/ (function(module, exports, __webpack_require__) {

eval("var CipherBase = __webpack_require__(11)\nvar des = __webpack_require__(37)\nvar inherits = __webpack_require__(0)\nvar Buffer = __webpack_require__(1).Buffer\n\nvar modes = {\n  'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n  'des-ede3': des.EDE,\n  'des-ede-cbc': des.CBC.instantiate(des.EDE),\n  'des-ede': des.EDE,\n  'des-cbc': des.CBC.instantiate(des.DES),\n  'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n  CipherBase.call(this)\n  var modeName = opts.mode.toLowerCase()\n  var mode = modes[modeName]\n  var type\n  if (opts.decrypt) {\n    type = 'decrypt'\n  } else {\n    type = 'encrypt'\n  }\n  var key = opts.key\n  if (!Buffer.isBuffer(key)) {\n    key = Buffer.from(key)\n  }\n  if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n    key = Buffer.concat([key, key.slice(0, 8)])\n  }\n  var iv = opts.iv\n  if (!Buffer.isBuffer(iv)) {\n    iv = Buffer.from(iv)\n  }\n  this._des = mode.create({\n    key: key,\n    iv: iv,\n    type: type\n  })\n}\nDES.prototype._update = function (data) {\n  return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n  return Buffer.from(this._des.final())\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktZGVzL2luZGV4LmpzPzIxMTciXSwic291cmNlc0NvbnRlbnQiOlsidmFyIENpcGhlckJhc2UgPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG52YXIgZGVzID0gcmVxdWlyZSgnZGVzLmpzJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgbW9kZXMgPSB7XG4gICdkZXMtZWRlMy1jYmMnOiBkZXMuQ0JDLmluc3RhbnRpYXRlKGRlcy5FREUpLFxuICAnZGVzLWVkZTMnOiBkZXMuRURFLFxuICAnZGVzLWVkZS1jYmMnOiBkZXMuQ0JDLmluc3RhbnRpYXRlKGRlcy5FREUpLFxuICAnZGVzLWVkZSc6IGRlcy5FREUsXG4gICdkZXMtY2JjJzogZGVzLkNCQy5pbnN0YW50aWF0ZShkZXMuREVTKSxcbiAgJ2Rlcy1lY2InOiBkZXMuREVTXG59XG5tb2Rlcy5kZXMgPSBtb2Rlc1snZGVzLWNiYyddXG5tb2Rlcy5kZXMzID0gbW9kZXNbJ2Rlcy1lZGUzLWNiYyddXG5tb2R1bGUuZXhwb3J0cyA9IERFU1xuaW5oZXJpdHMoREVTLCBDaXBoZXJCYXNlKVxuZnVuY3Rpb24gREVTIChvcHRzKSB7XG4gIENpcGhlckJhc2UuY2FsbCh0aGlzKVxuICB2YXIgbW9kZU5hbWUgPSBvcHRzLm1vZGUudG9Mb3dlckNhc2UoKVxuICB2YXIgbW9kZSA9IG1vZGVzW21vZGVOYW1lXVxuICB2YXIgdHlwZVxuICBpZiAob3B0cy5kZWNyeXB0KSB7XG4gICAgdHlwZSA9ICdkZWNyeXB0J1xuICB9IGVsc2Uge1xuICAgIHR5cGUgPSAnZW5jcnlwdCdcbiAgfVxuICB2YXIga2V5ID0gb3B0cy5rZXlcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoa2V5KSkge1xuICAgIGtleSA9IEJ1ZmZlci5mcm9tKGtleSlcbiAgfVxuICBpZiAobW9kZU5hbWUgPT09ICdkZXMtZWRlJyB8fCBtb2RlTmFtZSA9PT0gJ2Rlcy1lZGUtY2JjJykge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwga2V5LnNsaWNlKDAsIDgpXSlcbiAgfVxuICB2YXIgaXYgPSBvcHRzLml2XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGl2KSkge1xuICAgIGl2ID0gQnVmZmVyLmZyb20oaXYpXG4gIH1cbiAgdGhpcy5fZGVzID0gbW9kZS5jcmVhdGUoe1xuICAgIGtleToga2V5LFxuICAgIGl2OiBpdixcbiAgICB0eXBlOiB0eXBlXG4gIH0pXG59XG5ERVMucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICByZXR1cm4gQnVmZmVyLmZyb20odGhpcy5fZGVzLnVwZGF0ZShkYXRhKSlcbn1cbkRFUy5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gQnVmZmVyLmZyb20odGhpcy5fZGVzLmZpbmFsKCkpXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWRlcy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTQ5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///149\n");

/***/ }),
/* 150 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n  var res =  (bytes[0 + off] << 24) |\n             (bytes[1 + off] << 16) |\n             (bytes[2 + off] << 8) |\n             bytes[3 + off];\n  return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n  bytes[0 + off] = value >>> 24;\n  bytes[1 + off] = (value >>> 16) & 0xff;\n  bytes[2 + off] = (value >>> 8) & 0xff;\n  bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  for (var i = 6; i >= 0; i -= 2) {\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inR >>> (j + i)) & 1;\n    }\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inL >>> (j + i)) & 1;\n    }\n  }\n\n  for (var i = 6; i >= 0; i -= 2) {\n    for (var j = 1; j <= 25; j += 8) {\n      outR <<= 1;\n      outR |= (inR >>> (j + i)) & 1;\n    }\n    for (var j = 1; j <= 25; j += 8) {\n      outR <<= 1;\n      outR |= (inL >>> (j + i)) & 1;\n    }\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  for (var i = 0; i < 4; i++) {\n    for (var j = 24; j >= 0; j -= 8) {\n      outL <<= 1;\n      outL |= (inR >>> (j + i)) & 1;\n      outL <<= 1;\n      outL |= (inL >>> (j + i)) & 1;\n    }\n  }\n  for (var i = 4; i < 8; i++) {\n    for (var j = 24; j >= 0; j -= 8) {\n      outR <<= 1;\n      outR |= (inR >>> (j + i)) & 1;\n      outR <<= 1;\n      outR |= (inL >>> (j + i)) & 1;\n    }\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  // 7, 15, 23, 31, 39, 47, 55, 63\n  // 6, 14, 22, 30, 39, 47, 55, 63\n  // 5, 13, 21, 29, 39, 47, 55, 63\n  // 4, 12, 20, 28\n  for (var i = 7; i >= 5; i--) {\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inR >> (j + i)) & 1;\n    }\n    for (var j = 0; j <= 24; j += 8) {\n      outL <<= 1;\n      outL |= (inL >> (j + i)) & 1;\n    }\n  }\n  for (var j = 0; j <= 24; j += 8) {\n    outL <<= 1;\n    outL |= (inR >> (j + i)) & 1;\n  }\n\n  // 1, 9, 17, 25, 33, 41, 49, 57\n  // 2, 10, 18, 26, 34, 42, 50, 58\n  // 3, 11, 19, 27, 35, 43, 51, 59\n  // 36, 44, 52, 60\n  for (var i = 1; i <= 3; i++) {\n    for (var j = 0; j <= 24; j += 8) {\n      outR <<= 1;\n      outR |= (inR >> (j + i)) & 1;\n    }\n    for (var j = 0; j <= 24; j += 8) {\n      outR <<= 1;\n      outR |= (inL >> (j + i)) & 1;\n    }\n  }\n  for (var j = 0; j <= 24; j += 8) {\n    outR <<= 1;\n    outR |= (inL >> (j + i)) & 1;\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n  return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n  // inL => outL\n  14, 11, 17, 4, 27, 23, 25, 0,\n  13, 22, 7, 18, 5, 9, 16, 24,\n  2, 20, 12, 21, 1, 8, 15, 26,\n\n  // inR => outR\n  15, 4, 25, 19, 9, 1, 26, 16,\n  5, 11, 23, 8, 12, 7, 17, 0,\n  22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  var len = pc2table.length >>> 1;\n  for (var i = 0; i < len; i++) {\n    outL <<= 1;\n    outL |= (inL >>> pc2table[i]) & 0x1;\n  }\n  for (var i = len; i < pc2table.length; i++) {\n    outR <<= 1;\n    outR |= (inR >>> pc2table[i]) & 0x1;\n  }\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n  var outL = 0;\n  var outR = 0;\n\n  outL = ((r & 1) << 5) | (r >>> 27);\n  for (var i = 23; i >= 15; i -= 4) {\n    outL <<= 6;\n    outL |= (r >>> i) & 0x3f;\n  }\n  for (var i = 11; i >= 3; i -= 4) {\n    outR |= (r >>> i) & 0x3f;\n    outR <<= 6;\n  }\n  outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n  out[off + 0] = outL >>> 0;\n  out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n  14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n  3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n  4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n  15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n  15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n  9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n  0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n  5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n  10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n  1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n  13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n  11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n  7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n  1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n  10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n  15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n  2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n  8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n  4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n  15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n  12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n  0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n  9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n  7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n  4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n  3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n  1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n  10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n  13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n  10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n  7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n  0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n  var out = 0;\n  for (var i = 0; i < 4; i++) {\n    var b = (inL >>> (18 - i * 6)) & 0x3f;\n    var sb = sTable[i * 0x40 + b];\n\n    out <<= 4;\n    out |= sb;\n  }\n  for (var i = 0; i < 4; i++) {\n    var b = (inR >>> (18 - i * 6)) & 0x3f;\n    var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n    out <<= 4;\n    out |= sb;\n  }\n  return out >>> 0;\n};\n\nvar permuteTable = [\n  16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n  30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n  var out = 0;\n  for (var i = 0; i < permuteTable.length; i++) {\n    out <<= 1;\n    out |= (num >>> permuteTable[i]) & 0x1;\n  }\n  return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n  var str = num.toString(2);\n  while (str.length < size)\n    str = '0' + str;\n\n  var out = [];\n  for (var i = 0; i < size; i += group)\n    out.push(str.slice(i, i + group));\n  return out.join(' ');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL3V0aWxzLmpzPzg4ZDQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRShieXRlcywgb2ZmKSB7XG4gIHZhciByZXMgPSAgKGJ5dGVzWzAgKyBvZmZdIDw8IDI0KSB8XG4gICAgICAgICAgICAgKGJ5dGVzWzEgKyBvZmZdIDw8IDE2KSB8XG4gICAgICAgICAgICAgKGJ5dGVzWzIgKyBvZmZdIDw8IDgpIHxcbiAgICAgICAgICAgICBieXRlc1szICsgb2ZmXTtcbiAgcmV0dXJuIHJlcyA+Pj4gMDtcbn07XG5cbmV4cG9ydHMud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUoYnl0ZXMsIHZhbHVlLCBvZmYpIHtcbiAgYnl0ZXNbMCArIG9mZl0gPSB2YWx1ZSA+Pj4gMjQ7XG4gIGJ5dGVzWzEgKyBvZmZdID0gKHZhbHVlID4+PiAxNikgJiAweGZmO1xuICBieXRlc1syICsgb2ZmXSA9ICh2YWx1ZSA+Pj4gOCkgJiAweGZmO1xuICBieXRlc1szICsgb2ZmXSA9IHZhbHVlICYgMHhmZjtcbn07XG5cbmV4cG9ydHMuaXAgPSBmdW5jdGlvbiBpcChpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDY7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDY7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gMjU7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSAyNTsgaiArPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucmlwID0gZnVuY3Rpb24gcmlwKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAyNDsgaiA+PSAwOyBqIC09IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpbkwgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgaSA9IDQ7IGkgPCA4OyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMjQ7IGogPj0gMDsgaiAtPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5SID4+PiAoaiArIGkpKSAmIDE7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucGMxID0gZnVuY3Rpb24gcGMxKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICAvLyA3LCAxNSwgMjMsIDMxLCAzOSwgNDcsIDU1LCA2M1xuICAvLyA2LCAxNCwgMjIsIDMwLCAzOSwgNDcsIDU1LCA2M1xuICAvLyA1LCAxMywgMjEsIDI5LCAzOSwgNDcsIDU1LCA2M1xuICAvLyA0LCAxMiwgMjAsIDI4XG4gIGZvciAodmFyIGkgPSA3OyBpID49IDU7IGktLSkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpblIgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5MID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgIG91dEwgPDw9IDE7XG4gICAgb3V0TCB8PSAoaW5SID4+IChqICsgaSkpICYgMTtcbiAgfVxuXG4gIC8vIDEsIDksIDE3LCAyNSwgMzMsIDQxLCA0OSwgNTdcbiAgLy8gMiwgMTAsIDE4LCAyNiwgMzQsIDQyLCA1MCwgNThcbiAgLy8gMywgMTEsIDE5LCAyNywgMzUsIDQzLCA1MSwgNTlcbiAgLy8gMzYsIDQ0LCA1MiwgNjBcbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gMzsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluUiA+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpbkwgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgb3V0UiA8PD0gMTtcbiAgICBvdXRSIHw9IChpbkwgPj4gKGogKyBpKSkgJiAxO1xuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucjI4c2hsID0gZnVuY3Rpb24gcjI4c2hsKG51bSwgc2hpZnQpIHtcbiAgcmV0dXJuICgobnVtIDw8IHNoaWZ0KSAmIDB4ZmZmZmZmZikgfCAobnVtID4+PiAoMjggLSBzaGlmdCkpO1xufTtcblxudmFyIHBjMnRhYmxlID0gW1xuICAvLyBpbkwgPT4gb3V0TFxuICAxNCwgMTEsIDE3LCA0LCAyNywgMjMsIDI1LCAwLFxuICAxMywgMjIsIDcsIDE4LCA1LCA5LCAxNiwgMjQsXG4gIDIsIDIwLCAxMiwgMjEsIDEsIDgsIDE1LCAyNixcblxuICAvLyBpblIgPT4gb3V0UlxuICAxNSwgNCwgMjUsIDE5LCA5LCAxLCAyNiwgMTYsXG4gIDUsIDExLCAyMywgOCwgMTIsIDcsIDE3LCAwLFxuICAyMiwgMywgMTAsIDE0LCA2LCAyMCwgMjcsIDI0XG5dO1xuXG5leHBvcnRzLnBjMiA9IGZ1bmN0aW9uIHBjMihpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgdmFyIGxlbiA9IHBjMnRhYmxlLmxlbmd0aCA+Pj4gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG91dEwgPDw9IDE7XG4gICAgb3V0TCB8PSAoaW5MID4+PiBwYzJ0YWJsZVtpXSkgJiAweDE7XG4gIH1cbiAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IHBjMnRhYmxlLmxlbmd0aDsgaSsrKSB7XG4gICAgb3V0UiA8PD0gMTtcbiAgICBvdXRSIHw9IChpblIgPj4+IHBjMnRhYmxlW2ldKSAmIDB4MTtcbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLmV4cGFuZCA9IGZ1bmN0aW9uIGV4cGFuZChyLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICBvdXRMID0gKChyICYgMSkgPDwgNSkgfCAociA+Pj4gMjcpO1xuICBmb3IgKHZhciBpID0gMjM7IGkgPj0gMTU7IGkgLT0gNCkge1xuICAgIG91dEwgPDw9IDY7XG4gICAgb3V0TCB8PSAociA+Pj4gaSkgJiAweDNmO1xuICB9XG4gIGZvciAodmFyIGkgPSAxMTsgaSA+PSAzOyBpIC09IDQpIHtcbiAgICBvdXRSIHw9IChyID4+PiBpKSAmIDB4M2Y7XG4gICAgb3V0UiA8PD0gNjtcbiAgfVxuICBvdXRSIHw9ICgociAmIDB4MWYpIDw8IDEpIHwgKHIgPj4+IDMxKTtcblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxudmFyIHNUYWJsZSA9IFtcbiAgMTQsIDAsIDQsIDE1LCAxMywgNywgMSwgNCwgMiwgMTQsIDE1LCAyLCAxMSwgMTMsIDgsIDEsXG4gIDMsIDEwLCAxMCwgNiwgNiwgMTIsIDEyLCAxMSwgNSwgOSwgOSwgNSwgMCwgMywgNywgOCxcbiAgNCwgMTUsIDEsIDEyLCAxNCwgOCwgOCwgMiwgMTMsIDQsIDYsIDksIDIsIDEsIDExLCA3LFxuICAxNSwgNSwgMTIsIDExLCA5LCAzLCA3LCAxNCwgMywgMTAsIDEwLCAwLCA1LCA2LCAwLCAxMyxcblxuICAxNSwgMywgMSwgMTMsIDgsIDQsIDE0LCA3LCA2LCAxNSwgMTEsIDIsIDMsIDgsIDQsIDE0LFxuICA5LCAxMiwgNywgMCwgMiwgMSwgMTMsIDEwLCAxMiwgNiwgMCwgOSwgNSwgMTEsIDEwLCA1LFxuICAwLCAxMywgMTQsIDgsIDcsIDEwLCAxMSwgMSwgMTAsIDMsIDQsIDE1LCAxMywgNCwgMSwgMixcbiAgNSwgMTEsIDgsIDYsIDEyLCA3LCA2LCAxMiwgOSwgMCwgMywgNSwgMiwgMTQsIDE1LCA5LFxuXG4gIDEwLCAxMywgMCwgNywgOSwgMCwgMTQsIDksIDYsIDMsIDMsIDQsIDE1LCA2LCA1LCAxMCxcbiAgMSwgMiwgMTMsIDgsIDEyLCA1LCA3LCAxNCwgMTEsIDEyLCA0LCAxMSwgMiwgMTUsIDgsIDEsXG4gIDEzLCAxLCA2LCAxMCwgNCwgMTMsIDksIDAsIDgsIDYsIDE1LCA5LCAzLCA4LCAwLCA3LFxuICAxMSwgNCwgMSwgMTUsIDIsIDE0LCAxMiwgMywgNSwgMTEsIDEwLCA1LCAxNCwgMiwgNywgMTIsXG5cbiAgNywgMTMsIDEzLCA4LCAxNCwgMTEsIDMsIDUsIDAsIDYsIDYsIDE1LCA5LCAwLCAxMCwgMyxcbiAgMSwgNCwgMiwgNywgOCwgMiwgNSwgMTIsIDExLCAxLCAxMiwgMTAsIDQsIDE0LCAxNSwgOSxcbiAgMTAsIDMsIDYsIDE1LCA5LCAwLCAwLCA2LCAxMiwgMTAsIDExLCAxLCA3LCAxMywgMTMsIDgsXG4gIDE1LCA5LCAxLCA0LCAzLCA1LCAxNCwgMTEsIDUsIDEyLCAyLCA3LCA4LCAyLCA0LCAxNCxcblxuICAyLCAxNCwgMTIsIDExLCA0LCAyLCAxLCAxMiwgNywgNCwgMTAsIDcsIDExLCAxMywgNiwgMSxcbiAgOCwgNSwgNSwgMCwgMywgMTUsIDE1LCAxMCwgMTMsIDMsIDAsIDksIDE0LCA4LCA5LCA2LFxuICA0LCAxMSwgMiwgOCwgMSwgMTIsIDExLCA3LCAxMCwgMSwgMTMsIDE0LCA3LCAyLCA4LCAxMyxcbiAgMTUsIDYsIDksIDE1LCAxMiwgMCwgNSwgOSwgNiwgMTAsIDMsIDQsIDAsIDUsIDE0LCAzLFxuXG4gIDEyLCAxMCwgMSwgMTUsIDEwLCA0LCAxNSwgMiwgOSwgNywgMiwgMTIsIDYsIDksIDgsIDUsXG4gIDAsIDYsIDEzLCAxLCAzLCAxMywgNCwgMTQsIDE0LCAwLCA3LCAxMSwgNSwgMywgMTEsIDgsXG4gIDksIDQsIDE0LCAzLCAxNSwgMiwgNSwgMTIsIDIsIDksIDgsIDUsIDEyLCAxNSwgMywgMTAsXG4gIDcsIDExLCAwLCAxNCwgNCwgMSwgMTAsIDcsIDEsIDYsIDEzLCAwLCAxMSwgOCwgNiwgMTMsXG5cbiAgNCwgMTMsIDExLCAwLCAyLCAxMSwgMTQsIDcsIDE1LCA0LCAwLCA5LCA4LCAxLCAxMywgMTAsXG4gIDMsIDE0LCAxMiwgMywgOSwgNSwgNywgMTIsIDUsIDIsIDEwLCAxNSwgNiwgOCwgMSwgNixcbiAgMSwgNiwgNCwgMTEsIDExLCAxMywgMTMsIDgsIDEyLCAxLCAzLCA0LCA3LCAxMCwgMTQsIDcsXG4gIDEwLCA5LCAxNSwgNSwgNiwgMCwgOCwgMTUsIDAsIDE0LCA1LCAyLCA5LCAzLCAyLCAxMixcblxuICAxMywgMSwgMiwgMTUsIDgsIDEzLCA0LCA4LCA2LCAxMCwgMTUsIDMsIDExLCA3LCAxLCA0LFxuICAxMCwgMTIsIDksIDUsIDMsIDYsIDE0LCAxMSwgNSwgMCwgMCwgMTQsIDEyLCA5LCA3LCAyLFxuICA3LCAyLCAxMSwgMSwgNCwgMTQsIDEsIDcsIDksIDQsIDEyLCAxMCwgMTQsIDgsIDIsIDEzLFxuICAwLCAxNSwgNiwgMTIsIDEwLCA5LCAxMywgMCwgMTUsIDMsIDMsIDUsIDUsIDYsIDgsIDExXG5dO1xuXG5leHBvcnRzLnN1YnN0aXR1dGUgPSBmdW5jdGlvbiBzdWJzdGl0dXRlKGluTCwgaW5SKSB7XG4gIHZhciBvdXQgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgIHZhciBiID0gKGluTCA+Pj4gKDE4IC0gaSAqIDYpKSAmIDB4M2Y7XG4gICAgdmFyIHNiID0gc1RhYmxlW2kgKiAweDQwICsgYl07XG5cbiAgICBvdXQgPDw9IDQ7XG4gICAgb3V0IHw9IHNiO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIGIgPSAoaW5SID4+PiAoMTggLSBpICogNikpICYgMHgzZjtcbiAgICB2YXIgc2IgPSBzVGFibGVbNCAqIDB4NDAgKyBpICogMHg0MCArIGJdO1xuXG4gICAgb3V0IDw8PSA0O1xuICAgIG91dCB8PSBzYjtcbiAgfVxuICByZXR1cm4gb3V0ID4+PiAwO1xufTtcblxudmFyIHBlcm11dGVUYWJsZSA9IFtcbiAgMTYsIDI1LCAxMiwgMTEsIDMsIDIwLCA0LCAxNSwgMzEsIDE3LCA5LCA2LCAyNywgMTQsIDEsIDIyLFxuICAzMCwgMjQsIDgsIDE4LCAwLCA1LCAyOSwgMjMsIDEzLCAxOSwgMiwgMjYsIDEwLCAyMSwgMjgsIDdcbl07XG5cbmV4cG9ydHMucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUobnVtKSB7XG4gIHZhciBvdXQgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBlcm11dGVUYWJsZS5sZW5ndGg7IGkrKykge1xuICAgIG91dCA8PD0gMTtcbiAgICBvdXQgfD0gKG51bSA+Pj4gcGVybXV0ZVRhYmxlW2ldKSAmIDB4MTtcbiAgfVxuICByZXR1cm4gb3V0ID4+PiAwO1xufTtcblxuZXhwb3J0cy5wYWRTcGxpdCA9IGZ1bmN0aW9uIHBhZFNwbGl0KG51bSwgc2l6ZSwgZ3JvdXApIHtcbiAgdmFyIHN0ciA9IG51bS50b1N0cmluZygyKTtcbiAgd2hpbGUgKHN0ci5sZW5ndGggPCBzaXplKVxuICAgIHN0ciA9ICcwJyArIHN0cjtcblxuICB2YXIgb3V0ID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSArPSBncm91cClcbiAgICBvdXQucHVzaChzdHIuc2xpY2UoaSwgaSArIGdyb3VwKSk7XG4gIHJldHVybiBvdXQuam9pbignICcpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL3V0aWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAxNTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///150\n");

/***/ }),
/* 151 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar assert = __webpack_require__(7);\n\nfunction Cipher(options) {\n  this.options = options;\n\n  this.type = this.options.type;\n  this.blockSize = 8;\n  this._init();\n\n  this.buffer = new Array(this.blockSize);\n  this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n  // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n  if (data.length === 0)\n    return [];\n\n  if (this.type === 'decrypt')\n    return this._updateDecrypt(data);\n  else\n    return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n  // Append data to buffer\n  var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n  for (var i = 0; i < min; i++)\n    this.buffer[this.bufferOff + i] = data[off + i];\n  this.bufferOff += min;\n\n  // Shift next\n  return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n  this._update(this.buffer, 0, out, off);\n  this.bufferOff = 0;\n  return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n  var inputOff = 0;\n  var outputOff = 0;\n\n  var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n  var out = new Array(count * this.blockSize);\n\n  if (this.bufferOff !== 0) {\n    inputOff += this._buffer(data, inputOff);\n\n    if (this.bufferOff === this.buffer.length)\n      outputOff += this._flushBuffer(out, outputOff);\n  }\n\n  // Write blocks\n  var max = data.length - ((data.length - inputOff) % this.blockSize);\n  for (; inputOff < max; inputOff += this.blockSize) {\n    this._update(data, inputOff, out, outputOff);\n    outputOff += this.blockSize;\n  }\n\n  // Queue rest\n  for (; inputOff < data.length; inputOff++, this.bufferOff++)\n    this.buffer[this.bufferOff] = data[inputOff];\n\n  return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n  var inputOff = 0;\n  var outputOff = 0;\n\n  var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n  var out = new Array(count * this.blockSize);\n\n  // TODO(indutny): optimize it, this is far from optimal\n  for (; count > 0; count--) {\n    inputOff += this._buffer(data, inputOff);\n    outputOff += this._flushBuffer(out, outputOff);\n  }\n\n  // Buffer rest of the input\n  inputOff += this._buffer(data, inputOff);\n\n  return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n  var first;\n  if (buffer)\n    first = this.update(buffer);\n\n  var last;\n  if (this.type === 'encrypt')\n    last = this._finalEncrypt();\n  else\n    last = this._finalDecrypt();\n\n  if (first)\n    return first.concat(last);\n  else\n    return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n  if (off === 0)\n    return false;\n\n  while (off < buffer.length)\n    buffer[off++] = 0;\n\n  return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n  if (!this._pad(this.buffer, this.bufferOff))\n    return [];\n\n  var out = new Array(this.blockSize);\n  this._update(this.buffer, 0, out, 0);\n  return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n  return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n  assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n  var out = new Array(this.blockSize);\n  this._flushBuffer(out, 0);\n\n  return this._unpad(out);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2NpcGhlci5qcz8wMTY4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxuZnVuY3Rpb24gQ2lwaGVyKG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICB0aGlzLnR5cGUgPSB0aGlzLm9wdGlvbnMudHlwZTtcbiAgdGhpcy5ibG9ja1NpemUgPSA4O1xuICB0aGlzLl9pbml0KCk7XG5cbiAgdGhpcy5idWZmZXIgPSBuZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO1xuICB0aGlzLmJ1ZmZlck9mZiA9IDA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IENpcGhlcjtcblxuQ2lwaGVyLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIF9pbml0KCkge1xuICAvLyBNaWdodCBiZSBvdmVycmlkZWRcbn07XG5cbkNpcGhlci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKGRhdGEpIHtcbiAgaWYgKGRhdGEubGVuZ3RoID09PSAwKVxuICAgIHJldHVybiBbXTtcblxuICBpZiAodGhpcy50eXBlID09PSAnZGVjcnlwdCcpXG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZURlY3J5cHQoZGF0YSk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fdXBkYXRlRW5jcnlwdChkYXRhKTtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2J1ZmZlciA9IGZ1bmN0aW9uIF9idWZmZXIoZGF0YSwgb2ZmKSB7XG4gIC8vIEFwcGVuZCBkYXRhIHRvIGJ1ZmZlclxuICB2YXIgbWluID0gTWF0aC5taW4odGhpcy5idWZmZXIubGVuZ3RoIC0gdGhpcy5idWZmZXJPZmYsIGRhdGEubGVuZ3RoIC0gb2ZmKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaW47IGkrKylcbiAgICB0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZiArIGldID0gZGF0YVtvZmYgKyBpXTtcbiAgdGhpcy5idWZmZXJPZmYgKz0gbWluO1xuXG4gIC8vIFNoaWZ0IG5leHRcbiAgcmV0dXJuIG1pbjtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2ZsdXNoQnVmZmVyID0gZnVuY3Rpb24gX2ZsdXNoQnVmZmVyKG91dCwgb2ZmKSB7XG4gIHRoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwgMCwgb3V0LCBvZmYpO1xuICB0aGlzLmJ1ZmZlck9mZiA9IDA7XG4gIHJldHVybiB0aGlzLmJsb2NrU2l6ZTtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZUVuY3J5cHQgPSBmdW5jdGlvbiBfdXBkYXRlRW5jcnlwdChkYXRhKSB7XG4gIHZhciBpbnB1dE9mZiA9IDA7XG4gIHZhciBvdXRwdXRPZmYgPSAwO1xuXG4gIHZhciBjb3VudCA9ICgodGhpcy5idWZmZXJPZmYgKyBkYXRhLmxlbmd0aCkgLyB0aGlzLmJsb2NrU2l6ZSkgfCAwO1xuICB2YXIgb3V0ID0gbmV3IEFycmF5KGNvdW50ICogdGhpcy5ibG9ja1NpemUpO1xuXG4gIGlmICh0aGlzLmJ1ZmZlck9mZiAhPT0gMCkge1xuICAgIGlucHV0T2ZmICs9IHRoaXMuX2J1ZmZlcihkYXRhLCBpbnB1dE9mZik7XG5cbiAgICBpZiAodGhpcy5idWZmZXJPZmYgPT09IHRoaXMuYnVmZmVyLmxlbmd0aClcbiAgICAgIG91dHB1dE9mZiArPSB0aGlzLl9mbHVzaEJ1ZmZlcihvdXQsIG91dHB1dE9mZik7XG4gIH1cblxuICAvLyBXcml0ZSBibG9ja3NcbiAgdmFyIG1heCA9IGRhdGEubGVuZ3RoIC0gKChkYXRhLmxlbmd0aCAtIGlucHV0T2ZmKSAlIHRoaXMuYmxvY2tTaXplKTtcbiAgZm9yICg7IGlucHV0T2ZmIDwgbWF4OyBpbnB1dE9mZiArPSB0aGlzLmJsb2NrU2l6ZSkge1xuICAgIHRoaXMuX3VwZGF0ZShkYXRhLCBpbnB1dE9mZiwgb3V0LCBvdXRwdXRPZmYpO1xuICAgIG91dHB1dE9mZiArPSB0aGlzLmJsb2NrU2l6ZTtcbiAgfVxuXG4gIC8vIFF1ZXVlIHJlc3RcbiAgZm9yICg7IGlucHV0T2ZmIDwgZGF0YS5sZW5ndGg7IGlucHV0T2ZmKyssIHRoaXMuYnVmZmVyT2ZmKyspXG4gICAgdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmZdID0gZGF0YVtpbnB1dE9mZl07XG5cbiAgcmV0dXJuIG91dDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZURlY3J5cHQgPSBmdW5jdGlvbiBfdXBkYXRlRGVjcnlwdChkYXRhKSB7XG4gIHZhciBpbnB1dE9mZiA9IDA7XG4gIHZhciBvdXRwdXRPZmYgPSAwO1xuXG4gIHZhciBjb3VudCA9IE1hdGguY2VpbCgodGhpcy5idWZmZXJPZmYgKyBkYXRhLmxlbmd0aCkgLyB0aGlzLmJsb2NrU2l6ZSkgLSAxO1xuICB2YXIgb3V0ID0gbmV3IEFycmF5KGNvdW50ICogdGhpcy5ibG9ja1NpemUpO1xuXG4gIC8vIFRPRE8oaW5kdXRueSk6IG9wdGltaXplIGl0LCB0aGlzIGlzIGZhciBmcm9tIG9wdGltYWxcbiAgZm9yICg7IGNvdW50ID4gMDsgY291bnQtLSkge1xuICAgIGlucHV0T2ZmICs9IHRoaXMuX2J1ZmZlcihkYXRhLCBpbnB1dE9mZik7XG4gICAgb3V0cHV0T2ZmICs9IHRoaXMuX2ZsdXNoQnVmZmVyKG91dCwgb3V0cHV0T2ZmKTtcbiAgfVxuXG4gIC8vIEJ1ZmZlciByZXN0IG9mIHRoZSBpbnB1dFxuICBpbnB1dE9mZiArPSB0aGlzLl9idWZmZXIoZGF0YSwgaW5wdXRPZmYpO1xuXG4gIHJldHVybiBvdXQ7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLmZpbmFsID0gZnVuY3Rpb24gZmluYWwoYnVmZmVyKSB7XG4gIHZhciBmaXJzdDtcbiAgaWYgKGJ1ZmZlcilcbiAgICBmaXJzdCA9IHRoaXMudXBkYXRlKGJ1ZmZlcik7XG5cbiAgdmFyIGxhc3Q7XG4gIGlmICh0aGlzLnR5cGUgPT09ICdlbmNyeXB0JylcbiAgICBsYXN0ID0gdGhpcy5fZmluYWxFbmNyeXB0KCk7XG4gIGVsc2VcbiAgICBsYXN0ID0gdGhpcy5fZmluYWxEZWNyeXB0KCk7XG5cbiAgaWYgKGZpcnN0KVxuICAgIHJldHVybiBmaXJzdC5jb25jYXQobGFzdCk7XG4gIGVsc2VcbiAgICByZXR1cm4gbGFzdDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3BhZCA9IGZ1bmN0aW9uIF9wYWQoYnVmZmVyLCBvZmYpIHtcbiAgaWYgKG9mZiA9PT0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgd2hpbGUgKG9mZiA8IGJ1ZmZlci5sZW5ndGgpXG4gICAgYnVmZmVyW29mZisrXSA9IDA7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9maW5hbEVuY3J5cHQgPSBmdW5jdGlvbiBfZmluYWxFbmNyeXB0KCkge1xuICBpZiAoIXRoaXMuX3BhZCh0aGlzLmJ1ZmZlciwgdGhpcy5idWZmZXJPZmYpKVxuICAgIHJldHVybiBbXTtcblxuICB2YXIgb3V0ID0gbmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtcbiAgdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLCAwLCBvdXQsIDApO1xuICByZXR1cm4gb3V0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fdW5wYWQgPSBmdW5jdGlvbiBfdW5wYWQoYnVmZmVyKSB7XG4gIHJldHVybiBidWZmZXI7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9maW5hbERlY3J5cHQgPSBmdW5jdGlvbiBfZmluYWxEZWNyeXB0KCkge1xuICBhc3NlcnQuZXF1YWwodGhpcy5idWZmZXJPZmYsIHRoaXMuYmxvY2tTaXplLCAnTm90IGVub3VnaCBkYXRhIHRvIGRlY3J5cHQnKTtcbiAgdmFyIG91dCA9IG5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7XG4gIHRoaXMuX2ZsdXNoQnVmZmVyKG91dCwgMCk7XG5cbiAgcmV0dXJuIHRoaXMuX3VucGFkKG91dCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvY2lwaGVyLmpzXG4vLyBtb2R1bGUgaWQgPSAxNTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///151\n");

/***/ }),
/* 152 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar assert = __webpack_require__(7);\nvar inherits = __webpack_require__(0);\n\nvar des = __webpack_require__(37);\nvar utils = des.utils;\nvar Cipher = des.Cipher;\n\nfunction DESState() {\n  this.tmp = new Array(2);\n  this.keys = null;\n}\n\nfunction DES(options) {\n  Cipher.call(this, options);\n\n  var state = new DESState();\n  this._desState = state;\n\n  this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n  return new DES(options);\n};\n\nvar shiftTable = [\n  1, 1, 2, 2, 2, 2, 2, 2,\n  1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n  state.keys = new Array(16 * 2);\n\n  assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n  var kL = utils.readUInt32BE(key, 0);\n  var kR = utils.readUInt32BE(key, 4);\n\n  utils.pc1(kL, kR, state.tmp, 0);\n  kL = state.tmp[0];\n  kR = state.tmp[1];\n  for (var i = 0; i < state.keys.length; i += 2) {\n    var shift = shiftTable[i >>> 1];\n    kL = utils.r28shl(kL, shift);\n    kR = utils.r28shl(kR, shift);\n    utils.pc2(kL, kR, state.keys, i);\n  }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n  var state = this._desState;\n\n  var l = utils.readUInt32BE(inp, inOff);\n  var r = utils.readUInt32BE(inp, inOff + 4);\n\n  // Initial Permutation\n  utils.ip(l, r, state.tmp, 0);\n  l = state.tmp[0];\n  r = state.tmp[1];\n\n  if (this.type === 'encrypt')\n    this._encrypt(state, l, r, state.tmp, 0);\n  else\n    this._decrypt(state, l, r, state.tmp, 0);\n\n  l = state.tmp[0];\n  r = state.tmp[1];\n\n  utils.writeUInt32BE(out, l, outOff);\n  utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n  var value = buffer.length - off;\n  for (var i = off; i < buffer.length; i++)\n    buffer[i] = value;\n\n  return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n  var pad = buffer[buffer.length - 1];\n  for (var i = buffer.length - pad; i < buffer.length; i++)\n    assert.equal(buffer[i], pad);\n\n  return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n  var l = lStart;\n  var r = rStart;\n\n  // Apply f() x16 times\n  for (var i = 0; i < state.keys.length; i += 2) {\n    var keyL = state.keys[i];\n    var keyR = state.keys[i + 1];\n\n    // f(r, k)\n    utils.expand(r, state.tmp, 0);\n\n    keyL ^= state.tmp[0];\n    keyR ^= state.tmp[1];\n    var s = utils.substitute(keyL, keyR);\n    var f = utils.permute(s);\n\n    var t = r;\n    r = (l ^ f) >>> 0;\n    l = t;\n  }\n\n  // Reverse Initial Permutation\n  utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n  var l = rStart;\n  var r = lStart;\n\n  // Apply f() x16 times\n  for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n    var keyL = state.keys[i];\n    var keyR = state.keys[i + 1];\n\n    // f(r, k)\n    utils.expand(l, state.tmp, 0);\n\n    keyL ^= state.tmp[0];\n    keyR ^= state.tmp[1];\n    var s = utils.substitute(keyL, keyR);\n    var f = utils.permute(s);\n\n    var t = l;\n    l = (r ^ f) >>> 0;\n    r = t;\n  }\n\n  // Reverse Initial Permutation\n  utils.rip(l, r, out, off);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2Rlcy5qcz8yMWNiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBkZXMgPSByZXF1aXJlKCcuLi9kZXMnKTtcbnZhciB1dGlscyA9IGRlcy51dGlscztcbnZhciBDaXBoZXIgPSBkZXMuQ2lwaGVyO1xuXG5mdW5jdGlvbiBERVNTdGF0ZSgpIHtcbiAgdGhpcy50bXAgPSBuZXcgQXJyYXkoMik7XG4gIHRoaXMua2V5cyA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIERFUyhvcHRpb25zKSB7XG4gIENpcGhlci5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHZhciBzdGF0ZSA9IG5ldyBERVNTdGF0ZSgpO1xuICB0aGlzLl9kZXNTdGF0ZSA9IHN0YXRlO1xuXG4gIHRoaXMuZGVyaXZlS2V5cyhzdGF0ZSwgb3B0aW9ucy5rZXkpO1xufVxuaW5oZXJpdHMoREVTLCBDaXBoZXIpO1xubW9kdWxlLmV4cG9ydHMgPSBERVM7XG5cbkRFUy5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUob3B0aW9ucykge1xuICByZXR1cm4gbmV3IERFUyhvcHRpb25zKTtcbn07XG5cbnZhciBzaGlmdFRhYmxlID0gW1xuICAxLCAxLCAyLCAyLCAyLCAyLCAyLCAyLFxuICAxLCAyLCAyLCAyLCAyLCAyLCAyLCAxXG5dO1xuXG5ERVMucHJvdG90eXBlLmRlcml2ZUtleXMgPSBmdW5jdGlvbiBkZXJpdmVLZXlzKHN0YXRlLCBrZXkpIHtcbiAgc3RhdGUua2V5cyA9IG5ldyBBcnJheSgxNiAqIDIpO1xuXG4gIGFzc2VydC5lcXVhbChrZXkubGVuZ3RoLCB0aGlzLmJsb2NrU2l6ZSwgJ0ludmFsaWQga2V5IGxlbmd0aCcpO1xuXG4gIHZhciBrTCA9IHV0aWxzLnJlYWRVSW50MzJCRShrZXksIDApO1xuICB2YXIga1IgPSB1dGlscy5yZWFkVUludDMyQkUoa2V5LCA0KTtcblxuICB1dGlscy5wYzEoa0wsIGtSLCBzdGF0ZS50bXAsIDApO1xuICBrTCA9IHN0YXRlLnRtcFswXTtcbiAga1IgPSBzdGF0ZS50bXBbMV07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGUua2V5cy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBzaGlmdCA9IHNoaWZ0VGFibGVbaSA+Pj4gMV07XG4gICAga0wgPSB1dGlscy5yMjhzaGwoa0wsIHNoaWZ0KTtcbiAgICBrUiA9IHV0aWxzLnIyOHNobChrUiwgc2hpZnQpO1xuICAgIHV0aWxzLnBjMihrTCwga1IsIHN0YXRlLmtleXMsIGkpO1xuICB9XG59O1xuXG5ERVMucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Rlc1N0YXRlO1xuXG4gIHZhciBsID0gdXRpbHMucmVhZFVJbnQzMkJFKGlucCwgaW5PZmYpO1xuICB2YXIgciA9IHV0aWxzLnJlYWRVSW50MzJCRShpbnAsIGluT2ZmICsgNCk7XG5cbiAgLy8gSW5pdGlhbCBQZXJtdXRhdGlvblxuICB1dGlscy5pcChsLCByLCBzdGF0ZS50bXAsIDApO1xuICBsID0gc3RhdGUudG1wWzBdO1xuICByID0gc3RhdGUudG1wWzFdO1xuXG4gIGlmICh0aGlzLnR5cGUgPT09ICdlbmNyeXB0JylcbiAgICB0aGlzLl9lbmNyeXB0KHN0YXRlLCBsLCByLCBzdGF0ZS50bXAsIDApO1xuICBlbHNlXG4gICAgdGhpcy5fZGVjcnlwdChzdGF0ZSwgbCwgciwgc3RhdGUudG1wLCAwKTtcblxuICBsID0gc3RhdGUudG1wWzBdO1xuICByID0gc3RhdGUudG1wWzFdO1xuXG4gIHV0aWxzLndyaXRlVUludDMyQkUob3V0LCBsLCBvdXRPZmYpO1xuICB1dGlscy53cml0ZVVJbnQzMkJFKG91dCwgciwgb3V0T2ZmICsgNCk7XG59O1xuXG5ERVMucHJvdG90eXBlLl9wYWQgPSBmdW5jdGlvbiBfcGFkKGJ1ZmZlciwgb2ZmKSB7XG4gIHZhciB2YWx1ZSA9IGJ1ZmZlci5sZW5ndGggLSBvZmY7XG4gIGZvciAodmFyIGkgPSBvZmY7IGkgPCBidWZmZXIubGVuZ3RoOyBpKyspXG4gICAgYnVmZmVyW2ldID0gdmFsdWU7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5ERVMucHJvdG90eXBlLl91bnBhZCA9IGZ1bmN0aW9uIF91bnBhZChidWZmZXIpIHtcbiAgdmFyIHBhZCA9IGJ1ZmZlcltidWZmZXIubGVuZ3RoIC0gMV07XG4gIGZvciAodmFyIGkgPSBidWZmZXIubGVuZ3RoIC0gcGFkOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSsrKVxuICAgIGFzc2VydC5lcXVhbChidWZmZXJbaV0sIHBhZCk7XG5cbiAgcmV0dXJuIGJ1ZmZlci5zbGljZSgwLCBidWZmZXIubGVuZ3RoIC0gcGFkKTtcbn07XG5cbkRFUy5wcm90b3R5cGUuX2VuY3J5cHQgPSBmdW5jdGlvbiBfZW5jcnlwdChzdGF0ZSwgbFN0YXJ0LCByU3RhcnQsIG91dCwgb2ZmKSB7XG4gIHZhciBsID0gbFN0YXJ0O1xuICB2YXIgciA9IHJTdGFydDtcblxuICAvLyBBcHBseSBmKCkgeDE2IHRpbWVzXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGUua2V5cy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBrZXlMID0gc3RhdGUua2V5c1tpXTtcbiAgICB2YXIga2V5UiA9IHN0YXRlLmtleXNbaSArIDFdO1xuXG4gICAgLy8gZihyLCBrKVxuICAgIHV0aWxzLmV4cGFuZChyLCBzdGF0ZS50bXAsIDApO1xuXG4gICAga2V5TCBePSBzdGF0ZS50bXBbMF07XG4gICAga2V5UiBePSBzdGF0ZS50bXBbMV07XG4gICAgdmFyIHMgPSB1dGlscy5zdWJzdGl0dXRlKGtleUwsIGtleVIpO1xuICAgIHZhciBmID0gdXRpbHMucGVybXV0ZShzKTtcblxuICAgIHZhciB0ID0gcjtcbiAgICByID0gKGwgXiBmKSA+Pj4gMDtcbiAgICBsID0gdDtcbiAgfVxuXG4gIC8vIFJldmVyc2UgSW5pdGlhbCBQZXJtdXRhdGlvblxuICB1dGlscy5yaXAociwgbCwgb3V0LCBvZmYpO1xufTtcblxuREVTLnByb3RvdHlwZS5fZGVjcnlwdCA9IGZ1bmN0aW9uIF9kZWNyeXB0KHN0YXRlLCBsU3RhcnQsIHJTdGFydCwgb3V0LCBvZmYpIHtcbiAgdmFyIGwgPSByU3RhcnQ7XG4gIHZhciByID0gbFN0YXJ0O1xuXG4gIC8vIEFwcGx5IGYoKSB4MTYgdGltZXNcbiAgZm9yICh2YXIgaSA9IHN0YXRlLmtleXMubGVuZ3RoIC0gMjsgaSA+PSAwOyBpIC09IDIpIHtcbiAgICB2YXIga2V5TCA9IHN0YXRlLmtleXNbaV07XG4gICAgdmFyIGtleVIgPSBzdGF0ZS5rZXlzW2kgKyAxXTtcblxuICAgIC8vIGYociwgaylcbiAgICB1dGlscy5leHBhbmQobCwgc3RhdGUudG1wLCAwKTtcblxuICAgIGtleUwgXj0gc3RhdGUudG1wWzBdO1xuICAgIGtleVIgXj0gc3RhdGUudG1wWzFdO1xuICAgIHZhciBzID0gdXRpbHMuc3Vic3RpdHV0ZShrZXlMLCBrZXlSKTtcbiAgICB2YXIgZiA9IHV0aWxzLnBlcm11dGUocyk7XG5cbiAgICB2YXIgdCA9IGw7XG4gICAgbCA9IChyIF4gZikgPj4+IDA7XG4gICAgciA9IHQ7XG4gIH1cblxuICAvLyBSZXZlcnNlIEluaXRpYWwgUGVybXV0YXRpb25cbiAgdXRpbHMucmlwKGwsIHIsIG91dCwgb2ZmKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9kZXMuanNcbi8vIG1vZHVsZSBpZCA9IDE1MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///152\n");

/***/ }),
/* 153 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar assert = __webpack_require__(7);\nvar inherits = __webpack_require__(0);\n\nvar proto = {};\n\nfunction CBCState(iv) {\n  assert.equal(iv.length, 8, 'Invalid IV length');\n\n  this.iv = new Array(8);\n  for (var i = 0; i < this.iv.length; i++)\n    this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n  function CBC(options) {\n    Base.call(this, options);\n    this._cbcInit();\n  }\n  inherits(CBC, Base);\n\n  var keys = Object.keys(proto);\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    CBC.prototype[key] = proto[key];\n  }\n\n  CBC.create = function create(options) {\n    return new CBC(options);\n  };\n\n  return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n  var state = new CBCState(this.options.iv);\n  this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n  var state = this._cbcState;\n  var superProto = this.constructor.super_.prototype;\n\n  var iv = state.iv;\n  if (this.type === 'encrypt') {\n    for (var i = 0; i < this.blockSize; i++)\n      iv[i] ^= inp[inOff + i];\n\n    superProto._update.call(this, iv, 0, out, outOff);\n\n    for (var i = 0; i < this.blockSize; i++)\n      iv[i] = out[outOff + i];\n  } else {\n    superProto._update.call(this, inp, inOff, out, outOff);\n\n    for (var i = 0; i < this.blockSize; i++)\n      out[outOff + i] ^= iv[i];\n\n    for (var i = 0; i < this.blockSize; i++)\n      iv[i] = inp[inOff + i];\n  }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2NiYy5qcz85ZjI1Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBwcm90byA9IHt9O1xuXG5mdW5jdGlvbiBDQkNTdGF0ZShpdikge1xuICBhc3NlcnQuZXF1YWwoaXYubGVuZ3RoLCA4LCAnSW52YWxpZCBJViBsZW5ndGgnKTtcblxuICB0aGlzLml2ID0gbmV3IEFycmF5KDgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXYubGVuZ3RoOyBpKyspXG4gICAgdGhpcy5pdltpXSA9IGl2W2ldO1xufVxuXG5mdW5jdGlvbiBpbnN0YW50aWF0ZShCYXNlKSB7XG4gIGZ1bmN0aW9uIENCQyhvcHRpb25zKSB7XG4gICAgQmFzZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICAgIHRoaXMuX2NiY0luaXQoKTtcbiAgfVxuICBpbmhlcml0cyhDQkMsIEJhc2UpO1xuXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMocHJvdG8pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBDQkMucHJvdG90eXBlW2tleV0gPSBwcm90b1trZXldO1xuICB9XG5cbiAgQ0JDLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBDQkMob3B0aW9ucyk7XG4gIH07XG5cbiAgcmV0dXJuIENCQztcbn1cblxuZXhwb3J0cy5pbnN0YW50aWF0ZSA9IGluc3RhbnRpYXRlO1xuXG5wcm90by5fY2JjSW5pdCA9IGZ1bmN0aW9uIF9jYmNJbml0KCkge1xuICB2YXIgc3RhdGUgPSBuZXcgQ0JDU3RhdGUodGhpcy5vcHRpb25zLml2KTtcbiAgdGhpcy5fY2JjU3RhdGUgPSBzdGF0ZTtcbn07XG5cbnByb3RvLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2NiY1N0YXRlO1xuICB2YXIgc3VwZXJQcm90byA9IHRoaXMuY29uc3RydWN0b3Iuc3VwZXJfLnByb3RvdHlwZTtcblxuICB2YXIgaXYgPSBzdGF0ZS5pdjtcbiAgaWYgKHRoaXMudHlwZSA9PT0gJ2VuY3J5cHQnKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgaXZbaV0gXj0gaW5wW2luT2ZmICsgaV07XG5cbiAgICBzdXBlclByb3RvLl91cGRhdGUuY2FsbCh0aGlzLCBpdiwgMCwgb3V0LCBvdXRPZmYpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgaXZbaV0gPSBvdXRbb3V0T2ZmICsgaV07XG4gIH0gZWxzZSB7XG4gICAgc3VwZXJQcm90by5fdXBkYXRlLmNhbGwodGhpcywgaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgb3V0W291dE9mZiArIGldIF49IGl2W2ldO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgaXZbaV0gPSBpbnBbaW5PZmYgKyBpXTtcbiAgfVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2NiYy5qc1xuLy8gbW9kdWxlIGlkID0gMTUzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///153\n");

/***/ }),
/* 154 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar assert = __webpack_require__(7);\nvar inherits = __webpack_require__(0);\n\nvar des = __webpack_require__(37);\nvar Cipher = des.Cipher;\nvar DES = des.DES;\n\nfunction EDEState(type, key) {\n  assert.equal(key.length, 24, 'Invalid key length');\n\n  var k1 = key.slice(0, 8);\n  var k2 = key.slice(8, 16);\n  var k3 = key.slice(16, 24);\n\n  if (type === 'encrypt') {\n    this.ciphers = [\n      DES.create({ type: 'encrypt', key: k1 }),\n      DES.create({ type: 'decrypt', key: k2 }),\n      DES.create({ type: 'encrypt', key: k3 })\n    ];\n  } else {\n    this.ciphers = [\n      DES.create({ type: 'decrypt', key: k3 }),\n      DES.create({ type: 'encrypt', key: k2 }),\n      DES.create({ type: 'decrypt', key: k1 })\n    ];\n  }\n}\n\nfunction EDE(options) {\n  Cipher.call(this, options);\n\n  var state = new EDEState(this.type, this.options.key);\n  this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n  return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n  var state = this._edeState;\n\n  state.ciphers[0]._update(inp, inOff, out, outOff);\n  state.ciphers[1]._update(out, outOff, out, outOff);\n  state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2VkZS5qcz82MWUzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBkZXMgPSByZXF1aXJlKCcuLi9kZXMnKTtcbnZhciBDaXBoZXIgPSBkZXMuQ2lwaGVyO1xudmFyIERFUyA9IGRlcy5ERVM7XG5cbmZ1bmN0aW9uIEVERVN0YXRlKHR5cGUsIGtleSkge1xuICBhc3NlcnQuZXF1YWwoa2V5Lmxlbmd0aCwgMjQsICdJbnZhbGlkIGtleSBsZW5ndGgnKTtcblxuICB2YXIgazEgPSBrZXkuc2xpY2UoMCwgOCk7XG4gIHZhciBrMiA9IGtleS5zbGljZSg4LCAxNik7XG4gIHZhciBrMyA9IGtleS5zbGljZSgxNiwgMjQpO1xuXG4gIGlmICh0eXBlID09PSAnZW5jcnlwdCcpIHtcbiAgICB0aGlzLmNpcGhlcnMgPSBbXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2VuY3J5cHQnLCBrZXk6IGsxIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdkZWNyeXB0Jywga2V5OiBrMiB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZW5jcnlwdCcsIGtleTogazMgfSlcbiAgICBdO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuY2lwaGVycyA9IFtcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZGVjcnlwdCcsIGtleTogazMgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2VuY3J5cHQnLCBrZXk6IGsyIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdkZWNyeXB0Jywga2V5OiBrMSB9KVxuICAgIF07XG4gIH1cbn1cblxuZnVuY3Rpb24gRURFKG9wdGlvbnMpIHtcbiAgQ2lwaGVyLmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgdmFyIHN0YXRlID0gbmV3IEVERVN0YXRlKHRoaXMudHlwZSwgdGhpcy5vcHRpb25zLmtleSk7XG4gIHRoaXMuX2VkZVN0YXRlID0gc3RhdGU7XG59XG5pbmhlcml0cyhFREUsIENpcGhlcik7XG5cbm1vZHVsZS5leHBvcnRzID0gRURFO1xuXG5FREUuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBFREUob3B0aW9ucyk7XG59O1xuXG5FREUucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2VkZVN0YXRlO1xuXG4gIHN0YXRlLmNpcGhlcnNbMF0uX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZik7XG4gIHN0YXRlLmNpcGhlcnNbMV0uX3VwZGF0ZShvdXQsIG91dE9mZiwgb3V0LCBvdXRPZmYpO1xuICBzdGF0ZS5jaXBoZXJzWzJdLl91cGRhdGUob3V0LCBvdXRPZmYsIG91dCwgb3V0T2ZmKTtcbn07XG5cbkVERS5wcm90b3R5cGUuX3BhZCA9IERFUy5wcm90b3R5cGUuX3BhZDtcbkVERS5wcm90b3R5cGUuX3VucGFkID0gREVTLnByb3RvdHlwZS5fdW5wYWQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9lZGUuanNcbi8vIG1vZHVsZSBpZCA9IDE1NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///154\n");

/***/ }),
/* 155 */
/***/ (function(module, exports, __webpack_require__) {

eval("var MODES = __webpack_require__(39)\nvar AuthCipher = __webpack_require__(68)\nvar Buffer = __webpack_require__(1).Buffer\nvar StreamCipher = __webpack_require__(69)\nvar Transform = __webpack_require__(11)\nvar aes = __webpack_require__(24)\nvar ebtk = __webpack_require__(25)\nvar inherits = __webpack_require__(0)\n\nfunction Cipher (mode, key, iv) {\n  Transform.call(this)\n\n  this._cache = new Splitter()\n  this._cipher = new aes.AES(key)\n  this._prev = Buffer.from(iv)\n  this._mode = mode\n  this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n  this._cache.add(data)\n  var chunk\n  var thing\n  var out = []\n\n  while ((chunk = this._cache.get())) {\n    thing = this._mode.encrypt(this, chunk)\n    out.push(thing)\n  }\n\n  return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n  var chunk = this._cache.flush()\n  if (this._autopadding) {\n    chunk = this._mode.encrypt(this, chunk)\n    this._cipher.scrub()\n    return chunk\n  }\n\n  if (!chunk.equals(PADDING)) {\n    this._cipher.scrub()\n    throw new Error('data not multiple of block length')\n  }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n  this._autopadding = !!setTo\n  return this\n}\n\nfunction Splitter () {\n  this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n  this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n  if (this.cache.length > 15) {\n    var out = this.cache.slice(0, 16)\n    this.cache = this.cache.slice(16)\n    return out\n  }\n  return null\n}\n\nSplitter.prototype.flush = function () {\n  var len = 16 - this.cache.length\n  var padBuff = Buffer.allocUnsafe(len)\n\n  var i = -1\n  while (++i < len) {\n    padBuff.writeUInt8(len, i)\n  }\n\n  return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  if (typeof password === 'string') password = Buffer.from(password)\n  if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n  if (typeof iv === 'string') iv = Buffer.from(iv)\n  if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n  if (config.type === 'stream') {\n    return new StreamCipher(config.module, password, iv)\n  } else if (config.type === 'auth') {\n    return new AuthCipher(config.module, password, iv)\n  }\n\n  return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  var keys = ebtk(password, false, config.key, config.iv)\n  return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2VuY3J5cHRlci5qcz82ZDI0Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBNT0RFUyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIEF1dGhDaXBoZXIgPSByZXF1aXJlKCcuL2F1dGhDaXBoZXInKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgU3RyZWFtQ2lwaGVyID0gcmVxdWlyZSgnLi9zdHJlYW1DaXBoZXInKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgZWJ0ayA9IHJlcXVpcmUoJ2V2cF9ieXRlc3Rva2V5JylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcblxuZnVuY3Rpb24gQ2lwaGVyIChtb2RlLCBrZXksIGl2KSB7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG5cbiAgdGhpcy5fY2FjaGUgPSBuZXcgU3BsaXR0ZXIoKVxuICB0aGlzLl9jaXBoZXIgPSBuZXcgYWVzLkFFUyhrZXkpXG4gIHRoaXMuX3ByZXYgPSBCdWZmZXIuZnJvbShpdilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5cbmluaGVyaXRzKENpcGhlciwgVHJhbnNmb3JtKVxuXG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9jYWNoZS5hZGQoZGF0YSlcbiAgdmFyIGNodW5rXG4gIHZhciB0aGluZ1xuICB2YXIgb3V0ID0gW11cblxuICB3aGlsZSAoKGNodW5rID0gdGhpcy5fY2FjaGUuZ2V0KCkpKSB7XG4gICAgdGhpbmcgPSB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcywgY2h1bmspXG4gICAgb3V0LnB1c2godGhpbmcpXG4gIH1cblxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG5cbnZhciBQQURESU5HID0gQnVmZmVyLmFsbG9jKDE2LCAweDEwKVxuXG5DaXBoZXIucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNodW5rID0gdGhpcy5fY2FjaGUuZmx1c2goKVxuICBpZiAodGhpcy5fYXV0b3BhZGRpbmcpIHtcbiAgICBjaHVuayA9IHRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLCBjaHVuaylcbiAgICB0aGlzLl9jaXBoZXIuc2NydWIoKVxuICAgIHJldHVybiBjaHVua1xuICB9XG5cbiAgaWYgKCFjaHVuay5lcXVhbHMoUEFERElORykpIHtcbiAgICB0aGlzLl9jaXBoZXIuc2NydWIoKVxuICAgIHRocm93IG5ldyBFcnJvcignZGF0YSBub3QgbXVsdGlwbGUgb2YgYmxvY2sgbGVuZ3RoJylcbiAgfVxufVxuXG5DaXBoZXIucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nID0gZnVuY3Rpb24gKHNldFRvKSB7XG4gIHRoaXMuX2F1dG9wYWRkaW5nID0gISFzZXRUb1xuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiBTcGxpdHRlciAoKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBkYXRhXSlcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoID4gMTUpIHtcbiAgICB2YXIgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICByZXR1cm4gb3V0XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbGVuID0gMTYgLSB0aGlzLmNhY2hlLmxlbmd0aFxuICB2YXIgcGFkQnVmZiA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW4pXG5cbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgcGFkQnVmZi53cml0ZVVJbnQ4KGxlbiwgaSlcbiAgfVxuXG4gIHJldHVybiBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBwYWRCdWZmXSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IE1PREVTW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuXG4gIGlmICh0eXBlb2YgcGFzc3dvcmQgPT09ICdzdHJpbmcnKSBwYXNzd29yZCA9IEJ1ZmZlci5mcm9tKHBhc3N3b3JkKVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBrZXkgbGVuZ3RoICcgKyBwYXNzd29yZC5sZW5ndGgpXG5cbiAgaWYgKHR5cGVvZiBpdiA9PT0gJ3N0cmluZycpIGl2ID0gQnVmZmVyLmZyb20oaXYpXG4gIGlmIChjb25maWcubW9kZSAhPT0gJ0dDTScgJiYgaXYubGVuZ3RoICE9PSBjb25maWcuaXYpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG5cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKGNvbmZpZy5tb2R1bGUsIHBhc3N3b3JkLCBpdilcbiAgfSBlbHNlIGlmIChjb25maWcudHlwZSA9PT0gJ2F1dGgnKSB7XG4gICAgcmV0dXJuIG5ldyBBdXRoQ2lwaGVyKGNvbmZpZy5tb2R1bGUsIHBhc3N3b3JkLCBpdilcbiAgfVxuXG4gIHJldHVybiBuZXcgQ2lwaGVyKGNvbmZpZy5tb2R1bGUsIHBhc3N3b3JkLCBpdilcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgdmFyIGNvbmZpZyA9IE1PREVTW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuXG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cblxuZXhwb3J0cy5jcmVhdGVDaXBoZXJpdiA9IGNyZWF0ZUNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGNyZWF0ZUNpcGhlclxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvZW5jcnlwdGVyLmpzXG4vLyBtb2R1bGUgaWQgPSAxNTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///155\n");

/***/ }),
/* 156 */
/***/ (function(module, exports) {

eval("exports.encrypt = function (self, block) {\n  return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n  return self._cipher.decryptBlock(block)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2VjYi5qcz81M2FjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBibG9jaykge1xuICByZXR1cm4gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhibG9jaylcbn1cblxuZXhwb3J0cy5kZWNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGJsb2NrKSB7XG4gIHJldHVybiBzZWxmLl9jaXBoZXIuZGVjcnlwdEJsb2NrKGJsb2NrKVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvZWNiLmpzXG4vLyBtb2R1bGUgaWQgPSAxNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///156\n");

/***/ }),
/* 157 */
/***/ (function(module, exports, __webpack_require__) {

eval("var xor = __webpack_require__(17)\n\nexports.encrypt = function (self, block) {\n  var data = xor(block, self._prev)\n\n  self._prev = self._cipher.encryptBlock(data)\n  return self._prev\n}\n\nexports.decrypt = function (self, block) {\n  var pad = self._prev\n\n  self._prev = block\n  var out = self._cipher.decryptBlock(block)\n\n  return xor(out, pad)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NiYy5qcz85NTQ0Il0sInNvdXJjZXNDb250ZW50IjpbInZhciB4b3IgPSByZXF1aXJlKCdidWZmZXIteG9yJylcblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGJsb2NrKSB7XG4gIHZhciBkYXRhID0geG9yKGJsb2NrLCBzZWxmLl9wcmV2KVxuXG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGRhdGEpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZGVjcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBibG9jaykge1xuICB2YXIgcGFkID0gc2VsZi5fcHJldlxuXG4gIHNlbGYuX3ByZXYgPSBibG9ja1xuICB2YXIgb3V0ID0gc2VsZi5fY2lwaGVyLmRlY3J5cHRCbG9jayhibG9jaylcblxuICByZXR1cm4geG9yKG91dCwgcGFkKVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2JjLmpzXG4vLyBtb2R1bGUgaWQgPSAxNTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///157\n");

/***/ }),
/* 158 */
/***/ (function(module, exports, __webpack_require__) {

eval("var Buffer = __webpack_require__(1).Buffer\nvar xor = __webpack_require__(17)\n\nfunction encryptStart (self, data, decrypt) {\n  var len = data.length\n  var out = xor(data, self._cache)\n  self._cache = self._cache.slice(len)\n  self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n  return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n  var out = Buffer.allocUnsafe(0)\n  var len\n\n  while (data.length) {\n    if (self._cache.length === 0) {\n      self._cache = self._cipher.encryptBlock(self._prev)\n      self._prev = Buffer.allocUnsafe(0)\n    }\n\n    if (self._cache.length <= data.length) {\n      len = self._cache.length\n      out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n      data = data.slice(len)\n    } else {\n      out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n      break\n    }\n  }\n\n  return out\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYi5qcz9mMmFhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxuXG5mdW5jdGlvbiBlbmNyeXB0U3RhcnQgKHNlbGYsIGRhdGEsIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGRhdGEubGVuZ3RoXG4gIHZhciBvdXQgPSB4b3IoZGF0YSwgc2VsZi5fY2FjaGUpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UobGVuKVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldiwgZGVjcnlwdCA/IGRhdGEgOiBvdXRdKVxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBkYXRhLCBkZWNyeXB0KSB7XG4gIHZhciBvdXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbiAgdmFyIGxlblxuXG4gIHdoaWxlIChkYXRhLmxlbmd0aCkge1xuICAgIGlmIChzZWxmLl9jYWNoZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHNlbGYuX2NhY2hlID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgICAgc2VsZi5fcHJldiA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxuICAgIH1cblxuICAgIGlmIChzZWxmLl9jYWNoZS5sZW5ndGggPD0gZGF0YS5sZW5ndGgpIHtcbiAgICAgIGxlbiA9IHNlbGYuX2NhY2hlLmxlbmd0aFxuICAgICAgb3V0ID0gQnVmZmVyLmNvbmNhdChbb3V0LCBlbmNyeXB0U3RhcnQoc2VsZiwgZGF0YS5zbGljZSgwLCBsZW4pLCBkZWNyeXB0KV0pXG4gICAgICBkYXRhID0gZGF0YS5zbGljZShsZW4pXG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCA9IEJ1ZmZlci5jb25jYXQoW291dCwgZW5jcnlwdFN0YXJ0KHNlbGYsIGRhdGEsIGRlY3J5cHQpXSlcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dFxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2ZiLmpzXG4vLyBtb2R1bGUgaWQgPSAxNThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///158\n");

/***/ }),
/* 159 */
/***/ (function(module, exports, __webpack_require__) {

eval("var Buffer = __webpack_require__(1).Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n  var pad = self._cipher.encryptBlock(self._prev)\n  var out = pad[0] ^ byteParam\n\n  self._prev = Buffer.concat([\n    self._prev.slice(1),\n    Buffer.from([decrypt ? byteParam : out])\n  ])\n\n  return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n  var len = chunk.length\n  var out = Buffer.allocUnsafe(len)\n  var i = -1\n\n  while (++i < len) {\n    out[i] = encryptByte(self, chunk[i], decrypt)\n  }\n\n  return out\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTU5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYjguanM/NjdiYyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxuZnVuY3Rpb24gZW5jcnlwdEJ5dGUgKHNlbGYsIGJ5dGVQYXJhbSwgZGVjcnlwdCkge1xuICB2YXIgcGFkID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICB2YXIgb3V0ID0gcGFkWzBdIF4gYnl0ZVBhcmFtXG5cbiAgc2VsZi5fcHJldiA9IEJ1ZmZlci5jb25jYXQoW1xuICAgIHNlbGYuX3ByZXYuc2xpY2UoMSksXG4gICAgQnVmZmVyLmZyb20oW2RlY3J5cHQgPyBieXRlUGFyYW0gOiBvdXRdKVxuICBdKVxuXG4gIHJldHVybiBvdXRcbn1cblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGNodW5rLCBkZWNyeXB0KSB7XG4gIHZhciBsZW4gPSBjaHVuay5sZW5ndGhcbiAgdmFyIG91dCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW4pXG4gIHZhciBpID0gLTFcblxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gZW5jcnlwdEJ5dGUoc2VsZiwgY2h1bmtbaV0sIGRlY3J5cHQpXG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jZmI4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///159\n");

/***/ }),
/* 160 */
/***/ (function(module, exports, __webpack_require__) {

eval("var Buffer = __webpack_require__(1).Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n  var pad\n  var i = -1\n  var len = 8\n  var out = 0\n  var bit, value\n  while (++i < len) {\n    pad = self._cipher.encryptBlock(self._prev)\n    bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n    value = pad[0] ^ bit\n    out += ((value & 0x80) >> (i % 8))\n    self._prev = shiftIn(self._prev, decrypt ? bit : value)\n  }\n  return out\n}\n\nfunction shiftIn (buffer, value) {\n  var len = buffer.length\n  var i = -1\n  var out = Buffer.allocUnsafe(buffer.length)\n  buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n  while (++i < len) {\n    out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n  }\n\n  return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n  var len = chunk.length\n  var out = Buffer.allocUnsafe(len)\n  var i = -1\n\n  while (++i < len) {\n    out[i] = encryptByte(self, chunk[i], decrypt)\n  }\n\n  return out\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYjEuanM/OTM2NCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxuZnVuY3Rpb24gZW5jcnlwdEJ5dGUgKHNlbGYsIGJ5dGVQYXJhbSwgZGVjcnlwdCkge1xuICB2YXIgcGFkXG4gIHZhciBpID0gLTFcbiAgdmFyIGxlbiA9IDhcbiAgdmFyIG91dCA9IDBcbiAgdmFyIGJpdCwgdmFsdWVcbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIHBhZCA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soc2VsZi5fcHJldilcbiAgICBiaXQgPSAoYnl0ZVBhcmFtICYgKDEgPDwgKDcgLSBpKSkpID8gMHg4MCA6IDBcbiAgICB2YWx1ZSA9IHBhZFswXSBeIGJpdFxuICAgIG91dCArPSAoKHZhbHVlICYgMHg4MCkgPj4gKGkgJSA4KSlcbiAgICBzZWxmLl9wcmV2ID0gc2hpZnRJbihzZWxmLl9wcmV2LCBkZWNyeXB0ID8gYml0IDogdmFsdWUpXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiBzaGlmdEluIChidWZmZXIsIHZhbHVlKSB7XG4gIHZhciBsZW4gPSBidWZmZXIubGVuZ3RoXG4gIHZhciBpID0gLTFcbiAgdmFyIG91dCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShidWZmZXIubGVuZ3RoKVxuICBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFtidWZmZXIsIEJ1ZmZlci5mcm9tKFt2YWx1ZV0pXSlcblxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gYnVmZmVyW2ldIDw8IDEgfCBidWZmZXJbaSArIDFdID4+ICg3KVxuICB9XG5cbiAgcmV0dXJuIG91dFxufVxuXG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgY2h1bmssIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGNodW5rLmxlbmd0aFxuICB2YXIgb3V0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKGxlbilcbiAgdmFyIGkgPSAtMVxuXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXRbaV0gPSBlbmNyeXB0Qnl0ZShzZWxmLCBjaHVua1tpXSwgZGVjcnlwdClcbiAgfVxuXG4gIHJldHVybiBvdXRcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYjEuanNcbi8vIG1vZHVsZSBpZCA9IDE2MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///160\n");

/***/ }),
/* 161 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var xor = __webpack_require__(17)\n\nfunction getBlock (self) {\n  self._prev = self._cipher.encryptBlock(self._prev)\n  return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n  while (self._cache.length < chunk.length) {\n    self._cache = Buffer.concat([self._cache, getBlock(self)])\n  }\n\n  var pad = self._cache.slice(0, chunk.length)\n  self._cache = self._cache.slice(chunk.length)\n  return xor(chunk, pad)\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5).Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL29mYi5qcz8xZjVhIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB4b3IgPSByZXF1aXJlKCdidWZmZXIteG9yJylcblxuZnVuY3Rpb24gZ2V0QmxvY2sgKHNlbGYpIHtcbiAgc2VsZi5fcHJldiA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soc2VsZi5fcHJldilcbiAgcmV0dXJuIHNlbGYuX3ByZXZcbn1cblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGNodW5rKSB7XG4gIHdoaWxlIChzZWxmLl9jYWNoZS5sZW5ndGggPCBjaHVuay5sZW5ndGgpIHtcbiAgICBzZWxmLl9jYWNoZSA9IEJ1ZmZlci5jb25jYXQoW3NlbGYuX2NhY2hlLCBnZXRCbG9jayhzZWxmKV0pXG4gIH1cblxuICB2YXIgcGFkID0gc2VsZi5fY2FjaGUuc2xpY2UoMCwgY2h1bmsubGVuZ3RoKVxuICBzZWxmLl9jYWNoZSA9IHNlbGYuX2NhY2hlLnNsaWNlKGNodW5rLmxlbmd0aClcbiAgcmV0dXJuIHhvcihjaHVuaywgcGFkKVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvb2ZiLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///161\n");

/***/ }),
/* 162 */
/***/ (function(module, exports, __webpack_require__) {

eval("var Buffer = __webpack_require__(1).Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n  return [\n    buf.readUInt32BE(0),\n    buf.readUInt32BE(4),\n    buf.readUInt32BE(8),\n    buf.readUInt32BE(12)\n  ]\n}\n\nfunction fromArray (out) {\n  var buf = Buffer.allocUnsafe(16)\n  buf.writeUInt32BE(out[0] >>> 0, 0)\n  buf.writeUInt32BE(out[1] >>> 0, 4)\n  buf.writeUInt32BE(out[2] >>> 0, 8)\n  buf.writeUInt32BE(out[3] >>> 0, 12)\n  return buf\n}\n\nfunction GHASH (key) {\n  this.h = key\n  this.state = Buffer.alloc(16, 0)\n  this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho V盲h盲-Herttua\nGHASH.prototype.ghash = function (block) {\n  var i = -1\n  while (++i < block.length) {\n    this.state[i] ^= block[i]\n  }\n  this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n  var Vi = toArray(this.h)\n  var Zi = [0, 0, 0, 0]\n  var j, xi, lsbVi\n  var i = -1\n  while (++i < 128) {\n    xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n    if (xi) {\n      // Z_i+1 = Z_i ^ V_i\n      Zi[0] ^= Vi[0]\n      Zi[1] ^= Vi[1]\n      Zi[2] ^= Vi[2]\n      Zi[3] ^= Vi[3]\n    }\n\n    // Store the value of LSB(V_i)\n    lsbVi = (Vi[3] & 1) !== 0\n\n    // V_i+1 = V_i >> 1\n    for (j = 3; j > 0; j--) {\n      Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n    }\n    Vi[0] = Vi[0] >>> 1\n\n    // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n    if (lsbVi) {\n      Vi[0] = Vi[0] ^ (0xe1 << 24)\n    }\n  }\n  this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n  this.cache = Buffer.concat([this.cache, buf])\n  var chunk\n  while (this.cache.length >= 16) {\n    chunk = this.cache.slice(0, 16)\n    this.cache = this.cache.slice(16)\n    this.ghash(chunk)\n  }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n  if (this.cache.length) {\n    this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n  }\n\n  this.ghash(fromArray([0, abl, 0, bl]))\n  return this.state\n}\n\nmodule.exports = GHASH\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2doYXNoLmpzPzUwZjEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgWkVST0VTID0gQnVmZmVyLmFsbG9jKDE2LCAwKVxuXG5mdW5jdGlvbiB0b0FycmF5IChidWYpIHtcbiAgcmV0dXJuIFtcbiAgICBidWYucmVhZFVJbnQzMkJFKDApLFxuICAgIGJ1Zi5yZWFkVUludDMyQkUoNCksXG4gICAgYnVmLnJlYWRVSW50MzJCRSg4KSxcbiAgICBidWYucmVhZFVJbnQzMkJFKDEyKVxuICBdXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheSAob3V0KSB7XG4gIHZhciBidWYgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMTYpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFswXSA+Pj4gMCwgMClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdID4+PiAwLCA0KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMl0gPj4+IDAsIDgpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFszXSA+Pj4gMCwgMTIpXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gR0hBU0ggKGtleSkge1xuICB0aGlzLmggPSBrZXlcbiAgdGhpcy5zdGF0ZSA9IEJ1ZmZlci5hbGxvYygxNiwgMClcbiAgdGhpcy5jYWNoZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxufVxuXG4vLyBmcm9tIGh0dHA6Ly9iaXR3aXNlc2hpZnRsZWZ0LmdpdGh1Yi5pby9zamNsL2RvYy9zeW1ib2xzL3NyYy9jb3JlX2djbS5qcy5odG1sXG4vLyBieSBKdWhvIFbDpGjDpC1IZXJ0dHVhXG5HSEFTSC5wcm90b3R5cGUuZ2hhc2ggPSBmdW5jdGlvbiAoYmxvY2spIHtcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgYmxvY2subGVuZ3RoKSB7XG4gICAgdGhpcy5zdGF0ZVtpXSBePSBibG9ja1tpXVxuICB9XG4gIHRoaXMuX211bHRpcGx5KClcbn1cblxuR0hBU0gucHJvdG90eXBlLl9tdWx0aXBseSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIFZpID0gdG9BcnJheSh0aGlzLmgpXG4gIHZhciBaaSA9IFswLCAwLCAwLCAwXVxuICB2YXIgaiwgeGksIGxzYlZpXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IDEyOCkge1xuICAgIHhpID0gKHRoaXMuc3RhdGVbfn4oaSAvIDgpXSAmICgxIDw8ICg3IC0gKGkgJSA4KSkpKSAhPT0gMFxuICAgIGlmICh4aSkge1xuICAgICAgLy8gWl9pKzEgPSBaX2kgXiBWX2lcbiAgICAgIFppWzBdIF49IFZpWzBdXG4gICAgICBaaVsxXSBePSBWaVsxXVxuICAgICAgWmlbMl0gXj0gVmlbMl1cbiAgICAgIFppWzNdIF49IFZpWzNdXG4gICAgfVxuXG4gICAgLy8gU3RvcmUgdGhlIHZhbHVlIG9mIExTQihWX2kpXG4gICAgbHNiVmkgPSAoVmlbM10gJiAxKSAhPT0gMFxuXG4gICAgLy8gVl9pKzEgPSBWX2kgPj4gMVxuICAgIGZvciAoaiA9IDM7IGogPiAwOyBqLS0pIHtcbiAgICAgIFZpW2pdID0gKFZpW2pdID4+PiAxKSB8ICgoVmlbaiAtIDFdICYgMSkgPDwgMzEpXG4gICAgfVxuICAgIFZpWzBdID0gVmlbMF0gPj4+IDFcblxuICAgIC8vIElmIExTQihWX2kpIGlzIDEsIFZfaSsxID0gKFZfaSA+PiAxKSBeIFJcbiAgICBpZiAobHNiVmkpIHtcbiAgICAgIFZpWzBdID0gVmlbMF0gXiAoMHhlMSA8PCAyNClcbiAgICB9XG4gIH1cbiAgdGhpcy5zdGF0ZSA9IGZyb21BcnJheShaaSlcbn1cblxuR0hBU0gucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChidWYpIHtcbiAgdGhpcy5jYWNoZSA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuY2FjaGUsIGJ1Zl0pXG4gIHZhciBjaHVua1xuICB3aGlsZSAodGhpcy5jYWNoZS5sZW5ndGggPj0gMTYpIHtcbiAgICBjaHVuayA9IHRoaXMuY2FjaGUuc2xpY2UoMCwgMTYpXG4gICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGUuc2xpY2UoMTYpXG4gICAgdGhpcy5naGFzaChjaHVuaylcbiAgfVxufVxuXG5HSEFTSC5wcm90b3R5cGUuZmluYWwgPSBmdW5jdGlvbiAoYWJsLCBibCkge1xuICBpZiAodGhpcy5jYWNoZS5sZW5ndGgpIHtcbiAgICB0aGlzLmdoYXNoKEJ1ZmZlci5jb25jYXQoW3RoaXMuY2FjaGUsIFpFUk9FU10sIDE2KSlcbiAgfVxuXG4gIHRoaXMuZ2hhc2goZnJvbUFycmF5KFswLCBhYmwsIDAsIGJsXSkpXG4gIHJldHVybiB0aGlzLnN0YXRlXG59XG5cbm1vZHVsZS5leHBvcnRzID0gR0hBU0hcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2doYXNoLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///162\n");

/***/ }),
/* 163 */
/***/ (function(module, exports, __webpack_require__) {

eval("var AuthCipher = __webpack_require__(68)\nvar Buffer = __webpack_require__(1).Buffer\nvar MODES = __webpack_require__(39)\nvar StreamCipher = __webpack_require__(69)\nvar Transform = __webpack_require__(11)\nvar aes = __webpack_require__(24)\nvar ebtk = __webpack_require__(25)\nvar inherits = __webpack_require__(0)\n\nfunction Decipher (mode, key, iv) {\n  Transform.call(this)\n\n  this._cache = new Splitter()\n  this._last = void 0\n  this._cipher = new aes.AES(key)\n  this._prev = Buffer.from(iv)\n  this._mode = mode\n  this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n  this._cache.add(data)\n  var chunk\n  var thing\n  var out = []\n  while ((chunk = this._cache.get(this._autopadding))) {\n    thing = this._mode.decrypt(this, chunk)\n    out.push(thing)\n  }\n  return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n  var chunk = this._cache.flush()\n  if (this._autopadding) {\n    return unpad(this._mode.decrypt(this, chunk))\n  } else if (chunk) {\n    throw new Error('data not multiple of block length')\n  }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n  this._autopadding = !!setTo\n  return this\n}\n\nfunction Splitter () {\n  this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n  this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n  var out\n  if (autoPadding) {\n    if (this.cache.length > 16) {\n      out = this.cache.slice(0, 16)\n      this.cache = this.cache.slice(16)\n      return out\n    }\n  } else {\n    if (this.cache.length >= 16) {\n      out = this.cache.slice(0, 16)\n      this.cache = this.cache.slice(16)\n      return out\n    }\n  }\n\n  return null\n}\n\nSplitter.prototype.flush = function () {\n  if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n  var padded = last[15]\n  if (padded < 1 || padded > 16) {\n    throw new Error('unable to decrypt data')\n  }\n  var i = -1\n  while (++i < padded) {\n    if (last[(i + (16 - padded))] !== padded) {\n      throw new Error('unable to decrypt data')\n    }\n  }\n  if (padded === 16) return\n\n  return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  if (typeof iv === 'string') iv = Buffer.from(iv)\n  if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n  if (typeof password === 'string') password = Buffer.from(password)\n  if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n  if (config.type === 'stream') {\n    return new StreamCipher(config.module, password, iv, true)\n  } else if (config.type === 'auth') {\n    return new AuthCipher(config.module, password, iv, true)\n  }\n\n  return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n  var config = MODES[suite.toLowerCase()]\n  if (!config) throw new TypeError('invalid suite type')\n\n  var keys = ebtk(password, false, config.key, config.iv)\n  return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2RlY3J5cHRlci5qcz9mYTMwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBBdXRoQ2lwaGVyID0gcmVxdWlyZSgnLi9hdXRoQ2lwaGVyJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIE1PREVTID0gcmVxdWlyZSgnLi9tb2RlcycpXG52YXIgU3RyZWFtQ2lwaGVyID0gcmVxdWlyZSgnLi9zdHJlYW1DaXBoZXInKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgZWJ0ayA9IHJlcXVpcmUoJ2V2cF9ieXRlc3Rva2V5JylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcblxuZnVuY3Rpb24gRGVjaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcblxuICB0aGlzLl9jYWNoZSA9IG5ldyBTcGxpdHRlcigpXG4gIHRoaXMuX2xhc3QgPSB2b2lkIDBcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gQnVmZmVyLmZyb20oaXYpXG4gIHRoaXMuX21vZGUgPSBtb2RlXG4gIHRoaXMuX2F1dG9wYWRkaW5nID0gdHJ1ZVxufVxuXG5pbmhlcml0cyhEZWNpcGhlciwgVHJhbnNmb3JtKVxuXG5EZWNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2NhY2hlLmFkZChkYXRhKVxuICB2YXIgY2h1bmtcbiAgdmFyIHRoaW5nXG4gIHZhciBvdXQgPSBbXVxuICB3aGlsZSAoKGNodW5rID0gdGhpcy5fY2FjaGUuZ2V0KHRoaXMuX2F1dG9wYWRkaW5nKSkpIHtcbiAgICB0aGluZyA9IHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLCBjaHVuaylcbiAgICBvdXQucHVzaCh0aGluZylcbiAgfVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG5cbkRlY2lwaGVyLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBjaHVuayA9IHRoaXMuX2NhY2hlLmZsdXNoKClcbiAgaWYgKHRoaXMuX2F1dG9wYWRkaW5nKSB7XG4gICAgcmV0dXJuIHVucGFkKHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLCBjaHVuaykpXG4gIH0gZWxzZSBpZiAoY2h1bmspIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCcpXG4gIH1cbn1cblxuRGVjaXBoZXIucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nID0gZnVuY3Rpb24gKHNldFRvKSB7XG4gIHRoaXMuX2F1dG9wYWRkaW5nID0gISFzZXRUb1xuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiBTcGxpdHRlciAoKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBkYXRhXSlcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChhdXRvUGFkZGluZykge1xuICB2YXIgb3V0XG4gIGlmIChhdXRvUGFkZGluZykge1xuICAgIGlmICh0aGlzLmNhY2hlLmxlbmd0aCA+IDE2KSB7XG4gICAgICBvdXQgPSB0aGlzLmNhY2hlLnNsaWNlKDAsIDE2KVxuICAgICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGUuc2xpY2UoMTYpXG4gICAgICByZXR1cm4gb3V0XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh0aGlzLmNhY2hlLmxlbmd0aCA+PSAxNikge1xuICAgICAgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgICAgcmV0dXJuIG91dFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoKSByZXR1cm4gdGhpcy5jYWNoZVxufVxuXG5mdW5jdGlvbiB1bnBhZCAobGFzdCkge1xuICB2YXIgcGFkZGVkID0gbGFzdFsxNV1cbiAgaWYgKHBhZGRlZCA8IDEgfHwgcGFkZGVkID4gMTYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuYWJsZSB0byBkZWNyeXB0IGRhdGEnKVxuICB9XG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IHBhZGRlZCkge1xuICAgIGlmIChsYXN0WyhpICsgKDE2IC0gcGFkZGVkKSldICE9PSBwYWRkZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIGRlY3J5cHQgZGF0YScpXG4gICAgfVxuICB9XG4gIGlmIChwYWRkZWQgPT09IDE2KSByZXR1cm5cblxuICByZXR1cm4gbGFzdC5zbGljZSgwLCAxNiAtIHBhZGRlZClcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXJpdiAoc3VpdGUsIHBhc3N3b3JkLCBpdikge1xuICB2YXIgY29uZmlnID0gTU9ERVNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG5cbiAgaWYgKHR5cGVvZiBpdiA9PT0gJ3N0cmluZycpIGl2ID0gQnVmZmVyLmZyb20oaXYpXG4gIGlmIChjb25maWcubW9kZSAhPT0gJ0dDTScgJiYgaXYubGVuZ3RoICE9PSBjb25maWcuaXYpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG5cbiAgaWYgKHR5cGVvZiBwYXNzd29yZCA9PT0gJ3N0cmluZycpIHBhc3N3b3JkID0gQnVmZmVyLmZyb20ocGFzc3dvcmQpXG4gIGlmIChwYXNzd29yZC5sZW5ndGggIT09IGNvbmZpZy5rZXkgLyA4KSB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIGtleSBsZW5ndGggJyArIHBhc3N3b3JkLmxlbmd0aClcblxuICBpZiAoY29uZmlnLnR5cGUgPT09ICdzdHJlYW0nKSB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW1DaXBoZXIoY29uZmlnLm1vZHVsZSwgcGFzc3dvcmQsIGl2LCB0cnVlKVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIoY29uZmlnLm1vZHVsZSwgcGFzc3dvcmQsIGl2LCB0cnVlKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBEZWNpcGhlcihjb25maWcubW9kdWxlLCBwYXNzd29yZCwgaXYpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgdmFyIGNvbmZpZyA9IE1PREVTW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuXG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXJpdiA9IGNyZWF0ZURlY2lwaGVyaXZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2RlY3J5cHRlci5qc1xuLy8gbW9kdWxlIGlkID0gMTYzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///163\n");

/***/ }),
/* 164 */
/***/ (function(module, exports) {

eval("exports['des-ecb'] = {\n  key: 8,\n  iv: 0\n}\nexports['des-cbc'] = exports.des = {\n  key: 8,\n  iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n  key: 24,\n  iv: 8\n}\nexports['des-ede3'] = {\n  key: 24,\n  iv: 0\n}\nexports['des-ede-cbc'] = {\n  key: 16,\n  iv: 8\n}\nexports['des-ede'] = {\n  key: 16,\n  iv: 0\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktZGVzL21vZGVzLmpzPzUwMTYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0c1snZGVzLWVjYiddID0ge1xuICBrZXk6IDgsXG4gIGl2OiAwXG59XG5leHBvcnRzWydkZXMtY2JjJ10gPSBleHBvcnRzLmRlcyA9IHtcbiAga2V5OiA4LFxuICBpdjogOFxufVxuZXhwb3J0c1snZGVzLWVkZTMtY2JjJ10gPSBleHBvcnRzLmRlczMgPSB7XG4gIGtleTogMjQsXG4gIGl2OiA4XG59XG5leHBvcnRzWydkZXMtZWRlMyddID0ge1xuICBrZXk6IDI0LFxuICBpdjogMFxufVxuZXhwb3J0c1snZGVzLWVkZS1jYmMnXSA9IHtcbiAga2V5OiAxNixcbiAgaXY6IDhcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUnXSA9IHtcbiAga2V5OiAxNixcbiAgaXY6IDBcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktZGVzL21vZGVzLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///164\n");

/***/ }),
/* 165 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var generatePrime = __webpack_require__(70)\nvar primes = __webpack_require__(169)\n\nvar DH = __webpack_require__(170)\n\nfunction getDiffieHellman (mod) {\n  var prime = new Buffer(primes[mod].prime, 'hex')\n  var gen = new Buffer(primes[mod].gen, 'hex')\n\n  return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n  'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n  if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n    return createDiffieHellman(prime, 'binary', enc, generator)\n  }\n\n  enc = enc || 'binary'\n  genc = genc || 'binary'\n  generator = generator || new Buffer([2])\n\n  if (!Buffer.isBuffer(generator)) {\n    generator = new Buffer(generator, genc)\n  }\n\n  if (typeof prime === 'number') {\n    return new DH(generatePrime(prime, generator), generator, true)\n  }\n\n  if (!Buffer.isBuffer(prime)) {\n    prime = new Buffer(prime, enc)\n  }\n\n  return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5).Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2Jyb3dzZXIuanM/M2MxYiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2VuZXJhdGVQcmltZSA9IHJlcXVpcmUoJy4vbGliL2dlbmVyYXRlUHJpbWUnKVxudmFyIHByaW1lcyA9IHJlcXVpcmUoJy4vbGliL3ByaW1lcy5qc29uJylcblxudmFyIERIID0gcmVxdWlyZSgnLi9saWIvZGgnKVxuXG5mdW5jdGlvbiBnZXREaWZmaWVIZWxsbWFuIChtb2QpIHtcbiAgdmFyIHByaW1lID0gbmV3IEJ1ZmZlcihwcmltZXNbbW9kXS5wcmltZSwgJ2hleCcpXG4gIHZhciBnZW4gPSBuZXcgQnVmZmVyKHByaW1lc1ttb2RdLmdlbiwgJ2hleCcpXG5cbiAgcmV0dXJuIG5ldyBESChwcmltZSwgZ2VuKVxufVxuXG52YXIgRU5DT0RJTkdTID0ge1xuICAnYmluYXJ5JzogdHJ1ZSwgJ2hleCc6IHRydWUsICdiYXNlNjQnOiB0cnVlXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURpZmZpZUhlbGxtYW4gKHByaW1lLCBlbmMsIGdlbmVyYXRvciwgZ2VuYykge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGVuYykgfHwgRU5DT0RJTkdTW2VuY10gPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBjcmVhdGVEaWZmaWVIZWxsbWFuKHByaW1lLCAnYmluYXJ5JywgZW5jLCBnZW5lcmF0b3IpXG4gIH1cblxuICBlbmMgPSBlbmMgfHwgJ2JpbmFyeSdcbiAgZ2VuYyA9IGdlbmMgfHwgJ2JpbmFyeSdcbiAgZ2VuZXJhdG9yID0gZ2VuZXJhdG9yIHx8IG5ldyBCdWZmZXIoWzJdKVxuXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGdlbmVyYXRvcikpIHtcbiAgICBnZW5lcmF0b3IgPSBuZXcgQnVmZmVyKGdlbmVyYXRvciwgZ2VuYylcbiAgfVxuXG4gIGlmICh0eXBlb2YgcHJpbWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIG5ldyBESChnZW5lcmF0ZVByaW1lKHByaW1lLCBnZW5lcmF0b3IpLCBnZW5lcmF0b3IsIHRydWUpXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwcmltZSkpIHtcbiAgICBwcmltZSA9IG5ldyBCdWZmZXIocHJpbWUsIGVuYylcbiAgfVxuXG4gIHJldHVybiBuZXcgREgocHJpbWUsIGdlbmVyYXRvciwgdHJ1ZSlcbn1cblxuZXhwb3J0cy5EaWZmaWVIZWxsbWFuR3JvdXAgPSBleHBvcnRzLmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cCA9IGV4cG9ydHMuZ2V0RGlmZmllSGVsbG1hbiA9IGdldERpZmZpZUhlbGxtYW5cbmV4cG9ydHMuY3JlYXRlRGlmZmllSGVsbG1hbiA9IGV4cG9ydHMuRGlmZmllSGVsbG1hbiA9IGNyZWF0ZURpZmZpZUhlbGxtYW5cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2Jyb3dzZXIuanNcbi8vIG1vZHVsZSBpZCA9IDE2NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///165\n");

/***/ }),
/* 166 */
/***/ (function(module, exports) {

eval("module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL21vZHVsZS5qcz9jM2MyIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obW9kdWxlKSB7XHJcblx0aWYoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcclxuXHRcdG1vZHVsZS5kZXByZWNhdGUgPSBmdW5jdGlvbigpIHt9O1xyXG5cdFx0bW9kdWxlLnBhdGhzID0gW107XHJcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcclxuXHRcdGlmKCFtb2R1bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xyXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xyXG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxyXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcclxuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XHJcblx0fVxyXG5cdHJldHVybiBtb2R1bGU7XHJcbn07XHJcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vICh3ZWJwYWNrKS9idWlsZGluL21vZHVsZS5qc1xuLy8gbW9kdWxlIGlkID0gMTY2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///166\n");

/***/ }),
/* 167 */
/***/ (function(module, exports) {

eval("/* (ignored) *///# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL2J1ZmZlciAoaWdub3JlZCk/MTM3MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiAoaWdub3JlZCkgKi9cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBidWZmZXIgKGlnbm9yZWQpXG4vLyBtb2R1bGUgaWQgPSAxNjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///167\n");

/***/ }),
/* 168 */
/***/ (function(module, exports) {

eval("/* (ignored) *///# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL2NyeXB0byAoaWdub3JlZCk/NDFhZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiAoaWdub3JlZCkgKi9cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBjcnlwdG8gKGlnbm9yZWQpXG4vLyBtb2R1bGUgaWQgPSAxNjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///168\n");

/***/ }),
/* 169 */
/***/ (function(module, exports) {

eval("module.exports = {\"modp1\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\"},\"modp2\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\"},\"modp5\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\"},\"modp14\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\"},\"modp15\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\"},\"modp16\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\"},\"modp17\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\"},\"modp18\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\"}}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTY5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2xpYi9wcmltZXMuanNvbj9lMTU4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge1wibW9kcDFcIjp7XCJnZW5cIjpcIjAyXCIsXCJwcmltZVwiOlwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzYTM2MjBmZmZmZmZmZmZmZmZmZmZmXCJ9LFwibW9kcDJcIjp7XCJnZW5cIjpcIjAyXCIsXCJwcmltZVwiOlwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTY1MzgxZmZmZmZmZmZmZmZmZmZmZlwifSxcIm1vZHA1XCI6e1wiZ2VuXCI6XCIwMlwiLFwicHJpbWVcIjpcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMjM3MzI3ZmZmZmZmZmZmZmZmZmZmZlwifSxcIm1vZHAxNFwiOntcImdlblwiOlwiMDJcIixcInByaW1lXCI6XCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWNhYTY4ZmZmZmZmZmZmZmZmZmZmZlwifSxcIm1vZHAxNVwiOntcImdlblwiOlwiMDJcIixcInByaW1lXCI6XCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTNhZDJjYWZmZmZmZmZmZmZmZmZmZmZcIn0sXCJtb2RwMTZcIjp7XCJnZW5cIjpcIjAyXCIsXCJwcmltZVwiOlwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDYzMTk5ZmZmZmZmZmZmZmZmZmZmZlwifSxcIm1vZHAxN1wiOntcImdlblwiOlwiMDJcIixcInByaW1lXCI6XCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzExNzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZmYjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQwMzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMxM2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGNjNDAyNGZmZmZmZmZmZmZmZmZmZmZcIn0sXCJtb2RwMThcIjp7XCJnZW5cIjpcIjAyXCIsXCJwcmltZVwiOlwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDI4NDkyMzZjM2ZhYjRkMjdjNzAyNmMxZDRkY2IyNjAyNjQ2ZGVjOTc1MWU3NjNkYmEzN2JkZjhmZjk0MDZhZDllNTMwZWU1ZGIzODJmNDEzMDAxYWViMDZhNTNlZDkwMjdkODMxMTc5NzI3YjA4NjVhODkxOGRhM2VkYmViY2Y5YjE0ZWQ0NGNlNmNiYWNlZDRiYjFiZGI3ZjE0NDdlNmNjMjU0YjMzMjA1MTUxMmJkN2FmNDI2ZmI4ZjQwMTM3OGNkMmJmNTk4M2NhMDFjNjRiOTJlY2YwMzJlYTE1ZDE3MjFkMDNmNDgyZDdjZTZlNzRmZWY2ZDU1ZTcwMmY0Njk4MGM4MmI1YTg0MDMxOTAwYjFjOWU1OWU3Yzk3ZmJlYzdlOGYzMjNhOTdhN2UzNmNjODhiZTBmMWQ0NWI3ZmY1ODVhYzU0YmQ0MDdiMjJiNDE1NGFhY2M4ZjZkN2ViZjQ4ZTFkODE0Y2M1ZWQyMGY4MDM3ZTBhNzk3MTVlZWYyOWJlMzI4MDZhMWQ1OGJiN2M1ZGE3NmY1NTBhYTNkOGExZmJmZjBlYjE5Y2NiMWEzMTNkNTVjZGE1NmM5ZWMyZWYyOTYzMjM4N2ZlOGQ3NmUzYzA0NjgwNDNlOGY2NjNmNDg2MGVlMTJiZjJkNWIwYjc0NzRkNmU2OTRmOTFlNmRiZTExNTk3NGEzOTI2ZjEyZmVlNWU0Mzg3NzdjYjZhOTMyZGY4Y2Q4YmVjNGQwNzNiOTMxYmEzYmM4MzJiNjhkOWRkMzAwNzQxZmE3YmY4YWZjNDdlZDI1NzZmNjkzNmJhNDI0NjYzYWFiNjM5YzVhZTRmNTY4MzQyM2I0NzQyYmYxYzk3ODIzOGYxNmNiZTM5ZDY1MmRlM2ZkYjhiZWZjODQ4YWQ5MjIyMjJlMDRhNDAzN2MwNzEzZWI1N2E4MWEyM2YwYzczNDczZmM2NDZjZWEzMDZiNGJjYmM4ODYyZjgzODVkZGZhOWQ0YjdmYTJjMDg3ZTg3OTY4MzMwM2VkNWJkZDNhMDYyYjNjZjViM2EyNzhhNjZkMmExM2Y4M2Y0NGY4MmRkZjMxMGVlMDc0YWI2YTM2NDU5N2U4OTlhMDI1NWRjMTY0ZjMxY2M1MDg0Njg1MWRmOWFiNDgxOTVkZWQ3ZWExYjFkNTEwYmQ3ZWU3NGQ3M2ZhZjM2YmMzMWVjZmEyNjgzNTkwNDZmNGViODc5ZjkyNDAwOTQzOGI0ODFjNmNkNzg4OWEwMDJlZDVlZTM4MmJjOTE5MGRhNmZjMDI2ZTQ3OTU1OGU0NDc1Njc3ZTlhYTllMzA1MGUyNzY1Njk0ZGZjODFmNTZlODgwYjk2ZTcxNjBjOTgwZGQ5OGVkZDNkZmZmZmZmZmZmZmZmZmZmZmZcIn19XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbGliL3ByaW1lcy5qc29uXG4vLyBtb2R1bGUgaWQgPSAxNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///169\n");

/***/ }),
/* 170 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var BN = __webpack_require__(4);\nvar MillerRabin = __webpack_require__(71);\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = __webpack_require__(70);\nvar randomBytes = __webpack_require__(13);\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n  enc = enc || 'utf8';\n  if (!Buffer.isBuffer(pub)) {\n    pub = new Buffer(pub, enc);\n  }\n  this._pub = new BN(pub);\n  return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n  enc = enc || 'utf8';\n  if (!Buffer.isBuffer(priv)) {\n    priv = new Buffer(priv, enc);\n  }\n  this._priv = new BN(priv);\n  return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n  var gen = generator.toString('hex');\n  var hex = [gen, prime.toString(16)].join('_');\n  if (hex in primeCache) {\n    return primeCache[hex];\n  }\n  var error = 0;\n\n  if (prime.isEven() ||\n    !primes.simpleSieve ||\n    !primes.fermatTest(prime) ||\n    !millerRabin.test(prime)) {\n    //not a prime so +1\n    error += 1;\n\n    if (gen === '02' || gen === '05') {\n      // we'd be able to check the generator\n      // it would fail so +8\n      error += 8;\n    } else {\n      //we wouldn't be able to test the generator\n      // so +4\n      error += 4;\n    }\n    primeCache[hex] = error;\n    return error;\n  }\n  if (!millerRabin.test(prime.shrn(1))) {\n    //not a safe prime\n    error += 2;\n  }\n  var rem;\n  switch (gen) {\n    case '02':\n      if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n        // unsuidable generator\n        error += 8;\n      }\n      break;\n    case '05':\n      rem = prime.mod(TEN);\n      if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n        // prime mod 10 needs to equal 3 or 7\n        error += 8;\n      }\n      break;\n    default:\n      error += 4;\n  }\n  primeCache[hex] = error;\n  return error;\n}\n\nfunction DH(prime, generator, malleable) {\n  this.setGenerator(generator);\n  this.__prime = new BN(prime);\n  this._prime = BN.mont(this.__prime);\n  this._primeLen = prime.length;\n  this._pub = undefined;\n  this._priv = undefined;\n  this._primeCode = undefined;\n  if (malleable) {\n    this.setPublicKey = setPublicKey;\n    this.setPrivateKey = setPrivateKey;\n  } else {\n    this._primeCode = 8;\n  }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n  enumerable: true,\n  get: function () {\n    if (typeof this._primeCode !== 'number') {\n      this._primeCode = checkPrime(this.__prime, this.__gen);\n    }\n    return this._primeCode;\n  }\n});\nDH.prototype.generateKeys = function () {\n  if (!this._priv) {\n    this._priv = new BN(randomBytes(this._primeLen));\n  }\n  this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n  return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n  other = new BN(other);\n  other = other.toRed(this._prime);\n  var secret = other.redPow(this._priv).fromRed();\n  var out = new Buffer(secret.toArray());\n  var prime = this.getPrime();\n  if (out.length < prime.length) {\n    var front = new Buffer(prime.length - out.length);\n    front.fill(0);\n    out = Buffer.concat([front, out]);\n  }\n  return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n  return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n  return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n  return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n  return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n  enc = enc || 'utf8';\n  if (!Buffer.isBuffer(gen)) {\n    gen = new Buffer(gen, enc);\n  }\n  this.__gen = gen;\n  this._gen = new BN(gen);\n  return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n  var buf = new Buffer(bn.toArray());\n  if (!enc) {\n    return buf;\n  } else {\n    return buf.toString(enc);\n  }\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5).Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2xpYi9kaC5qcz82NmRjIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgTWlsbGVyUmFiaW4gPSByZXF1aXJlKCdtaWxsZXItcmFiaW4nKTtcbnZhciBtaWxsZXJSYWJpbiA9IG5ldyBNaWxsZXJSYWJpbigpO1xudmFyIFRXRU5UWUZPVVIgPSBuZXcgQk4oMjQpO1xudmFyIEVMRVZFTiA9IG5ldyBCTigxMSk7XG52YXIgVEVOID0gbmV3IEJOKDEwKTtcbnZhciBUSFJFRSA9IG5ldyBCTigzKTtcbnZhciBTRVZFTiA9IG5ldyBCTig3KTtcbnZhciBwcmltZXMgPSByZXF1aXJlKCcuL2dlbmVyYXRlUHJpbWUnKTtcbnZhciByYW5kb21CeXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IERIO1xuXG5mdW5jdGlvbiBzZXRQdWJsaWNLZXkocHViLCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4JztcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHViKSkge1xuICAgIHB1YiA9IG5ldyBCdWZmZXIocHViLCBlbmMpO1xuICB9XG4gIHRoaXMuX3B1YiA9IG5ldyBCTihwdWIpO1xuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gc2V0UHJpdmF0ZUtleShwcml2LCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4JztcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpdikpIHtcbiAgICBwcml2ID0gbmV3IEJ1ZmZlcihwcml2LCBlbmMpO1xuICB9XG4gIHRoaXMuX3ByaXYgPSBuZXcgQk4ocHJpdik7XG4gIHJldHVybiB0aGlzO1xufVxuXG52YXIgcHJpbWVDYWNoZSA9IHt9O1xuZnVuY3Rpb24gY2hlY2tQcmltZShwcmltZSwgZ2VuZXJhdG9yKSB7XG4gIHZhciBnZW4gPSBnZW5lcmF0b3IudG9TdHJpbmcoJ2hleCcpO1xuICB2YXIgaGV4ID0gW2dlbiwgcHJpbWUudG9TdHJpbmcoMTYpXS5qb2luKCdfJyk7XG4gIGlmIChoZXggaW4gcHJpbWVDYWNoZSkge1xuICAgIHJldHVybiBwcmltZUNhY2hlW2hleF07XG4gIH1cbiAgdmFyIGVycm9yID0gMDtcblxuICBpZiAocHJpbWUuaXNFdmVuKCkgfHxcbiAgICAhcHJpbWVzLnNpbXBsZVNpZXZlIHx8XG4gICAgIXByaW1lcy5mZXJtYXRUZXN0KHByaW1lKSB8fFxuICAgICFtaWxsZXJSYWJpbi50ZXN0KHByaW1lKSkge1xuICAgIC8vbm90IGEgcHJpbWUgc28gKzFcbiAgICBlcnJvciArPSAxO1xuXG4gICAgaWYgKGdlbiA9PT0gJzAyJyB8fCBnZW4gPT09ICcwNScpIHtcbiAgICAgIC8vIHdlJ2QgYmUgYWJsZSB0byBjaGVjayB0aGUgZ2VuZXJhdG9yXG4gICAgICAvLyBpdCB3b3VsZCBmYWlsIHNvICs4XG4gICAgICBlcnJvciArPSA4O1xuICAgIH0gZWxzZSB7XG4gICAgICAvL3dlIHdvdWxkbid0IGJlIGFibGUgdG8gdGVzdCB0aGUgZ2VuZXJhdG9yXG4gICAgICAvLyBzbyArNFxuICAgICAgZXJyb3IgKz0gNDtcbiAgICB9XG4gICAgcHJpbWVDYWNoZVtoZXhdID0gZXJyb3I7XG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG4gIGlmICghbWlsbGVyUmFiaW4udGVzdChwcmltZS5zaHJuKDEpKSkge1xuICAgIC8vbm90IGEgc2FmZSBwcmltZVxuICAgIGVycm9yICs9IDI7XG4gIH1cbiAgdmFyIHJlbTtcbiAgc3dpdGNoIChnZW4pIHtcbiAgICBjYXNlICcwMic6XG4gICAgICBpZiAocHJpbWUubW9kKFRXRU5UWUZPVVIpLmNtcChFTEVWRU4pKSB7XG4gICAgICAgIC8vIHVuc3VpZGFibGUgZ2VuZXJhdG9yXG4gICAgICAgIGVycm9yICs9IDg7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICcwNSc6XG4gICAgICByZW0gPSBwcmltZS5tb2QoVEVOKTtcbiAgICAgIGlmIChyZW0uY21wKFRIUkVFKSAmJiByZW0uY21wKFNFVkVOKSkge1xuICAgICAgICAvLyBwcmltZSBtb2QgMTAgbmVlZHMgdG8gZXF1YWwgMyBvciA3XG4gICAgICAgIGVycm9yICs9IDg7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgZXJyb3IgKz0gNDtcbiAgfVxuICBwcmltZUNhY2hlW2hleF0gPSBlcnJvcjtcbiAgcmV0dXJuIGVycm9yO1xufVxuXG5mdW5jdGlvbiBESChwcmltZSwgZ2VuZXJhdG9yLCBtYWxsZWFibGUpIHtcbiAgdGhpcy5zZXRHZW5lcmF0b3IoZ2VuZXJhdG9yKTtcbiAgdGhpcy5fX3ByaW1lID0gbmV3IEJOKHByaW1lKTtcbiAgdGhpcy5fcHJpbWUgPSBCTi5tb250KHRoaXMuX19wcmltZSk7XG4gIHRoaXMuX3ByaW1lTGVuID0gcHJpbWUubGVuZ3RoO1xuICB0aGlzLl9wdWIgPSB1bmRlZmluZWQ7XG4gIHRoaXMuX3ByaXYgPSB1bmRlZmluZWQ7XG4gIHRoaXMuX3ByaW1lQ29kZSA9IHVuZGVmaW5lZDtcbiAgaWYgKG1hbGxlYWJsZSkge1xuICAgIHRoaXMuc2V0UHVibGljS2V5ID0gc2V0UHVibGljS2V5O1xuICAgIHRoaXMuc2V0UHJpdmF0ZUtleSA9IHNldFByaXZhdGVLZXk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fcHJpbWVDb2RlID0gODtcbiAgfVxufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KERILnByb3RvdHlwZSwgJ3ZlcmlmeUVycm9yJywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuX3ByaW1lQ29kZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRoaXMuX3ByaW1lQ29kZSA9IGNoZWNrUHJpbWUodGhpcy5fX3ByaW1lLCB0aGlzLl9fZ2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3ByaW1lQ29kZTtcbiAgfVxufSk7XG5ESC5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXRoaXMuX3ByaXYpIHtcbiAgICB0aGlzLl9wcml2ID0gbmV3IEJOKHJhbmRvbUJ5dGVzKHRoaXMuX3ByaW1lTGVuKSk7XG4gIH1cbiAgdGhpcy5fcHViID0gdGhpcy5fZ2VuLnRvUmVkKHRoaXMuX3ByaW1lKS5yZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpO1xuICByZXR1cm4gdGhpcy5nZXRQdWJsaWNLZXkoKTtcbn07XG5cbkRILnByb3RvdHlwZS5jb21wdXRlU2VjcmV0ID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gIG90aGVyID0gbmV3IEJOKG90aGVyKTtcbiAgb3RoZXIgPSBvdGhlci50b1JlZCh0aGlzLl9wcmltZSk7XG4gIHZhciBzZWNyZXQgPSBvdGhlci5yZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpO1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihzZWNyZXQudG9BcnJheSgpKTtcbiAgdmFyIHByaW1lID0gdGhpcy5nZXRQcmltZSgpO1xuICBpZiAob3V0Lmxlbmd0aCA8IHByaW1lLmxlbmd0aCkge1xuICAgIHZhciBmcm9udCA9IG5ldyBCdWZmZXIocHJpbWUubGVuZ3RoIC0gb3V0Lmxlbmd0aCk7XG4gICAgZnJvbnQuZmlsbCgwKTtcbiAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFtmcm9udCwgb3V0XSk7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn07XG5cbkRILnByb3RvdHlwZS5nZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiBnZXRQdWJsaWNLZXkoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9wdWIsIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleSA9IGZ1bmN0aW9uIGdldFByaXZhdGVLZXkoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9wcml2LCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLmdldFByaW1lID0gZnVuY3Rpb24gKGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fX3ByaW1lLCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLmdldEdlbmVyYXRvciA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX2dlbiwgZW5jKTtcbn07XG5cbkRILnByb3RvdHlwZS5zZXRHZW5lcmF0b3IgPSBmdW5jdGlvbiAoZ2VuLCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4JztcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoZ2VuKSkge1xuICAgIGdlbiA9IG5ldyBCdWZmZXIoZ2VuLCBlbmMpO1xuICB9XG4gIHRoaXMuX19nZW4gPSBnZW47XG4gIHRoaXMuX2dlbiA9IG5ldyBCTihnZW4pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIGZvcm1hdFJldHVyblZhbHVlKGJuLCBlbmMpIHtcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoYm4udG9BcnJheSgpKTtcbiAgaWYgKCFlbmMpIHtcbiAgICByZXR1cm4gYnVmO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWYudG9TdHJpbmcoZW5jKTtcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbGliL2RoLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///170\n");

/***/ }),
/* 171 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var createHash = __webpack_require__(15)\nvar stream = __webpack_require__(30)\nvar inherits = __webpack_require__(0)\nvar sign = __webpack_require__(172)\nvar verify = __webpack_require__(208)\n\nvar algorithms = __webpack_require__(60)\nObject.keys(algorithms).forEach(function (key) {\n  algorithms[key].id = new Buffer(algorithms[key].id, 'hex')\n  algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n  stream.Writable.call(this)\n\n  var data = algorithms[algorithm]\n  if (!data) throw new Error('Unknown message digest')\n\n  this._hashType = data.hash\n  this._hash = createHash(data.hash)\n  this._tag = data.id\n  this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n  this._hash.update(data)\n  done()\n}\n\nSign.prototype.update = function update (data, enc) {\n  if (typeof data === 'string') data = new Buffer(data, enc)\n\n  this._hash.update(data)\n  return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n  this.end()\n  var hash = this._hash.digest()\n  var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n  return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n  stream.Writable.call(this)\n\n  var data = algorithms[algorithm]\n  if (!data) throw new Error('Unknown message digest')\n\n  this._hash = createHash(data.hash)\n  this._tag = data.id\n  this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n  this._hash.update(data)\n  done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n  if (typeof data === 'string') data = new Buffer(data, enc)\n\n  this._hash.update(data)\n  return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n  if (typeof sig === 'string') sig = new Buffer(sig, enc)\n\n  this.end()\n  var hash = this._hash.digest()\n  return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n  return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n  return new Verify(algorithm)\n}\n\nmodule.exports = {\n  Sign: createSign,\n  Verify: createVerify,\n  createSign: createSign,\n  createVerify: createVerify\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5).Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9icm93c2VyL2luZGV4LmpzPzI5ZTMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpXG52YXIgc3RyZWFtID0gcmVxdWlyZSgnc3RyZWFtJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBzaWduID0gcmVxdWlyZSgnLi9zaWduJylcbnZhciB2ZXJpZnkgPSByZXF1aXJlKCcuL3ZlcmlmeScpXG5cbnZhciBhbGdvcml0aG1zID0gcmVxdWlyZSgnLi9hbGdvcml0aG1zLmpzb24nKVxuT2JqZWN0LmtleXMoYWxnb3JpdGhtcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGFsZ29yaXRobXNba2V5XS5pZCA9IG5ldyBCdWZmZXIoYWxnb3JpdGhtc1trZXldLmlkLCAnaGV4JylcbiAgYWxnb3JpdGhtc1trZXkudG9Mb3dlckNhc2UoKV0gPSBhbGdvcml0aG1zW2tleV1cbn0pXG5cbmZ1bmN0aW9uIFNpZ24gKGFsZ29yaXRobSkge1xuICBzdHJlYW0uV3JpdGFibGUuY2FsbCh0aGlzKVxuXG4gIHZhciBkYXRhID0gYWxnb3JpdGhtc1thbGdvcml0aG1dXG4gIGlmICghZGF0YSkgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1lc3NhZ2UgZGlnZXN0JylcblxuICB0aGlzLl9oYXNoVHlwZSA9IGRhdGEuaGFzaFxuICB0aGlzLl9oYXNoID0gY3JlYXRlSGFzaChkYXRhLmhhc2gpXG4gIHRoaXMuX3RhZyA9IGRhdGEuaWRcbiAgdGhpcy5fc2lnblR5cGUgPSBkYXRhLnNpZ25cbn1cbmluaGVyaXRzKFNpZ24sIHN0cmVhbS5Xcml0YWJsZSlcblxuU2lnbi5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gX3dyaXRlIChkYXRhLCBfLCBkb25lKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG4gIGRvbmUoKVxufVxuXG5TaWduLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSBkYXRhID0gbmV3IEJ1ZmZlcihkYXRhLCBlbmMpXG5cbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgcmV0dXJuIHRoaXNcbn1cblxuU2lnbi5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ25NZXRob2QgKGtleSwgZW5jKSB7XG4gIHRoaXMuZW5kKClcbiAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoLmRpZ2VzdCgpXG4gIHZhciBzaWcgPSBzaWduKGhhc2gsIGtleSwgdGhpcy5faGFzaFR5cGUsIHRoaXMuX3NpZ25UeXBlLCB0aGlzLl90YWcpXG5cbiAgcmV0dXJuIGVuYyA/IHNpZy50b1N0cmluZyhlbmMpIDogc2lnXG59XG5cbmZ1bmN0aW9uIFZlcmlmeSAoYWxnb3JpdGhtKSB7XG4gIHN0cmVhbS5Xcml0YWJsZS5jYWxsKHRoaXMpXG5cbiAgdmFyIGRhdGEgPSBhbGdvcml0aG1zW2FsZ29yaXRobV1cbiAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGRhdGEuaGFzaClcbiAgdGhpcy5fdGFnID0gZGF0YS5pZFxuICB0aGlzLl9zaWduVHlwZSA9IGRhdGEuc2lnblxufVxuaW5oZXJpdHMoVmVyaWZ5LCBzdHJlYW0uV3JpdGFibGUpXG5cblZlcmlmeS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gX3dyaXRlIChkYXRhLCBfLCBkb25lKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG4gIGRvbmUoKVxufVxuXG5WZXJpZnkucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoZGF0YSwgZW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIGRhdGEgPSBuZXcgQnVmZmVyKGRhdGEsIGVuYylcblxuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxuICByZXR1cm4gdGhpc1xufVxuXG5WZXJpZnkucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeU1ldGhvZCAoa2V5LCBzaWcsIGVuYykge1xuICBpZiAodHlwZW9mIHNpZyA9PT0gJ3N0cmluZycpIHNpZyA9IG5ldyBCdWZmZXIoc2lnLCBlbmMpXG5cbiAgdGhpcy5lbmQoKVxuICB2YXIgaGFzaCA9IHRoaXMuX2hhc2guZGlnZXN0KClcbiAgcmV0dXJuIHZlcmlmeShzaWcsIGhhc2gsIGtleSwgdGhpcy5fc2lnblR5cGUsIHRoaXMuX3RhZylcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2lnbiAoYWxnb3JpdGhtKSB7XG4gIHJldHVybiBuZXcgU2lnbihhbGdvcml0aG0pXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVZlcmlmeSAoYWxnb3JpdGhtKSB7XG4gIHJldHVybiBuZXcgVmVyaWZ5KGFsZ29yaXRobSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFNpZ246IGNyZWF0ZVNpZ24sXG4gIFZlcmlmeTogY3JlYXRlVmVyaWZ5LFxuICBjcmVhdGVTaWduOiBjcmVhdGVTaWduLFxuICBjcmVhdGVWZXJpZnk6IGNyZWF0ZVZlcmlmeVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2Jyb3dzZXIvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE3MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///171\n");

/***/ }),
/* 172 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(Buffer) {// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar createHmac = __webpack_require__(58)\nvar crt = __webpack_require__(40)\nvar EC = __webpack_require__(6).ec\nvar BN = __webpack_require__(4)\nvar parseKeys = __webpack_require__(27)\nvar curves = __webpack_require__(81)\n\nfunction sign (hash, key, hashType, signType, tag) {\n  var priv = parseKeys(key)\n  if (priv.curve) {\n    // rsa keys can be interpreted as ecdsa ones in openssl\n    if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n    return ecSign(hash, priv)\n  } else if (priv.type === 'dsa') {\n    if (signType !== 'dsa') throw new Error('wrong private key type')\n    return dsaSign(hash, priv, hashType)\n  } else {\n    if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n  }\n  hash = Buffer.concat([tag, hash])\n  var len = priv.modulus.byteLength()\n  var pad = [ 0, 1 ]\n  while (hash.length + pad.length + 1 < len) pad.push(0xff)\n  pad.push(0x00)\n  var i = -1\n  while (++i < hash.length) pad.push(hash[i])\n\n  var out = crt(pad, priv)\n  return out\n}\n\nfunction ecSign (hash, priv) {\n  var curveId = curves[priv.curve.join('.')]\n  if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n  var curve = new EC(curveId)\n  var key = curve.keyFromPrivate(priv.privateKey)\n  var out = key.sign(hash)\n\n  return new Buffer(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n  var x = priv.params.priv_key\n  var p = priv.params.p\n  var q = priv.params.q\n  var g = priv.params.g\n  var r = new BN(0)\n  var k\n  var H = bits2int(hash, q).mod(q)\n  var s = false\n  var kv = getKey(x, q, hash, algo)\n  while (s === false) {\n    k = makeKey(q, kv, algo)\n    r = makeR(g, k, p, q)\n    s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n    if (s.cmpn(0) === 0) {\n      s = false\n      r = new BN(0)\n    }\n  }\n  return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n  r = r.toArray()\n  s = s.toArray()\n\n  // Pad values\n  if (r[0] & 0x80) r = [ 0 ].concat(r)\n  if (s[0] & 0x80) s = [ 0 ].concat(s)\n\n  var total = r.length + s.length + 4\n  var res = [ 0x30, total, 0x02, r.length ]\n  res = res.concat(r, [ 0x02, s.length ], s)\n  return new Buffer(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n  x = new Buffer(x.toArray())\n  if (x.length < q.byteLength()) {\n    var zeros = new Buffer(q.byteLength() - x.length)\n    zeros.fill(0)\n    x = Buffer.concat([ zeros, x ])\n  }\n  var hlen = hash.length\n  var hbits = bits2octets(hash, q)\n  var v = new Buffer(hlen)\n  v.fill(1)\n  var k = new Buffer(hlen)\n  k.fill(0)\n  k = createHmac(algo, k).update(v).update(new Buffer([ 0 ])).update(x).update(hbits).digest()\n  v = createHmac(algo, k).update(v).digest()\n  k = createHmac(algo, k).update(v).update(new Buffer([ 1 ])).update(x).update(hbits).digest()\n  v = createHmac(algo, k).update(v).digest()\n  return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n  var bits = new BN(obits)\n  var shift = (obits.length << 3) - q.bitLength()\n  if (shift > 0) bits.ishrn(shift)\n  return bits\n}\n\nfunction bits2octets (bits, q) {\n  bits = bits2int(bits, q)\n  bits = bits.mod(q)\n  var out = new Buffer(bits.toArray())\n  if (out.length < q.byteLength()) {\n    var zeros = new Buffer(q.byteLength() - out.length)\n    zeros.fill(0)\n    out = Buffer.concat([ zeros, out ])\n  }\n  return out\n}\n\nfunction makeKey (q, kv, algo) {\n  var t\n  var k\n\n  do {\n    t = new Buffer(0)\n\n    while (t.length * 8 < q.bitLength()) {\n      kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n      t = Buffer.concat([ t, kv.v ])\n    }\n\n    k = bits2int(t, q)\n    kv.k = createHmac(algo, kv.k).update(kv.v).update(new Buffer([ 0 ])).digest()\n    kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n  } while (k.cmp(q) !== -1)\n\n  return k\n}\n\nfunction makeR (g, k, p, q) {\n  return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5).Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9icm93c2VyL3NpZ24uanM/YTY3ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtdWNoIG9mIHRoaXMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvc2VsZi1zaWduZWQvYmxvYi9naC1wYWdlcy9saWIvcnNhLmpzXG52YXIgY3JlYXRlSG1hYyA9IHJlcXVpcmUoJ2NyZWF0ZS1obWFjJylcbnZhciBjcnQgPSByZXF1aXJlKCdicm93c2VyaWZ5LXJzYScpXG52YXIgRUMgPSByZXF1aXJlKCdlbGxpcHRpYycpLmVjXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgcGFyc2VLZXlzID0gcmVxdWlyZSgncGFyc2UtYXNuMScpXG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi9jdXJ2ZXMuanNvbicpXG5cbmZ1bmN0aW9uIHNpZ24gKGhhc2gsIGtleSwgaGFzaFR5cGUsIHNpZ25UeXBlLCB0YWcpIHtcbiAgdmFyIHByaXYgPSBwYXJzZUtleXMoa2V5KVxuICBpZiAocHJpdi5jdXJ2ZSkge1xuICAgIC8vIHJzYSBrZXlzIGNhbiBiZSBpbnRlcnByZXRlZCBhcyBlY2RzYSBvbmVzIGluIG9wZW5zc2xcbiAgICBpZiAoc2lnblR5cGUgIT09ICdlY2RzYScgJiYgc2lnblR5cGUgIT09ICdlY2RzYS9yc2EnKSB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHByaXZhdGUga2V5IHR5cGUnKVxuICAgIHJldHVybiBlY1NpZ24oaGFzaCwgcHJpdilcbiAgfSBlbHNlIGlmIChwcml2LnR5cGUgPT09ICdkc2EnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZHNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgICByZXR1cm4gZHNhU2lnbihoYXNoLCBwcml2LCBoYXNoVHlwZSlcbiAgfSBlbHNlIHtcbiAgICBpZiAoc2lnblR5cGUgIT09ICdyc2EnICYmIHNpZ25UeXBlICE9PSAnZWNkc2EvcnNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgfVxuICBoYXNoID0gQnVmZmVyLmNvbmNhdChbdGFnLCBoYXNoXSlcbiAgdmFyIGxlbiA9IHByaXYubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgdmFyIHBhZCA9IFsgMCwgMSBdXG4gIHdoaWxlIChoYXNoLmxlbmd0aCArIHBhZC5sZW5ndGggKyAxIDwgbGVuKSBwYWQucHVzaCgweGZmKVxuICBwYWQucHVzaCgweDAwKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBoYXNoLmxlbmd0aCkgcGFkLnB1c2goaGFzaFtpXSlcblxuICB2YXIgb3V0ID0gY3J0KHBhZCwgcHJpdilcbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiBlY1NpZ24gKGhhc2gsIHByaXYpIHtcbiAgdmFyIGN1cnZlSWQgPSBjdXJ2ZXNbcHJpdi5jdXJ2ZS5qb2luKCcuJyldXG4gIGlmICghY3VydmVJZCkgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGN1cnZlICcgKyBwcml2LmN1cnZlLmpvaW4oJy4nKSlcblxuICB2YXIgY3VydmUgPSBuZXcgRUMoY3VydmVJZClcbiAgdmFyIGtleSA9IGN1cnZlLmtleUZyb21Qcml2YXRlKHByaXYucHJpdmF0ZUtleSlcbiAgdmFyIG91dCA9IGtleS5zaWduKGhhc2gpXG5cbiAgcmV0dXJuIG5ldyBCdWZmZXIob3V0LnRvREVSKCkpXG59XG5cbmZ1bmN0aW9uIGRzYVNpZ24gKGhhc2gsIHByaXYsIGFsZ28pIHtcbiAgdmFyIHggPSBwcml2LnBhcmFtcy5wcml2X2tleVxuICB2YXIgcCA9IHByaXYucGFyYW1zLnBcbiAgdmFyIHEgPSBwcml2LnBhcmFtcy5xXG4gIHZhciBnID0gcHJpdi5wYXJhbXMuZ1xuICB2YXIgciA9IG5ldyBCTigwKVxuICB2YXIga1xuICB2YXIgSCA9IGJpdHMyaW50KGhhc2gsIHEpLm1vZChxKVxuICB2YXIgcyA9IGZhbHNlXG4gIHZhciBrdiA9IGdldEtleSh4LCBxLCBoYXNoLCBhbGdvKVxuICB3aGlsZSAocyA9PT0gZmFsc2UpIHtcbiAgICBrID0gbWFrZUtleShxLCBrdiwgYWxnbylcbiAgICByID0gbWFrZVIoZywgaywgcCwgcSlcbiAgICBzID0gay5pbnZtKHEpLmltdWwoSC5hZGQoeC5tdWwocikpKS5tb2QocSlcbiAgICBpZiAocy5jbXBuKDApID09PSAwKSB7XG4gICAgICBzID0gZmFsc2VcbiAgICAgIHIgPSBuZXcgQk4oMClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvREVSKHIsIHMpXG59XG5cbmZ1bmN0aW9uIHRvREVSIChyLCBzKSB7XG4gIHIgPSByLnRvQXJyYXkoKVxuICBzID0gcy50b0FycmF5KClcblxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChyWzBdICYgMHg4MCkgciA9IFsgMCBdLmNvbmNhdChyKVxuICBpZiAoc1swXSAmIDB4ODApIHMgPSBbIDAgXS5jb25jYXQocylcblxuICB2YXIgdG90YWwgPSByLmxlbmd0aCArIHMubGVuZ3RoICsgNFxuICB2YXIgcmVzID0gWyAweDMwLCB0b3RhbCwgMHgwMiwgci5sZW5ndGggXVxuICByZXMgPSByZXMuY29uY2F0KHIsIFsgMHgwMiwgcy5sZW5ndGggXSwgcylcbiAgcmV0dXJuIG5ldyBCdWZmZXIocmVzKVxufVxuXG5mdW5jdGlvbiBnZXRLZXkgKHgsIHEsIGhhc2gsIGFsZ28pIHtcbiAgeCA9IG5ldyBCdWZmZXIoeC50b0FycmF5KCkpXG4gIGlmICh4Lmxlbmd0aCA8IHEuYnl0ZUxlbmd0aCgpKSB7XG4gICAgdmFyIHplcm9zID0gbmV3IEJ1ZmZlcihxLmJ5dGVMZW5ndGgoKSAtIHgubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICB4ID0gQnVmZmVyLmNvbmNhdChbIHplcm9zLCB4IF0pXG4gIH1cbiAgdmFyIGhsZW4gPSBoYXNoLmxlbmd0aFxuICB2YXIgaGJpdHMgPSBiaXRzMm9jdGV0cyhoYXNoLCBxKVxuICB2YXIgdiA9IG5ldyBCdWZmZXIoaGxlbilcbiAgdi5maWxsKDEpXG4gIHZhciBrID0gbmV3IEJ1ZmZlcihobGVuKVxuICBrLmZpbGwoMClcbiAgayA9IGNyZWF0ZUhtYWMoYWxnbywgaykudXBkYXRlKHYpLnVwZGF0ZShuZXcgQnVmZmVyKFsgMCBdKSkudXBkYXRlKHgpLnVwZGF0ZShoYml0cykuZGlnZXN0KClcbiAgdiA9IGNyZWF0ZUhtYWMoYWxnbywgaykudXBkYXRlKHYpLmRpZ2VzdCgpXG4gIGsgPSBjcmVhdGVIbWFjKGFsZ28sIGspLnVwZGF0ZSh2KS51cGRhdGUobmV3IEJ1ZmZlcihbIDEgXSkpLnVwZGF0ZSh4KS51cGRhdGUoaGJpdHMpLmRpZ2VzdCgpXG4gIHYgPSBjcmVhdGVIbWFjKGFsZ28sIGspLnVwZGF0ZSh2KS5kaWdlc3QoKVxuICByZXR1cm4geyBrOiBrLCB2OiB2IH1cbn1cblxuZnVuY3Rpb24gYml0czJpbnQgKG9iaXRzLCBxKSB7XG4gIHZhciBiaXRzID0gbmV3IEJOKG9iaXRzKVxuICB2YXIgc2hpZnQgPSAob2JpdHMubGVuZ3RoIDw8IDMpIC0gcS5iaXRMZW5ndGgoKVxuICBpZiAoc2hpZnQgPiAwKSBiaXRzLmlzaHJuKHNoaWZ0KVxuICByZXR1cm4gYml0c1xufVxuXG5mdW5jdGlvbiBiaXRzMm9jdGV0cyAoYml0cywgcSkge1xuICBiaXRzID0gYml0czJpbnQoYml0cywgcSlcbiAgYml0cyA9IGJpdHMubW9kKHEpXG4gIHZhciBvdXQgPSBuZXcgQnVmZmVyKGJpdHMudG9BcnJheSgpKVxuICBpZiAob3V0Lmxlbmd0aCA8IHEuYnl0ZUxlbmd0aCgpKSB7XG4gICAgdmFyIHplcm9zID0gbmV3IEJ1ZmZlcihxLmJ5dGVMZW5ndGgoKSAtIG91dC5sZW5ndGgpXG4gICAgemVyb3MuZmlsbCgwKVxuICAgIG91dCA9IEJ1ZmZlci5jb25jYXQoWyB6ZXJvcywgb3V0IF0pXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiBtYWtlS2V5IChxLCBrdiwgYWxnbykge1xuICB2YXIgdFxuICB2YXIga1xuXG4gIGRvIHtcbiAgICB0ID0gbmV3IEJ1ZmZlcigwKVxuXG4gICAgd2hpbGUgKHQubGVuZ3RoICogOCA8IHEuYml0TGVuZ3RoKCkpIHtcbiAgICAgIGt2LnYgPSBjcmVhdGVIbWFjKGFsZ28sIGt2LmspLnVwZGF0ZShrdi52KS5kaWdlc3QoKVxuICAgICAgdCA9IEJ1ZmZlci5jb25jYXQoWyB0LCBrdi52IF0pXG4gICAgfVxuXG4gICAgayA9IGJpdHMyaW50KHQsIHEpXG4gICAga3YuayA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaykudXBkYXRlKGt2LnYpLnVwZGF0ZShuZXcgQnVmZmVyKFsgMCBdKSkuZGlnZXN0KClcbiAgICBrdi52ID0gY3JlYXRlSG1hYyhhbGdvLCBrdi5rKS51cGRhdGUoa3YudikuZGlnZXN0KClcbiAgfSB3aGlsZSAoay5jbXAocSkgIT09IC0xKVxuXG4gIHJldHVybiBrXG59XG5cbmZ1bmN0aW9uIG1ha2VSIChnLCBrLCBwLCBxKSB7XG4gIHJldHVybiBnLnRvUmVkKEJOLm1vbnQocCkpLnJlZFBvdyhrKS5mcm9tUmVkKCkubW9kKHEpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2lnblxubW9kdWxlLmV4cG9ydHMuZ2V0S2V5ID0gZ2V0S2V5XG5tb2R1bGUuZXhwb3J0cy5tYWtlS2V5ID0gbWFrZUtleVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2Jyb3dzZXIvc2lnbi5qc1xuLy8gbW9kdWxlIGlkID0gMTcyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///172\n");

/***/ }),
/* 173 */
/***/ (function(module, exports) {

eval("module.exports = {\"_args\":[[\"elliptic@6.4.1\",\"D:\\\\chenJiaojie\\\\ReportDesign\"]],\"_development\":true,\"_from\":\"elliptic@6.4.1\",\"_id\":\"elliptic@6.4.1\",\"_inBundle\":false,\"_integrity\":\"sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==\",\"_location\":\"/elliptic\",\"_phantomChildren\":{},\"_requested\":{\"type\":\"version\",\"registry\":true,\"raw\":\"elliptic@6.4.1\",\"name\":\"elliptic\",\"escapedName\":\"elliptic\",\"rawSpec\":\"6.4.1\",\"saveSpec\":null,\"fetchSpec\":\"6.4.1\"},\"_requiredBy\":[\"/browserify-sign\",\"/create-ecdh\"],\"_resolved\":\"https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz\",\"_spec\":\"6.4.1\",\"_where\":\"D:\\\\chenJiaojie\\\\ReportDesign\",\"author\":{\"name\":\"Fedor Indutny\",\"email\":\"fedor@indutny.com\"},\"bugs\":{\"url\":\"https://github.com/indutny/elliptic/issues\"},\"dependencies\":{\"bn.js\":\"^4.4.0\",\"brorand\":\"^1.0.1\",\"hash.js\":\"^1.0.0\",\"hmac-drbg\":\"^1.0.0\",\"inherits\":\"^2.0.1\",\"minimalistic-assert\":\"^1.0.0\",\"minimalistic-crypto-utils\":\"^1.0.0\"},\"description\":\"EC cryptography\",\"devDependencies\":{\"brfs\":\"^1.4.3\",\"coveralls\":\"^2.11.3\",\"grunt\":\"^0.4.5\",\"grunt-browserify\":\"^5.0.0\",\"grunt-cli\":\"^1.2.0\",\"grunt-contrib-connect\":\"^1.0.0\",\"grunt-contrib-copy\":\"^1.0.0\",\"grunt-contrib-uglify\":\"^1.0.1\",\"grunt-mocha-istanbul\":\"^3.0.1\",\"grunt-saucelabs\":\"^8.6.2\",\"istanbul\":\"^0.4.2\",\"jscs\":\"^2.9.0\",\"jshint\":\"^2.6.0\",\"mocha\":\"^2.1.0\"},\"files\":[\"lib\"],\"homepage\":\"https://github.com/indutny/elliptic\",\"keywords\":[\"EC\",\"Elliptic\",\"curve\",\"Cryptography\"],\"license\":\"MIT\",\"main\":\"lib/elliptic.js\",\"name\":\"elliptic\",\"repository\":{\"type\":\"git\",\"url\":\"git+ssh://git@github.com/indutny/elliptic.git\"},\"scripts\":{\"jscs\":\"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\",\"jshint\":\"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\",\"lint\":\"npm run jscs && npm run jshint\",\"test\":\"npm run lint && npm run unit\",\"unit\":\"istanbul test _mocha --reporter=spec test/index.js\",\"version\":\"grunt dist && git add dist/\"},\"version\":\"6.4.1\"}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTczLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL3BhY2thZ2UuanNvbj8yOThhIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge1wiX2FyZ3NcIjpbW1wiZWxsaXB0aWNANi40LjFcIixcIkQ6XFxcXGNoZW5KaWFvamllXFxcXFJlcG9ydERlc2lnblwiXV0sXCJfZGV2ZWxvcG1lbnRcIjp0cnVlLFwiX2Zyb21cIjpcImVsbGlwdGljQDYuNC4xXCIsXCJfaWRcIjpcImVsbGlwdGljQDYuNC4xXCIsXCJfaW5CdW5kbGVcIjpmYWxzZSxcIl9pbnRlZ3JpdHlcIjpcInNoYTUxMi1Cc1hMejVzcVg4T0hjc2g3Q3FCTXp0eVhBUm1HUTNMV1B0R2pKaTZEaUpIcTVDL3F2aTlQM09xZ3N3S1NEZnRidTgrSW9JL1FEVEFtMmZGblE5U1pTUT09XCIsXCJfbG9jYXRpb25cIjpcIi9lbGxpcHRpY1wiLFwiX3BoYW50b21DaGlsZHJlblwiOnt9LFwiX3JlcXVlc3RlZFwiOntcInR5cGVcIjpcInZlcnNpb25cIixcInJlZ2lzdHJ5XCI6dHJ1ZSxcInJhd1wiOlwiZWxsaXB0aWNANi40LjFcIixcIm5hbWVcIjpcImVsbGlwdGljXCIsXCJlc2NhcGVkTmFtZVwiOlwiZWxsaXB0aWNcIixcInJhd1NwZWNcIjpcIjYuNC4xXCIsXCJzYXZlU3BlY1wiOm51bGwsXCJmZXRjaFNwZWNcIjpcIjYuNC4xXCJ9LFwiX3JlcXVpcmVkQnlcIjpbXCIvYnJvd3NlcmlmeS1zaWduXCIsXCIvY3JlYXRlLWVjZGhcIl0sXCJfcmVzb2x2ZWRcIjpcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VsbGlwdGljLy0vZWxsaXB0aWMtNi40LjEudGd6XCIsXCJfc3BlY1wiOlwiNi40LjFcIixcIl93aGVyZVwiOlwiRDpcXFxcY2hlbkppYW9qaWVcXFxcUmVwb3J0RGVzaWduXCIsXCJhdXRob3JcIjp7XCJuYW1lXCI6XCJGZWRvciBJbmR1dG55XCIsXCJlbWFpbFwiOlwiZmVkb3JAaW5kdXRueS5jb21cIn0sXCJidWdzXCI6e1widXJsXCI6XCJodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9lbGxpcHRpYy9pc3N1ZXNcIn0sXCJkZXBlbmRlbmNpZXNcIjp7XCJibi5qc1wiOlwiXjQuNC4wXCIsXCJicm9yYW5kXCI6XCJeMS4wLjFcIixcImhhc2guanNcIjpcIl4xLjAuMFwiLFwiaG1hYy1kcmJnXCI6XCJeMS4wLjBcIixcImluaGVyaXRzXCI6XCJeMi4wLjFcIixcIm1pbmltYWxpc3RpYy1hc3NlcnRcIjpcIl4xLjAuMFwiLFwibWluaW1hbGlzdGljLWNyeXB0by11dGlsc1wiOlwiXjEuMC4wXCJ9LFwiZGVzY3JpcHRpb25cIjpcIkVDIGNyeXB0b2dyYXBoeVwiLFwiZGV2RGVwZW5kZW5jaWVzXCI6e1wiYnJmc1wiOlwiXjEuNC4zXCIsXCJjb3ZlcmFsbHNcIjpcIl4yLjExLjNcIixcImdydW50XCI6XCJeMC40LjVcIixcImdydW50LWJyb3dzZXJpZnlcIjpcIl41LjAuMFwiLFwiZ3J1bnQtY2xpXCI6XCJeMS4yLjBcIixcImdydW50LWNvbnRyaWItY29ubmVjdFwiOlwiXjEuMC4wXCIsXCJncnVudC1jb250cmliLWNvcHlcIjpcIl4xLjAuMFwiLFwiZ3J1bnQtY29udHJpYi11Z2xpZnlcIjpcIl4xLjAuMVwiLFwiZ3J1bnQtbW9jaGEtaXN0YW5idWxcIjpcIl4zLjAuMVwiLFwiZ3J1bnQtc2F1Y2VsYWJzXCI6XCJeOC42LjJcIixcImlzdGFuYnVsXCI6XCJeMC40LjJcIixcImpzY3NcIjpcIl4yLjkuMFwiLFwianNoaW50XCI6XCJeMi42LjBcIixcIm1vY2hhXCI6XCJeMi4xLjBcIn0sXCJmaWxlc1wiOltcImxpYlwiXSxcImhvbWVwYWdlXCI6XCJodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9lbGxpcHRpY1wiLFwia2V5d29yZHNcIjpbXCJFQ1wiLFwiRWxsaXB0aWNcIixcImN1cnZlXCIsXCJDcnlwdG9ncmFwaHlcIl0sXCJsaWNlbnNlXCI6XCJNSVRcIixcIm1haW5cIjpcImxpYi9lbGxpcHRpYy5qc1wiLFwibmFtZVwiOlwiZWxsaXB0aWNcIixcInJlcG9zaXRvcnlcIjp7XCJ0eXBlXCI6XCJnaXRcIixcInVybFwiOlwiZ2l0K3NzaDovL2dpdEBnaXRodWIuY29tL2luZHV0bnkvZWxsaXB0aWMuZ2l0XCJ9LFwic2NyaXB0c1wiOntcImpzY3NcIjpcImpzY3MgYmVuY2htYXJrcy8qLmpzIGxpYi8qLmpzIGxpYi8qKi8qLmpzIGxpYi8qKi8qKi8qLmpzIHRlc3QvaW5kZXguanNcIixcImpzaGludFwiOlwianNjcyBiZW5jaG1hcmtzLyouanMgbGliLyouanMgbGliLyoqLyouanMgbGliLyoqLyoqLyouanMgdGVzdC9pbmRleC5qc1wiLFwibGludFwiOlwibnBtIHJ1biBqc2NzICYmIG5wbSBydW4ganNoaW50XCIsXCJ0ZXN0XCI6XCJucG0gcnVuIGxpbnQgJiYgbnBtIHJ1biB1bml0XCIsXCJ1bml0XCI6XCJpc3RhbmJ1bCB0ZXN0IF9tb2NoYSAtLXJlcG9ydGVyPXNwZWMgdGVzdC9pbmRleC5qc1wiLFwidmVyc2lvblwiOlwiZ3J1bnQgZGlzdCAmJiBnaXQgYWRkIGRpc3QvXCJ9LFwidmVyc2lvblwiOlwiNi40LjFcIn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9wYWNrYWdlLmpzb25cbi8vIG1vZHVsZSBpZCA9IDE3M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///173\n");

/***/ }),
/* 174 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = exports;\nvar BN = __webpack_require__(4);\nvar minAssert = __webpack_require__(7);\nvar minUtils = __webpack_require__(73);\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w) {\n  var naf = [];\n  var ws = 1 << (w + 1);\n  var k = num.clone();\n  while (k.cmpn(1) >= 0) {\n    var z;\n    if (k.isOdd()) {\n      var mod = k.andln(ws - 1);\n      if (mod > (ws >> 1) - 1)\n        z = (ws >> 1) - mod;\n      else\n        z = mod;\n      k.isubn(z);\n    } else {\n      z = 0;\n    }\n    naf.push(z);\n\n    // Optimization, shift by word if possible\n    var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;\n    for (var i = 1; i < shift; i++)\n      naf.push(0);\n    k.iushrn(shift);\n  }\n\n  return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n  var jsf = [\n    [],\n    []\n  ];\n\n  k1 = k1.clone();\n  k2 = k2.clone();\n  var d1 = 0;\n  var d2 = 0;\n  while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n\n    // First phase\n    var m14 = (k1.andln(3) + d1) & 3;\n    var m24 = (k2.andln(3) + d2) & 3;\n    if (m14 === 3)\n      m14 = -1;\n    if (m24 === 3)\n      m24 = -1;\n    var u1;\n    if ((m14 & 1) === 0) {\n      u1 = 0;\n    } else {\n      var m8 = (k1.andln(7) + d1) & 7;\n      if ((m8 === 3 || m8 === 5) && m24 === 2)\n        u1 = -m14;\n      else\n        u1 = m14;\n    }\n    jsf[0].push(u1);\n\n    var u2;\n    if ((m24 & 1) === 0) {\n      u2 = 0;\n    } else {\n      var m8 = (k2.andln(7) + d2) & 7;\n      if ((m8 === 3 || m8 === 5) && m14 === 2)\n        u2 = -m24;\n      else\n        u2 = m24;\n    }\n    jsf[1].push(u2);\n\n    // Second phase\n    if (2 * d1 === u1 + 1)\n      d1 = 1 - d1;\n    if (2 * d2 === u2 + 1)\n      d2 = 1 - d2;\n    k1.iushrn(1);\n    k2.iushrn(1);\n  }\n\n  return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n  var key = '_' + name;\n  obj.prototype[name] = function cachedProperty() {\n    return this[key] !== undefined ? this[key] :\n           this[key] = computer.call(this);\n  };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n  return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n                                     bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n  return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy91dGlscy5qcz80ZTQ1Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gZXhwb3J0cztcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgbWluQXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIG1pblV0aWxzID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWNyeXB0by11dGlscycpO1xuXG51dGlscy5hc3NlcnQgPSBtaW5Bc3NlcnQ7XG51dGlscy50b0FycmF5ID0gbWluVXRpbHMudG9BcnJheTtcbnV0aWxzLnplcm8yID0gbWluVXRpbHMuemVybzI7XG51dGlscy50b0hleCA9IG1pblV0aWxzLnRvSGV4O1xudXRpbHMuZW5jb2RlID0gbWluVXRpbHMuZW5jb2RlO1xuXG4vLyBSZXByZXNlbnQgbnVtIGluIGEgdy1OQUYgZm9ybVxuZnVuY3Rpb24gZ2V0TkFGKG51bSwgdykge1xuICB2YXIgbmFmID0gW107XG4gIHZhciB3cyA9IDEgPDwgKHcgKyAxKTtcbiAgdmFyIGsgPSBudW0uY2xvbmUoKTtcbiAgd2hpbGUgKGsuY21wbigxKSA+PSAwKSB7XG4gICAgdmFyIHo7XG4gICAgaWYgKGsuaXNPZGQoKSkge1xuICAgICAgdmFyIG1vZCA9IGsuYW5kbG4od3MgLSAxKTtcbiAgICAgIGlmIChtb2QgPiAod3MgPj4gMSkgLSAxKVxuICAgICAgICB6ID0gKHdzID4+IDEpIC0gbW9kO1xuICAgICAgZWxzZVxuICAgICAgICB6ID0gbW9kO1xuICAgICAgay5pc3Vibih6KTtcbiAgICB9IGVsc2Uge1xuICAgICAgeiA9IDA7XG4gICAgfVxuICAgIG5hZi5wdXNoKHopO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uLCBzaGlmdCBieSB3b3JkIGlmIHBvc3NpYmxlXG4gICAgdmFyIHNoaWZ0ID0gKGsuY21wbigwKSAhPT0gMCAmJiBrLmFuZGxuKHdzIC0gMSkgPT09IDApID8gKHcgKyAxKSA6IDE7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzaGlmdDsgaSsrKVxuICAgICAgbmFmLnB1c2goMCk7XG4gICAgay5pdXNocm4oc2hpZnQpO1xuICB9XG5cbiAgcmV0dXJuIG5hZjtcbn1cbnV0aWxzLmdldE5BRiA9IGdldE5BRjtcblxuLy8gUmVwcmVzZW50IGsxLCBrMiBpbiBhIEpvaW50IFNwYXJzZSBGb3JtXG5mdW5jdGlvbiBnZXRKU0YoazEsIGsyKSB7XG4gIHZhciBqc2YgPSBbXG4gICAgW10sXG4gICAgW11cbiAgXTtcblxuICBrMSA9IGsxLmNsb25lKCk7XG4gIGsyID0gazIuY2xvbmUoKTtcbiAgdmFyIGQxID0gMDtcbiAgdmFyIGQyID0gMDtcbiAgd2hpbGUgKGsxLmNtcG4oLWQxKSA+IDAgfHwgazIuY21wbigtZDIpID4gMCkge1xuXG4gICAgLy8gRmlyc3QgcGhhc2VcbiAgICB2YXIgbTE0ID0gKGsxLmFuZGxuKDMpICsgZDEpICYgMztcbiAgICB2YXIgbTI0ID0gKGsyLmFuZGxuKDMpICsgZDIpICYgMztcbiAgICBpZiAobTE0ID09PSAzKVxuICAgICAgbTE0ID0gLTE7XG4gICAgaWYgKG0yNCA9PT0gMylcbiAgICAgIG0yNCA9IC0xO1xuICAgIHZhciB1MTtcbiAgICBpZiAoKG0xNCAmIDEpID09PSAwKSB7XG4gICAgICB1MSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBtOCA9IChrMS5hbmRsbig3KSArIGQxKSAmIDc7XG4gICAgICBpZiAoKG04ID09PSAzIHx8IG04ID09PSA1KSAmJiBtMjQgPT09IDIpXG4gICAgICAgIHUxID0gLW0xNDtcbiAgICAgIGVsc2VcbiAgICAgICAgdTEgPSBtMTQ7XG4gICAgfVxuICAgIGpzZlswXS5wdXNoKHUxKTtcblxuICAgIHZhciB1MjtcbiAgICBpZiAoKG0yNCAmIDEpID09PSAwKSB7XG4gICAgICB1MiA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBtOCA9IChrMi5hbmRsbig3KSArIGQyKSAmIDc7XG4gICAgICBpZiAoKG04ID09PSAzIHx8IG04ID09PSA1KSAmJiBtMTQgPT09IDIpXG4gICAgICAgIHUyID0gLW0yNDtcbiAgICAgIGVsc2VcbiAgICAgICAgdTIgPSBtMjQ7XG4gICAgfVxuICAgIGpzZlsxXS5wdXNoKHUyKTtcblxuICAgIC8vIFNlY29uZCBwaGFzZVxuICAgIGlmICgyICogZDEgPT09IHUxICsgMSlcbiAgICAgIGQxID0gMSAtIGQxO1xuICAgIGlmICgyICogZDIgPT09IHUyICsgMSlcbiAgICAgIGQyID0gMSAtIGQyO1xuICAgIGsxLml1c2hybigxKTtcbiAgICBrMi5pdXNocm4oMSk7XG4gIH1cblxuICByZXR1cm4ganNmO1xufVxudXRpbHMuZ2V0SlNGID0gZ2V0SlNGO1xuXG5mdW5jdGlvbiBjYWNoZWRQcm9wZXJ0eShvYmosIG5hbWUsIGNvbXB1dGVyKSB7XG4gIHZhciBrZXkgPSAnXycgKyBuYW1lO1xuICBvYmoucHJvdG90eXBlW25hbWVdID0gZnVuY3Rpb24gY2FjaGVkUHJvcGVydHkoKSB7XG4gICAgcmV0dXJuIHRoaXNba2V5XSAhPT0gdW5kZWZpbmVkID8gdGhpc1trZXldIDpcbiAgICAgICAgICAgdGhpc1trZXldID0gY29tcHV0ZXIuY2FsbCh0aGlzKTtcbiAgfTtcbn1cbnV0aWxzLmNhY2hlZFByb3BlcnR5ID0gY2FjaGVkUHJvcGVydHk7XG5cbmZ1bmN0aW9uIHBhcnNlQnl0ZXMoYnl0ZXMpIHtcbiAgcmV0dXJuIHR5cGVvZiBieXRlcyA9PT0gJ3N0cmluZycgPyB1dGlscy50b0FycmF5KGJ5dGVzLCAnaGV4JykgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzO1xufVxudXRpbHMucGFyc2VCeXRlcyA9IHBhcnNlQnl0ZXM7XG5cbmZ1bmN0aW9uIGludEZyb21MRShieXRlcykge1xuICByZXR1cm4gbmV3IEJOKGJ5dGVzLCAnaGV4JywgJ2xlJyk7XG59XG51dGlscy5pbnRGcm9tTEUgPSBpbnRGcm9tTEU7XG5cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy91dGlscy5qc1xuLy8gbW9kdWxlIGlkID0gMTc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///174\n");

/***/ }),
/* 175 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar BN = __webpack_require__(4);\nvar elliptic = __webpack_require__(6);\nvar utils = elliptic.utils;\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n  this.type = type;\n  this.p = new BN(conf.p, 16);\n\n  // Use Montgomery, when there is no fast reduction for the prime\n  this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n  // Useful for many curves\n  this.zero = new BN(0).toRed(this.red);\n  this.one = new BN(1).toRed(this.red);\n  this.two = new BN(2).toRed(this.red);\n\n  // Curve configuration, optional\n  this.n = conf.n && new BN(conf.n, 16);\n  this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n  // Temporary arrays\n  this._wnafT1 = new Array(4);\n  this._wnafT2 = new Array(4);\n  this._wnafT3 = new Array(4);\n  this._wnafT4 = new Array(4);\n\n  // Generalized Greg Maxwell's trick\n  var adjustCount = this.n && this.p.div(this.n);\n  if (!adjustCount || adjustCount.cmpn(100) > 0) {\n    this.redN = null;\n  } else {\n    this._maxwellTrick = true;\n    this.redN = this.n.toRed(this.red);\n  }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n  throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n  throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n  assert(p.precomputed);\n  var doubles = p._getDoubles();\n\n  var naf = getNAF(k, 1);\n  var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n  I /= 3;\n\n  // Translate into more windowed form\n  var repr = [];\n  for (var j = 0; j < naf.length; j += doubles.step) {\n    var nafW = 0;\n    for (var k = j + doubles.step - 1; k >= j; k--)\n      nafW = (nafW << 1) + naf[k];\n    repr.push(nafW);\n  }\n\n  var a = this.jpoint(null, null, null);\n  var b = this.jpoint(null, null, null);\n  for (var i = I; i > 0; i--) {\n    for (var j = 0; j < repr.length; j++) {\n      var nafW = repr[j];\n      if (nafW === i)\n        b = b.mixedAdd(doubles.points[j]);\n      else if (nafW === -i)\n        b = b.mixedAdd(doubles.points[j].neg());\n    }\n    a = a.add(b);\n  }\n  return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n  var w = 4;\n\n  // Precompute window\n  var nafPoints = p._getNAFPoints(w);\n  w = nafPoints.wnd;\n  var wnd = nafPoints.points;\n\n  // Get NAF form\n  var naf = getNAF(k, w);\n\n  // Add `this`*(N+1) for every w-NAF index\n  var acc = this.jpoint(null, null, null);\n  for (var i = naf.length - 1; i >= 0; i--) {\n    // Count zeroes\n    for (var k = 0; i >= 0 && naf[i] === 0; i--)\n      k++;\n    if (i >= 0)\n      k++;\n    acc = acc.dblp(k);\n\n    if (i < 0)\n      break;\n    var z = naf[i];\n    assert(z !== 0);\n    if (p.type === 'affine') {\n      // J +- P\n      if (z > 0)\n        acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n      else\n        acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n    } else {\n      // J +- J\n      if (z > 0)\n        acc = acc.add(wnd[(z - 1) >> 1]);\n      else\n        acc = acc.add(wnd[(-z - 1) >> 1].neg());\n    }\n  }\n  return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n                                                       points,\n                                                       coeffs,\n                                                       len,\n                                                       jacobianResult) {\n  var wndWidth = this._wnafT1;\n  var wnd = this._wnafT2;\n  var naf = this._wnafT3;\n\n  // Fill all arrays\n  var max = 0;\n  for (var i = 0; i < len; i++) {\n    var p = points[i];\n    var nafPoints = p._getNAFPoints(defW);\n    wndWidth[i] = nafPoints.wnd;\n    wnd[i] = nafPoints.points;\n  }\n\n  // Comb small window NAFs\n  for (var i = len - 1; i >= 1; i -= 2) {\n    var a = i - 1;\n    var b = i;\n    if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n      naf[a] = getNAF(coeffs[a], wndWidth[a]);\n      naf[b] = getNAF(coeffs[b], wndWidth[b]);\n      max = Math.max(naf[a].length, max);\n      max = Math.max(naf[b].length, max);\n      continue;\n    }\n\n    var comb = [\n      points[a], /* 1 */\n      null, /* 3 */\n      null, /* 5 */\n      points[b] /* 7 */\n    ];\n\n    // Try to avoid Projective points, if possible\n    if (points[a].y.cmp(points[b].y) === 0) {\n      comb[1] = points[a].add(points[b]);\n      comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n    } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n      comb[1] = points[a].toJ().mixedAdd(points[b]);\n      comb[2] = points[a].add(points[b].neg());\n    } else {\n      comb[1] = points[a].toJ().mixedAdd(points[b]);\n      comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n    }\n\n    var index = [\n      -3, /* -1 -1 */\n      -1, /* -1 0 */\n      -5, /* -1 1 */\n      -7, /* 0 -1 */\n      0, /* 0 0 */\n      7, /* 0 1 */\n      5, /* 1 -1 */\n      1, /* 1 0 */\n      3  /* 1 1 */\n    ];\n\n    var jsf = getJSF(coeffs[a], coeffs[b]);\n    max = Math.max(jsf[0].length, max);\n    naf[a] = new Array(max);\n    naf[b] = new Array(max);\n    for (var j = 0; j < max; j++) {\n      var ja = jsf[0][j] | 0;\n      var jb = jsf[1][j] | 0;\n\n      naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n      naf[b][j] = 0;\n      wnd[a] = comb;\n    }\n  }\n\n  var acc = this.jpoint(null, null, null);\n  var tmp = this._wnafT4;\n  for (var i = max; i >= 0; i--) {\n    var k = 0;\n\n    while (i >= 0) {\n      var zero = true;\n      for (var j = 0; j < len; j++) {\n        tmp[j] = naf[j][i] | 0;\n        if (tmp[j] !== 0)\n          zero = false;\n      }\n      if (!zero)\n        break;\n      k++;\n      i--;\n    }\n    if (i >= 0)\n      k++;\n    acc = acc.dblp(k);\n    if (i < 0)\n      break;\n\n    for (var j = 0; j < len; j++) {\n      var z = tmp[j];\n      var p;\n      if (z === 0)\n        continue;\n      else if (z > 0)\n        p = wnd[j][(z - 1) >> 1];\n      else if (z < 0)\n        p = wnd[j][(-z - 1) >> 1].neg();\n\n      if (p.type === 'affine')\n        acc = acc.mixedAdd(p);\n      else\n        acc = acc.add(p);\n    }\n  }\n  // Zeroify references\n  for (var i = 0; i < len; i++)\n    wnd[i] = null;\n\n  if (jacobianResult)\n    return acc;\n  else\n    return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n  this.curve = curve;\n  this.type = type;\n  this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n  throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n  return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n  bytes = utils.toArray(bytes, enc);\n\n  var len = this.p.byteLength();\n\n  // uncompressed, hybrid-odd, hybrid-even\n  if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n      bytes.length - 1 === 2 * len) {\n    if (bytes[0] === 0x06)\n      assert(bytes[bytes.length - 1] % 2 === 0);\n    else if (bytes[0] === 0x07)\n      assert(bytes[bytes.length - 1] % 2 === 1);\n\n    var res =  this.point(bytes.slice(1, 1 + len),\n                          bytes.slice(1 + len, 1 + 2 * len));\n\n    return res;\n  } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n              bytes.length - 1 === len) {\n    return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n  }\n  throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n  return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n  var len = this.curve.p.byteLength();\n  var x = this.getX().toArray('be', len);\n\n  if (compact)\n    return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n  return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n  return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n  if (this.precomputed)\n    return this;\n\n  var precomputed = {\n    doubles: null,\n    naf: null,\n    beta: null\n  };\n  precomputed.naf = this._getNAFPoints(8);\n  precomputed.doubles = this._getDoubles(4, power);\n  precomputed.beta = this._getBeta();\n  this.precomputed = precomputed;\n\n  return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n  if (!this.precomputed)\n    return false;\n\n  var doubles = this.precomputed.doubles;\n  if (!doubles)\n    return false;\n\n  return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n  if (this.precomputed && this.precomputed.doubles)\n    return this.precomputed.doubles;\n\n  var doubles = [ this ];\n  var acc = this;\n  for (var i = 0; i < power; i += step) {\n    for (var j = 0; j < step; j++)\n      acc = acc.dbl();\n    doubles.push(acc);\n  }\n  return {\n    step: step,\n    points: doubles\n  };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n  if (this.precomputed && this.precomputed.naf)\n    return this.precomputed.naf;\n\n  var res = [ this ];\n  var max = (1 << wnd) - 1;\n  var dbl = max === 1 ? null : this.dbl();\n  for (var i = 1; i < max; i++)\n    res[i] = res[i - 1].add(dbl);\n  return {\n    wnd: wnd,\n    points: res\n  };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n  return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n  var r = this;\n  for (var i = 0; i < k; i++)\n    r = r.dbl();\n  return r;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9iYXNlLmpzPzA3YTAiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGdldE5BRiA9IHV0aWxzLmdldE5BRjtcbnZhciBnZXRKU0YgPSB1dGlscy5nZXRKU0Y7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBCYXNlQ3VydmUodHlwZSwgY29uZikge1xuICB0aGlzLnR5cGUgPSB0eXBlO1xuICB0aGlzLnAgPSBuZXcgQk4oY29uZi5wLCAxNik7XG5cbiAgLy8gVXNlIE1vbnRnb21lcnksIHdoZW4gdGhlcmUgaXMgbm8gZmFzdCByZWR1Y3Rpb24gZm9yIHRoZSBwcmltZVxuICB0aGlzLnJlZCA9IGNvbmYucHJpbWUgPyBCTi5yZWQoY29uZi5wcmltZSkgOiBCTi5tb250KHRoaXMucCk7XG5cbiAgLy8gVXNlZnVsIGZvciBtYW55IGN1cnZlc1xuICB0aGlzLnplcm8gPSBuZXcgQk4oMCkudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLm9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMudHdvID0gbmV3IEJOKDIpLnRvUmVkKHRoaXMucmVkKTtcblxuICAvLyBDdXJ2ZSBjb25maWd1cmF0aW9uLCBvcHRpb25hbFxuICB0aGlzLm4gPSBjb25mLm4gJiYgbmV3IEJOKGNvbmYubiwgMTYpO1xuICB0aGlzLmcgPSBjb25mLmcgJiYgdGhpcy5wb2ludEZyb21KU09OKGNvbmYuZywgY29uZi5nUmVkKTtcblxuICAvLyBUZW1wb3JhcnkgYXJyYXlzXG4gIHRoaXMuX3duYWZUMSA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fd25hZlQyID0gbmV3IEFycmF5KDQpO1xuICB0aGlzLl93bmFmVDMgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX3duYWZUNCA9IG5ldyBBcnJheSg0KTtcblxuICAvLyBHZW5lcmFsaXplZCBHcmVnIE1heHdlbGwncyB0cmlja1xuICB2YXIgYWRqdXN0Q291bnQgPSB0aGlzLm4gJiYgdGhpcy5wLmRpdih0aGlzLm4pO1xuICBpZiAoIWFkanVzdENvdW50IHx8IGFkanVzdENvdW50LmNtcG4oMTAwKSA+IDApIHtcbiAgICB0aGlzLnJlZE4gPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX21heHdlbGxUcmljayA9IHRydWU7XG4gICAgdGhpcy5yZWROID0gdGhpcy5uLnRvUmVkKHRoaXMucmVkKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBCYXNlQ3VydmU7XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUucG9pbnQgPSBmdW5jdGlvbiBwb2ludCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUuX2ZpeGVkTmFmTXVsID0gZnVuY3Rpb24gX2ZpeGVkTmFmTXVsKHAsIGspIHtcbiAgYXNzZXJ0KHAucHJlY29tcHV0ZWQpO1xuICB2YXIgZG91YmxlcyA9IHAuX2dldERvdWJsZXMoKTtcblxuICB2YXIgbmFmID0gZ2V0TkFGKGssIDEpO1xuICB2YXIgSSA9ICgxIDw8IChkb3VibGVzLnN0ZXAgKyAxKSkgLSAoZG91Ymxlcy5zdGVwICUgMiA9PT0gMCA/IDIgOiAxKTtcbiAgSSAvPSAzO1xuXG4gIC8vIFRyYW5zbGF0ZSBpbnRvIG1vcmUgd2luZG93ZWQgZm9ybVxuICB2YXIgcmVwciA9IFtdO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IG5hZi5sZW5ndGg7IGogKz0gZG91Ymxlcy5zdGVwKSB7XG4gICAgdmFyIG5hZlcgPSAwO1xuICAgIGZvciAodmFyIGsgPSBqICsgZG91Ymxlcy5zdGVwIC0gMTsgayA+PSBqOyBrLS0pXG4gICAgICBuYWZXID0gKG5hZlcgPDwgMSkgKyBuYWZba107XG4gICAgcmVwci5wdXNoKG5hZlcpO1xuICB9XG5cbiAgdmFyIGEgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgdmFyIGIgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgZm9yICh2YXIgaSA9IEk7IGkgPiAwOyBpLS0pIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJlcHIubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBuYWZXID0gcmVwcltqXTtcbiAgICAgIGlmIChuYWZXID09PSBpKVxuICAgICAgICBiID0gYi5taXhlZEFkZChkb3VibGVzLnBvaW50c1tqXSk7XG4gICAgICBlbHNlIGlmIChuYWZXID09PSAtaSlcbiAgICAgICAgYiA9IGIubWl4ZWRBZGQoZG91Ymxlcy5wb2ludHNbal0ubmVnKCkpO1xuICAgIH1cbiAgICBhID0gYS5hZGQoYik7XG4gIH1cbiAgcmV0dXJuIGEudG9QKCk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLl93bmFmTXVsID0gZnVuY3Rpb24gX3duYWZNdWwocCwgaykge1xuICB2YXIgdyA9IDQ7XG5cbiAgLy8gUHJlY29tcHV0ZSB3aW5kb3dcbiAgdmFyIG5hZlBvaW50cyA9IHAuX2dldE5BRlBvaW50cyh3KTtcbiAgdyA9IG5hZlBvaW50cy53bmQ7XG4gIHZhciB3bmQgPSBuYWZQb2ludHMucG9pbnRzO1xuXG4gIC8vIEdldCBOQUYgZm9ybVxuICB2YXIgbmFmID0gZ2V0TkFGKGssIHcpO1xuXG4gIC8vIEFkZCBgdGhpc2AqKE4rMSkgZm9yIGV2ZXJ5IHctTkFGIGluZGV4XG4gIHZhciBhY2MgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgZm9yICh2YXIgaSA9IG5hZi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIC8vIENvdW50IHplcm9lc1xuICAgIGZvciAodmFyIGsgPSAwOyBpID49IDAgJiYgbmFmW2ldID09PSAwOyBpLS0pXG4gICAgICBrKys7XG4gICAgaWYgKGkgPj0gMClcbiAgICAgIGsrKztcbiAgICBhY2MgPSBhY2MuZGJscChrKTtcblxuICAgIGlmIChpIDwgMClcbiAgICAgIGJyZWFrO1xuICAgIHZhciB6ID0gbmFmW2ldO1xuICAgIGFzc2VydCh6ICE9PSAwKTtcbiAgICBpZiAocC50eXBlID09PSAnYWZmaW5lJykge1xuICAgICAgLy8gSiArLSBQXG4gICAgICBpZiAoeiA+IDApXG4gICAgICAgIGFjYyA9IGFjYy5taXhlZEFkZCh3bmRbKHogLSAxKSA+PiAxXSk7XG4gICAgICBlbHNlXG4gICAgICAgIGFjYyA9IGFjYy5taXhlZEFkZCh3bmRbKC16IC0gMSkgPj4gMV0ubmVnKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBKICstIEpcbiAgICAgIGlmICh6ID4gMClcbiAgICAgICAgYWNjID0gYWNjLmFkZCh3bmRbKHogLSAxKSA+PiAxXSk7XG4gICAgICBlbHNlXG4gICAgICAgIGFjYyA9IGFjYy5hZGQod25kWygteiAtIDEpID4+IDFdLm5lZygpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHAudHlwZSA9PT0gJ2FmZmluZScgPyBhY2MudG9QKCkgOiBhY2M7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLl93bmFmTXVsQWRkID0gZnVuY3Rpb24gX3duYWZNdWxBZGQoZGVmVyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYWNvYmlhblJlc3VsdCkge1xuICB2YXIgd25kV2lkdGggPSB0aGlzLl93bmFmVDE7XG4gIHZhciB3bmQgPSB0aGlzLl93bmFmVDI7XG4gIHZhciBuYWYgPSB0aGlzLl93bmFmVDM7XG5cbiAgLy8gRmlsbCBhbGwgYXJyYXlzXG4gIHZhciBtYXggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHAgPSBwb2ludHNbaV07XG4gICAgdmFyIG5hZlBvaW50cyA9IHAuX2dldE5BRlBvaW50cyhkZWZXKTtcbiAgICB3bmRXaWR0aFtpXSA9IG5hZlBvaW50cy53bmQ7XG4gICAgd25kW2ldID0gbmFmUG9pbnRzLnBvaW50cztcbiAgfVxuXG4gIC8vIENvbWIgc21hbGwgd2luZG93IE5BRnNcbiAgZm9yICh2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMTsgaSAtPSAyKSB7XG4gICAgdmFyIGEgPSBpIC0gMTtcbiAgICB2YXIgYiA9IGk7XG4gICAgaWYgKHduZFdpZHRoW2FdICE9PSAxIHx8IHduZFdpZHRoW2JdICE9PSAxKSB7XG4gICAgICBuYWZbYV0gPSBnZXROQUYoY29lZmZzW2FdLCB3bmRXaWR0aFthXSk7XG4gICAgICBuYWZbYl0gPSBnZXROQUYoY29lZmZzW2JdLCB3bmRXaWR0aFtiXSk7XG4gICAgICBtYXggPSBNYXRoLm1heChuYWZbYV0ubGVuZ3RoLCBtYXgpO1xuICAgICAgbWF4ID0gTWF0aC5tYXgobmFmW2JdLmxlbmd0aCwgbWF4KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBjb21iID0gW1xuICAgICAgcG9pbnRzW2FdLCAvKiAxICovXG4gICAgICBudWxsLCAvKiAzICovXG4gICAgICBudWxsLCAvKiA1ICovXG4gICAgICBwb2ludHNbYl0gLyogNyAqL1xuICAgIF07XG5cbiAgICAvLyBUcnkgdG8gYXZvaWQgUHJvamVjdGl2ZSBwb2ludHMsIGlmIHBvc3NpYmxlXG4gICAgaWYgKHBvaW50c1thXS55LmNtcChwb2ludHNbYl0ueSkgPT09IDApIHtcbiAgICAgIGNvbWJbMV0gPSBwb2ludHNbYV0uYWRkKHBvaW50c1tiXSk7XG4gICAgICBjb21iWzJdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXS5uZWcoKSk7XG4gICAgfSBlbHNlIGlmIChwb2ludHNbYV0ueS5jbXAocG9pbnRzW2JdLnkucmVkTmVnKCkpID09PSAwKSB7XG4gICAgICBjb21iWzFdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXSk7XG4gICAgICBjb21iWzJdID0gcG9pbnRzW2FdLmFkZChwb2ludHNbYl0ubmVnKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21iWzFdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXSk7XG4gICAgICBjb21iWzJdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXS5uZWcoKSk7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gW1xuICAgICAgLTMsIC8qIC0xIC0xICovXG4gICAgICAtMSwgLyogLTEgMCAqL1xuICAgICAgLTUsIC8qIC0xIDEgKi9cbiAgICAgIC03LCAvKiAwIC0xICovXG4gICAgICAwLCAvKiAwIDAgKi9cbiAgICAgIDcsIC8qIDAgMSAqL1xuICAgICAgNSwgLyogMSAtMSAqL1xuICAgICAgMSwgLyogMSAwICovXG4gICAgICAzICAvKiAxIDEgKi9cbiAgICBdO1xuXG4gICAgdmFyIGpzZiA9IGdldEpTRihjb2VmZnNbYV0sIGNvZWZmc1tiXSk7XG4gICAgbWF4ID0gTWF0aC5tYXgoanNmWzBdLmxlbmd0aCwgbWF4KTtcbiAgICBuYWZbYV0gPSBuZXcgQXJyYXkobWF4KTtcbiAgICBuYWZbYl0gPSBuZXcgQXJyYXkobWF4KTtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1heDsgaisrKSB7XG4gICAgICB2YXIgamEgPSBqc2ZbMF1bal0gfCAwO1xuICAgICAgdmFyIGpiID0ganNmWzFdW2pdIHwgMDtcblxuICAgICAgbmFmW2FdW2pdID0gaW5kZXhbKGphICsgMSkgKiAzICsgKGpiICsgMSldO1xuICAgICAgbmFmW2JdW2pdID0gMDtcbiAgICAgIHduZFthXSA9IGNvbWI7XG4gICAgfVxuICB9XG5cbiAgdmFyIGFjYyA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICB2YXIgdG1wID0gdGhpcy5fd25hZlQ0O1xuICBmb3IgKHZhciBpID0gbWF4OyBpID49IDA7IGktLSkge1xuICAgIHZhciBrID0gMDtcblxuICAgIHdoaWxlIChpID49IDApIHtcbiAgICAgIHZhciB6ZXJvID0gdHJ1ZTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgICAgdG1wW2pdID0gbmFmW2pdW2ldIHwgMDtcbiAgICAgICAgaWYgKHRtcFtqXSAhPT0gMClcbiAgICAgICAgICB6ZXJvID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIXplcm8pXG4gICAgICAgIGJyZWFrO1xuICAgICAgaysrO1xuICAgICAgaS0tO1xuICAgIH1cbiAgICBpZiAoaSA+PSAwKVxuICAgICAgaysrO1xuICAgIGFjYyA9IGFjYy5kYmxwKGspO1xuICAgIGlmIChpIDwgMClcbiAgICAgIGJyZWFrO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsZW47IGorKykge1xuICAgICAgdmFyIHogPSB0bXBbal07XG4gICAgICB2YXIgcDtcbiAgICAgIGlmICh6ID09PSAwKVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIGVsc2UgaWYgKHogPiAwKVxuICAgICAgICBwID0gd25kW2pdWyh6IC0gMSkgPj4gMV07XG4gICAgICBlbHNlIGlmICh6IDwgMClcbiAgICAgICAgcCA9IHduZFtqXVsoLXogLSAxKSA+PiAxXS5uZWcoKTtcblxuICAgICAgaWYgKHAudHlwZSA9PT0gJ2FmZmluZScpXG4gICAgICAgIGFjYyA9IGFjYy5taXhlZEFkZChwKTtcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjID0gYWNjLmFkZChwKTtcbiAgICB9XG4gIH1cbiAgLy8gWmVyb2lmeSByZWZlcmVuY2VzXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgd25kW2ldID0gbnVsbDtcblxuICBpZiAoamFjb2JpYW5SZXN1bHQpXG4gICAgcmV0dXJuIGFjYztcbiAgZWxzZVxuICAgIHJldHVybiBhY2MudG9QKCk7XG59O1xuXG5mdW5jdGlvbiBCYXNlUG9pbnQoY3VydmUsIHR5cGUpIHtcbiAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICB0aGlzLnR5cGUgPSB0eXBlO1xuICB0aGlzLnByZWNvbXB1dGVkID0gbnVsbDtcbn1cbkJhc2VDdXJ2ZS5CYXNlUG9pbnQgPSBCYXNlUG9pbnQ7XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcSgvKm90aGVyKi8pIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUudmFsaWRhdGUodGhpcyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLmRlY29kZVBvaW50ID0gZnVuY3Rpb24gZGVjb2RlUG9pbnQoYnl0ZXMsIGVuYykge1xuICBieXRlcyA9IHV0aWxzLnRvQXJyYXkoYnl0ZXMsIGVuYyk7XG5cbiAgdmFyIGxlbiA9IHRoaXMucC5ieXRlTGVuZ3RoKCk7XG5cbiAgLy8gdW5jb21wcmVzc2VkLCBoeWJyaWQtb2RkLCBoeWJyaWQtZXZlblxuICBpZiAoKGJ5dGVzWzBdID09PSAweDA0IHx8IGJ5dGVzWzBdID09PSAweDA2IHx8IGJ5dGVzWzBdID09PSAweDA3KSAmJlxuICAgICAgYnl0ZXMubGVuZ3RoIC0gMSA9PT0gMiAqIGxlbikge1xuICAgIGlmIChieXRlc1swXSA9PT0gMHgwNilcbiAgICAgIGFzc2VydChieXRlc1tieXRlcy5sZW5ndGggLSAxXSAlIDIgPT09IDApO1xuICAgIGVsc2UgaWYgKGJ5dGVzWzBdID09PSAweDA3KVxuICAgICAgYXNzZXJ0KGJ5dGVzW2J5dGVzLmxlbmd0aCAtIDFdICUgMiA9PT0gMSk7XG5cbiAgICB2YXIgcmVzID0gIHRoaXMucG9pbnQoYnl0ZXMuc2xpY2UoMSwgMSArIGxlbiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzLnNsaWNlKDEgKyBsZW4sIDEgKyAyICogbGVuKSk7XG5cbiAgICByZXR1cm4gcmVzO1xuICB9IGVsc2UgaWYgKChieXRlc1swXSA9PT0gMHgwMiB8fCBieXRlc1swXSA9PT0gMHgwMykgJiZcbiAgICAgICAgICAgICAgYnl0ZXMubGVuZ3RoIC0gMSA9PT0gbGVuKSB7XG4gICAgcmV0dXJuIHRoaXMucG9pbnRGcm9tWChieXRlcy5zbGljZSgxLCAxICsgbGVuKSwgYnl0ZXNbMF0gPT09IDB4MDMpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignVW5rbm93biBwb2ludCBmb3JtYXQnKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuZW5jb2RlQ29tcHJlc3NlZCA9IGZ1bmN0aW9uIGVuY29kZUNvbXByZXNzZWQoZW5jKSB7XG4gIHJldHVybiB0aGlzLmVuY29kZShlbmMsIHRydWUpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5fZW5jb2RlID0gZnVuY3Rpb24gX2VuY29kZShjb21wYWN0KSB7XG4gIHZhciBsZW4gPSB0aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpO1xuICB2YXIgeCA9IHRoaXMuZ2V0WCgpLnRvQXJyYXkoJ2JlJywgbGVuKTtcblxuICBpZiAoY29tcGFjdClcbiAgICByZXR1cm4gWyB0aGlzLmdldFkoKS5pc0V2ZW4oKSA/IDB4MDIgOiAweDAzIF0uY29uY2F0KHgpO1xuXG4gIHJldHVybiBbIDB4MDQgXS5jb25jYXQoeCwgdGhpcy5nZXRZKCkudG9BcnJheSgnYmUnLCBsZW4pKSA7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShlbmMsIGNvbXBhY3QpIHtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLl9lbmNvZGUoY29tcGFjdCksIGVuYyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLnByZWNvbXB1dGUgPSBmdW5jdGlvbiBwcmVjb21wdXRlKHBvd2VyKSB7XG4gIGlmICh0aGlzLnByZWNvbXB1dGVkKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIHZhciBwcmVjb21wdXRlZCA9IHtcbiAgICBkb3VibGVzOiBudWxsLFxuICAgIG5hZjogbnVsbCxcbiAgICBiZXRhOiBudWxsXG4gIH07XG4gIHByZWNvbXB1dGVkLm5hZiA9IHRoaXMuX2dldE5BRlBvaW50cyg4KTtcbiAgcHJlY29tcHV0ZWQuZG91YmxlcyA9IHRoaXMuX2dldERvdWJsZXMoNCwgcG93ZXIpO1xuICBwcmVjb21wdXRlZC5iZXRhID0gdGhpcy5fZ2V0QmV0YSgpO1xuICB0aGlzLnByZWNvbXB1dGVkID0gcHJlY29tcHV0ZWQ7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9oYXNEb3VibGVzID0gZnVuY3Rpb24gX2hhc0RvdWJsZXMoaykge1xuICBpZiAoIXRoaXMucHJlY29tcHV0ZWQpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBkb3VibGVzID0gdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzO1xuICBpZiAoIWRvdWJsZXMpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiBkb3VibGVzLnBvaW50cy5sZW5ndGggPj0gTWF0aC5jZWlsKChrLmJpdExlbmd0aCgpICsgMSkgLyBkb3VibGVzLnN0ZXApO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5fZ2V0RG91YmxlcyA9IGZ1bmN0aW9uIF9nZXREb3VibGVzKHN0ZXAsIHBvd2VyKSB7XG4gIGlmICh0aGlzLnByZWNvbXB1dGVkICYmIHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcylcbiAgICByZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzO1xuXG4gIHZhciBkb3VibGVzID0gWyB0aGlzIF07XG4gIHZhciBhY2MgPSB0aGlzO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBvd2VyOyBpICs9IHN0ZXApIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHN0ZXA7IGorKylcbiAgICAgIGFjYyA9IGFjYy5kYmwoKTtcbiAgICBkb3VibGVzLnB1c2goYWNjKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHN0ZXA6IHN0ZXAsXG4gICAgcG9pbnRzOiBkb3VibGVzXG4gIH07XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9nZXROQUZQb2ludHMgPSBmdW5jdGlvbiBfZ2V0TkFGUG9pbnRzKHduZCkge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZCAmJiB0aGlzLnByZWNvbXB1dGVkLm5hZilcbiAgICByZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5uYWY7XG5cbiAgdmFyIHJlcyA9IFsgdGhpcyBdO1xuICB2YXIgbWF4ID0gKDEgPDwgd25kKSAtIDE7XG4gIHZhciBkYmwgPSBtYXggPT09IDEgPyBudWxsIDogdGhpcy5kYmwoKTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBtYXg7IGkrKylcbiAgICByZXNbaV0gPSByZXNbaSAtIDFdLmFkZChkYmwpO1xuICByZXR1cm4ge1xuICAgIHduZDogd25kLFxuICAgIHBvaW50czogcmVzXG4gIH07XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9nZXRCZXRhID0gZnVuY3Rpb24gX2dldEJldGEoKSB7XG4gIHJldHVybiBudWxsO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5kYmxwID0gZnVuY3Rpb24gZGJscChrKSB7XG4gIHZhciByID0gdGhpcztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrOyBpKyspXG4gICAgciA9IHIuZGJsKCk7XG4gIHJldHVybiByO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9iYXNlLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///175\n");

/***/ }),
/* 176 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar curve = __webpack_require__(26);\nvar elliptic = __webpack_require__(6);\nvar BN = __webpack_require__(4);\nvar inherits = __webpack_require__(0);\nvar Base = curve.base;\n\nvar assert = elliptic.utils.assert;\n\nfunction ShortCurve(conf) {\n  Base.call(this, 'short', conf);\n\n  this.a = new BN(conf.a, 16).toRed(this.red);\n  this.b = new BN(conf.b, 16).toRed(this.red);\n  this.tinv = this.two.redInvm();\n\n  this.zeroA = this.a.fromRed().cmpn(0) === 0;\n  this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n  // If the curve is endomorphic, precalculate beta and lambda\n  this.endo = this._getEndomorphism(conf);\n  this._endoWnafT1 = new Array(4);\n  this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n  // No efficient endomorphism\n  if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n    return;\n\n  // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n  var beta;\n  var lambda;\n  if (conf.beta) {\n    beta = new BN(conf.beta, 16).toRed(this.red);\n  } else {\n    var betas = this._getEndoRoots(this.p);\n    // Choose the smallest beta\n    beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n    beta = beta.toRed(this.red);\n  }\n  if (conf.lambda) {\n    lambda = new BN(conf.lambda, 16);\n  } else {\n    // Choose the lambda that is matching selected beta\n    var lambdas = this._getEndoRoots(this.n);\n    if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n      lambda = lambdas[0];\n    } else {\n      lambda = lambdas[1];\n      assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n    }\n  }\n\n  // Get basis vectors, used for balanced length-two representation\n  var basis;\n  if (conf.basis) {\n    basis = conf.basis.map(function(vec) {\n      return {\n        a: new BN(vec.a, 16),\n        b: new BN(vec.b, 16)\n      };\n    });\n  } else {\n    basis = this._getEndoBasis(lambda);\n  }\n\n  return {\n    beta: beta,\n    lambda: lambda,\n    basis: basis\n  };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n  // Find roots of for x^2 + x + 1 in F\n  // Root = (-1 +- Sqrt(-3)) / 2\n  //\n  var red = num === this.p ? this.red : BN.mont(num);\n  var tinv = new BN(2).toRed(red).redInvm();\n  var ntinv = tinv.redNeg();\n\n  var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n  var l1 = ntinv.redAdd(s).fromRed();\n  var l2 = ntinv.redSub(s).fromRed();\n  return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n  // aprxSqrt >= sqrt(this.n)\n  var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n  // 3.74\n  // Run EGCD, until r(L + 1) < aprxSqrt\n  var u = lambda;\n  var v = this.n.clone();\n  var x1 = new BN(1);\n  var y1 = new BN(0);\n  var x2 = new BN(0);\n  var y2 = new BN(1);\n\n  // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n  var a0;\n  var b0;\n  // First vector\n  var a1;\n  var b1;\n  // Second vector\n  var a2;\n  var b2;\n\n  var prevR;\n  var i = 0;\n  var r;\n  var x;\n  while (u.cmpn(0) !== 0) {\n    var q = v.div(u);\n    r = v.sub(q.mul(u));\n    x = x2.sub(q.mul(x1));\n    var y = y2.sub(q.mul(y1));\n\n    if (!a1 && r.cmp(aprxSqrt) < 0) {\n      a0 = prevR.neg();\n      b0 = x1;\n      a1 = r.neg();\n      b1 = x;\n    } else if (a1 && ++i === 2) {\n      break;\n    }\n    prevR = r;\n\n    v = u;\n    u = r;\n    x2 = x1;\n    x1 = x;\n    y2 = y1;\n    y1 = y;\n  }\n  a2 = r.neg();\n  b2 = x;\n\n  var len1 = a1.sqr().add(b1.sqr());\n  var len2 = a2.sqr().add(b2.sqr());\n  if (len2.cmp(len1) >= 0) {\n    a2 = a0;\n    b2 = b0;\n  }\n\n  // Normalize signs\n  if (a1.negative) {\n    a1 = a1.neg();\n    b1 = b1.neg();\n  }\n  if (a2.negative) {\n    a2 = a2.neg();\n    b2 = b2.neg();\n  }\n\n  return [\n    { a: a1, b: b1 },\n    { a: a2, b: b2 }\n  ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n  var basis = this.endo.basis;\n  var v1 = basis[0];\n  var v2 = basis[1];\n\n  var c1 = v2.b.mul(k).divRound(this.n);\n  var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n  var p1 = c1.mul(v1.a);\n  var p2 = c2.mul(v2.a);\n  var q1 = c1.mul(v1.b);\n  var q2 = c2.mul(v2.b);\n\n  // Calculate answer\n  var k1 = k.sub(p1).sub(p2);\n  var k2 = q1.add(q2).neg();\n  return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n  x = new BN(x, 16);\n  if (!x.red)\n    x = x.toRed(this.red);\n\n  var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n  var y = y2.redSqrt();\n  if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n    throw new Error('invalid point');\n\n  // XXX Is there any way to tell if the number is odd without converting it\n  // to non-red form?\n  var isOdd = y.fromRed().isOdd();\n  if (odd && !isOdd || !odd && isOdd)\n    y = y.redNeg();\n\n  return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n  if (point.inf)\n    return true;\n\n  var x = point.x;\n  var y = point.y;\n\n  var ax = this.a.redMul(x);\n  var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n  return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n    function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n  var npoints = this._endoWnafT1;\n  var ncoeffs = this._endoWnafT2;\n  for (var i = 0; i < points.length; i++) {\n    var split = this._endoSplit(coeffs[i]);\n    var p = points[i];\n    var beta = p._getBeta();\n\n    if (split.k1.negative) {\n      split.k1.ineg();\n      p = p.neg(true);\n    }\n    if (split.k2.negative) {\n      split.k2.ineg();\n      beta = beta.neg(true);\n    }\n\n    npoints[i * 2] = p;\n    npoints[i * 2 + 1] = beta;\n    ncoeffs[i * 2] = split.k1;\n    ncoeffs[i * 2 + 1] = split.k2;\n  }\n  var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n  // Clean-up references to points and coefficients\n  for (var j = 0; j < i * 2; j++) {\n    npoints[j] = null;\n    ncoeffs[j] = null;\n  }\n  return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n  Base.BasePoint.call(this, curve, 'affine');\n  if (x === null && y === null) {\n    this.x = null;\n    this.y = null;\n    this.inf = true;\n  } else {\n    this.x = new BN(x, 16);\n    this.y = new BN(y, 16);\n    // Force redgomery representation when loading from JSON\n    if (isRed) {\n      this.x.forceRed(this.curve.red);\n      this.y.forceRed(this.curve.red);\n    }\n    if (!this.x.red)\n      this.x = this.x.toRed(this.curve.red);\n    if (!this.y.red)\n      this.y = this.y.toRed(this.curve.red);\n    this.inf = false;\n  }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n  return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n  return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n  if (!this.curve.endo)\n    return;\n\n  var pre = this.precomputed;\n  if (pre && pre.beta)\n    return pre.beta;\n\n  var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n  if (pre) {\n    var curve = this.curve;\n    var endoMul = function(p) {\n      return curve.point(p.x.redMul(curve.endo.beta), p.y);\n    };\n    pre.beta = beta;\n    beta.precomputed = {\n      beta: null,\n      naf: pre.naf && {\n        wnd: pre.naf.wnd,\n        points: pre.naf.points.map(endoMul)\n      },\n      doubles: pre.doubles && {\n        step: pre.doubles.step,\n        points: pre.doubles.points.map(endoMul)\n      }\n    };\n  }\n  return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n  if (!this.precomputed)\n    return [ this.x, this.y ];\n\n  return [ this.x, this.y, this.precomputed && {\n    doubles: this.precomputed.doubles && {\n      step: this.precomputed.doubles.step,\n      points: this.precomputed.doubles.points.slice(1)\n    },\n    naf: this.precomputed.naf && {\n      wnd: this.precomputed.naf.wnd,\n      points: this.precomputed.naf.points.slice(1)\n    }\n  } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n  if (typeof obj === 'string')\n    obj = JSON.parse(obj);\n  var res = curve.point(obj[0], obj[1], red);\n  if (!obj[2])\n    return res;\n\n  function obj2point(obj) {\n    return curve.point(obj[0], obj[1], red);\n  }\n\n  var pre = obj[2];\n  res.precomputed = {\n    beta: null,\n    doubles: pre.doubles && {\n      step: pre.doubles.step,\n      points: [ res ].concat(pre.doubles.points.map(obj2point))\n    },\n    naf: pre.naf && {\n      wnd: pre.naf.wnd,\n      points: [ res ].concat(pre.naf.points.map(obj2point))\n    }\n  };\n  return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n  return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n  // O + P = P\n  if (this.inf)\n    return p;\n\n  // P + O = P\n  if (p.inf)\n    return this;\n\n  // P + P = 2P\n  if (this.eq(p))\n    return this.dbl();\n\n  // P + (-P) = O\n  if (this.neg().eq(p))\n    return this.curve.point(null, null);\n\n  // P + Q = O\n  if (this.x.cmp(p.x) === 0)\n    return this.curve.point(null, null);\n\n  var c = this.y.redSub(p.y);\n  if (c.cmpn(0) !== 0)\n    c = c.redMul(this.x.redSub(p.x).redInvm());\n  var nx = c.redSqr().redISub(this.x).redISub(p.x);\n  var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n  return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n  if (this.inf)\n    return this;\n\n  // 2P = O\n  var ys1 = this.y.redAdd(this.y);\n  if (ys1.cmpn(0) === 0)\n    return this.curve.point(null, null);\n\n  var a = this.curve.a;\n\n  var x2 = this.x.redSqr();\n  var dyinv = ys1.redInvm();\n  var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n  var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n  var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n  return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n  return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n  return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n  k = new BN(k, 16);\n\n  if (this._hasDoubles(k))\n    return this.curve._fixedNafMul(this, k);\n  else if (this.curve.endo)\n    return this.curve._endoWnafMulAdd([ this ], [ k ]);\n  else\n    return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n  var points = [ this, p2 ];\n  var coeffs = [ k1, k2 ];\n  if (this.curve.endo)\n    return this.curve._endoWnafMulAdd(points, coeffs);\n  else\n    return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n  var points = [ this, p2 ];\n  var coeffs = [ k1, k2 ];\n  if (this.curve.endo)\n    return this.curve._endoWnafMulAdd(points, coeffs, true);\n  else\n    return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n  return this === p ||\n         this.inf === p.inf &&\n             (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n  if (this.inf)\n    return this;\n\n  var res = this.curve.point(this.x, this.y.redNeg());\n  if (_precompute && this.precomputed) {\n    var pre = this.precomputed;\n    var negate = function(p) {\n      return p.neg();\n    };\n    res.precomputed = {\n      naf: pre.naf && {\n        wnd: pre.naf.wnd,\n        points: pre.naf.points.map(negate)\n      },\n      doubles: pre.doubles && {\n        step: pre.doubles.step,\n        points: pre.doubles.points.map(negate)\n      }\n    };\n  }\n  return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n  if (this.inf)\n    return this.curve.jpoint(null, null, null);\n\n  var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n  return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n  Base.BasePoint.call(this, curve, 'jacobian');\n  if (x === null && y === null && z === null) {\n    this.x = this.curve.one;\n    this.y = this.curve.one;\n    this.z = new BN(0);\n  } else {\n    this.x = new BN(x, 16);\n    this.y = new BN(y, 16);\n    this.z = new BN(z, 16);\n  }\n  if (!this.x.red)\n    this.x = this.x.toRed(this.curve.red);\n  if (!this.y.red)\n    this.y = this.y.toRed(this.curve.red);\n  if (!this.z.red)\n    this.z = this.z.toRed(this.curve.red);\n\n  this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n  return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n  if (this.isInfinity())\n    return this.curve.point(null, null);\n\n  var zinv = this.z.redInvm();\n  var zinv2 = zinv.redSqr();\n  var ax = this.x.redMul(zinv2);\n  var ay = this.y.redMul(zinv2).redMul(zinv);\n\n  return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n  return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n  // O + P = P\n  if (this.isInfinity())\n    return p;\n\n  // P + O = P\n  if (p.isInfinity())\n    return this;\n\n  // 12M + 4S + 7A\n  var pz2 = p.z.redSqr();\n  var z2 = this.z.redSqr();\n  var u1 = this.x.redMul(pz2);\n  var u2 = p.x.redMul(z2);\n  var s1 = this.y.redMul(pz2.redMul(p.z));\n  var s2 = p.y.redMul(z2.redMul(this.z));\n\n  var h = u1.redSub(u2);\n  var r = s1.redSub(s2);\n  if (h.cmpn(0) === 0) {\n    if (r.cmpn(0) !== 0)\n      return this.curve.jpoint(null, null, null);\n    else\n      return this.dbl();\n  }\n\n  var h2 = h.redSqr();\n  var h3 = h2.redMul(h);\n  var v = u1.redMul(h2);\n\n  var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n  var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n  var nz = this.z.redMul(p.z).redMul(h);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n  // O + P = P\n  if (this.isInfinity())\n    return p.toJ();\n\n  // P + O = P\n  if (p.isInfinity())\n    return this;\n\n  // 8M + 3S + 7A\n  var z2 = this.z.redSqr();\n  var u1 = this.x;\n  var u2 = p.x.redMul(z2);\n  var s1 = this.y;\n  var s2 = p.y.redMul(z2).redMul(this.z);\n\n  var h = u1.redSub(u2);\n  var r = s1.redSub(s2);\n  if (h.cmpn(0) === 0) {\n    if (r.cmpn(0) !== 0)\n      return this.curve.jpoint(null, null, null);\n    else\n      return this.dbl();\n  }\n\n  var h2 = h.redSqr();\n  var h3 = h2.redMul(h);\n  var v = u1.redMul(h2);\n\n  var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n  var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n  var nz = this.z.redMul(h);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n  if (pow === 0)\n    return this;\n  if (this.isInfinity())\n    return this;\n  if (!pow)\n    return this.dbl();\n\n  if (this.curve.zeroA || this.curve.threeA) {\n    var r = this;\n    for (var i = 0; i < pow; i++)\n      r = r.dbl();\n    return r;\n  }\n\n  // 1M + 2S + 1A + N * (4S + 5M + 8A)\n  // N = 1 => 6M + 6S + 9A\n  var a = this.curve.a;\n  var tinv = this.curve.tinv;\n\n  var jx = this.x;\n  var jy = this.y;\n  var jz = this.z;\n  var jz4 = jz.redSqr().redSqr();\n\n  // Reuse results\n  var jyd = jy.redAdd(jy);\n  for (var i = 0; i < pow; i++) {\n    var jx2 = jx.redSqr();\n    var jyd2 = jyd.redSqr();\n    var jyd4 = jyd2.redSqr();\n    var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n    var t1 = jx.redMul(jyd2);\n    var nx = c.redSqr().redISub(t1.redAdd(t1));\n    var t2 = t1.redISub(nx);\n    var dny = c.redMul(t2);\n    dny = dny.redIAdd(dny).redISub(jyd4);\n    var nz = jyd.redMul(jz);\n    if (i + 1 < pow)\n      jz4 = jz4.redMul(jyd4);\n\n    jx = nx;\n    jz = nz;\n    jyd = dny;\n  }\n\n  return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n  if (this.isInfinity())\n    return this;\n\n  if (this.curve.zeroA)\n    return this._zeroDbl();\n  else if (this.curve.threeA)\n    return this._threeDbl();\n  else\n    return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n  var nx;\n  var ny;\n  var nz;\n  // Z = 1\n  if (this.zOne) {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n    //     #doubling-mdbl-2007-bl\n    // 1M + 5S + 14A\n\n    // XX = X1^2\n    var xx = this.x.redSqr();\n    // YY = Y1^2\n    var yy = this.y.redSqr();\n    // YYYY = YY^2\n    var yyyy = yy.redSqr();\n    // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n    var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n    s = s.redIAdd(s);\n    // M = 3 * XX + a; a = 0\n    var m = xx.redAdd(xx).redIAdd(xx);\n    // T = M ^ 2 - 2*S\n    var t = m.redSqr().redISub(s).redISub(s);\n\n    // 8 * YYYY\n    var yyyy8 = yyyy.redIAdd(yyyy);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n\n    // X3 = T\n    nx = t;\n    // Y3 = M * (S - T) - 8 * YYYY\n    ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n    // Z3 = 2*Y1\n    nz = this.y.redAdd(this.y);\n  } else {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n    //     #doubling-dbl-2009-l\n    // 2M + 5S + 13A\n\n    // A = X1^2\n    var a = this.x.redSqr();\n    // B = Y1^2\n    var b = this.y.redSqr();\n    // C = B^2\n    var c = b.redSqr();\n    // D = 2 * ((X1 + B)^2 - A - C)\n    var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n    d = d.redIAdd(d);\n    // E = 3 * A\n    var e = a.redAdd(a).redIAdd(a);\n    // F = E^2\n    var f = e.redSqr();\n\n    // 8 * C\n    var c8 = c.redIAdd(c);\n    c8 = c8.redIAdd(c8);\n    c8 = c8.redIAdd(c8);\n\n    // X3 = F - 2 * D\n    nx = f.redISub(d).redISub(d);\n    // Y3 = E * (D - X3) - 8 * C\n    ny = e.redMul(d.redISub(nx)).redISub(c8);\n    // Z3 = 2 * Y1 * Z1\n    nz = this.y.redMul(this.z);\n    nz = nz.redIAdd(nz);\n  }\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n  var nx;\n  var ny;\n  var nz;\n  // Z = 1\n  if (this.zOne) {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n    //     #doubling-mdbl-2007-bl\n    // 1M + 5S + 15A\n\n    // XX = X1^2\n    var xx = this.x.redSqr();\n    // YY = Y1^2\n    var yy = this.y.redSqr();\n    // YYYY = YY^2\n    var yyyy = yy.redSqr();\n    // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n    var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n    s = s.redIAdd(s);\n    // M = 3 * XX + a\n    var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n    // T = M^2 - 2 * S\n    var t = m.redSqr().redISub(s).redISub(s);\n    // X3 = T\n    nx = t;\n    // Y3 = M * (S - T) - 8 * YYYY\n    var yyyy8 = yyyy.redIAdd(yyyy);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n    // Z3 = 2 * Y1\n    nz = this.y.redAdd(this.y);\n  } else {\n    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n    // 3M + 5S\n\n    // delta = Z1^2\n    var delta = this.z.redSqr();\n    // gamma = Y1^2\n    var gamma = this.y.redSqr();\n    // beta = X1 * gamma\n    var beta = this.x.redMul(gamma);\n    // alpha = 3 * (X1 - delta) * (X1 + delta)\n    var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n    alpha = alpha.redAdd(alpha).redIAdd(alpha);\n    // X3 = alpha^2 - 8 * beta\n    var beta4 = beta.redIAdd(beta);\n    beta4 = beta4.redIAdd(beta4);\n    var beta8 = beta4.redAdd(beta4);\n    nx = alpha.redSqr().redISub(beta8);\n    // Z3 = (Y1 + Z1)^2 - gamma - delta\n    nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n    // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n    var ggamma8 = gamma.redSqr();\n    ggamma8 = ggamma8.redIAdd(ggamma8);\n    ggamma8 = ggamma8.redIAdd(ggamma8);\n    ggamma8 = ggamma8.redIAdd(ggamma8);\n    ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n  }\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n  var a = this.curve.a;\n\n  // 4M + 6S + 10A\n  var jx = this.x;\n  var jy = this.y;\n  var jz = this.z;\n  var jz4 = jz.redSqr().redSqr();\n\n  var jx2 = jx.redSqr();\n  var jy2 = jy.redSqr();\n\n  var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n  var jxd4 = jx.redAdd(jx);\n  jxd4 = jxd4.redIAdd(jxd4);\n  var t1 = jxd4.redMul(jy2);\n  var nx = c.redSqr().redISub(t1.redAdd(t1));\n  var t2 = t1.redISub(nx);\n\n  var jyd8 = jy2.redSqr();\n  jyd8 = jyd8.redIAdd(jyd8);\n  jyd8 = jyd8.redIAdd(jyd8);\n  jyd8 = jyd8.redIAdd(jyd8);\n  var ny = c.redMul(t2).redISub(jyd8);\n  var nz = jy.redAdd(jy).redMul(jz);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n  if (!this.curve.zeroA)\n    return this.dbl().add(this);\n\n  // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n  // 5M + 10S + ...\n\n  // XX = X1^2\n  var xx = this.x.redSqr();\n  // YY = Y1^2\n  var yy = this.y.redSqr();\n  // ZZ = Z1^2\n  var zz = this.z.redSqr();\n  // YYYY = YY^2\n  var yyyy = yy.redSqr();\n  // M = 3 * XX + a * ZZ2; a = 0\n  var m = xx.redAdd(xx).redIAdd(xx);\n  // MM = M^2\n  var mm = m.redSqr();\n  // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n  var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n  e = e.redIAdd(e);\n  e = e.redAdd(e).redIAdd(e);\n  e = e.redISub(mm);\n  // EE = E^2\n  var ee = e.redSqr();\n  // T = 16*YYYY\n  var t = yyyy.redIAdd(yyyy);\n  t = t.redIAdd(t);\n  t = t.redIAdd(t);\n  t = t.redIAdd(t);\n  // U = (M + E)^2 - MM - EE - T\n  var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n  // X3 = 4 * (X1 * EE - 4 * YY * U)\n  var yyu4 = yy.redMul(u);\n  yyu4 = yyu4.redIAdd(yyu4);\n  yyu4 = yyu4.redIAdd(yyu4);\n  var nx = this.x.redMul(ee).redISub(yyu4);\n  nx = nx.redIAdd(nx);\n  nx = nx.redIAdd(nx);\n  // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n  var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n  ny = ny.redIAdd(ny);\n  ny = ny.redIAdd(ny);\n  ny = ny.redIAdd(ny);\n  // Z3 = (Z1 + E)^2 - ZZ - EE\n  var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n  return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n  k = new BN(k, kbase);\n\n  return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n  if (p.type === 'affine')\n    return this.eq(p.toJ());\n\n  if (this === p)\n    return true;\n\n  // x1 * z2^2 == x2 * z1^2\n  var z2 = this.z.redSqr();\n  var pz2 = p.z.redSqr();\n  if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n    return false;\n\n  // y1 * z2^3 == y2 * z1^3\n  var z3 = z2.redMul(this.z);\n  var pz3 = pz2.redMul(p.z);\n  return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n  var zs = this.z.redSqr();\n  var rx = x.toRed(this.curve.red).redMul(zs);\n  if (this.x.cmp(rx) === 0)\n    return true;\n\n  var xc = x.clone();\n  var t = this.curve.redN.redMul(zs);\n  for (;;) {\n    xc.iadd(this.curve.n);\n    if (xc.cmp(this.curve.p) >= 0)\n      return false;\n\n    rx.redIAdd(t);\n    if (this.x.cmp(rx) === 0)\n      return true;\n  }\n};\n\nJPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC JPoint Infinity>';\n  return '<EC JPoint x: ' + this.x.toString(16, 2) +\n      ' y: ' + this.y.toString(16, 2) +\n      ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n  // XXX This code assumes that zero is always zero in red\n  return this.z.cmpn(0) === 0;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9zaG9ydC5qcz9jMmIzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlID0gcmVxdWlyZSgnLi4vY3VydmUnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBCYXNlID0gY3VydmUuYmFzZTtcblxudmFyIGFzc2VydCA9IGVsbGlwdGljLnV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gU2hvcnRDdXJ2ZShjb25mKSB7XG4gIEJhc2UuY2FsbCh0aGlzLCAnc2hvcnQnLCBjb25mKTtcblxuICB0aGlzLmEgPSBuZXcgQk4oY29uZi5hLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmIgPSBuZXcgQk4oY29uZi5iLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLnRpbnYgPSB0aGlzLnR3by5yZWRJbnZtKCk7XG5cbiAgdGhpcy56ZXJvQSA9IHRoaXMuYS5mcm9tUmVkKCkuY21wbigwKSA9PT0gMDtcbiAgdGhpcy50aHJlZUEgPSB0aGlzLmEuZnJvbVJlZCgpLnN1Yih0aGlzLnApLmNtcG4oLTMpID09PSAwO1xuXG4gIC8vIElmIHRoZSBjdXJ2ZSBpcyBlbmRvbW9ycGhpYywgcHJlY2FsY3VsYXRlIGJldGEgYW5kIGxhbWJkYVxuICB0aGlzLmVuZG8gPSB0aGlzLl9nZXRFbmRvbW9ycGhpc20oY29uZik7XG4gIHRoaXMuX2VuZG9XbmFmVDEgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX2VuZG9XbmFmVDIgPSBuZXcgQXJyYXkoNCk7XG59XG5pbmhlcml0cyhTaG9ydEN1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gU2hvcnRDdXJ2ZTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9tb3JwaGlzbSA9IGZ1bmN0aW9uIF9nZXRFbmRvbW9ycGhpc20oY29uZikge1xuICAvLyBObyBlZmZpY2llbnQgZW5kb21vcnBoaXNtXG4gIGlmICghdGhpcy56ZXJvQSB8fCAhdGhpcy5nIHx8ICF0aGlzLm4gfHwgdGhpcy5wLm1vZG4oMykgIT09IDEpXG4gICAgcmV0dXJuO1xuXG4gIC8vIENvbXB1dGUgYmV0YSBhbmQgbGFtYmRhLCB0aGF0IGxhbWJkYSAqIFAgPSAoYmV0YSAqIFB4OyBQeSlcbiAgdmFyIGJldGE7XG4gIHZhciBsYW1iZGE7XG4gIGlmIChjb25mLmJldGEpIHtcbiAgICBiZXRhID0gbmV3IEJOKGNvbmYuYmV0YSwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgYmV0YXMgPSB0aGlzLl9nZXRFbmRvUm9vdHModGhpcy5wKTtcbiAgICAvLyBDaG9vc2UgdGhlIHNtYWxsZXN0IGJldGFcbiAgICBiZXRhID0gYmV0YXNbMF0uY21wKGJldGFzWzFdKSA8IDAgPyBiZXRhc1swXSA6IGJldGFzWzFdO1xuICAgIGJldGEgPSBiZXRhLnRvUmVkKHRoaXMucmVkKTtcbiAgfVxuICBpZiAoY29uZi5sYW1iZGEpIHtcbiAgICBsYW1iZGEgPSBuZXcgQk4oY29uZi5sYW1iZGEsIDE2KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDaG9vc2UgdGhlIGxhbWJkYSB0aGF0IGlzIG1hdGNoaW5nIHNlbGVjdGVkIGJldGFcbiAgICB2YXIgbGFtYmRhcyA9IHRoaXMuX2dldEVuZG9Sb290cyh0aGlzLm4pO1xuICAgIGlmICh0aGlzLmcubXVsKGxhbWJkYXNbMF0pLnguY21wKHRoaXMuZy54LnJlZE11bChiZXRhKSkgPT09IDApIHtcbiAgICAgIGxhbWJkYSA9IGxhbWJkYXNbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhbWJkYSA9IGxhbWJkYXNbMV07XG4gICAgICBhc3NlcnQodGhpcy5nLm11bChsYW1iZGEpLnguY21wKHRoaXMuZy54LnJlZE11bChiZXRhKSkgPT09IDApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdldCBiYXNpcyB2ZWN0b3JzLCB1c2VkIGZvciBiYWxhbmNlZCBsZW5ndGgtdHdvIHJlcHJlc2VudGF0aW9uXG4gIHZhciBiYXNpcztcbiAgaWYgKGNvbmYuYmFzaXMpIHtcbiAgICBiYXNpcyA9IGNvbmYuYmFzaXMubWFwKGZ1bmN0aW9uKHZlYykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYTogbmV3IEJOKHZlYy5hLCAxNiksXG4gICAgICAgIGI6IG5ldyBCTih2ZWMuYiwgMTYpXG4gICAgICB9O1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGJhc2lzID0gdGhpcy5fZ2V0RW5kb0Jhc2lzKGxhbWJkYSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJldGE6IGJldGEsXG4gICAgbGFtYmRhOiBsYW1iZGEsXG4gICAgYmFzaXM6IGJhc2lzXG4gIH07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZ2V0RW5kb1Jvb3RzID0gZnVuY3Rpb24gX2dldEVuZG9Sb290cyhudW0pIHtcbiAgLy8gRmluZCByb290cyBvZiBmb3IgeF4yICsgeCArIDEgaW4gRlxuICAvLyBSb290ID0gKC0xICstIFNxcnQoLTMpKSAvIDJcbiAgLy9cbiAgdmFyIHJlZCA9IG51bSA9PT0gdGhpcy5wID8gdGhpcy5yZWQgOiBCTi5tb250KG51bSk7XG4gIHZhciB0aW52ID0gbmV3IEJOKDIpLnRvUmVkKHJlZCkucmVkSW52bSgpO1xuICB2YXIgbnRpbnYgPSB0aW52LnJlZE5lZygpO1xuXG4gIHZhciBzID0gbmV3IEJOKDMpLnRvUmVkKHJlZCkucmVkTmVnKCkucmVkU3FydCgpLnJlZE11bCh0aW52KTtcblxuICB2YXIgbDEgPSBudGludi5yZWRBZGQocykuZnJvbVJlZCgpO1xuICB2YXIgbDIgPSBudGludi5yZWRTdWIocykuZnJvbVJlZCgpO1xuICByZXR1cm4gWyBsMSwgbDIgXTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9nZXRFbmRvQmFzaXMgPSBmdW5jdGlvbiBfZ2V0RW5kb0Jhc2lzKGxhbWJkYSkge1xuICAvLyBhcHJ4U3FydCA+PSBzcXJ0KHRoaXMubilcbiAgdmFyIGFwcnhTcXJ0ID0gdGhpcy5uLnVzaHJuKE1hdGguZmxvb3IodGhpcy5uLmJpdExlbmd0aCgpIC8gMikpO1xuXG4gIC8vIDMuNzRcbiAgLy8gUnVuIEVHQ0QsIHVudGlsIHIoTCArIDEpIDwgYXByeFNxcnRcbiAgdmFyIHUgPSBsYW1iZGE7XG4gIHZhciB2ID0gdGhpcy5uLmNsb25lKCk7XG4gIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgdmFyIHkxID0gbmV3IEJOKDApO1xuICB2YXIgeDIgPSBuZXcgQk4oMCk7XG4gIHZhciB5MiA9IG5ldyBCTigxKTtcblxuICAvLyBOT1RFOiBhbGwgdmVjdG9ycyBhcmUgcm9vdHMgb2Y6IGEgKyBiICogbGFtYmRhID0gMCAobW9kIG4pXG4gIHZhciBhMDtcbiAgdmFyIGIwO1xuICAvLyBGaXJzdCB2ZWN0b3JcbiAgdmFyIGExO1xuICB2YXIgYjE7XG4gIC8vIFNlY29uZCB2ZWN0b3JcbiAgdmFyIGEyO1xuICB2YXIgYjI7XG5cbiAgdmFyIHByZXZSO1xuICB2YXIgaSA9IDA7XG4gIHZhciByO1xuICB2YXIgeDtcbiAgd2hpbGUgKHUuY21wbigwKSAhPT0gMCkge1xuICAgIHZhciBxID0gdi5kaXYodSk7XG4gICAgciA9IHYuc3ViKHEubXVsKHUpKTtcbiAgICB4ID0geDIuc3ViKHEubXVsKHgxKSk7XG4gICAgdmFyIHkgPSB5Mi5zdWIocS5tdWwoeTEpKTtcblxuICAgIGlmICghYTEgJiYgci5jbXAoYXByeFNxcnQpIDwgMCkge1xuICAgICAgYTAgPSBwcmV2Ui5uZWcoKTtcbiAgICAgIGIwID0geDE7XG4gICAgICBhMSA9IHIubmVnKCk7XG4gICAgICBiMSA9IHg7XG4gICAgfSBlbHNlIGlmIChhMSAmJiArK2kgPT09IDIpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBwcmV2UiA9IHI7XG5cbiAgICB2ID0gdTtcbiAgICB1ID0gcjtcbiAgICB4MiA9IHgxO1xuICAgIHgxID0geDtcbiAgICB5MiA9IHkxO1xuICAgIHkxID0geTtcbiAgfVxuICBhMiA9IHIubmVnKCk7XG4gIGIyID0geDtcblxuICB2YXIgbGVuMSA9IGExLnNxcigpLmFkZChiMS5zcXIoKSk7XG4gIHZhciBsZW4yID0gYTIuc3FyKCkuYWRkKGIyLnNxcigpKTtcbiAgaWYgKGxlbjIuY21wKGxlbjEpID49IDApIHtcbiAgICBhMiA9IGEwO1xuICAgIGIyID0gYjA7XG4gIH1cblxuICAvLyBOb3JtYWxpemUgc2lnbnNcbiAgaWYgKGExLm5lZ2F0aXZlKSB7XG4gICAgYTEgPSBhMS5uZWcoKTtcbiAgICBiMSA9IGIxLm5lZygpO1xuICB9XG4gIGlmIChhMi5uZWdhdGl2ZSkge1xuICAgIGEyID0gYTIubmVnKCk7XG4gICAgYjIgPSBiMi5uZWcoKTtcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgeyBhOiBhMSwgYjogYjEgfSxcbiAgICB7IGE6IGEyLCBiOiBiMiB9XG4gIF07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZW5kb1NwbGl0ID0gZnVuY3Rpb24gX2VuZG9TcGxpdChrKSB7XG4gIHZhciBiYXNpcyA9IHRoaXMuZW5kby5iYXNpcztcbiAgdmFyIHYxID0gYmFzaXNbMF07XG4gIHZhciB2MiA9IGJhc2lzWzFdO1xuXG4gIHZhciBjMSA9IHYyLmIubXVsKGspLmRpdlJvdW5kKHRoaXMubik7XG4gIHZhciBjMiA9IHYxLmIubmVnKCkubXVsKGspLmRpdlJvdW5kKHRoaXMubik7XG5cbiAgdmFyIHAxID0gYzEubXVsKHYxLmEpO1xuICB2YXIgcDIgPSBjMi5tdWwodjIuYSk7XG4gIHZhciBxMSA9IGMxLm11bCh2MS5iKTtcbiAgdmFyIHEyID0gYzIubXVsKHYyLmIpO1xuXG4gIC8vIENhbGN1bGF0ZSBhbnN3ZXJcbiAgdmFyIGsxID0gay5zdWIocDEpLnN1YihwMik7XG4gIHZhciBrMiA9IHExLmFkZChxMikubmVnKCk7XG4gIHJldHVybiB7IGsxOiBrMSwgazI6IGsyIH07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludEZyb21YID0gZnVuY3Rpb24gcG9pbnRGcm9tWCh4LCBvZGQpIHtcbiAgeCA9IG5ldyBCTih4LCAxNik7XG4gIGlmICgheC5yZWQpXG4gICAgeCA9IHgudG9SZWQodGhpcy5yZWQpO1xuXG4gIHZhciB5MiA9IHgucmVkU3FyKCkucmVkTXVsKHgpLnJlZElBZGQoeC5yZWRNdWwodGhpcy5hKSkucmVkSUFkZCh0aGlzLmIpO1xuICB2YXIgeSA9IHkyLnJlZFNxcnQoKTtcbiAgaWYgKHkucmVkU3FyKCkucmVkU3ViKHkyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICAvLyBYWFggSXMgdGhlcmUgYW55IHdheSB0byB0ZWxsIGlmIHRoZSBudW1iZXIgaXMgb2RkIHdpdGhvdXQgY29udmVydGluZyBpdFxuICAvLyB0byBub24tcmVkIGZvcm0/XG4gIHZhciBpc09kZCA9IHkuZnJvbVJlZCgpLmlzT2RkKCk7XG4gIGlmIChvZGQgJiYgIWlzT2RkIHx8ICFvZGQgJiYgaXNPZGQpXG4gICAgeSA9IHkucmVkTmVnKCk7XG5cbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSk7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKHBvaW50KSB7XG4gIGlmIChwb2ludC5pbmYpXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgdmFyIHggPSBwb2ludC54O1xuICB2YXIgeSA9IHBvaW50Lnk7XG5cbiAgdmFyIGF4ID0gdGhpcy5hLnJlZE11bCh4KTtcbiAgdmFyIHJocyA9IHgucmVkU3FyKCkucmVkTXVsKHgpLnJlZElBZGQoYXgpLnJlZElBZGQodGhpcy5iKTtcbiAgcmV0dXJuIHkucmVkU3FyKCkucmVkSVN1YihyaHMpLmNtcG4oMCkgPT09IDA7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZW5kb1duYWZNdWxBZGQgPVxuICAgIGZ1bmN0aW9uIF9lbmRvV25hZk11bEFkZChwb2ludHMsIGNvZWZmcywgamFjb2JpYW5SZXN1bHQpIHtcbiAgdmFyIG5wb2ludHMgPSB0aGlzLl9lbmRvV25hZlQxO1xuICB2YXIgbmNvZWZmcyA9IHRoaXMuX2VuZG9XbmFmVDI7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNwbGl0ID0gdGhpcy5fZW5kb1NwbGl0KGNvZWZmc1tpXSk7XG4gICAgdmFyIHAgPSBwb2ludHNbaV07XG4gICAgdmFyIGJldGEgPSBwLl9nZXRCZXRhKCk7XG5cbiAgICBpZiAoc3BsaXQuazEubmVnYXRpdmUpIHtcbiAgICAgIHNwbGl0LmsxLmluZWcoKTtcbiAgICAgIHAgPSBwLm5lZyh0cnVlKTtcbiAgICB9XG4gICAgaWYgKHNwbGl0LmsyLm5lZ2F0aXZlKSB7XG4gICAgICBzcGxpdC5rMi5pbmVnKCk7XG4gICAgICBiZXRhID0gYmV0YS5uZWcodHJ1ZSk7XG4gICAgfVxuXG4gICAgbnBvaW50c1tpICogMl0gPSBwO1xuICAgIG5wb2ludHNbaSAqIDIgKyAxXSA9IGJldGE7XG4gICAgbmNvZWZmc1tpICogMl0gPSBzcGxpdC5rMTtcbiAgICBuY29lZmZzW2kgKiAyICsgMV0gPSBzcGxpdC5rMjtcbiAgfVxuICB2YXIgcmVzID0gdGhpcy5fd25hZk11bEFkZCgxLCBucG9pbnRzLCBuY29lZmZzLCBpICogMiwgamFjb2JpYW5SZXN1bHQpO1xuXG4gIC8vIENsZWFuLXVwIHJlZmVyZW5jZXMgdG8gcG9pbnRzIGFuZCBjb2VmZmljaWVudHNcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBpICogMjsgaisrKSB7XG4gICAgbnBvaW50c1tqXSA9IG51bGw7XG4gICAgbmNvZWZmc1tqXSA9IG51bGw7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cbmZ1bmN0aW9uIFBvaW50KGN1cnZlLCB4LCB5LCBpc1JlZCkge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAnYWZmaW5lJyk7XG4gIGlmICh4ID09PSBudWxsICYmIHkgPT09IG51bGwpIHtcbiAgICB0aGlzLnggPSBudWxsO1xuICAgIHRoaXMueSA9IG51bGw7XG4gICAgdGhpcy5pbmYgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy55ID0gbmV3IEJOKHksIDE2KTtcbiAgICAvLyBGb3JjZSByZWRnb21lcnkgcmVwcmVzZW50YXRpb24gd2hlbiBsb2FkaW5nIGZyb20gSlNPTlxuICAgIGlmIChpc1JlZCkge1xuICAgICAgdGhpcy54LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICAgIHRoaXMueS5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgfVxuICAgIGlmICghdGhpcy54LnJlZClcbiAgICAgIHRoaXMueCA9IHRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnkucmVkKVxuICAgICAgdGhpcy55ID0gdGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB0aGlzLmluZiA9IGZhbHNlO1xuICB9XG59XG5pbmhlcml0cyhQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHksIGlzUmVkKSB7XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcywgeCwgeSwgaXNSZWQpO1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqLCByZWQpIHtcbiAgcmV0dXJuIFBvaW50LmZyb21KU09OKHRoaXMsIG9iaiwgcmVkKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZ2V0QmV0YSA9IGZ1bmN0aW9uIF9nZXRCZXRhKCkge1xuICBpZiAoIXRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm47XG5cbiAgdmFyIHByZSA9IHRoaXMucHJlY29tcHV0ZWQ7XG4gIGlmIChwcmUgJiYgcHJlLmJldGEpXG4gICAgcmV0dXJuIHByZS5iZXRhO1xuXG4gIHZhciBiZXRhID0gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTXVsKHRoaXMuY3VydmUuZW5kby5iZXRhKSwgdGhpcy55KTtcbiAgaWYgKHByZSkge1xuICAgIHZhciBjdXJ2ZSA9IHRoaXMuY3VydmU7XG4gICAgdmFyIGVuZG9NdWwgPSBmdW5jdGlvbihwKSB7XG4gICAgICByZXR1cm4gY3VydmUucG9pbnQocC54LnJlZE11bChjdXJ2ZS5lbmRvLmJldGEpLCBwLnkpO1xuICAgIH07XG4gICAgcHJlLmJldGEgPSBiZXRhO1xuICAgIGJldGEucHJlY29tcHV0ZWQgPSB7XG4gICAgICBiZXRhOiBudWxsLFxuICAgICAgbmFmOiBwcmUubmFmICYmIHtcbiAgICAgICAgd25kOiBwcmUubmFmLnduZCxcbiAgICAgICAgcG9pbnRzOiBwcmUubmFmLnBvaW50cy5tYXAoZW5kb011bClcbiAgICAgIH0sXG4gICAgICBkb3VibGVzOiBwcmUuZG91YmxlcyAmJiB7XG4gICAgICAgIHN0ZXA6IHByZS5kb3VibGVzLnN0ZXAsXG4gICAgICAgIHBvaW50czogcHJlLmRvdWJsZXMucG9pbnRzLm1hcChlbmRvTXVsKVxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIGJldGE7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xuICBpZiAoIXRoaXMucHJlY29tcHV0ZWQpXG4gICAgcmV0dXJuIFsgdGhpcy54LCB0aGlzLnkgXTtcblxuICByZXR1cm4gWyB0aGlzLngsIHRoaXMueSwgdGhpcy5wcmVjb21wdXRlZCAmJiB7XG4gICAgZG91YmxlczogdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzICYmIHtcbiAgICAgIHN0ZXA6IHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5zdGVwLFxuICAgICAgcG9pbnRzOiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMucG9pbnRzLnNsaWNlKDEpXG4gICAgfSxcbiAgICBuYWY6IHRoaXMucHJlY29tcHV0ZWQubmFmICYmIHtcbiAgICAgIHduZDogdGhpcy5wcmVjb21wdXRlZC5uYWYud25kLFxuICAgICAgcG9pbnRzOiB0aGlzLnByZWNvbXB1dGVkLm5hZi5wb2ludHMuc2xpY2UoMSlcbiAgICB9XG4gIH0gXTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaiwgcmVkKSB7XG4gIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJylcbiAgICBvYmogPSBKU09OLnBhcnNlKG9iaik7XG4gIHZhciByZXMgPSBjdXJ2ZS5wb2ludChvYmpbMF0sIG9ialsxXSwgcmVkKTtcbiAgaWYgKCFvYmpbMl0pXG4gICAgcmV0dXJuIHJlcztcblxuICBmdW5jdGlvbiBvYmoycG9pbnQob2JqKSB7XG4gICAgcmV0dXJuIGN1cnZlLnBvaW50KG9ialswXSwgb2JqWzFdLCByZWQpO1xuICB9XG5cbiAgdmFyIHByZSA9IG9ialsyXTtcbiAgcmVzLnByZWNvbXB1dGVkID0ge1xuICAgIGJldGE6IG51bGwsXG4gICAgZG91YmxlczogcHJlLmRvdWJsZXMgJiYge1xuICAgICAgc3RlcDogcHJlLmRvdWJsZXMuc3RlcCxcbiAgICAgIHBvaW50czogWyByZXMgXS5jb25jYXQocHJlLmRvdWJsZXMucG9pbnRzLm1hcChvYmoycG9pbnQpKVxuICAgIH0sXG4gICAgbmFmOiBwcmUubmFmICYmIHtcbiAgICAgIHduZDogcHJlLm5hZi53bmQsXG4gICAgICBwb2ludHM6IFsgcmVzIF0uY29uY2F0KHByZS5uYWYucG9pbnRzLm1hcChvYmoycG9pbnQpKVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHJlcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIFBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIFBvaW50IHg6ICcgKyB0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHk6ICcgKyB0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgcmV0dXJuIHRoaXMuaW5mO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChwKSB7XG4gIC8vIE8gKyBQID0gUFxuICBpZiAodGhpcy5pbmYpXG4gICAgcmV0dXJuIHA7XG5cbiAgLy8gUCArIE8gPSBQXG4gIGlmIChwLmluZilcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBQICsgUCA9IDJQXG4gIGlmICh0aGlzLmVxKHApKVxuICAgIHJldHVybiB0aGlzLmRibCgpO1xuXG4gIC8vIFAgKyAoLVApID0gT1xuICBpZiAodGhpcy5uZWcoKS5lcShwKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLCBudWxsKTtcblxuICAvLyBQICsgUSA9IE9cbiAgaWYgKHRoaXMueC5jbXAocC54KSA9PT0gMClcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLCBudWxsKTtcblxuICB2YXIgYyA9IHRoaXMueS5yZWRTdWIocC55KTtcbiAgaWYgKGMuY21wbigwKSAhPT0gMClcbiAgICBjID0gYy5yZWRNdWwodGhpcy54LnJlZFN1YihwLngpLnJlZEludm0oKSk7XG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0aGlzLngpLnJlZElTdWIocC54KTtcbiAgdmFyIG55ID0gYy5yZWRNdWwodGhpcy54LnJlZFN1YihueCkpLnJlZElTdWIodGhpcy55KTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5kYmwgPSBmdW5jdGlvbiBkYmwoKSB7XG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyAyUCA9IE9cbiAgdmFyIHlzMSA9IHRoaXMueS5yZWRBZGQodGhpcy55KTtcbiAgaWYgKHlzMS5jbXBuKDApID09PSAwKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciBhID0gdGhpcy5jdXJ2ZS5hO1xuXG4gIHZhciB4MiA9IHRoaXMueC5yZWRTcXIoKTtcbiAgdmFyIGR5aW52ID0geXMxLnJlZEludm0oKTtcbiAgdmFyIGMgPSB4Mi5yZWRBZGQoeDIpLnJlZElBZGQoeDIpLnJlZElBZGQoYSkucmVkTXVsKGR5aW52KTtcblxuICB2YXIgbnggPSBjLnJlZFNxcigpLnJlZElTdWIodGhpcy54LnJlZEFkZCh0aGlzLngpKTtcbiAgdmFyIG55ID0gYy5yZWRNdWwodGhpcy54LnJlZFN1YihueCkpLnJlZElTdWIodGhpcy55KTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uIGdldFkoKSB7XG4gIHJldHVybiB0aGlzLnkuZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIGsgPSBuZXcgQk4oaywgMTYpO1xuXG4gIGlmICh0aGlzLl9oYXNEb3VibGVzKGspKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLCBrKTtcbiAgZWxzZSBpZiAodGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChbIHRoaXMgXSwgWyBrIF0pO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWwodGhpcywgayk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsQWRkID0gZnVuY3Rpb24gbXVsQWRkKGsxLCBwMiwgazIpIHtcbiAgdmFyIHBvaW50cyA9IFsgdGhpcywgcDIgXTtcbiAgdmFyIGNvZWZmcyA9IFsgazEsIGsyIF07XG4gIGlmICh0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIHBvaW50cywgY29lZmZzLCAyKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qbXVsQWRkID0gZnVuY3Rpb24gam11bEFkZChrMSwgcDIsIGsyKSB7XG4gIHZhciBwb2ludHMgPSBbIHRoaXMsIHAyIF07XG4gIHZhciBjb2VmZnMgPSBbIGsxLCBrMiBdO1xuICBpZiAodGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChwb2ludHMsIGNvZWZmcywgdHJ1ZSk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLCBwb2ludHMsIGNvZWZmcywgMiwgdHJ1ZSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcShwKSB7XG4gIHJldHVybiB0aGlzID09PSBwIHx8XG4gICAgICAgICB0aGlzLmluZiA9PT0gcC5pbmYgJiZcbiAgICAgICAgICAgICAodGhpcy5pbmYgfHwgdGhpcy54LmNtcChwLngpID09PSAwICYmIHRoaXMueS5jbXAocC55KSA9PT0gMCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnKF9wcmVjb21wdXRlKSB7XG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gdGhpcztcblxuICB2YXIgcmVzID0gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngsIHRoaXMueS5yZWROZWcoKSk7XG4gIGlmIChfcHJlY29tcHV0ZSAmJiB0aGlzLnByZWNvbXB1dGVkKSB7XG4gICAgdmFyIHByZSA9IHRoaXMucHJlY29tcHV0ZWQ7XG4gICAgdmFyIG5lZ2F0ZSA9IGZ1bmN0aW9uKHApIHtcbiAgICAgIHJldHVybiBwLm5lZygpO1xuICAgIH07XG4gICAgcmVzLnByZWNvbXB1dGVkID0ge1xuICAgICAgbmFmOiBwcmUubmFmICYmIHtcbiAgICAgICAgd25kOiBwcmUubmFmLnduZCxcbiAgICAgICAgcG9pbnRzOiBwcmUubmFmLnBvaW50cy5tYXAobmVnYXRlKVxuICAgICAgfSxcbiAgICAgIGRvdWJsZXM6IHByZS5kb3VibGVzICYmIHtcbiAgICAgICAgc3RlcDogcHJlLmRvdWJsZXMuc3RlcCxcbiAgICAgICAgcG9pbnRzOiBwcmUuZG91Ymxlcy5wb2ludHMubWFwKG5lZ2F0ZSlcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIHJldHVybiByZXM7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUudG9KID0gZnVuY3Rpb24gdG9KKCkge1xuICBpZiAodGhpcy5pbmYpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuXG4gIHZhciByZXMgPSB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsIHRoaXMueSwgdGhpcy5jdXJ2ZS5vbmUpO1xuICByZXR1cm4gcmVzO1xufTtcblxuZnVuY3Rpb24gSlBvaW50KGN1cnZlLCB4LCB5LCB6KSB7XG4gIEJhc2UuQmFzZVBvaW50LmNhbGwodGhpcywgY3VydmUsICdqYWNvYmlhbicpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB5ID09PSBudWxsICYmIHogPT09IG51bGwpIHtcbiAgICB0aGlzLnggPSB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnkgPSB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnogPSBuZXcgQk4oMCk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnkgPSBuZXcgQk4oeSwgMTYpO1xuICAgIHRoaXMueiA9IG5ldyBCTih6LCAxNik7XG4gIH1cbiAgaWYgKCF0aGlzLngucmVkKVxuICAgIHRoaXMueCA9IHRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIGlmICghdGhpcy55LnJlZClcbiAgICB0aGlzLnkgPSB0aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICBpZiAoIXRoaXMuei5yZWQpXG4gICAgdGhpcy56ID0gdGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcblxuICB0aGlzLnpPbmUgPSB0aGlzLnogPT09IHRoaXMuY3VydmUub25lO1xufVxuaW5oZXJpdHMoSlBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cblNob3J0Q3VydmUucHJvdG90eXBlLmpwb2ludCA9IGZ1bmN0aW9uIGpwb2ludCh4LCB5LCB6KSB7XG4gIHJldHVybiBuZXcgSlBvaW50KHRoaXMsIHgsIHksIHopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS50b1AgPSBmdW5jdGlvbiB0b1AoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLCBudWxsKTtcblxuICB2YXIgemludiA9IHRoaXMuei5yZWRJbnZtKCk7XG4gIHZhciB6aW52MiA9IHppbnYucmVkU3FyKCk7XG4gIHZhciBheCA9IHRoaXMueC5yZWRNdWwoemludjIpO1xuICB2YXIgYXkgPSB0aGlzLnkucmVkTXVsKHppbnYyKS5yZWRNdWwoemludik7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQoYXgsIGF5KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnKCkge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQodGhpcy54LCB0aGlzLnkucmVkTmVnKCksIHRoaXMueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChwKSB7XG4gIC8vIE8gKyBQID0gUFxuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHA7XG5cbiAgLy8gUCArIE8gPSBQXG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyAxMk0gKyA0UyArIDdBXG4gIHZhciBwejIgPSBwLnoucmVkU3FyKCk7XG4gIHZhciB6MiA9IHRoaXMuei5yZWRTcXIoKTtcbiAgdmFyIHUxID0gdGhpcy54LnJlZE11bChwejIpO1xuICB2YXIgdTIgPSBwLngucmVkTXVsKHoyKTtcbiAgdmFyIHMxID0gdGhpcy55LnJlZE11bChwejIucmVkTXVsKHAueikpO1xuICB2YXIgczIgPSBwLnkucmVkTXVsKHoyLnJlZE11bCh0aGlzLnopKTtcblxuICB2YXIgaCA9IHUxLnJlZFN1Yih1Mik7XG4gIHZhciByID0gczEucmVkU3ViKHMyKTtcbiAgaWYgKGguY21wbigwKSA9PT0gMCkge1xuICAgIGlmIChyLmNtcG4oMCkgIT09IDApXG4gICAgICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIHRoaXMuZGJsKCk7XG4gIH1cblxuICB2YXIgaDIgPSBoLnJlZFNxcigpO1xuICB2YXIgaDMgPSBoMi5yZWRNdWwoaCk7XG4gIHZhciB2ID0gdTEucmVkTXVsKGgyKTtcblxuICB2YXIgbnggPSByLnJlZFNxcigpLnJlZElBZGQoaDMpLnJlZElTdWIodikucmVkSVN1Yih2KTtcbiAgdmFyIG55ID0gci5yZWRNdWwodi5yZWRJU3ViKG54KSkucmVkSVN1YihzMS5yZWRNdWwoaDMpKTtcbiAgdmFyIG56ID0gdGhpcy56LnJlZE11bChwLnopLnJlZE11bChoKTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLm1peGVkQWRkID0gZnVuY3Rpb24gbWl4ZWRBZGQocCkge1xuICAvLyBPICsgUCA9IFBcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiBwLnRvSigpO1xuXG4gIC8vIFAgKyBPID0gUFxuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gOE0gKyAzUyArIDdBXG4gIHZhciB6MiA9IHRoaXMuei5yZWRTcXIoKTtcbiAgdmFyIHUxID0gdGhpcy54O1xuICB2YXIgdTIgPSBwLngucmVkTXVsKHoyKTtcbiAgdmFyIHMxID0gdGhpcy55O1xuICB2YXIgczIgPSBwLnkucmVkTXVsKHoyKS5yZWRNdWwodGhpcy56KTtcblxuICB2YXIgaCA9IHUxLnJlZFN1Yih1Mik7XG4gIHZhciByID0gczEucmVkU3ViKHMyKTtcbiAgaWYgKGguY21wbigwKSA9PT0gMCkge1xuICAgIGlmIChyLmNtcG4oMCkgIT09IDApXG4gICAgICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIHRoaXMuZGJsKCk7XG4gIH1cblxuICB2YXIgaDIgPSBoLnJlZFNxcigpO1xuICB2YXIgaDMgPSBoMi5yZWRNdWwoaCk7XG4gIHZhciB2ID0gdTEucmVkTXVsKGgyKTtcblxuICB2YXIgbnggPSByLnJlZFNxcigpLnJlZElBZGQoaDMpLnJlZElTdWIodikucmVkSVN1Yih2KTtcbiAgdmFyIG55ID0gci5yZWRNdWwodi5yZWRJU3ViKG54KSkucmVkSVN1YihzMS5yZWRNdWwoaDMpKTtcbiAgdmFyIG56ID0gdGhpcy56LnJlZE11bChoKTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmRibHAgPSBmdW5jdGlvbiBkYmxwKHBvdykge1xuICBpZiAocG93ID09PSAwKVxuICAgIHJldHVybiB0aGlzO1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG4gIGlmICghcG93KVxuICAgIHJldHVybiB0aGlzLmRibCgpO1xuXG4gIGlmICh0aGlzLmN1cnZlLnplcm9BIHx8IHRoaXMuY3VydmUudGhyZWVBKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG93OyBpKyspXG4gICAgICByID0gci5kYmwoKTtcbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIC8vIDFNICsgMlMgKyAxQSArIE4gKiAoNFMgKyA1TSArIDhBKVxuICAvLyBOID0gMSA9PiA2TSArIDZTICsgOUFcbiAgdmFyIGEgPSB0aGlzLmN1cnZlLmE7XG4gIHZhciB0aW52ID0gdGhpcy5jdXJ2ZS50aW52O1xuXG4gIHZhciBqeCA9IHRoaXMueDtcbiAgdmFyIGp5ID0gdGhpcy55O1xuICB2YXIganogPSB0aGlzLno7XG4gIHZhciBqejQgPSBqei5yZWRTcXIoKS5yZWRTcXIoKTtcblxuICAvLyBSZXVzZSByZXN1bHRzXG4gIHZhciBqeWQgPSBqeS5yZWRBZGQoankpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBvdzsgaSsrKSB7XG4gICAgdmFyIGp4MiA9IGp4LnJlZFNxcigpO1xuICAgIHZhciBqeWQyID0ganlkLnJlZFNxcigpO1xuICAgIHZhciBqeWQ0ID0ganlkMi5yZWRTcXIoKTtcbiAgICB2YXIgYyA9IGp4Mi5yZWRBZGQoangyKS5yZWRJQWRkKGp4MikucmVkSUFkZChhLnJlZE11bChqejQpKTtcblxuICAgIHZhciB0MSA9IGp4LnJlZE11bChqeWQyKTtcbiAgICB2YXIgbnggPSBjLnJlZFNxcigpLnJlZElTdWIodDEucmVkQWRkKHQxKSk7XG4gICAgdmFyIHQyID0gdDEucmVkSVN1YihueCk7XG4gICAgdmFyIGRueSA9IGMucmVkTXVsKHQyKTtcbiAgICBkbnkgPSBkbnkucmVkSUFkZChkbnkpLnJlZElTdWIoanlkNCk7XG4gICAgdmFyIG56ID0ganlkLnJlZE11bChqeik7XG4gICAgaWYgKGkgKyAxIDwgcG93KVxuICAgICAgano0ID0gano0LnJlZE11bChqeWQ0KTtcblxuICAgIGp4ID0gbng7XG4gICAganogPSBuejtcbiAgICBqeWQgPSBkbnk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoangsIGp5ZC5yZWRNdWwodGludiksIGp6KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgaWYgKHRoaXMuY3VydmUuemVyb0EpXG4gICAgcmV0dXJuIHRoaXMuX3plcm9EYmwoKTtcbiAgZWxzZSBpZiAodGhpcy5jdXJ2ZS50aHJlZUEpXG4gICAgcmV0dXJuIHRoaXMuX3RocmVlRGJsKCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fZGJsKCk7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLl96ZXJvRGJsID0gZnVuY3Rpb24gX3plcm9EYmwoKSB7XG4gIHZhciBueDtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIC8vIFogPSAxXG4gIGlmICh0aGlzLnpPbmUpIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTAuaHRtbFxuICAgIC8vICAgICAjZG91YmxpbmctbWRibC0yMDA3LWJsXG4gICAgLy8gMU0gKyA1UyArIDE0QVxuXG4gICAgLy8gWFggPSBYMV4yXG4gICAgdmFyIHh4ID0gdGhpcy54LnJlZFNxcigpO1xuICAgIC8vIFlZID0gWTFeMlxuICAgIHZhciB5eSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBZWVlZID0gWVleMlxuICAgIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gICAgLy8gUyA9IDIgKiAoKFgxICsgWVkpXjIgLSBYWCAtIFlZWVkpXG4gICAgdmFyIHMgPSB0aGlzLngucmVkQWRkKHl5KS5yZWRTcXIoKS5yZWRJU3ViKHh4KS5yZWRJU3ViKHl5eXkpO1xuICAgIHMgPSBzLnJlZElBZGQocyk7XG4gICAgLy8gTSA9IDMgKiBYWCArIGE7IGEgPSAwXG4gICAgdmFyIG0gPSB4eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpO1xuICAgIC8vIFQgPSBNIF4gMiAtIDIqU1xuICAgIHZhciB0ID0gbS5yZWRTcXIoKS5yZWRJU3ViKHMpLnJlZElTdWIocyk7XG5cbiAgICAvLyA4ICogWVlZWVxuICAgIHZhciB5eXl5OCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG5cbiAgICAvLyBYMyA9IFRcbiAgICBueCA9IHQ7XG4gICAgLy8gWTMgPSBNICogKFMgLSBUKSAtIDggKiBZWVlZXG4gICAgbnkgPSBtLnJlZE11bChzLnJlZElTdWIodCkpLnJlZElTdWIoeXl5eTgpO1xuICAgIC8vIFozID0gMipZMVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICB9IGVsc2Uge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMC5odG1sXG4gICAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOS1sXG4gICAgLy8gMk0gKyA1UyArIDEzQVxuXG4gICAgLy8gQSA9IFgxXjJcbiAgICB2YXIgYSA9IHRoaXMueC5yZWRTcXIoKTtcbiAgICAvLyBCID0gWTFeMlxuICAgIHZhciBiID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIEMgPSBCXjJcbiAgICB2YXIgYyA9IGIucmVkU3FyKCk7XG4gICAgLy8gRCA9IDIgKiAoKFgxICsgQileMiAtIEEgLSBDKVxuICAgIHZhciBkID0gdGhpcy54LnJlZEFkZChiKS5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYyk7XG4gICAgZCA9IGQucmVkSUFkZChkKTtcbiAgICAvLyBFID0gMyAqIEFcbiAgICB2YXIgZSA9IGEucmVkQWRkKGEpLnJlZElBZGQoYSk7XG4gICAgLy8gRiA9IEVeMlxuICAgIHZhciBmID0gZS5yZWRTcXIoKTtcblxuICAgIC8vIDggKiBDXG4gICAgdmFyIGM4ID0gYy5yZWRJQWRkKGMpO1xuICAgIGM4ID0gYzgucmVkSUFkZChjOCk7XG4gICAgYzggPSBjOC5yZWRJQWRkKGM4KTtcblxuICAgIC8vIFgzID0gRiAtIDIgKiBEXG4gICAgbnggPSBmLnJlZElTdWIoZCkucmVkSVN1YihkKTtcbiAgICAvLyBZMyA9IEUgKiAoRCAtIFgzKSAtIDggKiBDXG4gICAgbnkgPSBlLnJlZE11bChkLnJlZElTdWIobngpKS5yZWRJU3ViKGM4KTtcbiAgICAvLyBaMyA9IDIgKiBZMSAqIFoxXG4gICAgbnogPSB0aGlzLnkucmVkTXVsKHRoaXMueik7XG4gICAgbnogPSBuei5yZWRJQWRkKG56KTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuX3RocmVlRGJsID0gZnVuY3Rpb24gX3RocmVlRGJsKCkge1xuICB2YXIgbng7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICAvLyBaID0gMVxuICBpZiAodGhpcy56T25lKSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0zLmh0bWxcbiAgICAvLyAgICAgI2RvdWJsaW5nLW1kYmwtMjAwNy1ibFxuICAgIC8vIDFNICsgNVMgKyAxNUFcblxuICAgIC8vIFhYID0gWDFeMlxuICAgIHZhciB4eCA9IHRoaXMueC5yZWRTcXIoKTtcbiAgICAvLyBZWSA9IFkxXjJcbiAgICB2YXIgeXkgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gWVlZWSA9IFlZXjJcbiAgICB2YXIgeXl5eSA9IHl5LnJlZFNxcigpO1xuICAgIC8vIFMgPSAyICogKChYMSArIFlZKV4yIC0gWFggLSBZWVlZKVxuICAgIHZhciBzID0gdGhpcy54LnJlZEFkZCh5eSkucmVkU3FyKCkucmVkSVN1Yih4eCkucmVkSVN1Yih5eXl5KTtcbiAgICBzID0gcy5yZWRJQWRkKHMpO1xuICAgIC8vIE0gPSAzICogWFggKyBhXG4gICAgdmFyIG0gPSB4eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpLnJlZElBZGQodGhpcy5jdXJ2ZS5hKTtcbiAgICAvLyBUID0gTV4yIC0gMiAqIFNcbiAgICB2YXIgdCA9IG0ucmVkU3FyKCkucmVkSVN1YihzKS5yZWRJU3ViKHMpO1xuICAgIC8vIFgzID0gVFxuICAgIG54ID0gdDtcbiAgICAvLyBZMyA9IE0gKiAoUyAtIFQpIC0gOCAqIFlZWVlcbiAgICB2YXIgeXl5eTggPSB5eXl5LnJlZElBZGQoeXl5eSk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIG55ID0gbS5yZWRNdWwocy5yZWRJU3ViKHQpKS5yZWRJU3ViKHl5eXk4KTtcbiAgICAvLyBaMyA9IDIgKiBZMVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICB9IGVsc2Uge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMy5odG1sI2RvdWJsaW5nLWRibC0yMDAxLWJcbiAgICAvLyAzTSArIDVTXG5cbiAgICAvLyBkZWx0YSA9IFoxXjJcbiAgICB2YXIgZGVsdGEgPSB0aGlzLnoucmVkU3FyKCk7XG4gICAgLy8gZ2FtbWEgPSBZMV4yXG4gICAgdmFyIGdhbW1hID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIGJldGEgPSBYMSAqIGdhbW1hXG4gICAgdmFyIGJldGEgPSB0aGlzLngucmVkTXVsKGdhbW1hKTtcbiAgICAvLyBhbHBoYSA9IDMgKiAoWDEgLSBkZWx0YSkgKiAoWDEgKyBkZWx0YSlcbiAgICB2YXIgYWxwaGEgPSB0aGlzLngucmVkU3ViKGRlbHRhKS5yZWRNdWwodGhpcy54LnJlZEFkZChkZWx0YSkpO1xuICAgIGFscGhhID0gYWxwaGEucmVkQWRkKGFscGhhKS5yZWRJQWRkKGFscGhhKTtcbiAgICAvLyBYMyA9IGFscGhhXjIgLSA4ICogYmV0YVxuICAgIHZhciBiZXRhNCA9IGJldGEucmVkSUFkZChiZXRhKTtcbiAgICBiZXRhNCA9IGJldGE0LnJlZElBZGQoYmV0YTQpO1xuICAgIHZhciBiZXRhOCA9IGJldGE0LnJlZEFkZChiZXRhNCk7XG4gICAgbnggPSBhbHBoYS5yZWRTcXIoKS5yZWRJU3ViKGJldGE4KTtcbiAgICAvLyBaMyA9IChZMSArIFoxKV4yIC0gZ2FtbWEgLSBkZWx0YVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIoZ2FtbWEpLnJlZElTdWIoZGVsdGEpO1xuICAgIC8vIFkzID0gYWxwaGEgKiAoNCAqIGJldGEgLSBYMykgLSA4ICogZ2FtbWFeMlxuICAgIHZhciBnZ2FtbWE4ID0gZ2FtbWEucmVkU3FyKCk7XG4gICAgZ2dhbW1hOCA9IGdnYW1tYTgucmVkSUFkZChnZ2FtbWE4KTtcbiAgICBnZ2FtbWE4ID0gZ2dhbW1hOC5yZWRJQWRkKGdnYW1tYTgpO1xuICAgIGdnYW1tYTggPSBnZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7XG4gICAgbnkgPSBhbHBoYS5yZWRNdWwoYmV0YTQucmVkSVN1YihueCkpLnJlZElTdWIoZ2dhbW1hOCk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLl9kYmwgPSBmdW5jdGlvbiBfZGJsKCkge1xuICB2YXIgYSA9IHRoaXMuY3VydmUuYTtcblxuICAvLyA0TSArIDZTICsgMTBBXG4gIHZhciBqeCA9IHRoaXMueDtcbiAgdmFyIGp5ID0gdGhpcy55O1xuICB2YXIganogPSB0aGlzLno7XG4gIHZhciBqejQgPSBqei5yZWRTcXIoKS5yZWRTcXIoKTtcblxuICB2YXIgangyID0gangucmVkU3FyKCk7XG4gIHZhciBqeTIgPSBqeS5yZWRTcXIoKTtcblxuICB2YXIgYyA9IGp4Mi5yZWRBZGQoangyKS5yZWRJQWRkKGp4MikucmVkSUFkZChhLnJlZE11bChqejQpKTtcblxuICB2YXIganhkNCA9IGp4LnJlZEFkZChqeCk7XG4gIGp4ZDQgPSBqeGQ0LnJlZElBZGQoanhkNCk7XG4gIHZhciB0MSA9IGp4ZDQucmVkTXVsKGp5Mik7XG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0MS5yZWRBZGQodDEpKTtcbiAgdmFyIHQyID0gdDEucmVkSVN1YihueCk7XG5cbiAgdmFyIGp5ZDggPSBqeTIucmVkU3FyKCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIHZhciBueSA9IGMucmVkTXVsKHQyKS5yZWRJU3ViKGp5ZDgpO1xuICB2YXIgbnogPSBqeS5yZWRBZGQoankpLnJlZE11bChqeik7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS50cnBsID0gZnVuY3Rpb24gdHJwbCgpIHtcbiAgaWYgKCF0aGlzLmN1cnZlLnplcm9BKVxuICAgIHJldHVybiB0aGlzLmRibCgpLmFkZCh0aGlzKTtcblxuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTAuaHRtbCN0cmlwbGluZy10cGwtMjAwNy1ibFxuICAvLyA1TSArIDEwUyArIC4uLlxuXG4gIC8vIFhYID0gWDFeMlxuICB2YXIgeHggPSB0aGlzLngucmVkU3FyKCk7XG4gIC8vIFlZID0gWTFeMlxuICB2YXIgeXkgPSB0aGlzLnkucmVkU3FyKCk7XG4gIC8vIFpaID0gWjFeMlxuICB2YXIgenogPSB0aGlzLnoucmVkU3FyKCk7XG4gIC8vIFlZWVkgPSBZWV4yXG4gIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gIC8vIE0gPSAzICogWFggKyBhICogWloyOyBhID0gMFxuICB2YXIgbSA9IHh4LnJlZEFkZCh4eCkucmVkSUFkZCh4eCk7XG4gIC8vIE1NID0gTV4yXG4gIHZhciBtbSA9IG0ucmVkU3FyKCk7XG4gIC8vIEUgPSA2ICogKChYMSArIFlZKV4yIC0gWFggLSBZWVlZKSAtIE1NXG4gIHZhciBlID0gdGhpcy54LnJlZEFkZCh5eSkucmVkU3FyKCkucmVkSVN1Yih4eCkucmVkSVN1Yih5eXl5KTtcbiAgZSA9IGUucmVkSUFkZChlKTtcbiAgZSA9IGUucmVkQWRkKGUpLnJlZElBZGQoZSk7XG4gIGUgPSBlLnJlZElTdWIobW0pO1xuICAvLyBFRSA9IEVeMlxuICB2YXIgZWUgPSBlLnJlZFNxcigpO1xuICAvLyBUID0gMTYqWVlZWVxuICB2YXIgdCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgLy8gVSA9IChNICsgRSleMiAtIE1NIC0gRUUgLSBUXG4gIHZhciB1ID0gbS5yZWRJQWRkKGUpLnJlZFNxcigpLnJlZElTdWIobW0pLnJlZElTdWIoZWUpLnJlZElTdWIodCk7XG4gIC8vIFgzID0gNCAqIChYMSAqIEVFIC0gNCAqIFlZICogVSlcbiAgdmFyIHl5dTQgPSB5eS5yZWRNdWwodSk7XG4gIHl5dTQgPSB5eXU0LnJlZElBZGQoeXl1NCk7XG4gIHl5dTQgPSB5eXU0LnJlZElBZGQoeXl1NCk7XG4gIHZhciBueCA9IHRoaXMueC5yZWRNdWwoZWUpLnJlZElTdWIoeXl1NCk7XG4gIG54ID0gbngucmVkSUFkZChueCk7XG4gIG54ID0gbngucmVkSUFkZChueCk7XG4gIC8vIFkzID0gOCAqIFkxICogKFUgKiAoVCAtIFUpIC0gRSAqIEVFKVxuICB2YXIgbnkgPSB0aGlzLnkucmVkTXVsKHUucmVkTXVsKHQucmVkSVN1Yih1KSkucmVkSVN1YihlLnJlZE11bChlZSkpKTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgLy8gWjMgPSAoWjEgKyBFKV4yIC0gWlogLSBFRVxuICB2YXIgbnogPSB0aGlzLnoucmVkQWRkKGUpLnJlZFNxcigpLnJlZElTdWIoenopLnJlZElTdWIoZWUpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGssIGtiYXNlKSB7XG4gIGsgPSBuZXcgQk4oaywga2Jhc2UpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsIGspO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKHApIHtcbiAgaWYgKHAudHlwZSA9PT0gJ2FmZmluZScpXG4gICAgcmV0dXJuIHRoaXMuZXEocC50b0ooKSk7XG5cbiAgaWYgKHRoaXMgPT09IHApXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgLy8geDEgKiB6Ml4yID09IHgyICogejFeMlxuICB2YXIgejIgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciBwejIgPSBwLnoucmVkU3FyKCk7XG4gIGlmICh0aGlzLngucmVkTXVsKHB6MikucmVkSVN1YihwLngucmVkTXVsKHoyKSkuY21wbigwKSAhPT0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8geTEgKiB6Ml4zID09IHkyICogejFeM1xuICB2YXIgejMgPSB6Mi5yZWRNdWwodGhpcy56KTtcbiAgdmFyIHB6MyA9IHB6Mi5yZWRNdWwocC56KTtcbiAgcmV0dXJuIHRoaXMueS5yZWRNdWwocHozKS5yZWRJU3ViKHAueS5yZWRNdWwoejMpKS5jbXBuKDApID09PSAwO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5lcVhUb1AgPSBmdW5jdGlvbiBlcVhUb1AoeCkge1xuICB2YXIgenMgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciByeCA9IHgudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh6cyk7XG4gIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeGMgPSB4LmNsb25lKCk7XG4gIHZhciB0ID0gdGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh6cyk7XG4gIGZvciAoOzspIHtcbiAgICB4Yy5pYWRkKHRoaXMuY3VydmUubik7XG4gICAgaWYgKHhjLmNtcCh0aGlzLmN1cnZlLnApID49IDApXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICByeC5yZWRJQWRkKHQpO1xuICAgIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgSlBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIEpQb2ludCB4OiAnICsgdGhpcy54LnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHk6ICcgKyB0aGlzLnkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei50b1N0cmluZygxNiwgMikgKyAnPic7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy56LmNtcG4oMCkgPT09IDA7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL3Nob3J0LmpzXG4vLyBtb2R1bGUgaWQgPSAxNzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///176\n");

/***/ }),
/* 177 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar curve = __webpack_require__(26);\nvar BN = __webpack_require__(4);\nvar inherits = __webpack_require__(0);\nvar Base = curve.base;\n\nvar elliptic = __webpack_require__(6);\nvar utils = elliptic.utils;\n\nfunction MontCurve(conf) {\n  Base.call(this, 'mont', conf);\n\n  this.a = new BN(conf.a, 16).toRed(this.red);\n  this.b = new BN(conf.b, 16).toRed(this.red);\n  this.i4 = new BN(4).toRed(this.red).redInvm();\n  this.two = new BN(2).toRed(this.red);\n  this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n  var x = point.normalize().x;\n  var x2 = x.redSqr();\n  var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n  var y = rhs.redSqrt();\n\n  return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n  Base.BasePoint.call(this, curve, 'projective');\n  if (x === null && z === null) {\n    this.x = this.curve.one;\n    this.z = this.curve.zero;\n  } else {\n    this.x = new BN(x, 16);\n    this.z = new BN(z, 16);\n    if (!this.x.red)\n      this.x = this.x.toRed(this.curve.red);\n    if (!this.z.red)\n      this.z = this.z.toRed(this.curve.red);\n  }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n  return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n  return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n  return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n  // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n  return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n  return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n  // XXX This code assumes that zero is always zero in red\n  return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n  // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n  // 2M + 2S + 4A\n\n  // A = X1 + Z1\n  var a = this.x.redAdd(this.z);\n  // AA = A^2\n  var aa = a.redSqr();\n  // B = X1 - Z1\n  var b = this.x.redSub(this.z);\n  // BB = B^2\n  var bb = b.redSqr();\n  // C = AA - BB\n  var c = aa.redSub(bb);\n  // X3 = AA * BB\n  var nx = aa.redMul(bb);\n  // Z3 = C * (BB + A24 * C)\n  var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n  return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n  throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n  // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n  // 4M + 2S + 6A\n\n  // A = X2 + Z2\n  var a = this.x.redAdd(this.z);\n  // B = X2 - Z2\n  var b = this.x.redSub(this.z);\n  // C = X3 + Z3\n  var c = p.x.redAdd(p.z);\n  // D = X3 - Z3\n  var d = p.x.redSub(p.z);\n  // DA = D * A\n  var da = d.redMul(a);\n  // CB = C * B\n  var cb = c.redMul(b);\n  // X5 = Z1 * (DA + CB)^2\n  var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n  // Z5 = X1 * (DA - CB)^2\n  var nz = diff.x.redMul(da.redISub(cb).redSqr());\n  return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n  var t = k.clone();\n  var a = this; // (N / 2) * Q + Q\n  var b = this.curve.point(null, null); // (N / 2) * Q\n  var c = this; // Q\n\n  for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n    bits.push(t.andln(1));\n\n  for (var i = bits.length - 1; i >= 0; i--) {\n    if (bits[i] === 0) {\n      // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n      a = a.diffAdd(b, c);\n      // N * Q = 2 * ((N / 2) * Q + Q))\n      b = b.dbl();\n    } else {\n      // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n      b = a.diffAdd(b, c);\n      // N * Q + Q = 2 * ((N / 2) * Q + Q)\n      a = a.dbl();\n    }\n  }\n  return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n  throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n  throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n  return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n  this.x = this.x.redMul(this.z.redInvm());\n  this.z = this.curve.one;\n  return this;\n};\n\nPoint.prototype.getX = function getX() {\n  // Normalize coordinates\n  this.normalize();\n\n  return this.x.fromRed();\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9tb250LmpzP2E1MmYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmUgPSByZXF1aXJlKCcuLi9jdXJ2ZScpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQmFzZSA9IGN1cnZlLmJhc2U7XG5cbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcblxuZnVuY3Rpb24gTW9udEN1cnZlKGNvbmYpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdtb250JywgY29uZik7XG5cbiAgdGhpcy5hID0gbmV3IEJOKGNvbmYuYSwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5iID0gbmV3IEJOKGNvbmYuYiwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5pNCA9IG5ldyBCTig0KS50b1JlZCh0aGlzLnJlZCkucmVkSW52bSgpO1xuICB0aGlzLnR3byA9IG5ldyBCTigyKS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYTI0ID0gdGhpcy5pNC5yZWRNdWwodGhpcy5hLnJlZEFkZCh0aGlzLnR3bykpO1xufVxuaW5oZXJpdHMoTW9udEN1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gTW9udEN1cnZlO1xuXG5Nb250Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgdmFyIHggPSBwb2ludC5ub3JtYWxpemUoKS54O1xuICB2YXIgeDIgPSB4LnJlZFNxcigpO1xuICB2YXIgcmhzID0geDIucmVkTXVsKHgpLnJlZEFkZCh4Mi5yZWRNdWwodGhpcy5hKSkucmVkQWRkKHgpO1xuICB2YXIgeSA9IHJocy5yZWRTcXJ0KCk7XG5cbiAgcmV0dXJuIHkucmVkU3FyKCkuY21wKHJocykgPT09IDA7XG59O1xuXG5mdW5jdGlvbiBQb2ludChjdXJ2ZSwgeCwgeikge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAncHJvamVjdGl2ZScpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy56ID0gbmV3IEJOKHosIDE2KTtcbiAgICBpZiAoIXRoaXMueC5yZWQpXG4gICAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy56LnJlZClcbiAgICAgIHRoaXMueiA9IHRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUuZGVjb2RlUG9pbnQgPSBmdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcywgZW5jKSB7XG4gIHJldHVybiB0aGlzLnBvaW50KHV0aWxzLnRvQXJyYXkoYnl0ZXMsIGVuYyksIDEpO1xufTtcblxuTW9udEN1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHopIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB6KTtcbn07XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqKSB7XG4gIHJldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLCBvYmopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLnByZWNvbXB1dGUgPSBmdW5jdGlvbiBwcmVjb21wdXRlKCkge1xuICAvLyBOby1vcFxufTtcblxuUG9pbnQucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBfZW5jb2RlKCkge1xuICByZXR1cm4gdGhpcy5nZXRYKCkudG9BcnJheSgnYmUnLCB0aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpKTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaikge1xuICByZXR1cm4gbmV3IFBvaW50KGN1cnZlLCBvYmpbMF0sIG9ialsxXSB8fCBjdXJ2ZS5vbmUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy56LmNtcG4oMCkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICAvLyBodHRwOi8vaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLW1vbnRnb20teHouaHRtbCNkb3VibGluZy1kYmwtMTk4Ny1tLTNcbiAgLy8gMk0gKyAyUyArIDRBXG5cbiAgLy8gQSA9IFgxICsgWjFcbiAgdmFyIGEgPSB0aGlzLngucmVkQWRkKHRoaXMueik7XG4gIC8vIEFBID0gQV4yXG4gIHZhciBhYSA9IGEucmVkU3FyKCk7XG4gIC8vIEIgPSBYMSAtIFoxXG4gIHZhciBiID0gdGhpcy54LnJlZFN1Yih0aGlzLnopO1xuICAvLyBCQiA9IEJeMlxuICB2YXIgYmIgPSBiLnJlZFNxcigpO1xuICAvLyBDID0gQUEgLSBCQlxuICB2YXIgYyA9IGFhLnJlZFN1YihiYik7XG4gIC8vIFgzID0gQUEgKiBCQlxuICB2YXIgbnggPSBhYS5yZWRNdWwoYmIpO1xuICAvLyBaMyA9IEMgKiAoQkIgKyBBMjQgKiBDKVxuICB2YXIgbnogPSBjLnJlZE11bChiYi5yZWRBZGQodGhpcy5jdXJ2ZS5hMjQucmVkTXVsKGMpKSk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZScpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRpZmZBZGQgPSBmdW5jdGlvbiBkaWZmQWRkKHAsIGRpZmYpIHtcbiAgLy8gaHR0cDovL2h5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1tb250Z29tLXh6Lmh0bWwjZGlmZmFkZC1kYWRkLTE5ODctbS0zXG4gIC8vIDRNICsgMlMgKyA2QVxuXG4gIC8vIEEgPSBYMiArIFoyXG4gIHZhciBhID0gdGhpcy54LnJlZEFkZCh0aGlzLnopO1xuICAvLyBCID0gWDIgLSBaMlxuICB2YXIgYiA9IHRoaXMueC5yZWRTdWIodGhpcy56KTtcbiAgLy8gQyA9IFgzICsgWjNcbiAgdmFyIGMgPSBwLngucmVkQWRkKHAueik7XG4gIC8vIEQgPSBYMyAtIFozXG4gIHZhciBkID0gcC54LnJlZFN1YihwLnopO1xuICAvLyBEQSA9IEQgKiBBXG4gIHZhciBkYSA9IGQucmVkTXVsKGEpO1xuICAvLyBDQiA9IEMgKiBCXG4gIHZhciBjYiA9IGMucmVkTXVsKGIpO1xuICAvLyBYNSA9IFoxICogKERBICsgQ0IpXjJcbiAgdmFyIG54ID0gZGlmZi56LnJlZE11bChkYS5yZWRBZGQoY2IpLnJlZFNxcigpKTtcbiAgLy8gWjUgPSBYMSAqIChEQSAtIENCKV4yXG4gIHZhciBueiA9IGRpZmYueC5yZWRNdWwoZGEucmVkSVN1YihjYikucmVkU3FyKCkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIHZhciB0ID0gay5jbG9uZSgpO1xuICB2YXIgYSA9IHRoaXM7IC8vIChOIC8gMikgKiBRICsgUVxuICB2YXIgYiA9IHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7IC8vIChOIC8gMikgKiBRXG4gIHZhciBjID0gdGhpczsgLy8gUVxuXG4gIGZvciAodmFyIGJpdHMgPSBbXTsgdC5jbXBuKDApICE9PSAwOyB0Lml1c2hybigxKSlcbiAgICBiaXRzLnB1c2godC5hbmRsbigxKSk7XG5cbiAgZm9yICh2YXIgaSA9IGJpdHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoYml0c1tpXSA9PT0gMCkge1xuICAgICAgLy8gTiAqIFEgKyBRID0gKChOIC8gMikgKiBRICsgUSkpICsgKE4gLyAyKSAqIFFcbiAgICAgIGEgPSBhLmRpZmZBZGQoYiwgYyk7XG4gICAgICAvLyBOICogUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKSlcbiAgICAgIGIgPSBiLmRibCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOICogUSA9ICgoTiAvIDIpICogUSArIFEpICsgKChOIC8gMikgKiBRKVxuICAgICAgYiA9IGEuZGlmZkFkZChiLCBjKTtcbiAgICAgIC8vIE4gKiBRICsgUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKVxuICAgICAgYSA9IGEuZGJsKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBiO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qdW1sQWRkID0gZnVuY3Rpb24ganVtbEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKG90aGVyKSB7XG4gIHJldHVybiB0aGlzLmdldFgoKS5jbXAob3RoZXIuZ2V0WCgpKSA9PT0gMDtcbn07XG5cblBvaW50LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gIHRoaXMueCA9IHRoaXMueC5yZWRNdWwodGhpcy56LnJlZEludm0oKSk7XG4gIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICByZXR1cm4gdGhpcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgLy8gTm9ybWFsaXplIGNvb3JkaW5hdGVzXG4gIHRoaXMubm9ybWFsaXplKCk7XG5cbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL21vbnQuanNcbi8vIG1vZHVsZSBpZCA9IDE3N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///177\n");

/***/ }),
/* 178 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar curve = __webpack_require__(26);\nvar elliptic = __webpack_require__(6);\nvar BN = __webpack_require__(4);\nvar inherits = __webpack_require__(0);\nvar Base = curve.base;\n\nvar assert = elliptic.utils.assert;\n\nfunction EdwardsCurve(conf) {\n  // NOTE: Important as we are creating point in Base.call()\n  this.twisted = (conf.a | 0) !== 1;\n  this.mOneA = this.twisted && (conf.a | 0) === -1;\n  this.extended = this.mOneA;\n\n  Base.call(this, 'edwards', conf);\n\n  this.a = new BN(conf.a, 16).umod(this.red.m);\n  this.a = this.a.toRed(this.red);\n  this.c = new BN(conf.c, 16).toRed(this.red);\n  this.c2 = this.c.redSqr();\n  this.d = new BN(conf.d, 16).toRed(this.red);\n  this.dd = this.d.redAdd(this.d);\n\n  assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n  this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n  if (this.mOneA)\n    return num.redNeg();\n  else\n    return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n  if (this.oneC)\n    return num;\n  else\n    return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n  return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n  x = new BN(x, 16);\n  if (!x.red)\n    x = x.toRed(this.red);\n\n  var x2 = x.redSqr();\n  var rhs = this.c2.redSub(this.a.redMul(x2));\n  var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n  var y2 = rhs.redMul(lhs.redInvm());\n  var y = y2.redSqrt();\n  if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n    throw new Error('invalid point');\n\n  var isOdd = y.fromRed().isOdd();\n  if (odd && !isOdd || !odd && isOdd)\n    y = y.redNeg();\n\n  return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n  y = new BN(y, 16);\n  if (!y.red)\n    y = y.toRed(this.red);\n\n  // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n  var y2 = y.redSqr();\n  var lhs = y2.redSub(this.c2);\n  var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n  var x2 = lhs.redMul(rhs.redInvm());\n\n  if (x2.cmp(this.zero) === 0) {\n    if (odd)\n      throw new Error('invalid point');\n    else\n      return this.point(this.zero, y);\n  }\n\n  var x = x2.redSqrt();\n  if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n    throw new Error('invalid point');\n\n  if (x.fromRed().isOdd() !== odd)\n    x = x.redNeg();\n\n  return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n  if (point.isInfinity())\n    return true;\n\n  // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n  point.normalize();\n\n  var x2 = point.x.redSqr();\n  var y2 = point.y.redSqr();\n  var lhs = x2.redMul(this.a).redAdd(y2);\n  var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n  return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n  Base.BasePoint.call(this, curve, 'projective');\n  if (x === null && y === null && z === null) {\n    this.x = this.curve.zero;\n    this.y = this.curve.one;\n    this.z = this.curve.one;\n    this.t = this.curve.zero;\n    this.zOne = true;\n  } else {\n    this.x = new BN(x, 16);\n    this.y = new BN(y, 16);\n    this.z = z ? new BN(z, 16) : this.curve.one;\n    this.t = t && new BN(t, 16);\n    if (!this.x.red)\n      this.x = this.x.toRed(this.curve.red);\n    if (!this.y.red)\n      this.y = this.y.toRed(this.curve.red);\n    if (!this.z.red)\n      this.z = this.z.toRed(this.curve.red);\n    if (this.t && !this.t.red)\n      this.t = this.t.toRed(this.curve.red);\n    this.zOne = this.z === this.curve.one;\n\n    // Use extended coordinates\n    if (this.curve.extended && !this.t) {\n      this.t = this.x.redMul(this.y);\n      if (!this.zOne)\n        this.t = this.t.redMul(this.z.redInvm());\n    }\n  }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n  return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n  return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n  return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return '<EC Point Infinity>';\n  return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n      ' y: ' + this.y.fromRed().toString(16, 2) +\n      ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n  // XXX This code assumes that zero is always zero in red\n  return this.x.cmpn(0) === 0 &&\n    (this.y.cmp(this.z) === 0 ||\n    (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n  //     #doubling-dbl-2008-hwcd\n  // 4M + 4S\n\n  // A = X1^2\n  var a = this.x.redSqr();\n  // B = Y1^2\n  var b = this.y.redSqr();\n  // C = 2 * Z1^2\n  var c = this.z.redSqr();\n  c = c.redIAdd(c);\n  // D = a * A\n  var d = this.curve._mulA(a);\n  // E = (X1 + Y1)^2 - A - B\n  var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n  // G = D + B\n  var g = d.redAdd(b);\n  // F = G - C\n  var f = g.redSub(c);\n  // H = D - B\n  var h = d.redSub(b);\n  // X3 = E * F\n  var nx = e.redMul(f);\n  // Y3 = G * H\n  var ny = g.redMul(h);\n  // T3 = E * H\n  var nt = e.redMul(h);\n  // Z3 = F * G\n  var nz = f.redMul(g);\n  return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n  //     #doubling-dbl-2008-bbjlp\n  //     #doubling-dbl-2007-bl\n  // and others\n  // Generally 3M + 4S or 2M + 4S\n\n  // B = (X1 + Y1)^2\n  var b = this.x.redAdd(this.y).redSqr();\n  // C = X1^2\n  var c = this.x.redSqr();\n  // D = Y1^2\n  var d = this.y.redSqr();\n\n  var nx;\n  var ny;\n  var nz;\n  if (this.curve.twisted) {\n    // E = a * C\n    var e = this.curve._mulA(c);\n    // F = E + D\n    var f = e.redAdd(d);\n    if (this.zOne) {\n      // X3 = (B - C - D) * (F - 2)\n      nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n      // Y3 = F * (E - D)\n      ny = f.redMul(e.redSub(d));\n      // Z3 = F^2 - 2 * F\n      nz = f.redSqr().redSub(f).redSub(f);\n    } else {\n      // H = Z1^2\n      var h = this.z.redSqr();\n      // J = F - 2 * H\n      var j = f.redSub(h).redISub(h);\n      // X3 = (B-C-D)*J\n      nx = b.redSub(c).redISub(d).redMul(j);\n      // Y3 = F * (E - D)\n      ny = f.redMul(e.redSub(d));\n      // Z3 = F * J\n      nz = f.redMul(j);\n    }\n  } else {\n    // E = C + D\n    var e = c.redAdd(d);\n    // H = (c * Z1)^2\n    var h = this.curve._mulC(this.z).redSqr();\n    // J = E - 2 * H\n    var j = e.redSub(h).redSub(h);\n    // X3 = c * (B - E) * J\n    nx = this.curve._mulC(b.redISub(e)).redMul(j);\n    // Y3 = c * E * (C - D)\n    ny = this.curve._mulC(e).redMul(c.redISub(d));\n    // Z3 = E * J\n    nz = e.redMul(j);\n  }\n  return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n  if (this.isInfinity())\n    return this;\n\n  // Double in extended coordinates\n  if (this.curve.extended)\n    return this._extDbl();\n  else\n    return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n  //     #addition-add-2008-hwcd-3\n  // 8M\n\n  // A = (Y1 - X1) * (Y2 - X2)\n  var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n  // B = (Y1 + X1) * (Y2 + X2)\n  var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n  // C = T1 * k * T2\n  var c = this.t.redMul(this.curve.dd).redMul(p.t);\n  // D = Z1 * 2 * Z2\n  var d = this.z.redMul(p.z.redAdd(p.z));\n  // E = B - A\n  var e = b.redSub(a);\n  // F = D - C\n  var f = d.redSub(c);\n  // G = D + C\n  var g = d.redAdd(c);\n  // H = B + A\n  var h = b.redAdd(a);\n  // X3 = E * F\n  var nx = e.redMul(f);\n  // Y3 = G * H\n  var ny = g.redMul(h);\n  // T3 = E * H\n  var nt = e.redMul(h);\n  // Z3 = F * G\n  var nz = f.redMul(g);\n  return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n  // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n  //     #addition-add-2008-bbjlp\n  //     #addition-add-2007-bl\n  // 10M + 1S\n\n  // A = Z1 * Z2\n  var a = this.z.redMul(p.z);\n  // B = A^2\n  var b = a.redSqr();\n  // C = X1 * X2\n  var c = this.x.redMul(p.x);\n  // D = Y1 * Y2\n  var d = this.y.redMul(p.y);\n  // E = d * C * D\n  var e = this.curve.d.redMul(c).redMul(d);\n  // F = B - E\n  var f = b.redSub(e);\n  // G = B + E\n  var g = b.redAdd(e);\n  // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n  var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n  var nx = a.redMul(f).redMul(tmp);\n  var ny;\n  var nz;\n  if (this.curve.twisted) {\n    // Y3 = A * G * (D - a * C)\n    ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n    // Z3 = F * G\n    nz = f.redMul(g);\n  } else {\n    // Y3 = A * G * (D - C)\n    ny = a.redMul(g).redMul(d.redSub(c));\n    // Z3 = c * F * G\n    nz = this.curve._mulC(f).redMul(g);\n  }\n  return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n  if (this.isInfinity())\n    return p;\n  if (p.isInfinity())\n    return this;\n\n  if (this.curve.extended)\n    return this._extAdd(p);\n  else\n    return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n  if (this._hasDoubles(k))\n    return this.curve._fixedNafMul(this, k);\n  else\n    return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n  return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n  return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n  if (this.zOne)\n    return this;\n\n  // Normalize coordinates\n  var zi = this.z.redInvm();\n  this.x = this.x.redMul(zi);\n  this.y = this.y.redMul(zi);\n  if (this.t)\n    this.t = this.t.redMul(zi);\n  this.z = this.curve.one;\n  this.zOne = true;\n  return this;\n};\n\nPoint.prototype.neg = function neg() {\n  return this.curve.point(this.x.redNeg(),\n                          this.y,\n                          this.z,\n                          this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n  this.normalize();\n  return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n  this.normalize();\n  return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n  return this === other ||\n         this.getX().cmp(other.getX()) === 0 &&\n         this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n  var rx = x.toRed(this.curve.red).redMul(this.z);\n  if (this.x.cmp(rx) === 0)\n    return true;\n\n  var xc = x.clone();\n  var t = this.curve.redN.redMul(this.z);\n  for (;;) {\n    xc.iadd(this.curve.n);\n    if (xc.cmp(this.curve.p) >= 0)\n      return false;\n\n    rx.redIAdd(t);\n    if (this.x.cmp(rx) === 0)\n      return true;\n  }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9lZHdhcmRzLmpzP2RiODYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmUgPSByZXF1aXJlKCcuLi9jdXJ2ZScpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSBjdXJ2ZS5iYXNlO1xuXG52YXIgYXNzZXJ0ID0gZWxsaXB0aWMudXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBFZHdhcmRzQ3VydmUoY29uZikge1xuICAvLyBOT1RFOiBJbXBvcnRhbnQgYXMgd2UgYXJlIGNyZWF0aW5nIHBvaW50IGluIEJhc2UuY2FsbCgpXG4gIHRoaXMudHdpc3RlZCA9IChjb25mLmEgfCAwKSAhPT0gMTtcbiAgdGhpcy5tT25lQSA9IHRoaXMudHdpc3RlZCAmJiAoY29uZi5hIHwgMCkgPT09IC0xO1xuICB0aGlzLmV4dGVuZGVkID0gdGhpcy5tT25lQTtcblxuICBCYXNlLmNhbGwodGhpcywgJ2Vkd2FyZHMnLCBjb25mKTtcblxuICB0aGlzLmEgPSBuZXcgQk4oY29uZi5hLCAxNikudW1vZCh0aGlzLnJlZC5tKTtcbiAgdGhpcy5hID0gdGhpcy5hLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5jID0gbmV3IEJOKGNvbmYuYywgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5jMiA9IHRoaXMuYy5yZWRTcXIoKTtcbiAgdGhpcy5kID0gbmV3IEJOKGNvbmYuZCwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5kZCA9IHRoaXMuZC5yZWRBZGQodGhpcy5kKTtcblxuICBhc3NlcnQoIXRoaXMudHdpc3RlZCB8fCB0aGlzLmMuZnJvbVJlZCgpLmNtcG4oMSkgPT09IDApO1xuICB0aGlzLm9uZUMgPSAoY29uZi5jIHwgMCkgPT09IDE7XG59XG5pbmhlcml0cyhFZHdhcmRzQ3VydmUsIEJhc2UpO1xubW9kdWxlLmV4cG9ydHMgPSBFZHdhcmRzQ3VydmU7XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUuX211bEEgPSBmdW5jdGlvbiBfbXVsQShudW0pIHtcbiAgaWYgKHRoaXMubU9uZUEpXG4gICAgcmV0dXJuIG51bS5yZWROZWcoKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmEucmVkTXVsKG51bSk7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLl9tdWxDID0gZnVuY3Rpb24gX211bEMobnVtKSB7XG4gIGlmICh0aGlzLm9uZUMpXG4gICAgcmV0dXJuIG51bTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmMucmVkTXVsKG51bSk7XG59O1xuXG4vLyBKdXN0IGZvciBjb21wYXRpYmlsaXR5IHdpdGggU2hvcnQgY3VydmVcbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUuanBvaW50ID0gZnVuY3Rpb24ganBvaW50KHgsIHksIHosIHQpIHtcbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSwgeiwgdCk7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnBvaW50RnJvbVggPSBmdW5jdGlvbiBwb2ludEZyb21YKHgsIG9kZCkge1xuICB4ID0gbmV3IEJOKHgsIDE2KTtcbiAgaWYgKCF4LnJlZClcbiAgICB4ID0geC50b1JlZCh0aGlzLnJlZCk7XG5cbiAgdmFyIHgyID0geC5yZWRTcXIoKTtcbiAgdmFyIHJocyA9IHRoaXMuYzIucmVkU3ViKHRoaXMuYS5yZWRNdWwoeDIpKTtcbiAgdmFyIGxocyA9IHRoaXMub25lLnJlZFN1Yih0aGlzLmMyLnJlZE11bCh0aGlzLmQpLnJlZE11bCh4MikpO1xuXG4gIHZhciB5MiA9IHJocy5yZWRNdWwobGhzLnJlZEludm0oKSk7XG4gIHZhciB5ID0geTIucmVkU3FydCgpO1xuICBpZiAoeS5yZWRTcXIoKS5yZWRTdWIoeTIpLmNtcCh0aGlzLnplcm8pICE9PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuXG4gIHZhciBpc09kZCA9IHkuZnJvbVJlZCgpLmlzT2RkKCk7XG4gIGlmIChvZGQgJiYgIWlzT2RkIHx8ICFvZGQgJiYgaXNPZGQpXG4gICAgeSA9IHkucmVkTmVnKCk7XG5cbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSk7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnBvaW50RnJvbVkgPSBmdW5jdGlvbiBwb2ludEZyb21ZKHksIG9kZCkge1xuICB5ID0gbmV3IEJOKHksIDE2KTtcbiAgaWYgKCF5LnJlZClcbiAgICB5ID0geS50b1JlZCh0aGlzLnJlZCk7XG5cbiAgLy8geF4yID0gKHleMiAtIGNeMikgLyAoY14yIGQgeV4yIC0gYSlcbiAgdmFyIHkyID0geS5yZWRTcXIoKTtcbiAgdmFyIGxocyA9IHkyLnJlZFN1Yih0aGlzLmMyKTtcbiAgdmFyIHJocyA9IHkyLnJlZE11bCh0aGlzLmQpLnJlZE11bCh0aGlzLmMyKS5yZWRTdWIodGhpcy5hKTtcbiAgdmFyIHgyID0gbGhzLnJlZE11bChyaHMucmVkSW52bSgpKTtcblxuICBpZiAoeDIuY21wKHRoaXMuemVybykgPT09IDApIHtcbiAgICBpZiAob2RkKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHBvaW50Jyk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIHRoaXMucG9pbnQodGhpcy56ZXJvLCB5KTtcbiAgfVxuXG4gIHZhciB4ID0geDIucmVkU3FydCgpO1xuICBpZiAoeC5yZWRTcXIoKS5yZWRTdWIoeDIpLmNtcCh0aGlzLnplcm8pICE9PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuXG4gIGlmICh4LmZyb21SZWQoKS5pc09kZCgpICE9PSBvZGQpXG4gICAgeCA9IHgucmVkTmVnKCk7XG5cbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSk7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgaWYgKHBvaW50LmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdHJ1ZTtcblxuICAvLyBDdXJ2ZTogQSAqIFheMiArIFleMiA9IENeMiAqICgxICsgRCAqIFheMiAqIFleMilcbiAgcG9pbnQubm9ybWFsaXplKCk7XG5cbiAgdmFyIHgyID0gcG9pbnQueC5yZWRTcXIoKTtcbiAgdmFyIHkyID0gcG9pbnQueS5yZWRTcXIoKTtcbiAgdmFyIGxocyA9IHgyLnJlZE11bCh0aGlzLmEpLnJlZEFkZCh5Mik7XG4gIHZhciByaHMgPSB0aGlzLmMyLnJlZE11bCh0aGlzLm9uZS5yZWRBZGQodGhpcy5kLnJlZE11bCh4MikucmVkTXVsKHkyKSkpO1xuXG4gIHJldHVybiBsaHMuY21wKHJocykgPT09IDA7XG59O1xuXG5mdW5jdGlvbiBQb2ludChjdXJ2ZSwgeCwgeSwgeiwgdCkge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAncHJvamVjdGl2ZScpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB5ID09PSBudWxsICYmIHogPT09IG51bGwpIHtcbiAgICB0aGlzLnggPSB0aGlzLmN1cnZlLnplcm87XG4gICAgdGhpcy55ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy50ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICAgIHRoaXMuek9uZSA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnkgPSBuZXcgQk4oeSwgMTYpO1xuICAgIHRoaXMueiA9IHogPyBuZXcgQk4oeiwgMTYpIDogdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy50ID0gdCAmJiBuZXcgQk4odCwgMTYpO1xuICAgIGlmICghdGhpcy54LnJlZClcbiAgICAgIHRoaXMueCA9IHRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnkucmVkKVxuICAgICAgdGhpcy55ID0gdGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMuei5yZWQpXG4gICAgICB0aGlzLnogPSB0aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICh0aGlzLnQgJiYgIXRoaXMudC5yZWQpXG4gICAgICB0aGlzLnQgPSB0aGlzLnQudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIHRoaXMuek9uZSA9IHRoaXMueiA9PT0gdGhpcy5jdXJ2ZS5vbmU7XG5cbiAgICAvLyBVc2UgZXh0ZW5kZWQgY29vcmRpbmF0ZXNcbiAgICBpZiAodGhpcy5jdXJ2ZS5leHRlbmRlZCAmJiAhdGhpcy50KSB7XG4gICAgICB0aGlzLnQgPSB0aGlzLngucmVkTXVsKHRoaXMueSk7XG4gICAgICBpZiAoIXRoaXMuek9uZSlcbiAgICAgICAgdGhpcy50ID0gdGhpcy50LnJlZE11bCh0aGlzLnoucmVkSW52bSgpKTtcbiAgICB9XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqKSB7XG4gIHJldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLCBvYmopO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHksIHosIHQpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB5LCB6LCB0KTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaikge1xuICByZXR1cm4gbmV3IFBvaW50KGN1cnZlLCBvYmpbMF0sIG9ialsxXSwgb2JqWzJdKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIFBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIFBvaW50IHg6ICcgKyB0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHk6ICcgKyB0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHo6ICcgKyB0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgLy8gWFhYIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgemVybyBpcyBhbHdheXMgemVybyBpbiByZWRcbiAgcmV0dXJuIHRoaXMueC5jbXBuKDApID09PSAwICYmXG4gICAgKHRoaXMueS5jbXAodGhpcy56KSA9PT0gMCB8fFxuICAgICh0aGlzLnpPbmUgJiYgdGhpcy55LmNtcCh0aGlzLmN1cnZlLmMpID09PSAwKSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX2V4dERibCA9IGZ1bmN0aW9uIF9leHREYmwoKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLWV4dGVuZGVkLTEuaHRtbFxuICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA4LWh3Y2RcbiAgLy8gNE0gKyA0U1xuXG4gIC8vIEEgPSBYMV4yXG4gIHZhciBhID0gdGhpcy54LnJlZFNxcigpO1xuICAvLyBCID0gWTFeMlxuICB2YXIgYiA9IHRoaXMueS5yZWRTcXIoKTtcbiAgLy8gQyA9IDIgKiBaMV4yXG4gIHZhciBjID0gdGhpcy56LnJlZFNxcigpO1xuICBjID0gYy5yZWRJQWRkKGMpO1xuICAvLyBEID0gYSAqIEFcbiAgdmFyIGQgPSB0aGlzLmN1cnZlLl9tdWxBKGEpO1xuICAvLyBFID0gKFgxICsgWTEpXjIgLSBBIC0gQlxuICB2YXIgZSA9IHRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYik7XG4gIC8vIEcgPSBEICsgQlxuICB2YXIgZyA9IGQucmVkQWRkKGIpO1xuICAvLyBGID0gRyAtIENcbiAgdmFyIGYgPSBnLnJlZFN1YihjKTtcbiAgLy8gSCA9IEQgLSBCXG4gIHZhciBoID0gZC5yZWRTdWIoYik7XG4gIC8vIFgzID0gRSAqIEZcbiAgdmFyIG54ID0gZS5yZWRNdWwoZik7XG4gIC8vIFkzID0gRyAqIEhcbiAgdmFyIG55ID0gZy5yZWRNdWwoaCk7XG4gIC8vIFQzID0gRSAqIEhcbiAgdmFyIG50ID0gZS5yZWRNdWwoaCk7XG4gIC8vIFozID0gRiAqIEdcbiAgdmFyIG56ID0gZi5yZWRNdWwoZyk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnosIG50KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fcHJvakRibCA9IGZ1bmN0aW9uIF9wcm9qRGJsKCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1wcm9qZWN0aXZlLmh0bWxcbiAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOC1iYmpscFxuICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA3LWJsXG4gIC8vIGFuZCBvdGhlcnNcbiAgLy8gR2VuZXJhbGx5IDNNICsgNFMgb3IgMk0gKyA0U1xuXG4gIC8vIEIgPSAoWDEgKyBZMSleMlxuICB2YXIgYiA9IHRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKTtcbiAgLy8gQyA9IFgxXjJcbiAgdmFyIGMgPSB0aGlzLngucmVkU3FyKCk7XG4gIC8vIEQgPSBZMV4yXG4gIHZhciBkID0gdGhpcy55LnJlZFNxcigpO1xuXG4gIHZhciBueDtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIGlmICh0aGlzLmN1cnZlLnR3aXN0ZWQpIHtcbiAgICAvLyBFID0gYSAqIENcbiAgICB2YXIgZSA9IHRoaXMuY3VydmUuX211bEEoYyk7XG4gICAgLy8gRiA9IEUgKyBEXG4gICAgdmFyIGYgPSBlLnJlZEFkZChkKTtcbiAgICBpZiAodGhpcy56T25lKSB7XG4gICAgICAvLyBYMyA9IChCIC0gQyAtIEQpICogKEYgLSAyKVxuICAgICAgbnggPSBiLnJlZFN1YihjKS5yZWRTdWIoZCkucmVkTXVsKGYucmVkU3ViKHRoaXMuY3VydmUudHdvKSk7XG4gICAgICAvLyBZMyA9IEYgKiAoRSAtIEQpXG4gICAgICBueSA9IGYucmVkTXVsKGUucmVkU3ViKGQpKTtcbiAgICAgIC8vIFozID0gRl4yIC0gMiAqIEZcbiAgICAgIG56ID0gZi5yZWRTcXIoKS5yZWRTdWIoZikucmVkU3ViKGYpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIID0gWjFeMlxuICAgICAgdmFyIGggPSB0aGlzLnoucmVkU3FyKCk7XG4gICAgICAvLyBKID0gRiAtIDIgKiBIXG4gICAgICB2YXIgaiA9IGYucmVkU3ViKGgpLnJlZElTdWIoaCk7XG4gICAgICAvLyBYMyA9IChCLUMtRCkqSlxuICAgICAgbnggPSBiLnJlZFN1YihjKS5yZWRJU3ViKGQpLnJlZE11bChqKTtcbiAgICAgIC8vIFkzID0gRiAqIChFIC0gRClcbiAgICAgIG55ID0gZi5yZWRNdWwoZS5yZWRTdWIoZCkpO1xuICAgICAgLy8gWjMgPSBGICogSlxuICAgICAgbnogPSBmLnJlZE11bChqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gRSA9IEMgKyBEXG4gICAgdmFyIGUgPSBjLnJlZEFkZChkKTtcbiAgICAvLyBIID0gKGMgKiBaMSleMlxuICAgIHZhciBoID0gdGhpcy5jdXJ2ZS5fbXVsQyh0aGlzLnopLnJlZFNxcigpO1xuICAgIC8vIEogPSBFIC0gMiAqIEhcbiAgICB2YXIgaiA9IGUucmVkU3ViKGgpLnJlZFN1YihoKTtcbiAgICAvLyBYMyA9IGMgKiAoQiAtIEUpICogSlxuICAgIG54ID0gdGhpcy5jdXJ2ZS5fbXVsQyhiLnJlZElTdWIoZSkpLnJlZE11bChqKTtcbiAgICAvLyBZMyA9IGMgKiBFICogKEMgLSBEKVxuICAgIG55ID0gdGhpcy5jdXJ2ZS5fbXVsQyhlKS5yZWRNdWwoYy5yZWRJU3ViKGQpKTtcbiAgICAvLyBaMyA9IEUgKiBKXG4gICAgbnogPSBlLnJlZE11bChqKTtcbiAgfVxuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5kYmwgPSBmdW5jdGlvbiBkYmwoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBEb3VibGUgaW4gZXh0ZW5kZWQgY29vcmRpbmF0ZXNcbiAgaWYgKHRoaXMuY3VydmUuZXh0ZW5kZWQpXG4gICAgcmV0dXJuIHRoaXMuX2V4dERibCgpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuX3Byb2pEYmwoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZXh0QWRkID0gZnVuY3Rpb24gX2V4dEFkZChwKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLWV4dGVuZGVkLTEuaHRtbFxuICAvLyAgICAgI2FkZGl0aW9uLWFkZC0yMDA4LWh3Y2QtM1xuICAvLyA4TVxuXG4gIC8vIEEgPSAoWTEgLSBYMSkgKiAoWTIgLSBYMilcbiAgdmFyIGEgPSB0aGlzLnkucmVkU3ViKHRoaXMueCkucmVkTXVsKHAueS5yZWRTdWIocC54KSk7XG4gIC8vIEIgPSAoWTEgKyBYMSkgKiAoWTIgKyBYMilcbiAgdmFyIGIgPSB0aGlzLnkucmVkQWRkKHRoaXMueCkucmVkTXVsKHAueS5yZWRBZGQocC54KSk7XG4gIC8vIEMgPSBUMSAqIGsgKiBUMlxuICB2YXIgYyA9IHRoaXMudC5yZWRNdWwodGhpcy5jdXJ2ZS5kZCkucmVkTXVsKHAudCk7XG4gIC8vIEQgPSBaMSAqIDIgKiBaMlxuICB2YXIgZCA9IHRoaXMuei5yZWRNdWwocC56LnJlZEFkZChwLnopKTtcbiAgLy8gRSA9IEIgLSBBXG4gIHZhciBlID0gYi5yZWRTdWIoYSk7XG4gIC8vIEYgPSBEIC0gQ1xuICB2YXIgZiA9IGQucmVkU3ViKGMpO1xuICAvLyBHID0gRCArIENcbiAgdmFyIGcgPSBkLnJlZEFkZChjKTtcbiAgLy8gSCA9IEIgKyBBXG4gIHZhciBoID0gYi5yZWRBZGQoYSk7XG4gIC8vIFgzID0gRSAqIEZcbiAgdmFyIG54ID0gZS5yZWRNdWwoZik7XG4gIC8vIFkzID0gRyAqIEhcbiAgdmFyIG55ID0gZy5yZWRNdWwoaCk7XG4gIC8vIFQzID0gRSAqIEhcbiAgdmFyIG50ID0gZS5yZWRNdWwoaCk7XG4gIC8vIFozID0gRiAqIEdcbiAgdmFyIG56ID0gZi5yZWRNdWwoZyk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnosIG50KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fcHJvakFkZCA9IGZ1bmN0aW9uIF9wcm9qQWRkKHApIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtcHJvamVjdGl2ZS5odG1sXG4gIC8vICAgICAjYWRkaXRpb24tYWRkLTIwMDgtYmJqbHBcbiAgLy8gICAgICNhZGRpdGlvbi1hZGQtMjAwNy1ibFxuICAvLyAxME0gKyAxU1xuXG4gIC8vIEEgPSBaMSAqIFoyXG4gIHZhciBhID0gdGhpcy56LnJlZE11bChwLnopO1xuICAvLyBCID0gQV4yXG4gIHZhciBiID0gYS5yZWRTcXIoKTtcbiAgLy8gQyA9IFgxICogWDJcbiAgdmFyIGMgPSB0aGlzLngucmVkTXVsKHAueCk7XG4gIC8vIEQgPSBZMSAqIFkyXG4gIHZhciBkID0gdGhpcy55LnJlZE11bChwLnkpO1xuICAvLyBFID0gZCAqIEMgKiBEXG4gIHZhciBlID0gdGhpcy5jdXJ2ZS5kLnJlZE11bChjKS5yZWRNdWwoZCk7XG4gIC8vIEYgPSBCIC0gRVxuICB2YXIgZiA9IGIucmVkU3ViKGUpO1xuICAvLyBHID0gQiArIEVcbiAgdmFyIGcgPSBiLnJlZEFkZChlKTtcbiAgLy8gWDMgPSBBICogRiAqICgoWDEgKyBZMSkgKiAoWDIgKyBZMikgLSBDIC0gRClcbiAgdmFyIHRtcCA9IHRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRNdWwocC54LnJlZEFkZChwLnkpKS5yZWRJU3ViKGMpLnJlZElTdWIoZCk7XG4gIHZhciBueCA9IGEucmVkTXVsKGYpLnJlZE11bCh0bXApO1xuICB2YXIgbnk7XG4gIHZhciBuejtcbiAgaWYgKHRoaXMuY3VydmUudHdpc3RlZCkge1xuICAgIC8vIFkzID0gQSAqIEcgKiAoRCAtIGEgKiBDKVxuICAgIG55ID0gYS5yZWRNdWwoZykucmVkTXVsKGQucmVkU3ViKHRoaXMuY3VydmUuX211bEEoYykpKTtcbiAgICAvLyBaMyA9IEYgKiBHXG4gICAgbnogPSBmLnJlZE11bChnKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBZMyA9IEEgKiBHICogKEQgLSBDKVxuICAgIG55ID0gYS5yZWRNdWwoZykucmVkTXVsKGQucmVkU3ViKGMpKTtcbiAgICAvLyBaMyA9IGMgKiBGICogR1xuICAgIG56ID0gdGhpcy5jdXJ2ZS5fbXVsQyhmKS5yZWRNdWwoZyk7XG4gIH1cbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiBwO1xuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgaWYgKHRoaXMuY3VydmUuZXh0ZW5kZWQpXG4gICAgcmV0dXJuIHRoaXMuX2V4dEFkZChwKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl9wcm9qQWRkKHApO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIGlmICh0aGlzLl9oYXNEb3VibGVzKGspKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLCBrKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsIGspO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZChrMSwgcCwgazIpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgWyB0aGlzLCBwIF0sIFsgazEsIGsyIF0sIDIsIGZhbHNlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qbXVsQWRkID0gZnVuY3Rpb24gam11bEFkZChrMSwgcCwgazIpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgWyB0aGlzLCBwIF0sIFsgazEsIGsyIF0sIDIsIHRydWUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIG5vcm1hbGl6ZSgpIHtcbiAgaWYgKHRoaXMuek9uZSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBOb3JtYWxpemUgY29vcmRpbmF0ZXNcbiAgdmFyIHppID0gdGhpcy56LnJlZEludm0oKTtcbiAgdGhpcy54ID0gdGhpcy54LnJlZE11bCh6aSk7XG4gIHRoaXMueSA9IHRoaXMueS5yZWRNdWwoemkpO1xuICBpZiAodGhpcy50KVxuICAgIHRoaXMudCA9IHRoaXMudC5yZWRNdWwoemkpO1xuICB0aGlzLnogPSB0aGlzLmN1cnZlLm9uZTtcbiAgdGhpcy56T25lID0gdHJ1ZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnKCkge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTmVnKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnQgJiYgdGhpcy50LnJlZE5lZygpKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgdGhpcy5ub3JtYWxpemUoKTtcbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uIGdldFkoKSB7XG4gIHRoaXMubm9ybWFsaXplKCk7XG4gIHJldHVybiB0aGlzLnkuZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEob3RoZXIpIHtcbiAgcmV0dXJuIHRoaXMgPT09IG90aGVyIHx8XG4gICAgICAgICB0aGlzLmdldFgoKS5jbXAob3RoZXIuZ2V0WCgpKSA9PT0gMCAmJlxuICAgICAgICAgdGhpcy5nZXRZKCkuY21wKG90aGVyLmdldFkoKSkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXFYVG9QID0gZnVuY3Rpb24gZXFYVG9QKHgpIHtcbiAgdmFyIHJ4ID0geC50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKHRoaXMueik7XG4gIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeGMgPSB4LmNsb25lKCk7XG4gIHZhciB0ID0gdGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh0aGlzLnopO1xuICBmb3IgKDs7KSB7XG4gICAgeGMuaWFkZCh0aGlzLmN1cnZlLm4pO1xuICAgIGlmICh4Yy5jbXAodGhpcy5jdXJ2ZS5wKSA+PSAwKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgcngucmVkSUFkZCh0KTtcbiAgICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuLy8gQ29tcGF0aWJpbGl0eSB3aXRoIEJhc2VDdXJ2ZVxuUG9pbnQucHJvdG90eXBlLnRvUCA9IFBvaW50LnByb3RvdHlwZS5ub3JtYWxpemU7XG5Qb2ludC5wcm90b3R5cGUubWl4ZWRBZGQgPSBQb2ludC5wcm90b3R5cGUuYWRkO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Vkd2FyZHMuanNcbi8vIG1vZHVsZSBpZCA9IDE3OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///178\n");

/***/ }),
/* 179 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar curves = exports;\n\nvar hash = __webpack_require__(41);\nvar elliptic = __webpack_require__(6);\n\nvar assert = elliptic.utils.assert;\n\nfunction PresetCurve(options) {\n  if (options.type === 'short')\n    this.curve = new elliptic.curve.short(options);\n  else if (options.type === 'edwards')\n    this.curve = new elliptic.curve.edwards(options);\n  else\n    this.curve = new elliptic.curve.mont(options);\n  this.g = this.curve.g;\n  this.n = this.curve.n;\n  this.hash = options.hash;\n\n  assert(this.g.validate(), 'Invalid curve');\n  assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n  Object.defineProperty(curves, name, {\n    configurable: true,\n    enumerable: true,\n    get: function() {\n      var curve = new PresetCurve(options);\n      Object.defineProperty(curves, name, {\n        configurable: true,\n        enumerable: true,\n        value: curve\n      });\n      return curve;\n    }\n  });\n}\n\ndefineCurve('p192', {\n  type: 'short',\n  prime: 'p192',\n  p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n  a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n  b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n  n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n    '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'\n  ]\n});\n\ndefineCurve('p224', {\n  type: 'short',\n  prime: 'p224',\n  p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n  a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n  b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n  n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n    'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'\n  ]\n});\n\ndefineCurve('p256', {\n  type: 'short',\n  prime: null,\n  p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n  a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n  b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n  n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n    '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'\n  ]\n});\n\ndefineCurve('p384', {\n  type: 'short',\n  prime: null,\n  p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'fffffffe ffffffff 00000000 00000000 ffffffff',\n  a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'fffffffe ffffffff 00000000 00000000 fffffffc',\n  b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n     '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n  n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n     'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n  hash: hash.sha384,\n  gRed: false,\n  g: [\n    'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n    '5502f25d bf55296c 3a545e38 72760ab7',\n    '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n    '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'\n  ]\n});\n\ndefineCurve('p521', {\n  type: 'short',\n  prime: null,\n  p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff ffffffff',\n  a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff ffffffff ffffffff fffffffc',\n  b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n     '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n     '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n  n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n     'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n     'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n  hash: hash.sha512,\n  gRed: false,\n  g: [\n    '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n    '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n    'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n    '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n    '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n    '3fad0761 353c7086 a272c240 88be9476 9fd16650'\n  ]\n});\n\ndefineCurve('curve25519', {\n  type: 'mont',\n  prime: 'p25519',\n  p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n  a: '76d06',\n  b: '1',\n  n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '9'\n  ]\n});\n\ndefineCurve('ed25519', {\n  type: 'edwards',\n  prime: 'p25519',\n  p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n  a: '-1',\n  c: '1',\n  // -121665 * (121666^(-1)) (mod P)\n  d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n  n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n  hash: hash.sha256,\n  gRed: false,\n  g: [\n    '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n    // 4/5\n    '6666666666666666666666666666666666666666666666666666666666666658'\n  ]\n});\n\nvar pre;\ntry {\n  pre = __webpack_require__(186);\n} catch (e) {\n  pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n  type: 'short',\n  prime: 'k256',\n  p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n  a: '0',\n  b: '7',\n  n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n  h: '1',\n  hash: hash.sha256,\n\n  // Precomputed endomorphism\n  beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n  lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n  basis: [\n    {\n      a: '3086d221a7d46bcde86c90e49284eb15',\n      b: '-e4437ed6010e88286f547fa90abfe4c3'\n    },\n    {\n      a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n      b: '3086d221a7d46bcde86c90e49284eb15'\n    }\n  ],\n\n  gRed: false,\n  g: [\n    '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n    '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n    pre\n  ]\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZXMuanM/ODUwZiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBjdXJ2ZXMgPSBleHBvcnRzO1xuXG52YXIgaGFzaCA9IHJlcXVpcmUoJ2hhc2guanMnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uL2VsbGlwdGljJyk7XG5cbnZhciBhc3NlcnQgPSBlbGxpcHRpYy51dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIFByZXNldEN1cnZlKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ3Nob3J0JylcbiAgICB0aGlzLmN1cnZlID0gbmV3IGVsbGlwdGljLmN1cnZlLnNob3J0KG9wdGlvbnMpO1xuICBlbHNlIGlmIChvcHRpb25zLnR5cGUgPT09ICdlZHdhcmRzJylcbiAgICB0aGlzLmN1cnZlID0gbmV3IGVsbGlwdGljLmN1cnZlLmVkd2FyZHMob3B0aW9ucyk7XG4gIGVsc2VcbiAgICB0aGlzLmN1cnZlID0gbmV3IGVsbGlwdGljLmN1cnZlLm1vbnQob3B0aW9ucyk7XG4gIHRoaXMuZyA9IHRoaXMuY3VydmUuZztcbiAgdGhpcy5uID0gdGhpcy5jdXJ2ZS5uO1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2g7XG5cbiAgYXNzZXJ0KHRoaXMuZy52YWxpZGF0ZSgpLCAnSW52YWxpZCBjdXJ2ZScpO1xuICBhc3NlcnQodGhpcy5nLm11bCh0aGlzLm4pLmlzSW5maW5pdHkoKSwgJ0ludmFsaWQgY3VydmUsIEcqTiAhPSBPJyk7XG59XG5jdXJ2ZXMuUHJlc2V0Q3VydmUgPSBQcmVzZXRDdXJ2ZTtcblxuZnVuY3Rpb24gZGVmaW5lQ3VydmUobmFtZSwgb3B0aW9ucykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3VydmVzLCBuYW1lLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjdXJ2ZSA9IG5ldyBQcmVzZXRDdXJ2ZShvcHRpb25zKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdXJ2ZXMsIG5hbWUsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogY3VydmVcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGN1cnZlO1xuICAgIH1cbiAgfSk7XG59XG5cbmRlZmluZUN1cnZlKCdwMTkyJywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogJ3AxOTInLFxuICBwOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmMnLFxuICBiOiAnNjQyMTA1MTkgZTU5YzgwZTcgMGZhN2U5YWIgNzIyNDMwNDkgZmViOGRlZWMgYzE0NmI5YjEnLFxuICBuOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgOTlkZWY4MzYgMTQ2YmM5YjEgYjRkMjI4MzEnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnMTg4ZGE4MGUgYjAzMDkwZjYgN2NiZjIwZWIgNDNhMTg4MDAgZjRmZjBhZmQgODJmZjEwMTInLFxuICAgICcwNzE5MmI5NSBmZmM4ZGE3OCA2MzEwMTFlZCA2YjI0Y2RkNSA3M2Y5NzdhMSAxZTc5NDgxMSdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdwMjI0Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogJ3AyMjQnLFxuICBwOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEnLFxuICBhOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUnLFxuICBiOiAnYjQwNTBhODUgMGMwNGIzYWIgZjU0MTMyNTYgNTA0NGIwYjcgZDdiZmQ4YmEgMjcwYjM5NDMgMjM1NWZmYjQnLFxuICBuOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZjE2YTIgZTBiOGYwM2UgMTNkZDI5NDUgNWM1YzJhM2QnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnYjcwZTBjYmQgNmJiNGJmN2YgMzIxMzkwYjkgNGEwM2MxZDMgNTZjMjExMjIgMzQzMjgwZDYgMTE1YzFkMjEnLFxuICAgICdiZDM3NjM4OCBiNWY3MjNmYiA0YzIyZGZlNiBjZDQzNzVhMCA1YTA3NDc2NCA0NGQ1ODE5OSA4NTAwN2UzNCdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdwMjU2Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJ2ZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmJyxcbiAgYTogJ2ZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjJyxcbiAgYjogJzVhYzYzNWQ4IGFhM2E5M2U3IGIzZWJiZDU1IDc2OTg4NmJjIDY1MWQwNmIwIGNjNTNiMGY2IDNiY2UzYzNlIDI3ZDI2MDRiJyxcbiAgbjogJ2ZmZmZmZmZmIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGJjZTZmYWFkIGE3MTc5ZTg0IGYzYjljYWMyIGZjNjMyNTUxJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzZiMTdkMWYyIGUxMmM0MjQ3IGY4YmNlNmU1IDYzYTQ0MGYyIDc3MDM3ZDgxIDJkZWIzM2EwIGY0YTEzOTQ1IGQ4OThjMjk2JyxcbiAgICAnNGZlMzQyZTIgZmUxYTdmOWIgOGVlN2ViNGEgN2MwZjllMTYgMmJjZTMzNTcgNmIzMTVlY2UgY2JiNjQwNjggMzdiZjUxZjUnXG4gIF1cbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDM4NCcsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6IG51bGwsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmJyxcbiAgYTogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmMnLFxuICBiOiAnYjMzMTJmYTcgZTIzZWU3ZTQgOTg4ZTA1NmIgZTNmODJkMTkgMTgxZDljNmUgZmU4MTQxMTIgMDMxNDA4OGYgJyArXG4gICAgICc1MDEzODc1YSBjNjU2Mzk4ZCA4YTJlZDE5ZCAyYTg1YzhlZCBkM2VjMmFlZicsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBjNzYzNGQ4MSAnICtcbiAgICAgJ2Y0MzcyZGRmIDU4MWEwZGIyIDQ4YjBhNzdhIGVjZWMxOTZhIGNjYzUyOTczJyxcbiAgaGFzaDogaGFzaC5zaGEzODQsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJ2FhODdjYTIyIGJlOGIwNTM3IDhlYjFjNzFlIGYzMjBhZDc0IDZlMWQzYjYyIDhiYTc5Yjk4IDU5Zjc0MWUwIDgyNTQyYTM4ICcgK1xuICAgICc1NTAyZjI1ZCBiZjU1Mjk2YyAzYTU0NWUzOCA3Mjc2MGFiNycsXG4gICAgJzM2MTdkZTRhIDk2MjYyYzZmIDVkOWU5OGJmIDkyOTJkYzI5IGY4ZjQxZGJkIDI4OWExNDdjIGU5ZGEzMTEzIGI1ZjBiOGMwICcgK1xuICAgICcwYTYwYjFjZSAxZDdlODE5ZCA3YTQzMWQ3YyA5MGVhMGU1ZidcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdwNTIxJywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJzAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZicsXG4gIGE6ICcwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmMnLFxuICBiOiAnMDAwMDAwNTEgOTUzZWI5NjEgOGUxYzlhMWYgOTI5YTIxYTAgYjY4NTQwZWUgYTJkYTcyNWIgJyArXG4gICAgICc5OWIzMTVmMyBiOGI0ODk5MSA4ZWYxMDllMSA1NjE5Mzk1MSBlYzdlOTM3YiAxNjUyYzBiZCAnICtcbiAgICAgJzNiYjFiZjA3IDM1NzNkZjg4IDNkMmMzNGYxIGVmNDUxZmQ0IDZiNTAzZjAwJyxcbiAgbjogJzAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmEgNTE4Njg3ODMgYmYyZjk2NmIgN2ZjYzAxNDggJyArXG4gICAgICdmNzA5YTVkMCAzYmI1YzliOCA4OTljNDdhZSBiYjZmYjcxZSA5MTM4NjQwOScsXG4gIGhhc2g6IGhhc2guc2hhNTEyLFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcwMDAwMDBjNiA4NThlMDZiNyAwNDA0ZTljZCA5ZTNlY2I2NiAyMzk1YjQ0MiA5YzY0ODEzOSAnICtcbiAgICAnMDUzZmI1MjEgZjgyOGFmNjAgNmI0ZDNkYmEgYTE0YjVlNzcgZWZlNzU5MjggZmUxZGMxMjcgJyArXG4gICAgJ2EyZmZhOGRlIDMzNDhiM2MxIDg1NmE0MjliIGY5N2U3ZTMxIGMyZTViZDY2JyxcbiAgICAnMDAwMDAxMTggMzkyOTZhNzggOWEzYmMwMDQgNWM4YTVmYjQgMmM3ZDFiZDkgOThmNTQ0NDkgJyArXG4gICAgJzU3OWI0NDY4IDE3YWZiZDE3IDI3M2U2NjJjIDk3ZWU3Mjk5IDVlZjQyNjQwIGM1NTBiOTAxICcgK1xuICAgICczZmFkMDc2MSAzNTNjNzA4NiBhMjcyYzI0MCA4OGJlOTQ3NiA5ZmQxNjY1MCdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdjdXJ2ZTI1NTE5Jywge1xuICB0eXBlOiAnbW9udCcsXG4gIHByaW1lOiAncDI1NTE5JyxcbiAgcDogJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnLFxuICBhOiAnNzZkMDYnLFxuICBiOiAnMScsXG4gIG46ICcxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3OWNkNiA1ODEyNjMxYTVjZjVkM2VkJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzknXG4gIF1cbn0pO1xuXG5kZWZpbmVDdXJ2ZSgnZWQyNTUxOScsIHtcbiAgdHlwZTogJ2Vkd2FyZHMnLFxuICBwcmltZTogJ3AyNTUxOScsXG4gIHA6ICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyxcbiAgYTogJy0xJyxcbiAgYzogJzEnLFxuICAvLyAtMTIxNjY1ICogKDEyMTY2Nl4oLTEpKSAobW9kIFApXG4gIGQ6ICc1MjAzNmNlZTJiNmZmZTczIDhjYzc0MDc5Nzc3OWU4OTggMDA3MDBhNGQ0MTQxZDhhYiA3NWViNGRjYTEzNTk3OGEzJyxcbiAgbjogJzEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnMjE2OTM2ZDNjZDZlNTNmZWMwYTRlMjMxZmRkNmRjNWM2OTJjYzc2MDk1MjVhN2IyYzk1NjJkNjA4ZjI1ZDUxYScsXG5cbiAgICAvLyA0LzVcbiAgICAnNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY1OCdcbiAgXVxufSk7XG5cbnZhciBwcmU7XG50cnkge1xuICBwcmUgPSByZXF1aXJlKCcuL3ByZWNvbXB1dGVkL3NlY3AyNTZrMScpO1xufSBjYXRjaCAoZSkge1xuICBwcmUgPSB1bmRlZmluZWQ7XG59XG5cbmRlZmluZUN1cnZlKCdzZWNwMjU2azEnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAnazI1NicsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZicsXG4gIGE6ICcwJyxcbiAgYjogJzcnLFxuICBuOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgYmFhZWRjZTYgYWY0OGEwM2IgYmZkMjVlOGMgZDAzNjQxNDEnLFxuICBoOiAnMScsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuXG4gIC8vIFByZWNvbXB1dGVkIGVuZG9tb3JwaGlzbVxuICBiZXRhOiAnN2FlOTZhMmI2NTdjMDcxMDZlNjQ0NzllYWMzNDM0ZTk5Y2YwNDk3NTEyZjU4OTk1YzEzOTZjMjg3MTk1MDFlZScsXG4gIGxhbWJkYTogJzUzNjNhZDRjYzA1YzMwZTBhNTI2MWMwMjg4MTI2NDVhMTIyZTIyZWEyMDgxNjY3OGRmMDI5NjdjMWIyM2JkNzInLFxuICBiYXNpczogW1xuICAgIHtcbiAgICAgIGE6ICczMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNScsXG4gICAgICBiOiAnLWU0NDM3ZWQ2MDEwZTg4Mjg2ZjU0N2ZhOTBhYmZlNGMzJ1xuICAgIH0sXG4gICAge1xuICAgICAgYTogJzExNGNhNTBmN2E4ZTJmM2Y2NTdjMTEwOGQ5ZDQ0Y2ZkOCcsXG4gICAgICBiOiAnMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUnXG4gICAgfVxuICBdLFxuXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzc5YmU2NjdlZjlkY2JiYWM1NWEwNjI5NWNlODcwYjA3MDI5YmZjZGIyZGNlMjhkOTU5ZjI4MTViMTZmODE3OTgnLFxuICAgICc0ODNhZGE3NzI2YTNjNDY1NWRhNGZiZmMwZTExMDhhOGZkMTdiNDQ4YTY4NTU0MTk5YzQ3ZDA4ZmZiMTBkNGI4JyxcbiAgICBwcmVcbiAgXVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmVzLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///179\n");

/***/ }),
/* 180 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nexports.sha1 = __webpack_require__(181);\nexports.sha224 = __webpack_require__(182);\nexports.sha256 = __webpack_require__(75);\nexports.sha384 = __webpack_require__(183);\nexports.sha512 = __webpack_require__(76);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTgwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLmpzPzM0MjQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLnNoYTEgPSByZXF1aXJlKCcuL3NoYS8xJyk7XG5leHBvcnRzLnNoYTIyNCA9IHJlcXVpcmUoJy4vc2hhLzIyNCcpO1xuZXhwb3J0cy5zaGEyNTYgPSByZXF1aXJlKCcuL3NoYS8yNTYnKTtcbmV4cG9ydHMuc2hhMzg0ID0gcmVxdWlyZSgnLi9zaGEvMzg0Jyk7XG5leHBvcnRzLnNoYTUxMiA9IHJlcXVpcmUoJy4vc2hhLzUxMicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9zaGEuanNcbi8vIG1vZHVsZSBpZCA9IDE4MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///180\n");

/***/ }),
/* 181 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(8);\nvar common = __webpack_require__(18);\nvar shaCommon = __webpack_require__(74);\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n  0x5A827999, 0x6ED9EBA1,\n  0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n  if (!(this instanceof SHA1))\n    return new SHA1();\n\n  BlockHash.call(this);\n  this.h = [\n    0x67452301, 0xefcdab89, 0x98badcfe,\n    0x10325476, 0xc3d2e1f0 ];\n  this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n  var W = this.W;\n\n  for (var i = 0; i < 16; i++)\n    W[i] = msg[start + i];\n\n  for(; i < W.length; i++)\n    W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n  var a = this.h[0];\n  var b = this.h[1];\n  var c = this.h[2];\n  var d = this.h[3];\n  var e = this.h[4];\n\n  for (i = 0; i < W.length; i++) {\n    var s = ~~(i / 20);\n    var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n    e = d;\n    d = c;\n    c = rotl32(b, 30);\n    b = a;\n    a = t;\n  }\n\n  this.h[0] = sum32(this.h[0], a);\n  this.h[1] = sum32(this.h[1], b);\n  this.h[2] = sum32(this.h[2], c);\n  this.h[3] = sum32(this.h[3], d);\n  this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'big');\n  else\n    return utils.split32(this.h, 'big');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTgxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLzEuanM/NmNjNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi4vY29tbW9uJyk7XG52YXIgc2hhQ29tbW9uID0gcmVxdWlyZSgnLi9jb21tb24nKTtcblxudmFyIHJvdGwzMiA9IHV0aWxzLnJvdGwzMjtcbnZhciBzdW0zMiA9IHV0aWxzLnN1bTMyO1xudmFyIHN1bTMyXzUgPSB1dGlscy5zdW0zMl81O1xudmFyIGZ0XzEgPSBzaGFDb21tb24uZnRfMTtcbnZhciBCbG9ja0hhc2ggPSBjb21tb24uQmxvY2tIYXNoO1xuXG52YXIgc2hhMV9LID0gW1xuICAweDVBODI3OTk5LCAweDZFRDlFQkExLFxuICAweDhGMUJCQ0RDLCAweENBNjJDMUQ2XG5dO1xuXG5mdW5jdGlvbiBTSEExKCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMSkpXG4gICAgcmV0dXJuIG5ldyBTSEExKCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFtcbiAgICAweDY3NDUyMzAxLCAweGVmY2RhYjg5LCAweDk4YmFkY2ZlLFxuICAgIDB4MTAzMjU0NzYsIDB4YzNkMmUxZjAgXTtcbiAgdGhpcy5XID0gbmV3IEFycmF5KDgwKTtcbn1cblxudXRpbHMuaW5oZXJpdHMoU0hBMSwgQmxvY2tIYXNoKTtcbm1vZHVsZS5leHBvcnRzID0gU0hBMTtcblxuU0hBMS5ibG9ja1NpemUgPSA1MTI7XG5TSEExLm91dFNpemUgPSAxNjA7XG5TSEExLmhtYWNTdHJlbmd0aCA9IDgwO1xuU0hBMS5wYWRMZW5ndGggPSA2NDtcblxuU0hBMS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgVyA9IHRoaXMuVztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspXG4gICAgV1tpXSA9IG1zZ1tzdGFydCArIGldO1xuXG4gIGZvcig7IGkgPCBXLmxlbmd0aDsgaSsrKVxuICAgIFdbaV0gPSByb3RsMzIoV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XSwgMSk7XG5cbiAgdmFyIGEgPSB0aGlzLmhbMF07XG4gIHZhciBiID0gdGhpcy5oWzFdO1xuICB2YXIgYyA9IHRoaXMuaFsyXTtcbiAgdmFyIGQgPSB0aGlzLmhbM107XG4gIHZhciBlID0gdGhpcy5oWzRdO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBXLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHMgPSB+fihpIC8gMjApO1xuICAgIHZhciB0ID0gc3VtMzJfNShyb3RsMzIoYSwgNSksIGZ0XzEocywgYiwgYywgZCksIGUsIFdbaV0sIHNoYTFfS1tzXSk7XG4gICAgZSA9IGQ7XG4gICAgZCA9IGM7XG4gICAgYyA9IHJvdGwzMihiLCAzMCk7XG4gICAgYiA9IGE7XG4gICAgYSA9IHQ7XG4gIH1cblxuICB0aGlzLmhbMF0gPSBzdW0zMih0aGlzLmhbMF0sIGEpO1xuICB0aGlzLmhbMV0gPSBzdW0zMih0aGlzLmhbMV0sIGIpO1xuICB0aGlzLmhbMl0gPSBzdW0zMih0aGlzLmhbMl0sIGMpO1xuICB0aGlzLmhbM10gPSBzdW0zMih0aGlzLmhbM10sIGQpO1xuICB0aGlzLmhbNF0gPSBzdW0zMih0aGlzLmhbNF0sIGUpO1xufTtcblxuU0hBMS5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdiaWcnKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS8xLmpzXG4vLyBtb2R1bGUgaWQgPSAxODFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///181\n");

/***/ }),
/* 182 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(8);\nvar SHA256 = __webpack_require__(75);\n\nfunction SHA224() {\n  if (!(this instanceof SHA224))\n    return new SHA224();\n\n  SHA256.call(this);\n  this.h = [\n    0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n    0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n  // Just truncate output\n  if (enc === 'hex')\n    return utils.toHex32(this.h.slice(0, 7), 'big');\n  else\n    return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTgyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLzIyNC5qcz83ZDYwIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBTSEEyNTYgPSByZXF1aXJlKCcuLzI1NicpO1xuXG5mdW5jdGlvbiBTSEEyMjQoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEEyMjQpKVxuICAgIHJldHVybiBuZXcgU0hBMjI0KCk7XG5cbiAgU0hBMjU2LmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFtcbiAgICAweGMxMDU5ZWQ4LCAweDM2N2NkNTA3LCAweDMwNzBkZDE3LCAweGY3MGU1OTM5LFxuICAgIDB4ZmZjMDBiMzEsIDB4Njg1ODE1MTEsIDB4NjRmOThmYTcsIDB4YmVmYTRmYTQgXTtcbn1cbnV0aWxzLmluaGVyaXRzKFNIQTIyNCwgU0hBMjU2KTtcbm1vZHVsZS5leHBvcnRzID0gU0hBMjI0O1xuXG5TSEEyMjQuYmxvY2tTaXplID0gNTEyO1xuU0hBMjI0Lm91dFNpemUgPSAyMjQ7XG5TSEEyMjQuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBMjI0LnBhZExlbmd0aCA9IDY0O1xuXG5TSEEyMjQucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIC8vIEp1c3QgdHJ1bmNhdGUgb3V0cHV0XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaC5zbGljZSgwLCA3KSwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsIDcpLCAnYmlnJyk7XG59O1xuXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS8yMjQuanNcbi8vIG1vZHVsZSBpZCA9IDE4MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///182\n");

/***/ }),
/* 183 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(8);\n\nvar SHA512 = __webpack_require__(76);\n\nfunction SHA384() {\n  if (!(this instanceof SHA384))\n    return new SHA384();\n\n  SHA512.call(this);\n  this.h = [\n    0xcbbb9d5d, 0xc1059ed8,\n    0x629a292a, 0x367cd507,\n    0x9159015a, 0x3070dd17,\n    0x152fecd8, 0xf70e5939,\n    0x67332667, 0xffc00b31,\n    0x8eb44a87, 0x68581511,\n    0xdb0c2e0d, 0x64f98fa7,\n    0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h.slice(0, 12), 'big');\n  else\n    return utils.split32(this.h.slice(0, 12), 'big');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTgzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLzM4NC5qcz8xMDdlIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxudmFyIFNIQTUxMiA9IHJlcXVpcmUoJy4vNTEyJyk7XG5cbmZ1bmN0aW9uIFNIQTM4NCgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTM4NCkpXG4gICAgcmV0dXJuIG5ldyBTSEEzODQoKTtcblxuICBTSEE1MTIuY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gW1xuICAgIDB4Y2JiYjlkNWQsIDB4YzEwNTllZDgsXG4gICAgMHg2MjlhMjkyYSwgMHgzNjdjZDUwNyxcbiAgICAweDkxNTkwMTVhLCAweDMwNzBkZDE3LFxuICAgIDB4MTUyZmVjZDgsIDB4ZjcwZTU5MzksXG4gICAgMHg2NzMzMjY2NywgMHhmZmMwMGIzMSxcbiAgICAweDhlYjQ0YTg3LCAweDY4NTgxNTExLFxuICAgIDB4ZGIwYzJlMGQsIDB4NjRmOThmYTcsXG4gICAgMHg0N2I1NDgxZCwgMHhiZWZhNGZhNCBdO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBMzg0LCBTSEE1MTIpO1xubW9kdWxlLmV4cG9ydHMgPSBTSEEzODQ7XG5cblNIQTM4NC5ibG9ja1NpemUgPSAxMDI0O1xuU0hBMzg0Lm91dFNpemUgPSAzODQ7XG5TSEEzODQuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBMzg0LnBhZExlbmd0aCA9IDEyODtcblxuU0hBMzg0LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmguc2xpY2UoMCwgMTIpLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmguc2xpY2UoMCwgMTIpLCAnYmlnJyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9zaGEvMzg0LmpzXG4vLyBtb2R1bGUgaWQgPSAxODNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///183\n");

/***/ }),
/* 184 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(8);\nvar common = __webpack_require__(18);\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n  if (!(this instanceof RIPEMD160))\n    return new RIPEMD160();\n\n  BlockHash.call(this);\n\n  this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n  this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n  var A = this.h[0];\n  var B = this.h[1];\n  var C = this.h[2];\n  var D = this.h[3];\n  var E = this.h[4];\n  var Ah = A;\n  var Bh = B;\n  var Ch = C;\n  var Dh = D;\n  var Eh = E;\n  for (var j = 0; j < 80; j++) {\n    var T = sum32(\n      rotl32(\n        sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n        s[j]),\n      E);\n    A = E;\n    E = D;\n    D = rotl32(C, 10);\n    C = B;\n    B = T;\n    T = sum32(\n      rotl32(\n        sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n        sh[j]),\n      Eh);\n    Ah = Eh;\n    Eh = Dh;\n    Dh = rotl32(Ch, 10);\n    Ch = Bh;\n    Bh = T;\n  }\n  T = sum32_3(this.h[1], C, Dh);\n  this.h[1] = sum32_3(this.h[2], D, Eh);\n  this.h[2] = sum32_3(this.h[3], E, Ah);\n  this.h[3] = sum32_3(this.h[4], A, Bh);\n  this.h[4] = sum32_3(this.h[0], B, Ch);\n  this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n  if (enc === 'hex')\n    return utils.toHex32(this.h, 'little');\n  else\n    return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n  if (j <= 15)\n    return x ^ y ^ z;\n  else if (j <= 31)\n    return (x & y) | ((~x) & z);\n  else if (j <= 47)\n    return (x | (~y)) ^ z;\n  else if (j <= 63)\n    return (x & z) | (y & (~z));\n  else\n    return x ^ (y | (~z));\n}\n\nfunction K(j) {\n  if (j <= 15)\n    return 0x00000000;\n  else if (j <= 31)\n    return 0x5a827999;\n  else if (j <= 47)\n    return 0x6ed9eba1;\n  else if (j <= 63)\n    return 0x8f1bbcdc;\n  else\n    return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n  if (j <= 15)\n    return 0x50a28be6;\n  else if (j <= 31)\n    return 0x5c4dd124;\n  else if (j <= 47)\n    return 0x6d703ef3;\n  else if (j <= 63)\n    return 0x7a6d76e9;\n  else\n    return 0x00000000;\n}\n\nvar r = [\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvcmlwZW1kLmpzPzA4YTAiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi9jb21tb24nKTtcblxudmFyIHJvdGwzMiA9IHV0aWxzLnJvdGwzMjtcbnZhciBzdW0zMiA9IHV0aWxzLnN1bTMyO1xudmFyIHN1bTMyXzMgPSB1dGlscy5zdW0zMl8zO1xudmFyIHN1bTMyXzQgPSB1dGlscy5zdW0zMl80O1xudmFyIEJsb2NrSGFzaCA9IGNvbW1vbi5CbG9ja0hhc2g7XG5cbmZ1bmN0aW9uIFJJUEVNRDE2MCgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJJUEVNRDE2MCkpXG4gICAgcmV0dXJuIG5ldyBSSVBFTUQxNjAoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcblxuICB0aGlzLmggPSBbIDB4Njc0NTIzMDEsIDB4ZWZjZGFiODksIDB4OThiYWRjZmUsIDB4MTAzMjU0NzYsIDB4YzNkMmUxZjAgXTtcbiAgdGhpcy5lbmRpYW4gPSAnbGl0dGxlJztcbn1cbnV0aWxzLmluaGVyaXRzKFJJUEVNRDE2MCwgQmxvY2tIYXNoKTtcbmV4cG9ydHMucmlwZW1kMTYwID0gUklQRU1EMTYwO1xuXG5SSVBFTUQxNjAuYmxvY2tTaXplID0gNTEyO1xuUklQRU1EMTYwLm91dFNpemUgPSAxNjA7XG5SSVBFTUQxNjAuaG1hY1N0cmVuZ3RoID0gMTkyO1xuUklQRU1EMTYwLnBhZExlbmd0aCA9IDY0O1xuXG5SSVBFTUQxNjAucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgQSA9IHRoaXMuaFswXTtcbiAgdmFyIEIgPSB0aGlzLmhbMV07XG4gIHZhciBDID0gdGhpcy5oWzJdO1xuICB2YXIgRCA9IHRoaXMuaFszXTtcbiAgdmFyIEUgPSB0aGlzLmhbNF07XG4gIHZhciBBaCA9IEE7XG4gIHZhciBCaCA9IEI7XG4gIHZhciBDaCA9IEM7XG4gIHZhciBEaCA9IEQ7XG4gIHZhciBFaCA9IEU7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgODA7IGorKykge1xuICAgIHZhciBUID0gc3VtMzIoXG4gICAgICByb3RsMzIoXG4gICAgICAgIHN1bTMyXzQoQSwgZihqLCBCLCBDLCBEKSwgbXNnW3Jbal0gKyBzdGFydF0sIEsoaikpLFxuICAgICAgICBzW2pdKSxcbiAgICAgIEUpO1xuICAgIEEgPSBFO1xuICAgIEUgPSBEO1xuICAgIEQgPSByb3RsMzIoQywgMTApO1xuICAgIEMgPSBCO1xuICAgIEIgPSBUO1xuICAgIFQgPSBzdW0zMihcbiAgICAgIHJvdGwzMihcbiAgICAgICAgc3VtMzJfNChBaCwgZig3OSAtIGosIEJoLCBDaCwgRGgpLCBtc2dbcmhbal0gKyBzdGFydF0sIEtoKGopKSxcbiAgICAgICAgc2hbal0pLFxuICAgICAgRWgpO1xuICAgIEFoID0gRWg7XG4gICAgRWggPSBEaDtcbiAgICBEaCA9IHJvdGwzMihDaCwgMTApO1xuICAgIENoID0gQmg7XG4gICAgQmggPSBUO1xuICB9XG4gIFQgPSBzdW0zMl8zKHRoaXMuaFsxXSwgQywgRGgpO1xuICB0aGlzLmhbMV0gPSBzdW0zMl8zKHRoaXMuaFsyXSwgRCwgRWgpO1xuICB0aGlzLmhbMl0gPSBzdW0zMl8zKHRoaXMuaFszXSwgRSwgQWgpO1xuICB0aGlzLmhbM10gPSBzdW0zMl8zKHRoaXMuaFs0XSwgQSwgQmgpO1xuICB0aGlzLmhbNF0gPSBzdW0zMl8zKHRoaXMuaFswXSwgQiwgQ2gpO1xuICB0aGlzLmhbMF0gPSBUO1xufTtcblxuUklQRU1EMTYwLnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdsaXR0bGUnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2xpdHRsZScpO1xufTtcblxuZnVuY3Rpb24gZihqLCB4LCB5LCB6KSB7XG4gIGlmIChqIDw9IDE1KVxuICAgIHJldHVybiB4IF4geSBeIHo7XG4gIGVsc2UgaWYgKGogPD0gMzEpXG4gICAgcmV0dXJuICh4ICYgeSkgfCAoKH54KSAmIHopO1xuICBlbHNlIGlmIChqIDw9IDQ3KVxuICAgIHJldHVybiAoeCB8ICh+eSkpIF4gejtcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gKHggJiB6KSB8ICh5ICYgKH56KSk7XG4gIGVsc2VcbiAgICByZXR1cm4geCBeICh5IHwgKH56KSk7XG59XG5cbmZ1bmN0aW9uIEsoaikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4gMHgwMDAwMDAwMDtcbiAgZWxzZSBpZiAoaiA8PSAzMSlcbiAgICByZXR1cm4gMHg1YTgyNzk5OTtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gMHg2ZWQ5ZWJhMTtcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gMHg4ZjFiYmNkYztcbiAgZWxzZVxuICAgIHJldHVybiAweGE5NTNmZDRlO1xufVxuXG5mdW5jdGlvbiBLaChqKSB7XG4gIGlmIChqIDw9IDE1KVxuICAgIHJldHVybiAweDUwYTI4YmU2O1xuICBlbHNlIGlmIChqIDw9IDMxKVxuICAgIHJldHVybiAweDVjNGRkMTI0O1xuICBlbHNlIGlmIChqIDw9IDQ3KVxuICAgIHJldHVybiAweDZkNzAzZWYzO1xuICBlbHNlIGlmIChqIDw9IDYzKVxuICAgIHJldHVybiAweDdhNmQ3NmU5O1xuICBlbHNlXG4gICAgcmV0dXJuIDB4MDAwMDAwMDA7XG59XG5cbnZhciByID0gW1xuICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LFxuICA3LCA0LCAxMywgMSwgMTAsIDYsIDE1LCAzLCAxMiwgMCwgOSwgNSwgMiwgMTQsIDExLCA4LFxuICAzLCAxMCwgMTQsIDQsIDksIDE1LCA4LCAxLCAyLCA3LCAwLCA2LCAxMywgMTEsIDUsIDEyLFxuICAxLCA5LCAxMSwgMTAsIDAsIDgsIDEyLCA0LCAxMywgMywgNywgMTUsIDE0LCA1LCA2LCAyLFxuICA0LCAwLCA1LCA5LCA3LCAxMiwgMiwgMTAsIDE0LCAxLCAzLCA4LCAxMSwgNiwgMTUsIDEzXG5dO1xuXG52YXIgcmggPSBbXG4gIDUsIDE0LCA3LCAwLCA5LCAyLCAxMSwgNCwgMTMsIDYsIDE1LCA4LCAxLCAxMCwgMywgMTIsXG4gIDYsIDExLCAzLCA3LCAwLCAxMywgNSwgMTAsIDE0LCAxNSwgOCwgMTIsIDQsIDksIDEsIDIsXG4gIDE1LCA1LCAxLCAzLCA3LCAxNCwgNiwgOSwgMTEsIDgsIDEyLCAyLCAxMCwgMCwgNCwgMTMsXG4gIDgsIDYsIDQsIDEsIDMsIDExLCAxNSwgMCwgNSwgMTIsIDIsIDEzLCA5LCA3LCAxMCwgMTQsXG4gIDEyLCAxNSwgMTAsIDQsIDEsIDUsIDgsIDcsIDYsIDIsIDEzLCAxNCwgMCwgMywgOSwgMTFcbl07XG5cbnZhciBzID0gW1xuICAxMSwgMTQsIDE1LCAxMiwgNSwgOCwgNywgOSwgMTEsIDEzLCAxNCwgMTUsIDYsIDcsIDksIDgsXG4gIDcsIDYsIDgsIDEzLCAxMSwgOSwgNywgMTUsIDcsIDEyLCAxNSwgOSwgMTEsIDcsIDEzLCAxMixcbiAgMTEsIDEzLCA2LCA3LCAxNCwgOSwgMTMsIDE1LCAxNCwgOCwgMTMsIDYsIDUsIDEyLCA3LCA1LFxuICAxMSwgMTIsIDE0LCAxNSwgMTQsIDE1LCA5LCA4LCA5LCAxNCwgNSwgNiwgOCwgNiwgNSwgMTIsXG4gIDksIDE1LCA1LCAxMSwgNiwgOCwgMTMsIDEyLCA1LCAxMiwgMTMsIDE0LCAxMSwgOCwgNSwgNlxuXTtcblxudmFyIHNoID0gW1xuICA4LCA5LCA5LCAxMSwgMTMsIDE1LCAxNSwgNSwgNywgNywgOCwgMTEsIDE0LCAxNCwgMTIsIDYsXG4gIDksIDEzLCAxNSwgNywgMTIsIDgsIDksIDExLCA3LCA3LCAxMiwgNywgNiwgMTUsIDEzLCAxMSxcbiAgOSwgNywgMTUsIDExLCA4LCA2LCA2LCAxNCwgMTIsIDEzLCA1LCAxNCwgMTMsIDEzLCA3LCA1LFxuICAxNSwgNSwgOCwgMTEsIDE0LCAxNCwgNiwgMTQsIDYsIDksIDEyLCA5LCAxMiwgNSwgMTUsIDgsXG4gIDgsIDUsIDEyLCA5LCAxMiwgNSwgMTQsIDYsIDgsIDEzLCA2LCA1LCAxNSwgMTMsIDExLCAxMVxuXTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvcmlwZW1kLmpzXG4vLyBtb2R1bGUgaWQgPSAxODRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///184\n");

/***/ }),
/* 185 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar utils = __webpack_require__(8);\nvar assert = __webpack_require__(7);\n\nfunction Hmac(hash, key, enc) {\n  if (!(this instanceof Hmac))\n    return new Hmac(hash, key, enc);\n  this.Hash = hash;\n  this.blockSize = hash.blockSize / 8;\n  this.outSize = hash.outSize / 8;\n  this.inner = null;\n  this.outer = null;\n\n  this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n  // Shorten key, if needed\n  if (key.length > this.blockSize)\n    key = new this.Hash().update(key).digest();\n  assert(key.length <= this.blockSize);\n\n  // Add padding to key\n  for (var i = key.length; i < this.blockSize; i++)\n    key.push(0);\n\n  for (i = 0; i < key.length; i++)\n    key[i] ^= 0x36;\n  this.inner = new this.Hash().update(key);\n\n  // 0x36 ^ 0x5c = 0x6a\n  for (i = 0; i < key.length; i++)\n    key[i] ^= 0x6a;\n  this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n  this.inner.update(msg, enc);\n  return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n  this.outer.update(this.inner.digest());\n  return this.outer.digest(enc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvaG1hYy5qcz9kZTQ0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxuZnVuY3Rpb24gSG1hYyhoYXNoLCBrZXksIGVuYykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgSG1hYykpXG4gICAgcmV0dXJuIG5ldyBIbWFjKGhhc2gsIGtleSwgZW5jKTtcbiAgdGhpcy5IYXNoID0gaGFzaDtcbiAgdGhpcy5ibG9ja1NpemUgPSBoYXNoLmJsb2NrU2l6ZSAvIDg7XG4gIHRoaXMub3V0U2l6ZSA9IGhhc2gub3V0U2l6ZSAvIDg7XG4gIHRoaXMuaW5uZXIgPSBudWxsO1xuICB0aGlzLm91dGVyID0gbnVsbDtcblxuICB0aGlzLl9pbml0KHV0aWxzLnRvQXJyYXkoa2V5LCBlbmMpKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gSG1hYztcblxuSG1hYy5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0KGtleSkge1xuICAvLyBTaG9ydGVuIGtleSwgaWYgbmVlZGVkXG4gIGlmIChrZXkubGVuZ3RoID4gdGhpcy5ibG9ja1NpemUpXG4gICAga2V5ID0gbmV3IHRoaXMuSGFzaCgpLnVwZGF0ZShrZXkpLmRpZ2VzdCgpO1xuICBhc3NlcnQoa2V5Lmxlbmd0aCA8PSB0aGlzLmJsb2NrU2l6ZSk7XG5cbiAgLy8gQWRkIHBhZGRpbmcgdG8ga2V5XG4gIGZvciAodmFyIGkgPSBrZXkubGVuZ3RoOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICBrZXkucHVzaCgwKTtcblxuICBmb3IgKGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgaSsrKVxuICAgIGtleVtpXSBePSAweDM2O1xuICB0aGlzLmlubmVyID0gbmV3IHRoaXMuSGFzaCgpLnVwZGF0ZShrZXkpO1xuXG4gIC8vIDB4MzYgXiAweDVjID0gMHg2YVxuICBmb3IgKGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgaSsrKVxuICAgIGtleVtpXSBePSAweDZhO1xuICB0aGlzLm91dGVyID0gbmV3IHRoaXMuSGFzaCgpLnVwZGF0ZShrZXkpO1xufTtcblxuSG1hYy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKG1zZywgZW5jKSB7XG4gIHRoaXMuaW5uZXIudXBkYXRlKG1zZywgZW5jKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5IbWFjLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIHRoaXMub3V0ZXIudXBkYXRlKHRoaXMuaW5uZXIuZGlnZXN0KCkpO1xuICByZXR1cm4gdGhpcy5vdXRlci5kaWdlc3QoZW5jKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL2htYWMuanNcbi8vIG1vZHVsZSBpZCA9IDE4NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///185\n");

/***/ }),
/* 186 */
/***/ (function(module, exports) {

eval("module.exports = {\n  doubles: {\n    step: 4,\n    points: [\n      [\n        'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n        'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'\n      ],\n      [\n        '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n        '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'\n      ],\n      [\n        '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n        'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'\n      ],\n      [\n        '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n        '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'\n      ],\n      [\n        '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n        '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'\n      ],\n      [\n        '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n        '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'\n      ],\n      [\n        'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n        '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'\n      ],\n      [\n        '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n        'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'\n      ],\n      [\n        'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n        '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'\n      ],\n      [\n        'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n        'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'\n      ],\n      [\n        'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n        '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'\n      ],\n      [\n        '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n        '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'\n      ],\n      [\n        '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n        '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'\n      ],\n      [\n        '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n        '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'\n      ],\n      [\n        '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n        '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'\n      ],\n      [\n        '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n        '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'\n      ],\n      [\n        '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n        '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'\n      ],\n      [\n        '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n        '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'\n      ],\n      [\n        '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n        'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'\n      ],\n      [\n        'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n        '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'\n      ],\n      [\n        'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n        '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'\n      ],\n      [\n        '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n        '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'\n      ],\n      [\n        '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n        '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'\n      ],\n      [\n        'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n        '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'\n      ],\n      [\n        '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n        'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'\n      ],\n      [\n        'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n        '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'\n      ],\n      [\n        'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n        'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'\n      ],\n      [\n        'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n        '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'\n      ],\n      [\n        'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n        'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'\n      ],\n      [\n        'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n        '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'\n      ],\n      [\n        '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n        'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'\n      ],\n      [\n        '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n        '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'\n      ],\n      [\n        'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n        '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'\n      ],\n      [\n        '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n        'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'\n      ],\n      [\n        'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n        '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'\n      ],\n      [\n        'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n        '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'\n      ],\n      [\n        'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n        'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'\n      ],\n      [\n        '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n        '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'\n      ],\n      [\n        '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n        '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'\n      ],\n      [\n        '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n        'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'\n      ],\n      [\n        '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n        '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'\n      ],\n      [\n        'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n        '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'\n      ],\n      [\n        '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n        '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'\n      ],\n      [\n        '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n        'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'\n      ],\n      [\n        '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n        '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'\n      ],\n      [\n        'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n        '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'\n      ],\n      [\n        '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n        'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'\n      ],\n      [\n        'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n        'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'\n      ],\n      [\n        'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n        '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'\n      ],\n      [\n        '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n        'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'\n      ],\n      [\n        '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n        'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'\n      ],\n      [\n        'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n        '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'\n      ],\n      [\n        'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n        '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'\n      ],\n      [\n        'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n        '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'\n      ],\n      [\n        '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n        'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'\n      ],\n      [\n        '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n        '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'\n      ],\n      [\n        'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n        'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'\n      ],\n      [\n        '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n        'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'\n      ],\n      [\n        '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n        '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'\n      ],\n      [\n        '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n        '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'\n      ],\n      [\n        'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n        'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'\n      ],\n      [\n        '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n        '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'\n      ],\n      [\n        '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n        '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'\n      ],\n      [\n        'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n        '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'\n      ],\n      [\n        'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n        'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'\n      ]\n    ]\n  },\n  naf: {\n    wnd: 7,\n    points: [\n      [\n        'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n        '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'\n      ],\n      [\n        '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n        'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'\n      ],\n      [\n        '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n        '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'\n      ],\n      [\n        'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n        'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'\n      ],\n      [\n        '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n        'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'\n      ],\n      [\n        'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n        'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'\n      ],\n      [\n        'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n        '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'\n      ],\n      [\n        'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n        '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'\n      ],\n      [\n        '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n        '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'\n      ],\n      [\n        '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n        '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'\n      ],\n      [\n        '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n        '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'\n      ],\n      [\n        '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n        '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'\n      ],\n      [\n        'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n        'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'\n      ],\n      [\n        'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n        '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'\n      ],\n      [\n        '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n        'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'\n      ],\n      [\n        '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n        'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'\n      ],\n      [\n        '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n        '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'\n      ],\n      [\n        '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n        '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'\n      ],\n      [\n        '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n        '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'\n      ],\n      [\n        '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n        'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'\n      ],\n      [\n        'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n        'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'\n      ],\n      [\n        '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n        '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'\n      ],\n      [\n        '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n        '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'\n      ],\n      [\n        'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n        'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'\n      ],\n      [\n        '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n        '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'\n      ],\n      [\n        'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n        'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'\n      ],\n      [\n        'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n        'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'\n      ],\n      [\n        '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n        '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'\n      ],\n      [\n        '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n        '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'\n      ],\n      [\n        '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n        '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'\n      ],\n      [\n        'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n        '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'\n      ],\n      [\n        '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n        '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'\n      ],\n      [\n        'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n        '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'\n      ],\n      [\n        '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n        'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'\n      ],\n      [\n        '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n        'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'\n      ],\n      [\n        'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n        'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'\n      ],\n      [\n        '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n        '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'\n      ],\n      [\n        '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n        'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'\n      ],\n      [\n        'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n        'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'\n      ],\n      [\n        '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n        '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'\n      ],\n      [\n        '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n        'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'\n      ],\n      [\n        '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n        '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'\n      ],\n      [\n        '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n        'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'\n      ],\n      [\n        'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n        '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'\n      ],\n      [\n        '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n        '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'\n      ],\n      [\n        '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n        'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'\n      ],\n      [\n        '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n        'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'\n      ],\n      [\n        'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n        'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'\n      ],\n      [\n        'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n        'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'\n      ],\n      [\n        '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n        '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'\n      ],\n      [\n        '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n        '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'\n      ],\n      [\n        'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n        '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'\n      ],\n      [\n        'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n        'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'\n      ],\n      [\n        '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n        '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'\n      ],\n      [\n        '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n        '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'\n      ],\n      [\n        'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n        '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'\n      ],\n      [\n        '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n        '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'\n      ],\n      [\n        'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n        'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'\n      ],\n      [\n        '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n        'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'\n      ],\n      [\n        '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n        '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'\n      ],\n      [\n        'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n        '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'\n      ],\n      [\n        'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n        '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'\n      ],\n      [\n        '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n        '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'\n      ],\n      [\n        '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n        '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'\n      ],\n      [\n        '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n        'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'\n      ],\n      [\n        '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n        'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'\n      ],\n      [\n        '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n        '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'\n      ],\n      [\n        '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n        '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'\n      ],\n      [\n        '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n        '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'\n      ],\n      [\n        '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n        'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'\n      ],\n      [\n        'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n        'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'\n      ],\n      [\n        '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n        'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'\n      ],\n      [\n        'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n        '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'\n      ],\n      [\n        'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n        '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'\n      ],\n      [\n        'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n        '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'\n      ],\n      [\n        'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n        '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'\n      ],\n      [\n        '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n        'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'\n      ],\n      [\n        '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n        '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'\n      ],\n      [\n        '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n        'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'\n      ],\n      [\n        'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n        'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'\n      ],\n      [\n        'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n        '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'\n      ],\n      [\n        'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n        'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'\n      ],\n      [\n        'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n        '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'\n      ],\n      [\n        '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n        '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'\n      ],\n      [\n        'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n        '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'\n      ],\n      [\n        'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n        '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'\n      ],\n      [\n        '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n        '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'\n      ],\n      [\n        '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n        'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'\n      ],\n      [\n        'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n        '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'\n      ],\n      [\n        'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n        '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'\n      ],\n      [\n        'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n        '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'\n      ],\n      [\n        '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n        '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'\n      ],\n      [\n        'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n        'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'\n      ],\n      [\n        '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n        'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'\n      ],\n      [\n        'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n        'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'\n      ],\n      [\n        'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n        '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'\n      ],\n      [\n        '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n        'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'\n      ],\n      [\n        'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n        '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'\n      ],\n      [\n        'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n        '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'\n      ],\n      [\n        'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n        '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'\n      ],\n      [\n        '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n        'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'\n      ],\n      [\n        '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n        'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'\n      ],\n      [\n        'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n        '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'\n      ],\n      [\n        '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n        'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'\n      ],\n      [\n        '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n        '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'\n      ],\n      [\n        '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n        'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'\n      ],\n      [\n        'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n        'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'\n      ],\n      [\n        '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n        'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'\n      ],\n      [\n        '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n        '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'\n      ],\n      [\n        '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n        'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'\n      ],\n      [\n        '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n        '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'\n      ],\n      [\n        'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n        'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'\n      ],\n      [\n        '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n        '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'\n      ],\n      [\n        'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n        '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'\n      ],\n      [\n        '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n        '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'\n      ],\n      [\n        'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n        'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'\n      ],\n      [\n        'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n        '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'\n      ],\n      [\n        'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n        'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'\n      ],\n      [\n        '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n        'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'\n      ],\n      [\n        '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n        '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'\n      ],\n      [\n        '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n        'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'\n      ],\n      [\n        '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n        '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'\n      ],\n      [\n        '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n        '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'\n      ],\n      [\n        '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n        'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'\n      ],\n      [\n        '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n        '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'\n      ],\n      [\n        '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n        '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'\n      ],\n      [\n        '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n        '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'\n      ]\n    ]\n  }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9wcmVjb21wdXRlZC9zZWNwMjU2azEuanM/ZjViMiJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgZG91Ymxlczoge1xuICAgIHN0ZXA6IDQsXG4gICAgcG9pbnRzOiBbXG4gICAgICBbXG4gICAgICAgICdlNjBmY2U5M2I1OWU5ZWM1MzAxMWFhYmMyMWMyM2U5N2IyYTMxMzY5Yjg3YTVhZTljNDRlZTg5ZTJhNmRlYzBhJyxcbiAgICAgICAgJ2Y3ZTM1MDczOTllNTk1OTI5ZGI5OWYzNGY1NzkzNzEwMTI5Njg5MWU0NGQyM2YwYmUxZjMyY2NlNjk2MTY4MjEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODI4MjI2MzIxMmM2MDlkOWVhMmE2ZTNlMTcyZGUyMzhkOGMzOWNhYmQ1YWMxY2ExMDY0NmUyM2ZkNWY1MTUwOCcsXG4gICAgICAgICcxMWY4YTgwOTg1NTdkZmU0NWU4MjU2ZTgzMGI2MGFjZTYyZDYxM2FjMmY3YjE3YmVkMzFiNmVhZmY2ZTI2Y2FmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE3NWUxNTlmNzI4Yjg2NWE3MmY5OWNjNmM2ZmM4NDZkZTBiOTM4MzNmZDIyMjJlZDczZmNlNWI1NTFlNWI3MzknLFxuICAgICAgICAnZDM1MDZlMGQ5ZTNjNzllYmE0ZWY5N2E1MWZmNzFmNWVhY2I1OTU1YWRkMjQzNDVjNmVmYTZmZmVlOWZlZDY5NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNjNkOTBkNDQ3YjAwYzljOTljZWFjMDViNjI2MmVlMDUzNDQxYzdlNTU1NTJmZmU1MjZiYWQ4ZjgzZmY0NjQwJyxcbiAgICAgICAgJzRlMjczYWRmYzczMjIyMTk1M2I0NDUzOTdmMzM2MzE0NWI5YTg5MDA4MTk5ZWNiNjIwMDNjN2YzYmVlOWRlOSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4YjRiNWYxNjVkZjNjMmJlOGM2MjQ0YjViNzQ1NjM4ODQzZTRhNzgxYTE1YmNkMWI2OWY3OWE1NWRmZmRmODBjJyxcbiAgICAgICAgJzRhYWQwYTZmNjhkMzA4YjRiM2ZiZDc4MTNhYjBkYTA0ZjllMzM2NTQ2MTYyZWU1NmIzZWZmMGM2NWZkNGZkMzYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzIzY2JhYTZlNWRiOTk2ZDZiZjc3MWMwMGJkNTQ4YzdiNzAwZGJmZmE2YzBlNzdiY2I2MTE1OTI1MjMyZmNkYScsXG4gICAgICAgICc5NmU4NjdiNTU5NWNjNDk4YTkyMTEzNzQ4ODgyNGQ2ZTI2NjBhMDY1Mzc3OTQ5NDgwMWRjMDY5ZDllYjM5ZjVmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlYmZhNGQ0OTNiZWJmOThiYTVmZWVjODEyYzJkM2I1MDk0Nzk2MTIzN2E5MTk4MzlhNTMzZWNhMGU3ZGQ3ZmEnLFxuICAgICAgICAnNWQ5YThjYTM5NzBlZjBmMjY5ZWU3ZWRhZjE3ODA4OWQ5YWU0Y2RjM2E3MTFmNzEyZGRmZDRmZGFlMWRlODk5OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxMDBmNDRkYTY5NmU3MTY3Mjc5MWQwYTA5YjdiZGU0NTlmMTIxNWEyOWIzYzAzYmZlZmQ3ODM1YjM5YTQ4ZGIwJyxcbiAgICAgICAgJ2NkZDllMTMxOTJhMDBiNzcyZWM4ZjMzMDBjMDkwNjY2YjdmZjRhMThmZjUxOTVhYzBmYmQ1Y2Q2MmJjNjVhMDknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTEwMzFiZTI2MmM3ZWQxYjFkYzkyMjdhNGEwNGMwMTdhNzdmOGQ0NDY0ZjNiMzg1MmM4YWNkZTZlNTM0ZmQyZCcsXG4gICAgICAgICc5ZDcwNjE5Mjg5NDA0MDVlNmJiNmE0MTc2NTk3NTM1YWYyOTJkZDQxOWUxY2VkNzlhNDRmMThmMjk0NTZhMDBkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZlZWE2Y2FlNDZkNTViNTMwYWMyODM5ZjE0M2JkN2VjNWNmOGIyNjZhNDFkNmFmNTJkNWU2ODhkOTA5NDY5NmQnLFxuICAgICAgICAnZTU3YzZiNmM5N2RjZTFiYWIwNmU0ZTEyYmYzZWNkNWM5ODFjODk1N2NjNDE0NDJkMzE1NWRlYmYxODA5MDA4OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkYTY3YTkxZDkxMDQ5Y2RjYjM2N2JlNGJlNmZmY2EzY2ZlZWQ2NTdkODA4NTgzZGUzM2ZhOTc4YmMxZWM2Y2IxJyxcbiAgICAgICAgJzliYWNhYTM1NDgxNjQyYmM0MWY0NjNmN2VjOTc4MGU1ZGVjN2FkYzUwOGY3NDBhMTdlOWVhOGUyN2E2OGJlMWQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTM5MDRmYWEwYjMzNGNkZGE2ZTAwMDkzNWVmMjIxNTFlYzA4ZDBmN2JiMTEwNjlmNTc1NDVjY2MxYTM3YjdjMCcsXG4gICAgICAgICc1YmMwODdkMGJjODAxMDZkODhjOWVjY2FjMjBkM2MxYzEzOTk5OTgxZTE0NDM0Njk5ZGNiMDk2YjAyMjc3MWM4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhlN2JjZDBiZDM1OTgzYTc3MTljY2E3NzY0Y2E5MDY3NzliNTNhMDQzYTliOGJjYWVmZjk1OWY0M2FkODYwNDcnLFxuICAgICAgICAnMTBiNzc3MGIyYTNkYTRiMzk0MDMxMDQyMGNhOTUxNDU3OWU4OGUyZTQ3ZmQ2OGIzZWExMDA0N2U4NDYwMzcyYSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczODVlZWQzNGMxY2RmZjIxZTZkMDgxODY4OWI4MWJkZTcxYTdmNGYxODM5N2U2NjkwYTg0MWUxNTk5YzQzODYyJyxcbiAgICAgICAgJzI4M2JlYmMzZThlYTIzZjU2NzAxZGUxOWU5ZWJmNDU3NmIzMDRlZWMyMDg2ZGM4Y2MwNDU4ZmU1NTQyZTU0NTMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNmY5ZDliODAzZWNmMTkxNjM3YzczYTQ0MTNkZmExODBmZGRmODRhNTk0N2ZiYzljNjA2ZWQ4NmMzZmFjM2E3JyxcbiAgICAgICAgJzdjODBjNjhlNjAzMDU5YmE2OWI4ZTJhMzBlNDVjNGQ0N2VhNGRkMmY1YzI4MTAwMmQ4Njg5MDYwM2E4NDIxNjAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzMyMmQ0MDEyNDNjNGUyNTgyYTIxNDdjMTA0ZDZlY2JmNzc0ZDE2M2RiMGY1ZTUzMTNiN2UwZTc0MmQwZTZiZCcsXG4gICAgICAgICc1NmU3MDc5N2U5NjY0ZWY1YmZiMDE5YmM0ZGRhZjliNzI4MDVmNjNlYTI4NzNhZjYyNGYzYTJlOTZjMjhiMmEwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg1NjcyYzdkMmRlMGI3ZGEyYmQxNzcwZDg5NjY1ODY4NzQxYjNmOWFmNzY0MzM5NzcyMWQ3NGQyODEzNGFiODMnLFxuICAgICAgICAnN2M0ODFiOWI1YjQzYjJlYjYzNzQwNDliZmE2MmMyZTVlNzdmMTdmY2M1Mjk4ZjQ0YzhlMzA5NGY3OTAzMTNhNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5NDhiZjgwOWIxOTg4YTQ2YjA2YzlmMTkxOTQxM2IxMGY5MjI2YzYwZjY2ODgzMmZmZDk1OWFmNjBjODJhMGEnLFxuICAgICAgICAnNTNhNTYyODU2ZGNiNjY0NmRjNmI3NGM1ZDFjMzQxOGM2ZDRkZmYwOGM5N2NkMmJlZDRjYjdmODhkOGM4ZTU4OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MjYwY2U3ZjQ2MTgwMWMzNGYwNjdjZTBmMDI4NzNhOGYxYjBlNDRkZmM2OTc1MmFjY2VjZDgxOWYzOGZkOGU4JyxcbiAgICAgICAgJ2JjMmRhODJiNmZhNWI1NzFhN2YwOTA0OTc3NmExZWY3ZWNkMjkyMjM4MDUxYzE5OGMxYTg0ZTk1YjJiNGFlMTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTUwMzdkZTBhZmMxZDhkNDNkODM0ODQxNGJiZjQxMDMwNDNlYzhmNTc1YmZkYzQzMjk1M2NjOGQyMDM3ZmEyZCcsXG4gICAgICAgICc0NTcxNTM0YmFhOTRkM2I1ZjlmOThkMDlmYjk5MGJkZGJkNWY1YjAzZWM0ODFmMTBlMGU1ZGM4NDFkNzU1YmRhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UwNjM3MmIwZjRhMjA3YWRmNWVhOTA1ZThmMTc3MWI0ZTdlOGRiZDFjNmE2YzViNzI1ODY2YTBhZTRmY2U3MjUnLFxuICAgICAgICAnN2E5MDg5NzRiY2UxOGNmZTEyYTI3YmIyYWQ1YTQ4OGNkNzQ4NGE3Nzg3MTA0ODcwYjI3MDM0Zjk0ZWVlMzFkZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyMTNjN2E3MTVjZDVkNDUzNThkMGJiZjlkYzBjZTAyMjA0YjEwYmRkZTJhM2Y1ODU0MGFkNjkwOGQwNTU5NzU0JyxcbiAgICAgICAgJzRiNmRhZDBiNWFlNDYyNTA3MDEzYWQwNjI0NWJhMTkwYmI0ODUwZjVmMzZhN2VlZGRmZjJjMjc1MzRiNDU4ZjInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGU3YzI3MmE3YWY0YjM0ZThkYmI5MzUyYTU0MTlhODdlMjgzOGM3MGFkYzYyY2RkZjBjYzNhM2IwOGZiZDUzYycsXG4gICAgICAgICcxNzc0OWM3NjZjOWQwYjE4ZTE2ZmQwOWY2ZGVmNjgxYjUzMGI5NjE0YmZmN2RkMzNlMGIzOTQxODE3ZGNhYWU2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZlYTc0ZTNkYmU3NzhiMWIxMGYyMzhhZDYxNjg2YWE1Yzc2ZTNkYjJiZTQzMDU3NjMyNDI3ZTI4NDBmYjI3YjYnLFxuICAgICAgICAnNmUwNTY4ZGI5YjBiMTMyOTdjZjY3NGRlY2NiNmFmOTMxMjZiNTk2Yjk3M2Y3Yjc3NzAxZDNkYjdmMjNjYjk2ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NmU2NDExM2Y2NzdjZjBlMTBhMjU3MGQ1OTk5NjhkMzE1NDRlMTc5Yjc2MDQzMjk1MmMwMmE0NDE3YmRkZTM5JyxcbiAgICAgICAgJ2M5MGRkZjhkZWU0ZTk1Y2Y1NzcwNjZkNzA2ODFmMGQzNWUyYTMzZDJiNTZkMjAzMmI0YjE3NTJkMTkwMWFjMDEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzczOGM1NmIwM2IyYWJlMWU4MjgxYmFhNzQzZjhmOWE4ZjdjYzY0M2RmMjZjYmVlM2FiMTUwMjQyYmNiYjg5MScsXG4gICAgICAgICc4OTNmYjU3ODk1MWFkMjUzN2Y3MThmMmVhY2JmYmJiYjgyMzE0ZWVmNzg4MGNmZTkxN2U3MzVkOTY5OWE4NGMzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q4OTU2MjY1NDhiNjViODFlMjY0Yzc2MzdjOTcyODc3ZDFkNzJlNWYzYTkyNTAxNDM3MmU5ZjY1ODhmNmMxNGInLFxuICAgICAgICAnZmViZmFhMzhmMmJjN2VhZTcyOGVjNjA4MThjMzQwZWIwMzQyOGQ2MzJiYjA2N2UxNzkzNjNlZDc1ZDdkOTkxZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiOGRhOTQwMzJhOTU3NTE4ZWIwZjY0MzM1NzFlODc2MWNlZmZjNzM2OTNlODRlZGQ0OTE1MGE1NjRmNjc2ZTAzJyxcbiAgICAgICAgJzI4MDRkZmE0NDgwNWExZTRkN2M5OWNjOTc2MjgwOGIwOTJjYzU4NGQ5NWZmM2I1MTE0ODhlNGU3NGVmZGY2ZTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTgwZmVhMTQ0NDFmYjMzYTdkOGFkYWI5NDc1ZDdmYWIyMDE5ZWZmYjUxNTZhNzkyZjFhMTE3NzhlM2MwZGY1ZCcsXG4gICAgICAgICdlZWQxZGU3ZjYzOGUwMDc3MWU4OTc2OGNhM2NhOTQ0NzJkMTU1ZTgwYWYzMjJlYTlmY2I0MjkxYjZhYzllYzc4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2EzMDE2OTdiZGZjZDcwNDMxM2JhNDhlNTFkNTY3NTQzZjJhMTgyMDMxZWZkNjkxNWRkYzA3YmJjYzRlMTYwNzAnLFxuICAgICAgICAnNzM3MGY5MWNmYjY3ZTRmNTA4MTgwOWZhMjVkNDBmOWIxNzM1ZGJmN2MwYTExYTEzMGMwZDFhMDQxZTE3N2VhMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5MGFkODViMzg5ZDZiOTM2NDYzZjlkMDUxMjY3OGRlMjA4Y2MzMzBiMTEzMDdmZmZhYjdhYzYzZTNmYjA0ZWQ0JyxcbiAgICAgICAgJ2U1MDdhMzYyMGEzODI2MWFmZmRjYmQ5NDI3MjIyYjgzOWFlZmFiZTE1ODI4OTRkOTkxZDRkNDhjYjZlZjE1MCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZjY4YjlkMmY2M2I1ZjMzOTIzOWMxYWQ5ODFmMTYyZWU4OGM1Njc4NzIzZWEzMzUxYjdiNDQ0YzllYzRjMGRhJyxcbiAgICAgICAgJzY2MmE5ZjJkYmEwNjM5ODZkZTFkOTBjMmI2YmUyMTVkYmJlYTJjZmU5NTUxMGJmZGYyM2NiZjc5NTAxZmZmODInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTRmM2ZiMDE3NmFmODVkNjVmZjk5ZmY5MTk4YzM2MDkxZjQ4ZTg2NTAzNjgxZTNlNjY4NmZkNTA1MzIzMWUxMScsXG4gICAgICAgICcxZTYzNjMzYWQwZWY0ZjFjMTY2MWE2ZDBlYTAyYjcyODZjYzdlNzRlYzk1MWQxYzk4MjJjMzg1NzZmZWI3M2JjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhjMDBmYTliMThlYmYzMzFlYjk2MTUzN2E0NWE0MjY2YzcwMzRmMmYwZDRlMWQwNzE2ZmI2ZWFlMjBlYWUyOWUnLFxuICAgICAgICAnZWZhNDcyNjdmZWE1MjFhMWE5ZGMzNDNhMzczNmM5NzRjMmZhZGFmYTgxZTM2YzU0ZTdkMmE0YzY2NzAyNDE0YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlN2EyNmNlNjlkZDQ4MjlmM2UxMGNlYzBhOWU5OGVkMzE0M2QwODRmMzA4YjkyYzA5OTdmZGRmYzYwY2IzZTQxJyxcbiAgICAgICAgJzJhNzU4ZTMwMGZhNzk4NGI0NzFiMDA2YTFhYWZiYjE4ZDBhNmIyYzA0MjBlODNlMjBlOGE5NDIxY2YyY2ZkNTEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYjY0NTllMGVlMzY2MmVjOGQyMzU0MGMyMjNiY2JkYzU3MWNiY2I5NjdkNzk0MjRmM2NmMjllYjNkZTZiODBlZicsXG4gICAgICAgICc2N2M4NzZkMDZmM2UwNmRlMWRhZGYxNmU1NjYxZGIzYzRiM2FlNmQ0OGUzNWIyZmYzMGJmMGI2MWE3MWJhNDUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDY4YTgwYzgyODBiYjg0MDc5MzIzNGFhMTE4ZjA2MjMxZDZmMWZjNjdlNzNjNWE1ZGVkYTBmNWI0OTY5NDNlOCcsXG4gICAgICAgICdkYjhiYTlmZmY0YjU4NmQwMGM0YjFmOTE3N2IwZTI4YjViMGU3YjhmNzg0NTI5NWEyOTRjODQyNjZiMTMzMTIwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyNGFlZDdkZjY1YzgwNDI1MmRjMDI3MDkwN2EzMGIwOTYxMmFlYjk3MzQ0OWNlYTQwOTU5ODBmYzI4ZDNkNWQnLFxuICAgICAgICAnNjQ4YTM2NTc3NGI2MWYyZmYxMzBjMGMzNWFlYzFmNGYxOTIxM2IwYzdlMzMyODQzOTY3MjI0YWY5NmFiN2M4NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ZGY5YzE0OTE5Y2RlNjFmNmQ1MWRmZGJlNWZlZTVkY2VlYzQxNDNiYThkMWNhODg4ZThiZDM3M2ZkMDU0Yzk2JyxcbiAgICAgICAgJzM1ZWM1MTA5MmQ4NzI4MDUwOTc0YzIzYTFkODVkNGI1ZDUwNmNkYzI4ODQ5MDE5MmViYWMwNmNhZDEwZDVkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzljMzkxOWE4NGE0NzQ4NzBmYWVkOGE5YzFjYzY2MDIxNTIzNDg5MDU0ZDdmMDMwOGNiZmM5OWM4YWMxZjk4Y2QnLFxuICAgICAgICAnZGRiODRmMGY0YTRkZGQ1NzU4NGYwNDRiZjI2MGU2NDE5MDUzMjZmNzZjNjRjOGU2YmU3ZTVlMDNkNGZjNTk5ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MDU3MTcwYjFkZDEyZmRmOGRlMDVmMjgxZDhlMDZiYjkxZTE0OTNhOGI5MWQ0Y2M1YTIxMzgyMTIwYTk1OWU1JyxcbiAgICAgICAgJzlhMWFmMGIyNmE2YTQ4MDdhZGQ5YTJkYWY3MWRmMjYyNDY1MTUyYmMzZWUyNGM2NWU4OTliZTkzMjM4NWEyYTgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTU3NmRmOGUyM2EwODQxMTQyMTQzOWE0NTE4ZGEzMTg4MGNlZjBmYmE3ZDRkZjEyYjFhNjk3M2VlY2I5NDI2NicsXG4gICAgICAgICc0MGE2YmYyMGU3NjY0MGIyYzkyYjk3YWZlNThjZDgyYzQzMmUxMGE3ZjUxNGQ5ZjNlZThiZTExYWUxYjI4ZWM4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NzhhNzhjMjhkZWMzZTMwYTA1ZmU5NjI5ZGU4YzM4YmIzMGQxZjVjZjlhM2EyMDhmNzYzODg5YmU1OGFkNzEnLFxuICAgICAgICAnMzQ2MjZkOWFiNWE1YjIyZmY3MDk4ZTEyZjJmZjU4MDA4N2IzODQxMWZmMjRhYzU2M2I1MTNmYzFmZDlmNDNhYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5Mjg5NTVlZTYzN2E4NDQ2MzcyOWZkMzBlN2FmZDJlZDVmOTYyNzRlNWFkN2U1Y2IwOWVkYTljMDZkOTAzYWMnLFxuICAgICAgICAnYzI1NjIxMDAzZDNmNDJhODI3Yjc4YTEzMDkzYTk1ZWVhYzNkMjZlZmE4YThkODNmYzUxODBlOTM1YmNkMDkxZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NWQwZmVmM2VjNmRiMTA5Mzk5MDY0ZjNhMGUzYjI4NTU2NDViNGE5MDdhZDM1NDUyN2FhZTc1MTYzZDgyNzUxJyxcbiAgICAgICAgJzFmMDM2NDg0MTNhMzhjMGJlMjlkNDk2ZTU4MmNmNTY2M2U4NzUxZTk2ODc3MzMxNTgyYzIzN2EyNGViMWY5NjInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmYyYjBkY2U5N2VlY2U5N2MxYzliNjA0MTc5OGI4NWRmZGZiNmQ4ODgyZGEyMDMwOGY1NDA0ODI0NTI2MDg3ZScsXG4gICAgICAgICc0OTNkMTNmZWY1MjRiYTE4OGFmNGM0ZGM1NGQwNzkzNmM3YjdlZDZmYjkwZTJjZWIyYzk1MWUwMWYwYzI5OTA3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgyN2ZiYmU0YjFlODgwZWE5ZWQyYjJlNjMwMWIyMTJiNTdmMWVlMTQ4Y2Q2ZGQyODc4MGU1ZTJjZjg1NmUyNDEnLFxuICAgICAgICAnYzYwZjljOTIzYzcyN2IwYjcxYmVmMmM2N2QxZDEyNjg3ZmY3YTYzMTg2OTAzMTY2ZDYwNWI2OGJhZWMyOTNlYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYWE2NDlmMjFmNTFiZGJhZTdiZTRhZTM0Y2U2ZTUyMTdhNThmZGNlN2Y0N2Y5YWE3ZjNiNThmYTIxMjBlMmIzJyxcbiAgICAgICAgJ2JlMzI3OWVkNWJiYmIwM2FjNjlhODBmODk4NzlhYTVhMDFhNmI5NjVmMTNmN2U1OWQ0N2E1MzA1YmE1YWQ5M2QnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTRhNDJkNDNjNWNmMTY5ZDkzOTFkZjZkZWNmNDJlZTU0MWI2ZDhmMGM5YTEzNzQwMWUyMzYzMmRkYTM0ZDI0ZicsXG4gICAgICAgICc0ZDlmOTJlNzE2ZDFjNzM1MjZmYzk5Y2NmYjhhZDM0Y2U4ODZlZWRmYThkOGU0ZjEzYTdmNzEzMWRlYmE5NDE0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzFlYzgwZmVmMzYwY2JkZDk1NDE2MGZhZGFiMzUyYjZiOTJiNTM1NzZhODhmZWE0OTQ3MTczYjlkNDMwMGJmMTknLFxuICAgICAgICAnYWVlZmU5Mzc1NmI1MzQwZDJmM2E0OTU4YTdhYmJmNWUwMTQ2ZTc3ZjYyOTVhMDdiNjcxY2RjMWNjMTA3Y2VmZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNDZhNzc4YzA0NjcwYzJmOTFiMDBhZjQ2ODBkZmE4YmNlMzQ5MDcxN2Q1OGJhODg5ZGRiNTkyODM2NjY0MmJlJyxcbiAgICAgICAgJ2IzMThlMGVjMzM1NDAyOGFkZDY2OTgyN2Y5ZDRiMjg3MGFhYTk3MWQyZjdlNWVkMWQwYjI5NzQ4M2Q4M2VmZDAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmE1MGMwZjYxZDIyZTVmMDdlM2FjZWJiMWFhMDdiMTI4ZDAwMTIyMDlhMjhiOTc3NmQ3NmE4NzkzMTgwZWVmOScsXG4gICAgICAgICc2Yjg0YzY5MjIzOTdlYmE5YjcyY2QyODcyMjgxYTY4YTVlNjgzMjkzYTU3YTIxM2IzOGNkOGQ3ZDNmNGYyODExJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhMWQ2MWQwY2E3MjFhMTFiMWE1YmY2YjdkODhlODQyMWEyODhhYjVkNWJiYTUyMjBlNTNkMzJiNWYwNjdlYzInLFxuICAgICAgICAnODE1N2Y1NWE3Yzk5MzA2Yzc5YzA3NjYxNjFjOTFlMjk2NmE3Mzg5OWQyNzliNDhhNjU1ZmJhMGYxYWQ4MzZmMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhOGUyODJmZjBjOTcwNjkwNzIxNWZmOThlOGZkNDE2NjE1MzExZGUwNDQ2ZjFlMDYyYTczYjA2MTBkMDY0ZTEzJyxcbiAgICAgICAgJzdmOTczNTViOGRiODFjMDlhYmZiN2YzYzViMjUxNTg4OGI2NzlhM2U1MGRkNmJkNmNlZjdjNzMxMTFmNGNjMGMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTc0YTUzYjljOWEyODU4NzJkMzllNTZlNjkxM2NhYjE1ZDU5YjFmYTUxMjUwOGMwMjJmMzgyZGU4MzE5NDk3YycsXG4gICAgICAgICdjY2M5ZGMzN2FiZmM5YzE2NTdiNDE1NWYyYzQ3ZjllNjY0NmIzYTFkOGNiOTg1NDM4M2RhMTNhYzA3OWFmYTczJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzk1OTM5Njk4MTk0Mzc4NWMzZDNlNTdlZGY1MDE4Y2RiZTAzOWU3MzBlNDkxOGIzZDg4NGZkZmYwOTQ3NWI3YmEnLFxuICAgICAgICAnMmU3ZTU1Mjg4OGMzMzFkZDhiYTAzODZhNGI5Y2Q2ODQ5YzY1M2Y2NGM4NzA5Mzg1ZTliOGFiZjg3NTI0ZjJmZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkMmE2M2E1MGFlNDAxZTU2ZDY0NWExMTUzYjEwOWE4ZmNjYTBhNDNkNTYxZmJhMmRiYjUxMzQwYzlkODJiMTUxJyxcbiAgICAgICAgJ2U4MmQ4NmZiNjQ0M2ZjYjc1NjVhZWU1OGIyOTQ4MjIwYTcwZjc1MGFmNDg0Y2E1MmQ0MTQyMTc0ZGNmODk0MDUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjQ1ODdlMjMzNTQ3MWViODkwZWU3ODk2ZDdjZmRjODY2YmFjYmRiZDM4MzkzMTdiMzQzNmY5YjQ1NjE3ZTA3MycsXG4gICAgICAgICdkOTlmY2RkNWJmNjkwMmUyYWU5NmRkNjQ0N2MyOTlhMTg1YjkwYTM5MTMzYWVhYjM1ODI5OWU1ZTlmYWY2NTg5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg0ODFiZGUwZTRlNGQ4ODViM2E1NDZkM2U1NDlkZTA0MmYwYWE2Y2VhMjUwZTdmZDM1OGQ2Yzg2ZGQ0NWU0NTgnLFxuICAgICAgICAnMzhlZTdiOGNiYTU0MDRkZDg0YTI1YmYzOWNlY2IyY2E5MDBhNzljNDJiMjYyZTU1NmQ2NGIxYjU5Nzc5MDU3ZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxMzQ2NGE1N2E3ODEwMmFhNjJiNjk3OWFlODE3ZjQ2MzdmZmNmZWQzYzRiMWNlMzBiY2Q2MzAzZjZjYWY2NjZiJyxcbiAgICAgICAgJzY5YmUxNTkwMDQ2MTQ1ODBlZjdlNDMzNDUzY2NiMGNhNDhmMzAwYTgxZDA5NDJlMTNmNDk1YTkwN2Y2ZWNjMjcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYmM0YTlkZjViNzEzZmUyZTlhZWY0MzBiY2MxZGM5N2EwY2Q5Y2NlZGUyZjI4NTg4Y2FkYTNhMGQyZDgzZjM2NicsXG4gICAgICAgICdkM2E4MWNhNmU3ODVjMDYzODM5MzdhZGY0Yjc5OGNhYTZlOGE5ZmJmYTU0N2IxNmQ3NThkNjY2NTgxZjMzYzEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGMyOGE5N2JmODI5OGJjMGQyM2Q4Yzc0OTQ1MmEzMmU2OTRiNjVlMzBhOTQ3MmEzOTU0YWIzMGZlNTMyNGNhYScsXG4gICAgICAgICc0MGEzMDQ2M2EzMzA1MTkzMzc4ZmVkZjMxZjdjYzBlYjdhZTc4NGYwNDUxY2I5NDU5ZTcxZGM3M2NiZWY5NDgyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhlYTk2NjYxMzk1MjdhOGMxZGQ5NGNlNGYwNzFmZDIzYzhiMzUwYzVhNGJiMzM3NDhjNGJhMTExZmFjY2FlMCcsXG4gICAgICAgICc2MjBlZmFiYmM4ZWUyNzgyZTI0ZTdjMGNmYjk1YzVkNzM1Yjc4M2JlOWNmMGY4ZTk1NWFmMzRhMzBlNjJiOTQ1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RkMzYyNWZhZWY1YmEwNjA3NDY2OTcxNmJiZDM3ODhkODliZGRlODE1OTU5OTY4MDkyZjc2Y2M0ZWI5YTk3ODcnLFxuICAgICAgICAnN2ExODhmYTM1MjBlMzBkNDYxZGEyNTAxMDQ1NzMxY2E5NDE0NjE5ODI4ODMzOTU5MzdmNjhkMDBjNjQ0YTU3MydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmNzEwZDc5ZDllYjk2MjI5N2U0ZjYyMzJiNDBlOGY3ZmViMmJjNjM4MTQ2MTRkNjkyYzEyZGU3NTI0MDgyMjFlJyxcbiAgICAgICAgJ2VhOThlNjcyMzJkM2IzMjk1ZDNiNTM1NTMyMTE1Y2NhYzg2MTJjNzIxODUxNjE3NTI2YWU0N2E5Yzc3YmZjODInXG4gICAgICBdXG4gICAgXVxuICB9LFxuICBuYWY6IHtcbiAgICB3bmQ6IDcsXG4gICAgcG9pbnRzOiBbXG4gICAgICBbXG4gICAgICAgICdmOTMwOGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2JjZTAzNmY5JyxcbiAgICAgICAgJzM4OGY3YjBmNjMyZGU4MTQwZmUzMzdlNjJhMzdmMzU2NjUwMGE5OTkzNGMyMjMxYjZjYjlmZDc1ODRiOGU2NzInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmY4YmRlNGQxYTA3MjA5MzU1YjRhNzI1MGE1YzUxMjhlODhiODRiZGRjNjE5YWI3Y2JhOGQ1NjliMjQwZWZlNCcsXG4gICAgICAgICdkOGFjMjIyNjM2ZTVlM2Q2ZDRkYmE5ZGRhNmM5YzQyNmY3ODgyNzFiYWIwZDY4NDBkY2E4N2QzYWE2YWM2MmQ2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmMnLFxuICAgICAgICAnNmFlYmNhNDBiYTI1NTk2MGEzMTc4ZDZkODYxYTU0ZGJhODEzZDBiODEzZmRlN2I1YTUwODI2MjgwODcyNjRkYSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRjMzVmMTEwZGZjMjdjY2JlJyxcbiAgICAgICAgJ2NjMzM4OTIxYjBhN2Q5ZmQ2NDM4MDk3MTc2M2I2MWU5YWRkODg4YTQzNzVmOGUwZjA1Y2MyNjJhYzY0ZjljMzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzc0YWU3Zjg1OGE5NDExZTVlZjQyNDZiNzBjNjVhYWM1NjQ5OTgwYmU1YzE3ODkxYmJlYzE3ODk1ZGEwMDhjYicsXG4gICAgICAgICdkOTg0YTAzMmViNmI1ZTE5MDI0M2RkNTZkN2I3YjM2NTM3MmRiMWUyZGZmOWQ2YTgzMDFkNzRjOWM5NTNjNjFiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2MTBlNThjZGRlZWRkZjhmMTk0MDVhYTgnLFxuICAgICAgICAnYWIwOTAyZThkODgwYTg5NzU4MjEyZWI2NWNkYWY0NzNhMWEwNmRhNTIxZmE5MWYyOWI1Y2I1MmRiMDNlZDgxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q3OTI0ZDRmN2Q0M2VhOTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGUnLFxuICAgICAgICAnNTgxZTI4NzJhODZjNzJhNjgzODQyZWMyMjhjYzZkZWZlYTQwYWYyYmQ4OTZkM2E1YzUwNGRjOWZmNmEyNmI1OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZWZkZWE0Y2RiNjc3NzUwYTQyMGZlZTgwN2VhY2YyMWViOTg5OGFlNzliOTc2ODc2NmU0ZmFhMDRhMmQ0YTM0JyxcbiAgICAgICAgJzQyMTFhYjA2OTQ2MzUxNjhlOTk3YjBlYWQyYTkzZGFlY2VkMWY0YTA0YTk1YzBmNmNmYjE5OWY2OWU1NmViNzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2YycsXG4gICAgICAgICc4NWU4OWJjMDM3OTQ1ZDkzYjM0MzA4M2I1YTFjODYxMzFhMDFmNjBjNTAyNjk3NjNiNTcwYzg1NGU1YzA5YjdhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjViZTU5ZDUnLFxuICAgICAgICAnMzIxZWI0MDc1MzQ4ZjUzNGQ1OWMxODI1OWRkYTNlMWY0YTFiM2IyZTcxYjEwMzljNjdiZDNkOGJjZjgxOTk4YydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyZmEyMTA0ZDZiMzhkMTFiMDIzMDAxMDU1OTg3OTEyNGU0MmFiOGRmZWZmNWZmMjlkYzljZGFkZDRlY2FjYzNmJyxcbiAgICAgICAgJzJkZTEwNjgyOTVkZDg2NWI2NDU2OTMzNWJkNWRkODAxODFkNzBlY2ZjODgyNjQ4NDIzYmE3NmI1MzJiN2Q2NydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNhMGNkN2Y1NDUzNzE0JyxcbiAgICAgICAgJzczMDE2ZjdiZjIzNGFhZGU1ZDFhYTcxYmRlYTJiMWZmM2ZjMGRlMmE4ODc5MTJmZmU1NGEzMmNlOTdjYjM0MDInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJmYjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOScsXG4gICAgICAgICdhNjlkY2U0YTdkNmM5OGU4ZDRhMWFjYTg3ZWY4ZDcwMDNmODNjMjMwZjNhZmE3MjZhYjQwZTUyMjkwYmUxYzU1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M0NGQxMmM3MDY1ZDgxMmU4YWNmMjhkN2NiYjE5ZjkwMTFlY2Q5ZTlmZGYyODFiMGU2YTNiNWU4N2QyMmU3ZGInLFxuICAgICAgICAnMjExOWE0NjBjZTMyNmNkYzc2YzQ1OTI2Yzk4MmZkYWMwZTEwNmU4NjFlZGY2MWM1YTAzOTA2M2YwZTBlNjQ4MidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0JyxcbiAgICAgICAgJ2UwMjJjZjQyYzJiZDRhNzA4YjNmNTEyNmYxNmEyNGFkOGIzM2JhNDhkMDQyM2I2ZWZkNWU2MzQ4MTAwZDhhODInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTY5N2ZmYTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNScsXG4gICAgICAgICdiOWMzOThmMTg2ODA2ZjVkMjc1NjE1MDZlNDU1NzQzM2EyY2YxNTAwOWU0OThhZTdhZGVlOWQ2M2QwMWIyMzk2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYwNWJkYjAxOTk4MTcxOGI5ODZkMGYwN2U4MzRjYjBkOWRlYjgzNjBmZmI3ZjYxZGY5ODIzNDVlZjI3YTc0NzknLFxuICAgICAgICAnMjk3MmQyZGU0ZjhkMjA2ODFhNzhkOTNlYzk2ZmUyM2MyNmJmYWU4NGZiMTRkYjQzYjAxZTFlOTA1NmI4YzQ5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYzM2QnLFxuICAgICAgICAnODBmYzA2YmQ4Y2M1YjAxMDk4MDg4YTE5NTBlZWQwZGIwMWFhMTMyOTY3YWI0NzIyMzVmNTY0MjQ4M2IyNWVhZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJjNTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmJyxcbiAgICAgICAgJzFjMzgzMDNmMWNjNWMzMGYyNmU2NmJhZDdmZTcyZjcwYTY1ZWVkNGNiZTcwMjRlYjFhYTAxZjU2NDMwYmQ1N2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnN2E5Mzc1YWQ2MTY3YWQ1NGFhNzRjNjM0OGNjNTRkMzQ0Y2M1ZGM5NDg3ZDg0NzA0OWQ1ZWFiYjBmYTAzYzhmYicsXG4gICAgICAgICdkMGUzZmE5ZWNhODcyNjkwOTU1OWUwZDc5MjY5MDQ2YmRjNTllYTEwYzcwY2UyYjAyZDQ5OWVjMjI0ZGM3ZjcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFmNDU5YmMzZmZjOScsXG4gICAgICAgICdlZWNmNDEyNTMxMzZlNWY5OTk2NmYyMTg4MWZkNjU2ZWJjNDM0NTQwNWM1MjBkYmMwNjM0NjViNTIxNDA5OTMzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ5MzcwYTRiNWY0MzQxMmVhMjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2MycsXG4gICAgICAgICc3NThmM2Y0MWFmZDZlZDQyOGIzMDgxYjA1MTJmZDYyYTU0YzNmM2FmYmI1YjY3NjRiNjUzMDUyYTEyOTQ5YzlhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3ZjIzMDkzNmVlODhjYmJkNzNkZjkzMGQ2NDcwMmVmODgxZDgxMWUwZTE0OThlMmYxYzEzZWIxZmMzNDVkNzQnLFxuICAgICAgICAnOTU4ZWY0MmE3ODg2YjY0MDBhMDgyNjZlOWJhMWIzNzg5NmM5NTMzMGQ5NzA3N2NiYmU4ZWIzYzc2NzFjNjBkNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwJyxcbiAgICAgICAgJ2UwZGVkYzliM2IyZjhkYWQ0ZGExZjMyZGVjMjUzMWRmOWViNWZiZWIwNTk4ZTRmZDFhMTE3ZGJhNzAzYTNjMzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDYzYjNkOWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFlM2RlYmNiYTQ4NTBjNjkwZDQ1YicsXG4gICAgICAgICc1ZWQ0MzBkNzhjMjk2YzM1NDMxMTQzMDZkZDg2MjJkN2M2MjJlMjdjOTcwYTFkZTMxY2IzNzdiMDFhZjczMDdlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YxNmY4MDQyNDRlNDZlMmEwOTIzMmQ0YWZmM2I1OTk3NmI5OGZhYzE0MzI4YTJkMWEzMjQ5NmI0OTk5OGYyNDcnLFxuICAgICAgICAnY2VkYWJkOWI4MjIwM2Y3ZTEzZDIwNmZjZGY0ZTMzZDkyYTZjNTNjMjZlNWNjZTI2ZDY1Nzk5NjJjNGUzMWRmNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQxJyxcbiAgICAgICAgJ2NiNDc0NjYwZWYzNWY1ZjJhNDFiNjQzZmE1ZTQ2MDU3NWY0ZmE5Yjc5NjIyMzJhNWMzMmY5MDgzMThhMDQ0NzYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjYwMGNhNGIyODJjYjk4NmY4NWQwZjE3MDk5NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMCcsXG4gICAgICAgICc0MTE5Yjg4NzUzYzE1YmQ2YTY5M2IwM2ZjZGRiYjQ1ZDVhYzZiZTc0YWI1ZjBlZjQ0YjBiZTk0NzVhN2U0YjQwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2MzVjYTcyZDdlODQzMmMzMzhlYzUzY2QxMjIyMGJjMDFjNDg2ODVlMjRmN2RjOGM2MDJhNzc0Njk5OGU0MzUnLFxuICAgICAgICAnOTFiNjQ5NjA5NDg5ZDYxM2QxZDVlNTkwZjc4ZTZkNzRlY2ZjMDYxZDU3MDQ4YmFkOWU3NmYzMDJjNWI5YzYxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMTgnLFxuICAgICAgICAnNjczZmI4NmU1YmRhMzBmYjNjZDBlZDMwNGVhNDlhMDIzZWUzM2QwMTk3YTY5NWQwYzVkOTgwOTNjNTM2NjgzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzZTZiZDEwNzFhMWU5NmFmZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2OTFkOWI5ZTgnLFxuICAgICAgICAnNTljOWUwYmJhMzk0ZTc2ZjQwYzBhYTU4Mzc5YTNjYjZhNWEyMjgzOTkzZTkwYzQxNjcwMDJhZjQ5MjBlMzdmNSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxODZiNDgzZDA1NmEwMzM4MjZhZTczZDg4ZjczMjk4NWM0Y2NiMWYzMmJhMzVmNGI0Y2M0N2ZkY2YwNGFhNmViJyxcbiAgICAgICAgJzNiOTUyZDMyYzY3Y2Y3N2UyZTE3NDQ2ZTIwNDE4MGFiMjFmYjgwOTA4OTUxMzhiNGE0YTc5N2Y4NmU4MDg4OGInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGY5ZDcwYTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZicsXG4gICAgICAgICc1NWViMmRhZmQ4NGQ2Y2NkNWY4NjJiNzg1ZGMzOWQ0YWIxNTcyMjI3MjBlZjlkYTIxN2I4YzQ1Y2YyYmEyNDE3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4YWI1MjU1NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDMnLFxuICAgICAgICAnZWZhZTljOGRiYzE0MTMwNjYxZThjZWMwMzBjODlhZDBjMTNjNjZjMGQxN2EyOTA1Y2RjNzA2YWI3Mzk5YTg2OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyOTA3OThjMmI2NDc2ODMwZGExMmZlMDIyODdlOWU3NzdhYTNmYmExYzM1NWIxN2E3MjJkMzYyZjg0NjE0ZmJhJyxcbiAgICAgICAgJ2UzOGRhNzZkY2Q0NDA2MjE5ODhkMDBiY2Y3OWFmMjVkNWIyOWMwOTRkYjJhMjMxNDZkMDAzYWZkNDE5NDNlN2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NScsXG4gICAgICAgICdmOThhM2ZkODMxZWIyYjc0OWE5M2IwZTZmMzVjZmI0MGM4Y2Q1YWE2NjdhMTU1ODFiYzJmZWRlZDQ5OGZkOWM2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4Yzk5YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWEnLFxuICAgICAgICAnNzQ0YjExNTJlYWNiZTVlMzhkY2M4ODc5ODBkYTM4Yjg5NzU4NGE2NWZhMDZjZWRkMmM5MjRmOTdjYmFjNTk5NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1OWRiZjQ2ZjhjOTQ3NTliYTIxMjc3YzMzNzg0ZjQxNjQ1ZjdiNDRmNmM1OTZhNThjZTkyZTY2NjE5MWFiZTNlJyxcbiAgICAgICAgJ2M1MzRhZDQ0MTc1ZmJjMzAwZjRlYTZjZTY0ODMwOWEwNDJjZTczOWE3OTE5Nzk4Y2Q4NWUyMTZjNGEzMDdmNmUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjEzYWRhOTUxMDNjNDUzNzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOCcsXG4gICAgICAgICdlMTM4MTdiNDRlZTE0ZGU2NjNiZjRiYzgwODM0MWYzMjY5NDllMjFhNmE3NWMyNTcwNzc4NDE5YmRhZjU3MzNkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2ZWJhZGZiNjQ4ODU1MDAxNWE4ODUyMmMnLFxuICAgICAgICAnMzBlOTNlODY0ZTY2OWQ4MjIyNGI5NjdjMzAyMGI4ZmE4ZDFlNGUzNTBiNmNiY2M1MzdhNDhiNTc4NDExNjNhMidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5NDhkY2FkZjU5OTBlMDQ4YWEzODc0ZDQ2YWJlZjlkNzAxODU4Zjk1ZGU4MDQxZDJhNjgyOGM5OWUyMjYyNTE5JyxcbiAgICAgICAgJ2U0OTFhNDI1MzdmNmU1OTdkNWQyOGEzMjI0YjFiYzI1ZGY5MTU0ZWZiZDJlZjFkMmNiYmEyY2FlNTM0N2Q1N2UnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzk2MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYicsXG4gICAgICAgICcxMDBiNjEwZWM0ZmZiNDc2MGQ1YzFmYzEzM2VmNmY2YjEyNTA3YTA1MWYwNGFjNTc2MGFmYTViMjlkYjgzNDM3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4NWExNjk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2EnLFxuICAgICAgICAnZWYwYWZiYjIwNTYyMDU0NDhlMTY1MmM0OGU4MTI3ZmM2MDM5ZTc3YzE1YzIzNzhiN2U3ZDE1YTBkZTI5MzMxMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkM2NjMzBhZDZiNDgzZTRiYzc5Y2UyYzlkZDhiYzU0OTkzZTk0N2ViOGRmNzg3YjQ0Mjk0M2QzZjdiNTI3ZWFmJyxcbiAgICAgICAgJzhiMzc4YTIyZDgyNzI3OGQ4OWM1ZTliZThmOTUwOGFlM2MyYWQ0NjI5MDM1ODYzMGFmYjM0ZGIwNGVlZGUwYTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZjYmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMCcsXG4gICAgICAgICc2ODY1MWNmOWI2ZGE5MDNlMDkxNDQ0OGM2Y2Q5ZDRjYTg5Njg3OGY1MjgyYmU0YzhjYzA2ZTJhNDA0MDc4NTc1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZkZjdiNGZkNWZjNjFjZDQnLFxuICAgICAgICAnZjU0MzVhMmJkMmJhZGY3ZDQ4NWE0ZDhiOGRiOWZjY2UzZTFlZjhlMDIwMWU0NTc4YzU0NjczYmMxZGM1ZWExZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNWQ5NDQxMjU0OTQ1MDY0Y2YxYTFjMzNiYmQzYjQ5Zjg5NjZjNTA5MjE3MWU2OTllZjI1OGRmYWI4MWMwNDVjJyxcbiAgICAgICAgJ2Q1NmViMzBiNjk0NjNlNzIzNGY1MTM3YjczYjg0MTc3NDM0ODAwYmFjZWJmYzY4NWZjMzdiYmU5ZWZlNDA3MGQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTFkMGZjZjJlYzlkZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MCcsXG4gICAgICAgICdlZGQ3N2Y1MGJjYjVhM2NhYjJlOTA3MzczMDk2NjdmMjY0MTQ2MmE1NDA3MGYzZDUxOTIxMmQzOWMxOTdhNjI5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVlODI0NWMwNmM3Y2EzNzMzMWNiMzY5ODAnLFxuICAgICAgICAnYTg1NWJhYmFkNWNkNjBjODhiNDMwYTY5ZjUzYTFhN2EzODI4OTE1NDk2NDc5OWJlNDNkMDZkNzdkMzFkYTA2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMxMTA5MWRkOTg2MGU4ZTIwZWUxMzQ3M2MxMTU1ZjVmNjk2MzVlMzk0NzA0ZWFhNzQwMDk0NTIyNDZjZmE5YjMnLFxuICAgICAgICAnNjZkYjY1NmY4N2QxZjA0ZmZmZDFmMDQ3ODhjMDY4MzA4NzFlYzVhNjRmZWVlNjg1YmQ4MGYwYjEyODZkODM3NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmJyxcbiAgICAgICAgJzk0MTQ2ODVlOTdiMWI1OTU0YmQ0NmY3MzAxNzQxMzZkNTdmMWNlZWI0ODc0NDNkYzUzMjE4NTdiYTczYWJlZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMjE5ZWE1ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4ZDYzJyxcbiAgICAgICAgJzRjYjk1OTU3ZTgzZDQwYjBmNzNhZjQ1NDRjY2NmNmIxZjRiMDhkM2MwN2IyN2ZiOGQ4YzI5NjJhNDAwNzY2ZDEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDdiODc0MGY3NGE4ZmJhYWIxZjY4M2RiOGY0NWRlMjY1NDNhNTQ5MGJjYTYyNzA4NzIzNjkxMjQ2OWEwYjQ0OCcsXG4gICAgICAgICdmYTc3OTY4MTI4ZDljOTJlZTEwMTBmMzM3YWQ0NzE3ZWZmMTVkYjVlZDNjMDQ5YjM0MTFlMDMxNWVhYTQ1OTNiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmYnLFxuICAgICAgICAnNWYzMDMyZjU4OTIxNTZlMzljY2QzZDc5MTViOWUxZGEyZTZkYWM5ZTZmMjZlOTYxMTE4ZDE0Yjg0NjJlMTY2MSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBmODZjYmMxODM0N2I1JyxcbiAgICAgICAgJzhlYzBiYTIzOGI5NmJlYzBjYmRkZGNhZTBhYTQ0MjU0MmVlZTFmZjUwYzk4NmVhNmIzOTg0N2IzY2MwOTJmZjYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWUwNzlhZGIxZGYxODYwMDc0MzU2YTI1YWEzODIwNmE2ZDcxNmIyYzNlNjc0NTNkMjg3Njk4YmFkN2IyYjJkNicsXG4gICAgICAgICc4ZGMyNDEyYWFmZTNiZTVjNGM1ZjM3ZTBlY2M1ZjlmNmE0NDY5ODlhZjA0YzRlMjVlYmFhYzQ3OWVjMWM4YzFlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRjOWRjNzJiZmQ4NjE2YmE5ZGE2YjUnLFxuICAgICAgICAnNWU0NjMxMTUwZTYyZmI0MGQwZThjMmE3Y2E1ODA0YTM5ZDU4MTg2YTUwZTQ5NzEzOTYyNjc3OGUyNWIwNjc0ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYWE1Zjk4MGMyNDVmNmYwMzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5JyxcbiAgICAgICAgJ2Y2NWY1ZDNlMjkyYzJlMDgxOWE1MjgzOTFjOTk0NjI0ZDc4NDg2OWQ3ZTZlYTY3ZmIxODA0MTAyNGVkYzA3ZGMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzhjOTQwNzU0NGFjMTMyNjkyZWUxOTEwYTAyNDM5OTU4YWUwNDg3NzE1MTM0MmVhOTZjNGI2YjM1YTQ5ZjUxJyxcbiAgICAgICAgJ2YzZTAzMTkxNjllYjliODVkNTQwNDc5NTUzOWE1ZTY4ZmExZmJkNTgzYzA2NGQyNDYyYjY3NWYxOTRhM2RkYjQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNScsXG4gICAgICAgICc0MjI0MmE5NjkyODNhNWYzMzliYTdmMDc1ZTM2YmEyYWY5MjVjZTMwZDc2N2VkNmU1NWY0YjAzMTg4MGQ1NjJjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5YjUnLFxuICAgICAgICAnMjA0YjVkNmY4NDgyMmMzMDdlNGI0YTcxNDA3MzdhZWMyM2ZjNjNiNjViMzVmODZhMTAwMjZkYmQyZDg2NGU2YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNDE5MTYzNjVhYmIyYjVkMDkxOTJmNWYyZGJlYWZlYzIwOGYwMjBmMTI1NzBhMTg0ZGJhZGMzZTU4NTk1OTk3JyxcbiAgICAgICAgJzRmMTQzNTFkMDA4N2VmYTQ5ZDI0NWIzMjg5ODQ5ODlkNWNhZjk0NTBmMzRiZmMwZWQxNmU5NmI1OGZhOTkxMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1NTE0NzQyODgxJyxcbiAgICAgICAgJzczODY3ZjU5YzA2NTllODE5MDRmOWExYzc1NDM2OThlNjI1NjJkNjc0NGMxNjljZTdhMzZkZTAxYThkNjE1NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODliZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1JyxcbiAgICAgICAgJzM5ZjIzZjM2NjgwOTA4NWJlZWJmYzcxMTgxMzEzNzc1YTk5YzlhZWQ3ZDhiYTM4YjE2MTM4NGM3NDYwMTI4NjUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzZlNDY0MWE1Mzk0OGZkNDc2YzM5ZjhhOTlmZDk3NGU1ZWMwNzU2NGI1MzE1ZDhiZjk5NDcxYmNhMGVmMmY2NicsXG4gICAgICAgICdkMjQyNGIxYjFhYmU0ZWI4MTY0MjI3YjA4NWM5YWE5NDU2ZWExMzQ5M2ZkNTYzZTA2ZmQ1MWNmNTY5NGM3OGZjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRmYWVhYjI3YzJjNTc5ZjcyNicsXG4gICAgICAgICdlYWQxMjE2ODU5NWZlMWJlOTkyNTIxMjliNmU1NmIzMzkxZjdhYjE0MTBjZDFlMGVmM2RjZGNhYmQyZmRhMjI0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhhYjg5ODE2ZGFkZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGUnLFxuICAgICAgICAnNmZkY2VmMDlmMmY2ZDBhMDQ0ZTY1NGFlZjYyNDEzNmY1MDNkNDU5YzNlODk4NDU4NThhNDdhOTEyOWNkZDI0ZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxZTMzZjFhNzQ2YzljNTc3ODEzMzM0NGQ5Mjk5ZmNhYTIwYjA5MzhlOGFjZmYyNTQ0YmI0MDI4NGI4YzVmYjk0JyxcbiAgICAgICAgJzYwNjYwMjU3ZGQxMWIzYWE5YzhlZDYxOGQyNGVkZmYyMzA2ZDMyMGYxZDAzMDEwZTMzYTdkMjA1N2YzYjNiNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxJyxcbiAgICAgICAgJzNkOThhOWNkZDAyNmRkNDNmMzkwNDhmMjVhODg0N2Y0ZmNhZmFkMTg5NWQ3YTYzM2M2ZmVkM2MzNWU5OTk1MTEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEzYjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MScsXG4gICAgICAgICdiNGM0ZmU5OWM3NzVhNjA2ZTJkODg2MjE3OTEzOWZmZGE2MWRjODYxYzAxOWU1NWNkMjg3NmViMmEyN2Q4NGInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTBiMWNhZTA2YjBhODQ3YTNmZWE2ZTY3MWFhZjhhZGZkZmU1OGNhMmY3NjgxMDVjODA4MmIyZTQ0OWZjZTI1MicsXG4gICAgICAgICdhZTQzNDEwMmVkZGUwOTU4ZWM0YjE5ZDkxN2E2YTI4ZTZiNzJkYTE4MzRhZmYwZTY1MGYwNDk1MDNhMjk2Y2YyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUxMjFlNScsXG4gICAgICAgICdjZjIxNzQxMThjOGI2ZDdhNGI0OGY2ZDUzNGNlNWM3OTQyMmMwODZhNjM0NjA1MDJiODI3Y2U2MmEzMjY2ODNjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QyNGE0NGUwNDdlMTliNmY1YWZiODFjN2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2InLFxuICAgICAgICAnNmZiOGQ1NTkxYjQ2NmY4ZmM2M2RiNTBmMWMwZjFjNjkwMTNmOTk2ODg3YjgyNDRkMmNkZWM0MTdhZmVhOGZhMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYTAxNjA2YTdhNmM5Y2RkMjQ5ZmRmY2ZhY2I5OTU4NDAwMWVkZDI4YWJiYWI3N2I1MTA0ZTk4ZThlM2IzNWQ0JyxcbiAgICAgICAgJzMyMmFmNDkwOGM3MzEyYjBjZmJmZTM2OWY3YTdiM2NkYjdkNDQ5NGJjMjgyMzcwMGNmZDY1MjE4OGEzZWE5OGQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZicsXG4gICAgICAgICc2NzQ5ZTY3YzAyOWI4NWY1MmEwMzRlYWZkMDk2ODM2YjI1MjA4MTg2ODBlMjZhYzhmM2RmYmNkYjcxNzQ5NzAwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzYWUxOTc0NTY2Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJmMGUzNDUwZjQ1ODg5JyxcbiAgICAgICAgJzJhZWFiZTdlNDUzMTUxMDExNjIxN2YwN2JmNGQwNzMwMGRlOTdlNDg3NGY4MWY1MzM0MjBhNzJlZWIwYmQ2YTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTkxZWUzNTUzMTNkOTk3MjFjZjY5OTNmZmVkMWUzZTMwMTk5M2ZmM2VkMjU4ODAyMDc1ZWE4Y2VkMzk3ZTI0NicsXG4gICAgICAgICdiMGVhNTU4YTExM2MzMGJlYTYwZmM0Nzc1NDYwYzc5MDFmZjBiMDUzZDI1Y2EyYmRlZWU5OGYxYTRiZTVkMTk2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzExMzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODQnLFxuICAgICAgICAnOTk4Yzc0YThjZDQ1YWMwMTI4OWQ1ODMzYTdiZWI0NzQ0ZmY1MzZiMDFiMjU3YmU0YzU3NjdiZWE5M2VhNTdhNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUwYzQwYjhkY2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhJyxcbiAgICAgICAgJ2IyMjg0Mjc5OTk1YTM0ZTJmOWQ0ZGU3Mzk2ZmMxOGI4MGY5YjhiOWZkZDI3MGY2NjYxZjc5Y2E0YzgxYmQyNTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnY2M4NzA0YjhhNjBhMGRlZmEzYTk5YTcyOTlmMmU5YzNmYmMzOTVhZmIwNGFjMDc4NDI1ZWY4YTE3OTNjYzAzMCcsXG4gICAgICAgICdiZGQ0NjAzOWZlZWQxNzg4MWQxZTA4NjJkYjM0N2Y4Y2YzOTViNzRmYzRiY2RjNGU5NDBiNzRlM2FjMWYxYjEzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTcnLFxuICAgICAgICAnNmYwYTI1NmJjNWVmZGY0MjlhMmZiNjI0MmYxYTQzYTJkOWI5MjViYjRhNGIzYTI2YmI4ZTBmNDVlYjU5NjA5NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjMTRmOGYyY2NiMjdkNmYxMDlmNmQwOGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1OTMnLFxuICAgICAgICAnYzM1OWQ2OTIzYmIzOThmN2ZkNDQ3M2UxNmZlMWMyODQ3NWI3NDBkZDA5ODA3NWU2YzBlODY0OTExM2RjM2EzOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhNmNiYzMwNDZiYzZhNDUwYmFjMjQ3ODlmYTE3MTE1YTRjOTczOWVkNzVmOGYyMWNlNDQxZjcyZTBiOTBlNmVmJyxcbiAgICAgICAgJzIxYWU3ZjQ2ODBlODg5YmIxMzA2MTllMmMwZjk1YTM2MGNlYjU3M2M3MDYwMzEzOTg2MmFmZDYxN2ZhOWI5ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNDdkNmQ5YTAyYzQ4OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4JyxcbiAgICAgICAgJzYwZWE3ZjYxYTM1MzUyNGQxYzk4N2Y2ZWNlYzkyZjA4NmQ1NjVhYjY4Nzg3MGNiMTI2ODlmZjFlMzFjNzQ0NDgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdiMWJmMzFjOGNmODU1ZWY3NDM3YjcyNjU2YScsXG4gICAgICAgICc0OWI5NjcxNWFiNjg3OGE3OWU3OGYwN2NlNTY4MGM1ZDY2NzMwNTFiNDkzNWJkODk3ZmVhODI0Yjc3ZGMyMDhhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M0MDc0N2NjOWQwMTJjYjFhMTNiODE0ODMwOWM2ZGU3ZWMyNWQ2OTQ1ZDY1NzE0NmI5ZDU5OTRiOGZlYjExMTEnLFxuICAgICAgICAnNWNhNTYwNzUzYmUyYTEyZmM2ZGU2Y2FmMmNiNDg5NTY1ZGI5MzYxNTZiOTUxNGUxYmI1ZTgzMDM3ZTBmYTJkNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyJyxcbiAgICAgICAgJzc1NzFkNzRlZTVlMGZiOTJhN2E4YjMzYTA3NzgzMzQxYTU0OTIxNDRjYzU0YmNjNDBhOTQ0NzM2OTM2MDY0MzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIyMzZkMjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYScsXG4gICAgICAgICdiZTUyZDEwN2JjZmEwOWQ4YmNiOTczNmE4MjhjZmE3ZmFjOGRiMTdiZjdhNzZhMmM0MmFkOTYxNDA5MDE4Y2Y3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2NlZTMxY2JmN2UzNGVjMzc5ZDk0ZmI4MTRkM2Q3NzVhZDk1NDU5NWQxMzE0YmE4ODQ2OTU5ZTNlODJmNzRlMjYnLFxuICAgICAgICAnOGZkNjRhMTRjMDZiNTg5YzI2Yjk0N2FlMmJjZjZiZmEwMTQ5ZWYwYmUxNGVkNGQ4MGY0NDhhMDFjNDNiMWM2ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiNGY5ZWFlYTA5YjY5MTc2MTlmNmVhNmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2JyxcbiAgICAgICAgJzM5ZTVjOTkyNWI1YTU0YjA3NDMzYTRmMThjNjE3MjZmOGJiMTMxYzAxMmNhNTQyZWIyNGE4YWMwNzIwMDY4MmEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2MxYjc3OTA3NzkyZWJjYzYwZScsXG4gICAgICAgICc2MmRmYWYwN2EwZjc4ZmViMzBlMzBkNjI5NTg1M2NlMTg5ZTEyNzc2MGFkNmNmN2ZhZTE2NGUxMjJhMjA4ZDU0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ4NDU3NTI0ODIwZmE2NWE0ZjhkMzVlYjY5MzA4NTdjMDAzMmFjYzBhNGEyZGU0MjIyMzNlZWRhODk3NjEyYzQnLFxuICAgICAgICAnMjVhNzQ4YWIzNjc5NzlkOTg3MzNjMzhhMWZhMWMyZTdkYzZjYzA3ZGIyZDYwYTlhZTdhNzZhYWE0OWJkMGY3NydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZmVlZWYxODgxMTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhJyxcbiAgICAgICAgJ2VjZmI3MDU2Y2YxZGUwNDJmOTQyMGJhYjM5Njc5M2MwYzM5MGJkZTc0YjRiYmRmZjE2YTgzYWUwOWE5YTc1MTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNiYzYwNjJjZWQzNmM4MmRmODNiOGZhZTg1OScsXG4gICAgICAgICdjZDQ1MGVjMzM1NDM4OTg2ZGZlZmExMGM1N2ZlYTliY2M1MjFhMDk1OWIyZDgwYmJmNzRiMTkwZGNhNzEyZDEwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U3NTYwNWQ1OTEwMmE1YTI2ODQ1MDBkM2I5OTFmMmUzZjNjODhiOTMyMjU1NDcwMzVhZjI1YWY2NmUwNDU0MWYnLFxuICAgICAgICAnZjVjNTQ3NTRhOGY3MWVlNTQwYjliNDg3Mjg0NzNlMzE0ZjcyOWFjNTMwOGIwNjkzODM2MDk5MGUyYmZhZDEyNSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJjOTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjJyxcbiAgICAgICAgJzZjYjlhODg3NmQ5Y2I4NTIwNjA5YWYzYWRkMjZjZDIwYTBhN2NkOGE5NDExMTMxY2U4NWY0NDEwMDA5OTIyM2UnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTNlODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNiOGRiYTk0MicsXG4gICAgICAgICdmZWY1YTNjNjgwNTlhNmRlYzVkNjI0MTE0YmYxZTkxYWFjMmI5ZGE1NjhkNmFiZWIyNTcwZDU1NjQ2YjhhZGYxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlMTYzMDI2ZTlmZDZmZTAxN2MzOGYwNmE1YmU2ZmMxMjU0MjRiMzcxY2UyNzA4ZTdiZjQ0OTE2OTFlNTc2NGEnLFxuICAgICAgICAnMWFjYjI1MGYyNTVkZDYxYzQzZDk0Y2NjNjcwZDBmNThmNDlhZTNmYTE1Yjk2NjIzZTU0MzBkYTBhZDZjNjJiMidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiMjY4ZjVlZjlhZDUxZTRkNzhkZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwJyxcbiAgICAgICAgJzVmMzEwZDRiM2M5OWI5ZWJiMTlmNzdkNDFjMWRlZTAxOGNmMGQzNGZkNDE5MTYxNDAwM2U5NDVhMTIxNmU0MjMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEzYmY3ZmZkYmE5M2M0NzUwZCcsXG4gICAgICAgICc0MzgxMzZkNjAzZTg1OGEzYTVjNDQwYzM4ZWNjYmFkZGMxZDI5NDIxMTRlMmVkZGQ0NzQwZDA5OGNlZDFmMGQ4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhkOGI5ODU1YzdjMDUyYTM0MTQ2ZmQyMGZmYjY1OGJlYTRiOWY2OWUwZDgyNWViZWMxNmU4YzNjZTJiNTI2YTEnLFxuICAgICAgICAnY2RiNTU5ZWVkYzJkNzlmOTI2YmFmNDRmYjg0ZWE0ZDQ0YmNmNTBmZWU1MWQ3Y2ViMzBlMmU3ZjQ2MzAzNjc1OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNlY2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzJyxcbiAgICAgICAgJ2MzYjk5N2QwNTBlZTVkNDIzZWJhZjY2YTZkYjlmNTdiMzE4MGM5MDI4NzU2NzlkZTkyNGI2OWQ4NGE3YjM3NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNjJmOTQ5MGQzZDUxZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyJyxcbiAgICAgICAgJzZkODlhZDdiYTQ4NzZiMGIyMmMyY2EyODBjNjgyODYyZjM0MmM4NTkxZjFkYWY1MTcwZTA3YmZkOWNjYWZhN2QnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnN2YzMGVhMjQ3NmIzOTliNDk1NzUwOWM4OGY3N2QwMTkxYWZhMmZmNWNiN2IxNGZkNmQ4ZTdkNjVhYWFiMTE5MycsXG4gICAgICAgICdjYTVlZjdkNGIyMzFjOTRjM2IxNTM4OWE1ZjYzMTFlOWRhZmY3YmI2N2IxMDNlOTg4MGVmNGJmZjYzN2FjYWVjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDAnLFxuICAgICAgICAnOTczMTE0MWQ4MWZjOGY4MDg0ZDM3YzZlNzU0MjAwNmIzZWUxYjQwZDYwZGZlNTM2MmE1YjEzMmZkMTdkZGMwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3OGFkNTgnLFxuICAgICAgICAnZWUxODQ5ZjUxM2RmNzFlMzJlZmMzODk2ZWUyODI2MGM3M2JiODA1NDdhZTIyNzViYTQ5NzIzNzc5NGM4NzUzYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMmNiNzRmZGRjOGU5ZmJjZDA3NmVlZjJhN2M3MmIwY2UzN2Q1MGYwODI2OWRmYzA3NGI1ODE1NTA1NDdhNGY3JyxcbiAgICAgICAgJ2QzYWEyZWQ3MWM5ZGQyMjQ3YTYyZGYwNjI3MzZlYjBiYWRkZWE5ZTM2MTIyZDJiZTg2NDFhYmNiMDA1Y2M0YTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJlMGQ5OWNkMTBhZTNhOCcsXG4gICAgICAgICdjNGUxMDIwOTE2OTgwYTRkYTVkMDFhYzVlNmFkMzMwNzM0ZWYwZDc5MDY2MzFjNGYyMzkwNDI2YjJlZGQ3OTFmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2UnLFxuICAgICAgICAnNjcxNjNlOTAzMjM2Mjg5Zjc3NmYyMmMyNWZiOGEzYWZjMTczMmYyYjg0YjRlOTVkYmRhNDdhZTVhMDg1MjY0OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczZmFkM2ZhODRjYWYwZjM0ZjBmODliZmQyZGNmNTRmYzE3NWQ3NjdhZWMzZTUwNjg0ZjNiYTRhNGJmNWY2ODNkJyxcbiAgICAgICAgJ2NkMWJjN2NiNmNjNDA3YmIyZjBjYTY0N2M3MThhNzMwY2Y3MTg3MmU3ZDBkMmE1M2ZhMjBlZmNkZmU2MTgyNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiJyxcbiAgICAgICAgJzI5OWQyMWY5NDEzZjMzYjNlZGY0M2IyNTcwMDQ1ODBiNzBkYjU3ZGEwYjE4MjI1OWUwOWVlY2M2OWUwZDM4YTUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDMyZjRkYTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZicsXG4gICAgICAgICdmOTQyOWU3MzhiOGU1M2I5NjhlOTkwMTZjMDU5NzA3NzgyZTE0ZjQ1MzUzNTlkNTgyZmM0MTY5MTBiM2VlYTg3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMwZTRlNjcwNDM1Mzg1NTU2ZTU5MzY1NzEzNTg0NWQzNmZiYjY5MzFmNzJiMDhjYjFlZDk1NGYxZTNjZTNmZjYnLFxuICAgICAgICAnNDYyZjliY2U2MTk4OTg2Mzg0OTkzNTAxMTNiYmM5YjEwYTg3OGQzNWRhNzA3NDBkYzY5NWE1NTllYjg4ZGI3YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2FkMjk3JyxcbiAgICAgICAgJzYyMTg4YmM0OWQ2MWU1NDI4NTczZDQ4YTc0ZTFjNjU1YjFjNjEwOTA5MDU2ODJhMGQ1NTU4ZWQ3MmRjY2I5YmMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFjYjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YScsXG4gICAgICAgICc3YzEwZGZiMTY0YzM0MjVmNWM3MWEzZjlkNzk5MjAzOGYxMDY1MjI0ZjcyYmI5ZDFkOTAyYTZkMTMwMzdiNDdjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2IwMTVmODA0NGY1ZmNiZGNmMjFjYTI2ZDZjMzRmYjgxOTc4MjkyMDVjN2I3ZDJhN2NiNjY0MThjMTU3YjExMmMnLFxuICAgICAgICAnYWI4YzFlMDg2ZDA0ZTgxMzc0NGE2NTViMmRmOGQ1ZjgzYjNjZGM2ZmFhMzA4OGMxZDNhZWExNDU0ZTNhMWQ1ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNmMmFmMzQxYTIxYjUyJyxcbiAgICAgICAgJzRjYjA0NDM3ZjM5MWVkNzMxMTFhMTNjYzFkNGRkMGRiMTY5MzQ2NWMyMjQwNDgwZDg5NTVlODU5MmYyNzQ0N2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDNhZTQxMDQ3ZGQ3Y2EwNjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYicsXG4gICAgICAgICdiZDFhZWIyMWFkMjJlYmIyMmExMGYwMzAzNDE3YzZkOTY0ZjhjZGQ3ZGYwYWNhNjE0YjEwZGMxNGQxMjVhYzQ2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ2M2UyNzYzZDg4NWY5NThmYzY2Y2RkMjI4MDBmMGE0ODcxOTdkMGE4MmUzNzdiNDlmODBhZjg3Yzg5N2IwNjUnLFxuICAgICAgICAnYmZlZmFjZGIwZTVkMGZkN2RmM2EzMTFhOTRkZTA2MmIyNmI4MGM2MWZiYzk3NTA4Yjc5OTkyNjcxZWY3Y2E3ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3JyxcbiAgICAgICAgJzYwM2MxMmRhZjNkOTg2MmVmMmIyNWZlMWRlMjg5YWVkMjRlZDI5MWUwZWM2NzA4NzAzYTViZDU2N2YzMmVkMDMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzRhMWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4M2QyZDBlZDVmZjE1NDNkYTc3MDNlOScsXG4gICAgICAgICdjYzYxNTdlZjE4YzljNjNjZDYxOTNkODM2MzFiYmVhMDA5M2UwOTY4OTQyZThjMzNkNTczN2ZkNzkwZTBkYjA4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMwNjgyYTUwNzAzMzc1ZjYwMmQ0MTY2NjRiYTE5YjdmYzliYWI0MmM3Mjc0NzQ2M2E3MWQwODk2YjIyZjZkYTMnLFxuICAgICAgICAnNTUzZTA0ZjZiMDE4YjRmYTZjOGYzOWU3ZjMxMWQzMTc2MjkwZDBlMGYxOWNhNzNmMTc3MTRkOTk3N2EyMmZmOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3NjllZjU3JyxcbiAgICAgICAgJzcxMmZjZGQxYjkwNTNmMDkwMDNhMzQ4MWZhNzc2MmU5ZmZkN2M4ZWYzNWEzODUwOWUyZmJmMjYyOTAwODM3MydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzZlMjY5ODlhNDNjOWNmZWJhNDAyOWMyMDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2JyxcbiAgICAgICAgJ2VkOGNjOWQwNGIyOWViODc3ZDI3MGI0ODc4ZGM0M2MxOWFlZmQzMWY0ZWVlMDllZTdiNDc4MzRjMWZhNGIxYzMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzVkNDZlZmVhMzc3MWU2ZTY4YWJiODlhMTNhZDc0N2VjZjE4OTIzOTNkZmM0ZjFiNzAwNDc4OGM1MDM3NGRhOCcsXG4gICAgICAgICc5ODUyMzkwYTk5NTA3Njc5ZmQwYjg2ZmQyYjM5YTg2OGQ3ZWZjMjIxNTEzNDZlMWEzY2E0NzI2NTg2YTZiZWQ4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjEnLFxuICAgICAgICAnOWU5OTQ5ODBkOTkxN2UyMmI3NmIwNjE5MjdmYTA0MTQzZDA5NmNjYzU0OTYzZTZhNWViZmE1ZjNmOGUyODZjMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxYjM4OTAzYTQzZjdmMTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2MzQ0NmY5NzJjMTgwJyxcbiAgICAgICAgJzQwMzZlZGM5MzFhNjBhZTg4OTM1M2Y3N2ZkNTNkZTRhMjcwOGIyNmI2ZjVkYTcyYWQzMzk0MTE5ZGFmNDA4ZjknXG4gICAgICBdXG4gICAgXVxuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL3ByZWNvbXB1dGVkL3NlY3AyNTZrMS5qc1xuLy8gbW9kdWxlIGlkID0gMTg2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///186\n");

/***/ }),
/* 187 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar BN = __webpack_require__(4);\nvar HmacDRBG = __webpack_require__(188);\nvar elliptic = __webpack_require__(6);\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nvar KeyPair = __webpack_require__(189);\nvar Signature = __webpack_require__(190);\n\nfunction EC(options) {\n  if (!(this instanceof EC))\n    return new EC(options);\n\n  // Shortcut `elliptic.ec(curve-name)`\n  if (typeof options === 'string') {\n    assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);\n\n    options = elliptic.curves[options];\n  }\n\n  // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n  if (options instanceof elliptic.curves.PresetCurve)\n    options = { curve: options };\n\n  this.curve = options.curve.curve;\n  this.n = this.curve.n;\n  this.nh = this.n.ushrn(1);\n  this.g = this.curve.g;\n\n  // Point on curve\n  this.g = options.curve.g;\n  this.g.precompute(options.curve.n.bitLength() + 1);\n\n  // Hash for function for DRBG\n  this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n  return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n  return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n  return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n  if (!options)\n    options = {};\n\n  // Instantiate Hmac_DRBG\n  var drbg = new HmacDRBG({\n    hash: this.hash,\n    pers: options.pers,\n    persEnc: options.persEnc || 'utf8',\n    entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),\n    entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n    nonce: this.n.toArray()\n  });\n\n  var bytes = this.n.byteLength();\n  var ns2 = this.n.sub(new BN(2));\n  do {\n    var priv = new BN(drbg.generate(bytes));\n    if (priv.cmp(ns2) > 0)\n      continue;\n\n    priv.iaddn(1);\n    return this.keyFromPrivate(priv);\n  } while (true);\n};\n\nEC.prototype._truncateToN = function truncateToN(msg, truncOnly) {\n  var delta = msg.byteLength() * 8 - this.n.bitLength();\n  if (delta > 0)\n    msg = msg.ushrn(delta);\n  if (!truncOnly && msg.cmp(this.n) >= 0)\n    return msg.sub(this.n);\n  else\n    return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n  if (typeof enc === 'object') {\n    options = enc;\n    enc = null;\n  }\n  if (!options)\n    options = {};\n\n  key = this.keyFromPrivate(key, enc);\n  msg = this._truncateToN(new BN(msg, 16));\n\n  // Zero-extend key to provide enough entropy\n  var bytes = this.n.byteLength();\n  var bkey = key.getPrivate().toArray('be', bytes);\n\n  // Zero-extend nonce to have the same byte size as N\n  var nonce = msg.toArray('be', bytes);\n\n  // Instantiate Hmac_DRBG\n  var drbg = new HmacDRBG({\n    hash: this.hash,\n    entropy: bkey,\n    nonce: nonce,\n    pers: options.pers,\n    persEnc: options.persEnc || 'utf8'\n  });\n\n  // Number of bytes to generate\n  var ns1 = this.n.sub(new BN(1));\n\n  for (var iter = 0; true; iter++) {\n    var k = options.k ?\n        options.k(iter) :\n        new BN(drbg.generate(this.n.byteLength()));\n    k = this._truncateToN(k, true);\n    if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n      continue;\n\n    var kp = this.g.mul(k);\n    if (kp.isInfinity())\n      continue;\n\n    var kpX = kp.getX();\n    var r = kpX.umod(this.n);\n    if (r.cmpn(0) === 0)\n      continue;\n\n    var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n    s = s.umod(this.n);\n    if (s.cmpn(0) === 0)\n      continue;\n\n    var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n                        (kpX.cmp(r) !== 0 ? 2 : 0);\n\n    // Use complement of `s`, if it is > `n / 2`\n    if (options.canonical && s.cmp(this.nh) > 0) {\n      s = this.n.sub(s);\n      recoveryParam ^= 1;\n    }\n\n    return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n  }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n  msg = this._truncateToN(new BN(msg, 16));\n  key = this.keyFromPublic(key, enc);\n  signature = new Signature(signature, 'hex');\n\n  // Perform primitive values validation\n  var r = signature.r;\n  var s = signature.s;\n  if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n    return false;\n  if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n    return false;\n\n  // Validate signature\n  var sinv = s.invm(this.n);\n  var u1 = sinv.mul(msg).umod(this.n);\n  var u2 = sinv.mul(r).umod(this.n);\n\n  if (!this.curve._maxwellTrick) {\n    var p = this.g.mulAdd(u1, key.getPublic(), u2);\n    if (p.isInfinity())\n      return false;\n\n    return p.getX().umod(this.n).cmp(r) === 0;\n  }\n\n  // NOTE: Greg Maxwell's trick, inspired by:\n  // https://git.io/vad3K\n\n  var p = this.g.jmulAdd(u1, key.getPublic(), u2);\n  if (p.isInfinity())\n    return false;\n\n  // Compare `p.x` of Jacobian point with `r`,\n  // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n  // inverse of `p.z^2`\n  return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n  assert((3 & j) === j, 'The recovery param is more than two bits');\n  signature = new Signature(signature, enc);\n\n  var n = this.n;\n  var e = new BN(msg);\n  var r = signature.r;\n  var s = signature.s;\n\n  // A set LSB signifies that the y-coordinate is odd\n  var isYOdd = j & 1;\n  var isSecondKey = j >> 1;\n  if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n    throw new Error('Unable to find sencond key candinate');\n\n  // 1.1. Let x = r + jn.\n  if (isSecondKey)\n    r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n  else\n    r = this.curve.pointFromX(r, isYOdd);\n\n  var rInv = signature.r.invm(n);\n  var s1 = n.sub(e).mul(rInv).umod(n);\n  var s2 = s.mul(rInv).umod(n);\n\n  // 1.6.1 Compute Q = r^-1 (sR -  eG)\n  //               Q = r^-1 (sR + -eG)\n  return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n  signature = new Signature(signature, enc);\n  if (signature.recoveryParam !== null)\n    return signature.recoveryParam;\n\n  for (var i = 0; i < 4; i++) {\n    var Qprime;\n    try {\n      Qprime = this.recoverPubKey(e, signature, i);\n    } catch (e) {\n      continue;\n    }\n\n    if (Qprime.eq(Q))\n      return i;\n  }\n  throw new Error('Unable to find valid recovery factor');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9pbmRleC5qcz8xNzVkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBIbWFjRFJCRyA9IHJlcXVpcmUoJ2htYWMtZHJiZycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxudmFyIEtleVBhaXIgPSByZXF1aXJlKCcuL2tleScpO1xudmFyIFNpZ25hdHVyZSA9IHJlcXVpcmUoJy4vc2lnbmF0dXJlJyk7XG5cbmZ1bmN0aW9uIEVDKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEVDKSlcbiAgICByZXR1cm4gbmV3IEVDKG9wdGlvbnMpO1xuXG4gIC8vIFNob3J0Y3V0IGBlbGxpcHRpYy5lYyhjdXJ2ZS1uYW1lKWBcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgIGFzc2VydChlbGxpcHRpYy5jdXJ2ZXMuaGFzT3duUHJvcGVydHkob3B0aW9ucyksICdVbmtub3duIGN1cnZlICcgKyBvcHRpb25zKTtcblxuICAgIG9wdGlvbnMgPSBlbGxpcHRpYy5jdXJ2ZXNbb3B0aW9uc107XG4gIH1cblxuICAvLyBTaG9ydGN1dCBmb3IgYGVsbGlwdGljLmVjKGVsbGlwdGljLmN1cnZlcy5jdXJ2ZU5hbWUpYFxuICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIGVsbGlwdGljLmN1cnZlcy5QcmVzZXRDdXJ2ZSlcbiAgICBvcHRpb25zID0geyBjdXJ2ZTogb3B0aW9ucyB9O1xuXG4gIHRoaXMuY3VydmUgPSBvcHRpb25zLmN1cnZlLmN1cnZlO1xuICB0aGlzLm4gPSB0aGlzLmN1cnZlLm47XG4gIHRoaXMubmggPSB0aGlzLm4udXNocm4oMSk7XG4gIHRoaXMuZyA9IHRoaXMuY3VydmUuZztcblxuICAvLyBQb2ludCBvbiBjdXJ2ZVxuICB0aGlzLmcgPSBvcHRpb25zLmN1cnZlLmc7XG4gIHRoaXMuZy5wcmVjb21wdXRlKG9wdGlvbnMuY3VydmUubi5iaXRMZW5ndGgoKSArIDEpO1xuXG4gIC8vIEhhc2ggZm9yIGZ1bmN0aW9uIGZvciBEUkJHXG4gIHRoaXMuaGFzaCA9IG9wdGlvbnMuaGFzaCB8fCBvcHRpb25zLmN1cnZlLmhhc2g7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEVDO1xuXG5FQy5wcm90b3R5cGUua2V5UGFpciA9IGZ1bmN0aW9uIGtleVBhaXIob3B0aW9ucykge1xuICByZXR1cm4gbmV3IEtleVBhaXIodGhpcywgb3B0aW9ucyk7XG59O1xuXG5FQy5wcm90b3R5cGUua2V5RnJvbVByaXZhdGUgPSBmdW5jdGlvbiBrZXlGcm9tUHJpdmF0ZShwcml2LCBlbmMpIHtcbiAgcmV0dXJuIEtleVBhaXIuZnJvbVByaXZhdGUodGhpcywgcHJpdiwgZW5jKTtcbn07XG5cbkVDLnByb3RvdHlwZS5rZXlGcm9tUHVibGljID0gZnVuY3Rpb24ga2V5RnJvbVB1YmxpYyhwdWIsIGVuYykge1xuICByZXR1cm4gS2V5UGFpci5mcm9tUHVibGljKHRoaXMsIHB1YiwgZW5jKTtcbn07XG5cbkVDLnByb3RvdHlwZS5nZW5LZXlQYWlyID0gZnVuY3Rpb24gZ2VuS2V5UGFpcihvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucylcbiAgICBvcHRpb25zID0ge307XG5cbiAgLy8gSW5zdGFudGlhdGUgSG1hY19EUkJHXG4gIHZhciBkcmJnID0gbmV3IEhtYWNEUkJHKHtcbiAgICBoYXNoOiB0aGlzLmhhc2gsXG4gICAgcGVyczogb3B0aW9ucy5wZXJzLFxuICAgIHBlcnNFbmM6IG9wdGlvbnMucGVyc0VuYyB8fCAndXRmOCcsXG4gICAgZW50cm9weTogb3B0aW9ucy5lbnRyb3B5IHx8IGVsbGlwdGljLnJhbmQodGhpcy5oYXNoLmhtYWNTdHJlbmd0aCksXG4gICAgZW50cm9weUVuYzogb3B0aW9ucy5lbnRyb3B5ICYmIG9wdGlvbnMuZW50cm9weUVuYyB8fCAndXRmOCcsXG4gICAgbm9uY2U6IHRoaXMubi50b0FycmF5KClcbiAgfSk7XG5cbiAgdmFyIGJ5dGVzID0gdGhpcy5uLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG5zMiA9IHRoaXMubi5zdWIobmV3IEJOKDIpKTtcbiAgZG8ge1xuICAgIHZhciBwcml2ID0gbmV3IEJOKGRyYmcuZ2VuZXJhdGUoYnl0ZXMpKTtcbiAgICBpZiAocHJpdi5jbXAobnMyKSA+IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHByaXYuaWFkZG4oMSk7XG4gICAgcmV0dXJuIHRoaXMua2V5RnJvbVByaXZhdGUocHJpdik7XG4gIH0gd2hpbGUgKHRydWUpO1xufTtcblxuRUMucHJvdG90eXBlLl90cnVuY2F0ZVRvTiA9IGZ1bmN0aW9uIHRydW5jYXRlVG9OKG1zZywgdHJ1bmNPbmx5KSB7XG4gIHZhciBkZWx0YSA9IG1zZy5ieXRlTGVuZ3RoKCkgKiA4IC0gdGhpcy5uLmJpdExlbmd0aCgpO1xuICBpZiAoZGVsdGEgPiAwKVxuICAgIG1zZyA9IG1zZy51c2hybihkZWx0YSk7XG4gIGlmICghdHJ1bmNPbmx5ICYmIG1zZy5jbXAodGhpcy5uKSA+PSAwKVxuICAgIHJldHVybiBtc2cuc3ViKHRoaXMubik7XG4gIGVsc2VcbiAgICByZXR1cm4gbXNnO1xufTtcblxuRUMucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1zZywga2V5LCBlbmMsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBlbmMgPT09ICdvYmplY3QnKSB7XG4gICAgb3B0aW9ucyA9IGVuYztcbiAgICBlbmMgPSBudWxsO1xuICB9XG4gIGlmICghb3B0aW9ucylcbiAgICBvcHRpb25zID0ge307XG5cbiAga2V5ID0gdGhpcy5rZXlGcm9tUHJpdmF0ZShrZXksIGVuYyk7XG4gIG1zZyA9IHRoaXMuX3RydW5jYXRlVG9OKG5ldyBCTihtc2csIDE2KSk7XG5cbiAgLy8gWmVyby1leHRlbmQga2V5IHRvIHByb3ZpZGUgZW5vdWdoIGVudHJvcHlcbiAgdmFyIGJ5dGVzID0gdGhpcy5uLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIGJrZXkgPSBrZXkuZ2V0UHJpdmF0ZSgpLnRvQXJyYXkoJ2JlJywgYnl0ZXMpO1xuXG4gIC8vIFplcm8tZXh0ZW5kIG5vbmNlIHRvIGhhdmUgdGhlIHNhbWUgYnl0ZSBzaXplIGFzIE5cbiAgdmFyIG5vbmNlID0gbXNnLnRvQXJyYXkoJ2JlJywgYnl0ZXMpO1xuXG4gIC8vIEluc3RhbnRpYXRlIEhtYWNfRFJCR1xuICB2YXIgZHJiZyA9IG5ldyBIbWFjRFJCRyh7XG4gICAgaGFzaDogdGhpcy5oYXNoLFxuICAgIGVudHJvcHk6IGJrZXksXG4gICAgbm9uY2U6IG5vbmNlLFxuICAgIHBlcnM6IG9wdGlvbnMucGVycyxcbiAgICBwZXJzRW5jOiBvcHRpb25zLnBlcnNFbmMgfHwgJ3V0ZjgnXG4gIH0pO1xuXG4gIC8vIE51bWJlciBvZiBieXRlcyB0byBnZW5lcmF0ZVxuICB2YXIgbnMxID0gdGhpcy5uLnN1YihuZXcgQk4oMSkpO1xuXG4gIGZvciAodmFyIGl0ZXIgPSAwOyB0cnVlOyBpdGVyKyspIHtcbiAgICB2YXIgayA9IG9wdGlvbnMuayA/XG4gICAgICAgIG9wdGlvbnMuayhpdGVyKSA6XG4gICAgICAgIG5ldyBCTihkcmJnLmdlbmVyYXRlKHRoaXMubi5ieXRlTGVuZ3RoKCkpKTtcbiAgICBrID0gdGhpcy5fdHJ1bmNhdGVUb04oaywgdHJ1ZSk7XG4gICAgaWYgKGsuY21wbigxKSA8PSAwIHx8IGsuY21wKG5zMSkgPj0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIGtwID0gdGhpcy5nLm11bChrKTtcbiAgICBpZiAoa3AuaXNJbmZpbml0eSgpKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIga3BYID0ga3AuZ2V0WCgpO1xuICAgIHZhciByID0ga3BYLnVtb2QodGhpcy5uKTtcbiAgICBpZiAoci5jbXBuKDApID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIgcyA9IGsuaW52bSh0aGlzLm4pLm11bChyLm11bChrZXkuZ2V0UHJpdmF0ZSgpKS5pYWRkKG1zZykpO1xuICAgIHMgPSBzLnVtb2QodGhpcy5uKTtcbiAgICBpZiAocy5jbXBuKDApID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIgcmVjb3ZlcnlQYXJhbSA9IChrcC5nZXRZKCkuaXNPZGQoKSA/IDEgOiAwKSB8XG4gICAgICAgICAgICAgICAgICAgICAgICAoa3BYLmNtcChyKSAhPT0gMCA/IDIgOiAwKTtcblxuICAgIC8vIFVzZSBjb21wbGVtZW50IG9mIGBzYCwgaWYgaXQgaXMgPiBgbiAvIDJgXG4gICAgaWYgKG9wdGlvbnMuY2Fub25pY2FsICYmIHMuY21wKHRoaXMubmgpID4gMCkge1xuICAgICAgcyA9IHRoaXMubi5zdWIocyk7XG4gICAgICByZWNvdmVyeVBhcmFtIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTaWduYXR1cmUoeyByOiByLCBzOiBzLCByZWNvdmVyeVBhcmFtOiByZWNvdmVyeVBhcmFtIH0pO1xuICB9XG59O1xuXG5FQy5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1zZywgc2lnbmF0dXJlLCBrZXksIGVuYykge1xuICBtc2cgPSB0aGlzLl90cnVuY2F0ZVRvTihuZXcgQk4obXNnLCAxNikpO1xuICBrZXkgPSB0aGlzLmtleUZyb21QdWJsaWMoa2V5LCBlbmMpO1xuICBzaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlKHNpZ25hdHVyZSwgJ2hleCcpO1xuXG4gIC8vIFBlcmZvcm0gcHJpbWl0aXZlIHZhbHVlcyB2YWxpZGF0aW9uXG4gIHZhciByID0gc2lnbmF0dXJlLnI7XG4gIHZhciBzID0gc2lnbmF0dXJlLnM7XG4gIGlmIChyLmNtcG4oMSkgPCAwIHx8IHIuY21wKHRoaXMubikgPj0gMClcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmIChzLmNtcG4oMSkgPCAwIHx8IHMuY21wKHRoaXMubikgPj0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gVmFsaWRhdGUgc2lnbmF0dXJlXG4gIHZhciBzaW52ID0gcy5pbnZtKHRoaXMubik7XG4gIHZhciB1MSA9IHNpbnYubXVsKG1zZykudW1vZCh0aGlzLm4pO1xuICB2YXIgdTIgPSBzaW52Lm11bChyKS51bW9kKHRoaXMubik7XG5cbiAgaWYgKCF0aGlzLmN1cnZlLl9tYXh3ZWxsVHJpY2spIHtcbiAgICB2YXIgcCA9IHRoaXMuZy5tdWxBZGQodTEsIGtleS5nZXRQdWJsaWMoKSwgdTIpO1xuICAgIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiBwLmdldFgoKS51bW9kKHRoaXMubikuY21wKHIpID09PSAwO1xuICB9XG5cbiAgLy8gTk9URTogR3JlZyBNYXh3ZWxsJ3MgdHJpY2ssIGluc3BpcmVkIGJ5OlxuICAvLyBodHRwczovL2dpdC5pby92YWQzS1xuXG4gIHZhciBwID0gdGhpcy5nLmptdWxBZGQodTEsIGtleS5nZXRQdWJsaWMoKSwgdTIpO1xuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIENvbXBhcmUgYHAueGAgb2YgSmFjb2JpYW4gcG9pbnQgd2l0aCBgcmAsXG4gIC8vIHRoaXMgd2lsbCBkbyBgcC54ID09IHIgKiBwLnpeMmAgaW5zdGVhZCBvZiBtdWx0aXBseWluZyBgcC54YCBieSB0aGVcbiAgLy8gaW52ZXJzZSBvZiBgcC56XjJgXG4gIHJldHVybiBwLmVxWFRvUChyKTtcbn07XG5cbkVDLnByb3RvdHlwZS5yZWNvdmVyUHViS2V5ID0gZnVuY3Rpb24obXNnLCBzaWduYXR1cmUsIGosIGVuYykge1xuICBhc3NlcnQoKDMgJiBqKSA9PT0gaiwgJ1RoZSByZWNvdmVyeSBwYXJhbSBpcyBtb3JlIHRoYW4gdHdvIGJpdHMnKTtcbiAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShzaWduYXR1cmUsIGVuYyk7XG5cbiAgdmFyIG4gPSB0aGlzLm47XG4gIHZhciBlID0gbmV3IEJOKG1zZyk7XG4gIHZhciByID0gc2lnbmF0dXJlLnI7XG4gIHZhciBzID0gc2lnbmF0dXJlLnM7XG5cbiAgLy8gQSBzZXQgTFNCIHNpZ25pZmllcyB0aGF0IHRoZSB5LWNvb3JkaW5hdGUgaXMgb2RkXG4gIHZhciBpc1lPZGQgPSBqICYgMTtcbiAgdmFyIGlzU2Vjb25kS2V5ID0gaiA+PiAxO1xuICBpZiAoci5jbXAodGhpcy5jdXJ2ZS5wLnVtb2QodGhpcy5jdXJ2ZS5uKSkgPj0gMCAmJiBpc1NlY29uZEtleSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIHNlbmNvbmQga2V5IGNhbmRpbmF0ZScpO1xuXG4gIC8vIDEuMS4gTGV0IHggPSByICsgam4uXG4gIGlmIChpc1NlY29uZEtleSlcbiAgICByID0gdGhpcy5jdXJ2ZS5wb2ludEZyb21YKHIuYWRkKHRoaXMuY3VydmUubiksIGlzWU9kZCk7XG4gIGVsc2VcbiAgICByID0gdGhpcy5jdXJ2ZS5wb2ludEZyb21YKHIsIGlzWU9kZCk7XG5cbiAgdmFyIHJJbnYgPSBzaWduYXR1cmUuci5pbnZtKG4pO1xuICB2YXIgczEgPSBuLnN1YihlKS5tdWwockludikudW1vZChuKTtcbiAgdmFyIHMyID0gcy5tdWwockludikudW1vZChuKTtcblxuICAvLyAxLjYuMSBDb21wdXRlIFEgPSByXi0xIChzUiAtICBlRylcbiAgLy8gICAgICAgICAgICAgICBRID0gcl4tMSAoc1IgKyAtZUcpXG4gIHJldHVybiB0aGlzLmcubXVsQWRkKHMxLCByLCBzMik7XG59O1xuXG5FQy5wcm90b3R5cGUuZ2V0S2V5UmVjb3ZlcnlQYXJhbSA9IGZ1bmN0aW9uKGUsIHNpZ25hdHVyZSwgUSwgZW5jKSB7XG4gIHNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoc2lnbmF0dXJlLCBlbmMpO1xuICBpZiAoc2lnbmF0dXJlLnJlY292ZXJ5UGFyYW0gIT09IG51bGwpXG4gICAgcmV0dXJuIHNpZ25hdHVyZS5yZWNvdmVyeVBhcmFtO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIFFwcmltZTtcbiAgICB0cnkge1xuICAgICAgUXByaW1lID0gdGhpcy5yZWNvdmVyUHViS2V5KGUsIHNpZ25hdHVyZSwgaSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKFFwcmltZS5lcShRKSlcbiAgICAgIHJldHVybiBpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgdmFsaWQgcmVjb3ZlcnkgZmFjdG9yJyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VjL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxODdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///187\n");

/***/ }),
/* 188 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar hash = __webpack_require__(41);\nvar utils = __webpack_require__(73);\nvar assert = __webpack_require__(7);\n\nfunction HmacDRBG(options) {\n  if (!(this instanceof HmacDRBG))\n    return new HmacDRBG(options);\n  this.hash = options.hash;\n  this.predResist = !!options.predResist;\n\n  this.outLen = this.hash.outSize;\n  this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n  this._reseed = null;\n  this.reseedInterval = null;\n  this.K = null;\n  this.V = null;\n\n  var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n  var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n  var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n  assert(entropy.length >= (this.minEntropy / 8),\n         'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n  this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n  var seed = entropy.concat(nonce).concat(pers);\n\n  this.K = new Array(this.outLen / 8);\n  this.V = new Array(this.outLen / 8);\n  for (var i = 0; i < this.V.length; i++) {\n    this.K[i] = 0x00;\n    this.V[i] = 0x01;\n  }\n\n  this._update(seed);\n  this._reseed = 1;\n  this.reseedInterval = 0x1000000000000;  // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n  return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n  var kmac = this._hmac()\n                 .update(this.V)\n                 .update([ 0x00 ]);\n  if (seed)\n    kmac = kmac.update(seed);\n  this.K = kmac.digest();\n  this.V = this._hmac().update(this.V).digest();\n  if (!seed)\n    return;\n\n  this.K = this._hmac()\n               .update(this.V)\n               .update([ 0x01 ])\n               .update(seed)\n               .digest();\n  this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n  // Optional entropy enc\n  if (typeof entropyEnc !== 'string') {\n    addEnc = add;\n    add = entropyEnc;\n    entropyEnc = null;\n  }\n\n  entropy = utils.toArray(entropy, entropyEnc);\n  add = utils.toArray(add, addEnc);\n\n  assert(entropy.length >= (this.minEntropy / 8),\n         'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n  this._update(entropy.concat(add || []));\n  this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n  if (this._reseed > this.reseedInterval)\n    throw new Error('Reseed is required');\n\n  // Optional encoding\n  if (typeof enc !== 'string') {\n    addEnc = add;\n    add = enc;\n    enc = null;\n  }\n\n  // Optional additional data\n  if (add) {\n    add = utils.toArray(add, addEnc || 'hex');\n    this._update(add);\n  }\n\n  var temp = [];\n  while (temp.length < len) {\n    this.V = this._hmac().update(this.V).digest();\n    temp = temp.concat(this.V);\n  }\n\n  var res = temp.slice(0, len);\n  this._update(add);\n  this._reseed++;\n  return utils.encode(res, enc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2htYWMtZHJiZy9saWIvaG1hYy1kcmJnLmpzPzFmMzciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzaCA9IHJlcXVpcmUoJ2hhc2guanMnKTtcbnZhciB1dGlscyA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHMnKTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbmZ1bmN0aW9uIEhtYWNEUkJHKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEhtYWNEUkJHKSlcbiAgICByZXR1cm4gbmV3IEhtYWNEUkJHKG9wdGlvbnMpO1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2g7XG4gIHRoaXMucHJlZFJlc2lzdCA9ICEhb3B0aW9ucy5wcmVkUmVzaXN0O1xuXG4gIHRoaXMub3V0TGVuID0gdGhpcy5oYXNoLm91dFNpemU7XG4gIHRoaXMubWluRW50cm9weSA9IG9wdGlvbnMubWluRW50cm9weSB8fCB0aGlzLmhhc2guaG1hY1N0cmVuZ3RoO1xuXG4gIHRoaXMuX3Jlc2VlZCA9IG51bGw7XG4gIHRoaXMucmVzZWVkSW50ZXJ2YWwgPSBudWxsO1xuICB0aGlzLksgPSBudWxsO1xuICB0aGlzLlYgPSBudWxsO1xuXG4gIHZhciBlbnRyb3B5ID0gdXRpbHMudG9BcnJheShvcHRpb25zLmVudHJvcHksIG9wdGlvbnMuZW50cm9weUVuYyB8fCAnaGV4Jyk7XG4gIHZhciBub25jZSA9IHV0aWxzLnRvQXJyYXkob3B0aW9ucy5ub25jZSwgb3B0aW9ucy5ub25jZUVuYyB8fCAnaGV4Jyk7XG4gIHZhciBwZXJzID0gdXRpbHMudG9BcnJheShvcHRpb25zLnBlcnMsIG9wdGlvbnMucGVyc0VuYyB8fCAnaGV4Jyk7XG4gIGFzc2VydChlbnRyb3B5Lmxlbmd0aCA+PSAodGhpcy5taW5FbnRyb3B5IC8gOCksXG4gICAgICAgICAnTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAnICsgdGhpcy5taW5FbnRyb3B5ICsgJyBiaXRzJyk7XG4gIHRoaXMuX2luaXQoZW50cm9weSwgbm9uY2UsIHBlcnMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBIbWFjRFJCRztcblxuSG1hY0RSQkcucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdChlbnRyb3B5LCBub25jZSwgcGVycykge1xuICB2YXIgc2VlZCA9IGVudHJvcHkuY29uY2F0KG5vbmNlKS5jb25jYXQocGVycyk7XG5cbiAgdGhpcy5LID0gbmV3IEFycmF5KHRoaXMub3V0TGVuIC8gOCk7XG4gIHRoaXMuViA9IG5ldyBBcnJheSh0aGlzLm91dExlbiAvIDgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuVi5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMuS1tpXSA9IDB4MDA7XG4gICAgdGhpcy5WW2ldID0gMHgwMTtcbiAgfVxuXG4gIHRoaXMuX3VwZGF0ZShzZWVkKTtcbiAgdGhpcy5fcmVzZWVkID0gMTtcbiAgdGhpcy5yZXNlZWRJbnRlcnZhbCA9IDB4MTAwMDAwMDAwMDAwMDsgIC8vIDJeNDhcbn07XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5faG1hYyA9IGZ1bmN0aW9uIGhtYWMoKSB7XG4gIHJldHVybiBuZXcgaGFzaC5obWFjKHRoaXMuaGFzaCwgdGhpcy5LKTtcbn07XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKHNlZWQpIHtcbiAgdmFyIGttYWMgPSB0aGlzLl9obWFjKClcbiAgICAgICAgICAgICAgICAgLnVwZGF0ZSh0aGlzLlYpXG4gICAgICAgICAgICAgICAgIC51cGRhdGUoWyAweDAwIF0pO1xuICBpZiAoc2VlZClcbiAgICBrbWFjID0ga21hYy51cGRhdGUoc2VlZCk7XG4gIHRoaXMuSyA9IGttYWMuZGlnZXN0KCk7XG4gIHRoaXMuViA9IHRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKTtcbiAgaWYgKCFzZWVkKVxuICAgIHJldHVybjtcblxuICB0aGlzLksgPSB0aGlzLl9obWFjKClcbiAgICAgICAgICAgICAgIC51cGRhdGUodGhpcy5WKVxuICAgICAgICAgICAgICAgLnVwZGF0ZShbIDB4MDEgXSlcbiAgICAgICAgICAgICAgIC51cGRhdGUoc2VlZClcbiAgICAgICAgICAgICAgIC5kaWdlc3QoKTtcbiAgdGhpcy5WID0gdGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpO1xufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLnJlc2VlZCA9IGZ1bmN0aW9uIHJlc2VlZChlbnRyb3B5LCBlbnRyb3B5RW5jLCBhZGQsIGFkZEVuYykge1xuICAvLyBPcHRpb25hbCBlbnRyb3B5IGVuY1xuICBpZiAodHlwZW9mIGVudHJvcHlFbmMgIT09ICdzdHJpbmcnKSB7XG4gICAgYWRkRW5jID0gYWRkO1xuICAgIGFkZCA9IGVudHJvcHlFbmM7XG4gICAgZW50cm9weUVuYyA9IG51bGw7XG4gIH1cblxuICBlbnRyb3B5ID0gdXRpbHMudG9BcnJheShlbnRyb3B5LCBlbnRyb3B5RW5jKTtcbiAgYWRkID0gdXRpbHMudG9BcnJheShhZGQsIGFkZEVuYyk7XG5cbiAgYXNzZXJ0KGVudHJvcHkubGVuZ3RoID49ICh0aGlzLm1pbkVudHJvcHkgLyA4KSxcbiAgICAgICAgICdOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICcgKyB0aGlzLm1pbkVudHJvcHkgKyAnIGJpdHMnKTtcblxuICB0aGlzLl91cGRhdGUoZW50cm9weS5jb25jYXQoYWRkIHx8IFtdKSk7XG4gIHRoaXMuX3Jlc2VlZCA9IDE7XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZShsZW4sIGVuYywgYWRkLCBhZGRFbmMpIHtcbiAgaWYgKHRoaXMuX3Jlc2VlZCA+IHRoaXMucmVzZWVkSW50ZXJ2YWwpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZXNlZWQgaXMgcmVxdWlyZWQnKTtcblxuICAvLyBPcHRpb25hbCBlbmNvZGluZ1xuICBpZiAodHlwZW9mIGVuYyAhPT0gJ3N0cmluZycpIHtcbiAgICBhZGRFbmMgPSBhZGQ7XG4gICAgYWRkID0gZW5jO1xuICAgIGVuYyA9IG51bGw7XG4gIH1cblxuICAvLyBPcHRpb25hbCBhZGRpdGlvbmFsIGRhdGFcbiAgaWYgKGFkZCkge1xuICAgIGFkZCA9IHV0aWxzLnRvQXJyYXkoYWRkLCBhZGRFbmMgfHwgJ2hleCcpO1xuICAgIHRoaXMuX3VwZGF0ZShhZGQpO1xuICB9XG5cbiAgdmFyIHRlbXAgPSBbXTtcbiAgd2hpbGUgKHRlbXAubGVuZ3RoIDwgbGVuKSB7XG4gICAgdGhpcy5WID0gdGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpO1xuICAgIHRlbXAgPSB0ZW1wLmNvbmNhdCh0aGlzLlYpO1xuICB9XG5cbiAgdmFyIHJlcyA9IHRlbXAuc2xpY2UoMCwgbGVuKTtcbiAgdGhpcy5fdXBkYXRlKGFkZCk7XG4gIHRoaXMuX3Jlc2VlZCsrO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHJlcywgZW5jKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9obWFjLWRyYmcvbGliL2htYWMtZHJiZy5qc1xuLy8gbW9kdWxlIGlkID0gMTg4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///188\n");

/***/ }),
/* 189 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar BN = __webpack_require__(4);\nvar elliptic = __webpack_require__(6);\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n  this.ec = ec;\n  this.priv = null;\n  this.pub = null;\n\n  // KeyPair(ec, { priv: ..., pub: ... })\n  if (options.priv)\n    this._importPrivate(options.priv, options.privEnc);\n  if (options.pub)\n    this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n  if (pub instanceof KeyPair)\n    return pub;\n\n  return new KeyPair(ec, {\n    pub: pub,\n    pubEnc: enc\n  });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n  if (priv instanceof KeyPair)\n    return priv;\n\n  return new KeyPair(ec, {\n    priv: priv,\n    privEnc: enc\n  });\n};\n\nKeyPair.prototype.validate = function validate() {\n  var pub = this.getPublic();\n\n  if (pub.isInfinity())\n    return { result: false, reason: 'Invalid public key' };\n  if (!pub.validate())\n    return { result: false, reason: 'Public key is not a point' };\n  if (!pub.mul(this.ec.curve.n).isInfinity())\n    return { result: false, reason: 'Public key * N != O' };\n\n  return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n  // compact is optional argument\n  if (typeof compact === 'string') {\n    enc = compact;\n    compact = null;\n  }\n\n  if (!this.pub)\n    this.pub = this.ec.g.mul(this.priv);\n\n  if (!enc)\n    return this.pub;\n\n  return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n  if (enc === 'hex')\n    return this.priv.toString(16, 2);\n  else\n    return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n  this.priv = new BN(key, enc || 16);\n\n  // Ensure that the priv won't be bigger than n, otherwise we may fail\n  // in fixed multiplication method\n  this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n  if (key.x || key.y) {\n    // Montgomery points only have an `x` coordinate.\n    // Weierstrass/Edwards points on the other hand have both `x` and\n    // `y` coordinates.\n    if (this.ec.curve.type === 'mont') {\n      assert(key.x, 'Need x coordinate');\n    } else if (this.ec.curve.type === 'short' ||\n               this.ec.curve.type === 'edwards') {\n      assert(key.x && key.y, 'Need both x and y coordinate');\n    }\n    this.pub = this.ec.curve.point(key.x, key.y);\n    return;\n  }\n  this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n  return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n  return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n  return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n  return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n         ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTg5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9rZXkuanM/YzhjOSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBLZXlQYWlyKGVjLCBvcHRpb25zKSB7XG4gIHRoaXMuZWMgPSBlYztcbiAgdGhpcy5wcml2ID0gbnVsbDtcbiAgdGhpcy5wdWIgPSBudWxsO1xuXG4gIC8vIEtleVBhaXIoZWMsIHsgcHJpdjogLi4uLCBwdWI6IC4uLiB9KVxuICBpZiAob3B0aW9ucy5wcml2KVxuICAgIHRoaXMuX2ltcG9ydFByaXZhdGUob3B0aW9ucy5wcml2LCBvcHRpb25zLnByaXZFbmMpO1xuICBpZiAob3B0aW9ucy5wdWIpXG4gICAgdGhpcy5faW1wb3J0UHVibGljKG9wdGlvbnMucHViLCBvcHRpb25zLnB1YkVuYyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEtleVBhaXI7XG5cbktleVBhaXIuZnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGZyb21QdWJsaWMoZWMsIHB1YiwgZW5jKSB7XG4gIGlmIChwdWIgaW5zdGFuY2VvZiBLZXlQYWlyKVxuICAgIHJldHVybiBwdWI7XG5cbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVjLCB7XG4gICAgcHViOiBwdWIsXG4gICAgcHViRW5jOiBlbmNcbiAgfSk7XG59O1xuXG5LZXlQYWlyLmZyb21Qcml2YXRlID0gZnVuY3Rpb24gZnJvbVByaXZhdGUoZWMsIHByaXYsIGVuYykge1xuICBpZiAocHJpdiBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHByaXY7XG5cbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVjLCB7XG4gICAgcHJpdjogcHJpdixcbiAgICBwcml2RW5jOiBlbmNcbiAgfSk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xuICB2YXIgcHViID0gdGhpcy5nZXRQdWJsaWMoKTtcblxuICBpZiAocHViLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4geyByZXN1bHQ6IGZhbHNlLCByZWFzb246ICdJbnZhbGlkIHB1YmxpYyBrZXknIH07XG4gIGlmICghcHViLnZhbGlkYXRlKCkpXG4gICAgcmV0dXJuIHsgcmVzdWx0OiBmYWxzZSwgcmVhc29uOiAnUHVibGljIGtleSBpcyBub3QgYSBwb2ludCcgfTtcbiAgaWYgKCFwdWIubXVsKHRoaXMuZWMuY3VydmUubikuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB7IHJlc3VsdDogZmFsc2UsIHJlYXNvbjogJ1B1YmxpYyBrZXkgKiBOICE9IE8nIH07XG5cbiAgcmV0dXJuIHsgcmVzdWx0OiB0cnVlLCByZWFzb246IG51bGwgfTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFB1YmxpYyA9IGZ1bmN0aW9uIGdldFB1YmxpYyhjb21wYWN0LCBlbmMpIHtcbiAgLy8gY29tcGFjdCBpcyBvcHRpb25hbCBhcmd1bWVudFxuICBpZiAodHlwZW9mIGNvbXBhY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jID0gY29tcGFjdDtcbiAgICBjb21wYWN0ID0gbnVsbDtcbiAgfVxuXG4gIGlmICghdGhpcy5wdWIpXG4gICAgdGhpcy5wdWIgPSB0aGlzLmVjLmcubXVsKHRoaXMucHJpdik7XG5cbiAgaWYgKCFlbmMpXG4gICAgcmV0dXJuIHRoaXMucHViO1xuXG4gIHJldHVybiB0aGlzLnB1Yi5lbmNvZGUoZW5jLCBjb21wYWN0KTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFByaXZhdGUgPSBmdW5jdGlvbiBnZXRQcml2YXRlKGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdGhpcy5wcml2LnRvU3RyaW5nKDE2LCAyKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLnByaXY7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5faW1wb3J0UHJpdmF0ZSA9IGZ1bmN0aW9uIF9pbXBvcnRQcml2YXRlKGtleSwgZW5jKSB7XG4gIHRoaXMucHJpdiA9IG5ldyBCTihrZXksIGVuYyB8fCAxNik7XG5cbiAgLy8gRW5zdXJlIHRoYXQgdGhlIHByaXYgd29uJ3QgYmUgYmlnZ2VyIHRoYW4gbiwgb3RoZXJ3aXNlIHdlIG1heSBmYWlsXG4gIC8vIGluIGZpeGVkIG11bHRpcGxpY2F0aW9uIG1ldGhvZFxuICB0aGlzLnByaXYgPSB0aGlzLnByaXYudW1vZCh0aGlzLmVjLmN1cnZlLm4pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuX2ltcG9ydFB1YmxpYyA9IGZ1bmN0aW9uIF9pbXBvcnRQdWJsaWMoa2V5LCBlbmMpIHtcbiAgaWYgKGtleS54IHx8IGtleS55KSB7XG4gICAgLy8gTW9udGdvbWVyeSBwb2ludHMgb25seSBoYXZlIGFuIGB4YCBjb29yZGluYXRlLlxuICAgIC8vIFdlaWVyc3RyYXNzL0Vkd2FyZHMgcG9pbnRzIG9uIHRoZSBvdGhlciBoYW5kIGhhdmUgYm90aCBgeGAgYW5kXG4gICAgLy8gYHlgIGNvb3JkaW5hdGVzLlxuICAgIGlmICh0aGlzLmVjLmN1cnZlLnR5cGUgPT09ICdtb250Jykge1xuICAgICAgYXNzZXJ0KGtleS54LCAnTmVlZCB4IGNvb3JkaW5hdGUnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZWMuY3VydmUudHlwZSA9PT0gJ3Nob3J0JyB8fFxuICAgICAgICAgICAgICAgdGhpcy5lYy5jdXJ2ZS50eXBlID09PSAnZWR3YXJkcycpIHtcbiAgICAgIGFzc2VydChrZXkueCAmJiBrZXkueSwgJ05lZWQgYm90aCB4IGFuZCB5IGNvb3JkaW5hdGUnKTtcbiAgICB9XG4gICAgdGhpcy5wdWIgPSB0aGlzLmVjLmN1cnZlLnBvaW50KGtleS54LCBrZXkueSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRoaXMucHViID0gdGhpcy5lYy5jdXJ2ZS5kZWNvZGVQb2ludChrZXksIGVuYyk7XG59O1xuXG4vLyBFQ0RIXG5LZXlQYWlyLnByb3RvdHlwZS5kZXJpdmUgPSBmdW5jdGlvbiBkZXJpdmUocHViKSB7XG4gIHJldHVybiBwdWIubXVsKHRoaXMucHJpdikuZ2V0WCgpO1xufTtcblxuLy8gRUNEU0FcbktleVBhaXIucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1zZywgZW5jLCBvcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLmVjLnNpZ24obXNnLCB0aGlzLCBlbmMsIG9wdGlvbnMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1zZywgc2lnbmF0dXJlKSB7XG4gIHJldHVybiB0aGlzLmVjLnZlcmlmeShtc2csIHNpZ25hdHVyZSwgdGhpcyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgcmV0dXJuICc8S2V5IHByaXY6ICcgKyAodGhpcy5wcml2ICYmIHRoaXMucHJpdi50b1N0cmluZygxNiwgMikpICtcbiAgICAgICAgICcgcHViOiAnICsgKHRoaXMucHViICYmIHRoaXMucHViLmluc3BlY3QoKSkgKyAnID4nO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9rZXkuanNcbi8vIG1vZHVsZSBpZCA9IDE4OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///189\n");

/***/ }),
/* 190 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar BN = __webpack_require__(4);\n\nvar elliptic = __webpack_require__(6);\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n  if (options instanceof Signature)\n    return options;\n\n  if (this._importDER(options, enc))\n    return;\n\n  assert(options.r && options.s, 'Signature without r or s');\n  this.r = new BN(options.r, 16);\n  this.s = new BN(options.s, 16);\n  if (options.recoveryParam === undefined)\n    this.recoveryParam = null;\n  else\n    this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n  this.place = 0;\n}\n\nfunction getLength(buf, p) {\n  var initial = buf[p.place++];\n  if (!(initial & 0x80)) {\n    return initial;\n  }\n  var octetLen = initial & 0xf;\n  var val = 0;\n  for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n    val <<= 8;\n    val |= buf[off];\n  }\n  p.place = off;\n  return val;\n}\n\nfunction rmPadding(buf) {\n  var i = 0;\n  var len = buf.length - 1;\n  while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n    i++;\n  }\n  if (i === 0) {\n    return buf;\n  }\n  return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n  data = utils.toArray(data, enc);\n  var p = new Position();\n  if (data[p.place++] !== 0x30) {\n    return false;\n  }\n  var len = getLength(data, p);\n  if ((len + p.place) !== data.length) {\n    return false;\n  }\n  if (data[p.place++] !== 0x02) {\n    return false;\n  }\n  var rlen = getLength(data, p);\n  var r = data.slice(p.place, rlen + p.place);\n  p.place += rlen;\n  if (data[p.place++] !== 0x02) {\n    return false;\n  }\n  var slen = getLength(data, p);\n  if (data.length !== slen + p.place) {\n    return false;\n  }\n  var s = data.slice(p.place, slen + p.place);\n  if (r[0] === 0 && (r[1] & 0x80)) {\n    r = r.slice(1);\n  }\n  if (s[0] === 0 && (s[1] & 0x80)) {\n    s = s.slice(1);\n  }\n\n  this.r = new BN(r);\n  this.s = new BN(s);\n  this.recoveryParam = null;\n\n  return true;\n};\n\nfunction constructLength(arr, len) {\n  if (len < 0x80) {\n    arr.push(len);\n    return;\n  }\n  var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n  arr.push(octets | 0x80);\n  while (--octets) {\n    arr.push((len >>> (octets << 3)) & 0xff);\n  }\n  arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n  var r = this.r.toArray();\n  var s = this.s.toArray();\n\n  // Pad values\n  if (r[0] & 0x80)\n    r = [ 0 ].concat(r);\n  // Pad values\n  if (s[0] & 0x80)\n    s = [ 0 ].concat(s);\n\n  r = rmPadding(r);\n  s = rmPadding(s);\n\n  while (!s[0] && !(s[1] & 0x80)) {\n    s = s.slice(1);\n  }\n  var arr = [ 0x02 ];\n  constructLength(arr, r.length);\n  arr = arr.concat(r);\n  arr.push(0x02);\n  constructLength(arr, s.length);\n  var backHalf = arr.concat(s);\n  var res = [ 0x30 ];\n  constructLength(res, backHalf.length);\n  res = res.concat(backHalf);\n  return utils.encode(res, enc);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9zaWduYXR1cmUuanM/MzRjMSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIFNpZ25hdHVyZShvcHRpb25zLCBlbmMpIHtcbiAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBTaWduYXR1cmUpXG4gICAgcmV0dXJuIG9wdGlvbnM7XG5cbiAgaWYgKHRoaXMuX2ltcG9ydERFUihvcHRpb25zLCBlbmMpKVxuICAgIHJldHVybjtcblxuICBhc3NlcnQob3B0aW9ucy5yICYmIG9wdGlvbnMucywgJ1NpZ25hdHVyZSB3aXRob3V0IHIgb3IgcycpO1xuICB0aGlzLnIgPSBuZXcgQk4ob3B0aW9ucy5yLCAxNik7XG4gIHRoaXMucyA9IG5ldyBCTihvcHRpb25zLnMsIDE2KTtcbiAgaWYgKG9wdGlvbnMucmVjb3ZlcnlQYXJhbSA9PT0gdW5kZWZpbmVkKVxuICAgIHRoaXMucmVjb3ZlcnlQYXJhbSA9IG51bGw7XG4gIGVsc2VcbiAgICB0aGlzLnJlY292ZXJ5UGFyYW0gPSBvcHRpb25zLnJlY292ZXJ5UGFyYW07XG59XG5tb2R1bGUuZXhwb3J0cyA9IFNpZ25hdHVyZTtcblxuZnVuY3Rpb24gUG9zaXRpb24oKSB7XG4gIHRoaXMucGxhY2UgPSAwO1xufVxuXG5mdW5jdGlvbiBnZXRMZW5ndGgoYnVmLCBwKSB7XG4gIHZhciBpbml0aWFsID0gYnVmW3AucGxhY2UrK107XG4gIGlmICghKGluaXRpYWwgJiAweDgwKSkge1xuICAgIHJldHVybiBpbml0aWFsO1xuICB9XG4gIHZhciBvY3RldExlbiA9IGluaXRpYWwgJiAweGY7XG4gIHZhciB2YWwgPSAwO1xuICBmb3IgKHZhciBpID0gMCwgb2ZmID0gcC5wbGFjZTsgaSA8IG9jdGV0TGVuOyBpKyssIG9mZisrKSB7XG4gICAgdmFsIDw8PSA4O1xuICAgIHZhbCB8PSBidWZbb2ZmXTtcbiAgfVxuICBwLnBsYWNlID0gb2ZmO1xuICByZXR1cm4gdmFsO1xufVxuXG5mdW5jdGlvbiBybVBhZGRpbmcoYnVmKSB7XG4gIHZhciBpID0gMDtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGggLSAxO1xuICB3aGlsZSAoIWJ1ZltpXSAmJiAhKGJ1ZltpICsgMV0gJiAweDgwKSAmJiBpIDwgbGVuKSB7XG4gICAgaSsrO1xuICB9XG4gIGlmIChpID09PSAwKSB7XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuICByZXR1cm4gYnVmLnNsaWNlKGkpO1xufVxuXG5TaWduYXR1cmUucHJvdG90eXBlLl9pbXBvcnRERVIgPSBmdW5jdGlvbiBfaW1wb3J0REVSKGRhdGEsIGVuYykge1xuICBkYXRhID0gdXRpbHMudG9BcnJheShkYXRhLCBlbmMpO1xuICB2YXIgcCA9IG5ldyBQb3NpdGlvbigpO1xuICBpZiAoZGF0YVtwLnBsYWNlKytdICE9PSAweDMwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIGlmICgobGVuICsgcC5wbGFjZSkgIT09IGRhdGEubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChkYXRhW3AucGxhY2UrK10gIT09IDB4MDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHJsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIHZhciByID0gZGF0YS5zbGljZShwLnBsYWNlLCBybGVuICsgcC5wbGFjZSk7XG4gIHAucGxhY2UgKz0gcmxlbjtcbiAgaWYgKGRhdGFbcC5wbGFjZSsrXSAhPT0gMHgwMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgc2xlbiA9IGdldExlbmd0aChkYXRhLCBwKTtcbiAgaWYgKGRhdGEubGVuZ3RoICE9PSBzbGVuICsgcC5wbGFjZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcyA9IGRhdGEuc2xpY2UocC5wbGFjZSwgc2xlbiArIHAucGxhY2UpO1xuICBpZiAoclswXSA9PT0gMCAmJiAoclsxXSAmIDB4ODApKSB7XG4gICAgciA9IHIuc2xpY2UoMSk7XG4gIH1cbiAgaWYgKHNbMF0gPT09IDAgJiYgKHNbMV0gJiAweDgwKSkge1xuICAgIHMgPSBzLnNsaWNlKDEpO1xuICB9XG5cbiAgdGhpcy5yID0gbmV3IEJOKHIpO1xuICB0aGlzLnMgPSBuZXcgQk4ocyk7XG4gIHRoaXMucmVjb3ZlcnlQYXJhbSA9IG51bGw7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5mdW5jdGlvbiBjb25zdHJ1Y3RMZW5ndGgoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA8IDB4ODApIHtcbiAgICBhcnIucHVzaChsZW4pO1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgb2N0ZXRzID0gMSArIChNYXRoLmxvZyhsZW4pIC8gTWF0aC5MTjIgPj4+IDMpO1xuICBhcnIucHVzaChvY3RldHMgfCAweDgwKTtcbiAgd2hpbGUgKC0tb2N0ZXRzKSB7XG4gICAgYXJyLnB1c2goKGxlbiA+Pj4gKG9jdGV0cyA8PCAzKSkgJiAweGZmKTtcbiAgfVxuICBhcnIucHVzaChsZW4pO1xufVxuXG5TaWduYXR1cmUucHJvdG90eXBlLnRvREVSID0gZnVuY3Rpb24gdG9ERVIoZW5jKSB7XG4gIHZhciByID0gdGhpcy5yLnRvQXJyYXkoKTtcbiAgdmFyIHMgPSB0aGlzLnMudG9BcnJheSgpO1xuXG4gIC8vIFBhZCB2YWx1ZXNcbiAgaWYgKHJbMF0gJiAweDgwKVxuICAgIHIgPSBbIDAgXS5jb25jYXQocik7XG4gIC8vIFBhZCB2YWx1ZXNcbiAgaWYgKHNbMF0gJiAweDgwKVxuICAgIHMgPSBbIDAgXS5jb25jYXQocyk7XG5cbiAgciA9IHJtUGFkZGluZyhyKTtcbiAgcyA9IHJtUGFkZGluZyhzKTtcblxuICB3aGlsZSAoIXNbMF0gJiYgIShzWzFdICYgMHg4MCkpIHtcbiAgICBzID0gcy5zbGljZSgxKTtcbiAgfVxuICB2YXIgYXJyID0gWyAweDAyIF07XG4gIGNvbnN0cnVjdExlbmd0aChhcnIsIHIubGVuZ3RoKTtcbiAgYXJyID0gYXJyLmNvbmNhdChyKTtcbiAgYXJyLnB1c2goMHgwMik7XG4gIGNvbnN0cnVjdExlbmd0aChhcnIsIHMubGVuZ3RoKTtcbiAgdmFyIGJhY2tIYWxmID0gYXJyLmNvbmNhdChzKTtcbiAgdmFyIHJlcyA9IFsgMHgzMCBdO1xuICBjb25zdHJ1Y3RMZW5ndGgocmVzLCBiYWNrSGFsZi5sZW5ndGgpO1xuICByZXMgPSByZXMuY29uY2F0KGJhY2tIYWxmKTtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZShyZXMsIGVuYyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VjL3NpZ25hdHVyZS5qc1xuLy8gbW9kdWxlIGlkID0gMTkwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///190\n");

/***/ }),
/* 191 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar hash = __webpack_require__(41);\nvar elliptic = __webpack_require__(6);\nvar utils = elliptic.utils;\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = __webpack_require__(192);\nvar Signature = __webpack_require__(193);\n\nfunction EDDSA(curve) {\n  assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n  if (!(this instanceof EDDSA))\n    return new EDDSA(curve);\n\n  var curve = elliptic.curves[curve].curve;\n  this.curve = curve;\n  this.g = curve.g;\n  this.g.precompute(curve.n.bitLength() + 1);\n\n  this.pointClass = curve.point().constructor;\n  this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n  this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n  message = parseBytes(message);\n  var key = this.keyFromSecret(secret);\n  var r = this.hashInt(key.messagePrefix(), message);\n  var R = this.g.mul(r);\n  var Rencoded = this.encodePoint(R);\n  var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n               .mul(key.priv());\n  var S = r.add(s_).umod(this.curve.n);\n  return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n  message = parseBytes(message);\n  sig = this.makeSignature(sig);\n  var key = this.keyFromPublic(pub);\n  var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n  var SG = this.g.mul(sig.S());\n  var RplusAh = sig.R().add(key.pub().mul(h));\n  return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n  var hash = this.hash();\n  for (var i = 0; i < arguments.length; i++)\n    hash.update(arguments[i]);\n  return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n  return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n  return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n  if (sig instanceof Signature)\n    return sig;\n  return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n  var enc = point.getY().toArray('le', this.encodingLength);\n  enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n  return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n  bytes = utils.parseBytes(bytes);\n\n  var lastIx = bytes.length - 1;\n  var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n  var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n  var y = utils.intFromLE(normed);\n  return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n  return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n  return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n  return val instanceof this.pointClass;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9pbmRleC5qcz9mOWVkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xudmFyIHBhcnNlQnl0ZXMgPSB1dGlscy5wYXJzZUJ5dGVzO1xudmFyIEtleVBhaXIgPSByZXF1aXJlKCcuL2tleScpO1xudmFyIFNpZ25hdHVyZSA9IHJlcXVpcmUoJy4vc2lnbmF0dXJlJyk7XG5cbmZ1bmN0aW9uIEVERFNBKGN1cnZlKSB7XG4gIGFzc2VydChjdXJ2ZSA9PT0gJ2VkMjU1MTknLCAnb25seSB0ZXN0ZWQgd2l0aCBlZDI1NTE5IHNvIGZhcicpO1xuXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFRERTQSkpXG4gICAgcmV0dXJuIG5ldyBFRERTQShjdXJ2ZSk7XG5cbiAgdmFyIGN1cnZlID0gZWxsaXB0aWMuY3VydmVzW2N1cnZlXS5jdXJ2ZTtcbiAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICB0aGlzLmcgPSBjdXJ2ZS5nO1xuICB0aGlzLmcucHJlY29tcHV0ZShjdXJ2ZS5uLmJpdExlbmd0aCgpICsgMSk7XG5cbiAgdGhpcy5wb2ludENsYXNzID0gY3VydmUucG9pbnQoKS5jb25zdHJ1Y3RvcjtcbiAgdGhpcy5lbmNvZGluZ0xlbmd0aCA9IE1hdGguY2VpbChjdXJ2ZS5uLmJpdExlbmd0aCgpIC8gOCk7XG4gIHRoaXMuaGFzaCA9IGhhc2guc2hhNTEyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVERFNBO1xuXG4vKipcbiogQHBhcmFtIHtBcnJheXxTdHJpbmd9IG1lc3NhZ2UgLSBtZXNzYWdlIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfEtleVBhaXJ9IHNlY3JldCAtIHNlY3JldCBieXRlcyBvciBhIGtleXBhaXJcbiogQHJldHVybnMge1NpZ25hdHVyZX0gLSBzaWduYXR1cmVcbiovXG5FRERTQS5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obWVzc2FnZSwgc2VjcmV0KSB7XG4gIG1lc3NhZ2UgPSBwYXJzZUJ5dGVzKG1lc3NhZ2UpO1xuICB2YXIga2V5ID0gdGhpcy5rZXlGcm9tU2VjcmV0KHNlY3JldCk7XG4gIHZhciByID0gdGhpcy5oYXNoSW50KGtleS5tZXNzYWdlUHJlZml4KCksIG1lc3NhZ2UpO1xuICB2YXIgUiA9IHRoaXMuZy5tdWwocik7XG4gIHZhciBSZW5jb2RlZCA9IHRoaXMuZW5jb2RlUG9pbnQoUik7XG4gIHZhciBzXyA9IHRoaXMuaGFzaEludChSZW5jb2RlZCwga2V5LnB1YkJ5dGVzKCksIG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAubXVsKGtleS5wcml2KCkpO1xuICB2YXIgUyA9IHIuYWRkKHNfKS51bW9kKHRoaXMuY3VydmUubik7XG4gIHJldHVybiB0aGlzLm1ha2VTaWduYXR1cmUoeyBSOiBSLCBTOiBTLCBSZW5jb2RlZDogUmVuY29kZWQgfSk7XG59O1xuXG4vKipcbiogQHBhcmFtIHtBcnJheX0gbWVzc2FnZSAtIG1lc3NhZ2UgYnl0ZXNcbiogQHBhcmFtIHtBcnJheXxTdHJpbmd8U2lnbmF0dXJlfSBzaWcgLSBzaWcgYnl0ZXNcbiogQHBhcmFtIHtBcnJheXxTdHJpbmd8UG9pbnR8S2V5UGFpcn0gcHViIC0gcHVibGljIGtleVxuKiBAcmV0dXJucyB7Qm9vbGVhbn0gLSB0cnVlIGlmIHB1YmxpYyBrZXkgbWF0Y2hlcyBzaWcgb2YgbWVzc2FnZVxuKi9cbkVERFNBLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobWVzc2FnZSwgc2lnLCBwdWIpIHtcbiAgbWVzc2FnZSA9IHBhcnNlQnl0ZXMobWVzc2FnZSk7XG4gIHNpZyA9IHRoaXMubWFrZVNpZ25hdHVyZShzaWcpO1xuICB2YXIga2V5ID0gdGhpcy5rZXlGcm9tUHVibGljKHB1Yik7XG4gIHZhciBoID0gdGhpcy5oYXNoSW50KHNpZy5SZW5jb2RlZCgpLCBrZXkucHViQnl0ZXMoKSwgbWVzc2FnZSk7XG4gIHZhciBTRyA9IHRoaXMuZy5tdWwoc2lnLlMoKSk7XG4gIHZhciBScGx1c0FoID0gc2lnLlIoKS5hZGQoa2V5LnB1YigpLm11bChoKSk7XG4gIHJldHVybiBScGx1c0FoLmVxKFNHKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5oYXNoSW50ID0gZnVuY3Rpb24gaGFzaEludCgpIHtcbiAgdmFyIGhhc2ggPSB0aGlzLmhhc2goKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXG4gICAgaGFzaC51cGRhdGUoYXJndW1lbnRzW2ldKTtcbiAgcmV0dXJuIHV0aWxzLmludEZyb21MRShoYXNoLmRpZ2VzdCgpKS51bW9kKHRoaXMuY3VydmUubik7XG59O1xuXG5FRERTQS5wcm90b3R5cGUua2V5RnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGtleUZyb21QdWJsaWMocHViKSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21QdWJsaWModGhpcywgcHViKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5rZXlGcm9tU2VjcmV0ID0gZnVuY3Rpb24ga2V5RnJvbVNlY3JldChzZWNyZXQpIHtcbiAgcmV0dXJuIEtleVBhaXIuZnJvbVNlY3JldCh0aGlzLCBzZWNyZXQpO1xufTtcblxuRUREU0EucHJvdG90eXBlLm1ha2VTaWduYXR1cmUgPSBmdW5jdGlvbiBtYWtlU2lnbmF0dXJlKHNpZykge1xuICBpZiAoc2lnIGluc3RhbmNlb2YgU2lnbmF0dXJlKVxuICAgIHJldHVybiBzaWc7XG4gIHJldHVybiBuZXcgU2lnbmF0dXJlKHRoaXMsIHNpZyk7XG59O1xuXG4vKipcbiogKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtam9zZWZzc29uLWVkZHNhLWVkMjU1MTktMDMjc2VjdGlvbi01LjJcbipcbiogRUREU0EgZGVmaW5lcyBtZXRob2RzIGZvciBlbmNvZGluZyBhbmQgZGVjb2RpbmcgcG9pbnRzIGFuZCBpbnRlZ2Vycy4gVGhlc2UgYXJlXG4qIGhlbHBlciBjb252ZW5pZW5jZSBtZXRob2RzLCB0aGF0IHBhc3MgYWxvbmcgdG8gdXRpbGl0eSBmdW5jdGlvbnMgaW1wbGllZFxuKiBwYXJhbWV0ZXJzLlxuKlxuKi9cbkVERFNBLnByb3RvdHlwZS5lbmNvZGVQb2ludCA9IGZ1bmN0aW9uIGVuY29kZVBvaW50KHBvaW50KSB7XG4gIHZhciBlbmMgPSBwb2ludC5nZXRZKCkudG9BcnJheSgnbGUnLCB0aGlzLmVuY29kaW5nTGVuZ3RoKTtcbiAgZW5jW3RoaXMuZW5jb2RpbmdMZW5ndGggLSAxXSB8PSBwb2ludC5nZXRYKCkuaXNPZGQoKSA/IDB4ODAgOiAwO1xuICByZXR1cm4gZW5jO1xufTtcblxuRUREU0EucHJvdG90eXBlLmRlY29kZVBvaW50ID0gZnVuY3Rpb24gZGVjb2RlUG9pbnQoYnl0ZXMpIHtcbiAgYnl0ZXMgPSB1dGlscy5wYXJzZUJ5dGVzKGJ5dGVzKTtcblxuICB2YXIgbGFzdEl4ID0gYnl0ZXMubGVuZ3RoIC0gMTtcbiAgdmFyIG5vcm1lZCA9IGJ5dGVzLnNsaWNlKDAsIGxhc3RJeCkuY29uY2F0KGJ5dGVzW2xhc3RJeF0gJiB+MHg4MCk7XG4gIHZhciB4SXNPZGQgPSAoYnl0ZXNbbGFzdEl4XSAmIDB4ODApICE9PSAwO1xuXG4gIHZhciB5ID0gdXRpbHMuaW50RnJvbUxFKG5vcm1lZCk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50RnJvbVkoeSwgeElzT2RkKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5lbmNvZGVJbnQgPSBmdW5jdGlvbiBlbmNvZGVJbnQobnVtKSB7XG4gIHJldHVybiBudW0udG9BcnJheSgnbGUnLCB0aGlzLmVuY29kaW5nTGVuZ3RoKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5kZWNvZGVJbnQgPSBmdW5jdGlvbiBkZWNvZGVJbnQoYnl0ZXMpIHtcbiAgcmV0dXJuIHV0aWxzLmludEZyb21MRShieXRlcyk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuaXNQb2ludCA9IGZ1bmN0aW9uIGlzUG9pbnQodmFsKSB7XG4gIHJldHVybiB2YWwgaW5zdGFuY2VvZiB0aGlzLnBvaW50Q2xhc3M7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxOTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///191\n");

/***/ }),
/* 192 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar elliptic = __webpack_require__(6);\nvar utils = elliptic.utils;\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array<Byte>} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array<Byte>} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n  this.eddsa = eddsa;\n  this._secret = parseBytes(params.secret);\n  if (eddsa.isPoint(params.pub))\n    this._pub = params.pub;\n  else\n    this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n  if (pub instanceof KeyPair)\n    return pub;\n  return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n  if (secret instanceof KeyPair)\n    return secret;\n  return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n  return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n  return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n  if (this._pubBytes)\n    return this.eddsa.decodePoint(this._pubBytes);\n  return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n  var eddsa = this.eddsa;\n  var hash = this.hash();\n  var lastIx = eddsa.encodingLength - 1;\n\n  var a = hash.slice(0, eddsa.encodingLength);\n  a[0] &= 248;\n  a[lastIx] &= 127;\n  a[lastIx] |= 64;\n\n  return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n  return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n  return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n  return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n  assert(this._secret, 'KeyPair can only verify');\n  return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n  return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n  assert(this._secret, 'KeyPair is public only');\n  return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n  return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9rZXkuanM/NDczMyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG52YXIgY2FjaGVkUHJvcGVydHkgPSB1dGlscy5jYWNoZWRQcm9wZXJ0eTtcblxuLyoqXG4qIEBwYXJhbSB7RUREU0F9IGVkZHNhIC0gaW5zdGFuY2VcbiogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIHB1YmxpYy9wcml2YXRlIGtleSBwYXJhbWV0ZXJzXG4qXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZT59IFtwYXJhbXMuc2VjcmV0XSAtIHNlY3JldCBzZWVkIGJ5dGVzXG4qIEBwYXJhbSB7UG9pbnR9IFtwYXJhbXMucHViXSAtIHB1YmxpYyBrZXkgcG9pbnQgKGFrYSBgQWAgaW4gZWRkc2EgdGVybXMpXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZT59IFtwYXJhbXMucHViXSAtIHB1YmxpYyBrZXkgcG9pbnQgZW5jb2RlZCBhcyBieXRlc1xuKlxuKi9cbmZ1bmN0aW9uIEtleVBhaXIoZWRkc2EsIHBhcmFtcykge1xuICB0aGlzLmVkZHNhID0gZWRkc2E7XG4gIHRoaXMuX3NlY3JldCA9IHBhcnNlQnl0ZXMocGFyYW1zLnNlY3JldCk7XG4gIGlmIChlZGRzYS5pc1BvaW50KHBhcmFtcy5wdWIpKVxuICAgIHRoaXMuX3B1YiA9IHBhcmFtcy5wdWI7XG4gIGVsc2VcbiAgICB0aGlzLl9wdWJCeXRlcyA9IHBhcnNlQnl0ZXMocGFyYW1zLnB1Yik7XG59XG5cbktleVBhaXIuZnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGZyb21QdWJsaWMoZWRkc2EsIHB1Yikge1xuICBpZiAocHViIGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHViO1xuICByZXR1cm4gbmV3IEtleVBhaXIoZWRkc2EsIHsgcHViOiBwdWIgfSk7XG59O1xuXG5LZXlQYWlyLmZyb21TZWNyZXQgPSBmdW5jdGlvbiBmcm9tU2VjcmV0KGVkZHNhLCBzZWNyZXQpIHtcbiAgaWYgKHNlY3JldCBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHNlY3JldDtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVkZHNhLCB7IHNlY3JldDogc2VjcmV0IH0pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuc2VjcmV0ID0gZnVuY3Rpb24gc2VjcmV0KCkge1xuICByZXR1cm4gdGhpcy5fc2VjcmV0O1xufTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3B1YkJ5dGVzJywgZnVuY3Rpb24gcHViQnl0ZXMoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMucHViKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwdWInLCBmdW5jdGlvbiBwdWIoKSB7XG4gIGlmICh0aGlzLl9wdWJCeXRlcylcbiAgICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLl9wdWJCeXRlcyk7XG4gIHJldHVybiB0aGlzLmVkZHNhLmcubXVsKHRoaXMucHJpdigpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHJpdkJ5dGVzJywgZnVuY3Rpb24gcHJpdkJ5dGVzKCkge1xuICB2YXIgZWRkc2EgPSB0aGlzLmVkZHNhO1xuICB2YXIgaGFzaCA9IHRoaXMuaGFzaCgpO1xuICB2YXIgbGFzdEl4ID0gZWRkc2EuZW5jb2RpbmdMZW5ndGggLSAxO1xuXG4gIHZhciBhID0gaGFzaC5zbGljZSgwLCBlZGRzYS5lbmNvZGluZ0xlbmd0aCk7XG4gIGFbMF0gJj0gMjQ4O1xuICBhW2xhc3RJeF0gJj0gMTI3O1xuICBhW2xhc3RJeF0gfD0gNjQ7XG5cbiAgcmV0dXJuIGE7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3ByaXYnLCBmdW5jdGlvbiBwcml2KCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5wcml2Qnl0ZXMoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ2hhc2gnLCBmdW5jdGlvbiBoYXNoKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5oYXNoKCkudXBkYXRlKHRoaXMuc2VjcmV0KCkpLmRpZ2VzdCgpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdtZXNzYWdlUHJlZml4JywgZnVuY3Rpb24gbWVzc2FnZVByZWZpeCgpIHtcbiAgcmV0dXJuIHRoaXMuaGFzaCgpLnNsaWNlKHRoaXMuZWRkc2EuZW5jb2RpbmdMZW5ndGgpO1xufSk7XG5cbktleVBhaXIucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1lc3NhZ2UpIHtcbiAgYXNzZXJ0KHRoaXMuX3NlY3JldCwgJ0tleVBhaXIgY2FuIG9ubHkgdmVyaWZ5Jyk7XG4gIHJldHVybiB0aGlzLmVkZHNhLnNpZ24obWVzc2FnZSwgdGhpcyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobWVzc2FnZSwgc2lnKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLnZlcmlmeShtZXNzYWdlLCBzaWcsIHRoaXMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuZ2V0U2VjcmV0ID0gZnVuY3Rpb24gZ2V0U2VjcmV0KGVuYykge1xuICBhc3NlcnQodGhpcy5fc2VjcmV0LCAnS2V5UGFpciBpcyBwdWJsaWMgb25seScpO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHRoaXMuc2VjcmV0KCksIGVuYyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRQdWJsaWMgPSBmdW5jdGlvbiBnZXRQdWJsaWMoZW5jKSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy5wdWJCeXRlcygpLCBlbmMpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBLZXlQYWlyO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL2tleS5qc1xuLy8gbW9kdWxlIGlkID0gMTkyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///192\n");

/***/ }),
/* 193 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar BN = __webpack_require__(4);\nvar elliptic = __webpack_require__(6);\nvar utils = elliptic.utils;\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array<Bytes>|Object} sig -\n* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n  this.eddsa = eddsa;\n\n  if (typeof sig !== 'object')\n    sig = parseBytes(sig);\n\n  if (Array.isArray(sig)) {\n    sig = {\n      R: sig.slice(0, eddsa.encodingLength),\n      S: sig.slice(eddsa.encodingLength)\n    };\n  }\n\n  assert(sig.R && sig.S, 'Signature without R or S');\n\n  if (eddsa.isPoint(sig.R))\n    this._R = sig.R;\n  if (sig.S instanceof BN)\n    this._S = sig.S;\n\n  this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n  this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n  return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n  return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n  return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n  return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n  return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n  return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9zaWduYXR1cmUuanM/ODY0NyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xudmFyIGNhY2hlZFByb3BlcnR5ID0gdXRpbHMuY2FjaGVkUHJvcGVydHk7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG5cbi8qKlxuKiBAcGFyYW0ge0VERFNBfSBlZGRzYSAtIGVkZHNhIGluc3RhbmNlXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fE9iamVjdH0gc2lnIC1cbiogQHBhcmFtIHtBcnJheTxCeXRlcz58UG9pbnR9IFtzaWcuUl0gLSBSIHBvaW50IGFzIFBvaW50IG9yIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fGJufSBbc2lnLlNdIC0gUyBzY2FsYXIgYXMgYm4gb3IgYnl0ZXNcbiogQHBhcmFtIHtBcnJheTxCeXRlcz59IFtzaWcuUmVuY29kZWRdIC0gUiBwb2ludCBlbmNvZGVkXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fSBbc2lnLlNlbmNvZGVkXSAtIFMgc2NhbGFyIGVuY29kZWRcbiovXG5mdW5jdGlvbiBTaWduYXR1cmUoZWRkc2EsIHNpZykge1xuICB0aGlzLmVkZHNhID0gZWRkc2E7XG5cbiAgaWYgKHR5cGVvZiBzaWcgIT09ICdvYmplY3QnKVxuICAgIHNpZyA9IHBhcnNlQnl0ZXMoc2lnKTtcblxuICBpZiAoQXJyYXkuaXNBcnJheShzaWcpKSB7XG4gICAgc2lnID0ge1xuICAgICAgUjogc2lnLnNsaWNlKDAsIGVkZHNhLmVuY29kaW5nTGVuZ3RoKSxcbiAgICAgIFM6IHNpZy5zbGljZShlZGRzYS5lbmNvZGluZ0xlbmd0aClcbiAgICB9O1xuICB9XG5cbiAgYXNzZXJ0KHNpZy5SICYmIHNpZy5TLCAnU2lnbmF0dXJlIHdpdGhvdXQgUiBvciBTJyk7XG5cbiAgaWYgKGVkZHNhLmlzUG9pbnQoc2lnLlIpKVxuICAgIHRoaXMuX1IgPSBzaWcuUjtcbiAgaWYgKHNpZy5TIGluc3RhbmNlb2YgQk4pXG4gICAgdGhpcy5fUyA9IHNpZy5TO1xuXG4gIHRoaXMuX1JlbmNvZGVkID0gQXJyYXkuaXNBcnJheShzaWcuUikgPyBzaWcuUiA6IHNpZy5SZW5jb2RlZDtcbiAgdGhpcy5fU2VuY29kZWQgPSBBcnJheS5pc0FycmF5KHNpZy5TKSA/IHNpZy5TIDogc2lnLlNlbmNvZGVkO1xufVxuXG5jYWNoZWRQcm9wZXJ0eShTaWduYXR1cmUsICdTJywgZnVuY3Rpb24gUygpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMuU2VuY29kZWQoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUicsIGZ1bmN0aW9uIFIoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuUmVuY29kZWQoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUmVuY29kZWQnLCBmdW5jdGlvbiBSZW5jb2RlZCgpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5SKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1NlbmNvZGVkJywgZnVuY3Rpb24gU2VuY29kZWQoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZUludCh0aGlzLlMoKSk7XG59KTtcblxuU2lnbmF0dXJlLnByb3RvdHlwZS50b0J5dGVzID0gZnVuY3Rpb24gdG9CeXRlcygpIHtcbiAgcmV0dXJuIHRoaXMuUmVuY29kZWQoKS5jb25jYXQodGhpcy5TZW5jb2RlZCgpKTtcbn07XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9IZXggPSBmdW5jdGlvbiB0b0hleCgpIHtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLnRvQnl0ZXMoKSwgJ2hleCcpLnRvVXBwZXJDYXNlKCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNpZ25hdHVyZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9zaWduYXR1cmUuanNcbi8vIG1vZHVsZSBpZCA9IDE5M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///193\n");

/***/ }),
/* 194 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n\n\nvar asn1 = __webpack_require__(19)\n\nexports.certificate = __webpack_require__(205)\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('modulus').int(),\n    this.key('publicExponent').int(),\n    this.key('privateExponent').int(),\n    this.key('prime1').int(),\n    this.key('prime2').int(),\n    this.key('exponent1').int(),\n    this.key('exponent2').int(),\n    this.key('coefficient').int()\n  )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n  this.seq().obj(\n    this.key('modulus').int(),\n    this.key('publicExponent').int()\n  )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n  this.seq().obj(\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('subjectPublicKey').bitstr()\n  )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n  this.seq().obj(\n    this.key('algorithm').objid(),\n    this.key('none').null_().optional(),\n    this.key('curve').objid().optional(),\n    this.key('params').seq().obj(\n      this.key('p').int(),\n      this.key('q').int(),\n      this.key('g').int()\n    ).optional()\n  )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('subjectPrivateKey').octstr()\n  )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n  this.seq().obj(\n    this.key('algorithm').seq().obj(\n      this.key('id').objid(),\n      this.key('decrypt').seq().obj(\n        this.key('kde').seq().obj(\n          this.key('id').objid(),\n          this.key('kdeparams').seq().obj(\n            this.key('salt').octstr(),\n            this.key('iters').int()\n          )\n        ),\n        this.key('cipher').seq().obj(\n          this.key('algo').objid(),\n          this.key('iv').octstr()\n        )\n      )\n    ),\n    this.key('subjectPrivateKey').octstr()\n  )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('p').int(),\n    this.key('q').int(),\n    this.key('g').int(),\n    this.key('pub_key').int(),\n    this.key('priv_key').int()\n  )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n  this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n  this.seq().obj(\n    this.key('version').int(),\n    this.key('privateKey').octstr(),\n    this.key('parameters').optional().explicit(0).use(ECParameters),\n    this.key('publicKey').optional().explicit(1).bitstr()\n  )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n  this.choice({\n    namedCurve: this.objid()\n  })\n})\n\nexports.signature = asn1.define('signature', function () {\n  this.seq().obj(\n    this.key('r').int(),\n    this.key('s').int()\n  )\n})\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvYXNuMS5qcz9kN2Q2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvc2VsZi1zaWduZWQvYmxvYi9naC1wYWdlcy9saWIvYXNuMS5qc1xuLy8gRmVkb3IsIHlvdSBhcmUgYW1hemluZy5cbid1c2Ugc3RyaWN0J1xuXG52YXIgYXNuMSA9IHJlcXVpcmUoJ2FzbjEuanMnKVxuXG5leHBvcnRzLmNlcnRpZmljYXRlID0gcmVxdWlyZSgnLi9jZXJ0aWZpY2F0ZScpXG5cbnZhciBSU0FQcml2YXRlS2V5ID0gYXNuMS5kZWZpbmUoJ1JTQVByaXZhdGVLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ21vZHVsdXMnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHVibGljRXhwb25lbnQnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpdmF0ZUV4cG9uZW50JykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaW1lMScpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcmltZTInKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnZXhwb25lbnQxJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2V4cG9uZW50MicpLmludCgpLFxuICAgIHRoaXMua2V5KCdjb2VmZmljaWVudCcpLmludCgpXG4gIClcbn0pXG5leHBvcnRzLlJTQVByaXZhdGVLZXkgPSBSU0FQcml2YXRlS2V5XG5cbnZhciBSU0FQdWJsaWNLZXkgPSBhc24xLmRlZmluZSgnUlNBUHVibGljS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnbW9kdWx1cycpLmludCgpLFxuICAgIHRoaXMua2V5KCdwdWJsaWNFeHBvbmVudCcpLmludCgpXG4gIClcbn0pXG5leHBvcnRzLlJTQVB1YmxpY0tleSA9IFJTQVB1YmxpY0tleVxuXG52YXIgUHVibGljS2V5ID0gYXNuMS5kZWZpbmUoJ1N1YmplY3RQdWJsaWNLZXlJbmZvJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnYWxnb3JpdGhtJykudXNlKEFsZ29yaXRobUlkZW50aWZpZXIpLFxuICAgIHRoaXMua2V5KCdzdWJqZWN0UHVibGljS2V5JykuYml0c3RyKClcbiAgKVxufSlcbmV4cG9ydHMuUHVibGljS2V5ID0gUHVibGljS2V5XG5cbnZhciBBbGdvcml0aG1JZGVudGlmaWVyID0gYXNuMS5kZWZpbmUoJ0FsZ29yaXRobUlkZW50aWZpZXInLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS5vYmppZCgpLFxuICAgIHRoaXMua2V5KCdub25lJykubnVsbF8oKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdjdXJ2ZScpLm9iamlkKCkub3B0aW9uYWwoKSxcbiAgICB0aGlzLmtleSgncGFyYW1zJykuc2VxKCkub2JqKFxuICAgICAgdGhpcy5rZXkoJ3AnKS5pbnQoKSxcbiAgICAgIHRoaXMua2V5KCdxJykuaW50KCksXG4gICAgICB0aGlzLmtleSgnZycpLmludCgpXG4gICAgKS5vcHRpb25hbCgpXG4gIClcbn0pXG5cbnZhciBQcml2YXRlS2V5SW5mbyA9IGFzbjEuZGVmaW5lKCdQcml2YXRlS2V5SW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3ZlcnNpb24nKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnYWxnb3JpdGhtJykudXNlKEFsZ29yaXRobUlkZW50aWZpZXIpLFxuICAgIHRoaXMua2V5KCdzdWJqZWN0UHJpdmF0ZUtleScpLm9jdHN0cigpXG4gIClcbn0pXG5leHBvcnRzLlByaXZhdGVLZXkgPSBQcml2YXRlS2V5SW5mb1xudmFyIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvID0gYXNuMS5kZWZpbmUoJ0VuY3J5cHRlZFByaXZhdGVLZXlJbmZvJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnYWxnb3JpdGhtJykuc2VxKCkub2JqKFxuICAgICAgdGhpcy5rZXkoJ2lkJykub2JqaWQoKSxcbiAgICAgIHRoaXMua2V5KCdkZWNyeXB0Jykuc2VxKCkub2JqKFxuICAgICAgICB0aGlzLmtleSgna2RlJykuc2VxKCkub2JqKFxuICAgICAgICAgIHRoaXMua2V5KCdpZCcpLm9iamlkKCksXG4gICAgICAgICAgdGhpcy5rZXkoJ2tkZXBhcmFtcycpLnNlcSgpLm9iaihcbiAgICAgICAgICAgIHRoaXMua2V5KCdzYWx0Jykub2N0c3RyKCksXG4gICAgICAgICAgICB0aGlzLmtleSgnaXRlcnMnKS5pbnQoKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy5rZXkoJ2NpcGhlcicpLnNlcSgpLm9iaihcbiAgICAgICAgICB0aGlzLmtleSgnYWxnbycpLm9iamlkKCksXG4gICAgICAgICAgdGhpcy5rZXkoJ2l2Jykub2N0c3RyKClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQcml2YXRlS2V5Jykub2N0c3RyKClcbiAgKVxufSlcblxuZXhwb3J0cy5FbmNyeXB0ZWRQcml2YXRlS2V5ID0gRW5jcnlwdGVkUHJpdmF0ZUtleUluZm9cblxudmFyIERTQVByaXZhdGVLZXkgPSBhc24xLmRlZmluZSgnRFNBUHJpdmF0ZUtleScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3ZlcnNpb24nKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncCcpLmludCgpLFxuICAgIHRoaXMua2V5KCdxJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2cnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHViX2tleScpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcml2X2tleScpLmludCgpXG4gIClcbn0pXG5leHBvcnRzLkRTQVByaXZhdGVLZXkgPSBEU0FQcml2YXRlS2V5XG5cbmV4cG9ydHMuRFNBcGFyYW0gPSBhc24xLmRlZmluZSgnRFNBcGFyYW0nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaW50KClcbn0pXG5cbnZhciBFQ1ByaXZhdGVLZXkgPSBhc24xLmRlZmluZSgnRUNQcml2YXRlS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcml2YXRlS2V5Jykub2N0c3RyKCksXG4gICAgdGhpcy5rZXkoJ3BhcmFtZXRlcnMnKS5vcHRpb25hbCgpLmV4cGxpY2l0KDApLnVzZShFQ1BhcmFtZXRlcnMpLFxuICAgIHRoaXMua2V5KCdwdWJsaWNLZXknKS5vcHRpb25hbCgpLmV4cGxpY2l0KDEpLmJpdHN0cigpXG4gIClcbn0pXG5leHBvcnRzLkVDUHJpdmF0ZUtleSA9IEVDUHJpdmF0ZUtleVxuXG52YXIgRUNQYXJhbWV0ZXJzID0gYXNuMS5kZWZpbmUoJ0VDUGFyYW1ldGVycycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jaG9pY2Uoe1xuICAgIG5hbWVkQ3VydmU6IHRoaXMub2JqaWQoKVxuICB9KVxufSlcblxuZXhwb3J0cy5zaWduYXR1cmUgPSBhc24xLmRlZmluZSgnc2lnbmF0dXJlJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgncicpLmludCgpLFxuICAgIHRoaXMua2V5KCdzJykuaW50KClcbiAgKVxufSlcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvYXNuMS5qc1xuLy8gbW9kdWxlIGlkID0gMTk0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///194\n");

/***/ }),
/* 195 */
/***/ (function(module, exports, __webpack_require__) {

eval("var asn1 = __webpack_require__(19);\nvar inherits = __webpack_require__(0);\n\nvar api = exports;\n\napi.define = function define(name, body) {\n  return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n  this.name = name;\n  this.body = body;\n\n  this.decoders = {};\n  this.encoders = {};\n};\n\nEntity.prototype._createNamed = function createNamed(base) {\n  var named;\n  try {\n    named = __webpack_require__(196).runInThisContext(\n      '(function ' + this.name + '(entity) {\\n' +\n      '  this._initNamed(entity);\\n' +\n      '})'\n    );\n  } catch (e) {\n    named = function (entity) {\n      this._initNamed(entity);\n    };\n  }\n  inherits(named, base);\n  named.prototype._initNamed = function initnamed(entity) {\n    base.call(this, entity);\n  };\n\n  return new named(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n  enc = enc || 'der';\n  // Lazily create decoder\n  if (!this.decoders.hasOwnProperty(enc))\n    this.decoders[enc] = this._createNamed(asn1.decoders[enc]);\n  return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n  return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n  enc = enc || 'der';\n  // Lazily create encoder\n  if (!this.encoders.hasOwnProperty(enc))\n    this.encoders[enc] = this._createNamed(asn1.encoders[enc]);\n  return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n  return this._getEncoder(enc).encode(data, reporter);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYXBpLmpzPzkwOTAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFzbjEgPSByZXF1aXJlKCcuLi9hc24xJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgYXBpID0gZXhwb3J0cztcblxuYXBpLmRlZmluZSA9IGZ1bmN0aW9uIGRlZmluZShuYW1lLCBib2R5KSB7XG4gIHJldHVybiBuZXcgRW50aXR5KG5hbWUsIGJvZHkpO1xufTtcblxuZnVuY3Rpb24gRW50aXR5KG5hbWUsIGJvZHkpIHtcbiAgdGhpcy5uYW1lID0gbmFtZTtcbiAgdGhpcy5ib2R5ID0gYm9keTtcblxuICB0aGlzLmRlY29kZXJzID0ge307XG4gIHRoaXMuZW5jb2RlcnMgPSB7fTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuX2NyZWF0ZU5hbWVkID0gZnVuY3Rpb24gY3JlYXRlTmFtZWQoYmFzZSkge1xuICB2YXIgbmFtZWQ7XG4gIHRyeSB7XG4gICAgbmFtZWQgPSByZXF1aXJlKCd2bScpLnJ1bkluVGhpc0NvbnRleHQoXG4gICAgICAnKGZ1bmN0aW9uICcgKyB0aGlzLm5hbWUgKyAnKGVudGl0eSkge1xcbicgK1xuICAgICAgJyAgdGhpcy5faW5pdE5hbWVkKGVudGl0eSk7XFxuJyArXG4gICAgICAnfSknXG4gICAgKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIG5hbWVkID0gZnVuY3Rpb24gKGVudGl0eSkge1xuICAgICAgdGhpcy5faW5pdE5hbWVkKGVudGl0eSk7XG4gICAgfTtcbiAgfVxuICBpbmhlcml0cyhuYW1lZCwgYmFzZSk7XG4gIG5hbWVkLnByb3RvdHlwZS5faW5pdE5hbWVkID0gZnVuY3Rpb24gaW5pdG5hbWVkKGVudGl0eSkge1xuICAgIGJhc2UuY2FsbCh0aGlzLCBlbnRpdHkpO1xuICB9O1xuXG4gIHJldHVybiBuZXcgbmFtZWQodGhpcyk7XG59O1xuXG5FbnRpdHkucHJvdG90eXBlLl9nZXREZWNvZGVyID0gZnVuY3Rpb24gX2dldERlY29kZXIoZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAnZGVyJztcbiAgLy8gTGF6aWx5IGNyZWF0ZSBkZWNvZGVyXG4gIGlmICghdGhpcy5kZWNvZGVycy5oYXNPd25Qcm9wZXJ0eShlbmMpKVxuICAgIHRoaXMuZGVjb2RlcnNbZW5jXSA9IHRoaXMuX2NyZWF0ZU5hbWVkKGFzbjEuZGVjb2RlcnNbZW5jXSk7XG4gIHJldHVybiB0aGlzLmRlY29kZXJzW2VuY107XG59O1xuXG5FbnRpdHkucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShkYXRhLCBlbmMsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHRoaXMuX2dldERlY29kZXIoZW5jKS5kZWNvZGUoZGF0YSwgb3B0aW9ucyk7XG59O1xuXG5FbnRpdHkucHJvdG90eXBlLl9nZXRFbmNvZGVyID0gZnVuY3Rpb24gX2dldEVuY29kZXIoZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAnZGVyJztcbiAgLy8gTGF6aWx5IGNyZWF0ZSBlbmNvZGVyXG4gIGlmICghdGhpcy5lbmNvZGVycy5oYXNPd25Qcm9wZXJ0eShlbmMpKVxuICAgIHRoaXMuZW5jb2RlcnNbZW5jXSA9IHRoaXMuX2NyZWF0ZU5hbWVkKGFzbjEuZW5jb2RlcnNbZW5jXSk7XG4gIHJldHVybiB0aGlzLmVuY29kZXJzW2VuY107XG59O1xuXG5FbnRpdHkucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCBlbmMsIC8qIGludGVybmFsICovIHJlcG9ydGVyKSB7XG4gIHJldHVybiB0aGlzLl9nZXRFbmNvZGVyKGVuYykuZW5jb2RlKGRhdGEsIHJlcG9ydGVyKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2FwaS5qc1xuLy8gbW9kdWxlIGlkID0gMTk1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///195\n");

/***/ }),
/* 196 */
/***/ (function(module, exports, __webpack_require__) {

eval("var indexOf = __webpack_require__(197);\n\nvar Object_keys = function (obj) {\n    if (Object.keys) return Object.keys(obj)\n    else {\n        var res = [];\n        for (var key in obj) res.push(key)\n        return res;\n    }\n};\n\nvar forEach = function (xs, fn) {\n    if (xs.forEach) return xs.forEach(fn)\n    else for (var i = 0; i < xs.length; i++) {\n        fn(xs[i], i, xs);\n    }\n};\n\nvar defineProp = (function() {\n    try {\n        Object.defineProperty({}, '_', {});\n        return function(obj, name, value) {\n            Object.defineProperty(obj, name, {\n                writable: true,\n                enumerable: false,\n                configurable: true,\n                value: value\n            })\n        };\n    } catch(e) {\n        return function(obj, name, value) {\n            obj[name] = value;\n        };\n    }\n}());\n\nvar globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function',\n'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError',\n'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError',\n'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape',\n'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape'];\n\nfunction Context() {}\nContext.prototype = {};\n\nvar Script = exports.Script = function NodeScript (code) {\n    if (!(this instanceof Script)) return new Script(code);\n    this.code = code;\n};\n\nScript.prototype.runInContext = function (context) {\n    if (!(context instanceof Context)) {\n        throw new TypeError(\"needs a 'context' argument.\");\n    }\n    \n    var iframe = document.createElement('iframe');\n    if (!iframe.style) iframe.style = {};\n    iframe.style.display = 'none';\n    \n    document.body.appendChild(iframe);\n    \n    var win = iframe.contentWindow;\n    var wEval = win.eval, wExecScript = win.execScript;\n\n    if (!wEval && wExecScript) {\n        // win.eval() magically appears when this is called in IE:\n        wExecScript.call(win, 'null');\n        wEval = win.eval;\n    }\n    \n    forEach(Object_keys(context), function (key) {\n        win[key] = context[key];\n    });\n    forEach(globals, function (key) {\n        if (context[key]) {\n            win[key] = context[key];\n        }\n    });\n    \n    var winKeys = Object_keys(win);\n\n    var res = wEval.call(win, this.code);\n    \n    forEach(Object_keys(win), function (key) {\n        // Avoid copying circular objects like `top` and `window` by only\n        // updating existing context properties or new properties in the `win`\n        // that was only introduced after the eval.\n        if (key in context || indexOf(winKeys, key) === -1) {\n            context[key] = win[key];\n        }\n    });\n\n    forEach(globals, function (key) {\n        if (!(key in context)) {\n            defineProp(context, key, win[key]);\n        }\n    });\n    \n    document.body.removeChild(iframe);\n    \n    return res;\n};\n\nScript.prototype.runInThisContext = function () {\n    return eval(this.code); // maybe...\n};\n\nScript.prototype.runInNewContext = function (context) {\n    var ctx = Script.createContext(context);\n    var res = this.runInContext(ctx);\n\n    forEach(Object_keys(ctx), function (key) {\n        context[key] = ctx[key];\n    });\n\n    return res;\n};\n\nforEach(Object_keys(Script.prototype), function (name) {\n    exports[name] = Script[name] = function (code) {\n        var s = Script(code);\n        return s[name].apply(s, [].slice.call(arguments, 1));\n    };\n});\n\nexports.createScript = function (code) {\n    return exports.Script(code);\n};\n\nexports.createContext = Script.createContext = function (context) {\n    var copy = new Context();\n    if(typeof context === 'object') {\n        forEach(Object_keys(context), function (key) {\n            copy[key] = context[key];\n        });\n    }\n    return copy;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3ZtLWJyb3dzZXJpZnkvaW5kZXguanM/Zjk2ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaW5kZXhPZiA9IHJlcXVpcmUoJ2luZGV4b2YnKTtcblxudmFyIE9iamVjdF9rZXlzID0gZnVuY3Rpb24gKG9iaikge1xuICAgIGlmIChPYmplY3Qua2V5cykgcmV0dXJuIE9iamVjdC5rZXlzKG9iailcbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHJlcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSByZXMucHVzaChrZXkpXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxufTtcblxudmFyIGZvckVhY2ggPSBmdW5jdGlvbiAoeHMsIGZuKSB7XG4gICAgaWYgKHhzLmZvckVhY2gpIHJldHVybiB4cy5mb3JFYWNoKGZuKVxuICAgIGVsc2UgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmbih4c1tpXSwgaSwgeHMpO1xuICAgIH1cbn07XG5cbnZhciBkZWZpbmVQcm9wID0gKGZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ18nLCB7fSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihvYmosIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBuYW1lLCB7XG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iaiwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgICAgIG9ialtuYW1lXSA9IHZhbHVlO1xuICAgICAgICB9O1xuICAgIH1cbn0oKSk7XG5cbnZhciBnbG9iYWxzID0gWydBcnJheScsICdCb29sZWFuJywgJ0RhdGUnLCAnRXJyb3InLCAnRXZhbEVycm9yJywgJ0Z1bmN0aW9uJyxcbidJbmZpbml0eScsICdKU09OJywgJ01hdGgnLCAnTmFOJywgJ051bWJlcicsICdPYmplY3QnLCAnUmFuZ2VFcnJvcicsXG4nUmVmZXJlbmNlRXJyb3InLCAnUmVnRXhwJywgJ1N0cmluZycsICdTeW50YXhFcnJvcicsICdUeXBlRXJyb3InLCAnVVJJRXJyb3InLFxuJ2RlY29kZVVSSScsICdkZWNvZGVVUklDb21wb25lbnQnLCAnZW5jb2RlVVJJJywgJ2VuY29kZVVSSUNvbXBvbmVudCcsICdlc2NhcGUnLFxuJ2V2YWwnLCAnaXNGaW5pdGUnLCAnaXNOYU4nLCAncGFyc2VGbG9hdCcsICdwYXJzZUludCcsICd1bmRlZmluZWQnLCAndW5lc2NhcGUnXTtcblxuZnVuY3Rpb24gQ29udGV4dCgpIHt9XG5Db250ZXh0LnByb3RvdHlwZSA9IHt9O1xuXG52YXIgU2NyaXB0ID0gZXhwb3J0cy5TY3JpcHQgPSBmdW5jdGlvbiBOb2RlU2NyaXB0IChjb2RlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNjcmlwdCkpIHJldHVybiBuZXcgU2NyaXB0KGNvZGUpO1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG59O1xuXG5TY3JpcHQucHJvdG90eXBlLnJ1bkluQ29udGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgaWYgKCEoY29udGV4dCBpbnN0YW5jZW9mIENvbnRleHQpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJuZWVkcyBhICdjb250ZXh0JyBhcmd1bWVudC5cIik7XG4gICAgfVxuICAgIFxuICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgICBpZiAoIWlmcmFtZS5zdHlsZSkgaWZyYW1lLnN0eWxlID0ge307XG4gICAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICAgIFxuICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdztcbiAgICB2YXIgd0V2YWwgPSB3aW4uZXZhbCwgd0V4ZWNTY3JpcHQgPSB3aW4uZXhlY1NjcmlwdDtcblxuICAgIGlmICghd0V2YWwgJiYgd0V4ZWNTY3JpcHQpIHtcbiAgICAgICAgLy8gd2luLmV2YWwoKSBtYWdpY2FsbHkgYXBwZWFycyB3aGVuIHRoaXMgaXMgY2FsbGVkIGluIElFOlxuICAgICAgICB3RXhlY1NjcmlwdC5jYWxsKHdpbiwgJ251bGwnKTtcbiAgICAgICAgd0V2YWwgPSB3aW4uZXZhbDtcbiAgICB9XG4gICAgXG4gICAgZm9yRWFjaChPYmplY3Rfa2V5cyhjb250ZXh0KSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB3aW5ba2V5XSA9IGNvbnRleHRba2V5XTtcbiAgICB9KTtcbiAgICBmb3JFYWNoKGdsb2JhbHMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKGNvbnRleHRba2V5XSkge1xuICAgICAgICAgICAgd2luW2tleV0gPSBjb250ZXh0W2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICB2YXIgd2luS2V5cyA9IE9iamVjdF9rZXlzKHdpbik7XG5cbiAgICB2YXIgcmVzID0gd0V2YWwuY2FsbCh3aW4sIHRoaXMuY29kZSk7XG4gICAgXG4gICAgZm9yRWFjaChPYmplY3Rfa2V5cyh3aW4pLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIC8vIEF2b2lkIGNvcHlpbmcgY2lyY3VsYXIgb2JqZWN0cyBsaWtlIGB0b3BgIGFuZCBgd2luZG93YCBieSBvbmx5XG4gICAgICAgIC8vIHVwZGF0aW5nIGV4aXN0aW5nIGNvbnRleHQgcHJvcGVydGllcyBvciBuZXcgcHJvcGVydGllcyBpbiB0aGUgYHdpbmBcbiAgICAgICAgLy8gdGhhdCB3YXMgb25seSBpbnRyb2R1Y2VkIGFmdGVyIHRoZSBldmFsLlxuICAgICAgICBpZiAoa2V5IGluIGNvbnRleHQgfHwgaW5kZXhPZih3aW5LZXlzLCBrZXkpID09PSAtMSkge1xuICAgICAgICAgICAgY29udGV4dFtrZXldID0gd2luW2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGZvckVhY2goZ2xvYmFscywgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoIShrZXkgaW4gY29udGV4dCkpIHtcbiAgICAgICAgICAgIGRlZmluZVByb3AoY29udGV4dCwga2V5LCB3aW5ba2V5XSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gICAgXG4gICAgcmV0dXJuIHJlcztcbn07XG5cblNjcmlwdC5wcm90b3R5cGUucnVuSW5UaGlzQ29udGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZXZhbCh0aGlzLmNvZGUpOyAvLyBtYXliZS4uLlxufTtcblxuU2NyaXB0LnByb3RvdHlwZS5ydW5Jbk5ld0NvbnRleHQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBjdHggPSBTY3JpcHQuY3JlYXRlQ29udGV4dChjb250ZXh0KTtcbiAgICB2YXIgcmVzID0gdGhpcy5ydW5JbkNvbnRleHQoY3R4KTtcblxuICAgIGZvckVhY2goT2JqZWN0X2tleXMoY3R4KSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBjb250ZXh0W2tleV0gPSBjdHhba2V5XTtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXM7XG59O1xuXG5mb3JFYWNoKE9iamVjdF9rZXlzKFNjcmlwdC5wcm90b3R5cGUpLCBmdW5jdGlvbiAobmFtZSkge1xuICAgIGV4cG9ydHNbbmFtZV0gPSBTY3JpcHRbbmFtZV0gPSBmdW5jdGlvbiAoY29kZSkge1xuICAgICAgICB2YXIgcyA9IFNjcmlwdChjb2RlKTtcbiAgICAgICAgcmV0dXJuIHNbbmFtZV0uYXBwbHkocywgW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgICB9O1xufSk7XG5cbmV4cG9ydHMuY3JlYXRlU2NyaXB0ID0gZnVuY3Rpb24gKGNvZGUpIHtcbiAgICByZXR1cm4gZXhwb3J0cy5TY3JpcHQoY29kZSk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZUNvbnRleHQgPSBTY3JpcHQuY3JlYXRlQ29udGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgdmFyIGNvcHkgPSBuZXcgQ29udGV4dCgpO1xuICAgIGlmKHR5cGVvZiBjb250ZXh0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmb3JFYWNoKE9iamVjdF9rZXlzKGNvbnRleHQpLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBjb3B5W2tleV0gPSBjb250ZXh0W2tleV07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29weTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy92bS1icm93c2VyaWZ5L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxOTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///196\n");

/***/ }),
/* 197 */
/***/ (function(module, exports) {

eval("\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n  if (indexOf) return arr.indexOf(obj);\n  for (var i = 0; i < arr.length; ++i) {\n    if (arr[i] === obj) return i;\n  }\n  return -1;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2luZGV4b2YvaW5kZXguanM/MGFjYiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbnZhciBpbmRleE9mID0gW10uaW5kZXhPZjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihhcnIsIG9iail7XG4gIGlmIChpbmRleE9mKSByZXR1cm4gYXJyLmluZGV4T2Yob2JqKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoYXJyW2ldID09PSBvYmopIHJldHVybiBpO1xuICB9XG4gIHJldHVybiAtMTtcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvaW5kZXhvZi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTk3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///197\n");

/***/ }),
/* 198 */
/***/ (function(module, exports, __webpack_require__) {

eval("var inherits = __webpack_require__(0);\n\nfunction Reporter(options) {\n  this._reporterState = {\n    obj: null,\n    path: [],\n    options: options || {},\n    errors: []\n  };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n  return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n  var state = this._reporterState;\n\n  return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n  var state = this._reporterState;\n\n  state.obj = data.obj;\n  state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n  return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n  var state = this._reporterState;\n\n  state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n  var state = this._reporterState;\n\n  this.exitKey(index);\n  if (state.obj !== null)\n    state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n  return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n  var state = this._reporterState;\n\n  var prev = state.obj;\n  state.obj = {};\n  return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n  var state = this._reporterState;\n\n  var now = state.obj;\n  state.obj = prev;\n  return now;\n};\n\nReporter.prototype.error = function error(msg) {\n  var err;\n  var state = this._reporterState;\n\n  var inherited = msg instanceof ReporterError;\n  if (inherited) {\n    err = msg;\n  } else {\n    err = new ReporterError(state.path.map(function(elem) {\n      return '[' + JSON.stringify(elem) + ']';\n    }).join(''), msg.message || msg, msg.stack);\n  }\n\n  if (!state.options.partial)\n    throw err;\n\n  if (!inherited)\n    state.errors.push(err);\n\n  return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n  var state = this._reporterState;\n  if (!state.options.partial)\n    return result;\n\n  return {\n    result: this.isError(result) ? null : result,\n    errors: state.errors\n  };\n};\n\nfunction ReporterError(path, msg) {\n  this.path = path;\n  this.rethrow(msg);\n};\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n  this.message = msg + ' at: ' + (this.path || '(shallow)');\n  if (Error.captureStackTrace)\n    Error.captureStackTrace(this, ReporterError);\n\n  if (!this.stack) {\n    try {\n      // IE only adds stack when thrown\n      throw new Error(this.message);\n    } catch (e) {\n      this.stack = e.stack;\n    }\n  }\n  return this;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9yZXBvcnRlci5qcz9kN2EzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmZ1bmN0aW9uIFJlcG9ydGVyKG9wdGlvbnMpIHtcbiAgdGhpcy5fcmVwb3J0ZXJTdGF0ZSA9IHtcbiAgICBvYmo6IG51bGwsXG4gICAgcGF0aDogW10sXG4gICAgb3B0aW9uczogb3B0aW9ucyB8fCB7fSxcbiAgICBlcnJvcnM6IFtdXG4gIH07XG59XG5leHBvcnRzLlJlcG9ydGVyID0gUmVwb3J0ZXI7XG5cblJlcG9ydGVyLnByb3RvdHlwZS5pc0Vycm9yID0gZnVuY3Rpb24gaXNFcnJvcihvYmopIHtcbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIFJlcG9ydGVyRXJyb3I7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uIHNhdmUoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgcmV0dXJuIHsgb2JqOiBzdGF0ZS5vYmosIHBhdGhMZW46IHN0YXRlLnBhdGgubGVuZ3RoIH07XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUucmVzdG9yZSA9IGZ1bmN0aW9uIHJlc3RvcmUoZGF0YSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHN0YXRlLm9iaiA9IGRhdGEub2JqO1xuICBzdGF0ZS5wYXRoID0gc3RhdGUucGF0aC5zbGljZSgwLCBkYXRhLnBhdGhMZW4pO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmVudGVyS2V5ID0gZnVuY3Rpb24gZW50ZXJLZXkoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9yZXBvcnRlclN0YXRlLnBhdGgucHVzaChrZXkpO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmV4aXRLZXkgPSBmdW5jdGlvbiBleGl0S2V5KGluZGV4KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgc3RhdGUucGF0aCA9IHN0YXRlLnBhdGguc2xpY2UoMCwgaW5kZXggLSAxKTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5sZWF2ZUtleSA9IGZ1bmN0aW9uIGxlYXZlS2V5KGluZGV4LCBrZXksIHZhbHVlKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgdGhpcy5leGl0S2V5KGluZGV4KTtcbiAgaWYgKHN0YXRlLm9iaiAhPT0gbnVsbClcbiAgICBzdGF0ZS5vYmpba2V5XSA9IHZhbHVlO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLnBhdGggPSBmdW5jdGlvbiBwYXRoKCkge1xuICByZXR1cm4gdGhpcy5fcmVwb3J0ZXJTdGF0ZS5wYXRoLmpvaW4oJy8nKTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5lbnRlck9iamVjdCA9IGZ1bmN0aW9uIGVudGVyT2JqZWN0KCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHZhciBwcmV2ID0gc3RhdGUub2JqO1xuICBzdGF0ZS5vYmogPSB7fTtcbiAgcmV0dXJuIHByZXY7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUubGVhdmVPYmplY3QgPSBmdW5jdGlvbiBsZWF2ZU9iamVjdChwcmV2KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgdmFyIG5vdyA9IHN0YXRlLm9iajtcbiAgc3RhdGUub2JqID0gcHJldjtcbiAgcmV0dXJuIG5vdztcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uIGVycm9yKG1zZykge1xuICB2YXIgZXJyO1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHZhciBpbmhlcml0ZWQgPSBtc2cgaW5zdGFuY2VvZiBSZXBvcnRlckVycm9yO1xuICBpZiAoaW5oZXJpdGVkKSB7XG4gICAgZXJyID0gbXNnO1xuICB9IGVsc2Uge1xuICAgIGVyciA9IG5ldyBSZXBvcnRlckVycm9yKHN0YXRlLnBhdGgubWFwKGZ1bmN0aW9uKGVsZW0pIHtcbiAgICAgIHJldHVybiAnWycgKyBKU09OLnN0cmluZ2lmeShlbGVtKSArICddJztcbiAgICB9KS5qb2luKCcnKSwgbXNnLm1lc3NhZ2UgfHwgbXNnLCBtc2cuc3RhY2spO1xuICB9XG5cbiAgaWYgKCFzdGF0ZS5vcHRpb25zLnBhcnRpYWwpXG4gICAgdGhyb3cgZXJyO1xuXG4gIGlmICghaW5oZXJpdGVkKVxuICAgIHN0YXRlLmVycm9ycy5wdXNoKGVycik7XG5cbiAgcmV0dXJuIGVycjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS53cmFwUmVzdWx0ID0gZnVuY3Rpb24gd3JhcFJlc3VsdChyZXN1bHQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcbiAgaWYgKCFzdGF0ZS5vcHRpb25zLnBhcnRpYWwpXG4gICAgcmV0dXJuIHJlc3VsdDtcblxuICByZXR1cm4ge1xuICAgIHJlc3VsdDogdGhpcy5pc0Vycm9yKHJlc3VsdCkgPyBudWxsIDogcmVzdWx0LFxuICAgIGVycm9yczogc3RhdGUuZXJyb3JzXG4gIH07XG59O1xuXG5mdW5jdGlvbiBSZXBvcnRlckVycm9yKHBhdGgsIG1zZykge1xuICB0aGlzLnBhdGggPSBwYXRoO1xuICB0aGlzLnJldGhyb3cobXNnKTtcbn07XG5pbmhlcml0cyhSZXBvcnRlckVycm9yLCBFcnJvcik7XG5cblJlcG9ydGVyRXJyb3IucHJvdG90eXBlLnJldGhyb3cgPSBmdW5jdGlvbiByZXRocm93KG1zZykge1xuICB0aGlzLm1lc3NhZ2UgPSBtc2cgKyAnIGF0OiAnICsgKHRoaXMucGF0aCB8fCAnKHNoYWxsb3cpJyk7XG4gIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBSZXBvcnRlckVycm9yKTtcblxuICBpZiAoIXRoaXMuc3RhY2spIHtcbiAgICB0cnkge1xuICAgICAgLy8gSUUgb25seSBhZGRzIHN0YWNrIHdoZW4gdGhyb3duXG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5tZXNzYWdlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLnN0YWNrID0gZS5zdGFjaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL3JlcG9ydGVyLmpzXG4vLyBtb2R1bGUgaWQgPSAxOThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///198\n");

/***/ }),
/* 199 */
/***/ (function(module, exports, __webpack_require__) {

eval("var Reporter = __webpack_require__(20).Reporter;\nvar EncoderBuffer = __webpack_require__(20).EncoderBuffer;\nvar DecoderBuffer = __webpack_require__(20).DecoderBuffer;\nvar assert = __webpack_require__(7);\n\n// Supported tags\nvar tags = [\n  'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n  'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n  'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n  'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nvar methods = [\n  'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n  'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nvar overrided = [\n  '_peekTag', '_decodeTag', '_use',\n  '_decodeStr', '_decodeObjid', '_decodeTime',\n  '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n  '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n  '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent) {\n  var state = {};\n  this._baseState = state;\n\n  state.enc = enc;\n\n  state.parent = parent || null;\n  state.children = null;\n\n  // State\n  state.tag = null;\n  state.args = null;\n  state.reverseArgs = null;\n  state.choice = null;\n  state.optional = false;\n  state.any = false;\n  state.obj = false;\n  state.use = null;\n  state.useDecoder = null;\n  state.key = null;\n  state['default'] = null;\n  state.explicit = null;\n  state.implicit = null;\n  state.contains = null;\n\n  // Should create new instance on each method\n  if (!state.parent) {\n    state.children = [];\n    this._wrap();\n  }\n}\nmodule.exports = Node;\n\nvar stateProps = [\n  'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n  'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n  'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n  var state = this._baseState;\n  var cstate = {};\n  stateProps.forEach(function(prop) {\n    cstate[prop] = state[prop];\n  });\n  var res = new this.constructor(cstate.parent);\n  res._baseState = cstate;\n  return res;\n};\n\nNode.prototype._wrap = function wrap() {\n  var state = this._baseState;\n  methods.forEach(function(method) {\n    this[method] = function _wrappedMethod() {\n      var clone = new this.constructor(this);\n      state.children.push(clone);\n      return clone[method].apply(clone, arguments);\n    };\n  }, this);\n};\n\nNode.prototype._init = function init(body) {\n  var state = this._baseState;\n\n  assert(state.parent === null);\n  body.call(this);\n\n  // Filter children\n  state.children = state.children.filter(function(child) {\n    return child._baseState.parent === this;\n  }, this);\n  assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n  var state = this._baseState;\n\n  // Filter children and args\n  var children = args.filter(function(arg) {\n    return arg instanceof this.constructor;\n  }, this);\n  args = args.filter(function(arg) {\n    return !(arg instanceof this.constructor);\n  }, this);\n\n  if (children.length !== 0) {\n    assert(state.children === null);\n    state.children = children;\n\n    // Replace parent to maintain backward link\n    children.forEach(function(child) {\n      child._baseState.parent = this;\n    }, this);\n  }\n  if (args.length !== 0) {\n    assert(state.args === null);\n    state.args = args;\n    state.reverseArgs = args.map(function(arg) {\n      if (typeof arg !== 'object' || arg.constructor !== Object)\n        return arg;\n\n      var res = {};\n      Object.keys(arg).forEach(function(key) {\n        if (key == (key | 0))\n          key |= 0;\n        var value = arg[key];\n        res[value] = key;\n      });\n      return res;\n    });\n  }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n  Node.prototype[method] = function _overrided() {\n    var state = this._baseState;\n    throw new Error(method + ' not implemented for encoding: ' + state.enc);\n  };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n  Node.prototype[tag] = function _tagMethod() {\n    var state = this._baseState;\n    var args = Array.prototype.slice.call(arguments);\n\n    assert(state.tag === null);\n    state.tag = tag;\n\n    this._useArgs(args);\n\n    return this;\n  };\n});\n\nNode.prototype.use = function use(item) {\n  assert(item);\n  var state = this._baseState;\n\n  assert(state.use === null);\n  state.use = item;\n\n  return this;\n};\n\nNode.prototype.optional = function optional() {\n  var state = this._baseState;\n\n  state.optional = true;\n\n  return this;\n};\n\nNode.prototype.def = function def(val) {\n  var state = this._baseState;\n\n  assert(state['default'] === null);\n  state['default'] = val;\n  state.optional = true;\n\n  return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n  var state = this._baseState;\n\n  assert(state.explicit === null && state.implicit === null);\n  state.explicit = num;\n\n  return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n  var state = this._baseState;\n\n  assert(state.explicit === null && state.implicit === null);\n  state.implicit = num;\n\n  return this;\n};\n\nNode.prototype.obj = function obj() {\n  var state = this._baseState;\n  var args = Array.prototype.slice.call(arguments);\n\n  state.obj = true;\n\n  if (args.length !== 0)\n    this._useArgs(args);\n\n  return this;\n};\n\nNode.prototype.key = function key(newKey) {\n  var state = this._baseState;\n\n  assert(state.key === null);\n  state.key = newKey;\n\n  return this;\n};\n\nNode.prototype.any = function any() {\n  var state = this._baseState;\n\n  state.any = true;\n\n  return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n  var state = this._baseState;\n\n  assert(state.choice === null);\n  state.choice = obj;\n  this._useArgs(Object.keys(obj).map(function(key) {\n    return obj[key];\n  }));\n\n  return this;\n};\n\nNode.prototype.contains = function contains(item) {\n  var state = this._baseState;\n\n  assert(state.use === null);\n  state.contains = item;\n\n  return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n  var state = this._baseState;\n\n  // Decode root node\n  if (state.parent === null)\n    return input.wrapResult(state.children[0]._decode(input, options));\n\n  var result = state['default'];\n  var present = true;\n\n  var prevKey = null;\n  if (state.key !== null)\n    prevKey = input.enterKey(state.key);\n\n  // Check if tag is there\n  if (state.optional) {\n    var tag = null;\n    if (state.explicit !== null)\n      tag = state.explicit;\n    else if (state.implicit !== null)\n      tag = state.implicit;\n    else if (state.tag !== null)\n      tag = state.tag;\n\n    if (tag === null && !state.any) {\n      // Trial and Error\n      var save = input.save();\n      try {\n        if (state.choice === null)\n          this._decodeGeneric(state.tag, input, options);\n        else\n          this._decodeChoice(input, options);\n        present = true;\n      } catch (e) {\n        present = false;\n      }\n      input.restore(save);\n    } else {\n      present = this._peekTag(input, tag, state.any);\n\n      if (input.isError(present))\n        return present;\n    }\n  }\n\n  // Push object on stack\n  var prevObj;\n  if (state.obj && present)\n    prevObj = input.enterObject();\n\n  if (present) {\n    // Unwrap explicit values\n    if (state.explicit !== null) {\n      var explicit = this._decodeTag(input, state.explicit);\n      if (input.isError(explicit))\n        return explicit;\n      input = explicit;\n    }\n\n    var start = input.offset;\n\n    // Unwrap implicit and normal values\n    if (state.use === null && state.choice === null) {\n      if (state.any)\n        var save = input.save();\n      var body = this._decodeTag(\n        input,\n        state.implicit !== null ? state.implicit : state.tag,\n        state.any\n      );\n      if (input.isError(body))\n        return body;\n\n      if (state.any)\n        result = input.raw(save);\n      else\n        input = body;\n    }\n\n    if (options && options.track && state.tag !== null)\n      options.track(input.path(), start, input.length, 'tagged');\n\n    if (options && options.track && state.tag !== null)\n      options.track(input.path(), input.offset, input.length, 'content');\n\n    // Select proper method for tag\n    if (state.any)\n      result = result;\n    else if (state.choice === null)\n      result = this._decodeGeneric(state.tag, input, options);\n    else\n      result = this._decodeChoice(input, options);\n\n    if (input.isError(result))\n      return result;\n\n    // Decode children\n    if (!state.any && state.choice === null && state.children !== null) {\n      state.children.forEach(function decodeChildren(child) {\n        // NOTE: We are ignoring errors here, to let parser continue with other\n        // parts of encoded data\n        child._decode(input, options);\n      });\n    }\n\n    // Decode contained/encoded by schema, only in bit or octet strings\n    if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n      var data = new DecoderBuffer(result);\n      result = this._getUse(state.contains, input._reporterState.obj)\n          ._decode(data, options);\n    }\n  }\n\n  // Pop object\n  if (state.obj && present)\n    result = input.leaveObject(prevObj);\n\n  // Set key\n  if (state.key !== null && (result !== null || present === true))\n    input.leaveKey(prevKey, state.key, result);\n  else if (prevKey !== null)\n    input.exitKey(prevKey);\n\n  return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n  var state = this._baseState;\n\n  if (tag === 'seq' || tag === 'set')\n    return null;\n  if (tag === 'seqof' || tag === 'setof')\n    return this._decodeList(input, tag, state.args[0], options);\n  else if (/str$/.test(tag))\n    return this._decodeStr(input, tag, options);\n  else if (tag === 'objid' && state.args)\n    return this._decodeObjid(input, state.args[0], state.args[1], options);\n  else if (tag === 'objid')\n    return this._decodeObjid(input, null, null, options);\n  else if (tag === 'gentime' || tag === 'utctime')\n    return this._decodeTime(input, tag, options);\n  else if (tag === 'null_')\n    return this._decodeNull(input, options);\n  else if (tag === 'bool')\n    return this._decodeBool(input, options);\n  else if (tag === 'objDesc')\n    return this._decodeStr(input, tag, options);\n  else if (tag === 'int' || tag === 'enum')\n    return this._decodeInt(input, state.args && state.args[0], options);\n\n  if (state.use !== null) {\n    return this._getUse(state.use, input._reporterState.obj)\n        ._decode(input, options);\n  } else {\n    return input.error('unknown tag: ' + tag);\n  }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n  var state = this._baseState;\n  // Create altered use decoder if implicit is set\n  state.useDecoder = this._use(entity, obj);\n  assert(state.useDecoder._baseState.parent === null);\n  state.useDecoder = state.useDecoder._baseState.children[0];\n  if (state.implicit !== state.useDecoder._baseState.implicit) {\n    state.useDecoder = state.useDecoder.clone();\n    state.useDecoder._baseState.implicit = state.implicit;\n  }\n  return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n  var state = this._baseState;\n  var result = null;\n  var match = false;\n\n  Object.keys(state.choice).some(function(key) {\n    var save = input.save();\n    var node = state.choice[key];\n    try {\n      var value = node._decode(input, options);\n      if (input.isError(value))\n        return false;\n\n      result = { type: key, value: value };\n      match = true;\n    } catch (e) {\n      input.restore(save);\n      return false;\n    }\n    return true;\n  }, this);\n\n  if (!match)\n    return input.error('Choice not matched');\n\n  return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n  return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n  var state = this._baseState;\n  if (state['default'] !== null && state['default'] === data)\n    return;\n\n  var result = this._encodeValue(data, reporter, parent);\n  if (result === undefined)\n    return;\n\n  if (this._skipDefault(result, reporter, parent))\n    return;\n\n  return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n  var state = this._baseState;\n\n  // Decode root node\n  if (state.parent === null)\n    return state.children[0]._encode(data, reporter || new Reporter());\n\n  var result = null;\n\n  // Set reporter to share it with a child class\n  this.reporter = reporter;\n\n  // Check if data is there\n  if (state.optional && data === undefined) {\n    if (state['default'] !== null)\n      data = state['default']\n    else\n      return;\n  }\n\n  // Encode children first\n  var content = null;\n  var primitive = false;\n  if (state.any) {\n    // Anything that was given is translated to buffer\n    result = this._createEncoderBuffer(data);\n  } else if (state.choice) {\n    result = this._encodeChoice(data, reporter);\n  } else if (state.contains) {\n    content = this._getUse(state.contains, parent)._encode(data, reporter);\n    primitive = true;\n  } else if (state.children) {\n    content = state.children.map(function(child) {\n      if (child._baseState.tag === 'null_')\n        return child._encode(null, reporter, data);\n\n      if (child._baseState.key === null)\n        return reporter.error('Child should have a key');\n      var prevKey = reporter.enterKey(child._baseState.key);\n\n      if (typeof data !== 'object')\n        return reporter.error('Child expected, but input is not object');\n\n      var res = child._encode(data[child._baseState.key], reporter, data);\n      reporter.leaveKey(prevKey);\n\n      return res;\n    }, this).filter(function(child) {\n      return child;\n    });\n    content = this._createEncoderBuffer(content);\n  } else {\n    if (state.tag === 'seqof' || state.tag === 'setof') {\n      // TODO(indutny): this should be thrown on DSL level\n      if (!(state.args && state.args.length === 1))\n        return reporter.error('Too many args for : ' + state.tag);\n\n      if (!Array.isArray(data))\n        return reporter.error('seqof/setof, but data is not Array');\n\n      var child = this.clone();\n      child._baseState.implicit = null;\n      content = this._createEncoderBuffer(data.map(function(item) {\n        var state = this._baseState;\n\n        return this._getUse(state.args[0], data)._encode(item, reporter);\n      }, child));\n    } else if (state.use !== null) {\n      result = this._getUse(state.use, parent)._encode(data, reporter);\n    } else {\n      content = this._encodePrimitive(state.tag, data);\n      primitive = true;\n    }\n  }\n\n  // Encode data itself\n  var result;\n  if (!state.any && state.choice === null) {\n    var tag = state.implicit !== null ? state.implicit : state.tag;\n    var cls = state.implicit === null ? 'universal' : 'context';\n\n    if (tag === null) {\n      if (state.use === null)\n        reporter.error('Tag could be omitted only for .use()');\n    } else {\n      if (state.use === null)\n        result = this._encodeComposite(tag, primitive, cls, content);\n    }\n  }\n\n  // Wrap in explicit\n  if (state.explicit !== null)\n    result = this._encodeComposite(state.explicit, false, 'context', result);\n\n  return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n  var state = this._baseState;\n\n  var node = state.choice[data.type];\n  if (!node) {\n    assert(\n        false,\n        data.type + ' not found in ' +\n            JSON.stringify(Object.keys(state.choice)));\n  }\n  return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n  var state = this._baseState;\n\n  if (/str$/.test(tag))\n    return this._encodeStr(data, tag);\n  else if (tag === 'objid' && state.args)\n    return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n  else if (tag === 'objid')\n    return this._encodeObjid(data, null, null);\n  else if (tag === 'gentime' || tag === 'utctime')\n    return this._encodeTime(data, tag);\n  else if (tag === 'null_')\n    return this._encodeNull();\n  else if (tag === 'int' || tag === 'enum')\n    return this._encodeInt(data, state.args && state.reverseArgs[0]);\n  else if (tag === 'bool')\n    return this._encodeBool(data);\n  else if (tag === 'objDesc')\n    return this._encodeStr(data, tag);\n  else\n    throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n  return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n  return /^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(str);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9ub2RlLmpzP2JlZTgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFJlcG9ydGVyID0gcmVxdWlyZSgnLi4vYmFzZScpLlJlcG9ydGVyO1xudmFyIEVuY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuRW5jb2RlckJ1ZmZlcjtcbnZhciBEZWNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi4vYmFzZScpLkRlY29kZXJCdWZmZXI7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG4vLyBTdXBwb3J0ZWQgdGFnc1xudmFyIHRhZ3MgPSBbXG4gICdzZXEnLCAnc2Vxb2YnLCAnc2V0JywgJ3NldG9mJywgJ29iamlkJywgJ2Jvb2wnLFxuICAnZ2VudGltZScsICd1dGN0aW1lJywgJ251bGxfJywgJ2VudW0nLCAnaW50JywgJ29iakRlc2MnLFxuICAnYml0c3RyJywgJ2JtcHN0cicsICdjaGFyc3RyJywgJ2dlbnN0cicsICdncmFwaHN0cicsICdpYTVzdHInLCAnaXNvNjQ2c3RyJyxcbiAgJ251bXN0cicsICdvY3RzdHInLCAncHJpbnRzdHInLCAndDYxc3RyJywgJ3VuaXN0cicsICd1dGY4c3RyJywgJ3ZpZGVvc3RyJ1xuXTtcblxuLy8gUHVibGljIG1ldGhvZHMgbGlzdFxudmFyIG1ldGhvZHMgPSBbXG4gICdrZXknLCAnb2JqJywgJ3VzZScsICdvcHRpb25hbCcsICdleHBsaWNpdCcsICdpbXBsaWNpdCcsICdkZWYnLCAnY2hvaWNlJyxcbiAgJ2FueScsICdjb250YWlucydcbl0uY29uY2F0KHRhZ3MpO1xuXG4vLyBPdmVycmlkZWQgbWV0aG9kcyBsaXN0XG52YXIgb3ZlcnJpZGVkID0gW1xuICAnX3BlZWtUYWcnLCAnX2RlY29kZVRhZycsICdfdXNlJyxcbiAgJ19kZWNvZGVTdHInLCAnX2RlY29kZU9iamlkJywgJ19kZWNvZGVUaW1lJyxcbiAgJ19kZWNvZGVOdWxsJywgJ19kZWNvZGVJbnQnLCAnX2RlY29kZUJvb2wnLCAnX2RlY29kZUxpc3QnLFxuXG4gICdfZW5jb2RlQ29tcG9zaXRlJywgJ19lbmNvZGVTdHInLCAnX2VuY29kZU9iamlkJywgJ19lbmNvZGVUaW1lJyxcbiAgJ19lbmNvZGVOdWxsJywgJ19lbmNvZGVJbnQnLCAnX2VuY29kZUJvb2wnXG5dO1xuXG5mdW5jdGlvbiBOb2RlKGVuYywgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHt9O1xuICB0aGlzLl9iYXNlU3RhdGUgPSBzdGF0ZTtcblxuICBzdGF0ZS5lbmMgPSBlbmM7XG5cbiAgc3RhdGUucGFyZW50ID0gcGFyZW50IHx8IG51bGw7XG4gIHN0YXRlLmNoaWxkcmVuID0gbnVsbDtcblxuICAvLyBTdGF0ZVxuICBzdGF0ZS50YWcgPSBudWxsO1xuICBzdGF0ZS5hcmdzID0gbnVsbDtcbiAgc3RhdGUucmV2ZXJzZUFyZ3MgPSBudWxsO1xuICBzdGF0ZS5jaG9pY2UgPSBudWxsO1xuICBzdGF0ZS5vcHRpb25hbCA9IGZhbHNlO1xuICBzdGF0ZS5hbnkgPSBmYWxzZTtcbiAgc3RhdGUub2JqID0gZmFsc2U7XG4gIHN0YXRlLnVzZSA9IG51bGw7XG4gIHN0YXRlLnVzZURlY29kZXIgPSBudWxsO1xuICBzdGF0ZS5rZXkgPSBudWxsO1xuICBzdGF0ZVsnZGVmYXVsdCddID0gbnVsbDtcbiAgc3RhdGUuZXhwbGljaXQgPSBudWxsO1xuICBzdGF0ZS5pbXBsaWNpdCA9IG51bGw7XG4gIHN0YXRlLmNvbnRhaW5zID0gbnVsbDtcblxuICAvLyBTaG91bGQgY3JlYXRlIG5ldyBpbnN0YW5jZSBvbiBlYWNoIG1ldGhvZFxuICBpZiAoIXN0YXRlLnBhcmVudCkge1xuICAgIHN0YXRlLmNoaWxkcmVuID0gW107XG4gICAgdGhpcy5fd3JhcCgpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IE5vZGU7XG5cbnZhciBzdGF0ZVByb3BzID0gW1xuICAnZW5jJywgJ3BhcmVudCcsICdjaGlsZHJlbicsICd0YWcnLCAnYXJncycsICdyZXZlcnNlQXJncycsICdjaG9pY2UnLFxuICAnb3B0aW9uYWwnLCAnYW55JywgJ29iaicsICd1c2UnLCAnYWx0ZXJlZFVzZScsICdrZXknLCAnZGVmYXVsdCcsICdleHBsaWNpdCcsXG4gICdpbXBsaWNpdCcsICdjb250YWlucydcbl07XG5cbk5vZGUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgdmFyIGNzdGF0ZSA9IHt9O1xuICBzdGF0ZVByb3BzLmZvckVhY2goZnVuY3Rpb24ocHJvcCkge1xuICAgIGNzdGF0ZVtwcm9wXSA9IHN0YXRlW3Byb3BdO1xuICB9KTtcbiAgdmFyIHJlcyA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKGNzdGF0ZS5wYXJlbnQpO1xuICByZXMuX2Jhc2VTdGF0ZSA9IGNzdGF0ZTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbk5vZGUucHJvdG90eXBlLl93cmFwID0gZnVuY3Rpb24gd3JhcCgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICBtZXRob2RzLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgdGhpc1ttZXRob2RdID0gZnVuY3Rpb24gX3dyYXBwZWRNZXRob2QoKSB7XG4gICAgICB2YXIgY2xvbmUgPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzKTtcbiAgICAgIHN0YXRlLmNoaWxkcmVuLnB1c2goY2xvbmUpO1xuICAgICAgcmV0dXJuIGNsb25lW21ldGhvZF0uYXBwbHkoY2xvbmUsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSwgdGhpcyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQoYm9keSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnBhcmVudCA9PT0gbnVsbCk7XG4gIGJvZHkuY2FsbCh0aGlzKTtcblxuICAvLyBGaWx0ZXIgY2hpbGRyZW5cbiAgc3RhdGUuY2hpbGRyZW4gPSBzdGF0ZS5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICByZXR1cm4gY2hpbGQuX2Jhc2VTdGF0ZS5wYXJlbnQgPT09IHRoaXM7XG4gIH0sIHRoaXMpO1xuICBhc3NlcnQuZXF1YWwoc3RhdGUuY2hpbGRyZW4ubGVuZ3RoLCAxLCAnUm9vdCBub2RlIGNhbiBoYXZlIG9ubHkgb25lIGNoaWxkJyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fdXNlQXJncyA9IGZ1bmN0aW9uIHVzZUFyZ3MoYXJncykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgLy8gRmlsdGVyIGNoaWxkcmVuIGFuZCBhcmdzXG4gIHZhciBjaGlsZHJlbiA9IGFyZ3MuZmlsdGVyKGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBhcmcgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yO1xuICB9LCB0aGlzKTtcbiAgYXJncyA9IGFyZ3MuZmlsdGVyKGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiAhKGFyZyBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IpO1xuICB9LCB0aGlzKTtcblxuICBpZiAoY2hpbGRyZW4ubGVuZ3RoICE9PSAwKSB7XG4gICAgYXNzZXJ0KHN0YXRlLmNoaWxkcmVuID09PSBudWxsKTtcbiAgICBzdGF0ZS5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuXG4gICAgLy8gUmVwbGFjZSBwYXJlbnQgdG8gbWFpbnRhaW4gYmFja3dhcmQgbGlua1xuICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIGNoaWxkLl9iYXNlU3RhdGUucGFyZW50ID0gdGhpcztcbiAgICB9LCB0aGlzKTtcbiAgfVxuICBpZiAoYXJncy5sZW5ndGggIT09IDApIHtcbiAgICBhc3NlcnQoc3RhdGUuYXJncyA9PT0gbnVsbCk7XG4gICAgc3RhdGUuYXJncyA9IGFyZ3M7XG4gICAgc3RhdGUucmV2ZXJzZUFyZ3MgPSBhcmdzLm1hcChmdW5jdGlvbihhcmcpIHtcbiAgICAgIGlmICh0eXBlb2YgYXJnICE9PSAnb2JqZWN0JyB8fCBhcmcuY29uc3RydWN0b3IgIT09IE9iamVjdClcbiAgICAgICAgcmV0dXJuIGFyZztcblxuICAgICAgdmFyIHJlcyA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoYXJnKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBpZiAoa2V5ID09IChrZXkgfCAwKSlcbiAgICAgICAgICBrZXkgfD0gMDtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJnW2tleV07XG4gICAgICAgIHJlc1t2YWx1ZV0gPSBrZXk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSk7XG4gIH1cbn07XG5cbi8vXG4vLyBPdmVycmlkZWQgbWV0aG9kc1xuLy9cblxub3ZlcnJpZGVkLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gIE5vZGUucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiBfb3ZlcnJpZGVkKCkge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWV0aG9kICsgJyBub3QgaW1wbGVtZW50ZWQgZm9yIGVuY29kaW5nOiAnICsgc3RhdGUuZW5jKTtcbiAgfTtcbn0pO1xuXG4vL1xuLy8gUHVibGljIG1ldGhvZHNcbi8vXG5cbnRhZ3MuZm9yRWFjaChmdW5jdGlvbih0YWcpIHtcbiAgTm9kZS5wcm90b3R5cGVbdGFnXSA9IGZ1bmN0aW9uIF90YWdNZXRob2QoKSB7XG4gICAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICAgIGFzc2VydChzdGF0ZS50YWcgPT09IG51bGwpO1xuICAgIHN0YXRlLnRhZyA9IHRhZztcblxuICAgIHRoaXMuX3VzZUFyZ3MoYXJncyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn0pO1xuXG5Ob2RlLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiB1c2UoaXRlbSkge1xuICBhc3NlcnQoaXRlbSk7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUudXNlID09PSBudWxsKTtcbiAgc3RhdGUudXNlID0gaXRlbTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLm9wdGlvbmFsID0gZnVuY3Rpb24gb3B0aW9uYWwoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBzdGF0ZS5vcHRpb25hbCA9IHRydWU7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5kZWYgPSBmdW5jdGlvbiBkZWYodmFsKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGVbJ2RlZmF1bHQnXSA9PT0gbnVsbCk7XG4gIHN0YXRlWydkZWZhdWx0J10gPSB2YWw7XG4gIHN0YXRlLm9wdGlvbmFsID0gdHJ1ZTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmV4cGxpY2l0ID0gZnVuY3Rpb24gZXhwbGljaXQobnVtKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUuZXhwbGljaXQgPT09IG51bGwgJiYgc3RhdGUuaW1wbGljaXQgPT09IG51bGwpO1xuICBzdGF0ZS5leHBsaWNpdCA9IG51bTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmltcGxpY2l0ID0gZnVuY3Rpb24gaW1wbGljaXQobnVtKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUuZXhwbGljaXQgPT09IG51bGwgJiYgc3RhdGUuaW1wbGljaXQgPT09IG51bGwpO1xuICBzdGF0ZS5pbXBsaWNpdCA9IG51bTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLm9iaiA9IGZ1bmN0aW9uIG9iaigpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG5cbiAgc3RhdGUub2JqID0gdHJ1ZTtcblxuICBpZiAoYXJncy5sZW5ndGggIT09IDApXG4gICAgdGhpcy5fdXNlQXJncyhhcmdzKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmtleSA9IGZ1bmN0aW9uIGtleShuZXdLZXkpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5rZXkgPT09IG51bGwpO1xuICBzdGF0ZS5rZXkgPSBuZXdLZXk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5hbnkgPSBmdW5jdGlvbiBhbnkoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBzdGF0ZS5hbnkgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuY2hvaWNlID0gZnVuY3Rpb24gY2hvaWNlKG9iaikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLmNob2ljZSA9PT0gbnVsbCk7XG4gIHN0YXRlLmNob2ljZSA9IG9iajtcbiAgdGhpcy5fdXNlQXJncyhPYmplY3Qua2V5cyhvYmopLm1hcChmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqW2tleV07XG4gIH0pKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24gY29udGFpbnMoaXRlbSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnVzZSA9PT0gbnVsbCk7XG4gIHN0YXRlLmNvbnRhaW5zID0gaXRlbTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8vXG4vLyBEZWNvZGluZ1xuLy9cblxuTm9kZS5wcm90b3R5cGUuX2RlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShpbnB1dCwgb3B0aW9ucykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgLy8gRGVjb2RlIHJvb3Qgbm9kZVxuICBpZiAoc3RhdGUucGFyZW50ID09PSBudWxsKVxuICAgIHJldHVybiBpbnB1dC53cmFwUmVzdWx0KHN0YXRlLmNoaWxkcmVuWzBdLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpKTtcblxuICB2YXIgcmVzdWx0ID0gc3RhdGVbJ2RlZmF1bHQnXTtcbiAgdmFyIHByZXNlbnQgPSB0cnVlO1xuXG4gIHZhciBwcmV2S2V5ID0gbnVsbDtcbiAgaWYgKHN0YXRlLmtleSAhPT0gbnVsbClcbiAgICBwcmV2S2V5ID0gaW5wdXQuZW50ZXJLZXkoc3RhdGUua2V5KTtcblxuICAvLyBDaGVjayBpZiB0YWcgaXMgdGhlcmVcbiAgaWYgKHN0YXRlLm9wdGlvbmFsKSB7XG4gICAgdmFyIHRhZyA9IG51bGw7XG4gICAgaWYgKHN0YXRlLmV4cGxpY2l0ICE9PSBudWxsKVxuICAgICAgdGFnID0gc3RhdGUuZXhwbGljaXQ7XG4gICAgZWxzZSBpZiAoc3RhdGUuaW1wbGljaXQgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS5pbXBsaWNpdDtcbiAgICBlbHNlIGlmIChzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS50YWc7XG5cbiAgICBpZiAodGFnID09PSBudWxsICYmICFzdGF0ZS5hbnkpIHtcbiAgICAgIC8vIFRyaWFsIGFuZCBFcnJvclxuICAgICAgdmFyIHNhdmUgPSBpbnB1dC5zYXZlKCk7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoc3RhdGUuY2hvaWNlID09PSBudWxsKVxuICAgICAgICAgIHRoaXMuX2RlY29kZUdlbmVyaWMoc3RhdGUudGFnLCBpbnB1dCwgb3B0aW9ucyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aGlzLl9kZWNvZGVDaG9pY2UoaW5wdXQsIG9wdGlvbnMpO1xuICAgICAgICBwcmVzZW50ID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcHJlc2VudCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaW5wdXQucmVzdG9yZShzYXZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJlc2VudCA9IHRoaXMuX3BlZWtUYWcoaW5wdXQsIHRhZywgc3RhdGUuYW55KTtcblxuICAgICAgaWYgKGlucHV0LmlzRXJyb3IocHJlc2VudCkpXG4gICAgICAgIHJldHVybiBwcmVzZW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIFB1c2ggb2JqZWN0IG9uIHN0YWNrXG4gIHZhciBwcmV2T2JqO1xuICBpZiAoc3RhdGUub2JqICYmIHByZXNlbnQpXG4gICAgcHJldk9iaiA9IGlucHV0LmVudGVyT2JqZWN0KCk7XG5cbiAgaWYgKHByZXNlbnQpIHtcbiAgICAvLyBVbndyYXAgZXhwbGljaXQgdmFsdWVzXG4gICAgaWYgKHN0YXRlLmV4cGxpY2l0ICE9PSBudWxsKSB7XG4gICAgICB2YXIgZXhwbGljaXQgPSB0aGlzLl9kZWNvZGVUYWcoaW5wdXQsIHN0YXRlLmV4cGxpY2l0KTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKGV4cGxpY2l0KSlcbiAgICAgICAgcmV0dXJuIGV4cGxpY2l0O1xuICAgICAgaW5wdXQgPSBleHBsaWNpdDtcbiAgICB9XG5cbiAgICB2YXIgc3RhcnQgPSBpbnB1dC5vZmZzZXQ7XG5cbiAgICAvLyBVbndyYXAgaW1wbGljaXQgYW5kIG5vcm1hbCB2YWx1ZXNcbiAgICBpZiAoc3RhdGUudXNlID09PSBudWxsICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCkge1xuICAgICAgaWYgKHN0YXRlLmFueSlcbiAgICAgICAgdmFyIHNhdmUgPSBpbnB1dC5zYXZlKCk7XG4gICAgICB2YXIgYm9keSA9IHRoaXMuX2RlY29kZVRhZyhcbiAgICAgICAgaW5wdXQsXG4gICAgICAgIHN0YXRlLmltcGxpY2l0ICE9PSBudWxsID8gc3RhdGUuaW1wbGljaXQgOiBzdGF0ZS50YWcsXG4gICAgICAgIHN0YXRlLmFueVxuICAgICAgKTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKGJvZHkpKVxuICAgICAgICByZXR1cm4gYm9keTtcblxuICAgICAgaWYgKHN0YXRlLmFueSlcbiAgICAgICAgcmVzdWx0ID0gaW5wdXQucmF3KHNhdmUpO1xuICAgICAgZWxzZVxuICAgICAgICBpbnB1dCA9IGJvZHk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy50cmFjayAmJiBzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICBvcHRpb25zLnRyYWNrKGlucHV0LnBhdGgoKSwgc3RhcnQsIGlucHV0Lmxlbmd0aCwgJ3RhZ2dlZCcpO1xuXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy50cmFjayAmJiBzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICBvcHRpb25zLnRyYWNrKGlucHV0LnBhdGgoKSwgaW5wdXQub2Zmc2V0LCBpbnB1dC5sZW5ndGgsICdjb250ZW50Jyk7XG5cbiAgICAvLyBTZWxlY3QgcHJvcGVyIG1ldGhvZCBmb3IgdGFnXG4gICAgaWYgKHN0YXRlLmFueSlcbiAgICAgIHJlc3VsdCA9IHJlc3VsdDtcbiAgICBlbHNlIGlmIChzdGF0ZS5jaG9pY2UgPT09IG51bGwpXG4gICAgICByZXN1bHQgPSB0aGlzLl9kZWNvZGVHZW5lcmljKHN0YXRlLnRhZywgaW5wdXQsIG9wdGlvbnMpO1xuICAgIGVsc2VcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2RlY29kZUNob2ljZShpbnB1dCwgb3B0aW9ucyk7XG5cbiAgICBpZiAoaW5wdXQuaXNFcnJvcihyZXN1bHQpKVxuICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgIC8vIERlY29kZSBjaGlsZHJlblxuICAgIGlmICghc3RhdGUuYW55ICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCAmJiBzdGF0ZS5jaGlsZHJlbiAhPT0gbnVsbCkge1xuICAgICAgc3RhdGUuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiBkZWNvZGVDaGlsZHJlbihjaGlsZCkge1xuICAgICAgICAvLyBOT1RFOiBXZSBhcmUgaWdub3JpbmcgZXJyb3JzIGhlcmUsIHRvIGxldCBwYXJzZXIgY29udGludWUgd2l0aCBvdGhlclxuICAgICAgICAvLyBwYXJ0cyBvZiBlbmNvZGVkIGRhdGFcbiAgICAgICAgY2hpbGQuX2RlY29kZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBEZWNvZGUgY29udGFpbmVkL2VuY29kZWQgYnkgc2NoZW1hLCBvbmx5IGluIGJpdCBvciBvY3RldCBzdHJpbmdzXG4gICAgaWYgKHN0YXRlLmNvbnRhaW5zICYmIChzdGF0ZS50YWcgPT09ICdvY3RzdHInIHx8IHN0YXRlLnRhZyA9PT0gJ2JpdHN0cicpKSB7XG4gICAgICB2YXIgZGF0YSA9IG5ldyBEZWNvZGVyQnVmZmVyKHJlc3VsdCk7XG4gICAgICByZXN1bHQgPSB0aGlzLl9nZXRVc2Uoc3RhdGUuY29udGFpbnMsIGlucHV0Ll9yZXBvcnRlclN0YXRlLm9iailcbiAgICAgICAgICAuX2RlY29kZShkYXRhLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICAvLyBQb3Agb2JqZWN0XG4gIGlmIChzdGF0ZS5vYmogJiYgcHJlc2VudClcbiAgICByZXN1bHQgPSBpbnB1dC5sZWF2ZU9iamVjdChwcmV2T2JqKTtcblxuICAvLyBTZXQga2V5XG4gIGlmIChzdGF0ZS5rZXkgIT09IG51bGwgJiYgKHJlc3VsdCAhPT0gbnVsbCB8fCBwcmVzZW50ID09PSB0cnVlKSlcbiAgICBpbnB1dC5sZWF2ZUtleShwcmV2S2V5LCBzdGF0ZS5rZXksIHJlc3VsdCk7XG4gIGVsc2UgaWYgKHByZXZLZXkgIT09IG51bGwpXG4gICAgaW5wdXQuZXhpdEtleShwcmV2S2V5KTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2RlY29kZUdlbmVyaWMgPSBmdW5jdGlvbiBkZWNvZGVHZW5lcmljKHRhZywgaW5wdXQsIG9wdGlvbnMpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGlmICh0YWcgPT09ICdzZXEnIHx8IHRhZyA9PT0gJ3NldCcpXG4gICAgcmV0dXJuIG51bGw7XG4gIGlmICh0YWcgPT09ICdzZXFvZicgfHwgdGFnID09PSAnc2V0b2YnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVMaXN0KGlucHV0LCB0YWcsIHN0YXRlLmFyZ3NbMF0sIG9wdGlvbnMpO1xuICBlbHNlIGlmICgvc3RyJC8udGVzdCh0YWcpKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVTdHIoaW5wdXQsIHRhZywgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJyAmJiBzdGF0ZS5hcmdzKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVPYmppZChpbnB1dCwgc3RhdGUuYXJnc1swXSwgc3RhdGUuYXJnc1sxXSwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlT2JqaWQoaW5wdXQsIG51bGwsIG51bGwsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdnZW50aW1lJyB8fCB0YWcgPT09ICd1dGN0aW1lJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlVGltZShpbnB1dCwgdGFnLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnbnVsbF8nKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVOdWxsKGlucHV0LCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnYm9vbCcpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUJvb2woaW5wdXQsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlU3RyKGlucHV0LCB0YWcsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdpbnQnIHx8IHRhZyA9PT0gJ2VudW0nKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVJbnQoaW5wdXQsIHN0YXRlLmFyZ3MgJiYgc3RhdGUuYXJnc1swXSwgb3B0aW9ucyk7XG5cbiAgaWYgKHN0YXRlLnVzZSAhPT0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRVc2Uoc3RhdGUudXNlLCBpbnB1dC5fcmVwb3J0ZXJTdGF0ZS5vYmopXG4gICAgICAgIC5fZGVjb2RlKGlucHV0LCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaW5wdXQuZXJyb3IoJ3Vua25vd24gdGFnOiAnICsgdGFnKTtcbiAgfVxufTtcblxuTm9kZS5wcm90b3R5cGUuX2dldFVzZSA9IGZ1bmN0aW9uIF9nZXRVc2UoZW50aXR5LCBvYmopIHtcblxuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIC8vIENyZWF0ZSBhbHRlcmVkIHVzZSBkZWNvZGVyIGlmIGltcGxpY2l0IGlzIHNldFxuICBzdGF0ZS51c2VEZWNvZGVyID0gdGhpcy5fdXNlKGVudGl0eSwgb2JqKTtcbiAgYXNzZXJ0KHN0YXRlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5wYXJlbnQgPT09IG51bGwpO1xuICBzdGF0ZS51c2VEZWNvZGVyID0gc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmNoaWxkcmVuWzBdO1xuICBpZiAoc3RhdGUuaW1wbGljaXQgIT09IHN0YXRlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5pbXBsaWNpdCkge1xuICAgIHN0YXRlLnVzZURlY29kZXIgPSBzdGF0ZS51c2VEZWNvZGVyLmNsb25lKCk7XG4gICAgc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0ID0gc3RhdGUuaW1wbGljaXQ7XG4gIH1cbiAgcmV0dXJuIHN0YXRlLnVzZURlY29kZXI7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZGVjb2RlQ2hvaWNlID0gZnVuY3Rpb24gZGVjb2RlQ2hvaWNlKGlucHV0LCBvcHRpb25zKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgdmFyIHJlc3VsdCA9IG51bGw7XG4gIHZhciBtYXRjaCA9IGZhbHNlO1xuXG4gIE9iamVjdC5rZXlzKHN0YXRlLmNob2ljZSkuc29tZShmdW5jdGlvbihrZXkpIHtcbiAgICB2YXIgc2F2ZSA9IGlucHV0LnNhdmUoKTtcbiAgICB2YXIgbm9kZSA9IHN0YXRlLmNob2ljZVtrZXldO1xuICAgIHRyeSB7XG4gICAgICB2YXIgdmFsdWUgPSBub2RlLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpO1xuICAgICAgaWYgKGlucHV0LmlzRXJyb3IodmFsdWUpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHJlc3VsdCA9IHsgdHlwZToga2V5LCB2YWx1ZTogdmFsdWUgfTtcbiAgICAgIG1hdGNoID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpbnB1dC5yZXN0b3JlKHNhdmUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSwgdGhpcyk7XG5cbiAgaWYgKCFtYXRjaClcbiAgICByZXR1cm4gaW5wdXQuZXJyb3IoJ0Nob2ljZSBub3QgbWF0Y2hlZCcpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vL1xuLy8gRW5jb2Rpbmdcbi8vXG5cbk5vZGUucHJvdG90eXBlLl9jcmVhdGVFbmNvZGVyQnVmZmVyID0gZnVuY3Rpb24gY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhKSB7XG4gIHJldHVybiBuZXcgRW5jb2RlckJ1ZmZlcihkYXRhLCB0aGlzLnJlcG9ydGVyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgcmVwb3J0ZXIsIHBhcmVudCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIGlmIChzdGF0ZVsnZGVmYXVsdCddICE9PSBudWxsICYmIHN0YXRlWydkZWZhdWx0J10gPT09IGRhdGEpXG4gICAgcmV0dXJuO1xuXG4gIHZhciByZXN1bHQgPSB0aGlzLl9lbmNvZGVWYWx1ZShkYXRhLCByZXBvcnRlciwgcGFyZW50KTtcbiAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybjtcblxuICBpZiAodGhpcy5fc2tpcERlZmF1bHQocmVzdWx0LCByZXBvcnRlciwgcGFyZW50KSlcbiAgICByZXR1cm47XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGVWYWx1ZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCByZXBvcnRlciwgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAvLyBEZWNvZGUgcm9vdCBub2RlXG4gIGlmIChzdGF0ZS5wYXJlbnQgPT09IG51bGwpXG4gICAgcmV0dXJuIHN0YXRlLmNoaWxkcmVuWzBdLl9lbmNvZGUoZGF0YSwgcmVwb3J0ZXIgfHwgbmV3IFJlcG9ydGVyKCkpO1xuXG4gIHZhciByZXN1bHQgPSBudWxsO1xuXG4gIC8vIFNldCByZXBvcnRlciB0byBzaGFyZSBpdCB3aXRoIGEgY2hpbGQgY2xhc3NcbiAgdGhpcy5yZXBvcnRlciA9IHJlcG9ydGVyO1xuXG4gIC8vIENoZWNrIGlmIGRhdGEgaXMgdGhlcmVcbiAgaWYgKHN0YXRlLm9wdGlvbmFsICYmIGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChzdGF0ZVsnZGVmYXVsdCddICE9PSBudWxsKVxuICAgICAgZGF0YSA9IHN0YXRlWydkZWZhdWx0J11cbiAgICBlbHNlXG4gICAgICByZXR1cm47XG4gIH1cblxuICAvLyBFbmNvZGUgY2hpbGRyZW4gZmlyc3RcbiAgdmFyIGNvbnRlbnQgPSBudWxsO1xuICB2YXIgcHJpbWl0aXZlID0gZmFsc2U7XG4gIGlmIChzdGF0ZS5hbnkpIHtcbiAgICAvLyBBbnl0aGluZyB0aGF0IHdhcyBnaXZlbiBpcyB0cmFuc2xhdGVkIHRvIGJ1ZmZlclxuICAgIHJlc3VsdCA9IHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoZGF0YSk7XG4gIH0gZWxzZSBpZiAoc3RhdGUuY2hvaWNlKSB7XG4gICAgcmVzdWx0ID0gdGhpcy5fZW5jb2RlQ2hvaWNlKGRhdGEsIHJlcG9ydGVyKTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5jb250YWlucykge1xuICAgIGNvbnRlbnQgPSB0aGlzLl9nZXRVc2Uoc3RhdGUuY29udGFpbnMsIHBhcmVudCkuX2VuY29kZShkYXRhLCByZXBvcnRlcik7XG4gICAgcHJpbWl0aXZlID0gdHJ1ZTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5jaGlsZHJlbikge1xuICAgIGNvbnRlbnQgPSBzdGF0ZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIGlmIChjaGlsZC5fYmFzZVN0YXRlLnRhZyA9PT0gJ251bGxfJylcbiAgICAgICAgcmV0dXJuIGNoaWxkLl9lbmNvZGUobnVsbCwgcmVwb3J0ZXIsIGRhdGEpO1xuXG4gICAgICBpZiAoY2hpbGQuX2Jhc2VTdGF0ZS5rZXkgPT09IG51bGwpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignQ2hpbGQgc2hvdWxkIGhhdmUgYSBrZXknKTtcbiAgICAgIHZhciBwcmV2S2V5ID0gcmVwb3J0ZXIuZW50ZXJLZXkoY2hpbGQuX2Jhc2VTdGF0ZS5rZXkpO1xuXG4gICAgICBpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ0NoaWxkIGV4cGVjdGVkLCBidXQgaW5wdXQgaXMgbm90IG9iamVjdCcpO1xuXG4gICAgICB2YXIgcmVzID0gY2hpbGQuX2VuY29kZShkYXRhW2NoaWxkLl9iYXNlU3RhdGUua2V5XSwgcmVwb3J0ZXIsIGRhdGEpO1xuICAgICAgcmVwb3J0ZXIubGVhdmVLZXkocHJldktleSk7XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSwgdGhpcykuZmlsdGVyKGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfSk7XG4gICAgY29udGVudCA9IHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoY29udGVudCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHN0YXRlLnRhZyA9PT0gJ3NlcW9mJyB8fCBzdGF0ZS50YWcgPT09ICdzZXRvZicpIHtcbiAgICAgIC8vIFRPRE8oaW5kdXRueSk6IHRoaXMgc2hvdWxkIGJlIHRocm93biBvbiBEU0wgbGV2ZWxcbiAgICAgIGlmICghKHN0YXRlLmFyZ3MgJiYgc3RhdGUuYXJncy5sZW5ndGggPT09IDEpKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1RvbyBtYW55IGFyZ3MgZm9yIDogJyArIHN0YXRlLnRhZyk7XG5cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSlcbiAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdzZXFvZi9zZXRvZiwgYnV0IGRhdGEgaXMgbm90IEFycmF5Jyk7XG5cbiAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGNoaWxkLl9iYXNlU3RhdGUuaW1wbGljaXQgPSBudWxsO1xuICAgICAgY29udGVudCA9IHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoZGF0YS5tYXAoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFVzZShzdGF0ZS5hcmdzWzBdLCBkYXRhKS5fZW5jb2RlKGl0ZW0sIHJlcG9ydGVyKTtcbiAgICAgIH0sIGNoaWxkKSk7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS51c2UgIT09IG51bGwpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2dldFVzZShzdGF0ZS51c2UsIHBhcmVudCkuX2VuY29kZShkYXRhLCByZXBvcnRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLl9lbmNvZGVQcmltaXRpdmUoc3RhdGUudGFnLCBkYXRhKTtcbiAgICAgIHByaW1pdGl2ZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gRW5jb2RlIGRhdGEgaXRzZWxmXG4gIHZhciByZXN1bHQ7XG4gIGlmICghc3RhdGUuYW55ICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCkge1xuICAgIHZhciB0YWcgPSBzdGF0ZS5pbXBsaWNpdCAhPT0gbnVsbCA/IHN0YXRlLmltcGxpY2l0IDogc3RhdGUudGFnO1xuICAgIHZhciBjbHMgPSBzdGF0ZS5pbXBsaWNpdCA9PT0gbnVsbCA/ICd1bml2ZXJzYWwnIDogJ2NvbnRleHQnO1xuXG4gICAgaWYgKHRhZyA9PT0gbnVsbCkge1xuICAgICAgaWYgKHN0YXRlLnVzZSA9PT0gbnVsbClcbiAgICAgICAgcmVwb3J0ZXIuZXJyb3IoJ1RhZyBjb3VsZCBiZSBvbWl0dGVkIG9ubHkgZm9yIC51c2UoKScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoc3RhdGUudXNlID09PSBudWxsKVxuICAgICAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDb21wb3NpdGUodGFnLCBwcmltaXRpdmUsIGNscywgY29udGVudCk7XG4gICAgfVxuICB9XG5cbiAgLy8gV3JhcCBpbiBleHBsaWNpdFxuICBpZiAoc3RhdGUuZXhwbGljaXQgIT09IG51bGwpXG4gICAgcmVzdWx0ID0gdGhpcy5fZW5jb2RlQ29tcG9zaXRlKHN0YXRlLmV4cGxpY2l0LCBmYWxzZSwgJ2NvbnRleHQnLCByZXN1bHQpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZW5jb2RlQ2hvaWNlID0gZnVuY3Rpb24gZW5jb2RlQ2hvaWNlKGRhdGEsIHJlcG9ydGVyKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICB2YXIgbm9kZSA9IHN0YXRlLmNob2ljZVtkYXRhLnR5cGVdO1xuICBpZiAoIW5vZGUpIHtcbiAgICBhc3NlcnQoXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBkYXRhLnR5cGUgKyAnIG5vdCBmb3VuZCBpbiAnICtcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKHN0YXRlLmNob2ljZSkpKTtcbiAgfVxuICByZXR1cm4gbm9kZS5fZW5jb2RlKGRhdGEudmFsdWUsIHJlcG9ydGVyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGVQcmltaXRpdmUgPSBmdW5jdGlvbiBlbmNvZGVQcmltaXRpdmUodGFnLCBkYXRhKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBpZiAoL3N0ciQvLnRlc3QodGFnKSlcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlU3RyKGRhdGEsIHRhZyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJyAmJiBzdGF0ZS5hcmdzKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVPYmppZChkYXRhLCBzdGF0ZS5yZXZlcnNlQXJnc1swXSwgc3RhdGUuYXJnc1sxXSk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQoZGF0YSwgbnVsbCwgbnVsbCk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnIHx8IHRhZyA9PT0gJ3V0Y3RpbWUnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVUaW1lKGRhdGEsIHRhZyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ251bGxfJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlTnVsbCgpO1xuICBlbHNlIGlmICh0YWcgPT09ICdpbnQnIHx8IHRhZyA9PT0gJ2VudW0nKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVJbnQoZGF0YSwgc3RhdGUuYXJncyAmJiBzdGF0ZS5yZXZlcnNlQXJnc1swXSk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2Jvb2wnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVCb29sKGRhdGEpO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlU3RyKGRhdGEsIHRhZyk7XG4gIGVsc2VcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHRhZzogJyArIHRhZyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faXNOdW1zdHIgPSBmdW5jdGlvbiBpc051bXN0cihzdHIpIHtcbiAgcmV0dXJuIC9eWzAtOSBdKiQvLnRlc3Qoc3RyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9pc1ByaW50c3RyID0gZnVuY3Rpb24gaXNQcmludHN0cihzdHIpIHtcbiAgcmV0dXJuIC9eW0EtWmEtejAtOSAnXFwoXFwpXFwrLFxcLVxcLlxcLzo9XFw/XSokLy50ZXN0KHN0cik7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL25vZGUuanNcbi8vIG1vZHVsZSBpZCA9IDE5OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///199\n");

/***/ }),
/* 200 */
/***/ (function(module, exports, __webpack_require__) {

eval("var constants = __webpack_require__(78);\n\nexports.tagClass = {\n  0: 'universal',\n  1: 'application',\n  2: 'context',\n  3: 'private'\n};\nexports.tagClassByName = constants._reverse(exports.tagClass);\n\nexports.tag = {\n  0x00: 'end',\n  0x01: 'bool',\n  0x02: 'int',\n  0x03: 'bitstr',\n  0x04: 'octstr',\n  0x05: 'null_',\n  0x06: 'objid',\n  0x07: 'objDesc',\n  0x08: 'external',\n  0x09: 'real',\n  0x0a: 'enum',\n  0x0b: 'embed',\n  0x0c: 'utf8str',\n  0x0d: 'relativeOid',\n  0x10: 'seq',\n  0x11: 'set',\n  0x12: 'numstr',\n  0x13: 'printstr',\n  0x14: 't61str',\n  0x15: 'videostr',\n  0x16: 'ia5str',\n  0x17: 'utctime',\n  0x18: 'gentime',\n  0x19: 'graphstr',\n  0x1a: 'iso646str',\n  0x1b: 'genstr',\n  0x1c: 'unistr',\n  0x1d: 'charstr',\n  0x1e: 'bmpstr'\n};\nexports.tagByName = constants._reverse(exports.tag);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvY29uc3RhbnRzL2Rlci5qcz8wYjUwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBjb25zdGFudHMgPSByZXF1aXJlKCcuLi9jb25zdGFudHMnKTtcblxuZXhwb3J0cy50YWdDbGFzcyA9IHtcbiAgMDogJ3VuaXZlcnNhbCcsXG4gIDE6ICdhcHBsaWNhdGlvbicsXG4gIDI6ICdjb250ZXh0JyxcbiAgMzogJ3ByaXZhdGUnXG59O1xuZXhwb3J0cy50YWdDbGFzc0J5TmFtZSA9IGNvbnN0YW50cy5fcmV2ZXJzZShleHBvcnRzLnRhZ0NsYXNzKTtcblxuZXhwb3J0cy50YWcgPSB7XG4gIDB4MDA6ICdlbmQnLFxuICAweDAxOiAnYm9vbCcsXG4gIDB4MDI6ICdpbnQnLFxuICAweDAzOiAnYml0c3RyJyxcbiAgMHgwNDogJ29jdHN0cicsXG4gIDB4MDU6ICdudWxsXycsXG4gIDB4MDY6ICdvYmppZCcsXG4gIDB4MDc6ICdvYmpEZXNjJyxcbiAgMHgwODogJ2V4dGVybmFsJyxcbiAgMHgwOTogJ3JlYWwnLFxuICAweDBhOiAnZW51bScsXG4gIDB4MGI6ICdlbWJlZCcsXG4gIDB4MGM6ICd1dGY4c3RyJyxcbiAgMHgwZDogJ3JlbGF0aXZlT2lkJyxcbiAgMHgxMDogJ3NlcScsXG4gIDB4MTE6ICdzZXQnLFxuICAweDEyOiAnbnVtc3RyJyxcbiAgMHgxMzogJ3ByaW50c3RyJyxcbiAgMHgxNDogJ3Q2MXN0cicsXG4gIDB4MTU6ICd2aWRlb3N0cicsXG4gIDB4MTY6ICdpYTVzdHInLFxuICAweDE3OiAndXRjdGltZScsXG4gIDB4MTg6ICdnZW50aW1lJyxcbiAgMHgxOTogJ2dyYXBoc3RyJyxcbiAgMHgxYTogJ2lzbzY0NnN0cicsXG4gIDB4MWI6ICdnZW5zdHInLFxuICAweDFjOiAndW5pc3RyJyxcbiAgMHgxZDogJ2NoYXJzdHInLFxuICAweDFlOiAnYm1wc3RyJ1xufTtcbmV4cG9ydHMudGFnQnlOYW1lID0gY29uc3RhbnRzLl9yZXZlcnNlKGV4cG9ydHMudGFnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvY29uc3RhbnRzL2Rlci5qc1xuLy8gbW9kdWxlIGlkID0gMjAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///200\n");

/***/ }),
/* 201 */
/***/ (function(module, exports, __webpack_require__) {

eval("var decoders = exports;\n\ndecoders.der = __webpack_require__(79);\ndecoders.pem = __webpack_require__(202);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAxLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZGVjb2RlcnMvaW5kZXguanM/ODhiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGVjb2RlcnMgPSBleHBvcnRzO1xuXG5kZWNvZGVycy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuZGVjb2RlcnMucGVtID0gcmVxdWlyZSgnLi9wZW0nKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZGVjb2RlcnMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDIwMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///201\n");

/***/ }),
/* 202 */
/***/ (function(module, exports, __webpack_require__) {

eval("var inherits = __webpack_require__(0);\nvar Buffer = __webpack_require__(5).Buffer;\n\nvar DERDecoder = __webpack_require__(79);\n\nfunction PEMDecoder(entity) {\n  DERDecoder.call(this, entity);\n  this.enc = 'pem';\n};\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n  var lines = data.toString().split(/[\\r\\n]+/g);\n\n  var label = options.label.toUpperCase();\n\n  var re = /^-----(BEGIN|END) ([^-]+)-----$/;\n  var start = -1;\n  var end = -1;\n  for (var i = 0; i < lines.length; i++) {\n    var match = lines[i].match(re);\n    if (match === null)\n      continue;\n\n    if (match[2] !== label)\n      continue;\n\n    if (start === -1) {\n      if (match[1] !== 'BEGIN')\n        break;\n      start = i;\n    } else {\n      if (match[1] !== 'END')\n        break;\n      end = i;\n      break;\n    }\n  }\n  if (start === -1 || end === -1)\n    throw new Error('PEM section not found for: ' + label);\n\n  var base64 = lines.slice(start + 1, end).join('');\n  // Remove excessive symbols\n  base64.replace(/[^a-z0-9\\+\\/=]+/gi, '');\n\n  var input = new Buffer(base64, 'base64');\n  return DERDecoder.prototype.decode.call(this, input, options);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZGVjb2RlcnMvcGVtLmpzP2JkNmMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbnZhciBERVJEZWNvZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcblxuZnVuY3Rpb24gUEVNRGVjb2RlcihlbnRpdHkpIHtcbiAgREVSRGVjb2Rlci5jYWxsKHRoaXMsIGVudGl0eSk7XG4gIHRoaXMuZW5jID0gJ3BlbSc7XG59O1xuaW5oZXJpdHMoUEVNRGVjb2RlciwgREVSRGVjb2Rlcik7XG5tb2R1bGUuZXhwb3J0cyA9IFBFTURlY29kZXI7XG5cblBFTURlY29kZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShkYXRhLCBvcHRpb25zKSB7XG4gIHZhciBsaW5lcyA9IGRhdGEudG9TdHJpbmcoKS5zcGxpdCgvW1xcclxcbl0rL2cpO1xuXG4gIHZhciBsYWJlbCA9IG9wdGlvbnMubGFiZWwudG9VcHBlckNhc2UoKTtcblxuICB2YXIgcmUgPSAvXi0tLS0tKEJFR0lOfEVORCkgKFteLV0rKS0tLS0tJC87XG4gIHZhciBzdGFydCA9IC0xO1xuICB2YXIgZW5kID0gLTE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbWF0Y2ggPSBsaW5lc1tpXS5tYXRjaChyZSk7XG4gICAgaWYgKG1hdGNoID09PSBudWxsKVxuICAgICAgY29udGludWU7XG5cbiAgICBpZiAobWF0Y2hbMl0gIT09IGxhYmVsKVxuICAgICAgY29udGludWU7XG5cbiAgICBpZiAoc3RhcnQgPT09IC0xKSB7XG4gICAgICBpZiAobWF0Y2hbMV0gIT09ICdCRUdJTicpXG4gICAgICAgIGJyZWFrO1xuICAgICAgc3RhcnQgPSBpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobWF0Y2hbMV0gIT09ICdFTkQnKVxuICAgICAgICBicmVhaztcbiAgICAgIGVuZCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHN0YXJ0ID09PSAtMSB8fCBlbmQgPT09IC0xKVxuICAgIHRocm93IG5ldyBFcnJvcignUEVNIHNlY3Rpb24gbm90IGZvdW5kIGZvcjogJyArIGxhYmVsKTtcblxuICB2YXIgYmFzZTY0ID0gbGluZXMuc2xpY2Uoc3RhcnQgKyAxLCBlbmQpLmpvaW4oJycpO1xuICAvLyBSZW1vdmUgZXhjZXNzaXZlIHN5bWJvbHNcbiAgYmFzZTY0LnJlcGxhY2UoL1teYS16MC05XFwrXFwvPV0rL2dpLCAnJyk7XG5cbiAgdmFyIGlucHV0ID0gbmV3IEJ1ZmZlcihiYXNlNjQsICdiYXNlNjQnKTtcbiAgcmV0dXJuIERFUkRlY29kZXIucHJvdG90eXBlLmRlY29kZS5jYWxsKHRoaXMsIGlucHV0LCBvcHRpb25zKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2RlY29kZXJzL3BlbS5qc1xuLy8gbW9kdWxlIGlkID0gMjAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///202\n");

/***/ }),
/* 203 */
/***/ (function(module, exports, __webpack_require__) {

eval("var encoders = exports;\n\nencoders.der = __webpack_require__(80);\nencoders.pem = __webpack_require__(204);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZW5jb2RlcnMvaW5kZXguanM/NDgwNyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZW5jb2RlcnMgPSBleHBvcnRzO1xuXG5lbmNvZGVycy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuZW5jb2RlcnMucGVtID0gcmVxdWlyZSgnLi9wZW0nKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZW5jb2RlcnMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDIwM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///203\n");

/***/ }),
/* 204 */
/***/ (function(module, exports, __webpack_require__) {

eval("var inherits = __webpack_require__(0);\n\nvar DEREncoder = __webpack_require__(80);\n\nfunction PEMEncoder(entity) {\n  DEREncoder.call(this, entity);\n  this.enc = 'pem';\n};\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n  var buf = DEREncoder.prototype.encode.call(this, data);\n\n  var p = buf.toString('base64');\n  var out = [ '-----BEGIN ' + options.label + '-----' ];\n  for (var i = 0; i < p.length; i += 64)\n    out.push(p.slice(i, i + 64));\n  out.push('-----END ' + options.label + '-----');\n  return out.join('\\n');\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA0LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZW5jb2RlcnMvcGVtLmpzPzU2YWIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIERFUkVuY29kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuXG5mdW5jdGlvbiBQRU1FbmNvZGVyKGVudGl0eSkge1xuICBERVJFbmNvZGVyLmNhbGwodGhpcywgZW50aXR5KTtcbiAgdGhpcy5lbmMgPSAncGVtJztcbn07XG5pbmhlcml0cyhQRU1FbmNvZGVyLCBERVJFbmNvZGVyKTtcbm1vZHVsZS5leHBvcnRzID0gUEVNRW5jb2RlcjtcblxuUEVNRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIG9wdGlvbnMpIHtcbiAgdmFyIGJ1ZiA9IERFUkVuY29kZXIucHJvdG90eXBlLmVuY29kZS5jYWxsKHRoaXMsIGRhdGEpO1xuXG4gIHZhciBwID0gYnVmLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgdmFyIG91dCA9IFsgJy0tLS0tQkVHSU4gJyArIG9wdGlvbnMubGFiZWwgKyAnLS0tLS0nIF07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGg7IGkgKz0gNjQpXG4gICAgb3V0LnB1c2gocC5zbGljZShpLCBpICsgNjQpKTtcbiAgb3V0LnB1c2goJy0tLS0tRU5EICcgKyBvcHRpb25zLmxhYmVsICsgJy0tLS0tJyk7XG4gIHJldHVybiBvdXQuam9pbignXFxuJyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9lbmNvZGVycy9wZW0uanNcbi8vIG1vZHVsZSBpZCA9IDIwNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///204\n");

/***/ }),
/* 205 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n\n\nvar asn = __webpack_require__(19)\n\nvar Time = asn.define('Time', function () {\n  this.choice({\n    utcTime: this.utctime(),\n    generalTime: this.gentime()\n  })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n  this.seq().obj(\n    this.key('type').objid(),\n    this.key('value').any()\n  )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n  this.seq().obj(\n    this.key('algorithm').objid(),\n    this.key('parameters').optional(),\n    this.key('curve').objid().optional()\n  )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n  this.seq().obj(\n    this.key('algorithm').use(AlgorithmIdentifier),\n    this.key('subjectPublicKey').bitstr()\n  )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n  this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n  this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n  this.choice({\n    rdnSequence: this.use(RDNSequence)\n  })\n})\n\nvar Validity = asn.define('Validity', function () {\n  this.seq().obj(\n    this.key('notBefore').use(Time),\n    this.key('notAfter').use(Time)\n  )\n})\n\nvar Extension = asn.define('Extension', function () {\n  this.seq().obj(\n    this.key('extnID').objid(),\n    this.key('critical').bool().def(false),\n    this.key('extnValue').octstr()\n  )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n  this.seq().obj(\n    this.key('version').explicit(0).int().optional(),\n    this.key('serialNumber').int(),\n    this.key('signature').use(AlgorithmIdentifier),\n    this.key('issuer').use(Name),\n    this.key('validity').use(Validity),\n    this.key('subject').use(Name),\n    this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n    this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n    this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n    this.key('extensions').explicit(3).seqof(Extension).optional()\n  )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n  this.seq().obj(\n    this.key('tbsCertificate').use(TBSCertificate),\n    this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n    this.key('signatureValue').bitstr()\n  )\n})\n\nmodule.exports = X509Certificate\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA1LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvY2VydGlmaWNhdGUuanM/OTUwMCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9SYW50YW5lbi9ub2RlLWR0bHMvYmxvYi8yNWE3ZGM4NjFiZGEzOGNmZWFjOTNhNzIzNTAwZWVhNGYwYWMyZTg2L0NlcnRpZmljYXRlLmpzXG4vLyB0aGFua3MgdG8gQFJhbnRhbmVuXG5cbid1c2Ugc3RyaWN0J1xuXG52YXIgYXNuID0gcmVxdWlyZSgnYXNuMS5qcycpXG5cbnZhciBUaW1lID0gYXNuLmRlZmluZSgnVGltZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jaG9pY2Uoe1xuICAgIHV0Y1RpbWU6IHRoaXMudXRjdGltZSgpLFxuICAgIGdlbmVyYWxUaW1lOiB0aGlzLmdlbnRpbWUoKVxuICB9KVxufSlcblxudmFyIEF0dHJpYnV0ZVR5cGVWYWx1ZSA9IGFzbi5kZWZpbmUoJ0F0dHJpYnV0ZVR5cGVWYWx1ZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3R5cGUnKS5vYmppZCgpLFxuICAgIHRoaXMua2V5KCd2YWx1ZScpLmFueSgpXG4gIClcbn0pXG5cbnZhciBBbGdvcml0aG1JZGVudGlmaWVyID0gYXNuLmRlZmluZSgnQWxnb3JpdGhtSWRlbnRpZmllcicsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLm9iamlkKCksXG4gICAgdGhpcy5rZXkoJ3BhcmFtZXRlcnMnKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdjdXJ2ZScpLm9iamlkKCkub3B0aW9uYWwoKVxuICApXG59KVxuXG52YXIgU3ViamVjdFB1YmxpY0tleUluZm8gPSBhc24uZGVmaW5lKCdTdWJqZWN0UHVibGljS2V5SW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFB1YmxpY0tleScpLmJpdHN0cigpXG4gIClcbn0pXG5cbnZhciBSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lID0gYXNuLmRlZmluZSgnUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXRvZihBdHRyaWJ1dGVUeXBlVmFsdWUpXG59KVxuXG52YXIgUkROU2VxdWVuY2UgPSBhc24uZGVmaW5lKCdSRE5TZXF1ZW5jZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXFvZihSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lKVxufSlcblxudmFyIE5hbWUgPSBhc24uZGVmaW5lKCdOYW1lJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLmNob2ljZSh7XG4gICAgcmRuU2VxdWVuY2U6IHRoaXMudXNlKFJETlNlcXVlbmNlKVxuICB9KVxufSlcblxudmFyIFZhbGlkaXR5ID0gYXNuLmRlZmluZSgnVmFsaWRpdHknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdub3RCZWZvcmUnKS51c2UoVGltZSksXG4gICAgdGhpcy5rZXkoJ25vdEFmdGVyJykudXNlKFRpbWUpXG4gIClcbn0pXG5cbnZhciBFeHRlbnNpb24gPSBhc24uZGVmaW5lKCdFeHRlbnNpb24nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdleHRuSUQnKS5vYmppZCgpLFxuICAgIHRoaXMua2V5KCdjcml0aWNhbCcpLmJvb2woKS5kZWYoZmFsc2UpLFxuICAgIHRoaXMua2V5KCdleHRuVmFsdWUnKS5vY3RzdHIoKVxuICApXG59KVxuXG52YXIgVEJTQ2VydGlmaWNhdGUgPSBhc24uZGVmaW5lKCdUQlNDZXJ0aWZpY2F0ZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3ZlcnNpb24nKS5leHBsaWNpdCgwKS5pbnQoKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdzZXJpYWxOdW1iZXInKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnc2lnbmF0dXJlJykudXNlKEFsZ29yaXRobUlkZW50aWZpZXIpLFxuICAgIHRoaXMua2V5KCdpc3N1ZXInKS51c2UoTmFtZSksXG4gICAgdGhpcy5rZXkoJ3ZhbGlkaXR5JykudXNlKFZhbGlkaXR5KSxcbiAgICB0aGlzLmtleSgnc3ViamVjdCcpLnVzZShOYW1lKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFB1YmxpY0tleUluZm8nKS51c2UoU3ViamVjdFB1YmxpY0tleUluZm8pLFxuICAgIHRoaXMua2V5KCdpc3N1ZXJVbmlxdWVJRCcpLmltcGxpY2l0KDEpLmJpdHN0cigpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RVbmlxdWVJRCcpLmltcGxpY2l0KDIpLmJpdHN0cigpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ2V4dGVuc2lvbnMnKS5leHBsaWNpdCgzKS5zZXFvZihFeHRlbnNpb24pLm9wdGlvbmFsKClcbiAgKVxufSlcblxudmFyIFg1MDlDZXJ0aWZpY2F0ZSA9IGFzbi5kZWZpbmUoJ1g1MDlDZXJ0aWZpY2F0ZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3Ric0NlcnRpZmljYXRlJykudXNlKFRCU0NlcnRpZmljYXRlKSxcbiAgICB0aGlzLmtleSgnc2lnbmF0dXJlQWxnb3JpdGhtJykudXNlKEFsZ29yaXRobUlkZW50aWZpZXIpLFxuICAgIHRoaXMua2V5KCdzaWduYXR1cmVWYWx1ZScpLmJpdHN0cigpXG4gIClcbn0pXG5cbm1vZHVsZS5leHBvcnRzID0gWDUwOUNlcnRpZmljYXRlXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9wYXJzZS1hc24xL2NlcnRpZmljYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAyMDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///205\n");

/***/ }),
/* 206 */
/***/ (function(module, exports) {

eval("module.exports = {\"2.16.840.1.101.3.4.1.1\":\"aes-128-ecb\",\"2.16.840.1.101.3.4.1.2\":\"aes-128-cbc\",\"2.16.840.1.101.3.4.1.3\":\"aes-128-ofb\",\"2.16.840.1.101.3.4.1.4\":\"aes-128-cfb\",\"2.16.840.1.101.3.4.1.21\":\"aes-192-ecb\",\"2.16.840.1.101.3.4.1.22\":\"aes-192-cbc\",\"2.16.840.1.101.3.4.1.23\":\"aes-192-ofb\",\"2.16.840.1.101.3.4.1.24\":\"aes-192-cfb\",\"2.16.840.1.101.3.4.1.41\":\"aes-256-ecb\",\"2.16.840.1.101.3.4.1.42\":\"aes-256-cbc\",\"2.16.840.1.101.3.4.1.43\":\"aes-256-ofb\",\"2.16.840.1.101.3.4.1.44\":\"aes-256-cfb\"}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA2LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvYWVzaWQuanNvbj9mMTgwIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge1wiMi4xNi44NDAuMS4xMDEuMy40LjEuMVwiOlwiYWVzLTEyOC1lY2JcIixcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjJcIjpcImFlcy0xMjgtY2JjXCIsXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4zXCI6XCJhZXMtMTI4LW9mYlwiLFwiMi4xNi44NDAuMS4xMDEuMy40LjEuNFwiOlwiYWVzLTEyOC1jZmJcIixcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIxXCI6XCJhZXMtMTkyLWVjYlwiLFwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjJcIjpcImFlcy0xOTItY2JjXCIsXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yM1wiOlwiYWVzLTE5Mi1vZmJcIixcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjI0XCI6XCJhZXMtMTkyLWNmYlwiLFwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDFcIjpcImFlcy0yNTYtZWNiXCIsXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MlwiOlwiYWVzLTI1Ni1jYmNcIixcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQzXCI6XCJhZXMtMjU2LW9mYlwiLFwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDRcIjpcImFlcy0yNTYtY2ZiXCJ9XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9hZXNpZC5qc29uXG4vLyBtb2R1bGUgaWQgPSAyMDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///206\n");

/***/ }),
/* 207 */
/***/ (function(module, exports, __webpack_require__) {

eval("// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r\\+\\/\\=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r\\+\\/\\=]+)-----END \\1-----$/m\nvar evp = __webpack_require__(25)\nvar ciphers = __webpack_require__(38)\nvar Buffer = __webpack_require__(1).Buffer\nmodule.exports = function (okey, password) {\n  var key = okey.toString()\n  var match = key.match(findProc)\n  var decrypted\n  if (!match) {\n    var match2 = key.match(fullRegex)\n    decrypted = new Buffer(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n  } else {\n    var suite = 'aes' + match[1]\n    var iv = Buffer.from(match[2], 'hex')\n    var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n    var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n    var out = []\n    var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n    out.push(cipher.update(cipherText))\n    out.push(cipher.final())\n    decrypted = Buffer.concat(out)\n  }\n  var tag = key.match(startRegex)[1]\n  return {\n    tag: tag,\n    data: decrypted\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA3LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvZml4UHJvYy5qcz9lZDU0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGFkYXB0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYXBhdGlsL3BlbXN0cmlwXG52YXIgZmluZFByb2MgPSAvUHJvYy1UeXBlOiA0LEVOQ1JZUFRFRFtcXG5cXHJdK0RFSy1JbmZvOiBBRVMtKCg/OjEyOCl8KD86MTkyKXwoPzoyNTYpKS1DQkMsKFswLTlBLUhdKylbXFxuXFxyXSsoWzAtOUEtelxcblxcclxcK1xcL1xcPV0rKVtcXG5cXHJdKy9tXG52YXIgc3RhcnRSZWdleCA9IC9eLS0tLS1CRUdJTiAoKD86Lio/IEtFWSl8Q0VSVElGSUNBVEUpLS0tLS0vbVxudmFyIGZ1bGxSZWdleCA9IC9eLS0tLS1CRUdJTiAoKD86Lio/IEtFWSl8Q0VSVElGSUNBVEUpLS0tLS0oWzAtOUEtelxcblxcclxcK1xcL1xcPV0rKS0tLS0tRU5EIFxcMS0tLS0tJC9tXG52YXIgZXZwID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxudmFyIGNpcGhlcnMgPSByZXF1aXJlKCdicm93c2VyaWZ5LWFlcycpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9rZXksIHBhc3N3b3JkKSB7XG4gIHZhciBrZXkgPSBva2V5LnRvU3RyaW5nKClcbiAgdmFyIG1hdGNoID0ga2V5Lm1hdGNoKGZpbmRQcm9jKVxuICB2YXIgZGVjcnlwdGVkXG4gIGlmICghbWF0Y2gpIHtcbiAgICB2YXIgbWF0Y2gyID0ga2V5Lm1hdGNoKGZ1bGxSZWdleClcbiAgICBkZWNyeXB0ZWQgPSBuZXcgQnVmZmVyKG1hdGNoMlsyXS5yZXBsYWNlKC9bXFxyXFxuXS9nLCAnJyksICdiYXNlNjQnKVxuICB9IGVsc2Uge1xuICAgIHZhciBzdWl0ZSA9ICdhZXMnICsgbWF0Y2hbMV1cbiAgICB2YXIgaXYgPSBCdWZmZXIuZnJvbShtYXRjaFsyXSwgJ2hleCcpXG4gICAgdmFyIGNpcGhlclRleHQgPSBCdWZmZXIuZnJvbShtYXRjaFszXS5yZXBsYWNlKC9bXFxyXFxuXS9nLCAnJyksICdiYXNlNjQnKVxuICAgIHZhciBjaXBoZXJLZXkgPSBldnAocGFzc3dvcmQsIGl2LnNsaWNlKDAsIDgpLCBwYXJzZUludChtYXRjaFsxXSwgMTApKS5rZXlcbiAgICB2YXIgb3V0ID0gW11cbiAgICB2YXIgY2lwaGVyID0gY2lwaGVycy5jcmVhdGVEZWNpcGhlcml2KHN1aXRlLCBjaXBoZXJLZXksIGl2KVxuICAgIG91dC5wdXNoKGNpcGhlci51cGRhdGUoY2lwaGVyVGV4dCkpXG4gICAgb3V0LnB1c2goY2lwaGVyLmZpbmFsKCkpXG4gICAgZGVjcnlwdGVkID0gQnVmZmVyLmNvbmNhdChvdXQpXG4gIH1cbiAgdmFyIHRhZyA9IGtleS5tYXRjaChzdGFydFJlZ2V4KVsxXVxuICByZXR1cm4ge1xuICAgIHRhZzogdGFnLFxuICAgIGRhdGE6IGRlY3J5cHRlZFxuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9wYXJzZS1hc24xL2ZpeFByb2MuanNcbi8vIG1vZHVsZSBpZCA9IDIwN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///207\n");

/***/ }),
/* 208 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(Buffer) {// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar BN = __webpack_require__(4)\nvar EC = __webpack_require__(6).ec\nvar parseKeys = __webpack_require__(27)\nvar curves = __webpack_require__(81)\n\nfunction verify (sig, hash, key, signType, tag) {\n  var pub = parseKeys(key)\n  if (pub.type === 'ec') {\n    // rsa keys can be interpreted as ecdsa ones in openssl\n    if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n    return ecVerify(sig, hash, pub)\n  } else if (pub.type === 'dsa') {\n    if (signType !== 'dsa') throw new Error('wrong public key type')\n    return dsaVerify(sig, hash, pub)\n  } else {\n    if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n  }\n  hash = Buffer.concat([tag, hash])\n  var len = pub.modulus.byteLength()\n  var pad = [ 1 ]\n  var padNum = 0\n  while (hash.length + pad.length + 2 < len) {\n    pad.push(0xff)\n    padNum++\n  }\n  pad.push(0x00)\n  var i = -1\n  while (++i < hash.length) {\n    pad.push(hash[i])\n  }\n  pad = new Buffer(pad)\n  var red = BN.mont(pub.modulus)\n  sig = new BN(sig).toRed(red)\n\n  sig = sig.redPow(new BN(pub.publicExponent))\n  sig = new Buffer(sig.fromRed().toArray())\n  var out = padNum < 8 ? 1 : 0\n  len = Math.min(sig.length, pad.length)\n  if (sig.length !== pad.length) out = 1\n\n  i = -1\n  while (++i < len) out |= sig[i] ^ pad[i]\n  return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n  var curveId = curves[pub.data.algorithm.curve.join('.')]\n  if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n  var curve = new EC(curveId)\n  var pubkey = pub.data.subjectPrivateKey.data\n\n  return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n  var p = pub.data.p\n  var q = pub.data.q\n  var g = pub.data.g\n  var y = pub.data.pub_key\n  var unpacked = parseKeys.signature.decode(sig, 'der')\n  var s = unpacked.s\n  var r = unpacked.r\n  checkValue(s, q)\n  checkValue(r, q)\n  var montp = BN.mont(p)\n  var w = s.invm(q)\n  var v = g.toRed(montp)\n    .redPow(new BN(hash).mul(w).mod(q))\n    .fromRed()\n    .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n    .mod(p)\n    .mod(q)\n  return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n  if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n  if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5).Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA4LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9icm93c2VyL3ZlcmlmeS5qcz8yODI1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIG11Y2ggb2YgdGhpcyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9zZWxmLXNpZ25lZC9ibG9iL2doLXBhZ2VzL2xpYi9yc2EuanNcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJylcbnZhciBFQyA9IHJlcXVpcmUoJ2VsbGlwdGljJykuZWNcbnZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJylcbnZhciBjdXJ2ZXMgPSByZXF1aXJlKCcuL2N1cnZlcy5qc29uJylcblxuZnVuY3Rpb24gdmVyaWZ5IChzaWcsIGhhc2gsIGtleSwgc2lnblR5cGUsIHRhZykge1xuICB2YXIgcHViID0gcGFyc2VLZXlzKGtleSlcbiAgaWYgKHB1Yi50eXBlID09PSAnZWMnKSB7XG4gICAgLy8gcnNhIGtleXMgY2FuIGJlIGludGVycHJldGVkIGFzIGVjZHNhIG9uZXMgaW4gb3BlbnNzbFxuICAgIGlmIChzaWduVHlwZSAhPT0gJ2VjZHNhJyAmJiBzaWduVHlwZSAhPT0gJ2VjZHNhL3JzYScpIHRocm93IG5ldyBFcnJvcignd3JvbmcgcHVibGljIGtleSB0eXBlJylcbiAgICByZXR1cm4gZWNWZXJpZnkoc2lnLCBoYXNoLCBwdWIpXG4gIH0gZWxzZSBpZiAocHViLnR5cGUgPT09ICdkc2EnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZHNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwdWJsaWMga2V5IHR5cGUnKVxuICAgIHJldHVybiBkc2FWZXJpZnkoc2lnLCBoYXNoLCBwdWIpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAncnNhJyAmJiBzaWduVHlwZSAhPT0gJ2VjZHNhL3JzYScpIHRocm93IG5ldyBFcnJvcignd3JvbmcgcHVibGljIGtleSB0eXBlJylcbiAgfVxuICBoYXNoID0gQnVmZmVyLmNvbmNhdChbdGFnLCBoYXNoXSlcbiAgdmFyIGxlbiA9IHB1Yi5tb2R1bHVzLmJ5dGVMZW5ndGgoKVxuICB2YXIgcGFkID0gWyAxIF1cbiAgdmFyIHBhZE51bSA9IDBcbiAgd2hpbGUgKGhhc2gubGVuZ3RoICsgcGFkLmxlbmd0aCArIDIgPCBsZW4pIHtcbiAgICBwYWQucHVzaCgweGZmKVxuICAgIHBhZE51bSsrXG4gIH1cbiAgcGFkLnB1c2goMHgwMClcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgaGFzaC5sZW5ndGgpIHtcbiAgICBwYWQucHVzaChoYXNoW2ldKVxuICB9XG4gIHBhZCA9IG5ldyBCdWZmZXIocGFkKVxuICB2YXIgcmVkID0gQk4ubW9udChwdWIubW9kdWx1cylcbiAgc2lnID0gbmV3IEJOKHNpZykudG9SZWQocmVkKVxuXG4gIHNpZyA9IHNpZy5yZWRQb3cobmV3IEJOKHB1Yi5wdWJsaWNFeHBvbmVudCkpXG4gIHNpZyA9IG5ldyBCdWZmZXIoc2lnLmZyb21SZWQoKS50b0FycmF5KCkpXG4gIHZhciBvdXQgPSBwYWROdW0gPCA4ID8gMSA6IDBcbiAgbGVuID0gTWF0aC5taW4oc2lnLmxlbmd0aCwgcGFkLmxlbmd0aClcbiAgaWYgKHNpZy5sZW5ndGggIT09IHBhZC5sZW5ndGgpIG91dCA9IDFcblxuICBpID0gLTFcbiAgd2hpbGUgKCsraSA8IGxlbikgb3V0IHw9IHNpZ1tpXSBeIHBhZFtpXVxuICByZXR1cm4gb3V0ID09PSAwXG59XG5cbmZ1bmN0aW9uIGVjVmVyaWZ5IChzaWcsIGhhc2gsIHB1Yikge1xuICB2YXIgY3VydmVJZCA9IGN1cnZlc1twdWIuZGF0YS5hbGdvcml0aG0uY3VydmUuam9pbignLicpXVxuICBpZiAoIWN1cnZlSWQpIHRocm93IG5ldyBFcnJvcigndW5rbm93biBjdXJ2ZSAnICsgcHViLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oJy4nKSlcblxuICB2YXIgY3VydmUgPSBuZXcgRUMoY3VydmVJZClcbiAgdmFyIHB1YmtleSA9IHB1Yi5kYXRhLnN1YmplY3RQcml2YXRlS2V5LmRhdGFcblxuICByZXR1cm4gY3VydmUudmVyaWZ5KGhhc2gsIHNpZywgcHVia2V5KVxufVxuXG5mdW5jdGlvbiBkc2FWZXJpZnkgKHNpZywgaGFzaCwgcHViKSB7XG4gIHZhciBwID0gcHViLmRhdGEucFxuICB2YXIgcSA9IHB1Yi5kYXRhLnFcbiAgdmFyIGcgPSBwdWIuZGF0YS5nXG4gIHZhciB5ID0gcHViLmRhdGEucHViX2tleVxuICB2YXIgdW5wYWNrZWQgPSBwYXJzZUtleXMuc2lnbmF0dXJlLmRlY29kZShzaWcsICdkZXInKVxuICB2YXIgcyA9IHVucGFja2VkLnNcbiAgdmFyIHIgPSB1bnBhY2tlZC5yXG4gIGNoZWNrVmFsdWUocywgcSlcbiAgY2hlY2tWYWx1ZShyLCBxKVxuICB2YXIgbW9udHAgPSBCTi5tb250KHApXG4gIHZhciB3ID0gcy5pbnZtKHEpXG4gIHZhciB2ID0gZy50b1JlZChtb250cClcbiAgICAucmVkUG93KG5ldyBCTihoYXNoKS5tdWwodykubW9kKHEpKVxuICAgIC5mcm9tUmVkKClcbiAgICAubXVsKHkudG9SZWQobW9udHApLnJlZFBvdyhyLm11bCh3KS5tb2QocSkpLmZyb21SZWQoKSlcbiAgICAubW9kKHApXG4gICAgLm1vZChxKVxuICByZXR1cm4gdi5jbXAocikgPT09IDBcbn1cblxuZnVuY3Rpb24gY2hlY2tWYWx1ZSAoYiwgcSkge1xuICBpZiAoYi5jbXBuKDApIDw9IDApIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzaWcnKVxuICBpZiAoYi5jbXAocSkgPj0gcSkgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHNpZycpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmVyaWZ5XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ24vYnJvd3Nlci92ZXJpZnkuanNcbi8vIG1vZHVsZSBpZCA9IDIwOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///208\n");

/***/ }),
/* 209 */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(Buffer) {var elliptic = __webpack_require__(6)\nvar BN = __webpack_require__(4)\n\nmodule.exports = function createECDH (curve) {\n  return new ECDH(curve)\n}\n\nvar aliases = {\n  secp256k1: {\n    name: 'secp256k1',\n    byteLength: 32\n  },\n  secp224r1: {\n    name: 'p224',\n    byteLength: 28\n  },\n  prime256v1: {\n    name: 'p256',\n    byteLength: 32\n  },\n  prime192v1: {\n    name: 'p192',\n    byteLength: 24\n  },\n  ed25519: {\n    name: 'ed25519',\n    byteLength: 32\n  },\n  secp384r1: {\n    name: 'p384',\n    byteLength: 48\n  },\n  secp521r1: {\n    name: 'p521',\n    byteLength: 66\n  }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n  this.curveType = aliases[curve]\n  if (!this.curveType) {\n    this.curveType = {\n      name: curve\n    }\n  }\n  this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n  this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n  this.keys = this.curve.genKeyPair()\n  return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n  inenc = inenc || 'utf8'\n  if (!Buffer.isBuffer(other)) {\n    other = new Buffer(other, inenc)\n  }\n  var otherPub = this.curve.keyFromPublic(other).getPublic()\n  var out = otherPub.mul(this.keys.getPrivate()).getX()\n  return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n  var key = this.keys.getPublic(format === 'compressed', true)\n  if (format === 'hybrid') {\n    if (key[key.length - 1] % 2) {\n      key[0] = 7\n    } else {\n      key[0] = 6\n    }\n  }\n  return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n  return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n  enc = enc || 'utf8'\n  if (!Buffer.isBuffer(pub)) {\n    pub = new Buffer(pub, enc)\n  }\n  this.keys._importPublic(pub)\n  return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n  enc = enc || 'utf8'\n  if (!Buffer.isBuffer(priv)) {\n    priv = new Buffer(priv, enc)\n  }\n\n  var _priv = new BN(priv)\n  _priv = _priv.toString(16)\n  this.keys = this.curve.genKeyPair()\n  this.keys._importPrivate(_priv)\n  return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n  if (!Array.isArray(bn)) {\n    bn = bn.toArray()\n  }\n  var buf = new Buffer(bn)\n  if (len && buf.length < len) {\n    var zeros = new Buffer(len - buf.length)\n    zeros.fill(0)\n    buf = Buffer.concat([zeros, buf])\n  }\n  if (!enc) {\n    return buf\n  } else {\n    return buf.toString(enc)\n  }\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5).Buffer))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjA5LmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1lY2RoL2Jyb3dzZXIuanM/ODMwZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZWxsaXB0aWMgPSByZXF1aXJlKCdlbGxpcHRpYycpXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlRUNESCAoY3VydmUpIHtcbiAgcmV0dXJuIG5ldyBFQ0RIKGN1cnZlKVxufVxuXG52YXIgYWxpYXNlcyA9IHtcbiAgc2VjcDI1NmsxOiB7XG4gICAgbmFtZTogJ3NlY3AyNTZrMScsXG4gICAgYnl0ZUxlbmd0aDogMzJcbiAgfSxcbiAgc2VjcDIyNHIxOiB7XG4gICAgbmFtZTogJ3AyMjQnLFxuICAgIGJ5dGVMZW5ndGg6IDI4XG4gIH0sXG4gIHByaW1lMjU2djE6IHtcbiAgICBuYW1lOiAncDI1NicsXG4gICAgYnl0ZUxlbmd0aDogMzJcbiAgfSxcbiAgcHJpbWUxOTJ2MToge1xuICAgIG5hbWU6ICdwMTkyJyxcbiAgICBieXRlTGVuZ3RoOiAyNFxuICB9LFxuICBlZDI1NTE5OiB7XG4gICAgbmFtZTogJ2VkMjU1MTknLFxuICAgIGJ5dGVMZW5ndGg6IDMyXG4gIH0sXG4gIHNlY3AzODRyMToge1xuICAgIG5hbWU6ICdwMzg0JyxcbiAgICBieXRlTGVuZ3RoOiA0OFxuICB9LFxuICBzZWNwNTIxcjE6IHtcbiAgICBuYW1lOiAncDUyMScsXG4gICAgYnl0ZUxlbmd0aDogNjZcbiAgfVxufVxuXG5hbGlhc2VzLnAyMjQgPSBhbGlhc2VzLnNlY3AyMjRyMVxuYWxpYXNlcy5wMjU2ID0gYWxpYXNlcy5zZWNwMjU2cjEgPSBhbGlhc2VzLnByaW1lMjU2djFcbmFsaWFzZXMucDE5MiA9IGFsaWFzZXMuc2VjcDE5MnIxID0gYWxpYXNlcy5wcmltZTE5MnYxXG5hbGlhc2VzLnAzODQgPSBhbGlhc2VzLnNlY3AzODRyMVxuYWxpYXNlcy5wNTIxID0gYWxpYXNlcy5zZWNwNTIxcjFcblxuZnVuY3Rpb24gRUNESCAoY3VydmUpIHtcbiAgdGhpcy5jdXJ2ZVR5cGUgPSBhbGlhc2VzW2N1cnZlXVxuICBpZiAoIXRoaXMuY3VydmVUeXBlKSB7XG4gICAgdGhpcy5jdXJ2ZVR5cGUgPSB7XG4gICAgICBuYW1lOiBjdXJ2ZVxuICAgIH1cbiAgfVxuICB0aGlzLmN1cnZlID0gbmV3IGVsbGlwdGljLmVjKHRoaXMuY3VydmVUeXBlLm5hbWUpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuICB0aGlzLmtleXMgPSB2b2lkIDBcbn1cblxuRUNESC5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzID0gZnVuY3Rpb24gKGVuYywgZm9ybWF0KSB7XG4gIHRoaXMua2V5cyA9IHRoaXMuY3VydmUuZ2VuS2V5UGFpcigpXG4gIHJldHVybiB0aGlzLmdldFB1YmxpY0tleShlbmMsIGZvcm1hdClcbn1cblxuRUNESC5wcm90b3R5cGUuY29tcHV0ZVNlY3JldCA9IGZ1bmN0aW9uIChvdGhlciwgaW5lbmMsIGVuYykge1xuICBpbmVuYyA9IGluZW5jIHx8ICd1dGY4J1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihvdGhlcikpIHtcbiAgICBvdGhlciA9IG5ldyBCdWZmZXIob3RoZXIsIGluZW5jKVxuICB9XG4gIHZhciBvdGhlclB1YiA9IHRoaXMuY3VydmUua2V5RnJvbVB1YmxpYyhvdGhlcikuZ2V0UHVibGljKClcbiAgdmFyIG91dCA9IG90aGVyUHViLm11bCh0aGlzLmtleXMuZ2V0UHJpdmF0ZSgpKS5nZXRYKClcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKG91dCwgZW5jLCB0aGlzLmN1cnZlVHlwZS5ieXRlTGVuZ3RoKVxufVxuXG5FQ0RILnByb3RvdHlwZS5nZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiAoZW5jLCBmb3JtYXQpIHtcbiAgdmFyIGtleSA9IHRoaXMua2V5cy5nZXRQdWJsaWMoZm9ybWF0ID09PSAnY29tcHJlc3NlZCcsIHRydWUpXG4gIGlmIChmb3JtYXQgPT09ICdoeWJyaWQnKSB7XG4gICAgaWYgKGtleVtrZXkubGVuZ3RoIC0gMV0gJSAyKSB7XG4gICAgICBrZXlbMF0gPSA3XG4gICAgfSBlbHNlIHtcbiAgICAgIGtleVswXSA9IDZcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKGtleSwgZW5jKVxufVxuXG5FQ0RILnByb3RvdHlwZS5nZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gKGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5rZXlzLmdldFByaXZhdGUoKSwgZW5jKVxufVxuXG5FQ0RILnByb3RvdHlwZS5zZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiAocHViLCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4J1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwdWIpKSB7XG4gICAgcHViID0gbmV3IEJ1ZmZlcihwdWIsIGVuYylcbiAgfVxuICB0aGlzLmtleXMuX2ltcG9ydFB1YmxpYyhwdWIpXG4gIHJldHVybiB0aGlzXG59XG5cbkVDREgucHJvdG90eXBlLnNldFByaXZhdGVLZXkgPSBmdW5jdGlvbiAocHJpdiwgZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAndXRmOCdcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpdikpIHtcbiAgICBwcml2ID0gbmV3IEJ1ZmZlcihwcml2LCBlbmMpXG4gIH1cblxuICB2YXIgX3ByaXYgPSBuZXcgQk4ocHJpdilcbiAgX3ByaXYgPSBfcHJpdi50b1N0cmluZygxNilcbiAgdGhpcy5rZXlzID0gdGhpcy5jdXJ2ZS5nZW5LZXlQYWlyKClcbiAgdGhpcy5rZXlzLl9pbXBvcnRQcml2YXRlKF9wcml2KVxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiBmb3JtYXRSZXR1cm5WYWx1ZSAoYm4sIGVuYywgbGVuKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShibikpIHtcbiAgICBibiA9IGJuLnRvQXJyYXkoKVxuICB9XG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKGJuKVxuICBpZiAobGVuICYmIGJ1Zi5sZW5ndGggPCBsZW4pIHtcbiAgICB2YXIgemVyb3MgPSBuZXcgQnVmZmVyKGxlbiAtIGJ1Zi5sZW5ndGgpXG4gICAgemVyb3MuZmlsbCgwKVxuICAgIGJ1ZiA9IEJ1ZmZlci5jb25jYXQoW3plcm9zLCBidWZdKVxuICB9XG4gIGlmICghZW5jKSB7XG4gICAgcmV0dXJuIGJ1ZlxuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWYudG9TdHJpbmcoZW5jKVxuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jcmVhdGUtZWNkaC9icm93c2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAyMDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///209\n");

/***/ }),
/* 210 */
/***/ (function(module, exports, __webpack_require__) {

eval("exports.publicEncrypt = __webpack_require__(211)\nexports.privateDecrypt = __webpack_require__(212)\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n  return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n  return exports.privateDecrypt(key, buf, true)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEwLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L2Jyb3dzZXIuanM/ZjRmZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnRzLnB1YmxpY0VuY3J5cHQgPSByZXF1aXJlKCcuL3B1YmxpY0VuY3J5cHQnKVxuZXhwb3J0cy5wcml2YXRlRGVjcnlwdCA9IHJlcXVpcmUoJy4vcHJpdmF0ZURlY3J5cHQnKVxuXG5leHBvcnRzLnByaXZhdGVFbmNyeXB0ID0gZnVuY3Rpb24gcHJpdmF0ZUVuY3J5cHQgKGtleSwgYnVmKSB7XG4gIHJldHVybiBleHBvcnRzLnB1YmxpY0VuY3J5cHQoa2V5LCBidWYsIHRydWUpXG59XG5cbmV4cG9ydHMucHVibGljRGVjcnlwdCA9IGZ1bmN0aW9uIHB1YmxpY0RlY3J5cHQgKGtleSwgYnVmKSB7XG4gIHJldHVybiBleHBvcnRzLnByaXZhdGVEZWNyeXB0KGtleSwgYnVmLCB0cnVlKVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvYnJvd3Nlci5qc1xuLy8gbW9kdWxlIGlkID0gMjEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///210\n");

/***/ }),
/* 211 */
/***/ (function(module, exports, __webpack_require__) {

eval("var parseKeys = __webpack_require__(27)\nvar randomBytes = __webpack_require__(13)\nvar createHash = __webpack_require__(15)\nvar mgf = __webpack_require__(82)\nvar xor = __webpack_require__(83)\nvar BN = __webpack_require__(4)\nvar withPublic = __webpack_require__(84)\nvar crt = __webpack_require__(40)\nvar Buffer = __webpack_require__(1).Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n  var padding\n  if (publicKey.padding) {\n    padding = publicKey.padding\n  } else if (reverse) {\n    padding = 1\n  } else {\n    padding = 4\n  }\n  var key = parseKeys(publicKey)\n  var paddedMsg\n  if (padding === 4) {\n    paddedMsg = oaep(key, msg)\n  } else if (padding === 1) {\n    paddedMsg = pkcs1(key, msg, reverse)\n  } else if (padding === 3) {\n    paddedMsg = new BN(msg)\n    if (paddedMsg.cmp(key.modulus) >= 0) {\n      throw new Error('data too long for modulus')\n    }\n  } else {\n    throw new Error('unknown padding')\n  }\n  if (reverse) {\n    return crt(paddedMsg, key)\n  } else {\n    return withPublic(paddedMsg, key)\n  }\n}\n\nfunction oaep (key, msg) {\n  var k = key.modulus.byteLength()\n  var mLen = msg.length\n  var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n  var hLen = iHash.length\n  var hLen2 = 2 * hLen\n  if (mLen > k - hLen2 - 2) {\n    throw new Error('message too long')\n  }\n  var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n  var dblen = k - hLen - 1\n  var seed = randomBytes(hLen)\n  var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n  var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n  return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n  var mLen = msg.length\n  var k = key.modulus.byteLength()\n  if (mLen > k - 11) {\n    throw new Error('message too long')\n  }\n  var ps\n  if (reverse) {\n    ps = Buffer.alloc(k - mLen - 3, 0xff)\n  } else {\n    ps = nonZero(k - mLen - 3)\n  }\n  return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n  var out = Buffer.allocUnsafe(len)\n  var i = 0\n  var cache = randomBytes(len * 2)\n  var cur = 0\n  var num\n  while (i < len) {\n    if (cur === cache.length) {\n      cache = randomBytes(len * 2)\n      cur = 0\n    }\n    num = cache[cur++]\n    if (num) {\n      out[i++] = num\n    }\n  }\n  return out\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjExLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3B1YmxpY0VuY3J5cHQuanM/ZjYxNiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcGFyc2VLZXlzID0gcmVxdWlyZSgncGFyc2UtYXNuMScpXG52YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpXG52YXIgY3JlYXRlSGFzaCA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoJylcbnZhciBtZ2YgPSByZXF1aXJlKCcuL21nZicpXG52YXIgeG9yID0gcmVxdWlyZSgnLi94b3InKVxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIHdpdGhQdWJsaWMgPSByZXF1aXJlKCcuL3dpdGhQdWJsaWMnKVxudmFyIGNydCA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktcnNhJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHB1YmxpY0VuY3J5cHQgKHB1YmxpY0tleSwgbXNnLCByZXZlcnNlKSB7XG4gIHZhciBwYWRkaW5nXG4gIGlmIChwdWJsaWNLZXkucGFkZGluZykge1xuICAgIHBhZGRpbmcgPSBwdWJsaWNLZXkucGFkZGluZ1xuICB9IGVsc2UgaWYgKHJldmVyc2UpIHtcbiAgICBwYWRkaW5nID0gMVxuICB9IGVsc2Uge1xuICAgIHBhZGRpbmcgPSA0XG4gIH1cbiAgdmFyIGtleSA9IHBhcnNlS2V5cyhwdWJsaWNLZXkpXG4gIHZhciBwYWRkZWRNc2dcbiAgaWYgKHBhZGRpbmcgPT09IDQpIHtcbiAgICBwYWRkZWRNc2cgPSBvYWVwKGtleSwgbXNnKVxuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDEpIHtcbiAgICBwYWRkZWRNc2cgPSBwa2NzMShrZXksIG1zZywgcmV2ZXJzZSlcbiAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAzKSB7XG4gICAgcGFkZGVkTXNnID0gbmV3IEJOKG1zZylcbiAgICBpZiAocGFkZGVkTXNnLmNtcChrZXkubW9kdWx1cykgPj0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIHRvbyBsb25nIGZvciBtb2R1bHVzJylcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIHBhZGRpbmcnKVxuICB9XG4gIGlmIChyZXZlcnNlKSB7XG4gICAgcmV0dXJuIGNydChwYWRkZWRNc2csIGtleSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gd2l0aFB1YmxpYyhwYWRkZWRNc2csIGtleSlcbiAgfVxufVxuXG5mdW5jdGlvbiBvYWVwIChrZXksIG1zZykge1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKVxuICB2YXIgbUxlbiA9IG1zZy5sZW5ndGhcbiAgdmFyIGlIYXNoID0gY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShCdWZmZXIuYWxsb2MoMCkpLmRpZ2VzdCgpXG4gIHZhciBoTGVuID0gaUhhc2gubGVuZ3RoXG4gIHZhciBoTGVuMiA9IDIgKiBoTGVuXG4gIGlmIChtTGVuID4gayAtIGhMZW4yIC0gMikge1xuICAgIHRocm93IG5ldyBFcnJvcignbWVzc2FnZSB0b28gbG9uZycpXG4gIH1cbiAgdmFyIHBzID0gQnVmZmVyLmFsbG9jKGsgLSBtTGVuIC0gaExlbjIgLSAyKVxuICB2YXIgZGJsZW4gPSBrIC0gaExlbiAtIDFcbiAgdmFyIHNlZWQgPSByYW5kb21CeXRlcyhoTGVuKVxuICB2YXIgbWFza2VkRGIgPSB4b3IoQnVmZmVyLmNvbmNhdChbaUhhc2gsIHBzLCBCdWZmZXIuYWxsb2MoMSwgMSksIG1zZ10sIGRibGVuKSwgbWdmKHNlZWQsIGRibGVuKSlcbiAgdmFyIG1hc2tlZFNlZWQgPSB4b3Ioc2VlZCwgbWdmKG1hc2tlZERiLCBoTGVuKSlcbiAgcmV0dXJuIG5ldyBCTihCdWZmZXIuY29uY2F0KFtCdWZmZXIuYWxsb2MoMSksIG1hc2tlZFNlZWQsIG1hc2tlZERiXSwgaykpXG59XG5mdW5jdGlvbiBwa2NzMSAoa2V5LCBtc2csIHJldmVyc2UpIHtcbiAgdmFyIG1MZW4gPSBtc2cubGVuZ3RoXG4gIHZhciBrID0ga2V5Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIGlmIChtTGVuID4gayAtIDExKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXNzYWdlIHRvbyBsb25nJylcbiAgfVxuICB2YXIgcHNcbiAgaWYgKHJldmVyc2UpIHtcbiAgICBwcyA9IEJ1ZmZlci5hbGxvYyhrIC0gbUxlbiAtIDMsIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgcHMgPSBub25aZXJvKGsgLSBtTGVuIC0gMylcbiAgfVxuICByZXR1cm4gbmV3IEJOKEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5mcm9tKFswLCByZXZlcnNlID8gMSA6IDJdKSwgcHMsIEJ1ZmZlci5hbGxvYygxKSwgbXNnXSwgaykpXG59XG5mdW5jdGlvbiBub25aZXJvIChsZW4pIHtcbiAgdmFyIG91dCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW4pXG4gIHZhciBpID0gMFxuICB2YXIgY2FjaGUgPSByYW5kb21CeXRlcyhsZW4gKiAyKVxuICB2YXIgY3VyID0gMFxuICB2YXIgbnVtXG4gIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgaWYgKGN1ciA9PT0gY2FjaGUubGVuZ3RoKSB7XG4gICAgICBjYWNoZSA9IHJhbmRvbUJ5dGVzKGxlbiAqIDIpXG4gICAgICBjdXIgPSAwXG4gICAgfVxuICAgIG51bSA9IGNhY2hlW2N1cisrXVxuICAgIGlmIChudW0pIHtcbiAgICAgIG91dFtpKytdID0gbnVtXG4gICAgfVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3B1YmxpY0VuY3J5cHQuanNcbi8vIG1vZHVsZSBpZCA9IDIxMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///211\n");

/***/ }),
/* 212 */
/***/ (function(module, exports, __webpack_require__) {

eval("var parseKeys = __webpack_require__(27)\nvar mgf = __webpack_require__(82)\nvar xor = __webpack_require__(83)\nvar BN = __webpack_require__(4)\nvar crt = __webpack_require__(40)\nvar createHash = __webpack_require__(15)\nvar withPublic = __webpack_require__(84)\nvar Buffer = __webpack_require__(1).Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n  var padding\n  if (privateKey.padding) {\n    padding = privateKey.padding\n  } else if (reverse) {\n    padding = 1\n  } else {\n    padding = 4\n  }\n\n  var key = parseKeys(privateKey)\n  var k = key.modulus.byteLength()\n  if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n    throw new Error('decryption error')\n  }\n  var msg\n  if (reverse) {\n    msg = withPublic(new BN(enc), key)\n  } else {\n    msg = crt(enc, key)\n  }\n  var zBuffer = Buffer.alloc(k - msg.length)\n  msg = Buffer.concat([zBuffer, msg], k)\n  if (padding === 4) {\n    return oaep(key, msg)\n  } else if (padding === 1) {\n    return pkcs1(key, msg, reverse)\n  } else if (padding === 3) {\n    return msg\n  } else {\n    throw new Error('unknown padding')\n  }\n}\n\nfunction oaep (key, msg) {\n  var k = key.modulus.byteLength()\n  var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n  var hLen = iHash.length\n  if (msg[0] !== 0) {\n    throw new Error('decryption error')\n  }\n  var maskedSeed = msg.slice(1, hLen + 1)\n  var maskedDb = msg.slice(hLen + 1)\n  var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n  var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n  if (compare(iHash, db.slice(0, hLen))) {\n    throw new Error('decryption error')\n  }\n  var i = hLen\n  while (db[i] === 0) {\n    i++\n  }\n  if (db[i++] !== 1) {\n    throw new Error('decryption error')\n  }\n  return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n  var p1 = msg.slice(0, 2)\n  var i = 2\n  var status = 0\n  while (msg[i++] !== 0) {\n    if (i >= msg.length) {\n      status++\n      break\n    }\n  }\n  var ps = msg.slice(2, i - 1)\n\n  if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n    status++\n  }\n  if (ps.length < 8) {\n    status++\n  }\n  if (status) {\n    throw new Error('decryption error')\n  }\n  return msg.slice(i)\n}\nfunction compare (a, b) {\n  a = Buffer.from(a)\n  b = Buffer.from(b)\n  var dif = 0\n  var len = a.length\n  if (a.length !== b.length) {\n    dif++\n    len = Math.min(a.length, b.length)\n  }\n  var i = -1\n  while (++i < len) {\n    dif += (a[i] ^ b[i])\n  }\n  return dif\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEyLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3ByaXZhdGVEZWNyeXB0LmpzPzdmMWIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKVxudmFyIG1nZiA9IHJlcXVpcmUoJy4vbWdmJylcbnZhciB4b3IgPSByZXF1aXJlKCcuL3hvcicpXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKVxudmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpXG52YXIgd2l0aFB1YmxpYyA9IHJlcXVpcmUoJy4vd2l0aFB1YmxpYycpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwcml2YXRlRGVjcnlwdCAocHJpdmF0ZUtleSwgZW5jLCByZXZlcnNlKSB7XG4gIHZhciBwYWRkaW5nXG4gIGlmIChwcml2YXRlS2V5LnBhZGRpbmcpIHtcbiAgICBwYWRkaW5nID0gcHJpdmF0ZUtleS5wYWRkaW5nXG4gIH0gZWxzZSBpZiAocmV2ZXJzZSkge1xuICAgIHBhZGRpbmcgPSAxXG4gIH0gZWxzZSB7XG4gICAgcGFkZGluZyA9IDRcbiAgfVxuXG4gIHZhciBrZXkgPSBwYXJzZUtleXMocHJpdmF0ZUtleSlcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgaWYgKGVuYy5sZW5ndGggPiBrIHx8IG5ldyBCTihlbmMpLmNtcChrZXkubW9kdWx1cykgPj0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpXG4gIH1cbiAgdmFyIG1zZ1xuICBpZiAocmV2ZXJzZSkge1xuICAgIG1zZyA9IHdpdGhQdWJsaWMobmV3IEJOKGVuYyksIGtleSlcbiAgfSBlbHNlIHtcbiAgICBtc2cgPSBjcnQoZW5jLCBrZXkpXG4gIH1cbiAgdmFyIHpCdWZmZXIgPSBCdWZmZXIuYWxsb2MoayAtIG1zZy5sZW5ndGgpXG4gIG1zZyA9IEJ1ZmZlci5jb25jYXQoW3pCdWZmZXIsIG1zZ10sIGspXG4gIGlmIChwYWRkaW5nID09PSA0KSB7XG4gICAgcmV0dXJuIG9hZXAoa2V5LCBtc2cpXG4gIH0gZWxzZSBpZiAocGFkZGluZyA9PT0gMSkge1xuICAgIHJldHVybiBwa2NzMShrZXksIG1zZywgcmV2ZXJzZSlcbiAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAzKSB7XG4gICAgcmV0dXJuIG1zZ1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBwYWRkaW5nJylcbiAgfVxufVxuXG5mdW5jdGlvbiBvYWVwIChrZXksIG1zZykge1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKVxuICB2YXIgaUhhc2ggPSBjcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKEJ1ZmZlci5hbGxvYygwKSkuZGlnZXN0KClcbiAgdmFyIGhMZW4gPSBpSGFzaC5sZW5ndGhcbiAgaWYgKG1zZ1swXSAhPT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpXG4gIH1cbiAgdmFyIG1hc2tlZFNlZWQgPSBtc2cuc2xpY2UoMSwgaExlbiArIDEpXG4gIHZhciBtYXNrZWREYiA9IG1zZy5zbGljZShoTGVuICsgMSlcbiAgdmFyIHNlZWQgPSB4b3IobWFza2VkU2VlZCwgbWdmKG1hc2tlZERiLCBoTGVuKSlcbiAgdmFyIGRiID0geG9yKG1hc2tlZERiLCBtZ2Yoc2VlZCwgayAtIGhMZW4gLSAxKSlcbiAgaWYgKGNvbXBhcmUoaUhhc2gsIGRiLnNsaWNlKDAsIGhMZW4pKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpXG4gIH1cbiAgdmFyIGkgPSBoTGVuXG4gIHdoaWxlIChkYltpXSA9PT0gMCkge1xuICAgIGkrK1xuICB9XG4gIGlmIChkYltpKytdICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJylcbiAgfVxuICByZXR1cm4gZGIuc2xpY2UoaSlcbn1cblxuZnVuY3Rpb24gcGtjczEgKGtleSwgbXNnLCByZXZlcnNlKSB7XG4gIHZhciBwMSA9IG1zZy5zbGljZSgwLCAyKVxuICB2YXIgaSA9IDJcbiAgdmFyIHN0YXR1cyA9IDBcbiAgd2hpbGUgKG1zZ1tpKytdICE9PSAwKSB7XG4gICAgaWYgKGkgPj0gbXNnLmxlbmd0aCkge1xuICAgICAgc3RhdHVzKytcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG4gIHZhciBwcyA9IG1zZy5zbGljZSgyLCBpIC0gMSlcblxuICBpZiAoKHAxLnRvU3RyaW5nKCdoZXgnKSAhPT0gJzAwMDInICYmICFyZXZlcnNlKSB8fCAocDEudG9TdHJpbmcoJ2hleCcpICE9PSAnMDAwMScgJiYgcmV2ZXJzZSkpIHtcbiAgICBzdGF0dXMrK1xuICB9XG4gIGlmIChwcy5sZW5ndGggPCA4KSB7XG4gICAgc3RhdHVzKytcbiAgfVxuICBpZiAoc3RhdHVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJylcbiAgfVxuICByZXR1cm4gbXNnLnNsaWNlKGkpXG59XG5mdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGEgPSBCdWZmZXIuZnJvbShhKVxuICBiID0gQnVmZmVyLmZyb20oYilcbiAgdmFyIGRpZiA9IDBcbiAgdmFyIGxlbiA9IGEubGVuZ3RoXG4gIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICBkaWYrK1xuICAgIGxlbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aClcbiAgfVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBkaWYgKz0gKGFbaV0gXiBiW2ldKVxuICB9XG4gIHJldHVybiBkaWZcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3ByaXZhdGVEZWNyeXB0LmpzXG4vLyBtb2R1bGUgaWQgPSAyMTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///212\n");

/***/ }),
/* 213 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("/* WEBPACK VAR INJECTION */(function(global, process) {\n\nfunction oldBrowser () {\n  throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = __webpack_require__(1)\nvar randombytes = __webpack_require__(13)\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n  if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n    throw new TypeError('offset must be a number')\n  }\n\n  if (offset > kMaxUint32 || offset < 0) {\n    throw new TypeError('offset must be a uint32')\n  }\n\n  if (offset > kBufferMaxLength || offset > length) {\n    throw new RangeError('offset out of range')\n  }\n}\n\nfunction assertSize (size, offset, length) {\n  if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n    throw new TypeError('size must be a number')\n  }\n\n  if (size > kMaxUint32 || size < 0) {\n    throw new TypeError('size must be a uint32')\n  }\n\n  if (size + offset > length || size > kBufferMaxLength) {\n    throw new RangeError('buffer too small')\n  }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n  exports.randomFill = randomFill\n  exports.randomFillSync = randomFillSync\n} else {\n  exports.randomFill = oldBrowser\n  exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n  if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n    throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n  }\n\n  if (typeof offset === 'function') {\n    cb = offset\n    offset = 0\n    size = buf.length\n  } else if (typeof size === 'function') {\n    cb = size\n    size = buf.length - offset\n  } else if (typeof cb !== 'function') {\n    throw new TypeError('\"cb\" argument must be a function')\n  }\n  assertOffset(offset, buf.length)\n  assertSize(size, offset, buf.length)\n  return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n  if (process.browser) {\n    var ourBuf = buf.buffer\n    var uint = new Uint8Array(ourBuf, offset, size)\n    crypto.getRandomValues(uint)\n    if (cb) {\n      process.nextTick(function () {\n        cb(null, buf)\n      })\n      return\n    }\n    return buf\n  }\n  if (cb) {\n    randombytes(size, function (err, bytes) {\n      if (err) {\n        return cb(err)\n      }\n      bytes.copy(buf, offset)\n      cb(null, buf)\n    })\n    return\n  }\n  var bytes = randombytes(size)\n  bytes.copy(buf, offset)\n  return buf\n}\nfunction randomFillSync (buf, offset, size) {\n  if (typeof offset === 'undefined') {\n    offset = 0\n  }\n  if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n    throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n  }\n\n  assertOffset(offset, buf.length)\n\n  if (size === undefined) size = buf.length - offset\n\n  assertSize(size, offset, buf.length)\n\n  return actualFill(buf, offset, size)\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9), __webpack_require__(10)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JhbmRvbWZpbGwvYnJvd3Nlci5qcz9lMTFmIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuXG5mdW5jdGlvbiBvbGRCcm93c2VyICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdzZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyXFxudXNlIGNocm9tZSwgRmlyZUZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMScpXG59XG52YXIgc2FmZUJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJylcbnZhciByYW5kb21ieXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJylcbnZhciBCdWZmZXIgPSBzYWZlQnVmZmVyLkJ1ZmZlclxudmFyIGtCdWZmZXJNYXhMZW5ndGggPSBzYWZlQnVmZmVyLmtNYXhMZW5ndGhcbnZhciBjcnlwdG8gPSBnbG9iYWwuY3J5cHRvIHx8IGdsb2JhbC5tc0NyeXB0b1xudmFyIGtNYXhVaW50MzIgPSBNYXRoLnBvdygyLCAzMikgLSAxXG5mdW5jdGlvbiBhc3NlcnRPZmZzZXQgKG9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2Ygb2Zmc2V0ICE9PSAnbnVtYmVyJyB8fCBvZmZzZXQgIT09IG9mZnNldCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29mZnNldCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmIChvZmZzZXQgPiBrTWF4VWludDMyIHx8IG9mZnNldCA8IDApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvZmZzZXQgbXVzdCBiZSBhIHVpbnQzMicpXG4gIH1cblxuICBpZiAob2Zmc2V0ID4ga0J1ZmZlck1heExlbmd0aCB8fCBvZmZzZXQgPiBsZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb2Zmc2V0IG91dCBvZiByYW5nZScpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0U2l6ZSAoc2l6ZSwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJyB8fCBzaXplICE9PSBzaXplKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2l6ZSBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmIChzaXplID4ga01heFVpbnQzMiB8fCBzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NpemUgbXVzdCBiZSBhIHVpbnQzMicpXG4gIH1cblxuICBpZiAoc2l6ZSArIG9mZnNldCA+IGxlbmd0aCB8fCBzaXplID4ga0J1ZmZlck1heExlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdidWZmZXIgdG9vIHNtYWxsJylcbiAgfVxufVxuaWYgKChjcnlwdG8gJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcykgfHwgIXByb2Nlc3MuYnJvd3Nlcikge1xuICBleHBvcnRzLnJhbmRvbUZpbGwgPSByYW5kb21GaWxsXG4gIGV4cG9ydHMucmFuZG9tRmlsbFN5bmMgPSByYW5kb21GaWxsU3luY1xufSBlbHNlIHtcbiAgZXhwb3J0cy5yYW5kb21GaWxsID0gb2xkQnJvd3NlclxuICBleHBvcnRzLnJhbmRvbUZpbGxTeW5jID0gb2xkQnJvd3NlclxufVxuZnVuY3Rpb24gcmFuZG9tRmlsbCAoYnVmLCBvZmZzZXQsIHNpemUsIGNiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikgJiYgIShidWYgaW5zdGFuY2VvZiBnbG9iYWwuVWludDhBcnJheSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZlwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgb3IgVWludDhBcnJheScpXG4gIH1cblxuICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gb2Zmc2V0XG4gICAgb2Zmc2V0ID0gMFxuICAgIHNpemUgPSBidWYubGVuZ3RoXG4gIH0gZWxzZSBpZiAodHlwZW9mIHNpemUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IHNpemVcbiAgICBzaXplID0gYnVmLmxlbmd0aCAtIG9mZnNldFxuICB9IGVsc2UgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiY2JcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKVxuICB9XG4gIGFzc2VydE9mZnNldChvZmZzZXQsIGJ1Zi5sZW5ndGgpXG4gIGFzc2VydFNpemUoc2l6ZSwgb2Zmc2V0LCBidWYubGVuZ3RoKVxuICByZXR1cm4gYWN0dWFsRmlsbChidWYsIG9mZnNldCwgc2l6ZSwgY2IpXG59XG5cbmZ1bmN0aW9uIGFjdHVhbEZpbGwgKGJ1Ziwgb2Zmc2V0LCBzaXplLCBjYikge1xuICBpZiAocHJvY2Vzcy5icm93c2VyKSB7XG4gICAgdmFyIG91ckJ1ZiA9IGJ1Zi5idWZmZXJcbiAgICB2YXIgdWludCA9IG5ldyBVaW50OEFycmF5KG91ckJ1Ziwgb2Zmc2V0LCBzaXplKVxuICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXModWludClcbiAgICBpZiAoY2IpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBjYihudWxsLCBidWYpXG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHJldHVybiBidWZcbiAgfVxuICBpZiAoY2IpIHtcbiAgICByYW5kb21ieXRlcyhzaXplLCBmdW5jdGlvbiAoZXJyLCBieXRlcykge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gY2IoZXJyKVxuICAgICAgfVxuICAgICAgYnl0ZXMuY29weShidWYsIG9mZnNldClcbiAgICAgIGNiKG51bGwsIGJ1ZilcbiAgICB9KVxuICAgIHJldHVyblxuICB9XG4gIHZhciBieXRlcyA9IHJhbmRvbWJ5dGVzKHNpemUpXG4gIGJ5dGVzLmNvcHkoYnVmLCBvZmZzZXQpXG4gIHJldHVybiBidWZcbn1cbmZ1bmN0aW9uIHJhbmRvbUZpbGxTeW5jIChidWYsIG9mZnNldCwgc2l6ZSkge1xuICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBvZmZzZXQgPSAwXG4gIH1cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSAmJiAhKGJ1ZiBpbnN0YW5jZW9mIGdsb2JhbC5VaW50OEFycmF5KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBvciBVaW50OEFycmF5JylcbiAgfVxuXG4gIGFzc2VydE9mZnNldChvZmZzZXQsIGJ1Zi5sZW5ndGgpXG5cbiAgaWYgKHNpemUgPT09IHVuZGVmaW5lZCkgc2l6ZSA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcblxuICBhc3NlcnRTaXplKHNpemUsIG9mZnNldCwgYnVmLmxlbmd0aClcblxuICByZXR1cm4gYWN0dWFsRmlsbChidWYsIG9mZnNldCwgc2l6ZSlcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3JhbmRvbWZpbGwvYnJvd3Nlci5qc1xuLy8gbW9kdWxlIGlkID0gMjEzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///213\n");

/***/ })
/******/ ]);