diff --git a/dist/index.js b/dist/index.js
index 3d9c009..4755747 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -336,7 +336,7 @@ eval("\n\nmodule.exports = __webpack_require__(/*! ./lib/React */ 28);\n//# sour
/***/ (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 _react = __webpack_require__(/*! react */ 20);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ 19);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\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 ReactUtilsButton = function (_React$Component) {\n _inherits(ReactUtilsButton, _React$Component);\n\n function ReactUtilsButton() {\n _classCallCheck(this, ReactUtilsButton);\n\n return _possibleConstructorReturn(this, (ReactUtilsButton.__proto__ || Object.getPrototypeOf(ReactUtilsButton)).apply(this, arguments));\n }\n\n _createClass(ReactUtilsButton, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n value = _props.value,\n onClick = _props.onClick,\n disabled = _props.disabled,\n className = _props.className,\n active = _props.active;\n\n\n return _react2.default.createElement(\n 'button',\n { type: 'button',\n className: 'utils-button' + (className ? ' ' + className : '') + (active ? ' utils-button--active' : '')\n // Only trigger onClick if component is not disabled\n , onClick: !disabled ? onClick : function () {},\n disabled: disabled ? 'disabled' : undefined },\n _react2.default.createElement(\n 'span',\n { className: 'utils-button-value' },\n value\n )\n );\n }\n }]);\n\n return ReactUtilsButton;\n}(_react2.default.Component);\n\nReactUtilsButton.propTypes = {\n value: _propTypes2.default.string.isRequired,\n className: _propTypes2.default.string,\n onClick: _propTypes2.default.func,\n disabled: _propTypes2.default.bool,\n active: _propTypes2.default.bool\n};\n\nexports.default = ReactUtilsButton;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2luZGV4LmpzPzFmZGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5cbmNsYXNzIFJlYWN0VXRpbHNCdXR0b24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSwgb25DbGljaywgZGlzYWJsZWQsIGNsYXNzTmFtZSwgYWN0aXZlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2B1dGlscy1idXR0b24ke2NsYXNzTmFtZSA/IGAgJHtjbGFzc05hbWV9YCA6ICcnfSR7YWN0aXZlID8gJyB1dGlscy1idXR0b24tLWFjdGl2ZScgOiAnJ31gfVxuICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHRyaWdnZXIgb25DbGljayBpZiBjb21wb25lbnQgaXMgbm90IGRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyFkaXNhYmxlZCA/IG9uQ2xpY2sgOiAoKSA9PiB7fX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkID8gJ2Rpc2FibGVkJyA6IHVuZGVmaW5lZH0+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3V0aWxzLWJ1dHRvbi12YWx1ZSc+e3ZhbHVlfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApO1xuICAgIH1cbn1cblxuUmVhY3RVdGlsc0J1dHRvbi5wcm9wVHlwZXMgPSB7XG4gICAgdmFsdWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGFjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYWN0VXRpbHNCdXR0b247XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2luZGV4LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7Ozs7O0FBQ0E7Ozs7Ozs7Ozs7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTkE7QUFTQTs7OztBQWRBO0FBQ0E7QUFnQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFDQTtBQU9BIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///21\n");
+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 _react = __webpack_require__(/*! react */ 20);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ 19);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\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 ReactUtilsButton = function (_React$Component) {\n _inherits(ReactUtilsButton, _React$Component);\n\n function ReactUtilsButton() {\n _classCallCheck(this, ReactUtilsButton);\n\n return _possibleConstructorReturn(this, (ReactUtilsButton.__proto__ || Object.getPrototypeOf(ReactUtilsButton)).apply(this, arguments));\n }\n\n _createClass(ReactUtilsButton, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n value = _props.value,\n onClick = _props.onClick,\n disabled = _props.disabled,\n className = _props.className,\n active = _props.active,\n loading = _props.loading;\n\n var isDisabled = disabled || loading;\n var elemClass = 'utils-button' + (className ? ' ' + className : '');\n if (active) {\n elemClass += '' + (active ? ' utils-button--active' : '');\n }\n if (loading) {\n elemClass += '' + (loading ? ' utils-button--loading' : '');\n }\n\n return _react2.default.createElement(\n 'button',\n { type: 'button', className: elemClass\n // Only trigger onClick if component is not disabled\n , onClick: !isDisabled ? onClick : function () {},\n disabled: isDisabled ? 'disabled' : undefined },\n _react2.default.createElement(\n 'span',\n { className: 'utils-button-value' },\n value\n )\n );\n }\n }]);\n\n return ReactUtilsButton;\n}(_react2.default.Component);\n\nReactUtilsButton.propTypes = {\n value: _propTypes2.default.string.isRequired,\n className: _propTypes2.default.string,\n onClick: _propTypes2.default.func,\n disabled: _propTypes2.default.bool,\n active: _propTypes2.default.bool,\n loading: _propTypes2.default.bool\n};\n\nexports.default = ReactUtilsButton;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2luZGV4LmpzPzFmZGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5cbmNsYXNzIFJlYWN0VXRpbHNCdXR0b24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSwgb25DbGljaywgZGlzYWJsZWQsIGNsYXNzTmFtZSwgYWN0aXZlLCBsb2FkaW5nIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBpc0Rpc2FibGVkID0gZGlzYWJsZWQgfHwgbG9hZGluZztcbiAgICAgICAgbGV0IGVsZW1DbGFzcyA9IGB1dGlscy1idXR0b24ke2NsYXNzTmFtZSA/IGAgJHtjbGFzc05hbWV9YCA6ICcnfWA7XG4gICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgIGVsZW1DbGFzcyArPSBgJHthY3RpdmUgPyAnIHV0aWxzLWJ1dHRvbi0tYWN0aXZlJyA6ICcnfWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvYWRpbmcpIHtcbiAgICAgICAgICAgIGVsZW1DbGFzcyArPSBgJHtsb2FkaW5nID8gJyB1dGlscy1idXR0b24tLWxvYWRpbmcnIDogJyd9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9e2VsZW1DbGFzc31cbiAgICAgICAgICAgICAgICAgICAgLy8gT25seSB0cmlnZ2VyIG9uQ2xpY2sgaWYgY29tcG9uZW50IGlzIG5vdCBkaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXshaXNEaXNhYmxlZCA/IG9uQ2xpY2sgOiAoKSA9PiB7fX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3V0aWxzLWJ1dHRvbi12YWx1ZSc+e3ZhbHVlfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApO1xuICAgIH1cbn1cblxuUmVhY3RVdGlsc0J1dHRvbi5wcm9wVHlwZXMgPSB7XG4gICAgdmFsdWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGFjdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgbG9hZGluZzogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYWN0VXRpbHNCdXR0b247XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2luZGV4LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7Ozs7O0FBQ0E7Ozs7Ozs7Ozs7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUpBO0FBT0E7Ozs7QUFwQkE7QUFDQTtBQXNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBQ0E7QUFRQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///21\n");
/***/ }),
/* 22 */
diff --git a/example/.babelrc b/example/.babelrc
new file mode 100644
index 0000000..a434650
--- /dev/null
+++ b/example/.babelrc
@@ -0,0 +1,6 @@
+{
+ "presets": [
+ "es2015",
+ "react"
+ ]
+}
diff --git a/example/bundle/example.bundle.js b/example/bundle/example.bundle.js
new file mode 100644
index 0000000..62e6691
--- /dev/null
+++ b/example/bundle/example.bundle.js
@@ -0,0 +1,190 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "../dist/index.js":
+/*!************************!*\
+ !*** ../dist/index.js ***!
+ \************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse {}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 21);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/* no static exports found */\n/* all exports used */\n/*!******************************!*\\\n !*** ./~/process/browser.js ***!\n \\******************************/\n/***/ (function(module, exports) {\n\neval(\"// 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vcHJvY2Vzcy9icm93c2VyLmpzPzgyZTQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9wcm9jZXNzL2Jyb3dzZXIuanNcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///0\\n\");\n\n/***/ }),\n/* 1 */\n/* no static exports found */\n/* all exports used */\n/*!*********************************!*\\\n !*** ./~/fbjs/lib/invariant.js ***!\n \\*********************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\n/**\\n * Use invariant() to assert state which your program assumes to be true.\\n *\\n * Provide sprintf-style format (only %s is supported) and arguments\\n * to provide information about what broke and what you were\\n * expecting.\\n *\\n * The invariant message will be stripped in production, but the invariant\\n * will remain to ensure logic does not differ in production.\\n */\\n\\nvar validateFormat = function validateFormat(format) {};\\n\\nif (process.env.NODE_ENV !== 'production') {\\n validateFormat = function validateFormat(format) {\\n if (format === undefined) {\\n throw new Error('invariant requires an error message argument');\\n }\\n };\\n}\\n\\nfunction invariant(condition, format, a, b, c, d, e, f) {\\n validateFormat(format);\\n\\n if (!condition) {\\n var error;\\n if (format === undefined) {\\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\\n } else {\\n var args = [a, b, c, d, e, f];\\n var argIndex = 0;\\n error = new Error(format.replace(/%s/g, function () {\\n return args[argIndex++];\\n }));\\n error.name = 'Invariant Violation';\\n }\\n\\n error.framesToPop = 1; // we don't care about invariant's own frame\\n throw error;\\n }\\n}\\n\\nmodule.exports = invariant;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vZmJqcy9saWIvaW52YXJpYW50LmpzPzQ1OTkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFVzZSBpbnZhcmlhbnQoKSB0byBhc3NlcnQgc3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3VtZXMgdG8gYmUgdHJ1ZS5cbiAqXG4gKiBQcm92aWRlIHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5ICVzIGlzIHN1cHBvcnRlZCkgYW5kIGFyZ3VtZW50c1xuICogdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGJyb2tlIGFuZCB3aGF0IHlvdSB3ZXJlXG4gKiBleHBlY3RpbmcuXG4gKlxuICogVGhlIGludmFyaWFudCBtZXNzYWdlIHdpbGwgYmUgc3RyaXBwZWQgaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBpbnZhcmlhbnRcbiAqIHdpbGwgcmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5vdCBkaWZmZXIgaW4gcHJvZHVjdGlvbi5cbiAqL1xuXG52YXIgdmFsaWRhdGVGb3JtYXQgPSBmdW5jdGlvbiB2YWxpZGF0ZUZvcm1hdChmb3JtYXQpIHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YWxpZGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCkge1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gaW52YXJpYW50KGNvbmRpdGlvbiwgZm9ybWF0LCBhLCBiLCBjLCBkLCBlLCBmKSB7XG4gIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCk7XG5cbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB2YXIgZXJyb3I7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcignTWluaWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgJyArICdmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYXJncyA9IFthLCBiLCBjLCBkLCBlLCBmXTtcbiAgICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcbiAgICAgIH0pKTtcbiAgICAgIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgfVxuXG4gICAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IGludmFyaWFudCdzIG93biBmcmFtZVxuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW52YXJpYW50O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9mYmpzL2xpYi9pbnZhcmlhbnQuanNcbi8vIG1vZHVsZSBpZCA9IDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///1\\n\");\n\n/***/ }),\n/* 2 */\n/* no static exports found */\n/* all exports used */\n/*!*******************************!*\\\n !*** ./~/fbjs/lib/warning.js ***!\n \\*******************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2014-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\nvar emptyFunction = __webpack_require__(/*! ./emptyFunction */ 6);\\n\\n/**\\n * Similar to invariant but only logs a warning if the condition is not met.\\n * This can be used to log issues in development environments in critical\\n * paths. Removing the logging code for production environments will keep the\\n * same logic and follow the same code paths.\\n */\\n\\nvar warning = emptyFunction;\\n\\nif (process.env.NODE_ENV !== 'production') {\\n var printWarning = function printWarning(format) {\\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\\n args[_key - 1] = arguments[_key];\\n }\\n\\n var argIndex = 0;\\n var message = 'Warning: ' + format.replace(/%s/g, function () {\\n return args[argIndex++];\\n });\\n if (typeof console !== 'undefined') {\\n console.error(message);\\n }\\n try {\\n // --- Welcome to debugging React ---\\n // This error was thrown as a convenience so that you can use this stack\\n // to find the callsite that caused this warning to fire.\\n throw new Error(message);\\n } catch (x) {}\\n };\\n\\n warning = function warning(condition, format) {\\n if (format === undefined) {\\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\\n }\\n\\n if (format.indexOf('Failed Composite propType: ') === 0) {\\n return; // Ignore CompositeComponent proptype check.\\n }\\n\\n if (!condition) {\\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\\n args[_key2 - 2] = arguments[_key2];\\n }\\n\\n printWarning.apply(undefined, [format].concat(args));\\n }\\n };\\n}\\n\\nmodule.exports = warning;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vZmJqcy9saWIvd2FybmluZy5qcz84YTU2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCcuL2VtcHR5RnVuY3Rpb24nKTtcblxuLyoqXG4gKiBTaW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2FsXG4gKiBwYXRocy4gUmVtb3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBrZWVwIHRoZVxuICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuXG4gKi9cblxudmFyIHdhcm5pbmcgPSBlbXB0eUZ1bmN0aW9uO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgcHJpbnRXYXJuaW5nID0gZnVuY3Rpb24gcHJpbnRXYXJuaW5nKGZvcm1hdCkge1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICsgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuICAgIH0pO1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXG4gICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2tcbiAgICAgIC8vIHRvIGZpbmQgdGhlIGNhbGxzaXRlIHRoYXQgY2F1c2VkIHRoaXMgd2FybmluZyB0byBmaXJlLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKHgpIHt9XG4gIH07XG5cbiAgd2FybmluZyA9IGZ1bmN0aW9uIHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQpIHtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQsIC4uLmFyZ3MpYCByZXF1aXJlcyBhIHdhcm5pbmcgJyArICdtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdC5pbmRleE9mKCdGYWlsZWQgQ29tcG9zaXRlIHByb3BUeXBlOiAnKSA9PT0gMCkge1xuICAgICAgcmV0dXJuOyAvLyBJZ25vcmUgQ29tcG9zaXRlQ29tcG9uZW50IHByb3B0eXBlIGNoZWNrLlxuICAgIH1cblxuICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuMiA+IDIgPyBfbGVuMiAtIDIgOiAwKSwgX2tleTIgPSAyOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgIGFyZ3NbX2tleTIgLSAyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgICB9XG5cbiAgICAgIHByaW50V2FybmluZy5hcHBseSh1bmRlZmluZWQsIFtmb3JtYXRdLmNvbmNhdChhcmdzKSk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdhcm5pbmc7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2ZianMvbGliL3dhcm5pbmcuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///2\\n\");\n\n/***/ }),\n/* 3 */\n/* no static exports found */\n/* all exports used */\n/*!*************************************!*\\\n !*** ./~/react/lib/ReactElement.js ***!\n \\*************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2014-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\nvar _assign = __webpack_require__(/*! object-assign */ 5);\\n\\nvar ReactCurrentOwner = __webpack_require__(/*! ./ReactCurrentOwner */ 7);\\n\\nvar warning = __webpack_require__(/*! fbjs/lib/warning */ 2);\\nvar canDefineProperty = __webpack_require__(/*! ./canDefineProperty */ 8);\\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\\n\\nvar REACT_ELEMENT_TYPE = __webpack_require__(/*! ./ReactElementSymbol */ 15);\\n\\nvar RESERVED_PROPS = {\\n key: true,\\n ref: true,\\n __self: true,\\n __source: true\\n};\\n\\nvar specialPropKeyWarningShown, specialPropRefWarningShown;\\n\\nfunction hasValidRef(config) {\\n if (process.env.NODE_ENV !== 'production') {\\n if (hasOwnProperty.call(config, 'ref')) {\\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\\n if (getter && getter.isReactWarning) {\\n return false;\\n }\\n }\\n }\\n return config.ref !== undefined;\\n}\\n\\nfunction hasValidKey(config) {\\n if (process.env.NODE_ENV !== 'production') {\\n if (hasOwnProperty.call(config, 'key')) {\\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\\n if (getter && getter.isReactWarning) {\\n return false;\\n }\\n }\\n }\\n return config.key !== undefined;\\n}\\n\\nfunction defineKeyPropWarningGetter(props, displayName) {\\n var warnAboutAccessingKey = function () {\\n if (!specialPropKeyWarningShown) {\\n specialPropKeyWarningShown = true;\\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\\n }\\n };\\n warnAboutAccessingKey.isReactWarning = true;\\n Object.defineProperty(props, 'key', {\\n get: warnAboutAccessingKey,\\n configurable: true\\n });\\n}\\n\\nfunction defineRefPropWarningGetter(props, displayName) {\\n var warnAboutAccessingRef = function () {\\n if (!specialPropRefWarningShown) {\\n specialPropRefWarningShown = true;\\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\\n }\\n };\\n warnAboutAccessingRef.isReactWarning = true;\\n Object.defineProperty(props, 'ref', {\\n get: warnAboutAccessingRef,\\n configurable: true\\n });\\n}\\n\\n/**\\n * Factory method to create a new React element. This no longer adheres to\\n * the class pattern, so do not use new to call it. Also, no instanceof check\\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\\n * if something is a React Element.\\n *\\n * @param {*} type\\n * @param {*} key\\n * @param {string|object} ref\\n * @param {*} self A *temporary* helper to detect places where `this` is\\n * different from the `owner` when React.createElement is called, so that we\\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\\n * functions, and as long as `this` and owner are the same, there will be no\\n * change in behavior.\\n * @param {*} source An annotation object (added by a transpiler or otherwise)\\n * indicating filename, line number, and/or other information.\\n * @param {*} owner\\n * @param {*} props\\n * @internal\\n */\\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\\n var element = {\\n // This tag allow us to uniquely identify this as a React Element\\n $$typeof: REACT_ELEMENT_TYPE,\\n\\n // Built-in properties that belong on the element\\n type: type,\\n key: key,\\n ref: ref,\\n props: props,\\n\\n // Record the component responsible for creating this element.\\n _owner: owner\\n };\\n\\n if (process.env.NODE_ENV !== 'production') {\\n // The validation flag is currently mutative. We put it on\\n // an external backing store so that we can freeze the whole object.\\n // This can be replaced with a WeakMap once they are implemented in\\n // commonly used development environments.\\n element._store = {};\\n\\n // To make comparing ReactElements easier for testing purposes, we make\\n // the validation flag non-enumerable (where possible, which should\\n // include every environment we run tests in), so the test framework\\n // ignores it.\\n if (canDefineProperty) {\\n Object.defineProperty(element._store, 'validated', {\\n configurable: false,\\n enumerable: false,\\n writable: true,\\n value: false\\n });\\n // self and source are DEV only properties.\\n Object.defineProperty(element, '_self', {\\n configurable: false,\\n enumerable: false,\\n writable: false,\\n value: self\\n });\\n // Two elements created in two different places should be considered\\n // equal for testing purposes and therefore we hide it from enumeration.\\n Object.defineProperty(element, '_source', {\\n configurable: false,\\n enumerable: false,\\n writable: false,\\n value: source\\n });\\n } else {\\n element._store.validated = false;\\n element._self = self;\\n element._source = source;\\n }\\n if (Object.freeze) {\\n Object.freeze(element.props);\\n Object.freeze(element);\\n }\\n }\\n\\n return element;\\n};\\n\\n/**\\n * Create and return a new ReactElement of the given type.\\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement\\n */\\nReactElement.createElement = function (type, config, children) {\\n var propName;\\n\\n // Reserved names are extracted\\n var props = {};\\n\\n var key = null;\\n var ref = null;\\n var self = null;\\n var source = null;\\n\\n if (config != null) {\\n if (hasValidRef(config)) {\\n ref = config.ref;\\n }\\n if (hasValidKey(config)) {\\n key = '' + config.key;\\n }\\n\\n self = config.__self === undefined ? null : config.__self;\\n source = config.__source === undefined ? null : config.__source;\\n // Remaining properties are added to a new props object\\n for (propName in config) {\\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\\n props[propName] = config[propName];\\n }\\n }\\n }\\n\\n // Children can be more than one argument, and those are transferred onto\\n // the newly allocated props object.\\n var childrenLength = arguments.length - 2;\\n if (childrenLength === 1) {\\n props.children = children;\\n } else if (childrenLength > 1) {\\n var childArray = Array(childrenLength);\\n for (var i = 0; i < childrenLength; i++) {\\n childArray[i] = arguments[i + 2];\\n }\\n if (process.env.NODE_ENV !== 'production') {\\n if (Object.freeze) {\\n Object.freeze(childArray);\\n }\\n }\\n props.children = childArray;\\n }\\n\\n // Resolve default props\\n if (type && type.defaultProps) {\\n var defaultProps = type.defaultProps;\\n for (propName in defaultProps) {\\n if (props[propName] === undefined) {\\n props[propName] = defaultProps[propName];\\n }\\n }\\n }\\n if (process.env.NODE_ENV !== 'production') {\\n if (key || ref) {\\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\\n if (key) {\\n defineKeyPropWarningGetter(props, displayName);\\n }\\n if (ref) {\\n defineRefPropWarningGetter(props, displayName);\\n }\\n }\\n }\\n }\\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\\n};\\n\\n/**\\n * Return a function that produces ReactElements of a given type.\\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory\\n */\\nReactElement.createFactory = function (type) {\\n var factory = ReactElement.createElement.bind(null, type);\\n // Expose the type on the factory and the prototype so that it can be\\n // easily accessed on elements. E.g. `.type === Foo`.\\n // This should not be named `constructor` since this may not be the function\\n // that created the element, and it may not even be a constructor.\\n // Legacy hook TODO: Warn if this is accessed\\n factory.type = type;\\n return factory;\\n};\\n\\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\\n\\n return newElement;\\n};\\n\\n/**\\n * Clone and return a new ReactElement using element as the starting point.\\n * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement\\n */\\nReactElement.cloneElement = function (element, config, children) {\\n var propName;\\n\\n // Original props are copied\\n var props = _assign({}, element.props);\\n\\n // Reserved names are extracted\\n var key = element.key;\\n var ref = element.ref;\\n // Self is preserved since the owner is preserved.\\n var self = element._self;\\n // Source is preserved since cloneElement is unlikely to be targeted by a\\n // transpiler, and the original source is probably a better indicator of the\\n // true owner.\\n var source = element._source;\\n\\n // Owner will be preserved, unless ref is overridden\\n var owner = element._owner;\\n\\n if (config != null) {\\n if (hasValidRef(config)) {\\n // Silently steal the ref from the parent.\\n ref = config.ref;\\n owner = ReactCurrentOwner.current;\\n }\\n if (hasValidKey(config)) {\\n key = '' + config.key;\\n }\\n\\n // Remaining properties override existing props\\n var defaultProps;\\n if (element.type && element.type.defaultProps) {\\n defaultProps = element.type.defaultProps;\\n }\\n for (propName in config) {\\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\\n if (config[propName] === undefined && defaultProps !== undefined) {\\n // Resolve default props\\n props[propName] = defaultProps[propName];\\n } else {\\n props[propName] = config[propName];\\n }\\n }\\n }\\n }\\n\\n // Children can be more than one argument, and those are transferred onto\\n // the newly allocated props object.\\n var childrenLength = arguments.length - 2;\\n if (childrenLength === 1) {\\n props.children = children;\\n } else if (childrenLength > 1) {\\n var childArray = Array(childrenLength);\\n for (var i = 0; i < childrenLength; i++) {\\n childArray[i] = arguments[i + 2];\\n }\\n props.children = childArray;\\n }\\n\\n return ReactElement(element.type, key, ref, self, source, owner, props);\\n};\\n\\n/**\\n * Verifies the object is a ReactElement.\\n * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement\\n * @param {?object} object\\n * @return {boolean} True if `object` is a valid component.\\n * @final\\n */\\nReactElement.isValidElement = function (object) {\\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\\n};\\n\\nmodule.exports = ReactElement;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vcmVhY3QvbGliL1JlYWN0RWxlbWVudC5qcz9hYjJmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcblxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG52YXIgY2FuRGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL2NhbkRlZmluZVByb3BlcnR5Jyk7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRTeW1ib2wnKTtcblxudmFyIFJFU0VSVkVEX1BST1BTID0ge1xuICBrZXk6IHRydWUsXG4gIHJlZjogdHJ1ZSxcbiAgX19zZWxmOiB0cnVlLFxuICBfX3NvdXJjZTogdHJ1ZVxufTtcblxudmFyIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duLCBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bjtcblxuZnVuY3Rpb24gaGFzVmFsaWRSZWYoY29uZmlnKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ3JlZicpLmdldDtcbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbmZpZy5yZWYgIT09IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaGFzVmFsaWRLZXkoY29uZmlnKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAna2V5JykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ2tleScpLmdldDtcbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbmZpZy5rZXkgIT09IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XG4gIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93bikge1xuICAgICAgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24gPSB0cnVlO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclczogYGtleWAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4gKGh0dHBzOi8vZmIubWUvcmVhY3Qtc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSkgOiB2b2lkIDA7XG4gICAgfVxuICB9O1xuICB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkuaXNSZWFjdFdhcm5pbmcgPSB0cnVlO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdrZXknLCB7XG4gICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdLZXksXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHtcbiAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ1JlZiA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duKSB7XG4gICAgICBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93biA9IHRydWU7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzOiBgcmVmYCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcGVjaWFsLXByb3BzKScsIGRpc3BsYXlOYW1lKSA6IHZvaWQgMDtcbiAgICB9XG4gIH07XG4gIHdhcm5BYm91dEFjY2Vzc2luZ1JlZi5pc1JlYWN0V2FybmluZyA9IHRydWU7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ3JlZicsIHtcbiAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ1JlZixcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG59XG5cbi8qKlxuICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEgbmV3IFJlYWN0IGVsZW1lbnQuIFRoaXMgbm8gbG9uZ2VyIGFkaGVyZXMgdG9cbiAqIHRoZSBjbGFzcyBwYXR0ZXJuLCBzbyBkbyBub3QgdXNlIG5ldyB0byBjYWxsIGl0LiBBbHNvLCBubyBpbnN0YW5jZW9mIGNoZWNrXG4gKiB3aWxsIHdvcmsuIEluc3RlYWQgdGVzdCAkJHR5cGVvZiBmaWVsZCBhZ2FpbnN0IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSB0byBjaGVja1xuICogaWYgc29tZXRoaW5nIGlzIGEgUmVhY3QgRWxlbWVudC5cbiAqXG4gKiBAcGFyYW0geyp9IHR5cGVcbiAqIEBwYXJhbSB7Kn0ga2V5XG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHJlZlxuICogQHBhcmFtIHsqfSBzZWxmIEEgKnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNgIGlzXG4gKiBkaWZmZXJlbnQgZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJlYWN0LmNyZWF0ZUVsZW1lbnQgaXMgY2FsbGVkLCBzbyB0aGF0IHdlXG4gKiBjYW4gd2Fybi4gV2Ugd2FudCB0byBnZXQgcmlkIG9mIG93bmVyIGFuZCByZXBsYWNlIHN0cmluZyBgcmVmYHMgd2l0aCBhcnJvd1xuICogZnVuY3Rpb25zLCBhbmQgYXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhlcmUgd2lsbCBiZSBub1xuICogY2hhbmdlIGluIGJlaGF2aW9yLlxuICogQHBhcmFtIHsqfSBzb3VyY2UgQW4gYW5ub3RhdGlvbiBvYmplY3QgKGFkZGVkIGJ5IGEgdHJhbnNwaWxlciBvciBvdGhlcndpc2UpXG4gKiBpbmRpY2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90aGVyIGluZm9ybWF0aW9uLlxuICogQHBhcmFtIHsqfSBvd25lclxuICogQHBhcmFtIHsqfSBwcm9wc1xuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdEVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgb3duZXIsIHByb3BzKSB7XG4gIHZhciBlbGVtZW50ID0ge1xuICAgIC8vIFRoaXMgdGFnIGFsbG93IHVzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgYXMgYSBSZWFjdCBFbGVtZW50XG4gICAgJCR0eXBlb2Y6IFJFQUNUX0VMRU1FTlRfVFlQRSxcblxuICAgIC8vIEJ1aWx0LWluIHByb3BlcnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnRcbiAgICB0eXBlOiB0eXBlLFxuICAgIGtleToga2V5LFxuICAgIHJlZjogcmVmLFxuICAgIHByb3BzOiBwcm9wcyxcblxuICAgIC8vIFJlY29yZCB0aGUgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGlzIGVsZW1lbnQuXG4gICAgX293bmVyOiBvd25lclxuICB9O1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBjdXJyZW50bHkgbXV0YXRpdmUuIFdlIHB1dCBpdCBvblxuICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXG4gICAgLy8gVGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIFdlYWtNYXAgb25jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCBpblxuICAgIC8vIGNvbW1vbmx5IHVzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLlxuICAgIGVsZW1lbnQuX3N0b3JlID0ge307XG5cbiAgICAvLyBUbyBtYWtlIGNvbXBhcmluZyBSZWFjdEVsZW1lbnRzIGVhc2llciBmb3IgdGVzdGluZyBwdXJwb3Nlcywgd2UgbWFrZVxuICAgIC8vIHRoZSB2YWxpZGF0aW9uIGZsYWcgbm9uLWVudW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGRcbiAgICAvLyBpbmNsdWRlIGV2ZXJ5IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiksIHNvIHRoZSB0ZXN0IGZyYW1ld29ya1xuICAgIC8vIGlnbm9yZXMgaXQuXG4gICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3RvcmUsICd2YWxpZGF0ZWQnLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9ubHkgcHJvcGVydGllcy5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBzZWxmXG4gICAgICB9KTtcbiAgICAgIC8vIFR3byBlbGVtZW50cyBjcmVhdGVkIGluIHR3byBkaWZmZXJlbnQgcGxhY2VzIHNob3VsZCBiZSBjb25zaWRlcmVkXG4gICAgICAvLyBlcXVhbCBmb3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgdGhlcmVmb3JlIHdlIGhpZGUgaXQgZnJvbSBlbnVtZXJhdGlvbi5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NvdXJjZScsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHNvdXJjZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgZWxlbWVudC5fc2VsZiA9IHNlbGY7XG4gICAgICBlbGVtZW50Ll9zb3VyY2UgPSBzb3VyY2U7XG4gICAgfVxuICAgIGlmIChPYmplY3QuZnJlZXplKSB7XG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQucHJvcHMpO1xuICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZWxlbWVudDtcbn07XG5cbi8qKlxuICogQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgUmVhY3RFbGVtZW50IG9mIHRoZSBnaXZlbiB0eXBlLlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWVsZW1lbnRcbiAqL1xuUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwgY29uZmlnLCBjaGlsZHJlbikge1xuICB2YXIgcHJvcE5hbWU7XG5cbiAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZFxuICB2YXIgcHJvcHMgPSB7fTtcblxuICB2YXIga2V5ID0gbnVsbDtcbiAgdmFyIHJlZiA9IG51bGw7XG4gIHZhciBzZWxmID0gbnVsbDtcbiAgdmFyIHNvdXJjZSA9IG51bGw7XG5cbiAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcbiAgICAgIHJlZiA9IGNvbmZpZy5yZWY7XG4gICAgfVxuICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7XG4gICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7XG4gICAgfVxuXG4gICAgc2VsZiA9IGNvbmZpZy5fX3NlbGYgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjb25maWcuX19zZWxmO1xuICAgIHNvdXJjZSA9IGNvbmZpZy5fX3NvdXJjZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NvdXJjZTtcbiAgICAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBhcmUgYWRkZWQgdG8gYSBuZXcgcHJvcHMgb2JqZWN0XG4gICAgZm9yIChwcm9wTmFtZSBpbiBjb25maWcpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRvXG4gIC8vIHRoZSBuZXdseSBhbGxvY2F0ZWQgcHJvcHMgb2JqZWN0LlxuICB2YXIgY2hpbGRyZW5MZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoIC0gMjtcbiAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0aCA+IDEpIHtcbiAgICB2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkQXJyYXlbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKE9iamVjdC5mcmVlemUpIHtcbiAgICAgICAgT2JqZWN0LmZyZWV6ZShjaGlsZEFycmF5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG5cbiAgLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXG4gIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzO1xuICAgIGZvciAocHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7XG4gICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoa2V5IHx8IHJlZikge1xuICAgICAgaWYgKHR5cGVvZiBwcm9wcy4kJHR5cGVvZiA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvcHMuJCR0eXBlb2YgIT09IFJFQUNUX0VMRU1FTlRfVFlQRSkge1xuICAgICAgICB2YXIgZGlzcGxheU5hbWUgPSB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyA/IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8ICdVbmtub3duJyA6IHR5cGU7XG4gICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBSZWFjdEVsZW1lbnQodHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCwgcHJvcHMpO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIFJlYWN0RWxlbWVudHMgb2YgYSBnaXZlbiB0eXBlLlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWZhY3RvcnlcbiAqL1xuUmVhY3RFbGVtZW50LmNyZWF0ZUZhY3RvcnkgPSBmdW5jdGlvbiAodHlwZSkge1xuICB2YXIgZmFjdG9yeSA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50LmJpbmQobnVsbCwgdHlwZSk7XG4gIC8vIEV4cG9zZSB0aGUgdHlwZSBvbiB0aGUgZmFjdG9yeSBhbmQgdGhlIHByb3RvdHlwZSBzbyB0aGF0IGl0IGNhbiBiZVxuICAvLyBlYXNpbHkgYWNjZXNzZWQgb24gZWxlbWVudHMuIEUuZy4gYDxGb28gLz4udHlwZSA9PT0gRm9vYC5cbiAgLy8gVGhpcyBzaG91bGQgbm90IGJlIG5hbWVkIGBjb25zdHJ1Y3RvcmAgc2luY2UgdGhpcyBtYXkgbm90IGJlIHRoZSBmdW5jdGlvblxuICAvLyB0aGF0IGNyZWF0ZWQgdGhlIGVsZW1lbnQsIGFuZCBpdCBtYXkgbm90IGV2ZW4gYmUgYSBjb25zdHJ1Y3Rvci5cbiAgLy8gTGVnYWN5IGhvb2sgVE9ETzogV2FybiBpZiB0aGlzIGlzIGFjY2Vzc2VkXG4gIGZhY3RvcnkudHlwZSA9IHR5cGU7XG4gIHJldHVybiBmYWN0b3J5O1xufTtcblxuUmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZUtleSA9IGZ1bmN0aW9uIChvbGRFbGVtZW50LCBuZXdLZXkpIHtcbiAgdmFyIG5ld0VsZW1lbnQgPSBSZWFjdEVsZW1lbnQob2xkRWxlbWVudC50eXBlLCBuZXdLZXksIG9sZEVsZW1lbnQucmVmLCBvbGRFbGVtZW50Ll9zZWxmLCBvbGRFbGVtZW50Ll9zb3VyY2UsIG9sZEVsZW1lbnQuX293bmVyLCBvbGRFbGVtZW50LnByb3BzKTtcblxuICByZXR1cm4gbmV3RWxlbWVudDtcbn07XG5cbi8qKlxuICogQ2xvbmUgYW5kIHJldHVybiBhIG5ldyBSZWFjdEVsZW1lbnQgdXNpbmcgZWxlbWVudCBhcyB0aGUgc3RhcnRpbmcgcG9pbnQuXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2xvbmVlbGVtZW50XG4gKi9cblJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgY29uZmlnLCBjaGlsZHJlbikge1xuICB2YXIgcHJvcE5hbWU7XG5cbiAgLy8gT3JpZ2luYWwgcHJvcHMgYXJlIGNvcGllZFxuICB2YXIgcHJvcHMgPSBfYXNzaWduKHt9LCBlbGVtZW50LnByb3BzKTtcblxuICAvLyBSZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFjdGVkXG4gIHZhciBrZXkgPSBlbGVtZW50LmtleTtcbiAgdmFyIHJlZiA9IGVsZW1lbnQucmVmO1xuICAvLyBTZWxmIGlzIHByZXNlcnZlZCBzaW5jZSB0aGUgb3duZXIgaXMgcHJlc2VydmVkLlxuICB2YXIgc2VsZiA9IGVsZW1lbnQuX3NlbGY7XG4gIC8vIFNvdXJjZSBpcyBwcmVzZXJ2ZWQgc2luY2UgY2xvbmVFbGVtZW50IGlzIHVubGlrZWx5IHRvIGJlIHRhcmdldGVkIGJ5IGFcbiAgLy8gdHJhbnNwaWxlciwgYW5kIHRoZSBvcmlnaW5hbCBzb3VyY2UgaXMgcHJvYmFibHkgYSBiZXR0ZXIgaW5kaWNhdG9yIG9mIHRoZVxuICAvLyB0cnVlIG93bmVyLlxuICB2YXIgc291cmNlID0gZWxlbWVudC5fc291cmNlO1xuXG4gIC8vIE93bmVyIHdpbGwgYmUgcHJlc2VydmVkLCB1bmxlc3MgcmVmIGlzIG92ZXJyaWRkZW5cbiAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7XG5cbiAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcbiAgICAgIC8vIFNpbGVudGx5IHN0ZWFsIHRoZSByZWYgZnJvbSB0aGUgcGFyZW50LlxuICAgICAgcmVmID0gY29uZmlnLnJlZjtcbiAgICAgIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICB9XG4gICAgaWYgKGhhc1ZhbGlkS2V5KGNvbmZpZykpIHtcbiAgICAgIGtleSA9ICcnICsgY29uZmlnLmtleTtcbiAgICB9XG5cbiAgICAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBvdmVycmlkZSBleGlzdGluZyBwcm9wc1xuICAgIHZhciBkZWZhdWx0UHJvcHM7XG4gICAgaWYgKGVsZW1lbnQudHlwZSAmJiBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgICBkZWZhdWx0UHJvcHMgPSBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzO1xuICAgIH1cbiAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBpZiAoY29uZmlnW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkICYmIGRlZmF1bHRQcm9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXG4gICAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hpbGRyZW4gY2FuIGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJyZWQgb250b1xuICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVkIHByb3BzIG9iamVjdC5cbiAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gIGlmIChjaGlsZHJlbkxlbmd0aCA9PT0gMSkge1xuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH0gZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7XG4gICAgdmFyIGNoaWxkQXJyYXkgPSBBcnJheShjaGlsZHJlbkxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICB9XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG5cbiAgcmV0dXJuIFJlYWN0RWxlbWVudChlbGVtZW50LnR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcyk7XG59O1xuXG4vKipcbiAqIFZlcmlmaWVzIHRoZSBvYmplY3QgaXMgYSBSZWFjdEVsZW1lbnQuXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuaXN2YWxpZGVsZW1lbnRcbiAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgdmFsaWQgY29tcG9uZW50LlxuICogQGZpbmFsXG4gKi9cblJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFbGVtZW50O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWFjdC9saWIvUmVhY3RFbGVtZW50LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///3\\n\");\n\n/***/ }),\n/* 4 */\n/* no static exports found */\n/* all exports used */\n/*!*******************************************!*\\\n !*** ./~/react/lib/reactProdInvariant.js ***!\n \\*******************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n * \\n */\\n\\n\\n/**\\n * WARNING: DO NOT manually require this module.\\n * This is a replacement for `invariant(...)` used by the error code system\\n * and will _only_ be required by the corresponding babel pass.\\n * It always throws.\\n */\\n\\nfunction reactProdInvariant(code) {\\n var argCount = arguments.length - 1;\\n\\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\\n\\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\\n }\\n\\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\\n\\n var error = new Error(message);\\n error.name = 'Invariant Violation';\\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\\n\\n throw error;\\n}\\n\\nmodule.exports = reactProdInvariant;//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vcmVhY3QvbGliL3JlYWN0UHJvZEludmFyaWFudC5qcz9lMzNmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICogXG4gKi9cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBXQVJOSU5HOiBETyBOT1QgbWFudWFsbHkgcmVxdWlyZSB0aGlzIG1vZHVsZS5cbiAqIFRoaXMgaXMgYSByZXBsYWNlbWVudCBmb3IgYGludmFyaWFudCguLi4pYCB1c2VkIGJ5IHRoZSBlcnJvciBjb2RlIHN5c3RlbVxuICogYW5kIHdpbGwgX29ubHlfIGJlIHJlcXVpcmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGJhYmVsIHBhc3MuXG4gKiBJdCBhbHdheXMgdGhyb3dzLlxuICovXG5cbmZ1bmN0aW9uIHJlYWN0UHJvZEludmFyaWFudChjb2RlKSB7XG4gIHZhciBhcmdDb3VudCA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuXG4gIHZhciBtZXNzYWdlID0gJ01pbmlmaWVkIFJlYWN0IGVycm9yICMnICsgY29kZSArICc7IHZpc2l0ICcgKyAnaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9JyArIGNvZGU7XG5cbiAgZm9yICh2YXIgYXJnSWR4ID0gMDsgYXJnSWR4IDwgYXJnQ291bnQ7IGFyZ0lkeCsrKSB7XG4gICAgbWVzc2FnZSArPSAnJmFyZ3NbXT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1thcmdJZHggKyAxXSk7XG4gIH1cblxuICBtZXNzYWdlICs9ICcgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50JyArICcgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJztcblxuICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCByZWFjdFByb2RJbnZhcmlhbnQncyBvd24gZnJhbWVcblxuICB0aHJvdyBlcnJvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZWFjdFByb2RJbnZhcmlhbnQ7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0L2xpYi9yZWFjdFByb2RJbnZhcmlhbnQuanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///4\\n\");\n\n/***/ }),\n/* 5 */\n/* no static exports found */\n/* all exports used */\n/*!**********************************!*\\\n !*** ./~/object-assign/index.js ***!\n \\**********************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/*\\nobject-assign\\n(c) Sindre Sorhus\\n@license MIT\\n*/\\n\\n\\n/* eslint-disable no-unused-vars */\\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\\n\\nfunction toObject(val) {\\n\\tif (val === null || val === undefined) {\\n\\t\\tthrow new TypeError('Object.assign cannot be called with null or undefined');\\n\\t}\\n\\n\\treturn Object(val);\\n}\\n\\nfunction shouldUseNative() {\\n\\ttry {\\n\\t\\tif (!Object.assign) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\n\\t\\t// Detect buggy property enumeration order in older V8 versions.\\n\\n\\t\\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\\n\\t\\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\\n\\t\\ttest1[5] = 'de';\\n\\t\\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\n\\t\\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\\n\\t\\tvar test2 = {};\\n\\t\\tfor (var i = 0; i < 10; i++) {\\n\\t\\t\\ttest2['_' + String.fromCharCode(i)] = i;\\n\\t\\t}\\n\\t\\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\\n\\t\\t\\treturn test2[n];\\n\\t\\t});\\n\\t\\tif (order2.join('') !== '0123456789') {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\n\\t\\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\\n\\t\\tvar test3 = {};\\n\\t\\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\\n\\t\\t\\ttest3[letter] = letter;\\n\\t\\t});\\n\\t\\tif (Object.keys(Object.assign({}, test3)).join('') !==\\n\\t\\t\\t\\t'abcdefghijklmnopqrst') {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\n\\t\\treturn true;\\n\\t} catch (err) {\\n\\t\\t// We don't expect any of the above to throw, but better to be safe.\\n\\t\\treturn false;\\n\\t}\\n}\\n\\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\\n\\tvar from;\\n\\tvar to = toObject(target);\\n\\tvar symbols;\\n\\n\\tfor (var s = 1; s < arguments.length; s++) {\\n\\t\\tfrom = Object(arguments[s]);\\n\\n\\t\\tfor (var key in from) {\\n\\t\\t\\tif (hasOwnProperty.call(from, key)) {\\n\\t\\t\\t\\tto[key] = from[key];\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif (getOwnPropertySymbols) {\\n\\t\\t\\tsymbols = getOwnPropertySymbols(from);\\n\\t\\t\\tfor (var i = 0; i < symbols.length; i++) {\\n\\t\\t\\t\\tif (propIsEnumerable.call(from, symbols[i])) {\\n\\t\\t\\t\\t\\tto[symbols[i]] = from[symbols[i]];\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\treturn to;\\n};\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vb2JqZWN0LWFzc2lnbi9pbmRleC5qcz8yOTI3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5vYmplY3QtYXNzaWduXG4oYykgU2luZHJlIFNvcmh1c1xuQGxpY2Vuc2UgTUlUXG4qL1xuXG4ndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5mdW5jdGlvbiB0b09iamVjdCh2YWwpIHtcblx0aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkJyk7XG5cdH1cblxuXHRyZXR1cm4gT2JqZWN0KHZhbCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcblx0dHJ5IHtcblx0XHRpZiAoIU9iamVjdC5hc3NpZ24pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBEZXRlY3QgYnVnZ3kgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjggdmVyc2lvbnMuXG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4XG5cdFx0dmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ldy13cmFwcGVyc1xuXHRcdHRlc3QxWzVdID0gJ2RlJztcblx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QyID0ge307XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0XHR0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7XG5cdFx0fVxuXHRcdHZhciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9uIChuKSB7XG5cdFx0XHRyZXR1cm4gdGVzdDJbbl07XG5cdFx0fSk7XG5cdFx0aWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MyA9IHt9O1xuXHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRcdFx0dGVzdDNbbGV0dGVyXSA9IGxldHRlcjtcblx0XHR9KTtcblx0XHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHQvLyBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuXHR2YXIgZnJvbTtcblx0dmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTtcblx0dmFyIHN5bWJvbHM7XG5cblx0Zm9yICh2YXIgcyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcblx0XHRmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuXHRcdFx0aWYgKGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRcdFx0XHR0b1trZXldID0gZnJvbVtrZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcblx0XHRcdHN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xuXHRcdFx0XHRcdHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB0bztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vb2JqZWN0LWFzc2lnbi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///5\\n\");\n\n/***/ }),\n/* 6 */\n/* no static exports found */\n/* all exports used */\n/*!*************************************!*\\\n !*** ./~/fbjs/lib/emptyFunction.js ***!\n \\*************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\n/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n * \\n */\\n\\nfunction makeEmptyFunction(arg) {\\n return function () {\\n return arg;\\n };\\n}\\n\\n/**\\n * This function accepts and discards inputs; it has no side effects. This is\\n * primarily useful idiomatically for overridable function endpoints which\\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\\n */\\nvar emptyFunction = function emptyFunction() {};\\n\\nemptyFunction.thatReturns = makeEmptyFunction;\\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\\nemptyFunction.thatReturnsThis = function () {\\n return this;\\n};\\nemptyFunction.thatReturnsArgument = function (arg) {\\n return arg;\\n};\\n\\nmodule.exports = emptyFunction;//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vZmJqcy9saWIvZW1wdHlGdW5jdGlvbi5qcz8yYTNiIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqIFxuICovXG5cbmZ1bmN0aW9uIG1ha2VFbXB0eUZ1bmN0aW9uKGFyZykge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBhcmc7XG4gIH07XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBhY2NlcHRzIGFuZCBkaXNjYXJkcyBpbnB1dHM7IGl0IGhhcyBubyBzaWRlIGVmZmVjdHMuIFRoaXMgaXNcbiAqIHByaW1hcmlseSB1c2VmdWwgaWRpb21hdGljYWxseSBmb3Igb3ZlcnJpZGFibGUgZnVuY3Rpb24gZW5kcG9pbnRzIHdoaWNoXG4gKiBhbHdheXMgbmVlZCB0byBiZSBjYWxsYWJsZSwgc2luY2UgSlMgbGFja3MgYSBudWxsLWNhbGwgaWRpb20gYWxhIENvY29hLlxuICovXG52YXIgZW1wdHlGdW5jdGlvbiA9IGZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fTtcblxuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJucyA9IG1ha2VFbXB0eUZ1bmN0aW9uO1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNlID0gbWFrZUVtcHR5RnVuY3Rpb24oZmFsc2UpO1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWUgPSBtYWtlRW1wdHlGdW5jdGlvbih0cnVlKTtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsID0gbWFrZUVtcHR5RnVuY3Rpb24obnVsbCk7XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVGhpcyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXM7XG59O1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50ID0gZnVuY3Rpb24gKGFyZykge1xuICByZXR1cm4gYXJnO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBlbXB0eUZ1bmN0aW9uO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9mYmpzL2xpYi9lbXB0eUZ1bmN0aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///6\\n\");\n\n/***/ }),\n/* 7 */\n/* no static exports found */\n/* all exports used */\n/*!******************************************!*\\\n !*** ./~/react/lib/ReactCurrentOwner.js ***!\n \\******************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n * \\n */\\n\\n\\n\\n/**\\n * Keeps track of the current owner.\\n *\\n * The current owner is the component who should own any components that are\\n * currently being constructed.\\n */\\nvar ReactCurrentOwner = {\\n /**\\n * @internal\\n * @type {ReactComponent}\\n */\\n current: null\\n};\\n\\nmodule.exports = ReactCurrentOwner;//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vcmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyLmpzPzYxZGIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogS2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgb3duZXIuXG4gKlxuICogVGhlIGN1cnJlbnQgb3duZXIgaXMgdGhlIGNvbXBvbmVudCB3aG8gc2hvdWxkIG93biBhbnkgY29tcG9uZW50cyB0aGF0IGFyZVxuICogY3VycmVudGx5IGJlaW5nIGNvbnN0cnVjdGVkLlxuICovXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHR5cGUge1JlYWN0Q29tcG9uZW50fVxuICAgKi9cbiAgY3VycmVudDogbnVsbFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEN1cnJlbnRPd25lcjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyLmpzXG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///7\\n\");\n\n/***/ }),\n/* 8 */\n/* no static exports found */\n/* all exports used */\n/*!******************************************!*\\\n !*** ./~/react/lib/canDefineProperty.js ***!\n \\******************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n * \\n */\\n\\n\\n\\nvar canDefineProperty = false;\\nif (process.env.NODE_ENV !== 'production') {\\n try {\\n // $FlowFixMe https://github.com/facebook/flow/issues/285\\n Object.defineProperty({}, 'x', { get: function () {} });\\n canDefineProperty = true;\\n } catch (x) {\\n // IE will fail on defineProperty\\n }\\n}\\n\\nmodule.exports = canDefineProperty;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vcmVhY3QvbGliL2NhbkRlZmluZVByb3BlcnR5LmpzP2U5YTAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IGZhbHNlO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdHJ5IHtcbiAgICAvLyAkRmxvd0ZpeE1lIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8yODVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICd4JywgeyBnZXQ6IGZ1bmN0aW9uICgpIHt9IH0pO1xuICAgIGNhbkRlZmluZVByb3BlcnR5ID0gdHJ1ZTtcbiAgfSBjYXRjaCAoeCkge1xuICAgIC8vIElFIHdpbGwgZmFpbCBvbiBkZWZpbmVQcm9wZXJ0eVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FuRGVmaW5lUHJvcGVydHk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0L2xpYi9jYW5EZWZpbmVQcm9wZXJ0eS5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///8\\n\");\n\n/***/ }),\n/* 9 */\n/* no static exports found */\n/* all exports used */\n/*!**************************************************!*\\\n !*** ./~/prop-types/lib/ReactPropTypesSecret.js ***!\n \\**************************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n */\\n\\n\\n\\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\\n\\nmodule.exports = ReactPropTypesSecret;\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL34vcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanM/MTVkNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qc1xuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///9\\n\");\n\n/***/ }),\n/* 10 */\n/* no static exports found */\n/* all exports used */\n/*!***********************************************!*\\\n !*** ./~/react/lib/ReactComponentTreeHook.js ***!\n \\***********************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2016-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n * \\n */\\n\\n\\n\\nvar _prodInvariant = __webpack_require__(/*! ./reactProdInvariant */ 4);\\n\\nvar ReactCurrentOwner = __webpack_require__(/*! ./ReactCurrentOwner */ 7);\\n\\nvar invariant = __webpack_require__(/*! fbjs/lib/invariant */ 1);\\nvar warning = __webpack_require__(/*! fbjs/lib/warning */ 2);\\n\\nfunction isNative(fn) {\\n // Based on isNative() from Lodash\\n var funcToString = Function.prototype.toString;\\n var hasOwnProperty = Object.prototype.hasOwnProperty;\\n var reIsNative = RegExp('^' + funcToString\\n // Take an example native function source for comparison\\n .call(hasOwnProperty\\n // Strip regex characters so we can use it for regex\\n ).replace(/[\\\\\\\\^$.*+?()[\\\\]{}|]/g, '\\\\\\\\$&'\\n // Remove hasOwnProperty from the template to make it generic\\n ).replace(/hasOwnProperty|(function).*?(?=\\\\\\\\\\\\()| for .+?(?=\\\\\\\\\\\\])/g, '$1.*?') + '$');\\n try {\\n var source = funcToString.call(fn);\\n return reIsNative.test(source);\\n } catch (err) {\\n return false;\\n }\\n}\\n\\nvar canUseCollections =\\n// Array.from\\ntypeof Array.from === 'function' &&\\n// Map\\ntypeof Map === 'function' && isNative(Map) &&\\n// Map.prototype.keys\\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\\n// Set\\ntypeof Set === 'function' && isNative(Set) &&\\n// Set.prototype.keys\\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\\n\\nvar setItem;\\nvar getItem;\\nvar removeItem;\\nvar getItemIDs;\\nvar addRoot;\\nvar removeRoot;\\nvar getRootIDs;\\n\\nif (canUseCollections) {\\n var itemMap = new Map();\\n var rootIDSet = new Set();\\n\\n setItem = function (id, item) {\\n itemMap.set(id, item);\\n };\\n getItem = function (id) {\\n return itemMap.get(id);\\n };\\n removeItem = function (id) {\\n itemMap['delete'](id);\\n };\\n getItemIDs = function () {\\n return Array.from(itemMap.keys());\\n };\\n\\n addRoot = function (id) {\\n rootIDSet.add(id);\\n };\\n removeRoot = function (id) {\\n rootIDSet['delete'](id);\\n };\\n getRootIDs = function () {\\n return Array.from(rootIDSet.keys());\\n };\\n} else {\\n var itemByKey = {};\\n var rootByKey = {};\\n\\n // Use non-numeric keys to prevent V8 performance issues:\\n // https://github.com/facebook/react/pull/7232\\n var getKeyFromID = function (id) {\\n return '.' + id;\\n };\\n var getIDFromKey = function (key) {\\n return parseInt(key.substr(1), 10);\\n };\\n\\n setItem = function (id, item) {\\n var key = getKeyFromID(id);\\n itemByKey[key] = item;\\n };\\n getItem = function (id) {\\n var key = getKeyFromID(id);\\n return itemByKey[key];\\n };\\n removeItem = function (id) {\\n var key = getKeyFromID(id);\\n delete itemByKey[key];\\n };\\n getItemIDs = function () {\\n return Object.keys(itemByKey).map(getIDFromKey);\\n };\\n\\n addRoot = function (id) {\\n var key = getKeyFromID(id);\\n rootByKey[key] = true;\\n };\\n removeRoot = function (id) {\\n var key = getKeyFromID(id);\\n delete rootByKey[key];\\n };\\n getRootIDs = function () {\\n return Object.keys(rootByKey).map(getIDFromKey);\\n };\\n}\\n\\nvar unmountedIDs = [];\\n\\nfunction purgeDeep(id) {\\n var item = getItem(id);\\n if (item) {\\n var childIDs = item.childIDs;\\n\\n removeItem(id);\\n childIDs.forEach(purgeDeep);\\n }\\n}\\n\\nfunction describeComponentFrame(name, source, ownerName) {\\n return '\\\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\\n}\\n\\nfunction getDisplayName(element) {\\n if (element == null) {\\n return '#empty';\\n } else if (typeof element === 'string' || typeof element === 'number') {\\n return '#text';\\n } else if (typeof element.type === 'string') {\\n return element.type;\\n } else {\\n return element.type.displayName || element.type.name || 'Unknown';\\n }\\n}\\n\\nfunction describeID(id) {\\n var name = ReactComponentTreeHook.getDisplayName(id);\\n var element = ReactComponentTreeHook.getElement(id);\\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\\n var ownerName;\\n if (ownerID) {\\n ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\\n }\\n process.env.NODE_ENV !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\\n return describeComponentFrame(name, element && element._source, ownerName);\\n}\\n\\nvar ReactComponentTreeHook = {\\n onSetChildren: function (id, nextChildIDs) {\\n var item = getItem(id);\\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\\n item.childIDs = nextChildIDs;\\n\\n for (var i = 0; i < nextChildIDs.length; i++) {\\n var nextChildID = nextChildIDs[i];\\n var nextChild = getItem(nextChildID);\\n !nextChild ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\\n !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\\n !nextChild.isMounted ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\\n if (nextChild.parentID == null) {\\n nextChild.parentID = id;\\n // TODO: This shouldn't be necessary but mounting a new root during in\\n // componentWillMount currently causes not-yet-mounted components to\\n // be purged from our tree data so their parent id is missing.\\n }\\n !(nextChild.parentID === id) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\\n }\\n },\\n onBeforeMountComponent: function (id, element, parentID) {\\n var item = {\\n element: element,\\n parentID: parentID,\\n text: null,\\n childIDs: [],\\n isMounted: false,\\n updateCount: 0\\n };\\n setItem(id, item);\\n },\\n onBeforeUpdateComponent: function (id, element) {\\n var item = getItem(id);\\n if (!item || !item.isMounted) {\\n // We may end up here as a result of setState() in componentWillUnmount().\\n // In this case, ignore the element.\\n return;\\n }\\n item.element = element;\\n },\\n onMountComponent: function (id) {\\n var item = getItem(id);\\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\\n item.isMounted = true;\\n var isRoot = item.parentID === 0;\\n if (isRoot) {\\n addRoot(id);\\n }\\n },\\n onUpdateComponent: function (id) {\\n var item = getItem(id);\\n if (!item || !item.isMounted) {\\n // We may end up here as a result of setState() in componentWillUnmount().\\n // In this case, ignore the element.\\n return;\\n }\\n item.updateCount++;\\n },\\n onUnmountComponent: function (id) {\\n var item = getItem(id);\\n if (item) {\\n // We need to check if it exists.\\n // `item` might not exist if it is inside an error boundary, and a sibling\\n // error boundary child threw while mounting. Then this instance never\\n // got a chance to mount, but it still gets an unmounting event during\\n // the error boundary cleanup.\\n item.isMounted = false;\\n var isRoot = item.parentID === 0;\\n if (isRoot) {\\n removeRoot(id);\\n }\\n }\\n unmountedIDs.push(id);\\n },\\n purgeUnmountedComponents: function () {\\n if (ReactComponentTreeHook._preventPurging) {\\n // Should only be used for testing.\\n return;\\n }\\n\\n for (var i = 0; i < unmountedIDs.length; i++) {\\n var id = unmountedIDs[i];\\n purgeDeep(id);\\n }\\n unmountedIDs.length = 0;\\n },\\n isMounted: function (id) {\\n var item = getItem(id);\\n return item ? item.isMounted : false;\\n },\\n getCurrentStackAddendum: function (topElement) {\\n var info = '';\\n if (topElement) {\\n var name = getDisplayName(topElement);\\n var owner = topElement._owner;\\n info += describeComponentFrame(name, topElement._source, owner && owner.getName());\\n }\\n\\n var currentOwner = ReactCurrentOwner.current;\\n var id = currentOwner && currentOwner._debugID;\\n\\n info += ReactComponentTreeHook.getStackAddendumByID(id);\\n return info;\\n },\\n getStackAddendumByID: function (id) {\\n var info = '';\\n while (id) {\\n info += describeID(id);\\n id = ReactComponentTreeHook.getParentID(id);\\n }\\n return info;\\n },\\n getChildIDs: function (id) {\\n var item = getItem(id);\\n return item ? item.childIDs : [];\\n },\\n getDisplayName: function (id) {\\n var element = ReactComponentTreeHook.getElement(id);\\n if (!element) {\\n return null;\\n }\\n return getDisplayName(element);\\n },\\n getElement: function (id) {\\n var item = getItem(id);\\n return item ? item.element : null;\\n },\\n getOwnerID: function (id) {\\n var element = ReactComponentTreeHook.getElement(id);\\n if (!element || !element._owner) {\\n return null;\\n }\\n return element._owner._debugID;\\n },\\n getParentID: function (id) {\\n var item = getItem(id);\\n return item ? item.parentID : null;\\n },\\n getSource: function (id) {\\n var item = getItem(id);\\n var element = item ? item.element : null;\\n var source = element != null ? element._source : null;\\n return source;\\n },\\n getText: function (id) {\\n var element = ReactComponentTreeHook.getElement(id);\\n if (typeof element === 'string') {\\n return element;\\n } else if (typeof element === 'number') {\\n return '' + element;\\n } else {\\n return null;\\n }\\n },\\n getUpdateCount: function (id) {\\n var item = getItem(id);\\n return item ? item.updateCount : 0;\\n },\\n\\n\\n getRootIDs: getRootIDs,\\n getRegisteredIDs: getItemIDs,\\n\\n pushNonStandardWarningStack: function (isCreatingElement, currentSource) {\\n if (typeof console.reactStack !== 'function') {\\n return;\\n }\\n\\n var stack = [];\\n var currentOwner = ReactCurrentOwner.current;\\n var id = currentOwner && currentOwner._debugID;\\n\\n try {\\n if (isCreatingElement) {\\n stack.push({\\n name: id ? ReactComponentTreeHook.getDisplayName(id) : null,\\n fileName: currentSource ? currentSource.fileName : null,\\n lineNumber: currentSource ? currentSource.lineNumber : null\\n });\\n }\\n\\n while (id) {\\n var element = ReactComponentTreeHook.getElement(id);\\n var parentID = ReactComponentTreeHook.getParentID(id);\\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\\n var ownerName = ownerID ? ReactComponentTreeHook.getDisplayName(ownerID) : null;\\n var source = element && element._source;\\n stack.push({\\n name: ownerName,\\n fileName: source ? source.fileName : null,\\n lineNumber: source ? source.lineNumber : null\\n });\\n id = parentID;\\n }\\n } catch (err) {\\n // Internal state is messed up.\\n // Stop building the stack (it's just a nice to have).\\n }\\n\\n console.reactStack(stack);\\n },\\n popNonStandardWarningStack: function () {\\n if (typeof console.reactStackEnd !== 'function') {\\n return;\\n }\\n console.reactStackEnd();\\n }\\n};\\n\\nmodule.exports = ReactComponentTreeHook;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rLmpzPzM5ODMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbmZ1bmN0aW9uIGlzTmF0aXZlKGZuKSB7XG4gIC8vIEJhc2VkIG9uIGlzTmF0aXZlKCkgZnJvbSBMb2Rhc2hcbiAgdmFyIGZ1bmNUb1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztcbiAgdmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbiAgdmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICsgZnVuY1RvU3RyaW5nXG4gIC8vIFRha2UgYW4gZXhhbXBsZSBuYXRpdmUgZnVuY3Rpb24gc291cmNlIGZvciBjb21wYXJpc29uXG4gIC5jYWxsKGhhc093blByb3BlcnR5XG4gIC8vIFN0cmlwIHJlZ2V4IGNoYXJhY3RlcnMgc28gd2UgY2FuIHVzZSBpdCBmb3IgcmVnZXhcbiAgKS5yZXBsYWNlKC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZywgJ1xcXFwkJidcbiAgLy8gUmVtb3ZlIGhhc093blByb3BlcnR5IGZyb20gdGhlIHRlbXBsYXRlIHRvIG1ha2UgaXQgZ2VuZXJpY1xuICApLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnKTtcbiAgdHJ5IHtcbiAgICB2YXIgc291cmNlID0gZnVuY1RvU3RyaW5nLmNhbGwoZm4pO1xuICAgIHJldHVybiByZUlzTmF0aXZlLnRlc3Qoc291cmNlKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbnZhciBjYW5Vc2VDb2xsZWN0aW9ucyA9XG4vLyBBcnJheS5mcm9tXG50eXBlb2YgQXJyYXkuZnJvbSA9PT0gJ2Z1bmN0aW9uJyAmJlxuLy8gTWFwXG50eXBlb2YgTWFwID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKE1hcCkgJiZcbi8vIE1hcC5wcm90b3R5cGUua2V5c1xuTWFwLnByb3RvdHlwZSAhPSBudWxsICYmIHR5cGVvZiBNYXAucHJvdG90eXBlLmtleXMgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUoTWFwLnByb3RvdHlwZS5rZXlzKSAmJlxuLy8gU2V0XG50eXBlb2YgU2V0ID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKFNldCkgJiZcbi8vIFNldC5wcm90b3R5cGUua2V5c1xuU2V0LnByb3RvdHlwZSAhPSBudWxsICYmIHR5cGVvZiBTZXQucHJvdG90eXBlLmtleXMgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUoU2V0LnByb3RvdHlwZS5rZXlzKTtcblxudmFyIHNldEl0ZW07XG52YXIgZ2V0SXRlbTtcbnZhciByZW1vdmVJdGVtO1xudmFyIGdldEl0ZW1JRHM7XG52YXIgYWRkUm9vdDtcbnZhciByZW1vdmVSb290O1xudmFyIGdldFJvb3RJRHM7XG5cbmlmIChjYW5Vc2VDb2xsZWN0aW9ucykge1xuICB2YXIgaXRlbU1hcCA9IG5ldyBNYXAoKTtcbiAgdmFyIHJvb3RJRFNldCA9IG5ldyBTZXQoKTtcblxuICBzZXRJdGVtID0gZnVuY3Rpb24gKGlkLCBpdGVtKSB7XG4gICAgaXRlbU1hcC5zZXQoaWQsIGl0ZW0pO1xuICB9O1xuICBnZXRJdGVtID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuIGl0ZW1NYXAuZ2V0KGlkKTtcbiAgfTtcbiAgcmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpZCkge1xuICAgIGl0ZW1NYXBbJ2RlbGV0ZSddKGlkKTtcbiAgfTtcbiAgZ2V0SXRlbUlEcyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShpdGVtTWFwLmtleXMoKSk7XG4gIH07XG5cbiAgYWRkUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHJvb3RJRFNldC5hZGQoaWQpO1xuICB9O1xuICByZW1vdmVSb290ID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgcm9vdElEU2V0WydkZWxldGUnXShpZCk7XG4gIH07XG4gIGdldFJvb3RJRHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20ocm9vdElEU2V0LmtleXMoKSk7XG4gIH07XG59IGVsc2Uge1xuICB2YXIgaXRlbUJ5S2V5ID0ge307XG4gIHZhciByb290QnlLZXkgPSB7fTtcblxuICAvLyBVc2Ugbm9uLW51bWVyaWMga2V5cyB0byBwcmV2ZW50IFY4IHBlcmZvcm1hbmNlIGlzc3VlczpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzIzMlxuICB2YXIgZ2V0S2V5RnJvbUlEID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuICcuJyArIGlkO1xuICB9O1xuICB2YXIgZ2V0SURGcm9tS2V5ID0gZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBwYXJzZUludChrZXkuc3Vic3RyKDEpLCAxMCk7XG4gIH07XG5cbiAgc2V0SXRlbSA9IGZ1bmN0aW9uIChpZCwgaXRlbSkge1xuICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xuICAgIGl0ZW1CeUtleVtrZXldID0gaXRlbTtcbiAgfTtcbiAgZ2V0SXRlbSA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xuICAgIHJldHVybiBpdGVtQnlLZXlba2V5XTtcbiAgfTtcbiAgcmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xuICAgIGRlbGV0ZSBpdGVtQnlLZXlba2V5XTtcbiAgfTtcbiAgZ2V0SXRlbUlEcyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoaXRlbUJ5S2V5KS5tYXAoZ2V0SURGcm9tS2V5KTtcbiAgfTtcblxuICBhZGRSb290ID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7XG4gICAgcm9vdEJ5S2V5W2tleV0gPSB0cnVlO1xuICB9O1xuICByZW1vdmVSb290ID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7XG4gICAgZGVsZXRlIHJvb3RCeUtleVtrZXldO1xuICB9O1xuICBnZXRSb290SURzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhyb290QnlLZXkpLm1hcChnZXRJREZyb21LZXkpO1xuICB9O1xufVxuXG52YXIgdW5tb3VudGVkSURzID0gW107XG5cbmZ1bmN0aW9uIHB1cmdlRGVlcChpZCkge1xuICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICBpZiAoaXRlbSkge1xuICAgIHZhciBjaGlsZElEcyA9IGl0ZW0uY2hpbGRJRHM7XG5cbiAgICByZW1vdmVJdGVtKGlkKTtcbiAgICBjaGlsZElEcy5mb3JFYWNoKHB1cmdlRGVlcCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVDb21wb25lbnRGcmFtZShuYW1lLCBzb3VyY2UsIG93bmVyTmFtZSkge1xuICByZXR1cm4gJ1xcbiAgICBpbiAnICsgKG5hbWUgfHwgJ1Vua25vd24nKSArIChzb3VyY2UgPyAnIChhdCAnICsgc291cmNlLmZpbGVOYW1lLnJlcGxhY2UoL14uKltcXFxcXFwvXS8sICcnKSArICc6JyArIHNvdXJjZS5saW5lTnVtYmVyICsgJyknIDogb3duZXJOYW1lID8gJyAoY3JlYXRlZCBieSAnICsgb3duZXJOYW1lICsgJyknIDogJycpO1xufVxuXG5mdW5jdGlvbiBnZXREaXNwbGF5TmFtZShlbGVtZW50KSB7XG4gIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm4gJyNlbXB0eSc7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBlbGVtZW50ID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiAnI3RleHQnO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQudHlwZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZWxlbWVudC50eXBlLmRpc3BsYXlOYW1lIHx8IGVsZW1lbnQudHlwZS5uYW1lIHx8ICdVbmtub3duJztcbiAgfVxufVxuXG5mdW5jdGlvbiBkZXNjcmliZUlEKGlkKSB7XG4gIHZhciBuYW1lID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXREaXNwbGF5TmFtZShpZCk7XG4gIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtcbiAgdmFyIG93bmVySUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldE93bmVySUQoaWQpO1xuICB2YXIgb3duZXJOYW1lO1xuICBpZiAob3duZXJJRCkge1xuICAgIG93bmVyTmFtZSA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUob3duZXJJRCk7XG4gIH1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZWxlbWVudCwgJ1JlYWN0Q29tcG9uZW50VHJlZUhvb2s6IE1pc3NpbmcgUmVhY3QgZWxlbWVudCBmb3IgZGVidWdJRCAlcyB3aGVuICcgKyAnYnVpbGRpbmcgc3RhY2snLCBpZCkgOiB2b2lkIDA7XG4gIHJldHVybiBkZXNjcmliZUNvbXBvbmVudEZyYW1lKG5hbWUsIGVsZW1lbnQgJiYgZWxlbWVudC5fc291cmNlLCBvd25lck5hbWUpO1xufVxuXG52YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHtcbiAgb25TZXRDaGlsZHJlbjogZnVuY3Rpb24gKGlkLCBuZXh0Q2hpbGRJRHMpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgICFpdGVtID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0l0ZW0gbXVzdCBoYXZlIGJlZW4gc2V0JykgOiBfcHJvZEludmFyaWFudCgnMTQ0JykgOiB2b2lkIDA7XG4gICAgaXRlbS5jaGlsZElEcyA9IG5leHRDaGlsZElEcztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV4dENoaWxkSURzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmV4dENoaWxkSUQgPSBuZXh0Q2hpbGRJRHNbaV07XG4gICAgICB2YXIgbmV4dENoaWxkID0gZ2V0SXRlbShuZXh0Q2hpbGRJRCk7XG4gICAgICAhbmV4dENoaWxkID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIGhvb2sgZXZlbnRzIHRvIGZpcmUgZm9yIHRoZSBjaGlsZCBiZWZvcmUgaXRzIHBhcmVudCBpbmNsdWRlcyBpdCBpbiBvblNldENoaWxkcmVuKCkuJykgOiBfcHJvZEludmFyaWFudCgnMTQwJykgOiB2b2lkIDA7XG4gICAgICAhKG5leHRDaGlsZC5jaGlsZElEcyAhPSBudWxsIHx8IHR5cGVvZiBuZXh0Q2hpbGQuZWxlbWVudCAhPT0gJ29iamVjdCcgfHwgbmV4dENoaWxkLmVsZW1lbnQgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgb25TZXRDaGlsZHJlbigpIHRvIGZpcmUgZm9yIGEgY29udGFpbmVyIGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4nKSA6IF9wcm9kSW52YXJpYW50KCcxNDEnKSA6IHZvaWQgMDtcbiAgICAgICFuZXh0Q2hpbGQuaXNNb3VudGVkID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIG9uTW91bnRDb21wb25lbnQoKSB0byBmaXJlIGZvciB0aGUgY2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMgaXQgaW4gb25TZXRDaGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlhbnQoJzcxJykgOiB2b2lkIDA7XG4gICAgICBpZiAobmV4dENoaWxkLnBhcmVudElEID09IG51bGwpIHtcbiAgICAgICAgbmV4dENoaWxkLnBhcmVudElEID0gaWQ7XG4gICAgICAgIC8vIFRPRE86IFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBidXQgbW91bnRpbmcgYSBuZXcgcm9vdCBkdXJpbmcgaW5cbiAgICAgICAgLy8gY29tcG9uZW50V2lsbE1vdW50IGN1cnJlbnRseSBjYXVzZXMgbm90LXlldC1tb3VudGVkIGNvbXBvbmVudHMgdG9cbiAgICAgICAgLy8gYmUgcHVyZ2VkIGZyb20gb3VyIHRyZWUgZGF0YSBzbyB0aGVpciBwYXJlbnQgaWQgaXMgbWlzc2luZy5cbiAgICAgIH1cbiAgICAgICEobmV4dENoaWxkLnBhcmVudElEID09PSBpZCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgb25CZWZvcmVNb3VudENvbXBvbmVudCgpIHBhcmVudCBhbmQgb25TZXRDaGlsZHJlbigpIHRvIGJlIGNvbnNpc3RlbnQgKCVzIGhhcyBwYXJlbnRzICVzIGFuZCAlcykuJywgbmV4dENoaWxkSUQsIG5leHRDaGlsZC5wYXJlbnRJRCwgaWQpIDogX3Byb2RJbnZhcmlhbnQoJzE0MicsIG5leHRDaGlsZElELCBuZXh0Q2hpbGQucGFyZW50SUQsIGlkKSA6IHZvaWQgMDtcbiAgICB9XG4gIH0sXG4gIG9uQmVmb3JlTW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCwgZWxlbWVudCwgcGFyZW50SUQpIHtcbiAgICB2YXIgaXRlbSA9IHtcbiAgICAgIGVsZW1lbnQ6IGVsZW1lbnQsXG4gICAgICBwYXJlbnRJRDogcGFyZW50SUQsXG4gICAgICB0ZXh0OiBudWxsLFxuICAgICAgY2hpbGRJRHM6IFtdLFxuICAgICAgaXNNb3VudGVkOiBmYWxzZSxcbiAgICAgIHVwZGF0ZUNvdW50OiAwXG4gICAgfTtcbiAgICBzZXRJdGVtKGlkLCBpdGVtKTtcbiAgfSxcbiAgb25CZWZvcmVVcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCwgZWxlbWVudCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgaWYgKCFpdGVtIHx8ICFpdGVtLmlzTW91bnRlZCkge1xuICAgICAgLy8gV2UgbWF5IGVuZCB1cCBoZXJlIGFzIGEgcmVzdWx0IG9mIHNldFN0YXRlKCkgaW4gY29tcG9uZW50V2lsbFVubW91bnQoKS5cbiAgICAgIC8vIEluIHRoaXMgY2FzZSwgaWdub3JlIHRoZSBlbGVtZW50LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpdGVtLmVsZW1lbnQgPSBlbGVtZW50O1xuICB9LFxuICBvbk1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgICFpdGVtID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0l0ZW0gbXVzdCBoYXZlIGJlZW4gc2V0JykgOiBfcHJvZEludmFyaWFudCgnMTQ0JykgOiB2b2lkIDA7XG4gICAgaXRlbS5pc01vdW50ZWQgPSB0cnVlO1xuICAgIHZhciBpc1Jvb3QgPSBpdGVtLnBhcmVudElEID09PSAwO1xuICAgIGlmIChpc1Jvb3QpIHtcbiAgICAgIGFkZFJvb3QoaWQpO1xuICAgIH1cbiAgfSxcbiAgb25VcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgaWYgKCFpdGVtIHx8ICFpdGVtLmlzTW91bnRlZCkge1xuICAgICAgLy8gV2UgbWF5IGVuZCB1cCBoZXJlIGFzIGEgcmVzdWx0IG9mIHNldFN0YXRlKCkgaW4gY29tcG9uZW50V2lsbFVubW91bnQoKS5cbiAgICAgIC8vIEluIHRoaXMgY2FzZSwgaWdub3JlIHRoZSBlbGVtZW50LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpdGVtLnVwZGF0ZUNvdW50Kys7XG4gIH0sXG4gIG9uVW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICBpZiAoaXRlbSkge1xuICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBpZiBpdCBleGlzdHMuXG4gICAgICAvLyBgaXRlbWAgbWlnaHQgbm90IGV4aXN0IGlmIGl0IGlzIGluc2lkZSBhbiBlcnJvciBib3VuZGFyeSwgYW5kIGEgc2libGluZ1xuICAgICAgLy8gZXJyb3IgYm91bmRhcnkgY2hpbGQgdGhyZXcgd2hpbGUgbW91bnRpbmcuIFRoZW4gdGhpcyBpbnN0YW5jZSBuZXZlclxuICAgICAgLy8gZ290IGEgY2hhbmNlIHRvIG1vdW50LCBidXQgaXQgc3RpbGwgZ2V0cyBhbiB1bm1vdW50aW5nIGV2ZW50IGR1cmluZ1xuICAgICAgLy8gdGhlIGVycm9yIGJvdW5kYXJ5IGNsZWFudXAuXG4gICAgICBpdGVtLmlzTW91bnRlZCA9IGZhbHNlO1xuICAgICAgdmFyIGlzUm9vdCA9IGl0ZW0ucGFyZW50SUQgPT09IDA7XG4gICAgICBpZiAoaXNSb290KSB7XG4gICAgICAgIHJlbW92ZVJvb3QoaWQpO1xuICAgICAgfVxuICAgIH1cbiAgICB1bm1vdW50ZWRJRHMucHVzaChpZCk7XG4gIH0sXG4gIHB1cmdlVW5tb3VudGVkQ29tcG9uZW50czogZnVuY3Rpb24gKCkge1xuICAgIGlmIChSZWFjdENvbXBvbmVudFRyZWVIb29rLl9wcmV2ZW50UHVyZ2luZykge1xuICAgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdGVzdGluZy5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVubW91bnRlZElEcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkID0gdW5tb3VudGVkSURzW2ldO1xuICAgICAgcHVyZ2VEZWVwKGlkKTtcbiAgICB9XG4gICAgdW5tb3VudGVkSURzLmxlbmd0aCA9IDA7XG4gIH0sXG4gIGlzTW91bnRlZDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0uaXNNb3VudGVkIDogZmFsc2U7XG4gIH0sXG4gIGdldEN1cnJlbnRTdGFja0FkZGVuZHVtOiBmdW5jdGlvbiAodG9wRWxlbWVudCkge1xuICAgIHZhciBpbmZvID0gJyc7XG4gICAgaWYgKHRvcEVsZW1lbnQpIHtcbiAgICAgIHZhciBuYW1lID0gZ2V0RGlzcGxheU5hbWUodG9wRWxlbWVudCk7XG4gICAgICB2YXIgb3duZXIgPSB0b3BFbGVtZW50Ll9vd25lcjtcbiAgICAgIGluZm8gKz0gZGVzY3JpYmVDb21wb25lbnRGcmFtZShuYW1lLCB0b3BFbGVtZW50Ll9zb3VyY2UsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSk7XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnRPd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG4gICAgdmFyIGlkID0gY3VycmVudE93bmVyICYmIGN1cnJlbnRPd25lci5fZGVidWdJRDtcblxuICAgIGluZm8gKz0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChpZCk7XG4gICAgcmV0dXJuIGluZm87XG4gIH0sXG4gIGdldFN0YWNrQWRkZW5kdW1CeUlEOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgaW5mbyA9ICcnO1xuICAgIHdoaWxlIChpZCkge1xuICAgICAgaW5mbyArPSBkZXNjcmliZUlEKGlkKTtcbiAgICAgIGlkID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRQYXJlbnRJRChpZCk7XG4gICAgfVxuICAgIHJldHVybiBpbmZvO1xuICB9LFxuICBnZXRDaGlsZElEczogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0uY2hpbGRJRHMgOiBbXTtcbiAgfSxcbiAgZ2V0RGlzcGxheU5hbWU6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWUoZWxlbWVudCk7XG4gIH0sXG4gIGdldEVsZW1lbnQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLmVsZW1lbnQgOiBudWxsO1xuICB9LFxuICBnZXRPd25lcklEOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG4gICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50Ll9vd25lcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50Ll9vd25lci5fZGVidWdJRDtcbiAgfSxcbiAgZ2V0UGFyZW50SUQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLnBhcmVudElEIDogbnVsbDtcbiAgfSxcbiAgZ2V0U291cmNlOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIHZhciBlbGVtZW50ID0gaXRlbSA/IGl0ZW0uZWxlbWVudCA6IG51bGw7XG4gICAgdmFyIHNvdXJjZSA9IGVsZW1lbnQgIT0gbnVsbCA/IGVsZW1lbnQuX3NvdXJjZSA6IG51bGw7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfSxcbiAgZ2V0VGV4dDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQpO1xuICAgIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gJycgKyBlbGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0sXG4gIGdldFVwZGF0ZUNvdW50OiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIHJldHVybiBpdGVtID8gaXRlbS51cGRhdGVDb3VudCA6IDA7XG4gIH0sXG5cblxuICBnZXRSb290SURzOiBnZXRSb290SURzLFxuICBnZXRSZWdpc3RlcmVkSURzOiBnZXRJdGVtSURzLFxuXG4gIHB1c2hOb25TdGFuZGFyZFdhcm5pbmdTdGFjazogZnVuY3Rpb24gKGlzQ3JlYXRpbmdFbGVtZW50LCBjdXJyZW50U291cmNlKSB7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlLnJlYWN0U3RhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgY3VycmVudE93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICB2YXIgaWQgPSBjdXJyZW50T3duZXIgJiYgY3VycmVudE93bmVyLl9kZWJ1Z0lEO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChpc0NyZWF0aW5nRWxlbWVudCkge1xuICAgICAgICBzdGFjay5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBpZCA/IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUoaWQpIDogbnVsbCxcbiAgICAgICAgICBmaWxlTmFtZTogY3VycmVudFNvdXJjZSA/IGN1cnJlbnRTb3VyY2UuZmlsZU5hbWUgOiBudWxsLFxuICAgICAgICAgIGxpbmVOdW1iZXI6IGN1cnJlbnRTb3VyY2UgPyBjdXJyZW50U291cmNlLmxpbmVOdW1iZXIgOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAoaWQpIHtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQpO1xuICAgICAgICB2YXIgcGFyZW50SUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFBhcmVudElEKGlkKTtcbiAgICAgICAgdmFyIG93bmVySUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldE93bmVySUQoaWQpO1xuICAgICAgICB2YXIgb3duZXJOYW1lID0gb3duZXJJRCA/IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUob3duZXJJRCkgOiBudWxsO1xuICAgICAgICB2YXIgc291cmNlID0gZWxlbWVudCAmJiBlbGVtZW50Ll9zb3VyY2U7XG4gICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgIG5hbWU6IG93bmVyTmFtZSxcbiAgICAgICAgICBmaWxlTmFtZTogc291cmNlID8gc291cmNlLmZpbGVOYW1lIDogbnVsbCxcbiAgICAgICAgICBsaW5lTnVtYmVyOiBzb3VyY2UgPyBzb3VyY2UubGluZU51bWJlciA6IG51bGxcbiAgICAgICAgfSk7XG4gICAgICAgIGlkID0gcGFyZW50SUQ7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBJbnRlcm5hbCBzdGF0ZSBpcyBtZXNzZWQgdXAuXG4gICAgICAvLyBTdG9wIGJ1aWxkaW5nIHRoZSBzdGFjayAoaXQncyBqdXN0IGEgbmljZSB0byBoYXZlKS5cbiAgICB9XG5cbiAgICBjb25zb2xlLnJlYWN0U3RhY2soc3RhY2spO1xuICB9LFxuICBwb3BOb25TdGFuZGFyZFdhcm5pbmdTdGFjazogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgY29uc29sZS5yZWFjdFN0YWNrRW5kICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnNvbGUucmVhY3RTdGFja0VuZCgpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rLmpzXG4vLyBtb2R1bGUgaWQgPSAxMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///10\\n\");\n\n/***/ }),\n/* 11 */\n/* no static exports found */\n/* all exports used */\n/*!*******************************************!*\\\n !*** ./~/react/lib/lowPriorityWarning.js ***!\n \\*******************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2014-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\n/**\\n * Forked from fbjs/warning:\\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\\n *\\n * Only change is we use console.warn instead of console.error,\\n * and do nothing when 'console' is not supported.\\n * This really simplifies the code.\\n * ---\\n * Similar to invariant but only logs a warning if the condition is not met.\\n * This can be used to log issues in development environments in critical\\n * paths. Removing the logging code for production environments will keep the\\n * same logic and follow the same code paths.\\n */\\n\\nvar lowPriorityWarning = function () {};\\n\\nif (process.env.NODE_ENV !== 'production') {\\n var printWarning = function (format) {\\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\\n args[_key - 1] = arguments[_key];\\n }\\n\\n var argIndex = 0;\\n var message = 'Warning: ' + format.replace(/%s/g, function () {\\n return args[argIndex++];\\n });\\n if (typeof console !== 'undefined') {\\n console.warn(message);\\n }\\n try {\\n // --- Welcome to debugging React ---\\n // This error was thrown as a convenience so that you can use this stack\\n // to find the callsite that caused this warning to fire.\\n throw new Error(message);\\n } catch (x) {}\\n };\\n\\n lowPriorityWarning = function (condition, format) {\\n if (format === undefined) {\\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\\n }\\n if (!condition) {\\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\\n args[_key2 - 2] = arguments[_key2];\\n }\\n\\n printWarning.apply(undefined, [format].concat(args));\\n }\\n };\\n}\\n\\nmodule.exports = lowPriorityWarning;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9sb3dQcmlvcml0eVdhcm5pbmcuanM/ZDkzYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogRm9ya2VkIGZyb20gZmJqcy93YXJuaW5nOlxuICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2ZianMvYmxvYi9lNjZiYTIwYWQ1YmU0MzNlYjU0NDIzZjJiMDk3ZDgyOTMyNGQ5ZGU2L3BhY2thZ2VzL2ZianMvc3JjL19fZm9ya3NfXy93YXJuaW5nLmpzXG4gKlxuICogT25seSBjaGFuZ2UgaXMgd2UgdXNlIGNvbnNvbGUud2FybiBpbnN0ZWFkIG9mIGNvbnNvbGUuZXJyb3IsXG4gKiBhbmQgZG8gbm90aGluZyB3aGVuICdjb25zb2xlJyBpcyBub3Qgc3VwcG9ydGVkLlxuICogVGhpcyByZWFsbHkgc2ltcGxpZmllcyB0aGUgY29kZS5cbiAqIC0tLVxuICogU2ltaWxhciB0byBpbnZhcmlhbnQgYnV0IG9ubHkgbG9ncyBhIHdhcm5pbmcgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0LlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBsb2cgaXNzdWVzIGluIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBpbiBjcml0aWNhbFxuICogcGF0aHMuIFJlbW92aW5nIHRoZSBsb2dnaW5nIGNvZGUgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdpbGwga2VlcCB0aGVcbiAqIHNhbWUgbG9naWMgYW5kIGZvbGxvdyB0aGUgc2FtZSBjb2RlIHBhdGhzLlxuICovXG5cbnZhciBsb3dQcmlvcml0eVdhcm5pbmcgPSBmdW5jdGlvbiAoKSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcbiAgICB9KTtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLndhcm4obWVzc2FnZSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXG4gICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2tcbiAgICAgIC8vIHRvIGZpbmQgdGhlIGNhbGxzaXRlIHRoYXQgY2F1c2VkIHRoaXMgd2FybmluZyB0byBmaXJlLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKHgpIHt9XG4gIH07XG5cbiAgbG93UHJpb3JpdHlXYXJuaW5nID0gZnVuY3Rpb24gKGNvbmRpdGlvbiwgZm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2B3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgKyAnbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIgPiAyID8gX2xlbjIgLSAyIDogMCksIF9rZXkyID0gMjsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgICBhcmdzW19rZXkyIC0gMl0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgICAgfVxuXG4gICAgICBwcmludFdhcm5pbmcuYXBwbHkodW5kZWZpbmVkLCBbZm9ybWF0XS5jb25jYXQoYXJncykpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsb3dQcmlvcml0eVdhcm5pbmc7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0L2xpYi9sb3dQcmlvcml0eVdhcm5pbmcuanNcbi8vIG1vZHVsZSBpZCA9IDExXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///11\\n\");\n\n/***/ }),\n/* 12 */\n/* no static exports found */\n/* all exports used */\n/*!***********************************!*\\\n !*** ./~/fbjs/lib/emptyObject.js ***!\n \\***********************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\nvar emptyObject = {};\\n\\nif (process.env.NODE_ENV !== 'production') {\\n Object.freeze(emptyObject);\\n}\\n\\nmodule.exports = emptyObject;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2VtcHR5T2JqZWN0LmpzPzQyZTQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlPYmplY3QgPSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgT2JqZWN0LmZyZWV6ZShlbXB0eU9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZW1wdHlPYmplY3Q7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2ZianMvbGliL2VtcHR5T2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///12\\n\");\n\n/***/ }),\n/* 13 */\n/* no static exports found */\n/* all exports used */\n/*!*************************************************!*\\\n !*** ./~/prop-types/factoryWithTypeCheckers.js ***!\n \\*************************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n */\\n\\n\\n\\nvar emptyFunction = __webpack_require__(/*! fbjs/lib/emptyFunction */ 6);\\nvar invariant = __webpack_require__(/*! fbjs/lib/invariant */ 1);\\nvar warning = __webpack_require__(/*! fbjs/lib/warning */ 2);\\nvar assign = __webpack_require__(/*! object-assign */ 5);\\n\\nvar ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ 9);\\nvar checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ 23);\\n\\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\\n /* global Symbol */\\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\\n\\n /**\\n * Returns the iterator method function contained on the iterable object.\\n *\\n * Be sure to invoke the function with the iterable as context:\\n *\\n * var iteratorFn = getIteratorFn(myIterable);\\n * if (iteratorFn) {\\n * var iterator = iteratorFn.call(myIterable);\\n * ...\\n * }\\n *\\n * @param {?object} maybeIterable\\n * @return {?function}\\n */\\n function getIteratorFn(maybeIterable) {\\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\\n if (typeof iteratorFn === 'function') {\\n return iteratorFn;\\n }\\n }\\n\\n /**\\n * Collection of methods that allow declaration and validation of props that are\\n * supplied to React components. Example usage:\\n *\\n * var Props = require('ReactPropTypes');\\n * var MyArticle = React.createClass({\\n * propTypes: {\\n * // An optional string prop named \\\"description\\\".\\n * description: Props.string,\\n *\\n * // A required enum prop named \\\"category\\\".\\n * category: Props.oneOf(['News','Photos']).isRequired,\\n *\\n * // A prop named \\\"dialog\\\" that requires an instance of Dialog.\\n * dialog: Props.instanceOf(Dialog).isRequired\\n * },\\n * render: function() { ... }\\n * });\\n *\\n * A more formal specification of how these methods are used:\\n *\\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\\n * decl := ReactPropTypes.{type}(.isRequired)?\\n *\\n * Each and every declaration produces a function with the same signature. This\\n * allows the creation of custom validation functions. For example:\\n *\\n * var MyLink = React.createClass({\\n * propTypes: {\\n * // An optional string or URI prop named \\\"href\\\".\\n * href: function(props, propName, componentName) {\\n * var propValue = props[propName];\\n * if (propValue != null && typeof propValue !== 'string' &&\\n * !(propValue instanceof URI)) {\\n * return new Error(\\n * 'Expected a string or an URI for ' + propName + ' in ' +\\n * componentName\\n * );\\n * }\\n * }\\n * },\\n * render: function() {...}\\n * });\\n *\\n * @internal\\n */\\n\\n var ANONYMOUS = '<>';\\n\\n // Important!\\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\\n var ReactPropTypes = {\\n array: createPrimitiveTypeChecker('array'),\\n bool: createPrimitiveTypeChecker('boolean'),\\n func: createPrimitiveTypeChecker('function'),\\n number: createPrimitiveTypeChecker('number'),\\n object: createPrimitiveTypeChecker('object'),\\n string: createPrimitiveTypeChecker('string'),\\n symbol: createPrimitiveTypeChecker('symbol'),\\n\\n any: createAnyTypeChecker(),\\n arrayOf: createArrayOfTypeChecker,\\n element: createElementTypeChecker(),\\n instanceOf: createInstanceTypeChecker,\\n node: createNodeChecker(),\\n objectOf: createObjectOfTypeChecker,\\n oneOf: createEnumTypeChecker,\\n oneOfType: createUnionTypeChecker,\\n shape: createShapeTypeChecker,\\n exact: createStrictShapeTypeChecker,\\n };\\n\\n /**\\n * inlined Object.is polyfill to avoid requiring consumers ship their own\\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\\n */\\n /*eslint-disable no-self-compare*/\\n function is(x, y) {\\n // SameValue algorithm\\n if (x === y) {\\n // Steps 1-5, 7-10\\n // Steps 6.b-6.e: +0 != -0\\n return x !== 0 || 1 / x === 1 / y;\\n } else {\\n // Step 6.a: NaN == NaN\\n return x !== x && y !== y;\\n }\\n }\\n /*eslint-enable no-self-compare*/\\n\\n /**\\n * We use an Error-like object for backward compatibility as people may call\\n * PropTypes directly and inspect their output. However, we don't use real\\n * Errors anymore. We don't inspect their stack anyway, and creating them\\n * is prohibitively expensive if they are created too often, such as what\\n * happens in oneOfType() for any type before the one that matched.\\n */\\n function PropTypeError(message) {\\n this.message = message;\\n this.stack = '';\\n }\\n // Make `instanceof Error` still work for returned errors.\\n PropTypeError.prototype = Error.prototype;\\n\\n function createChainableTypeChecker(validate) {\\n if (process.env.NODE_ENV !== 'production') {\\n var manualPropTypeCallCache = {};\\n var manualPropTypeWarningCount = 0;\\n }\\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\\n componentName = componentName || ANONYMOUS;\\n propFullName = propFullName || propName;\\n\\n if (secret !== ReactPropTypesSecret) {\\n if (throwOnDirectAccess) {\\n // New behavior only for users of `prop-types` package\\n invariant(\\n false,\\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\\n 'Read more at http://fb.me/use-check-prop-types'\\n );\\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\\n // Old behavior for people using React.PropTypes\\n var cacheKey = componentName + ':' + propName;\\n if (\\n !manualPropTypeCallCache[cacheKey] &&\\n // Avoid spamming the console because they are often not actionable except for lib authors\\n manualPropTypeWarningCount < 3\\n ) {\\n warning(\\n false,\\n 'You are manually calling a React.PropTypes validation ' +\\n 'function for the `%s` prop on `%s`. This is deprecated ' +\\n 'and will throw in the standalone `prop-types` package. ' +\\n 'You may be seeing this warning due to a third-party PropTypes ' +\\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\\n propFullName,\\n componentName\\n );\\n manualPropTypeCallCache[cacheKey] = true;\\n manualPropTypeWarningCount++;\\n }\\n }\\n }\\n if (props[propName] == null) {\\n if (isRequired) {\\n if (props[propName] === null) {\\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\\n }\\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\\n }\\n return null;\\n } else {\\n return validate(props, propName, componentName, location, propFullName);\\n }\\n }\\n\\n var chainedCheckType = checkType.bind(null, false);\\n chainedCheckType.isRequired = checkType.bind(null, true);\\n\\n return chainedCheckType;\\n }\\n\\n function createPrimitiveTypeChecker(expectedType) {\\n function validate(props, propName, componentName, location, propFullName, secret) {\\n var propValue = props[propName];\\n var propType = getPropType(propValue);\\n if (propType !== expectedType) {\\n // `propValue` being instance of, say, date/regexp, pass the 'object'\\n // check, but we can offer a more precise error message here rather than\\n // 'of type `object`'.\\n var preciseType = getPreciseType(propValue);\\n\\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\\n }\\n return null;\\n }\\n return createChainableTypeChecker(validate);\\n }\\n\\n function createAnyTypeChecker() {\\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\\n }\\n\\n function createArrayOfTypeChecker(typeChecker) {\\n function validate(props, propName, componentName, location, propFullName) {\\n if (typeof typeChecker !== 'function') {\\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\\n }\\n var propValue = props[propName];\\n if (!Array.isArray(propValue)) {\\n var propType = getPropType(propValue);\\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\\n }\\n for (var i = 0; i < propValue.length; i++) {\\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\\n if (error instanceof Error) {\\n return error;\\n }\\n }\\n return null;\\n }\\n return createChainableTypeChecker(validate);\\n }\\n\\n function createElementTypeChecker() {\\n function validate(props, propName, componentName, location, propFullName) {\\n var propValue = props[propName];\\n if (!isValidElement(propValue)) {\\n var propType = getPropType(propValue);\\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\\n }\\n return null;\\n }\\n return createChainableTypeChecker(validate);\\n }\\n\\n function createInstanceTypeChecker(expectedClass) {\\n function validate(props, propName, componentName, location, propFullName) {\\n if (!(props[propName] instanceof expectedClass)) {\\n var expectedClassName = expectedClass.name || ANONYMOUS;\\n var actualClassName = getClassName(props[propName]);\\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\\n }\\n return null;\\n }\\n return createChainableTypeChecker(validate);\\n }\\n\\n function createEnumTypeChecker(expectedValues) {\\n if (!Array.isArray(expectedValues)) {\\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\\n return emptyFunction.thatReturnsNull;\\n }\\n\\n function validate(props, propName, componentName, location, propFullName) {\\n var propValue = props[propName];\\n for (var i = 0; i < expectedValues.length; i++) {\\n if (is(propValue, expectedValues[i])) {\\n return null;\\n }\\n }\\n\\n var valuesString = JSON.stringify(expectedValues);\\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\\n }\\n return createChainableTypeChecker(validate);\\n }\\n\\n function createObjectOfTypeChecker(typeChecker) {\\n function validate(props, propName, componentName, location, propFullName) {\\n if (typeof typeChecker !== 'function') {\\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\\n }\\n var propValue = props[propName];\\n var propType = getPropType(propValue);\\n if (propType !== 'object') {\\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\\n }\\n for (var key in propValue) {\\n if (propValue.hasOwnProperty(key)) {\\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\\n if (error instanceof Error) {\\n return error;\\n }\\n }\\n }\\n return null;\\n }\\n return createChainableTypeChecker(validate);\\n }\\n\\n function createUnionTypeChecker(arrayOfTypeCheckers) {\\n if (!Array.isArray(arrayOfTypeCheckers)) {\\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\\n return emptyFunction.thatReturnsNull;\\n }\\n\\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\\n var checker = arrayOfTypeCheckers[i];\\n if (typeof checker !== 'function') {\\n warning(\\n false,\\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\\n 'received %s at index %s.',\\n getPostfixForTypeWarning(checker),\\n i\\n );\\n return emptyFunction.thatReturnsNull;\\n }\\n }\\n\\n function validate(props, propName, componentName, location, propFullName) {\\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\\n var checker = arrayOfTypeCheckers[i];\\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\\n return null;\\n }\\n }\\n\\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\\n }\\n return createChainableTypeChecker(validate);\\n }\\n\\n function createNodeChecker() {\\n function validate(props, propName, componentName, location, propFullName) {\\n if (!isNode(props[propName])) {\\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\\n }\\n return null;\\n }\\n return createChainableTypeChecker(validate);\\n }\\n\\n function createShapeTypeChecker(shapeTypes) {\\n function validate(props, propName, componentName, location, propFullName) {\\n var propValue = props[propName];\\n var propType = getPropType(propValue);\\n if (propType !== 'object') {\\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\\n }\\n for (var key in shapeTypes) {\\n var checker = shapeTypes[key];\\n if (!checker) {\\n continue;\\n }\\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\\n if (error) {\\n return error;\\n }\\n }\\n return null;\\n }\\n return createChainableTypeChecker(validate);\\n }\\n\\n function createStrictShapeTypeChecker(shapeTypes) {\\n function validate(props, propName, componentName, location, propFullName) {\\n var propValue = props[propName];\\n var propType = getPropType(propValue);\\n if (propType !== 'object') {\\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\\n }\\n // We need to check all keys in case some are required but missing from\\n // props.\\n var allKeys = assign({}, props[propName], shapeTypes);\\n for (var key in allKeys) {\\n var checker = shapeTypes[key];\\n if (!checker) {\\n return new PropTypeError(\\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\\n '\\\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\\n '\\\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\\n );\\n }\\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\\n if (error) {\\n return error;\\n }\\n }\\n return null;\\n }\\n\\n return createChainableTypeChecker(validate);\\n }\\n\\n function isNode(propValue) {\\n switch (typeof propValue) {\\n case 'number':\\n case 'string':\\n case 'undefined':\\n return true;\\n case 'boolean':\\n return !propValue;\\n case 'object':\\n if (Array.isArray(propValue)) {\\n return propValue.every(isNode);\\n }\\n if (propValue === null || isValidElement(propValue)) {\\n return true;\\n }\\n\\n var iteratorFn = getIteratorFn(propValue);\\n if (iteratorFn) {\\n var iterator = iteratorFn.call(propValue);\\n var step;\\n if (iteratorFn !== propValue.entries) {\\n while (!(step = iterator.next()).done) {\\n if (!isNode(step.value)) {\\n return false;\\n }\\n }\\n } else {\\n // Iterator will provide entry [k,v] tuples rather than values.\\n while (!(step = iterator.next()).done) {\\n var entry = step.value;\\n if (entry) {\\n if (!isNode(entry[1])) {\\n return false;\\n }\\n }\\n }\\n }\\n } else {\\n return false;\\n }\\n\\n return true;\\n default:\\n return false;\\n }\\n }\\n\\n function isSymbol(propType, propValue) {\\n // Native Symbol.\\n if (propType === 'symbol') {\\n return true;\\n }\\n\\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\\n if (propValue['@@toStringTag'] === 'Symbol') {\\n return true;\\n }\\n\\n // Fallback for non-spec compliant Symbols which are polyfilled.\\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\\n return true;\\n }\\n\\n return false;\\n }\\n\\n // Equivalent of `typeof` but with special handling for array and regexp.\\n function getPropType(propValue) {\\n var propType = typeof propValue;\\n if (Array.isArray(propValue)) {\\n return 'array';\\n }\\n if (propValue instanceof RegExp) {\\n // Old webkits (at least until Android 4.0) return 'function' rather than\\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\\n // passes PropTypes.object.\\n return 'object';\\n }\\n if (isSymbol(propType, propValue)) {\\n return 'symbol';\\n }\\n return propType;\\n }\\n\\n // This handles more types than `getPropType`. Only used for error messages.\\n // See `createPrimitiveTypeChecker`.\\n function getPreciseType(propValue) {\\n if (typeof propValue === 'undefined' || propValue === null) {\\n return '' + propValue;\\n }\\n var propType = getPropType(propValue);\\n if (propType === 'object') {\\n if (propValue instanceof Date) {\\n return 'date';\\n } else if (propValue instanceof RegExp) {\\n return 'regexp';\\n }\\n }\\n return propType;\\n }\\n\\n // Returns a string that is postfixed to a warning about an invalid type.\\n // For example, \\\"undefined\\\" or \\\"of type array\\\"\\n function getPostfixForTypeWarning(value) {\\n var type = getPreciseType(value);\\n switch (type) {\\n case 'array':\\n case 'object':\\n return 'an ' + type;\\n case 'boolean':\\n case 'date':\\n case 'regexp':\\n return 'a ' + type;\\n default:\\n return type;\\n }\\n }\\n\\n // Returns class name of the object, if any.\\n function getClassName(propValue) {\\n if (!propValue.constructor || !propValue.constructor.name) {\\n return ANONYMOUS;\\n }\\n return propValue.constructor.name;\\n }\\n\\n ReactPropTypes.checkPropTypes = checkPropTypes;\\n ReactPropTypes.PropTypes = ReactPropTypes;\\n\\n return ReactPropTypes;\\n};\\n\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanM/ZGNkNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcbnZhciBhc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG52YXIgY2hlY2tQcm9wVHlwZXMgPSByZXF1aXJlKCcuL2NoZWNrUHJvcFR5cGVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXNWYWxpZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpIHtcbiAgLyogZ2xvYmFsIFN5bWJvbCAqL1xuICB2YXIgSVRFUkFUT1JfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaXRlcmF0b3I7XG4gIHZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLlxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpdGVyYXRvciBtZXRob2QgZnVuY3Rpb24gY29udGFpbmVkIG9uIHRoZSBpdGVyYWJsZSBvYmplY3QuXG4gICAqXG4gICAqIEJlIHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJsZSBhcyBjb250ZXh0OlxuICAgKlxuICAgKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUpO1xuICAgKiAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICogICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG15SXRlcmFibGUpO1xuICAgKiAgICAgICAuLi5cbiAgICogICAgIH1cbiAgICpcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlXG4gICAqIEByZXR1cm4gez9mdW5jdGlvbn1cbiAgICovXG4gIGZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuICAgIHZhciBpdGVyYXRvckZuID0gbWF5YmVJdGVyYWJsZSAmJiAoSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXSk7XG4gICAgaWYgKHR5cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JGbjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29sbGVjdGlvbiBvZiBtZXRob2RzIHRoYXQgYWxsb3cgZGVjbGFyYXRpb24gYW5kIHZhbGlkYXRpb24gb2YgcHJvcHMgdGhhdCBhcmVcbiAgICogc3VwcGxpZWQgdG8gUmVhY3QgY29tcG9uZW50cy4gRXhhbXBsZSB1c2FnZTpcbiAgICpcbiAgICogICB2YXIgUHJvcHMgPSByZXF1aXJlKCdSZWFjdFByb3BUeXBlcycpO1xuICAgKiAgIHZhciBNeUFydGljbGUgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAqICAgICBwcm9wVHlwZXM6IHtcbiAgICogICAgICAgLy8gQW4gb3B0aW9uYWwgc3RyaW5nIHByb3AgbmFtZWQgXCJkZXNjcmlwdGlvblwiLlxuICAgKiAgICAgICBkZXNjcmlwdGlvbjogUHJvcHMuc3RyaW5nLFxuICAgKlxuICAgKiAgICAgICAvLyBBIHJlcXVpcmVkIGVudW0gcHJvcCBuYW1lZCBcImNhdGVnb3J5XCIuXG4gICAqICAgICAgIGNhdGVnb3J5OiBQcm9wcy5vbmVPZihbJ05ld3MnLCdQaG90b3MnXSkuaXNSZXF1aXJlZCxcbiAgICpcbiAgICogICAgICAgLy8gQSBwcm9wIG5hbWVkIFwiZGlhbG9nXCIgdGhhdCByZXF1aXJlcyBhbiBpbnN0YW5jZSBvZiBEaWFsb2cuXG4gICAqICAgICAgIGRpYWxvZzogUHJvcHMuaW5zdGFuY2VPZihEaWFsb2cpLmlzUmVxdWlyZWRcbiAgICogICAgIH0sXG4gICAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeyAuLi4gfVxuICAgKiAgIH0pO1xuICAgKlxuICAgKiBBIG1vcmUgZm9ybWFsIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZXNlIG1ldGhvZHMgYXJlIHVzZWQ6XG4gICAqXG4gICAqICAgdHlwZSA6PSBhcnJheXxib29sfGZ1bmN8b2JqZWN0fG51bWJlcnxzdHJpbmd8b25lT2YoWy4uLl0pfGluc3RhbmNlT2YoLi4uKVxuICAgKiAgIGRlY2wgOj0gUmVhY3RQcm9wVHlwZXMue3R5cGV9KC5pc1JlcXVpcmVkKT9cbiAgICpcbiAgICogRWFjaCBhbmQgZXZlcnkgZGVjbGFyYXRpb24gcHJvZHVjZXMgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZS4gVGhpc1xuICAgKiBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGN1c3RvbSB2YWxpZGF0aW9uIGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqICB2YXIgTXlMaW5rID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgKiAgICBwcm9wVHlwZXM6IHtcbiAgICogICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgb3IgVVJJIHByb3AgbmFtZWQgXCJocmVmXCIuXG4gICAqICAgICAgaHJlZjogZnVuY3Rpb24ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gICAqICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgKiAgICAgICAgaWYgKHByb3BWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09ICdzdHJpbmcnICYmXG4gICAqICAgICAgICAgICAgIShwcm9wVmFsdWUgaW5zdGFuY2VvZiBVUkkpKSB7XG4gICAqICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoXG4gICAqICAgICAgICAgICAgJ0V4cGVjdGVkIGEgc3RyaW5nIG9yIGFuIFVSSSBmb3IgJyArIHByb3BOYW1lICsgJyBpbiAnICtcbiAgICogICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAqICAgICAgICAgICk7XG4gICAqICAgICAgICB9XG4gICAqICAgICAgfVxuICAgKiAgICB9LFxuICAgKiAgICByZW5kZXI6IGZ1bmN0aW9uKCkgey4uLn1cbiAgICogIH0pO1xuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG5cbiAgdmFyIEFOT05ZTU9VUyA9ICc8PGFub255bW91cz4+JztcblxuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYXJyYXknKSxcbiAgICBib29sOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYm9vbGVhbicpLFxuICAgIGZ1bmM6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdmdW5jdGlvbicpLFxuICAgIG51bWJlcjogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ251bWJlcicpLFxuICAgIG9iamVjdDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ29iamVjdCcpLFxuICAgIHN0cmluZzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N0cmluZycpLFxuICAgIHN5bWJvbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N5bWJvbCcpLFxuXG4gICAgYW55OiBjcmVhdGVBbnlUeXBlQ2hlY2tlcigpLFxuICAgIGFycmF5T2Y6IGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcixcbiAgICBlbGVtZW50OiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIoKSxcbiAgICBpbnN0YW5jZU9mOiBjcmVhdGVJbnN0YW5jZVR5cGVDaGVja2VyLFxuICAgIG5vZGU6IGNyZWF0ZU5vZGVDaGVja2VyKCksXG4gICAgb2JqZWN0T2Y6IGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIsXG4gICAgb25lT2Y6IGNyZWF0ZUVudW1UeXBlQ2hlY2tlcixcbiAgICBvbmVPZlR5cGU6IGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIsXG4gICAgc2hhcGU6IGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIsXG4gICAgZXhhY3Q6IGNyZWF0ZVN0cmljdFNoYXBlVHlwZUNoZWNrZXIsXG4gIH07XG5cbiAgLyoqXG4gICAqIGlubGluZWQgT2JqZWN0LmlzIHBvbHlmaWxsIHRvIGF2b2lkIHJlcXVpcmluZyBjb25zdW1lcnMgc2hpcCB0aGVpciBvd25cbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzXG4gICAqL1xuICAvKmVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29tcGFyZSovXG4gIGZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgICAvLyBTYW1lVmFsdWUgYWxnb3JpdGhtXG4gICAgaWYgKHggPT09IHkpIHtcbiAgICAgIC8vIFN0ZXBzIDEtNSwgNy0xMFxuICAgICAgLy8gU3RlcHMgNi5iLTYuZTogKzAgIT0gLTBcbiAgICAgIHJldHVybiB4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RlcCA2LmE6IE5hTiA9PSBOYU5cbiAgICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG4gICAgfVxuICB9XG4gIC8qZXNsaW50LWVuYWJsZSBuby1zZWxmLWNvbXBhcmUqL1xuXG4gIC8qKlxuICAgKiBXZSB1c2UgYW4gRXJyb3ItbGlrZSBvYmplY3QgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYXMgcGVvcGxlIG1heSBjYWxsXG4gICAqIFByb3BUeXBlcyBkaXJlY3RseSBhbmQgaW5zcGVjdCB0aGVpciBvdXRwdXQuIEhvd2V2ZXIsIHdlIGRvbid0IHVzZSByZWFsXG4gICAqIEVycm9ycyBhbnltb3JlLiBXZSBkb24ndCBpbnNwZWN0IHRoZWlyIHN0YWNrIGFueXdheSwgYW5kIGNyZWF0aW5nIHRoZW1cbiAgICogaXMgcHJvaGliaXRpdmVseSBleHBlbnNpdmUgaWYgdGhleSBhcmUgY3JlYXRlZCB0b28gb2Z0ZW4sIHN1Y2ggYXMgd2hhdFxuICAgKiBoYXBwZW5zIGluIG9uZU9mVHlwZSgpIGZvciBhbnkgdHlwZSBiZWZvcmUgdGhlIG9uZSB0aGF0IG1hdGNoZWQuXG4gICAqL1xuICBmdW5jdGlvbiBQcm9wVHlwZUVycm9yKG1lc3NhZ2UpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuc3RhY2sgPSAnJztcbiAgfVxuICAvLyBNYWtlIGBpbnN0YW5jZW9mIEVycm9yYCBzdGlsbCB3b3JrIGZvciByZXR1cm5lZCBlcnJvcnMuXG4gIFByb3BUeXBlRXJyb3IucHJvdG90eXBlID0gRXJyb3IucHJvdG90eXBlO1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBtYW51YWxQcm9wVHlwZUNhbGxDYWNoZSA9IHt9O1xuICAgICAgdmFyIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50ID0gMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2hlY2tUeXBlKGlzUmVxdWlyZWQsIHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICBjb21wb25lbnROYW1lID0gY29tcG9uZW50TmFtZSB8fCBBTk9OWU1PVVM7XG4gICAgICBwcm9wRnVsbE5hbWUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG5cbiAgICAgIGlmIChzZWNyZXQgIT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAgIGlmICh0aHJvd09uRGlyZWN0QWNjZXNzKSB7XG4gICAgICAgICAgLy8gTmV3IGJlaGF2aW9yIG9ubHkgZm9yIHVzZXJzIG9mIGBwcm9wLXR5cGVzYCBwYWNrYWdlXG4gICAgICAgICAgaW52YXJpYW50KFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAnVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKWAgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAvLyBPbGQgYmVoYXZpb3IgZm9yIHBlb3BsZSB1c2luZyBSZWFjdC5Qcm9wVHlwZXNcbiAgICAgICAgICB2YXIgY2FjaGVLZXkgPSBjb21wb25lbnROYW1lICsgJzonICsgcHJvcE5hbWU7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIW1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSAmJlxuICAgICAgICAgICAgLy8gQXZvaWQgc3BhbW1pbmcgdGhlIGNvbnNvbGUgYmVjYXVzZSB0aGV5IGFyZSBvZnRlbiBub3QgYWN0aW9uYWJsZSBleGNlcHQgZm9yIGxpYiBhdXRob3JzXG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCA8IDNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAnWW91IGFyZSBtYW51YWxseSBjYWxsaW5nIGEgUmVhY3QuUHJvcFR5cGVzIHZhbGlkYXRpb24gJyArXG4gICAgICAgICAgICAgICdmdW5jdGlvbiBmb3IgdGhlIGAlc2AgcHJvcCBvbiBgJXNgLiBUaGlzIGlzIGRlcHJlY2F0ZWQgJyArXG4gICAgICAgICAgICAgICdhbmQgd2lsbCB0aHJvdyBpbiB0aGUgc3RhbmRhbG9uZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAgICdZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVlIHRvIGEgdGhpcmQtcGFydHkgUHJvcFR5cGVzICcgK1xuICAgICAgICAgICAgICAnbGlicmFyeS4gU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1kb250LWNhbGwtcHJvcHR5cGVzICcgKyAnZm9yIGRldGFpbHMuJyxcbiAgICAgICAgICAgICAgcHJvcEZ1bGxOYW1lLFxuICAgICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGVbY2FjaGVLZXldID0gdHJ1ZTtcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50Kys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHtcbiAgICAgICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkICcgKyAoJ2luIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4nKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuJykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNoYWluZWRDaGVja1R5cGUgPSBjaGVja1R5cGUuYmluZChudWxsLCBmYWxzZSk7XG4gICAgY2hhaW5lZENoZWNrVHlwZS5pc1JlcXVpcmVkID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgdHJ1ZSk7XG5cbiAgICByZXR1cm4gY2hhaW5lZENoZWNrVHlwZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKGV4cGVjdGVkVHlwZSkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gZXhwZWN0ZWRUeXBlKSB7XG4gICAgICAgIC8vIGBwcm9wVmFsdWVgIGJlaW5nIGluc3RhbmNlIG9mLCBzYXksIGRhdGUvcmVnZXhwLCBwYXNzIHRoZSAnb2JqZWN0J1xuICAgICAgICAvLyBjaGVjaywgYnV0IHdlIGNhbiBvZmZlciBhIG1vcmUgcHJlY2lzZSBlcnJvciBtZXNzYWdlIGhlcmUgcmF0aGVyIHRoYW5cbiAgICAgICAgLy8gJ29mIHR5cGUgYG9iamVjdGAnLlxuICAgICAgICB2YXIgcHJlY2lzZVR5cGUgPSBnZXRQcmVjaXNlVHlwZShwcm9wVmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByZWNpc2VUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdgJyArIGV4cGVjdGVkVHlwZSArICdgLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQW55VHlwZUNoZWNrZXIoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLicpO1xuICAgICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIGFycmF5LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwgaSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICdbJyArIGkgKyAnXScsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZVR5cGVDaGVja2VyKGV4cGVjdGVkQ2xhc3MpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICghKHByb3BzW3Byb3BOYW1lXSBpbnN0YW5jZW9mIGV4cGVjdGVkQ2xhc3MpKSB7XG4gICAgICAgIHZhciBleHBlY3RlZENsYXNzTmFtZSA9IGV4cGVjdGVkQ2xhc3MubmFtZSB8fCBBTk9OWU1PVVM7XG4gICAgICAgIHZhciBhY3R1YWxDbGFzc05hbWUgPSBnZXRDbGFzc05hbWUocHJvcHNbcHJvcE5hbWVdKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgYWN0dWFsQ2xhc3NOYW1lICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdpbnN0YW5jZSBvZiBgJyArIGV4cGVjdGVkQ2xhc3NOYW1lICsgJ2AuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVFbnVtVHlwZUNoZWNrZXIoZXhwZWN0ZWRWYWx1ZXMpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXhwZWN0ZWRWYWx1ZXMpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2YsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlzKHByb3BWYWx1ZSwgZXhwZWN0ZWRWYWx1ZXNbaV0pKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHZhbHVlc1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkVmFsdWVzKTtcbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdmFsdWUgYCcgKyBwcm9wVmFsdWUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgb25lIG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAnLicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdQcm9wZXJ0eSBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIGNvbXBvbmVudCBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuJyk7XG4gICAgICB9XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgaWYgKHByb3BWYWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgdmFyIGVycm9yID0gdHlwZUNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVVbmlvblR5cGVDaGVja2VyKGFycmF5T2ZUeXBlQ2hlY2tlcnMpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXlPZlR5cGVDaGVja2VycykpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZlR5cGVDaGVja2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNoZWNrZXIgPSBhcnJheU9mVHlwZUNoZWNrZXJzW2ldO1xuICAgICAgaWYgKHR5cGVvZiBjaGVja2VyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2ZUeXBlLiBFeHBlY3RlZCBhbiBhcnJheSBvZiBjaGVjayBmdW5jdGlvbnMsIGJ1dCAnICtcbiAgICAgICAgICAncmVjZWl2ZWQgJXMgYXQgaW5kZXggJXMuJyxcbiAgICAgICAgICBnZXRQb3N0Zml4Rm9yVHlwZVdhcm5pbmcoY2hlY2tlciksXG4gICAgICAgICAgaVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5T2ZUeXBlQ2hlY2tlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBhcnJheU9mVHlwZUNoZWNrZXJzW2ldO1xuICAgICAgICBpZiAoY2hlY2tlcihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KSA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYC4nKSk7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVOb2RlQ2hlY2tlcigpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICghaXNOb2RlKHByb3BzW3Byb3BOYW1lXSkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYSBSZWFjdE5vZGUuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVTaGFwZVR5cGVDaGVja2VyKHNoYXBlVHlwZXMpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgYCcgKyBwcm9wVHlwZSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBgb2JqZWN0YC4nKSk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc2hhcGVUeXBlcykge1xuICAgICAgICB2YXIgY2hlY2tlciA9IHNoYXBlVHlwZXNba2V5XTtcbiAgICAgICAgaWYgKCFjaGVja2VyKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlU3RyaWN0U2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpO1xuICAgICAgfVxuICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBhbGwga2V5cyBpbiBjYXNlIHNvbWUgYXJlIHJlcXVpcmVkIGJ1dCBtaXNzaW5nIGZyb21cbiAgICAgIC8vIHByb3BzLlxuICAgICAgdmFyIGFsbEtleXMgPSBhc3NpZ24oe30sIHByb3BzW3Byb3BOYW1lXSwgc2hhcGVUeXBlcyk7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gYWxsS2V5cykge1xuICAgICAgICB2YXIgY2hlY2tlciA9IHNoYXBlVHlwZXNba2V5XTtcbiAgICAgICAgaWYgKCFjaGVja2VyKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKFxuICAgICAgICAgICAgJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIGtleSBgJyArIGtleSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLicgK1xuICAgICAgICAgICAgJ1xcbkJhZCBvYmplY3Q6ICcgKyBKU09OLnN0cmluZ2lmeShwcm9wc1twcm9wTmFtZV0sIG51bGwsICcgICcpICtcbiAgICAgICAgICAgICdcXG5WYWxpZCBrZXlzOiAnICsgIEpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKHNoYXBlVHlwZXMpLCBudWxsLCAnICAnKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBpc05vZGUocHJvcFZhbHVlKSB7XG4gICAgc3dpdGNoICh0eXBlb2YgcHJvcFZhbHVlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHJldHVybiAhcHJvcFZhbHVlO1xuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBwcm9wVmFsdWUuZXZlcnkoaXNOb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcFZhbHVlID09PSBudWxsIHx8IGlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihwcm9wVmFsdWUpO1xuICAgICAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChwcm9wVmFsdWUpO1xuICAgICAgICAgIHZhciBzdGVwO1xuICAgICAgICAgIGlmIChpdGVyYXRvckZuICE9PSBwcm9wVmFsdWUuZW50cmllcykge1xuICAgICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgICBpZiAoIWlzTm9kZShzdGVwLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cbiAgICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc05vZGUoZW50cnlbMV0pKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpIHtcbiAgICAvLyBOYXRpdmUgU3ltYm9sLlxuICAgIGlmIChwcm9wVHlwZSA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ10gPT09ICdTeW1ib2wnXG4gICAgaWYgKHByb3BWYWx1ZVsnQEB0b1N0cmluZ1RhZyddID09PSAnU3ltYm9sJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2sgZm9yIG5vbi1zcGVjIGNvbXBsaWFudCBTeW1ib2xzIHdoaWNoIGFyZSBwb2x5ZmlsbGVkLlxuICAgIGlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHByb3BWYWx1ZSBpbnN0YW5jZW9mIFN5bWJvbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRXF1aXZhbGVudCBvZiBgdHlwZW9mYCBidXQgd2l0aCBzcGVjaWFsIGhhbmRsaW5nIGZvciBhcnJheSBhbmQgcmVnZXhwLlxuICBmdW5jdGlvbiBnZXRQcm9wVHlwZShwcm9wVmFsdWUpIHtcbiAgICB2YXIgcHJvcFR5cGUgPSB0eXBlb2YgcHJvcFZhbHVlO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcbiAgICAgIHJldHVybiAnYXJyYXknO1xuICAgIH1cbiAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAvLyBPbGQgd2Via2l0cyAoYXQgbGVhc3QgdW50aWwgQW5kcm9pZCA0LjApIHJldHVybiAnZnVuY3Rpb24nIHJhdGhlciB0aGFuXG4gICAgICAvLyAnb2JqZWN0JyBmb3IgdHlwZW9mIGEgUmVnRXhwLiBXZSdsbCBub3JtYWxpemUgdGhpcyBoZXJlIHNvIHRoYXQgL2JsYS9cbiAgICAgIC8vIHBhc3NlcyBQcm9wVHlwZXMub2JqZWN0LlxuICAgICAgcmV0dXJuICdvYmplY3QnO1xuICAgIH1cbiAgICBpZiAoaXNTeW1ib2wocHJvcFR5cGUsIHByb3BWYWx1ZSkpIHtcbiAgICAgIHJldHVybiAnc3ltYm9sJztcbiAgICB9XG4gICAgcmV0dXJuIHByb3BUeXBlO1xuICB9XG5cbiAgLy8gVGhpcyBoYW5kbGVzIG1vcmUgdHlwZXMgdGhhbiBgZ2V0UHJvcFR5cGVgLiBPbmx5IHVzZWQgZm9yIGVycm9yIG1lc3NhZ2VzLlxuICAvLyBTZWUgYGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyYC5cbiAgZnVuY3Rpb24gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBwcm9wVmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IHByb3BWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnICsgcHJvcFZhbHVlO1xuICAgIH1cbiAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgIGlmIChwcm9wVHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiAnZGF0ZSc7XG4gICAgICB9IGVsc2UgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICByZXR1cm4gJ3JlZ2V4cCc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcm9wVHlwZTtcbiAgfVxuXG4gIC8vIFJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwb3N0Zml4ZWQgdG8gYSB3YXJuaW5nIGFib3V0IGFuIGludmFsaWQgdHlwZS5cbiAgLy8gRm9yIGV4YW1wbGUsIFwidW5kZWZpbmVkXCIgb3IgXCJvZiB0eXBlIGFycmF5XCJcbiAgZnVuY3Rpb24gZ2V0UG9zdGZpeEZvclR5cGVXYXJuaW5nKHZhbHVlKSB7XG4gICAgdmFyIHR5cGUgPSBnZXRQcmVjaXNlVHlwZSh2YWx1ZSk7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICByZXR1cm4gJ2FuICcgKyB0eXBlO1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgIGNhc2UgJ3JlZ2V4cCc6XG4gICAgICAgIHJldHVybiAnYSAnICsgdHlwZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybnMgY2xhc3MgbmFtZSBvZiB0aGUgb2JqZWN0LCBpZiBhbnkuXG4gIGZ1bmN0aW9uIGdldENsYXNzTmFtZShwcm9wVmFsdWUpIHtcbiAgICBpZiAoIXByb3BWYWx1ZS5jb25zdHJ1Y3RvciB8fCAhcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5hbWUpIHtcbiAgICAgIHJldHVybiBBTk9OWU1PVVM7XG4gICAgfVxuICAgIHJldHVybiBwcm9wVmFsdWUuY29uc3RydWN0b3IubmFtZTtcbiAgfVxuXG4gIFJlYWN0UHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzID0gY2hlY2tQcm9wVHlwZXM7XG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcHJvcC10eXBlcy9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc1xuLy8gbW9kdWxlIGlkID0gMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBIiwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///13\\n\");\n\n/***/ }),\n/* 14 */\n/* no static exports found */\n/* all exports used */\n/*!*****************************************!*\\\n !*** ./~/react/lib/ReactBaseClasses.js ***!\n \\*****************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\nvar _prodInvariant = __webpack_require__(/*! ./reactProdInvariant */ 4),\\n _assign = __webpack_require__(/*! object-assign */ 5);\\n\\nvar ReactNoopUpdateQueue = __webpack_require__(/*! ./ReactNoopUpdateQueue */ 17);\\n\\nvar canDefineProperty = __webpack_require__(/*! ./canDefineProperty */ 8);\\nvar emptyObject = __webpack_require__(/*! fbjs/lib/emptyObject */ 12);\\nvar invariant = __webpack_require__(/*! fbjs/lib/invariant */ 1);\\nvar lowPriorityWarning = __webpack_require__(/*! ./lowPriorityWarning */ 11);\\n\\n/**\\n * Base class helpers for the updating state of a component.\\n */\\nfunction ReactComponent(props, context, updater) {\\n this.props = props;\\n this.context = context;\\n this.refs = emptyObject;\\n // We initialize the default updater but the real one gets injected by the\\n // renderer.\\n this.updater = updater || ReactNoopUpdateQueue;\\n}\\n\\nReactComponent.prototype.isReactComponent = {};\\n\\n/**\\n * Sets a subset of the state. Always use this to mutate\\n * state. You should treat `this.state` as immutable.\\n *\\n * There is no guarantee that `this.state` will be immediately updated, so\\n * accessing `this.state` after calling this method may return the old value.\\n *\\n * There is no guarantee that calls to `setState` will run synchronously,\\n * as they may eventually be batched together. You can provide an optional\\n * callback that will be executed when the call to setState is actually\\n * completed.\\n *\\n * When a function is provided to setState, it will be called at some point in\\n * the future (not synchronously). It will be called with the up to date\\n * component arguments (state, props, context). These values can be different\\n * from this.* because your function may be called after receiveProps but before\\n * shouldComponentUpdate, and this new state, props, and context will not yet be\\n * assigned to this.\\n *\\n * @param {object|function} partialState Next partial state or function to\\n * produce next partial state to be merged with current state.\\n * @param {?function} callback Called after state is updated.\\n * @final\\n * @protected\\n */\\nReactComponent.prototype.setState = function (partialState, callback) {\\n !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;\\n this.updater.enqueueSetState(this, partialState);\\n if (callback) {\\n this.updater.enqueueCallback(this, callback, 'setState');\\n }\\n};\\n\\n/**\\n * Forces an update. This should only be invoked when it is known with\\n * certainty that we are **not** in a DOM transaction.\\n *\\n * You may want to call this when you know that some deeper aspect of the\\n * component's state has changed but `setState` was not called.\\n *\\n * This will not invoke `shouldComponentUpdate`, but it will invoke\\n * `componentWillUpdate` and `componentDidUpdate`.\\n *\\n * @param {?function} callback Called after update is complete.\\n * @final\\n * @protected\\n */\\nReactComponent.prototype.forceUpdate = function (callback) {\\n this.updater.enqueueForceUpdate(this);\\n if (callback) {\\n this.updater.enqueueCallback(this, callback, 'forceUpdate');\\n }\\n};\\n\\n/**\\n * Deprecated APIs. These APIs used to exist on classic React classes but since\\n * we would like to deprecate them, we're not going to move them over to this\\n * modern base class. Instead, we define a getter that warns if it's accessed.\\n */\\nif (process.env.NODE_ENV !== 'production') {\\n var deprecatedAPIs = {\\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\\n };\\n var defineDeprecationWarning = function (methodName, info) {\\n if (canDefineProperty) {\\n Object.defineProperty(ReactComponent.prototype, methodName, {\\n get: function () {\\n lowPriorityWarning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\\n return undefined;\\n }\\n });\\n }\\n };\\n for (var fnName in deprecatedAPIs) {\\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\\n }\\n }\\n}\\n\\n/**\\n * Base class helpers for the updating state of a component.\\n */\\nfunction ReactPureComponent(props, context, updater) {\\n // Duplicated from ReactComponent.\\n this.props = props;\\n this.context = context;\\n this.refs = emptyObject;\\n // We initialize the default updater but the real one gets injected by the\\n // renderer.\\n this.updater = updater || ReactNoopUpdateQueue;\\n}\\n\\nfunction ComponentDummy() {}\\nComponentDummy.prototype = ReactComponent.prototype;\\nReactPureComponent.prototype = new ComponentDummy();\\nReactPureComponent.prototype.constructor = ReactPureComponent;\\n// Avoid an extra prototype jump for these methods.\\n_assign(ReactPureComponent.prototype, ReactComponent.prototype);\\nReactPureComponent.prototype.isPureReactComponent = true;\\n\\nmodule.exports = {\\n Component: ReactComponent,\\n PureComponent: ReactPureComponent\\n};\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdEJhc2VDbGFzc2VzLmpzP2Y2MWUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpLFxuICAgIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3ROb29wVXBkYXRlUXVldWUnKTtcblxudmFyIGNhbkRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9jYW5EZWZpbmVQcm9wZXJ0eScpO1xudmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlPYmplY3QnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBsb3dQcmlvcml0eVdhcm5pbmcgPSByZXF1aXJlKCcuL2xvd1ByaW9yaXR5V2FybmluZycpO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgaGVscGVycyBmb3IgdGhlIHVwZGF0aW5nIHN0YXRlIG9mIGEgY29tcG9uZW50LlxuICovXG5mdW5jdGlvbiBSZWFjdENvbXBvbmVudChwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xuICB0aGlzLnByb3BzID0gcHJvcHM7XG4gIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xuICAvLyBXZSBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHVwZGF0ZXIgYnV0IHRoZSByZWFsIG9uZSBnZXRzIGluamVjdGVkIGJ5IHRoZVxuICAvLyByZW5kZXJlci5cbiAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcbn1cblxuUmVhY3RDb21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTtcblxuLyoqXG4gKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIHRvIG11dGF0ZVxuICogc3RhdGUuIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS5cbiAqXG4gKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzb1xuICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5cbiAqXG4gKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBjYWxscyB0byBgc2V0U3RhdGVgIHdpbGwgcnVuIHN5bmNocm9ub3VzbHksXG4gKiBhcyB0aGV5IG1heSBldmVudHVhbGx5IGJlIGJhdGNoZWQgdG9nZXRoZXIuICBZb3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWxcbiAqIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB3aGVuIHRoZSBjYWxsIHRvIHNldFN0YXRlIGlzIGFjdHVhbGx5XG4gKiBjb21wbGV0ZWQuXG4gKlxuICogV2hlbiBhIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRvIHNldFN0YXRlLCBpdCB3aWxsIGJlIGNhbGxlZCBhdCBzb21lIHBvaW50IGluXG4gKiB0aGUgZnV0dXJlIChub3Qgc3luY2hyb25vdXNseSkuIEl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHVwIHRvIGRhdGVcbiAqIGNvbXBvbmVudCBhcmd1bWVudHMgKHN0YXRlLCBwcm9wcywgY29udGV4dCkuIFRoZXNlIHZhbHVlcyBjYW4gYmUgZGlmZmVyZW50XG4gKiBmcm9tIHRoaXMuKiBiZWNhdXNlIHlvdXIgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBhZnRlciByZWNlaXZlUHJvcHMgYnV0IGJlZm9yZVxuICogc2hvdWxkQ29tcG9uZW50VXBkYXRlLCBhbmQgdGhpcyBuZXcgc3RhdGUsIHByb3BzLCBhbmQgY29udGV4dCB3aWxsIG5vdCB5ZXQgYmVcbiAqIGFzc2lnbmVkIHRvIHRoaXMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgb3IgZnVuY3Rpb24gdG9cbiAqICAgICAgICBwcm9kdWNlIG5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBjdXJyZW50IHN0YXRlLlxuICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLlxuICogQGZpbmFsXG4gKiBAcHJvdGVjdGVkXG4gKi9cblJlYWN0Q29tcG9uZW50LnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIChwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrKSB7XG4gICEodHlwZW9mIHBhcnRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHBhcnRpYWxTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyB8fCBwYXJ0aWFsU3RhdGUgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnc2V0U3RhdGUoLi4uKTogdGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuJykgOiBfcHJvZEludmFyaWFudCgnODUnKSA6IHZvaWQgMDtcbiAgdGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLCBwYXJ0aWFsU3RhdGUpO1xuICBpZiAoY2FsbGJhY2spIHtcbiAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrLCAnc2V0U3RhdGUnKTtcbiAgfVxufTtcblxuLyoqXG4gKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG4gKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cbiAqXG4gKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cbiAqXG4gKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG4gKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuICpcbiAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgdXBkYXRlIGlzIGNvbXBsZXRlLlxuICogQGZpbmFsXG4gKiBAcHJvdGVjdGVkXG4gKi9cblJlYWN0Q29tcG9uZW50LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMpO1xuICBpZiAoY2FsbGJhY2spIHtcbiAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxiYWNrLCAnZm9yY2VVcGRhdGUnKTtcbiAgfVxufTtcblxuLyoqXG4gKiBEZXByZWNhdGVkIEFQSXMuIFRoZXNlIEFQSXMgdXNlZCB0byBleGlzdCBvbiBjbGFzc2ljIFJlYWN0IGNsYXNzZXMgYnV0IHNpbmNlXG4gKiB3ZSB3b3VsZCBsaWtlIHRvIGRlcHJlY2F0ZSB0aGVtLCB3ZSdyZSBub3QgZ29pbmcgdG8gbW92ZSB0aGVtIG92ZXIgdG8gdGhpc1xuICogbW9kZXJuIGJhc2UgY2xhc3MuIEluc3RlYWQsIHdlIGRlZmluZSBhIGdldHRlciB0aGF0IHdhcm5zIGlmIGl0J3MgYWNjZXNzZWQuXG4gKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBkZXByZWNhdGVkQVBJcyA9IHtcbiAgICBpc01vdW50ZWQ6IFsnaXNNb3VudGVkJywgJ0luc3RlYWQsIG1ha2Ugc3VyZSB0byBjbGVhbiB1cCBzdWJzY3JpcHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluICcgKyAnY29tcG9uZW50V2lsbFVubW91bnQgdG8gcHJldmVudCBtZW1vcnkgbGVha3MuJ10sXG4gICAgcmVwbGFjZVN0YXRlOiBbJ3JlcGxhY2VTdGF0ZScsICdSZWZhY3RvciB5b3VyIGNvZGUgdG8gdXNlIHNldFN0YXRlIGluc3RlYWQgKHNlZSAnICsgJ2h0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMzIzNikuJ11cbiAgfTtcbiAgdmFyIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyA9IGZ1bmN0aW9uIChtZXRob2ROYW1lLCBpbmZvKSB7XG4gICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3RDb21wb25lbnQucHJvdG90eXBlLCBtZXRob2ROYW1lLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxvd1ByaW9yaXR5V2FybmluZyhmYWxzZSwgJyVzKC4uLikgaXMgZGVwcmVjYXRlZCBpbiBwbGFpbiBKYXZhU2NyaXB0IFJlYWN0IGNsYXNzZXMuICVzJywgaW5mb1swXSwgaW5mb1sxXSk7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBmb3IgKHZhciBmbk5hbWUgaW4gZGVwcmVjYXRlZEFQSXMpIHtcbiAgICBpZiAoZGVwcmVjYXRlZEFQSXMuaGFzT3duUHJvcGVydHkoZm5OYW1lKSkge1xuICAgICAgZGVmaW5lRGVwcmVjYXRpb25XYXJuaW5nKGZuTmFtZSwgZGVwcmVjYXRlZEFQSXNbZm5OYW1lXSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBoZWxwZXJzIGZvciB0aGUgdXBkYXRpbmcgc3RhdGUgb2YgYSBjb21wb25lbnQuXG4gKi9cbmZ1bmN0aW9uIFJlYWN0UHVyZUNvbXBvbmVudChwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xuICAvLyBEdXBsaWNhdGVkIGZyb20gUmVhY3RDb21wb25lbnQuXG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gIC8vIFdlIGluaXRpYWxpemUgdGhlIGRlZmF1bHQgdXBkYXRlciBidXQgdGhlIHJlYWwgb25lIGdldHMgaW5qZWN0ZWQgYnkgdGhlXG4gIC8vIHJlbmRlcmVyLlxuICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xufVxuXG5mdW5jdGlvbiBDb21wb25lbnREdW1teSgpIHt9XG5Db21wb25lbnREdW1teS5wcm90b3R5cGUgPSBSZWFjdENvbXBvbmVudC5wcm90b3R5cGU7XG5SZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlID0gbmV3IENvbXBvbmVudER1bW15KCk7XG5SZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUmVhY3RQdXJlQ29tcG9uZW50O1xuLy8gQXZvaWQgYW4gZXh0cmEgcHJvdG90eXBlIGp1bXAgZm9yIHRoZXNlIG1ldGhvZHMuXG5fYXNzaWduKFJlYWN0UHVyZUNvbXBvbmVudC5wcm90b3R5cGUsIFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSk7XG5SZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50ID0gdHJ1ZTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIENvbXBvbmVudDogUmVhY3RDb21wb25lbnQsXG4gIFB1cmVDb21wb25lbnQ6IFJlYWN0UHVyZUNvbXBvbmVudFxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QvbGliL1JlYWN0QmFzZUNsYXNzZXMuanNcbi8vIG1vZHVsZSBpZCA9IDE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///14\\n\");\n\n/***/ }),\n/* 15 */\n/* no static exports found */\n/* all exports used */\n/*!*******************************************!*\\\n !*** ./~/react/lib/ReactElementSymbol.js ***!\n \\*******************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/**\\n * Copyright (c) 2014-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n * \\n */\\n\\n\\n\\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\\n// nor polyfill, then a plain number is used for performance.\\n\\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\\n\\nmodule.exports = REACT_ELEMENT_TYPE;//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdEVsZW1lbnRTeW1ib2wuanM/NWQwNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50IHR5cGUuIElmIHRoZXJlIGlzIG5vIG5hdGl2ZSBTeW1ib2xcbi8vIG5vciBwb2x5ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZvciBwZXJmb3JtYW5jZS5cblxudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sWydmb3InXSAmJiBTeW1ib2xbJ2ZvciddKCdyZWFjdC5lbGVtZW50JykgfHwgMHhlYWM3O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJFQUNUX0VMRU1FTlRfVFlQRTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QvbGliL1JlYWN0RWxlbWVudFN5bWJvbC5qc1xuLy8gbW9kdWxlIGlkID0gMTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///15\\n\");\n\n/***/ }),\n/* 16 */\n/* no static exports found */\n/* all exports used */\n/*!**********************************************!*\\\n !*** ./~/react/lib/ReactElementValidator.js ***!\n \\**********************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2014-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n/**\\n * ReactElementValidator provides a wrapper around a element factory\\n * which validates the props passed to the element. This is intended to be\\n * used only in DEV and could be replaced by a static type checker for languages\\n * that support it.\\n */\\n\\n\\n\\nvar ReactCurrentOwner = __webpack_require__(/*! ./ReactCurrentOwner */ 7);\\nvar ReactComponentTreeHook = __webpack_require__(/*! ./ReactComponentTreeHook */ 10);\\nvar ReactElement = __webpack_require__(/*! ./ReactElement */ 3);\\n\\nvar checkReactTypeSpec = __webpack_require__(/*! ./checkReactTypeSpec */ 35);\\n\\nvar canDefineProperty = __webpack_require__(/*! ./canDefineProperty */ 8);\\nvar getIteratorFn = __webpack_require__(/*! ./getIteratorFn */ 18);\\nvar warning = __webpack_require__(/*! fbjs/lib/warning */ 2);\\nvar lowPriorityWarning = __webpack_require__(/*! ./lowPriorityWarning */ 11);\\n\\nfunction getDeclarationErrorAddendum() {\\n if (ReactCurrentOwner.current) {\\n var name = ReactCurrentOwner.current.getName();\\n if (name) {\\n return ' Check the render method of `' + name + '`.';\\n }\\n }\\n return '';\\n}\\n\\nfunction getSourceInfoErrorAddendum(elementProps) {\\n if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) {\\n var source = elementProps.__source;\\n var fileName = source.fileName.replace(/^.*[\\\\\\\\\\\\/]/, '');\\n var lineNumber = source.lineNumber;\\n return ' Check your code at ' + fileName + ':' + lineNumber + '.';\\n }\\n return '';\\n}\\n\\n/**\\n * Warn if there's no key explicitly set on dynamic arrays of children or\\n * object keys are not valid. This allows us to keep track of children between\\n * updates.\\n */\\nvar ownerHasKeyUseWarning = {};\\n\\nfunction getCurrentComponentErrorInfo(parentType) {\\n var info = getDeclarationErrorAddendum();\\n\\n if (!info) {\\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\\n if (parentName) {\\n info = ' Check the top-level render call using <' + parentName + '>.';\\n }\\n }\\n return info;\\n}\\n\\n/**\\n * Warn if the element doesn't have an explicit key assigned to it.\\n * This element is in an array. The array could grow and shrink or be\\n * reordered. All children that haven't already been validated are required to\\n * have a \\\"key\\\" property assigned to it. Error statuses are cached so a warning\\n * will only be shown once.\\n *\\n * @internal\\n * @param {ReactElement} element Element that requires a key.\\n * @param {*} parentType element's parent's type.\\n */\\nfunction validateExplicitKey(element, parentType) {\\n if (!element._store || element._store.validated || element.key != null) {\\n return;\\n }\\n element._store.validated = true;\\n\\n var memoizer = ownerHasKeyUseWarning.uniqueKey || (ownerHasKeyUseWarning.uniqueKey = {});\\n\\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\\n if (memoizer[currentComponentErrorInfo]) {\\n return;\\n }\\n memoizer[currentComponentErrorInfo] = true;\\n\\n // Usually the current owner is the offender, but if it accepts children as a\\n // property, it may be the creator of the child that's responsible for\\n // assigning it a key.\\n var childOwner = '';\\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\\n // Give the component that originally created this child.\\n childOwner = ' It was passed a child from ' + element._owner.getName() + '.';\\n }\\n\\n process.env.NODE_ENV !== 'production' ? warning(false, 'Each child in an array or iterator should have a unique \\\"key\\\" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, ReactComponentTreeHook.getCurrentStackAddendum(element)) : void 0;\\n}\\n\\n/**\\n * Ensure that every element either is passed in a static location, in an\\n * array with an explicit keys property defined, or in an object literal\\n * with valid key property.\\n *\\n * @internal\\n * @param {ReactNode} node Statically passed child of any type.\\n * @param {*} parentType node's parent's type.\\n */\\nfunction validateChildKeys(node, parentType) {\\n if (typeof node !== 'object') {\\n return;\\n }\\n if (Array.isArray(node)) {\\n for (var i = 0; i < node.length; i++) {\\n var child = node[i];\\n if (ReactElement.isValidElement(child)) {\\n validateExplicitKey(child, parentType);\\n }\\n }\\n } else if (ReactElement.isValidElement(node)) {\\n // This element was passed in a valid location.\\n if (node._store) {\\n node._store.validated = true;\\n }\\n } else if (node) {\\n var iteratorFn = getIteratorFn(node);\\n // Entry iterators provide implicit keys.\\n if (iteratorFn) {\\n if (iteratorFn !== node.entries) {\\n var iterator = iteratorFn.call(node);\\n var step;\\n while (!(step = iterator.next()).done) {\\n if (ReactElement.isValidElement(step.value)) {\\n validateExplicitKey(step.value, parentType);\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n/**\\n * Given an element, validate that its props follow the propTypes definition,\\n * provided by the type.\\n *\\n * @param {ReactElement} element\\n */\\nfunction validatePropTypes(element) {\\n var componentClass = element.type;\\n if (typeof componentClass !== 'function') {\\n return;\\n }\\n var name = componentClass.displayName || componentClass.name;\\n if (componentClass.propTypes) {\\n checkReactTypeSpec(componentClass.propTypes, element.props, 'prop', name, element, null);\\n }\\n if (typeof componentClass.getDefaultProps === 'function') {\\n process.env.NODE_ENV !== 'production' ? warning(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0;\\n }\\n}\\n\\nvar ReactElementValidator = {\\n createElement: function (type, props, children) {\\n var validType = typeof type === 'string' || typeof type === 'function';\\n // We warn in this case but don't throw. We expect the element creation to\\n // succeed and there will likely be errors in render.\\n if (!validType) {\\n if (typeof type !== 'function' && typeof type !== 'string') {\\n var info = '';\\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\\n info += ' You likely forgot to export your component from the file ' + \\\"it's defined in.\\\";\\n }\\n\\n var sourceInfo = getSourceInfoErrorAddendum(props);\\n if (sourceInfo) {\\n info += sourceInfo;\\n } else {\\n info += getDeclarationErrorAddendum();\\n }\\n\\n info += ReactComponentTreeHook.getCurrentStackAddendum();\\n\\n var currentSource = props !== null && props !== undefined && props.__source !== undefined ? props.__source : null;\\n ReactComponentTreeHook.pushNonStandardWarningStack(true, currentSource);\\n process.env.NODE_ENV !== 'production' ? warning(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', type == null ? type : typeof type, info) : void 0;\\n ReactComponentTreeHook.popNonStandardWarningStack();\\n }\\n }\\n\\n var element = ReactElement.createElement.apply(this, arguments);\\n\\n // The result can be nullish if a mock or a custom function is used.\\n // TODO: Drop this when these are no longer allowed as the type argument.\\n if (element == null) {\\n return element;\\n }\\n\\n // Skip key warning if the type isn't valid since our key validation logic\\n // doesn't expect a non-string/function type and can throw confusing errors.\\n // We don't want exception behavior to differ between dev and prod.\\n // (Rendering will throw with a helpful message and as soon as the type is\\n // fixed, the key warnings will appear.)\\n if (validType) {\\n for (var i = 2; i < arguments.length; i++) {\\n validateChildKeys(arguments[i], type);\\n }\\n }\\n\\n validatePropTypes(element);\\n\\n return element;\\n },\\n\\n createFactory: function (type) {\\n var validatedFactory = ReactElementValidator.createElement.bind(null, type);\\n // Legacy hook TODO: Warn if this is accessed\\n validatedFactory.type = type;\\n\\n if (process.env.NODE_ENV !== 'production') {\\n if (canDefineProperty) {\\n Object.defineProperty(validatedFactory, 'type', {\\n enumerable: false,\\n get: function () {\\n lowPriorityWarning(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\\n Object.defineProperty(this, 'type', {\\n value: type\\n });\\n return type;\\n }\\n });\\n }\\n }\\n\\n return validatedFactory;\\n },\\n\\n cloneElement: function (element, props, children) {\\n var newElement = ReactElement.cloneElement.apply(this, arguments);\\n for (var i = 2; i < arguments.length; i++) {\\n validateChildKeys(arguments[i], newElement.type);\\n }\\n validatePropTypes(newElement);\\n return newElement;\\n }\\n};\\n\\nmodule.exports = ReactElementValidator;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdEVsZW1lbnRWYWxpZGF0b3IuanM/YTU5OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuXG4vKipcbiAqIFJlYWN0RWxlbWVudFZhbGlkYXRvciBwcm92aWRlcyBhIHdyYXBwZXIgYXJvdW5kIGEgZWxlbWVudCBmYWN0b3J5XG4gKiB3aGljaCB2YWxpZGF0ZXMgdGhlIHByb3BzIHBhc3NlZCB0byB0aGUgZWxlbWVudC4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZVxuICogdXNlZCBvbmx5IGluIERFViBhbmQgY291bGQgYmUgcmVwbGFjZWQgYnkgYSBzdGF0aWMgdHlwZSBjaGVja2VyIGZvciBsYW5ndWFnZXNcbiAqIHRoYXQgc3VwcG9ydCBpdC5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudFRyZWVIb29rJyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcblxudmFyIGNoZWNrUmVhY3RUeXBlU3BlYyA9IHJlcXVpcmUoJy4vY2hlY2tSZWFjdFR5cGVTcGVjJyk7XG5cbnZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vY2FuRGVmaW5lUHJvcGVydHknKTtcbnZhciBnZXRJdGVyYXRvckZuID0gcmVxdWlyZSgnLi9nZXRJdGVyYXRvckZuJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcbnZhciBsb3dQcmlvcml0eVdhcm5pbmcgPSByZXF1aXJlKCcuL2xvd1ByaW9yaXR5V2FybmluZycpO1xuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKSB7XG4gIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgdmFyIG5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bShlbGVtZW50UHJvcHMpIHtcbiAgaWYgKGVsZW1lbnRQcm9wcyAhPT0gbnVsbCAmJiBlbGVtZW50UHJvcHMgIT09IHVuZGVmaW5lZCAmJiBlbGVtZW50UHJvcHMuX19zb3VyY2UgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBzb3VyY2UgPSBlbGVtZW50UHJvcHMuX19zb3VyY2U7XG4gICAgdmFyIGZpbGVOYW1lID0gc291cmNlLmZpbGVOYW1lLnJlcGxhY2UoL14uKltcXFxcXFwvXS8sICcnKTtcbiAgICB2YXIgbGluZU51bWJlciA9IHNvdXJjZS5saW5lTnVtYmVyO1xuICAgIHJldHVybiAnIENoZWNrIHlvdXIgY29kZSBhdCAnICsgZmlsZU5hbWUgKyAnOicgKyBsaW5lTnVtYmVyICsgJy4nO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBXYXJuIGlmIHRoZXJlJ3Mgbm8ga2V5IGV4cGxpY2l0bHkgc2V0IG9uIGR5bmFtaWMgYXJyYXlzIG9mIGNoaWxkcmVuIG9yXG4gKiBvYmplY3Qga2V5cyBhcmUgbm90IHZhbGlkLiBUaGlzIGFsbG93cyB1cyB0byBrZWVwIHRyYWNrIG9mIGNoaWxkcmVuIGJldHdlZW5cbiAqIHVwZGF0ZXMuXG4gKi9cbnZhciBvd25lckhhc0tleVVzZVdhcm5pbmcgPSB7fTtcblxuZnVuY3Rpb24gZ2V0Q3VycmVudENvbXBvbmVudEVycm9ySW5mbyhwYXJlbnRUeXBlKSB7XG4gIHZhciBpbmZvID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7XG5cbiAgaWYgKCFpbmZvKSB7XG4gICAgdmFyIHBhcmVudE5hbWUgPSB0eXBlb2YgcGFyZW50VHlwZSA9PT0gJ3N0cmluZycgPyBwYXJlbnRUeXBlIDogcGFyZW50VHlwZS5kaXNwbGF5TmFtZSB8fCBwYXJlbnRUeXBlLm5hbWU7XG4gICAgaWYgKHBhcmVudE5hbWUpIHtcbiAgICAgIGluZm8gPSAnIENoZWNrIHRoZSB0b3AtbGV2ZWwgcmVuZGVyIGNhbGwgdXNpbmcgPCcgKyBwYXJlbnROYW1lICsgJz4uJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluZm87XG59XG5cbi8qKlxuICogV2FybiBpZiB0aGUgZWxlbWVudCBkb2Vzbid0IGhhdmUgYW4gZXhwbGljaXQga2V5IGFzc2lnbmVkIHRvIGl0LlxuICogVGhpcyBlbGVtZW50IGlzIGluIGFuIGFycmF5LiBUaGUgYXJyYXkgY291bGQgZ3JvdyBhbmQgc2hyaW5rIG9yIGJlXG4gKiByZW9yZGVyZWQuIEFsbCBjaGlsZHJlbiB0aGF0IGhhdmVuJ3QgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcmUgcmVxdWlyZWQgdG9cbiAqIGhhdmUgYSBcImtleVwiIHByb3BlcnR5IGFzc2lnbmVkIHRvIGl0LiBFcnJvciBzdGF0dXNlcyBhcmUgY2FjaGVkIHNvIGEgd2FybmluZ1xuICogd2lsbCBvbmx5IGJlIHNob3duIG9uY2UuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudCBFbGVtZW50IHRoYXQgcmVxdWlyZXMgYSBrZXkuXG4gKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgZWxlbWVudCdzIHBhcmVudCdzIHR5cGUuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlRXhwbGljaXRLZXkoZWxlbWVudCwgcGFyZW50VHlwZSkge1xuICBpZiAoIWVsZW1lbnQuX3N0b3JlIHx8IGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCB8fCBlbGVtZW50LmtleSAhPSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IHRydWU7XG5cbiAgdmFyIG1lbW9pemVyID0gb3duZXJIYXNLZXlVc2VXYXJuaW5nLnVuaXF1ZUtleSB8fCAob3duZXJIYXNLZXlVc2VXYXJuaW5nLnVuaXF1ZUtleSA9IHt9KTtcblxuICB2YXIgY3VycmVudENvbXBvbmVudEVycm9ySW5mbyA9IGdldEN1cnJlbnRDb21wb25lbnRFcnJvckluZm8ocGFyZW50VHlwZSk7XG4gIGlmIChtZW1vaXplcltjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvXSkge1xuICAgIHJldHVybjtcbiAgfVxuICBtZW1vaXplcltjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvXSA9IHRydWU7XG5cbiAgLy8gVXN1YWxseSB0aGUgY3VycmVudCBvd25lciBpcyB0aGUgb2ZmZW5kZXIsIGJ1dCBpZiBpdCBhY2NlcHRzIGNoaWxkcmVuIGFzIGFcbiAgLy8gcHJvcGVydHksIGl0IG1heSBiZSB0aGUgY3JlYXRvciBvZiB0aGUgY2hpbGQgdGhhdCdzIHJlc3BvbnNpYmxlIGZvclxuICAvLyBhc3NpZ25pbmcgaXQgYSBrZXkuXG4gIHZhciBjaGlsZE93bmVyID0gJyc7XG4gIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuX293bmVyICYmIGVsZW1lbnQuX293bmVyICE9PSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG4gICAgLy8gR2l2ZSB0aGUgY29tcG9uZW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoaXMgY2hpbGQuXG4gICAgY2hpbGRPd25lciA9ICcgSXQgd2FzIHBhc3NlZCBhIGNoaWxkIGZyb20gJyArIGVsZW1lbnQuX293bmVyLmdldE5hbWUoKSArICcuJztcbiAgfVxuXG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRWFjaCBjaGlsZCBpbiBhbiBhcnJheSBvciBpdGVyYXRvciBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBcImtleVwiIHByb3AuJyArICclcyVzIFNlZSBodHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmcta2V5cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4lcycsIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8sIGNoaWxkT3duZXIsIFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0Q3VycmVudFN0YWNrQWRkZW5kdW0oZWxlbWVudCkpIDogdm9pZCAwO1xufVxuXG4vKipcbiAqIEVuc3VyZSB0aGF0IGV2ZXJ5IGVsZW1lbnQgZWl0aGVyIGlzIHBhc3NlZCBpbiBhIHN0YXRpYyBsb2NhdGlvbiwgaW4gYW5cbiAqIGFycmF5IHdpdGggYW4gZXhwbGljaXQga2V5cyBwcm9wZXJ0eSBkZWZpbmVkLCBvciBpbiBhbiBvYmplY3QgbGl0ZXJhbFxuICogd2l0aCB2YWxpZCBrZXkgcHJvcGVydHkuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0ge1JlYWN0Tm9kZX0gbm9kZSBTdGF0aWNhbGx5IHBhc3NlZCBjaGlsZCBvZiBhbnkgdHlwZS5cbiAqIEBwYXJhbSB7Kn0gcGFyZW50VHlwZSBub2RlJ3MgcGFyZW50J3MgdHlwZS5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVDaGlsZEtleXMobm9kZSwgcGFyZW50VHlwZSkge1xuICBpZiAodHlwZW9mIG5vZGUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY2hpbGQgPSBub2RlW2ldO1xuICAgICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShjaGlsZCwgcGFyZW50VHlwZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChub2RlKSkge1xuICAgIC8vIFRoaXMgZWxlbWVudCB3YXMgcGFzc2VkIGluIGEgdmFsaWQgbG9jYXRpb24uXG4gICAgaWYgKG5vZGUuX3N0b3JlKSB7XG4gICAgICBub2RlLl9zdG9yZS52YWxpZGF0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChub2RlKSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG5vZGUpO1xuICAgIC8vIEVudHJ5IGl0ZXJhdG9ycyBwcm92aWRlIGltcGxpY2l0IGtleXMuXG4gICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICAgIGlmIChpdGVyYXRvckZuICE9PSBub2RlLmVudHJpZXMpIHtcbiAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG5vZGUpO1xuICAgICAgICB2YXIgc3RlcDtcbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIGlmIChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoc3RlcC52YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlRXhwbGljaXRLZXkoc3RlcC52YWx1ZSwgcGFyZW50VHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogR2l2ZW4gYW4gZWxlbWVudCwgdmFsaWRhdGUgdGhhdCBpdHMgcHJvcHMgZm9sbG93IHRoZSBwcm9wVHlwZXMgZGVmaW5pdGlvbixcbiAqIHByb3ZpZGVkIGJ5IHRoZSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50XG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcFR5cGVzKGVsZW1lbnQpIHtcbiAgdmFyIGNvbXBvbmVudENsYXNzID0gZWxlbWVudC50eXBlO1xuICBpZiAodHlwZW9mIGNvbXBvbmVudENsYXNzICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuYW1lID0gY29tcG9uZW50Q2xhc3MuZGlzcGxheU5hbWUgfHwgY29tcG9uZW50Q2xhc3MubmFtZTtcbiAgaWYgKGNvbXBvbmVudENsYXNzLnByb3BUeXBlcykge1xuICAgIGNoZWNrUmVhY3RUeXBlU3BlYyhjb21wb25lbnRDbGFzcy5wcm9wVHlwZXMsIGVsZW1lbnQucHJvcHMsICdwcm9wJywgbmFtZSwgZWxlbWVudCwgbnVsbCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBjb21wb25lbnRDbGFzcy5nZXREZWZhdWx0UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhjb21wb25lbnRDbGFzcy5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdnZXREZWZhdWx0UHJvcHMgaXMgb25seSB1c2VkIG9uIGNsYXNzaWMgUmVhY3QuY3JlYXRlQ2xhc3MgJyArICdkZWZpbml0aW9ucy4gVXNlIGEgc3RhdGljIHByb3BlcnR5IG5hbWVkIGBkZWZhdWx0UHJvcHNgIGluc3RlYWQuJykgOiB2b2lkIDA7XG4gIH1cbn1cblxudmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHtcbiAgY3JlYXRlRWxlbWVudDogZnVuY3Rpb24gKHR5cGUsIHByb3BzLCBjaGlsZHJlbikge1xuICAgIHZhciB2YWxpZFR5cGUgPSB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbic7XG4gICAgLy8gV2Ugd2FybiBpbiB0aGlzIGNhc2UgYnV0IGRvbid0IHRocm93LiBXZSBleHBlY3QgdGhlIGVsZW1lbnQgY3JlYXRpb24gdG9cbiAgICAvLyBzdWNjZWVkIGFuZCB0aGVyZSB3aWxsIGxpa2VseSBiZSBlcnJvcnMgaW4gcmVuZGVyLlxuICAgIGlmICghdmFsaWRUeXBlKSB7XG4gICAgICBpZiAodHlwZW9mIHR5cGUgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHZhciBpbmZvID0gJyc7XG4gICAgICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwgJiYgT2JqZWN0LmtleXModHlwZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgaW5mbyArPSAnIFlvdSBsaWtlbHkgZm9yZ290IHRvIGV4cG9ydCB5b3VyIGNvbXBvbmVudCBmcm9tIHRoZSBmaWxlICcgKyBcIml0J3MgZGVmaW5lZCBpbi5cIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzb3VyY2VJbmZvID0gZ2V0U291cmNlSW5mb0Vycm9yQWRkZW5kdW0ocHJvcHMpO1xuICAgICAgICBpZiAoc291cmNlSW5mbykge1xuICAgICAgICAgIGluZm8gKz0gc291cmNlSW5mbztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbmZvICs9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5mbyArPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEN1cnJlbnRTdGFja0FkZGVuZHVtKCk7XG5cbiAgICAgICAgdmFyIGN1cnJlbnRTb3VyY2UgPSBwcm9wcyAhPT0gbnVsbCAmJiBwcm9wcyAhPT0gdW5kZWZpbmVkICYmIHByb3BzLl9fc291cmNlICE9PSB1bmRlZmluZWQgPyBwcm9wcy5fX3NvdXJjZSA6IG51bGw7XG4gICAgICAgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sucHVzaE5vblN0YW5kYXJkV2FybmluZ1N0YWNrKHRydWUsIGN1cnJlbnRTb3VyY2UpO1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1JlYWN0LmNyZWF0ZUVsZW1lbnQ6IHR5cGUgaXMgaW52YWxpZCAtLSBleHBlY3RlZCBhIHN0cmluZyAoZm9yICcgKyAnYnVpbHQtaW4gY29tcG9uZW50cykgb3IgYSBjbGFzcy9mdW5jdGlvbiAoZm9yIGNvbXBvc2l0ZSAnICsgJ2NvbXBvbmVudHMpIGJ1dCBnb3Q6ICVzLiVzJywgdHlwZSA9PSBudWxsID8gdHlwZSA6IHR5cGVvZiB0eXBlLCBpbmZvKSA6IHZvaWQgMDtcbiAgICAgICAgUmVhY3RDb21wb25lbnRUcmVlSG9vay5wb3BOb25TdGFuZGFyZFdhcm5pbmdTdGFjaygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBlbGVtZW50ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIC8vIFRoZSByZXN1bHQgY2FuIGJlIG51bGxpc2ggaWYgYSBtb2NrIG9yIGEgY3VzdG9tIGZ1bmN0aW9uIGlzIHVzZWQuXG4gICAgLy8gVE9ETzogRHJvcCB0aGlzIHdoZW4gdGhlc2UgYXJlIG5vIGxvbmdlciBhbGxvd2VkIGFzIHRoZSB0eXBlIGFyZ3VtZW50LlxuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cblxuICAgIC8vIFNraXAga2V5IHdhcm5pbmcgaWYgdGhlIHR5cGUgaXNuJ3QgdmFsaWQgc2luY2Ugb3VyIGtleSB2YWxpZGF0aW9uIGxvZ2ljXG4gICAgLy8gZG9lc24ndCBleHBlY3QgYSBub24tc3RyaW5nL2Z1bmN0aW9uIHR5cGUgYW5kIGNhbiB0aHJvdyBjb25mdXNpbmcgZXJyb3JzLlxuICAgIC8vIFdlIGRvbid0IHdhbnQgZXhjZXB0aW9uIGJlaGF2aW9yIHRvIGRpZmZlciBiZXR3ZWVuIGRldiBhbmQgcHJvZC5cbiAgICAvLyAoUmVuZGVyaW5nIHdpbGwgdGhyb3cgd2l0aCBhIGhlbHBmdWwgbWVzc2FnZSBhbmQgYXMgc29vbiBhcyB0aGUgdHlwZSBpc1xuICAgIC8vIGZpeGVkLCB0aGUga2V5IHdhcm5pbmdzIHdpbGwgYXBwZWFyLilcbiAgICBpZiAodmFsaWRUeXBlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhhcmd1bWVudHNbaV0sIHR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhbGlkYXRlUHJvcFR5cGVzKGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH0sXG5cbiAgY3JlYXRlRmFjdG9yeTogZnVuY3Rpb24gKHR5cGUpIHtcbiAgICB2YXIgdmFsaWRhdGVkRmFjdG9yeSA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVhdGVFbGVtZW50LmJpbmQobnVsbCwgdHlwZSk7XG4gICAgLy8gTGVnYWN5IGhvb2sgVE9ETzogV2FybiBpZiB0aGlzIGlzIGFjY2Vzc2VkXG4gICAgdmFsaWRhdGVkRmFjdG9yeS50eXBlID0gdHlwZTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZhbGlkYXRlZEZhY3RvcnksICd0eXBlJywge1xuICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5nKGZhbHNlLCAnRmFjdG9yeS50eXBlIGlzIGRlcHJlY2F0ZWQuIEFjY2VzcyB0aGUgY2xhc3MgZGlyZWN0bHkgJyArICdiZWZvcmUgcGFzc2luZyBpdCB0byBjcmVhdGVGYWN0b3J5LicpO1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICd0eXBlJywge1xuICAgICAgICAgICAgICB2YWx1ZTogdHlwZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdHlwZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZWRGYWN0b3J5O1xuICB9LFxuXG4gIGNsb25lRWxlbWVudDogZnVuY3Rpb24gKGVsZW1lbnQsIHByb3BzLCBjaGlsZHJlbikge1xuICAgIHZhciBuZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhhcmd1bWVudHNbaV0sIG5ld0VsZW1lbnQudHlwZSk7XG4gICAgfVxuICAgIHZhbGlkYXRlUHJvcFR5cGVzKG5ld0VsZW1lbnQpO1xuICAgIHJldHVybiBuZXdFbGVtZW50O1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RWxlbWVudFZhbGlkYXRvcjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QvbGliL1JlYWN0RWxlbWVudFZhbGlkYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gMTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///16\\n\");\n\n/***/ }),\n/* 17 */\n/* no static exports found */\n/* all exports used */\n/*!*********************************************!*\\\n !*** ./~/react/lib/ReactNoopUpdateQueue.js ***!\n \\*********************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2015-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\nvar warning = __webpack_require__(/*! fbjs/lib/warning */ 2);\\n\\nfunction warnNoop(publicInstance, callerName) {\\n if (process.env.NODE_ENV !== 'production') {\\n var constructor = publicInstance.constructor;\\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\\n }\\n}\\n\\n/**\\n * This is the abstract API for an update queue.\\n */\\nvar ReactNoopUpdateQueue = {\\n /**\\n * Checks whether or not this composite component is mounted.\\n * @param {ReactClass} publicInstance The instance we want to test.\\n * @return {boolean} True if mounted, false otherwise.\\n * @protected\\n * @final\\n */\\n isMounted: function (publicInstance) {\\n return false;\\n },\\n\\n /**\\n * Enqueue a callback that will be executed after all the pending updates\\n * have processed.\\n *\\n * @param {ReactClass} publicInstance The instance to use as `this` context.\\n * @param {?function} callback Called after state is updated.\\n * @internal\\n */\\n enqueueCallback: function (publicInstance, callback) {},\\n\\n /**\\n * Forces an update. This should only be invoked when it is known with\\n * certainty that we are **not** in a DOM transaction.\\n *\\n * You may want to call this when you know that some deeper aspect of the\\n * component's state has changed but `setState` was not called.\\n *\\n * This will not invoke `shouldComponentUpdate`, but it will invoke\\n * `componentWillUpdate` and `componentDidUpdate`.\\n *\\n * @param {ReactClass} publicInstance The instance that should rerender.\\n * @internal\\n */\\n enqueueForceUpdate: function (publicInstance) {\\n warnNoop(publicInstance, 'forceUpdate');\\n },\\n\\n /**\\n * Replaces all of the state. Always use this or `setState` to mutate state.\\n * You should treat `this.state` as immutable.\\n *\\n * There is no guarantee that `this.state` will be immediately updated, so\\n * accessing `this.state` after calling this method may return the old value.\\n *\\n * @param {ReactClass} publicInstance The instance that should rerender.\\n * @param {object} completeState Next state.\\n * @internal\\n */\\n enqueueReplaceState: function (publicInstance, completeState) {\\n warnNoop(publicInstance, 'replaceState');\\n },\\n\\n /**\\n * Sets a subset of the state. This only exists because _pendingState is\\n * internal. This provides a merging strategy that is not available to deep\\n * properties which is confusing. TODO: Expose pendingState or don't use it\\n * during the merge.\\n *\\n * @param {ReactClass} publicInstance The instance that should rerender.\\n * @param {object} partialState Next partial state to be merged with state.\\n * @internal\\n */\\n enqueueSetState: function (publicInstance, partialState) {\\n warnNoop(publicInstance, 'setState');\\n }\\n};\\n\\nmodule.exports = ReactNoopUpdateQueue;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdE5vb3BVcGRhdGVRdWV1ZS5qcz9hZDBiIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbmZ1bmN0aW9uIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFyIGNvbnN0cnVjdG9yID0gcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3I7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4pOiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGVkIG9yIG1vdW50aW5nIGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG9uIGFuIHVubW91bnRlZCBjb21wb25lbnQuICcgKyAnVGhpcyBpcyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNvZGUgZm9yIHRoZSAlcyBjb21wb25lbnQuJywgY2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwgY29uc3RydWN0b3IgJiYgKGNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8IGNvbnN0cnVjdG9yLm5hbWUpIHx8ICdSZWFjdENsYXNzJykgOiB2b2lkIDA7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGlzIHRoZSBhYnN0cmFjdCBBUEkgZm9yIGFuIHVwZGF0ZSBxdWV1ZS5cbiAqL1xudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0ge1xuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRlc3QuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEBmaW5hbFxuICAgKi9cbiAgaXNNb3VudGVkOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXNcbiAgICogaGF2ZSBwcm9jZXNzZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVDYWxsYmFjazogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaykge30sXG5cbiAgLyoqXG4gICAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcbiAgICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFlvdSBtYXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBvZiB0aGVcbiAgICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2VcbiAgICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHtcbiAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cbiAgICogWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuICAgKlxuICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzb1xuICAgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBsZXRlU3RhdGUgTmV4dCBzdGF0ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlUmVwbGFjZVN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3RhdGUpIHtcbiAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXNcbiAgICogaW50ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSB0byBkZWVwXG4gICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxuICAgKiBkdXJpbmcgdGhlIG1lcmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkge1xuICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUnKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QvbGliL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlLmpzXG4vLyBtb2R1bGUgaWQgPSAxN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///17\\n\");\n\n/***/ }),\n/* 18 */\n/* no static exports found */\n/* all exports used */\n/*!**************************************!*\\\n !*** ./~/react/lib/getIteratorFn.js ***!\n \\**************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n * \\n */\\n\\n\\n\\n/* global Symbol */\\n\\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\\n\\n/**\\n * Returns the iterator method function contained on the iterable object.\\n *\\n * Be sure to invoke the function with the iterable as context:\\n *\\n * var iteratorFn = getIteratorFn(myIterable);\\n * if (iteratorFn) {\\n * var iterator = iteratorFn.call(myIterable);\\n * ...\\n * }\\n *\\n * @param {?object} maybeIterable\\n * @return {?function}\\n */\\nfunction getIteratorFn(maybeIterable) {\\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\\n if (typeof iteratorFn === 'function') {\\n return iteratorFn;\\n }\\n}\\n\\nmodule.exports = getIteratorFn;//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9nZXRJdGVyYXRvckZuLmpzPzE1MDciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qIGdsb2JhbCBTeW1ib2wgKi9cblxudmFyIElURVJBVE9SX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLml0ZXJhdG9yO1xudmFyIEZBVVhfSVRFUkFUT1JfU1lNQk9MID0gJ0BAaXRlcmF0b3InOyAvLyBCZWZvcmUgU3ltYm9sIHNwZWMuXG5cbi8qKlxuICogUmV0dXJucyB0aGUgaXRlcmF0b3IgbWV0aG9kIGZ1bmN0aW9uIGNvbnRhaW5lZCBvbiB0aGUgaXRlcmFibGUgb2JqZWN0LlxuICpcbiAqIEJlIHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJsZSBhcyBjb250ZXh0OlxuICpcbiAqICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obXlJdGVyYWJsZSk7XG4gKiAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAqICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChteUl0ZXJhYmxlKTtcbiAqICAgICAgIC4uLlxuICogICAgIH1cbiAqXG4gKiBAcGFyYW0gez9vYmplY3R9IG1heWJlSXRlcmFibGVcbiAqIEByZXR1cm4gez9mdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gZ2V0SXRlcmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7XG4gIHZhciBpdGVyYXRvckZuID0gbWF5YmVJdGVyYWJsZSAmJiAoSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXSk7XG4gIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBpdGVyYXRvckZuO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0SXRlcmF0b3JGbjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QvbGliL2dldEl0ZXJhdG9yRm4uanNcbi8vIG1vZHVsZSBpZCA9IDE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///18\\n\");\n\n/***/ }),\n/* 19 */\n/* no static exports found */\n/* all exports used */\n/*!*******************************!*\\\n !*** ./~/prop-types/index.js ***!\n \\*******************************/\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n */\\n\\nif (process.env.NODE_ENV !== 'production') {\\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\\n Symbol.for &&\\n Symbol.for('react.element')) ||\\n 0xeac7;\\n\\n var isValidElement = function(object) {\\n return typeof object === 'object' &&\\n object !== null &&\\n object.$$typeof === REACT_ELEMENT_TYPE;\\n };\\n\\n // By explicitly using `prop-types` you are opting into new development behavior.\\n // http://fb.me/prop-types-in-prod\\n var throwOnDirectAccess = true;\\n module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ 13)(isValidElement, throwOnDirectAccess);\\n} else {\\n // By explicitly using `prop-types` you are opting into new production behavior.\\n // http://fb.me/prop-types-in-prod\\n module.exports = __webpack_require__(/*! ./factoryWithThrowingShims */ 25)();\\n}\\n\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3Byb3AtdHlwZXMvaW5kZXguanM/MTMxNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIFN5bWJvbC5mb3IgJiZcbiAgICBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykpIHx8XG4gICAgMHhlYWM3O1xuXG4gIHZhciBpc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJlxuICAgICAgb2JqZWN0ICE9PSBudWxsICYmXG4gICAgICBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbiAgfTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKGlzVmFsaWRFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcHJvcC10eXBlcy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///19\\n\");\n\n/***/ }),\n/* 20 */\n/* no static exports found */\n/* all exports used */\n/*!**************************!*\\\n !*** ./~/react/react.js ***!\n \\**************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nmodule.exports = __webpack_require__(/*! ./lib/React */ 28);\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L3JlYWN0LmpzPzNkNjciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL1JlYWN0Jyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QvcmVhY3QuanNcbi8vIG1vZHVsZSBpZCA9IDIwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///20\\n\");\n\n/***/ }),\n/* 21 */\n/* no static exports found */\n/* all exports used */\n/*!**********************!*\\\n !*** ./src/index.js ***!\n \\**********************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\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 _react = __webpack_require__(/*! react */ 20);\\n\\nvar _react2 = _interopRequireDefault(_react);\\n\\nvar _propTypes = __webpack_require__(/*! prop-types */ 19);\\n\\nvar _propTypes2 = _interopRequireDefault(_propTypes);\\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 ReactUtilsButton = function (_React$Component) {\\n _inherits(ReactUtilsButton, _React$Component);\\n\\n function ReactUtilsButton() {\\n _classCallCheck(this, ReactUtilsButton);\\n\\n return _possibleConstructorReturn(this, (ReactUtilsButton.__proto__ || Object.getPrototypeOf(ReactUtilsButton)).apply(this, arguments));\\n }\\n\\n _createClass(ReactUtilsButton, [{\\n key: 'render',\\n value: function render() {\\n var _props = this.props,\\n value = _props.value,\\n onClick = _props.onClick,\\n disabled = _props.disabled,\\n className = _props.className,\\n active = _props.active,\\n loading = _props.loading;\\n\\n var isDisabled = disabled || loading;\\n var elemClass = 'utils-button' + (className ? ' ' + className : '');\\n if (active) {\\n elemClass += '' + (active ? ' utils-button--active' : '');\\n }\\n if (loading) {\\n elemClass += '' + (loading ? ' utils-button--loading' : '');\\n }\\n\\n return _react2.default.createElement(\\n 'button',\\n { type: 'button', className: elemClass\\n // Only trigger onClick if component is not disabled\\n , onClick: !isDisabled ? onClick : function () {},\\n disabled: isDisabled ? 'disabled' : undefined },\\n _react2.default.createElement(\\n 'span',\\n { className: 'utils-button-value' },\\n value\\n )\\n );\\n }\\n }]);\\n\\n return ReactUtilsButton;\\n}(_react2.default.Component);\\n\\nReactUtilsButton.propTypes = {\\n value: _propTypes2.default.string.isRequired,\\n className: _propTypes2.default.string,\\n onClick: _propTypes2.default.func,\\n disabled: _propTypes2.default.bool,\\n active: _propTypes2.default.bool,\\n loading: _propTypes2.default.bool\\n};\\n\\nexports.default = ReactUtilsButton;//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2luZGV4LmpzPzFmZGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5cbmNsYXNzIFJlYWN0VXRpbHNCdXR0b24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSwgb25DbGljaywgZGlzYWJsZWQsIGNsYXNzTmFtZSwgYWN0aXZlLCBsb2FkaW5nIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBpc0Rpc2FibGVkID0gZGlzYWJsZWQgfHwgbG9hZGluZztcbiAgICAgICAgbGV0IGVsZW1DbGFzcyA9IGB1dGlscy1idXR0b24ke2NsYXNzTmFtZSA/IGAgJHtjbGFzc05hbWV9YCA6ICcnfWA7XG4gICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgIGVsZW1DbGFzcyArPSBgJHthY3RpdmUgPyAnIHV0aWxzLWJ1dHRvbi0tYWN0aXZlJyA6ICcnfWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvYWRpbmcpIHtcbiAgICAgICAgICAgIGVsZW1DbGFzcyArPSBgJHtsb2FkaW5nID8gJyB1dGlscy1idXR0b24tLWxvYWRpbmcnIDogJyd9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9e2VsZW1DbGFzc31cbiAgICAgICAgICAgICAgICAgICAgLy8gT25seSB0cmlnZ2VyIG9uQ2xpY2sgaWYgY29tcG9uZW50IGlzIG5vdCBkaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXshaXNEaXNhYmxlZCA/IG9uQ2xpY2sgOiAoKSA9PiB7fX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9J3V0aWxzLWJ1dHRvbi12YWx1ZSc+e3ZhbHVlfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApO1xuICAgIH1cbn1cblxuUmVhY3RVdGlsc0J1dHRvbi5wcm9wVHlwZXMgPSB7XG4gICAgdmFsdWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGFjdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgbG9hZGluZzogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYWN0VXRpbHNCdXR0b247XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2luZGV4LmpzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7Ozs7Ozs7Ozs7O0FBQ0E7Ozs7Ozs7Ozs7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUpBO0FBT0E7Ozs7QUFwQkE7QUFDQTtBQXNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBQ0E7QUFRQSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///21\\n\");\n\n/***/ }),\n/* 22 */\n/* no static exports found */\n/* all exports used */\n/*!*****************************************!*\\\n !*** ./~/create-react-class/factory.js ***!\n \\*****************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\nvar _assign = __webpack_require__(/*! object-assign */ 5);\\n\\nvar emptyObject = __webpack_require__(/*! fbjs/lib/emptyObject */ 12);\\nvar _invariant = __webpack_require__(/*! fbjs/lib/invariant */ 1);\\n\\nif (process.env.NODE_ENV !== 'production') {\\n var warning = __webpack_require__(/*! fbjs/lib/warning */ 2);\\n}\\n\\nvar MIXINS_KEY = 'mixins';\\n\\n// Helper function to allow the creation of anonymous functions which do not\\n// have .name set to the name of the variable being assigned to.\\nfunction identity(fn) {\\n return fn;\\n}\\n\\nvar ReactPropTypeLocationNames;\\nif (process.env.NODE_ENV !== 'production') {\\n ReactPropTypeLocationNames = {\\n prop: 'prop',\\n context: 'context',\\n childContext: 'child context'\\n };\\n} else {\\n ReactPropTypeLocationNames = {};\\n}\\n\\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\\n /**\\n * Policies that describe methods in `ReactClassInterface`.\\n */\\n\\n var injectedMixins = [];\\n\\n /**\\n * Composite components are higher-level components that compose other composite\\n * or host components.\\n *\\n * To create a new type of `ReactClass`, pass a specification of\\n * your new class to `React.createClass`. The only requirement of your class\\n * specification is that you implement a `render` method.\\n *\\n * var MyComponent = React.createClass({\\n * render: function() {\\n * return Hello World
;\\n * }\\n * });\\n *\\n * The class specification supports a specific protocol of methods that have\\n * special meaning (e.g. `render`). See `ReactClassInterface` for\\n * more the comprehensive protocol. Any other properties and methods in the\\n * class specification will be available on the prototype.\\n *\\n * @interface ReactClassInterface\\n * @internal\\n */\\n var ReactClassInterface = {\\n /**\\n * An array of Mixin objects to include when defining your component.\\n *\\n * @type {array}\\n * @optional\\n */\\n mixins: 'DEFINE_MANY',\\n\\n /**\\n * An object containing properties and methods that should be defined on\\n * the component's constructor instead of its prototype (static methods).\\n *\\n * @type {object}\\n * @optional\\n */\\n statics: 'DEFINE_MANY',\\n\\n /**\\n * Definition of prop types for this component.\\n *\\n * @type {object}\\n * @optional\\n */\\n propTypes: 'DEFINE_MANY',\\n\\n /**\\n * Definition of context types for this component.\\n *\\n * @type {object}\\n * @optional\\n */\\n contextTypes: 'DEFINE_MANY',\\n\\n /**\\n * Definition of context types this component sets for its children.\\n *\\n * @type {object}\\n * @optional\\n */\\n childContextTypes: 'DEFINE_MANY',\\n\\n // ==== Definition methods ====\\n\\n /**\\n * Invoked when the component is mounted. Values in the mapping will be set on\\n * `this.props` if that prop is not specified (i.e. using an `in` check).\\n *\\n * This method is invoked before `getInitialState` and therefore cannot rely\\n * on `this.state` or use `this.setState`.\\n *\\n * @return {object}\\n * @optional\\n */\\n getDefaultProps: 'DEFINE_MANY_MERGED',\\n\\n /**\\n * Invoked once before the component is mounted. The return value will be used\\n * as the initial value of `this.state`.\\n *\\n * getInitialState: function() {\\n * return {\\n * isOn: false,\\n * fooBaz: new BazFoo()\\n * }\\n * }\\n *\\n * @return {object}\\n * @optional\\n */\\n getInitialState: 'DEFINE_MANY_MERGED',\\n\\n /**\\n * @return {object}\\n * @optional\\n */\\n getChildContext: 'DEFINE_MANY_MERGED',\\n\\n /**\\n * Uses props from `this.props` and state from `this.state` to render the\\n * structure of the component.\\n *\\n * No guarantees are made about when or how often this method is invoked, so\\n * it must not have side effects.\\n *\\n * render: function() {\\n * var name = this.props.name;\\n * return Hello, {name}!
;\\n * }\\n *\\n * @return {ReactComponent}\\n * @required\\n */\\n render: 'DEFINE_ONCE',\\n\\n // ==== Delegate methods ====\\n\\n /**\\n * Invoked when the component is initially created and about to be mounted.\\n * This may have side effects, but any external subscriptions or data created\\n * by this method must be cleaned up in `componentWillUnmount`.\\n *\\n * @optional\\n */\\n componentWillMount: 'DEFINE_MANY',\\n\\n /**\\n * Invoked when the component has been mounted and has a DOM representation.\\n * However, there is no guarantee that the DOM node is in the document.\\n *\\n * Use this as an opportunity to operate on the DOM when the component has\\n * been mounted (initialized and rendered) for the first time.\\n *\\n * @param {DOMElement} rootNode DOM element representing the component.\\n * @optional\\n */\\n componentDidMount: 'DEFINE_MANY',\\n\\n /**\\n * Invoked before the component receives new props.\\n *\\n * Use this as an opportunity to react to a prop transition by updating the\\n * state using `this.setState`. Current props are accessed via `this.props`.\\n *\\n * componentWillReceiveProps: function(nextProps, nextContext) {\\n * this.setState({\\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\\n * });\\n * }\\n *\\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\\n * transition may cause a state change, but the opposite is not true. If you\\n * need it, you are probably looking for `componentWillUpdate`.\\n *\\n * @param {object} nextProps\\n * @optional\\n */\\n componentWillReceiveProps: 'DEFINE_MANY',\\n\\n /**\\n * Invoked while deciding if the component should be updated as a result of\\n * receiving new props, state and/or context.\\n *\\n * Use this as an opportunity to `return false` when you're certain that the\\n * transition to the new props/state/context will not require a component\\n * update.\\n *\\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\\n * return !equal(nextProps, this.props) ||\\n * !equal(nextState, this.state) ||\\n * !equal(nextContext, this.context);\\n * }\\n *\\n * @param {object} nextProps\\n * @param {?object} nextState\\n * @param {?object} nextContext\\n * @return {boolean} True if the component should update.\\n * @optional\\n */\\n shouldComponentUpdate: 'DEFINE_ONCE',\\n\\n /**\\n * Invoked when the component is about to update due to a transition from\\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\\n * and `nextContext`.\\n *\\n * Use this as an opportunity to perform preparation before an update occurs.\\n *\\n * NOTE: You **cannot** use `this.setState()` in this method.\\n *\\n * @param {object} nextProps\\n * @param {?object} nextState\\n * @param {?object} nextContext\\n * @param {ReactReconcileTransaction} transaction\\n * @optional\\n */\\n componentWillUpdate: 'DEFINE_MANY',\\n\\n /**\\n * Invoked when the component's DOM representation has been updated.\\n *\\n * Use this as an opportunity to operate on the DOM when the component has\\n * been updated.\\n *\\n * @param {object} prevProps\\n * @param {?object} prevState\\n * @param {?object} prevContext\\n * @param {DOMElement} rootNode DOM element representing the component.\\n * @optional\\n */\\n componentDidUpdate: 'DEFINE_MANY',\\n\\n /**\\n * Invoked when the component is about to be removed from its parent and have\\n * its DOM representation destroyed.\\n *\\n * Use this as an opportunity to deallocate any external resources.\\n *\\n * NOTE: There is no `componentDidUnmount` since your component will have been\\n * destroyed by that point.\\n *\\n * @optional\\n */\\n componentWillUnmount: 'DEFINE_MANY',\\n\\n // ==== Advanced methods ====\\n\\n /**\\n * Updates the component's currently mounted DOM representation.\\n *\\n * By default, this implements React's rendering and reconciliation algorithm.\\n * Sophisticated clients may wish to override this.\\n *\\n * @param {ReactReconcileTransaction} transaction\\n * @internal\\n * @overridable\\n */\\n updateComponent: 'OVERRIDE_BASE'\\n };\\n\\n /**\\n * Mapping from class specification keys to special processing functions.\\n *\\n * Although these are declared like instance properties in the specification\\n * when defining classes using `React.createClass`, they are actually static\\n * and are accessible on the constructor instead of the prototype. Despite\\n * being static, they must be defined outside of the \\\"statics\\\" key under\\n * which all other static methods are defined.\\n */\\n var RESERVED_SPEC_KEYS = {\\n displayName: function(Constructor, displayName) {\\n Constructor.displayName = displayName;\\n },\\n mixins: function(Constructor, mixins) {\\n if (mixins) {\\n for (var i = 0; i < mixins.length; i++) {\\n mixSpecIntoComponent(Constructor, mixins[i]);\\n }\\n }\\n },\\n childContextTypes: function(Constructor, childContextTypes) {\\n if (process.env.NODE_ENV !== 'production') {\\n validateTypeDef(Constructor, childContextTypes, 'childContext');\\n }\\n Constructor.childContextTypes = _assign(\\n {},\\n Constructor.childContextTypes,\\n childContextTypes\\n );\\n },\\n contextTypes: function(Constructor, contextTypes) {\\n if (process.env.NODE_ENV !== 'production') {\\n validateTypeDef(Constructor, contextTypes, 'context');\\n }\\n Constructor.contextTypes = _assign(\\n {},\\n Constructor.contextTypes,\\n contextTypes\\n );\\n },\\n /**\\n * Special case getDefaultProps which should move into statics but requires\\n * automatic merging.\\n */\\n getDefaultProps: function(Constructor, getDefaultProps) {\\n if (Constructor.getDefaultProps) {\\n Constructor.getDefaultProps = createMergedResultFunction(\\n Constructor.getDefaultProps,\\n getDefaultProps\\n );\\n } else {\\n Constructor.getDefaultProps = getDefaultProps;\\n }\\n },\\n propTypes: function(Constructor, propTypes) {\\n if (process.env.NODE_ENV !== 'production') {\\n validateTypeDef(Constructor, propTypes, 'prop');\\n }\\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\\n },\\n statics: function(Constructor, statics) {\\n mixStaticSpecIntoComponent(Constructor, statics);\\n },\\n autobind: function() {}\\n };\\n\\n function validateTypeDef(Constructor, typeDef, location) {\\n for (var propName in typeDef) {\\n if (typeDef.hasOwnProperty(propName)) {\\n // use a warning instead of an _invariant so components\\n // don't show up in prod but only in __DEV__\\n if (process.env.NODE_ENV !== 'production') {\\n warning(\\n typeof typeDef[propName] === 'function',\\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\\n 'React.PropTypes.',\\n Constructor.displayName || 'ReactClass',\\n ReactPropTypeLocationNames[location],\\n propName\\n );\\n }\\n }\\n }\\n }\\n\\n function validateMethodOverride(isAlreadyDefined, name) {\\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\\n ? ReactClassInterface[name]\\n : null;\\n\\n // Disallow overriding of base class methods unless explicitly allowed.\\n if (ReactClassMixin.hasOwnProperty(name)) {\\n _invariant(\\n specPolicy === 'OVERRIDE_BASE',\\n 'ReactClassInterface: You are attempting to override ' +\\n '`%s` from your class specification. Ensure that your method names ' +\\n 'do not overlap with React methods.',\\n name\\n );\\n }\\n\\n // Disallow defining methods more than once unless explicitly allowed.\\n if (isAlreadyDefined) {\\n _invariant(\\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\\n 'ReactClassInterface: You are attempting to define ' +\\n '`%s` on your component more than once. This conflict may be due ' +\\n 'to a mixin.',\\n name\\n );\\n }\\n }\\n\\n /**\\n * Mixin helper which handles policy validation and reserved\\n * specification keys when building React classes.\\n */\\n function mixSpecIntoComponent(Constructor, spec) {\\n if (!spec) {\\n if (process.env.NODE_ENV !== 'production') {\\n var typeofSpec = typeof spec;\\n var isMixinValid = typeofSpec === 'object' && spec !== null;\\n\\n if (process.env.NODE_ENV !== 'production') {\\n warning(\\n isMixinValid,\\n \\\"%s: You're attempting to include a mixin that is either null \\\" +\\n 'or not an object. Check the mixins included by the component, ' +\\n 'as well as any mixins they include themselves. ' +\\n 'Expected object but got %s.',\\n Constructor.displayName || 'ReactClass',\\n spec === null ? null : typeofSpec\\n );\\n }\\n }\\n\\n return;\\n }\\n\\n _invariant(\\n typeof spec !== 'function',\\n \\\"ReactClass: You're attempting to \\\" +\\n 'use a component class or function as a mixin. Instead, just use a ' +\\n 'regular object.'\\n );\\n _invariant(\\n !isValidElement(spec),\\n \\\"ReactClass: You're attempting to \\\" +\\n 'use a component as a mixin. Instead, just use a regular object.'\\n );\\n\\n var proto = Constructor.prototype;\\n var autoBindPairs = proto.__reactAutoBindPairs;\\n\\n // By handling mixins before any other properties, we ensure the same\\n // chaining order is applied to methods with DEFINE_MANY policy, whether\\n // mixins are listed before or after these methods in the spec.\\n if (spec.hasOwnProperty(MIXINS_KEY)) {\\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\\n }\\n\\n for (var name in spec) {\\n if (!spec.hasOwnProperty(name)) {\\n continue;\\n }\\n\\n if (name === MIXINS_KEY) {\\n // We have already handled mixins in a special case above.\\n continue;\\n }\\n\\n var property = spec[name];\\n var isAlreadyDefined = proto.hasOwnProperty(name);\\n validateMethodOverride(isAlreadyDefined, name);\\n\\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\\n RESERVED_SPEC_KEYS[name](Constructor, property);\\n } else {\\n // Setup methods on prototype:\\n // The following member methods should not be automatically bound:\\n // 1. Expected ReactClass methods (in the \\\"interface\\\").\\n // 2. Overridden methods (that were mixed in).\\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\\n var isFunction = typeof property === 'function';\\n var shouldAutoBind =\\n isFunction &&\\n !isReactClassMethod &&\\n !isAlreadyDefined &&\\n spec.autobind !== false;\\n\\n if (shouldAutoBind) {\\n autoBindPairs.push(name, property);\\n proto[name] = property;\\n } else {\\n if (isAlreadyDefined) {\\n var specPolicy = ReactClassInterface[name];\\n\\n // These cases should already be caught by validateMethodOverride.\\n _invariant(\\n isReactClassMethod &&\\n (specPolicy === 'DEFINE_MANY_MERGED' ||\\n specPolicy === 'DEFINE_MANY'),\\n 'ReactClass: Unexpected spec policy %s for key %s ' +\\n 'when mixing in component specs.',\\n specPolicy,\\n name\\n );\\n\\n // For methods which are defined more than once, call the existing\\n // methods before calling the new property, merging if appropriate.\\n if (specPolicy === 'DEFINE_MANY_MERGED') {\\n proto[name] = createMergedResultFunction(proto[name], property);\\n } else if (specPolicy === 'DEFINE_MANY') {\\n proto[name] = createChainedFunction(proto[name], property);\\n }\\n } else {\\n proto[name] = property;\\n if (process.env.NODE_ENV !== 'production') {\\n // Add verbose displayName to the function, which helps when looking\\n // at profiling tools.\\n if (typeof property === 'function' && spec.displayName) {\\n proto[name].displayName = spec.displayName + '_' + name;\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n function mixStaticSpecIntoComponent(Constructor, statics) {\\n if (!statics) {\\n return;\\n }\\n for (var name in statics) {\\n var property = statics[name];\\n if (!statics.hasOwnProperty(name)) {\\n continue;\\n }\\n\\n var isReserved = name in RESERVED_SPEC_KEYS;\\n _invariant(\\n !isReserved,\\n 'ReactClass: You are attempting to define a reserved ' +\\n 'property, `%s`, that shouldn\\\\'t be on the \\\"statics\\\" key. Define it ' +\\n 'as an instance property instead; it will still be accessible on the ' +\\n 'constructor.',\\n name\\n );\\n\\n var isInherited = name in Constructor;\\n _invariant(\\n !isInherited,\\n 'ReactClass: You are attempting to define ' +\\n '`%s` on your component more than once. This conflict may be ' +\\n 'due to a mixin.',\\n name\\n );\\n Constructor[name] = property;\\n }\\n }\\n\\n /**\\n * Merge two objects, but throw if both contain the same key.\\n *\\n * @param {object} one The first object, which is mutated.\\n * @param {object} two The second object\\n * @return {object} one after it has been mutated to contain everything in two.\\n */\\n function mergeIntoWithNoDuplicateKeys(one, two) {\\n _invariant(\\n one && two && typeof one === 'object' && typeof two === 'object',\\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\\n );\\n\\n for (var key in two) {\\n if (two.hasOwnProperty(key)) {\\n _invariant(\\n one[key] === undefined,\\n 'mergeIntoWithNoDuplicateKeys(): ' +\\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\\n 'may be due to a mixin; in particular, this may be caused by two ' +\\n 'getInitialState() or getDefaultProps() methods returning objects ' +\\n 'with clashing keys.',\\n key\\n );\\n one[key] = two[key];\\n }\\n }\\n return one;\\n }\\n\\n /**\\n * Creates a function that invokes two functions and merges their return values.\\n *\\n * @param {function} one Function to invoke first.\\n * @param {function} two Function to invoke second.\\n * @return {function} Function that invokes the two argument functions.\\n * @private\\n */\\n function createMergedResultFunction(one, two) {\\n return function mergedResult() {\\n var a = one.apply(this, arguments);\\n var b = two.apply(this, arguments);\\n if (a == null) {\\n return b;\\n } else if (b == null) {\\n return a;\\n }\\n var c = {};\\n mergeIntoWithNoDuplicateKeys(c, a);\\n mergeIntoWithNoDuplicateKeys(c, b);\\n return c;\\n };\\n }\\n\\n /**\\n * Creates a function that invokes two functions and ignores their return vales.\\n *\\n * @param {function} one Function to invoke first.\\n * @param {function} two Function to invoke second.\\n * @return {function} Function that invokes the two argument functions.\\n * @private\\n */\\n function createChainedFunction(one, two) {\\n return function chainedFunction() {\\n one.apply(this, arguments);\\n two.apply(this, arguments);\\n };\\n }\\n\\n /**\\n * Binds a method to the component.\\n *\\n * @param {object} component Component whose method is going to be bound.\\n * @param {function} method Method to be bound.\\n * @return {function} The bound method.\\n */\\n function bindAutoBindMethod(component, method) {\\n var boundMethod = method.bind(component);\\n if (process.env.NODE_ENV !== 'production') {\\n boundMethod.__reactBoundContext = component;\\n boundMethod.__reactBoundMethod = method;\\n boundMethod.__reactBoundArguments = null;\\n var componentName = component.constructor.displayName;\\n var _bind = boundMethod.bind;\\n boundMethod.bind = function(newThis) {\\n for (\\n var _len = arguments.length,\\n args = Array(_len > 1 ? _len - 1 : 0),\\n _key = 1;\\n _key < _len;\\n _key++\\n ) {\\n args[_key - 1] = arguments[_key];\\n }\\n\\n // User is trying to bind() an autobound method; we effectively will\\n // ignore the value of \\\"this\\\" that the user is trying to use, so\\n // let's warn.\\n if (newThis !== component && newThis !== null) {\\n if (process.env.NODE_ENV !== 'production') {\\n warning(\\n false,\\n 'bind(): React component methods may only be bound to the ' +\\n 'component instance. See %s',\\n componentName\\n );\\n }\\n } else if (!args.length) {\\n if (process.env.NODE_ENV !== 'production') {\\n warning(\\n false,\\n 'bind(): You are binding a component method to the component. ' +\\n 'React does this for you automatically in a high-performance ' +\\n 'way, so you can safely remove this call. See %s',\\n componentName\\n );\\n }\\n return boundMethod;\\n }\\n var reboundMethod = _bind.apply(boundMethod, arguments);\\n reboundMethod.__reactBoundContext = component;\\n reboundMethod.__reactBoundMethod = method;\\n reboundMethod.__reactBoundArguments = args;\\n return reboundMethod;\\n };\\n }\\n return boundMethod;\\n }\\n\\n /**\\n * Binds all auto-bound methods in a component.\\n *\\n * @param {object} component Component whose method is going to be bound.\\n */\\n function bindAutoBindMethods(component) {\\n var pairs = component.__reactAutoBindPairs;\\n for (var i = 0; i < pairs.length; i += 2) {\\n var autoBindKey = pairs[i];\\n var method = pairs[i + 1];\\n component[autoBindKey] = bindAutoBindMethod(component, method);\\n }\\n }\\n\\n var IsMountedPreMixin = {\\n componentDidMount: function() {\\n this.__isMounted = true;\\n }\\n };\\n\\n var IsMountedPostMixin = {\\n componentWillUnmount: function() {\\n this.__isMounted = false;\\n }\\n };\\n\\n /**\\n * Add more to the ReactClass base class. These are all legacy features and\\n * therefore not already part of the modern ReactComponent.\\n */\\n var ReactClassMixin = {\\n /**\\n * TODO: This will be deprecated because state should always keep a consistent\\n * type signature and the only use case for this, is to avoid that.\\n */\\n replaceState: function(newState, callback) {\\n this.updater.enqueueReplaceState(this, newState, callback);\\n },\\n\\n /**\\n * Checks whether or not this composite component is mounted.\\n * @return {boolean} True if mounted, false otherwise.\\n * @protected\\n * @final\\n */\\n isMounted: function() {\\n if (process.env.NODE_ENV !== 'production') {\\n warning(\\n this.__didWarnIsMounted,\\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\\n 'subscriptions and pending requests in componentWillUnmount to ' +\\n 'prevent memory leaks.',\\n (this.constructor && this.constructor.displayName) ||\\n this.name ||\\n 'Component'\\n );\\n this.__didWarnIsMounted = true;\\n }\\n return !!this.__isMounted;\\n }\\n };\\n\\n var ReactClassComponent = function() {};\\n _assign(\\n ReactClassComponent.prototype,\\n ReactComponent.prototype,\\n ReactClassMixin\\n );\\n\\n /**\\n * Creates a composite component class given a class specification.\\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\\n *\\n * @param {object} spec Class specification (which must define `render`).\\n * @return {function} Component constructor function.\\n * @public\\n */\\n function createClass(spec) {\\n // To keep our warnings more understandable, we'll use a little hack here to\\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\\n // unnecessarily identify a class without displayName as 'Constructor'.\\n var Constructor = identity(function(props, context, updater) {\\n // This constructor gets overridden by mocks. The argument is used\\n // by mocks to assert on what gets mounted.\\n\\n if (process.env.NODE_ENV !== 'production') {\\n warning(\\n this instanceof Constructor,\\n 'Something is calling a React component directly. Use a factory or ' +\\n 'JSX instead. See: https://fb.me/react-legacyfactory'\\n );\\n }\\n\\n // Wire up auto-binding\\n if (this.__reactAutoBindPairs.length) {\\n bindAutoBindMethods(this);\\n }\\n\\n this.props = props;\\n this.context = context;\\n this.refs = emptyObject;\\n this.updater = updater || ReactNoopUpdateQueue;\\n\\n this.state = null;\\n\\n // ReactClasses doesn't have constructors. Instead, they use the\\n // getInitialState and componentWillMount methods for initialization.\\n\\n var initialState = this.getInitialState ? this.getInitialState() : null;\\n if (process.env.NODE_ENV !== 'production') {\\n // We allow auto-mocks to proceed as if they're returning null.\\n if (\\n initialState === undefined &&\\n this.getInitialState._isMockFunction\\n ) {\\n // This is probably bad practice. Consider warning here and\\n // deprecating this convenience.\\n initialState = null;\\n }\\n }\\n _invariant(\\n typeof initialState === 'object' && !Array.isArray(initialState),\\n '%s.getInitialState(): must return an object or null',\\n Constructor.displayName || 'ReactCompositeComponent'\\n );\\n\\n this.state = initialState;\\n });\\n Constructor.prototype = new ReactClassComponent();\\n Constructor.prototype.constructor = Constructor;\\n Constructor.prototype.__reactAutoBindPairs = [];\\n\\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\\n\\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\\n mixSpecIntoComponent(Constructor, spec);\\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\\n\\n // Initialize the defaultProps property after all mixins have been merged.\\n if (Constructor.getDefaultProps) {\\n Constructor.defaultProps = Constructor.getDefaultProps();\\n }\\n\\n if (process.env.NODE_ENV !== 'production') {\\n // This is a tag to indicate that the use of these method names is ok,\\n // since it's used with createClass. If it's not, then it's likely a\\n // mistake so we'll warn you to use the static property, property\\n // initializer or constructor respectively.\\n if (Constructor.getDefaultProps) {\\n Constructor.getDefaultProps.isReactClassApproved = {};\\n }\\n if (Constructor.prototype.getInitialState) {\\n Constructor.prototype.getInitialState.isReactClassApproved = {};\\n }\\n }\\n\\n _invariant(\\n Constructor.prototype.render,\\n 'createClass(...): Class specification must implement a `render` method.'\\n );\\n\\n if (process.env.NODE_ENV !== 'production') {\\n warning(\\n !Constructor.prototype.componentShouldUpdate,\\n '%s has a method called ' +\\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\\n 'The name is phrased as a question because the function is ' +\\n 'expected to return a value.',\\n spec.displayName || 'A component'\\n );\\n warning(\\n !Constructor.prototype.componentWillRecieveProps,\\n '%s has a method called ' +\\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\\n spec.displayName || 'A component'\\n );\\n }\\n\\n // Reduce time spent doing lookups by setting these on the prototype.\\n for (var methodName in ReactClassInterface) {\\n if (!Constructor.prototype[methodName]) {\\n Constructor.prototype[methodName] = null;\\n }\\n }\\n\\n return Constructor;\\n }\\n\\n return createClass;\\n}\\n\\nmodule.exports = factory;\\n\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L2NyZWF0ZS1yZWFjdC1jbGFzcy9mYWN0b3J5LmpzPzRmMmUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlPYmplY3QnKTtcbnZhciBfaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xufVxuXG52YXIgTUlYSU5TX0tFWSA9ICdtaXhpbnMnO1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gYWxsb3cgdGhlIGNyZWF0aW9uIG9mIGFub255bW91cyBmdW5jdGlvbnMgd2hpY2ggZG8gbm90XG4vLyBoYXZlIC5uYW1lIHNldCB0byB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgYmVpbmcgYXNzaWduZWQgdG8uXG5mdW5jdGlvbiBpZGVudGl0eShmbikge1xuICByZXR1cm4gZm47XG59XG5cbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcztcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge1xuICAgIHByb3A6ICdwcm9wJyxcbiAgICBjb250ZXh0OiAnY29udGV4dCcsXG4gICAgY2hpbGRDb250ZXh0OiAnY2hpbGQgY29udGV4dCdcbiAgfTtcbn0gZWxzZSB7XG4gIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0ge307XG59XG5cbmZ1bmN0aW9uIGZhY3RvcnkoUmVhY3RDb21wb25lbnQsIGlzVmFsaWRFbGVtZW50LCBSZWFjdE5vb3BVcGRhdGVRdWV1ZSkge1xuICAvKipcbiAgICogUG9saWNpZXMgdGhhdCBkZXNjcmliZSBtZXRob2RzIGluIGBSZWFjdENsYXNzSW50ZXJmYWNlYC5cbiAgICovXG5cbiAgdmFyIGluamVjdGVkTWl4aW5zID0gW107XG5cbiAgLyoqXG4gICAqIENvbXBvc2l0ZSBjb21wb25lbnRzIGFyZSBoaWdoZXItbGV2ZWwgY29tcG9uZW50cyB0aGF0IGNvbXBvc2Ugb3RoZXIgY29tcG9zaXRlXG4gICAqIG9yIGhvc3QgY29tcG9uZW50cy5cbiAgICpcbiAgICogVG8gY3JlYXRlIGEgbmV3IHR5cGUgb2YgYFJlYWN0Q2xhc3NgLCBwYXNzIGEgc3BlY2lmaWNhdGlvbiBvZlxuICAgKiB5b3VyIG5ldyBjbGFzcyB0byBgUmVhY3QuY3JlYXRlQ2xhc3NgLiBUaGUgb25seSByZXF1aXJlbWVudCBvZiB5b3VyIGNsYXNzXG4gICAqIHNwZWNpZmljYXRpb24gaXMgdGhhdCB5b3UgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLlxuICAgKlxuICAgKiAgIHZhciBNeUNvbXBvbmVudCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7XG4gICAqICAgICAgIHJldHVybiA8ZGl2PkhlbGxvIFdvcmxkPC9kaXY+O1xuICAgKiAgICAgfVxuICAgKiAgIH0pO1xuICAgKlxuICAgKiBUaGUgY2xhc3Mgc3BlY2lmaWNhdGlvbiBzdXBwb3J0cyBhIHNwZWNpZmljIHByb3RvY29sIG9mIG1ldGhvZHMgdGhhdCBoYXZlXG4gICAqIHNwZWNpYWwgbWVhbmluZyAoZS5nLiBgcmVuZGVyYCkuIFNlZSBgUmVhY3RDbGFzc0ludGVyZmFjZWAgZm9yXG4gICAqIG1vcmUgdGhlIGNvbXByZWhlbnNpdmUgcHJvdG9jb2wuIEFueSBvdGhlciBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIGluIHRoZVxuICAgKiBjbGFzcyBzcGVjaWZpY2F0aW9uIHdpbGwgYmUgYXZhaWxhYmxlIG9uIHRoZSBwcm90b3R5cGUuXG4gICAqXG4gICAqIEBpbnRlcmZhY2UgUmVhY3RDbGFzc0ludGVyZmFjZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHZhciBSZWFjdENsYXNzSW50ZXJmYWNlID0ge1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIE1peGluIG9iamVjdHMgdG8gaW5jbHVkZSB3aGVuIGRlZmluaW5nIHlvdXIgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHR5cGUge2FycmF5fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIG1peGluczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgdGhhdCBzaG91bGQgYmUgZGVmaW5lZCBvblxuICAgICAqIHRoZSBjb21wb25lbnQncyBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIGl0cyBwcm90b3R5cGUgKHN0YXRpYyBtZXRob2RzKS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgc3RhdGljczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIERlZmluaXRpb24gb2YgcHJvcCB0eXBlcyBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIHByb3BUeXBlczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbnRleHRUeXBlczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyB0aGlzIGNvbXBvbmVudCBzZXRzIGZvciBpdHMgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNoaWxkQ29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLy8gPT09PSBEZWZpbml0aW9uIG1ldGhvZHMgPT09PVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgbW91bnRlZC4gVmFsdWVzIGluIHRoZSBtYXBwaW5nIHdpbGwgYmUgc2V0IG9uXG4gICAgICogYHRoaXMucHJvcHNgIGlmIHRoYXQgcHJvcCBpcyBub3Qgc3BlY2lmaWVkIChpLmUuIHVzaW5nIGFuIGBpbmAgY2hlY2spLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgaXMgaW52b2tlZCBiZWZvcmUgYGdldEluaXRpYWxTdGF0ZWAgYW5kIHRoZXJlZm9yZSBjYW5ub3QgcmVseVxuICAgICAqIG9uIGB0aGlzLnN0YXRlYCBvciB1c2UgYHRoaXMuc2V0U3RhdGVgLlxuICAgICAqXG4gICAgICogQHJldHVybiB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdldERlZmF1bHRQcm9wczogJ0RFRklORV9NQU5ZX01FUkdFRCcsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIG9uY2UgYmVmb3JlIHRoZSBjb21wb25lbnQgaXMgbW91bnRlZC4gVGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIHVzZWRcbiAgICAgKiBhcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBgdGhpcy5zdGF0ZWAuXG4gICAgICpcbiAgICAgKiAgIGdldEluaXRpYWxTdGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICogICAgIHJldHVybiB7XG4gICAgICogICAgICAgaXNPbjogZmFsc2UsXG4gICAgICogICAgICAgZm9vQmF6OiBuZXcgQmF6Rm9vKClcbiAgICAgKiAgICAgfVxuICAgICAqICAgfVxuICAgICAqXG4gICAgICogQHJldHVybiB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdldEluaXRpYWxTdGF0ZTogJ0RFRklORV9NQU5ZX01FUkdFRCcsXG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgZ2V0Q2hpbGRDb250ZXh0OiAnREVGSU5FX01BTllfTUVSR0VEJyxcblxuICAgIC8qKlxuICAgICAqIFVzZXMgcHJvcHMgZnJvbSBgdGhpcy5wcm9wc2AgYW5kIHN0YXRlIGZyb20gYHRoaXMuc3RhdGVgIHRvIHJlbmRlciB0aGVcbiAgICAgKiBzdHJ1Y3R1cmUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIE5vIGd1YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgd2hlbiBvciBob3cgb2Z0ZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgc29cbiAgICAgKiBpdCBtdXN0IG5vdCBoYXZlIHNpZGUgZWZmZWN0cy5cbiAgICAgKlxuICAgICAqICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgdmFyIG5hbWUgPSB0aGlzLnByb3BzLm5hbWU7XG4gICAgICogICAgIHJldHVybiA8ZGl2PkhlbGxvLCB7bmFtZX0hPC9kaXY+O1xuICAgICAqICAgfVxuICAgICAqXG4gICAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9XG4gICAgICogQHJlcXVpcmVkXG4gICAgICovXG4gICAgcmVuZGVyOiAnREVGSU5FX09OQ0UnLFxuXG4gICAgLy8gPT09PSBEZWxlZ2F0ZSBtZXRob2RzID09PT1cblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxseSBjcmVhdGVkIGFuZCBhYm91dCB0byBiZSBtb3VudGVkLlxuICAgICAqIFRoaXMgbWF5IGhhdmUgc2lkZSBlZmZlY3RzLCBidXQgYW55IGV4dGVybmFsIHN1YnNjcmlwdGlvbnMgb3IgZGF0YSBjcmVhdGVkXG4gICAgICogYnkgdGhpcyBtZXRob2QgbXVzdCBiZSBjbGVhbmVkIHVwIGluIGBjb21wb25lbnRXaWxsVW5tb3VudGAuXG4gICAgICpcbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21wb25lbnRXaWxsTW91bnQ6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBtb3VudGVkIGFuZCBoYXMgYSBET00gcmVwcmVzZW50YXRpb24uXG4gICAgICogSG93ZXZlciwgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIERPTSBub2RlIGlzIGluIHRoZSBkb2N1bWVudC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25lbnQgaGFzXG4gICAgICogYmVlbiBtb3VudGVkIChpbml0aWFsaXplZCBhbmQgcmVuZGVyZWQpIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQuXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50RGlkTW91bnQ6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIGJlZm9yZSB0aGUgY29tcG9uZW50IHJlY2VpdmVzIG5ldyBwcm9wcy5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHJlYWN0IHRvIGEgcHJvcCB0cmFuc2l0aW9uIGJ5IHVwZGF0aW5nIHRoZVxuICAgICAqIHN0YXRlIHVzaW5nIGB0aGlzLnNldFN0YXRlYC4gQ3VycmVudCBwcm9wcyBhcmUgYWNjZXNzZWQgdmlhIGB0aGlzLnByb3BzYC5cbiAgICAgKlxuICAgICAqICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogZnVuY3Rpb24obmV4dFByb3BzLCBuZXh0Q29udGV4dCkge1xuICAgICAqICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgKiAgICAgICBsaWtlc0luY3JlYXNpbmc6IG5leHRQcm9wcy5saWtlQ291bnQgPiB0aGlzLnByb3BzLmxpa2VDb3VudFxuICAgICAqICAgICB9KTtcbiAgICAgKiAgIH1cbiAgICAgKlxuICAgICAqIE5PVEU6IFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgYGNvbXBvbmVudFdpbGxSZWNlaXZlU3RhdGVgLiBBbiBpbmNvbWluZyBwcm9wXG4gICAgICogdHJhbnNpdGlvbiBtYXkgY2F1c2UgYSBzdGF0ZSBjaGFuZ2UsIGJ1dCB0aGUgb3Bwb3NpdGUgaXMgbm90IHRydWUuIElmIHlvdVxuICAgICAqIG5lZWQgaXQsIHlvdSBhcmUgcHJvYmFibHkgbG9va2luZyBmb3IgYGNvbXBvbmVudFdpbGxVcGRhdGVgLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoaWxlIGRlY2lkaW5nIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2ZcbiAgICAgKiByZWNlaXZpbmcgbmV3IHByb3BzLCBzdGF0ZSBhbmQvb3IgY29udGV4dC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIGByZXR1cm4gZmFsc2VgIHdoZW4geW91J3JlIGNlcnRhaW4gdGhhdCB0aGVcbiAgICAgKiB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgcHJvcHMvc3RhdGUvY29udGV4dCB3aWxsIG5vdCByZXF1aXJlIGEgY29tcG9uZW50XG4gICAgICogdXBkYXRlLlxuICAgICAqXG4gICAgICogICBzaG91bGRDb21wb25lbnRVcGRhdGU6IGZ1bmN0aW9uKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCkge1xuICAgICAqICAgICByZXR1cm4gIWVxdWFsKG5leHRQcm9wcywgdGhpcy5wcm9wcykgfHxcbiAgICAgKiAgICAgICAhZXF1YWwobmV4dFN0YXRlLCB0aGlzLnN0YXRlKSB8fFxuICAgICAqICAgICAgICFlcXVhbChuZXh0Q29udGV4dCwgdGhpcy5jb250ZXh0KTtcbiAgICAgKiAgIH1cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZVxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHRcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZS5cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBzaG91bGRDb21wb25lbnRVcGRhdGU6ICdERUZJTkVfT05DRScsXG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byB1cGRhdGUgZHVlIHRvIGEgdHJhbnNpdGlvbiBmcm9tXG4gICAgICogYHRoaXMucHJvcHNgLCBgdGhpcy5zdGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRgIHRvIGBuZXh0UHJvcHNgLCBgbmV4dFN0YXRlYFxuICAgICAqIGFuZCBgbmV4dENvbnRleHRgLlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcGVyZm9ybSBwcmVwYXJhdGlvbiBiZWZvcmUgYW4gdXBkYXRlIG9jY3Vycy5cbiAgICAgKlxuICAgICAqIE5PVEU6IFlvdSAqKmNhbm5vdCoqIHVzZSBgdGhpcy5zZXRTdGF0ZSgpYCBpbiB0aGlzIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZVxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHRcbiAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50V2lsbFVwZGF0ZTogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50J3MgRE9NIHJlcHJlc2VudGF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBvcGVyYXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhc1xuICAgICAqIGJlZW4gdXBkYXRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBwcmV2UHJvcHNcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZTdGF0ZVxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gcHJldkNvbnRleHRcbiAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50LlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudERpZFVwZGF0ZTogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGFib3V0IHRvIGJlIHJlbW92ZWQgZnJvbSBpdHMgcGFyZW50IGFuZCBoYXZlXG4gICAgICogaXRzIERPTSByZXByZXNlbnRhdGlvbiBkZXN0cm95ZWQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBkZWFsbG9jYXRlIGFueSBleHRlcm5hbCByZXNvdXJjZXMuXG4gICAgICpcbiAgICAgKiBOT1RFOiBUaGVyZSBpcyBubyBgY29tcG9uZW50RGlkVW5tb3VudGAgc2luY2UgeW91ciBjb21wb25lbnQgd2lsbCBoYXZlIGJlZW5cbiAgICAgKiBkZXN0cm95ZWQgYnkgdGhhdCBwb2ludC5cbiAgICAgKlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50OiAnREVGSU5FX01BTlknLFxuXG4gICAgLy8gPT09PSBBZHZhbmNlZCBtZXRob2RzID09PT1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIGNvbXBvbmVudCdzIGN1cnJlbnRseSBtb3VudGVkIERPTSByZXByZXNlbnRhdGlvbi5cbiAgICAgKlxuICAgICAqIEJ5IGRlZmF1bHQsIHRoaXMgaW1wbGVtZW50cyBSZWFjdCdzIHJlbmRlcmluZyBhbmQgcmVjb25jaWxpYXRpb24gYWxnb3JpdGhtLlxuICAgICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50cyBtYXkgd2lzaCB0byBvdmVycmlkZSB0aGlzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIEBvdmVycmlkYWJsZVxuICAgICAqL1xuICAgIHVwZGF0ZUNvbXBvbmVudDogJ09WRVJSSURFX0JBU0UnXG4gIH07XG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBjbGFzcyBzcGVjaWZpY2F0aW9uIGtleXMgdG8gc3BlY2lhbCBwcm9jZXNzaW5nIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQWx0aG91Z2ggdGhlc2UgYXJlIGRlY2xhcmVkIGxpa2UgaW5zdGFuY2UgcHJvcGVydGllcyBpbiB0aGUgc3BlY2lmaWNhdGlvblxuICAgKiB3aGVuIGRlZmluaW5nIGNsYXNzZXMgdXNpbmcgYFJlYWN0LmNyZWF0ZUNsYXNzYCwgdGhleSBhcmUgYWN0dWFsbHkgc3RhdGljXG4gICAqIGFuZCBhcmUgYWNjZXNzaWJsZSBvbiB0aGUgY29uc3RydWN0b3IgaW5zdGVhZCBvZiB0aGUgcHJvdG90eXBlLiBEZXNwaXRlXG4gICAqIGJlaW5nIHN0YXRpYywgdGhleSBtdXN0IGJlIGRlZmluZWQgb3V0c2lkZSBvZiB0aGUgXCJzdGF0aWNzXCIga2V5IHVuZGVyXG4gICAqIHdoaWNoIGFsbCBvdGhlciBzdGF0aWMgbWV0aG9kcyBhcmUgZGVmaW5lZC5cbiAgICovXG4gIHZhciBSRVNFUlZFRF9TUEVDX0tFWVMgPSB7XG4gICAgZGlzcGxheU5hbWU6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBkaXNwbGF5TmFtZSkge1xuICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTtcbiAgICB9LFxuICAgIG1peGluczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIG1peGlucykge1xuICAgICAgaWYgKG1peGlucykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1peGlucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBtaXhpbnNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBjaGlsZENvbnRleHRUeXBlczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGNoaWxkQ29udGV4dFR5cGVzKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIGNoaWxkQ29udGV4dFR5cGVzLCAnY2hpbGRDb250ZXh0Jyk7XG4gICAgICB9XG4gICAgICBDb25zdHJ1Y3Rvci5jaGlsZENvbnRleHRUeXBlcyA9IF9hc3NpZ24oXG4gICAgICAgIHt9LFxuICAgICAgICBDb25zdHJ1Y3Rvci5jaGlsZENvbnRleHRUeXBlcyxcbiAgICAgICAgY2hpbGRDb250ZXh0VHlwZXNcbiAgICAgICk7XG4gICAgfSxcbiAgICBjb250ZXh0VHlwZXM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBjb250ZXh0VHlwZXMpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzLCAnY29udGV4dCcpO1xuICAgICAgfVxuICAgICAgQ29uc3RydWN0b3IuY29udGV4dFR5cGVzID0gX2Fzc2lnbihcbiAgICAgICAge30sXG4gICAgICAgIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcyxcbiAgICAgICAgY29udGV4dFR5cGVzXG4gICAgICApO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogU3BlY2lhbCBjYXNlIGdldERlZmF1bHRQcm9wcyB3aGljaCBzaG91bGQgbW92ZSBpbnRvIHN0YXRpY3MgYnV0IHJlcXVpcmVzXG4gICAgICogYXV0b21hdGljIG1lcmdpbmcuXG4gICAgICovXG4gICAgZ2V0RGVmYXVsdFByb3BzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKFxuICAgICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyxcbiAgICAgICAgICBnZXREZWZhdWx0UHJvcHNcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyA9IGdldERlZmF1bHRQcm9wcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHByb3BUeXBlczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIHByb3BUeXBlcykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBwcm9wVHlwZXMsICdwcm9wJyk7XG4gICAgICB9XG4gICAgICBDb25zdHJ1Y3Rvci5wcm9wVHlwZXMgPSBfYXNzaWduKHt9LCBDb25zdHJ1Y3Rvci5wcm9wVHlwZXMsIHByb3BUeXBlcyk7XG4gICAgfSxcbiAgICBzdGF0aWNzOiBmdW5jdGlvbihDb25zdHJ1Y3Rvciwgc3RhdGljcykge1xuICAgICAgbWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHN0YXRpY3MpO1xuICAgIH0sXG4gICAgYXV0b2JpbmQ6IGZ1bmN0aW9uKCkge31cbiAgfTtcblxuICBmdW5jdGlvbiB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIHR5cGVEZWYsIGxvY2F0aW9uKSB7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gdHlwZURlZikge1xuICAgICAgaWYgKHR5cGVEZWYuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIC8vIHVzZSBhIHdhcm5pbmcgaW5zdGVhZCBvZiBhbiBfaW52YXJpYW50IHNvIGNvbXBvbmVudHNcbiAgICAgICAgLy8gZG9uJ3Qgc2hvdyB1cCBpbiBwcm9kIGJ1dCBvbmx5IGluIF9fREVWX19cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgdHlwZW9mIHR5cGVEZWZbcHJvcE5hbWVdID09PSAnZnVuY3Rpb24nLFxuICAgICAgICAgICAgJyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gJyArXG4gICAgICAgICAgICAgICdSZWFjdC5Qcm9wVHlwZXMuJyxcbiAgICAgICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENsYXNzJyxcbiAgICAgICAgICAgIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXSxcbiAgICAgICAgICAgIHByb3BOYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUoaXNBbHJlYWR5RGVmaW5lZCwgbmFtZSkge1xuICAgIHZhciBzcGVjUG9saWN5ID0gUmVhY3RDbGFzc0ludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShuYW1lKVxuICAgICAgPyBSZWFjdENsYXNzSW50ZXJmYWNlW25hbWVdXG4gICAgICA6IG51bGw7XG5cbiAgICAvLyBEaXNhbGxvdyBvdmVycmlkaW5nIG9mIGJhc2UgY2xhc3MgbWV0aG9kcyB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2VkLlxuICAgIGlmIChSZWFjdENsYXNzTWl4aW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgIHNwZWNQb2xpY3kgPT09ICdPVkVSUklERV9CQVNFJyxcbiAgICAgICAgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBvdmVycmlkZSAnICtcbiAgICAgICAgICAnYCVzYCBmcm9tIHlvdXIgY2xhc3Mgc3BlY2lmaWNhdGlvbi4gRW5zdXJlIHRoYXQgeW91ciBtZXRob2QgbmFtZXMgJyArXG4gICAgICAgICAgJ2RvIG5vdCBvdmVybGFwIHdpdGggUmVhY3QgbWV0aG9kcy4nLFxuICAgICAgICBuYW1lXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIERpc2FsbG93IGRlZmluaW5nIG1ldGhvZHMgbW9yZSB0aGFuIG9uY2UgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC5cbiAgICBpZiAoaXNBbHJlYWR5RGVmaW5lZCkge1xuICAgICAgX2ludmFyaWFudChcbiAgICAgICAgc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJyB8fCBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJyxcbiAgICAgICAgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgJyArXG4gICAgICAgICAgJ2Alc2Agb24geW91ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5IGJlIGR1ZSAnICtcbiAgICAgICAgICAndG8gYSBtaXhpbi4nLFxuICAgICAgICBuYW1lXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNaXhpbiBoZWxwZXIgd2hpY2ggaGFuZGxlcyBwb2xpY3kgdmFsaWRhdGlvbiBhbmQgcmVzZXJ2ZWRcbiAgICogc3BlY2lmaWNhdGlvbiBrZXlzIHdoZW4gYnVpbGRpbmcgUmVhY3QgY2xhc3Nlcy5cbiAgICovXG4gIGZ1bmN0aW9uIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzcGVjKSB7XG4gICAgaWYgKCFzcGVjKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YXIgdHlwZW9mU3BlYyA9IHR5cGVvZiBzcGVjO1xuICAgICAgICB2YXIgaXNNaXhpblZhbGlkID0gdHlwZW9mU3BlYyA9PT0gJ29iamVjdCcgJiYgc3BlYyAhPT0gbnVsbDtcblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICBpc01peGluVmFsaWQsXG4gICAgICAgICAgICBcIiVzOiBZb3UncmUgYXR0ZW1wdGluZyB0byBpbmNsdWRlIGEgbWl4aW4gdGhhdCBpcyBlaXRoZXIgbnVsbCBcIiArXG4gICAgICAgICAgICAgICdvciBub3QgYW4gb2JqZWN0LiBDaGVjayB0aGUgbWl4aW5zIGluY2x1ZGVkIGJ5IHRoZSBjb21wb25lbnQsICcgK1xuICAgICAgICAgICAgICAnYXMgd2VsbCBhcyBhbnkgbWl4aW5zIHRoZXkgaW5jbHVkZSB0aGVtc2VsdmVzLiAnICtcbiAgICAgICAgICAgICAgJ0V4cGVjdGVkIG9iamVjdCBidXQgZ290ICVzLicsXG4gICAgICAgICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDbGFzcycsXG4gICAgICAgICAgICBzcGVjID09PSBudWxsID8gbnVsbCA6IHR5cGVvZlNwZWNcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBfaW52YXJpYW50KFxuICAgICAgdHlwZW9mIHNwZWMgIT09ICdmdW5jdGlvbicsXG4gICAgICBcIlJlYWN0Q2xhc3M6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIFwiICtcbiAgICAgICAgJ3VzZSBhIGNvbXBvbmVudCBjbGFzcyBvciBmdW5jdGlvbiBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhICcgK1xuICAgICAgICAncmVndWxhciBvYmplY3QuJ1xuICAgICk7XG4gICAgX2ludmFyaWFudChcbiAgICAgICFpc1ZhbGlkRWxlbWVudChzcGVjKSxcbiAgICAgIFwiUmVhY3RDbGFzczogWW91J3JlIGF0dGVtcHRpbmcgdG8gXCIgK1xuICAgICAgICAndXNlIGEgY29tcG9uZW50IGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgcmVndWxhciBvYmplY3QuJ1xuICAgICk7XG5cbiAgICB2YXIgcHJvdG8gPSBDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gICAgdmFyIGF1dG9CaW5kUGFpcnMgPSBwcm90by5fX3JlYWN0QXV0b0JpbmRQYWlycztcblxuICAgIC8vIEJ5IGhhbmRsaW5nIG1peGlucyBiZWZvcmUgYW55IG90aGVyIHByb3BlcnRpZXMsIHdlIGVuc3VyZSB0aGUgc2FtZVxuICAgIC8vIGNoYWluaW5nIG9yZGVyIGlzIGFwcGxpZWQgdG8gbWV0aG9kcyB3aXRoIERFRklORV9NQU5ZIHBvbGljeSwgd2hldGhlclxuICAgIC8vIG1peGlucyBhcmUgbGlzdGVkIGJlZm9yZSBvciBhZnRlciB0aGVzZSBtZXRob2RzIGluIHRoZSBzcGVjLlxuICAgIGlmIChzcGVjLmhhc093blByb3BlcnR5KE1JWElOU19LRVkpKSB7XG4gICAgICBSRVNFUlZFRF9TUEVDX0tFWVMubWl4aW5zKENvbnN0cnVjdG9yLCBzcGVjLm1peGlucyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgbmFtZSBpbiBzcGVjKSB7XG4gICAgICBpZiAoIXNwZWMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChuYW1lID09PSBNSVhJTlNfS0VZKSB7XG4gICAgICAgIC8vIFdlIGhhdmUgYWxyZWFkeSBoYW5kbGVkIG1peGlucyBpbiBhIHNwZWNpYWwgY2FzZSBhYm92ZS5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBwcm9wZXJ0eSA9IHNwZWNbbmFtZV07XG4gICAgICB2YXIgaXNBbHJlYWR5RGVmaW5lZCA9IHByb3RvLmhhc093blByb3BlcnR5KG5hbWUpO1xuICAgICAgdmFsaWRhdGVNZXRob2RPdmVycmlkZShpc0FscmVhZHlEZWZpbmVkLCBuYW1lKTtcblxuICAgICAgaWYgKFJFU0VSVkVEX1NQRUNfS0VZUy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBSRVNFUlZFRF9TUEVDX0tFWVNbbmFtZV0oQ29uc3RydWN0b3IsIHByb3BlcnR5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNldHVwIG1ldGhvZHMgb24gcHJvdG90eXBlOlxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIG1lbWJlciBtZXRob2RzIHNob3VsZCBub3QgYmUgYXV0b21hdGljYWxseSBib3VuZDpcbiAgICAgICAgLy8gMS4gRXhwZWN0ZWQgUmVhY3RDbGFzcyBtZXRob2RzIChpbiB0aGUgXCJpbnRlcmZhY2VcIikuXG4gICAgICAgIC8vIDIuIE92ZXJyaWRkZW4gbWV0aG9kcyAodGhhdCB3ZXJlIG1peGVkIGluKS5cbiAgICAgICAgdmFyIGlzUmVhY3RDbGFzc01ldGhvZCA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSk7XG4gICAgICAgIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIHByb3BlcnR5ID09PSAnZnVuY3Rpb24nO1xuICAgICAgICB2YXIgc2hvdWxkQXV0b0JpbmQgPVxuICAgICAgICAgIGlzRnVuY3Rpb24gJiZcbiAgICAgICAgICAhaXNSZWFjdENsYXNzTWV0aG9kICYmXG4gICAgICAgICAgIWlzQWxyZWFkeURlZmluZWQgJiZcbiAgICAgICAgICBzcGVjLmF1dG9iaW5kICE9PSBmYWxzZTtcblxuICAgICAgICBpZiAoc2hvdWxkQXV0b0JpbmQpIHtcbiAgICAgICAgICBhdXRvQmluZFBhaXJzLnB1c2gobmFtZSwgcHJvcGVydHkpO1xuICAgICAgICAgIHByb3RvW25hbWVdID0gcHJvcGVydHk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcbiAgICAgICAgICAgIHZhciBzcGVjUG9saWN5ID0gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXTtcblxuICAgICAgICAgICAgLy8gVGhlc2UgY2FzZXMgc2hvdWxkIGFscmVhZHkgYmUgY2F1Z2h0IGJ5IHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUuXG4gICAgICAgICAgICBfaW52YXJpYW50KFxuICAgICAgICAgICAgICBpc1JlYWN0Q2xhc3NNZXRob2QgJiZcbiAgICAgICAgICAgICAgICAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcgfHxcbiAgICAgICAgICAgICAgICAgIHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScpLFxuICAgICAgICAgICAgICAnUmVhY3RDbGFzczogVW5leHBlY3RlZCBzcGVjIHBvbGljeSAlcyBmb3Iga2V5ICVzICcgK1xuICAgICAgICAgICAgICAgICd3aGVuIG1peGluZyBpbiBjb21wb25lbnQgc3BlY3MuJyxcbiAgICAgICAgICAgICAgc3BlY1BvbGljeSxcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gRm9yIG1ldGhvZHMgd2hpY2ggYXJlIGRlZmluZWQgbW9yZSB0aGFuIG9uY2UsIGNhbGwgdGhlIGV4aXN0aW5nXG4gICAgICAgICAgICAvLyBtZXRob2RzIGJlZm9yZSBjYWxsaW5nIHRoZSBuZXcgcHJvcGVydHksIG1lcmdpbmcgaWYgYXBwcm9wcmlhdGUuXG4gICAgICAgICAgICBpZiAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcpIHtcbiAgICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknKSB7XG4gICAgICAgICAgICAgIHByb3RvW25hbWVdID0gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKHByb3RvW25hbWVdLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb3RvW25hbWVdID0gcHJvcGVydHk7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAvLyBBZGQgdmVyYm9zZSBkaXNwbGF5TmFtZSB0byB0aGUgZnVuY3Rpb24sIHdoaWNoIGhlbHBzIHdoZW4gbG9va2luZ1xuICAgICAgICAgICAgICAvLyBhdCBwcm9maWxpbmcgdG9vbHMuXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcGVydHkgPT09ICdmdW5jdGlvbicgJiYgc3BlYy5kaXNwbGF5TmFtZSkge1xuICAgICAgICAgICAgICAgIHByb3RvW25hbWVdLmRpc3BsYXlOYW1lID0gc3BlYy5kaXNwbGF5TmFtZSArICdfJyArIG5hbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3RhdGljcykge1xuICAgIGlmICghc3RhdGljcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKHZhciBuYW1lIGluIHN0YXRpY3MpIHtcbiAgICAgIHZhciBwcm9wZXJ0eSA9IHN0YXRpY3NbbmFtZV07XG4gICAgICBpZiAoIXN0YXRpY3MuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBpc1Jlc2VydmVkID0gbmFtZSBpbiBSRVNFUlZFRF9TUEVDX0tFWVM7XG4gICAgICBfaW52YXJpYW50KFxuICAgICAgICAhaXNSZXNlcnZlZCxcbiAgICAgICAgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgYSByZXNlcnZlZCAnICtcbiAgICAgICAgICAncHJvcGVydHksIGAlc2AsIHRoYXQgc2hvdWxkblxcJ3QgYmUgb24gdGhlIFwic3RhdGljc1wiIGtleS4gRGVmaW5lIGl0ICcgK1xuICAgICAgICAgICdhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBpbnN0ZWFkOyBpdCB3aWxsIHN0aWxsIGJlIGFjY2Vzc2libGUgb24gdGhlICcgK1xuICAgICAgICAgICdjb25zdHJ1Y3Rvci4nLFxuICAgICAgICBuYW1lXG4gICAgICApO1xuXG4gICAgICB2YXIgaXNJbmhlcml0ZWQgPSBuYW1lIGluIENvbnN0cnVjdG9yO1xuICAgICAgX2ludmFyaWFudChcbiAgICAgICAgIWlzSW5oZXJpdGVkLFxuICAgICAgICAnUmVhY3RDbGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSAnICtcbiAgICAgICAgICAnYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUgJyArXG4gICAgICAgICAgJ2R1ZSB0byBhIG1peGluLicsXG4gICAgICAgIG5hbWVcbiAgICAgICk7XG4gICAgICBDb25zdHJ1Y3RvcltuYW1lXSA9IHByb3BlcnR5O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZSB0d28gb2JqZWN0cywgYnV0IHRocm93IGlmIGJvdGggY29udGFpbiB0aGUgc2FtZSBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvbmUgVGhlIGZpcnN0IG9iamVjdCwgd2hpY2ggaXMgbXV0YXRlZC5cbiAgICogQHBhcmFtIHtvYmplY3R9IHR3byBUaGUgc2Vjb25kIG9iamVjdFxuICAgKiBAcmV0dXJuIHtvYmplY3R9IG9uZSBhZnRlciBpdCBoYXMgYmVlbiBtdXRhdGVkIHRvIGNvbnRhaW4gZXZlcnl0aGluZyBpbiB0d28uXG4gICAqL1xuICBmdW5jdGlvbiBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKG9uZSwgdHdvKSB7XG4gICAgX2ludmFyaWFudChcbiAgICAgIG9uZSAmJiB0d28gJiYgdHlwZW9mIG9uZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHR3byA9PT0gJ29iamVjdCcsXG4gICAgICAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiBDYW5ub3QgbWVyZ2Ugbm9uLW9iamVjdHMuJ1xuICAgICk7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gdHdvKSB7XG4gICAgICBpZiAodHdvLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgX2ludmFyaWFudChcbiAgICAgICAgICBvbmVba2V5XSA9PT0gdW5kZWZpbmVkLFxuICAgICAgICAgICdtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6ICcgK1xuICAgICAgICAgICAgJ1RyaWVkIHRvIG1lcmdlIHR3byBvYmplY3RzIHdpdGggdGhlIHNhbWUga2V5OiBgJXNgLiBUaGlzIGNvbmZsaWN0ICcgK1xuICAgICAgICAgICAgJ21heSBiZSBkdWUgdG8gYSBtaXhpbjsgaW4gcGFydGljdWxhciwgdGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHR3byAnICtcbiAgICAgICAgICAgICdnZXRJbml0aWFsU3RhdGUoKSBvciBnZXREZWZhdWx0UHJvcHMoKSBtZXRob2RzIHJldHVybmluZyBvYmplY3RzICcgK1xuICAgICAgICAgICAgJ3dpdGggY2xhc2hpbmcga2V5cy4nLFxuICAgICAgICAgIGtleVxuICAgICAgICApO1xuICAgICAgICBvbmVba2V5XSA9IHR3b1trZXldO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb25lO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdHdvIGZ1bmN0aW9ucyBhbmQgbWVyZ2VzIHRoZWlyIHJldHVybiB2YWx1ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZva2UgZmlyc3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24ob25lLCB0d28pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkUmVzdWx0KCkge1xuICAgICAgdmFyIGEgPSBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIHZhciBiID0gdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICBpZiAoYSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBiO1xuICAgICAgfSBlbHNlIGlmIChiID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9XG4gICAgICB2YXIgYyA9IHt9O1xuICAgICAgbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhjLCBhKTtcbiAgICAgIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYik7XG4gICAgICByZXR1cm4gYztcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdHdvIGZ1bmN0aW9ucyBhbmQgaWdub3JlcyB0aGVpciByZXR1cm4gdmFsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZva2UgZmlyc3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gRnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSB0d28gYXJndW1lbnQgZnVuY3Rpb25zLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKG9uZSwgdHdvKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNoYWluZWRGdW5jdGlvbigpIHtcbiAgICAgIG9uZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgdHdvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyBhIG1ldGhvZCB0byB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZCBNZXRob2QgdG8gYmUgYm91bmQuXG4gICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgYm91bmQgbWV0aG9kLlxuICAgKi9cbiAgZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9kKSB7XG4gICAgdmFyIGJvdW5kTWV0aG9kID0gbWV0aG9kLmJpbmQoY29tcG9uZW50KTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDtcbiAgICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZE1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZEFyZ3VtZW50cyA9IG51bGw7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZTtcbiAgICAgIHZhciBfYmluZCA9IGJvdW5kTWV0aG9kLmJpbmQ7XG4gICAgICBib3VuZE1ldGhvZC5iaW5kID0gZnVuY3Rpb24obmV3VGhpcykge1xuICAgICAgICBmb3IgKFxuICAgICAgICAgIHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksXG4gICAgICAgICAgICBfa2V5ID0gMTtcbiAgICAgICAgICBfa2V5IDwgX2xlbjtcbiAgICAgICAgICBfa2V5KytcbiAgICAgICAgKSB7XG4gICAgICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2VyIGlzIHRyeWluZyB0byBiaW5kKCkgYW4gYXV0b2JvdW5kIG1ldGhvZDsgd2UgZWZmZWN0aXZlbHkgd2lsbFxuICAgICAgICAvLyBpZ25vcmUgdGhlIHZhbHVlIG9mIFwidGhpc1wiIHRoYXQgdGhlIHVzZXIgaXMgdHJ5aW5nIHRvIHVzZSwgc29cbiAgICAgICAgLy8gbGV0J3Mgd2Fybi5cbiAgICAgICAgaWYgKG5ld1RoaXMgIT09IGNvbXBvbmVudCAmJiBuZXdUaGlzICE9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAnYmluZCgpOiBSZWFjdCBjb21wb25lbnQgbWV0aG9kcyBtYXkgb25seSBiZSBib3VuZCB0byB0aGUgJyArXG4gICAgICAgICAgICAgICAgJ2NvbXBvbmVudCBpbnN0YW5jZS4gU2VlICVzJyxcbiAgICAgICAgICAgICAgY29tcG9uZW50TmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAnYmluZCgpOiBZb3UgYXJlIGJpbmRpbmcgYSBjb21wb25lbnQgbWV0aG9kIHRvIHRoZSBjb21wb25lbnQuICcgK1xuICAgICAgICAgICAgICAgICdSZWFjdCBkb2VzIHRoaXMgZm9yIHlvdSBhdXRvbWF0aWNhbGx5IGluIGEgaGlnaC1wZXJmb3JtYW5jZSAnICtcbiAgICAgICAgICAgICAgICAnd2F5LCBzbyB5b3UgY2FuIHNhZmVseSByZW1vdmUgdGhpcyBjYWxsLiBTZWUgJXMnLFxuICAgICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYm91bmRNZXRob2Q7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlYm91bmRNZXRob2QgPSBfYmluZC5hcHBseShib3VuZE1ldGhvZCwgYXJndW1lbnRzKTtcbiAgICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9uZW50O1xuICAgICAgICByZWJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZE1ldGhvZCA9IG1ldGhvZDtcbiAgICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBhcmdzO1xuICAgICAgICByZXR1cm4gcmVib3VuZE1ldGhvZDtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBib3VuZE1ldGhvZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyBhbGwgYXV0by1ib3VuZCBtZXRob2RzIGluIGEgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuXG4gICAqL1xuICBmdW5jdGlvbiBiaW5kQXV0b0JpbmRNZXRob2RzKGNvbXBvbmVudCkge1xuICAgIHZhciBwYWlycyA9IGNvbXBvbmVudC5fX3JlYWN0QXV0b0JpbmRQYWlycztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhaXJzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICB2YXIgYXV0b0JpbmRLZXkgPSBwYWlyc1tpXTtcbiAgICAgIHZhciBtZXRob2QgPSBwYWlyc1tpICsgMV07XG4gICAgICBjb21wb25lbnRbYXV0b0JpbmRLZXldID0gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9kKTtcbiAgICB9XG4gIH1cblxuICB2YXIgSXNNb3VudGVkUHJlTWl4aW4gPSB7XG4gICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5fX2lzTW91bnRlZCA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIHZhciBJc01vdW50ZWRQb3N0TWl4aW4gPSB7XG4gICAgY29tcG9uZW50V2lsbFVubW91bnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5fX2lzTW91bnRlZCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQWRkIG1vcmUgdG8gdGhlIFJlYWN0Q2xhc3MgYmFzZSBjbGFzcy4gVGhlc2UgYXJlIGFsbCBsZWdhY3kgZmVhdHVyZXMgYW5kXG4gICAqIHRoZXJlZm9yZSBub3QgYWxyZWFkeSBwYXJ0IG9mIHRoZSBtb2Rlcm4gUmVhY3RDb21wb25lbnQuXG4gICAqL1xuICB2YXIgUmVhY3RDbGFzc01peGluID0ge1xuICAgIC8qKlxuICAgICAqIFRPRE86IFRoaXMgd2lsbCBiZSBkZXByZWNhdGVkIGJlY2F1c2Ugc3RhdGUgc2hvdWxkIGFsd2F5cyBrZWVwIGEgY29uc2lzdGVudFxuICAgICAqIHR5cGUgc2lnbmF0dXJlIGFuZCB0aGUgb25seSB1c2UgY2FzZSBmb3IgdGhpcywgaXMgdG8gYXZvaWQgdGhhdC5cbiAgICAgKi9cbiAgICByZXBsYWNlU3RhdGU6IGZ1bmN0aW9uKG5ld1N0YXRlLCBjYWxsYmFjaykge1xuICAgICAgdGhpcy51cGRhdGVyLmVucXVldWVSZXBsYWNlU3RhdGUodGhpcywgbmV3U3RhdGUsIGNhbGxiYWNrKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiBAZmluYWxcbiAgICAgKi9cbiAgICBpc01vdW50ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICB0aGlzLl9fZGlkV2FybklzTW91bnRlZCxcbiAgICAgICAgICAnJXM6IGlzTW91bnRlZCBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCBtYWtlIHN1cmUgdG8gY2xlYW4gdXAgJyArXG4gICAgICAgICAgICAnc3Vic2NyaXB0aW9ucyBhbmQgcGVuZGluZyByZXF1ZXN0cyBpbiBjb21wb25lbnRXaWxsVW5tb3VudCB0byAnICtcbiAgICAgICAgICAgICdwcmV2ZW50IG1lbW9yeSBsZWFrcy4nLFxuICAgICAgICAgICh0aGlzLmNvbnN0cnVjdG9yICYmIHRoaXMuY29uc3RydWN0b3IuZGlzcGxheU5hbWUpIHx8XG4gICAgICAgICAgICB0aGlzLm5hbWUgfHxcbiAgICAgICAgICAgICdDb21wb25lbnQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX19kaWRXYXJuSXNNb3VudGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhIXRoaXMuX19pc01vdW50ZWQ7XG4gICAgfVxuICB9O1xuXG4gIHZhciBSZWFjdENsYXNzQ29tcG9uZW50ID0gZnVuY3Rpb24oKSB7fTtcbiAgX2Fzc2lnbihcbiAgICBSZWFjdENsYXNzQ29tcG9uZW50LnByb3RvdHlwZSxcbiAgICBSZWFjdENvbXBvbmVudC5wcm90b3R5cGUsXG4gICAgUmVhY3RDbGFzc01peGluXG4gICk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjb21wb3NpdGUgY29tcG9uZW50IGNsYXNzIGdpdmVuIGEgY2xhc3Mgc3BlY2lmaWNhdGlvbi5cbiAgICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWNsYXNzXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzcGVjIENsYXNzIHNwZWNpZmljYXRpb24gKHdoaWNoIG11c3QgZGVmaW5lIGByZW5kZXJgKS5cbiAgICogQHJldHVybiB7ZnVuY3Rpb259IENvbXBvbmVudCBjb25zdHJ1Y3RvciBmdW5jdGlvbi5cbiAgICogQHB1YmxpY1xuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlQ2xhc3Moc3BlYykge1xuICAgIC8vIFRvIGtlZXAgb3VyIHdhcm5pbmdzIG1vcmUgdW5kZXJzdGFuZGFibGUsIHdlJ2xsIHVzZSBhIGxpdHRsZSBoYWNrIGhlcmUgdG9cbiAgICAvLyBlbnN1cmUgdGhhdCBDb25zdHJ1Y3Rvci5uYW1lICE9PSAnQ29uc3RydWN0b3InLiBUaGlzIG1ha2VzIHN1cmUgd2UgZG9uJ3RcbiAgICAvLyB1bm5lY2Vzc2FyaWx5IGlkZW50aWZ5IGEgY2xhc3Mgd2l0aG91dCBkaXNwbGF5TmFtZSBhcyAnQ29uc3RydWN0b3InLlxuICAgIHZhciBDb25zdHJ1Y3RvciA9IGlkZW50aXR5KGZ1bmN0aW9uKHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGdldHMgb3ZlcnJpZGRlbiBieSBtb2Nrcy4gVGhlIGFyZ3VtZW50IGlzIHVzZWRcbiAgICAgIC8vIGJ5IG1vY2tzIHRvIGFzc2VydCBvbiB3aGF0IGdldHMgbW91bnRlZC5cblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FybmluZyhcbiAgICAgICAgICB0aGlzIGluc3RhbmNlb2YgQ29uc3RydWN0b3IsXG4gICAgICAgICAgJ1NvbWV0aGluZyBpcyBjYWxsaW5nIGEgUmVhY3QgY29tcG9uZW50IGRpcmVjdGx5LiBVc2UgYSBmYWN0b3J5IG9yICcgK1xuICAgICAgICAgICAgJ0pTWCBpbnN0ZWFkLiBTZWU6IGh0dHBzOi8vZmIubWUvcmVhY3QtbGVnYWN5ZmFjdG9yeSdcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gV2lyZSB1cCBhdXRvLWJpbmRpbmdcbiAgICAgIGlmICh0aGlzLl9fcmVhY3RBdXRvQmluZFBhaXJzLmxlbmd0aCkge1xuICAgICAgICBiaW5kQXV0b0JpbmRNZXRob2RzKHRoaXMpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gICAgICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xuXG4gICAgICB0aGlzLnN0YXRlID0gbnVsbDtcblxuICAgICAgLy8gUmVhY3RDbGFzc2VzIGRvZXNuJ3QgaGF2ZSBjb25zdHJ1Y3RvcnMuIEluc3RlYWQsIHRoZXkgdXNlIHRoZVxuICAgICAgLy8gZ2V0SW5pdGlhbFN0YXRlIGFuZCBjb21wb25lbnRXaWxsTW91bnQgbWV0aG9kcyBmb3IgaW5pdGlhbGl6YXRpb24uXG5cbiAgICAgIHZhciBpbml0aWFsU3RhdGUgPSB0aGlzLmdldEluaXRpYWxTdGF0ZSA/IHRoaXMuZ2V0SW5pdGlhbFN0YXRlKCkgOiBudWxsO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgLy8gV2UgYWxsb3cgYXV0by1tb2NrcyB0byBwcm9jZWVkIGFzIGlmIHRoZXkncmUgcmV0dXJuaW5nIG51bGwuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBpbml0aWFsU3RhdGUgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHRoaXMuZ2V0SW5pdGlhbFN0YXRlLl9pc01vY2tGdW5jdGlvblxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBUaGlzIGlzIHByb2JhYmx5IGJhZCBwcmFjdGljZS4gQ29uc2lkZXIgd2FybmluZyBoZXJlIGFuZFxuICAgICAgICAgIC8vIGRlcHJlY2F0aW5nIHRoaXMgY29udmVuaWVuY2UuXG4gICAgICAgICAgaW5pdGlhbFN0YXRlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX2ludmFyaWFudChcbiAgICAgICAgdHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaW5pdGlhbFN0YXRlKSxcbiAgICAgICAgJyVzLmdldEluaXRpYWxTdGF0ZSgpOiBtdXN0IHJldHVybiBhbiBvYmplY3Qgb3IgbnVsbCcsXG4gICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuc3RhdGUgPSBpbml0aWFsU3RhdGU7XG4gICAgfSk7XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gbmV3IFJlYWN0Q2xhc3NDb21wb25lbnQoKTtcbiAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjtcbiAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuX19yZWFjdEF1dG9CaW5kUGFpcnMgPSBbXTtcblxuICAgIGluamVjdGVkTWl4aW5zLmZvckVhY2gobWl4U3BlY0ludG9Db21wb25lbnQuYmluZChudWxsLCBDb25zdHJ1Y3RvcikpO1xuXG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIElzTW91bnRlZFByZU1peGluKTtcbiAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYyk7XG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIElzTW91bnRlZFBvc3RNaXhpbik7XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSBkZWZhdWx0UHJvcHMgcHJvcGVydHkgYWZ0ZXIgYWxsIG1peGlucyBoYXZlIGJlZW4gbWVyZ2VkLlxuICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgIENvbnN0cnVjdG9yLmRlZmF1bHRQcm9wcyA9IENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcygpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyBUaGlzIGlzIGEgdGFnIHRvIGluZGljYXRlIHRoYXQgdGhlIHVzZSBvZiB0aGVzZSBtZXRob2QgbmFtZXMgaXMgb2ssXG4gICAgICAvLyBzaW5jZSBpdCdzIHVzZWQgd2l0aCBjcmVhdGVDbGFzcy4gSWYgaXQncyBub3QsIHRoZW4gaXQncyBsaWtlbHkgYVxuICAgICAgLy8gbWlzdGFrZSBzbyB3ZSdsbCB3YXJuIHlvdSB0byB1c2UgdGhlIHN0YXRpYyBwcm9wZXJ0eSwgcHJvcGVydHlcbiAgICAgIC8vIGluaXRpYWxpemVyIG9yIGNvbnN0cnVjdG9yIHJlc3BlY3RpdmVseS5cbiAgICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RDbGFzc0FwcHJvdmVkID0ge307XG4gICAgICB9XG4gICAgICBpZiAoQ29uc3RydWN0b3IucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZSkge1xuICAgICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuZ2V0SW5pdGlhbFN0YXRlLmlzUmVhY3RDbGFzc0FwcHJvdmVkID0ge307XG4gICAgICB9XG4gICAgfVxuXG4gICAgX2ludmFyaWFudChcbiAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5yZW5kZXIsXG4gICAgICAnY3JlYXRlQ2xhc3MoLi4uKTogQ2xhc3Mgc3BlY2lmaWNhdGlvbiBtdXN0IGltcGxlbWVudCBhIGByZW5kZXJgIG1ldGhvZC4nXG4gICAgKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICAhQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbXBvbmVudFNob3VsZFVwZGF0ZSxcbiAgICAgICAgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArXG4gICAgICAgICAgJ2NvbXBvbmVudFNob3VsZFVwZGF0ZSgpLiBEaWQgeW91IG1lYW4gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk/ICcgK1xuICAgICAgICAgICdUaGUgbmFtZSBpcyBwaHJhc2VkIGFzIGEgcXVlc3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArXG4gICAgICAgICAgJ2V4cGVjdGVkIHRvIHJldHVybiBhIHZhbHVlLicsXG4gICAgICAgIHNwZWMuZGlzcGxheU5hbWUgfHwgJ0EgY29tcG9uZW50J1xuICAgICAgKTtcbiAgICAgIHdhcm5pbmcoXG4gICAgICAgICFDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyxcbiAgICAgICAgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArXG4gICAgICAgICAgJ2NvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMoKS4gRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKT8nLFxuICAgICAgICBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUmVkdWNlIHRpbWUgc3BlbnQgZG9pbmcgbG9va3VwcyBieSBzZXR0aW5nIHRoZXNlIG9uIHRoZSBwcm90b3R5cGUuXG4gICAgZm9yICh2YXIgbWV0aG9kTmFtZSBpbiBSZWFjdENsYXNzSW50ZXJmYWNlKSB7XG4gICAgICBpZiAoIUNvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSkge1xuICAgICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVDbGFzcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NyZWF0ZS1yZWFjdC1jbGFzcy9mYWN0b3J5LmpzXG4vLyBtb2R1bGUgaWQgPSAyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///22\\n\");\n\n/***/ }),\n/* 23 */\n/* no static exports found */\n/* all exports used */\n/*!****************************************!*\\\n !*** ./~/prop-types/checkPropTypes.js ***!\n \\****************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n */\\n\\n\\n\\nif (process.env.NODE_ENV !== 'production') {\\n var invariant = __webpack_require__(/*! fbjs/lib/invariant */ 1);\\n var warning = __webpack_require__(/*! fbjs/lib/warning */ 2);\\n var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ 9);\\n var loggedTypeFailures = {};\\n}\\n\\n/**\\n * Assert that the values match with the type specs.\\n * Error messages are memorized and will only be shown once.\\n *\\n * @param {object} typeSpecs Map of name to a ReactPropType\\n * @param {object} values Runtime values that need to be type-checked\\n * @param {string} location e.g. \\\"prop\\\", \\\"context\\\", \\\"child context\\\"\\n * @param {string} componentName Name of the component for error messages.\\n * @param {?Function} getStack Returns the component stack.\\n * @private\\n */\\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\\n if (process.env.NODE_ENV !== 'production') {\\n for (var typeSpecName in typeSpecs) {\\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\\n var error;\\n // Prop type validation may throw. In case they do, we don't want to\\n // fail the render phase where it didn't fail before. So we log it.\\n // After these have been cleaned up, we'll let them throw.\\n try {\\n // This is intentionally an invariant that gets caught. It's the same\\n // behavior as without this statement except with a better message.\\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\\n } catch (ex) {\\n error = ex;\\n }\\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\\n // Only monitor this failure once because there tends to be a lot of the\\n // same error.\\n loggedTypeFailures[error.message] = true;\\n\\n var stack = getStack ? getStack() : '';\\n\\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\\n }\\n }\\n }\\n }\\n}\\n\\nmodule.exports = checkPropTypes;\\n\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3Byb3AtdHlwZXMvY2hlY2tQcm9wVHlwZXMuanM/ZmQ3NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuICB2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcbiAgdmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcbiAgdmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IHRoZSB2YWx1ZXMgbWF0Y2ggd2l0aCB0aGUgdHlwZSBzcGVjcy5cbiAqIEVycm9yIG1lc3NhZ2VzIGFyZSBtZW1vcml6ZWQgYW5kIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuIFwicHJvcFwiLCBcImNvbnRleHRcIiwgXCJjaGlsZCBjb250ZXh0XCJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb21wb25lbnROYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gKiBAcGFyYW0gez9GdW5jdGlvbn0gZ2V0U3RhY2sgUmV0dXJucyB0aGUgY29tcG9uZW50IHN0YWNrLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBnZXRTdGFjaykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGZvciAodmFyIHR5cGVTcGVjTmFtZSBpbiB0eXBlU3BlY3MpIHtcbiAgICAgIGlmICh0eXBlU3BlY3MuaGFzT3duUHJvcGVydHkodHlwZVNwZWNOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3I7XG4gICAgICAgIC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvXG4gICAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cbiAgICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LlxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxuICAgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgICBpbnZhcmlhbnQodHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdID09PSAnZnVuY3Rpb24nLCAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICsgJ3RoZSBgcHJvcC10eXBlc2AgcGFja2FnZSwgYnV0IHJlY2VpdmVkIGAlc2AuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBsb2NhdGlvbiwgdHlwZVNwZWNOYW1lLCB0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0pO1xuICAgICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IgPSBleDtcbiAgICAgICAgfVxuICAgICAgICB3YXJuaW5nKCFlcnJvciB8fCBlcnJvciBpbnN0YW5jZW9mIEVycm9yLCAnJXM6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAlcyBgJXNgIGlzIGludmFsaWQ7IHRoZSB0eXBlIGNoZWNrZXIgJyArICdmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVycm9yYCBidXQgcmV0dXJuZWQgYSAlcy4gJyArICdZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBhc3MgYW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciAnICsgJ2NyZWF0b3IgKGFycmF5T2YsIGluc3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgJyArICdzaGFwZSBhbGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBsb2NhdGlvbiwgdHlwZVNwZWNOYW1lLCB0eXBlb2YgZXJyb3IpO1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAgIC8vIHNhbWUgZXJyb3IuXG4gICAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtcblxuICAgICAgICAgIHZhciBzdGFjayA9IGdldFN0YWNrID8gZ2V0U3RhY2soKSA6ICcnO1xuXG4gICAgICAgICAgd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCAlcyB0eXBlOiAlcyVzJywgbG9jYXRpb24sIGVycm9yLm1lc3NhZ2UsIHN0YWNrICE9IG51bGwgPyBzdGFjayA6ICcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNoZWNrUHJvcFR5cGVzO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Byb3AtdHlwZXMvY2hlY2tQcm9wVHlwZXMuanNcbi8vIG1vZHVsZSBpZCA9IDIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///23\\n\");\n\n/***/ }),\n/* 24 */\n/* no static exports found */\n/* all exports used */\n/*!*********************************!*\\\n !*** ./~/prop-types/factory.js ***!\n \\*********************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n */\\n\\n\\n\\n// React 15.5 references this module, and assumes PropTypes are still callable in production.\\n// Therefore we re-export development-only version with all the PropTypes checks here.\\n// However if one is migrating to the `prop-types` npm library, they will go through the\\n// `index.js` entry point, and it will branch depending on the environment.\\nvar factory = __webpack_require__(/*! ./factoryWithTypeCheckers */ 13);\\nmodule.exports = function(isValidElement) {\\n // It is still allowed in 15.5.\\n var throwOnDirectAccess = false;\\n return factory(isValidElement, throwOnDirectAccess);\\n};\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3Byb3AtdHlwZXMvZmFjdG9yeS5qcz8wMTNkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vLyBSZWFjdCAxNS41IHJlZmVyZW5jZXMgdGhpcyBtb2R1bGUsIGFuZCBhc3N1bWVzIFByb3BUeXBlcyBhcmUgc3RpbGwgY2FsbGFibGUgaW4gcHJvZHVjdGlvbi5cbi8vIFRoZXJlZm9yZSB3ZSByZS1leHBvcnQgZGV2ZWxvcG1lbnQtb25seSB2ZXJzaW9uIHdpdGggYWxsIHRoZSBQcm9wVHlwZXMgY2hlY2tzIGhlcmUuXG4vLyBIb3dldmVyIGlmIG9uZSBpcyBtaWdyYXRpbmcgdG8gdGhlIGBwcm9wLXR5cGVzYCBucG0gbGlicmFyeSwgdGhleSB3aWxsIGdvIHRocm91Z2ggdGhlXG4vLyBgaW5kZXguanNgIGVudHJ5IHBvaW50LCBhbmQgaXQgd2lsbCBicmFuY2ggZGVwZW5kaW5nIG9uIHRoZSBlbnZpcm9ubWVudC5cbnZhciBmYWN0b3J5ID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpc1ZhbGlkRWxlbWVudCkge1xuICAvLyBJdCBpcyBzdGlsbCBhbGxvd2VkIGluIDE1LjUuXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gZmFsc2U7XG4gIHJldHVybiBmYWN0b3J5KGlzVmFsaWRFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcHJvcC10eXBlcy9mYWN0b3J5LmpzXG4vLyBtb2R1bGUgaWQgPSAyNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///24\\n\");\n\n/***/ }),\n/* 25 */\n/* no static exports found */\n/* all exports used */\n/*!**************************************************!*\\\n !*** ./~/prop-types/factoryWithThrowingShims.js ***!\n \\**************************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n */\\n\\n\\n\\nvar emptyFunction = __webpack_require__(/*! fbjs/lib/emptyFunction */ 6);\\nvar invariant = __webpack_require__(/*! fbjs/lib/invariant */ 1);\\nvar ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ 9);\\n\\nmodule.exports = function() {\\n function shim(props, propName, componentName, location, propFullName, secret) {\\n if (secret === ReactPropTypesSecret) {\\n // It is still safe when called from React.\\n return;\\n }\\n invariant(\\n false,\\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\\n 'Use PropTypes.checkPropTypes() to call them. ' +\\n 'Read more at http://fb.me/use-check-prop-types'\\n );\\n };\\n shim.isRequired = shim;\\n function getShim() {\\n return shim;\\n };\\n // Important!\\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\\n var ReactPropTypes = {\\n array: shim,\\n bool: shim,\\n func: shim,\\n number: shim,\\n object: shim,\\n string: shim,\\n symbol: shim,\\n\\n any: shim,\\n arrayOf: getShim,\\n element: shim,\\n instanceOf: getShim,\\n node: shim,\\n objectOf: getShim,\\n oneOf: getShim,\\n oneOfType: getShim,\\n shape: getShim,\\n exact: getShim\\n };\\n\\n ReactPropTypes.checkPropTypes = emptyFunction;\\n ReactPropTypes.PropTypes = ReactPropTypes;\\n\\n return ReactPropTypes;\\n};\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzPzMzNjgiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGludmFyaWFudChcbiAgICAgIGZhbHNlLFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW1cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyA9IGVtcHR5RnVuY3Rpb247XG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanNcbi8vIG1vZHVsZSBpZCA9IDI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///25\\n\");\n\n/***/ }),\n/* 26 */\n/* no static exports found */\n/* all exports used */\n/*!***************************************!*\\\n !*** ./~/react/lib/KeyEscapeUtils.js ***!\n \\***************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n * \\n */\\n\\n\\n\\n/**\\n * Escape and wrap key so it is safe to use as a reactid\\n *\\n * @param {string} key to be escaped.\\n * @return {string} the escaped key.\\n */\\n\\nfunction escape(key) {\\n var escapeRegex = /[=:]/g;\\n var escaperLookup = {\\n '=': '=0',\\n ':': '=2'\\n };\\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\\n return escaperLookup[match];\\n });\\n\\n return '$' + escapedString;\\n}\\n\\n/**\\n * Unescape and unwrap key for human-readable display\\n *\\n * @param {string} key to unescape.\\n * @return {string} the unescaped key.\\n */\\nfunction unescape(key) {\\n var unescapeRegex = /(=0|=2)/g;\\n var unescaperLookup = {\\n '=0': '=',\\n '=2': ':'\\n };\\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\\n\\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\\n return unescaperLookup[match];\\n });\\n}\\n\\nvar KeyEscapeUtils = {\\n escape: escape,\\n unescape: unescape\\n};\\n\\nmodule.exports = KeyEscapeUtils;//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9LZXlFc2NhcGVVdGlscy5qcz9kNGMyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEVzY2FwZSBhbmQgd3JhcCBrZXkgc28gaXQgaXMgc2FmZSB0byB1c2UgYXMgYSByZWFjdGlkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSB0byBiZSBlc2NhcGVkLlxuICogQHJldHVybiB7c3RyaW5nfSB0aGUgZXNjYXBlZCBrZXkuXG4gKi9cblxuZnVuY3Rpb24gZXNjYXBlKGtleSkge1xuICB2YXIgZXNjYXBlUmVnZXggPSAvWz06XS9nO1xuICB2YXIgZXNjYXBlckxvb2t1cCA9IHtcbiAgICAnPSc6ICc9MCcsXG4gICAgJzonOiAnPTInXG4gIH07XG4gIHZhciBlc2NhcGVkU3RyaW5nID0gKCcnICsga2V5KS5yZXBsYWNlKGVzY2FwZVJlZ2V4LCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICByZXR1cm4gZXNjYXBlckxvb2t1cFttYXRjaF07XG4gIH0pO1xuXG4gIHJldHVybiAnJCcgKyBlc2NhcGVkU3RyaW5nO1xufVxuXG4vKipcbiAqIFVuZXNjYXBlIGFuZCB1bndyYXAga2V5IGZvciBodW1hbi1yZWFkYWJsZSBkaXNwbGF5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSB0byB1bmVzY2FwZS5cbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIHVuZXNjYXBlZCBrZXkuXG4gKi9cbmZ1bmN0aW9uIHVuZXNjYXBlKGtleSkge1xuICB2YXIgdW5lc2NhcGVSZWdleCA9IC8oPTB8PTIpL2c7XG4gIHZhciB1bmVzY2FwZXJMb29rdXAgPSB7XG4gICAgJz0wJzogJz0nLFxuICAgICc9Mic6ICc6J1xuICB9O1xuICB2YXIga2V5U3Vic3RyaW5nID0ga2V5WzBdID09PSAnLicgJiYga2V5WzFdID09PSAnJCcgPyBrZXkuc3Vic3RyaW5nKDIpIDoga2V5LnN1YnN0cmluZygxKTtcblxuICByZXR1cm4gKCcnICsga2V5U3Vic3RyaW5nKS5yZXBsYWNlKHVuZXNjYXBlUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHJldHVybiB1bmVzY2FwZXJMb29rdXBbbWF0Y2hdO1xuICB9KTtcbn1cblxudmFyIEtleUVzY2FwZVV0aWxzID0ge1xuICBlc2NhcGU6IGVzY2FwZSxcbiAgdW5lc2NhcGU6IHVuZXNjYXBlXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEtleUVzY2FwZVV0aWxzO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWFjdC9saWIvS2V5RXNjYXBlVXRpbHMuanNcbi8vIG1vZHVsZSBpZCA9IDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///26\\n\");\n\n/***/ }),\n/* 27 */\n/* no static exports found */\n/* all exports used */\n/*!************************************!*\\\n !*** ./~/react/lib/PooledClass.js ***!\n \\************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n * \\n */\\n\\n\\n\\nvar _prodInvariant = __webpack_require__(/*! ./reactProdInvariant */ 4);\\n\\nvar invariant = __webpack_require__(/*! fbjs/lib/invariant */ 1);\\n\\n/**\\n * Static poolers. Several custom versions for each potential number of\\n * arguments. A completely generic pooler is easy to implement, but would\\n * require accessing the `arguments` object. In each of these, `this` refers to\\n * the Class itself, not an instance. If any others are needed, simply add them\\n * here, or in their own files.\\n */\\nvar oneArgumentPooler = function (copyFieldsFrom) {\\n var Klass = this;\\n if (Klass.instancePool.length) {\\n var instance = Klass.instancePool.pop();\\n Klass.call(instance, copyFieldsFrom);\\n return instance;\\n } else {\\n return new Klass(copyFieldsFrom);\\n }\\n};\\n\\nvar twoArgumentPooler = function (a1, a2) {\\n var Klass = this;\\n if (Klass.instancePool.length) {\\n var instance = Klass.instancePool.pop();\\n Klass.call(instance, a1, a2);\\n return instance;\\n } else {\\n return new Klass(a1, a2);\\n }\\n};\\n\\nvar threeArgumentPooler = function (a1, a2, a3) {\\n var Klass = this;\\n if (Klass.instancePool.length) {\\n var instance = Klass.instancePool.pop();\\n Klass.call(instance, a1, a2, a3);\\n return instance;\\n } else {\\n return new Klass(a1, a2, a3);\\n }\\n};\\n\\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\\n var Klass = this;\\n if (Klass.instancePool.length) {\\n var instance = Klass.instancePool.pop();\\n Klass.call(instance, a1, a2, a3, a4);\\n return instance;\\n } else {\\n return new Klass(a1, a2, a3, a4);\\n }\\n};\\n\\nvar standardReleaser = function (instance) {\\n var Klass = this;\\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\\n instance.destructor();\\n if (Klass.instancePool.length < Klass.poolSize) {\\n Klass.instancePool.push(instance);\\n }\\n};\\n\\nvar DEFAULT_POOL_SIZE = 10;\\nvar DEFAULT_POOLER = oneArgumentPooler;\\n\\n/**\\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\\n * you give this may have a `poolSize` property, and will look for a\\n * prototypical `destructor` on instances.\\n *\\n * @param {Function} CopyConstructor Constructor that can be used to reset.\\n * @param {Function} pooler Customizable pooler.\\n */\\nvar addPoolingTo = function (CopyConstructor, pooler) {\\n // Casting as any so that flow ignores the actual implementation and trusts\\n // it to match the type we declared\\n var NewKlass = CopyConstructor;\\n NewKlass.instancePool = [];\\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\\n if (!NewKlass.poolSize) {\\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\\n }\\n NewKlass.release = standardReleaser;\\n return NewKlass;\\n};\\n\\nvar PooledClass = {\\n addPoolingTo: addPoolingTo,\\n oneArgumentPooler: oneArgumentPooler,\\n twoArgumentPooler: twoArgumentPooler,\\n threeArgumentPooler: threeArgumentPooler,\\n fourArgumentPooler: fourArgumentPooler\\n};\\n\\nmodule.exports = PooledClass;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9Qb29sZWRDbGFzcy5qcz9jMjlhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogU3RhdGljIHBvb2xlcnMuIFNldmVyYWwgY3VzdG9tIHZlcnNpb25zIGZvciBlYWNoIHBvdGVudGlhbCBudW1iZXIgb2ZcbiAqIGFyZ3VtZW50cy4gQSBjb21wbGV0ZWx5IGdlbmVyaWMgcG9vbGVyIGlzIGVhc3kgdG8gaW1wbGVtZW50LCBidXQgd291bGRcbiAqIHJlcXVpcmUgYWNjZXNzaW5nIHRoZSBgYXJndW1lbnRzYCBvYmplY3QuIEluIGVhY2ggb2YgdGhlc2UsIGB0aGlzYCByZWZlcnMgdG9cbiAqIHRoZSBDbGFzcyBpdHNlbGYsIG5vdCBhbiBpbnN0YW5jZS4gSWYgYW55IG90aGVycyBhcmUgbmVlZGVkLCBzaW1wbHkgYWRkIHRoZW1cbiAqIGhlcmUsIG9yIGluIHRoZWlyIG93biBmaWxlcy5cbiAqL1xudmFyIG9uZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGNvcHlGaWVsZHNGcm9tKSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGNvcHlGaWVsZHNGcm9tKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhjb3B5RmllbGRzRnJvbSk7XG4gIH1cbn07XG5cbnZhciB0d29Bcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIpIHtcbiAgdmFyIEtsYXNzID0gdGhpcztcbiAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG4gICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIpO1xuICB9XG59O1xuXG52YXIgdGhyZWVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzKSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMpO1xuICB9XG59O1xuXG52YXIgZm91ckFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMsIGE0KSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMsIGE0KTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEzLCBhNCk7XG4gIH1cbn07XG5cbnZhciBzdGFuZGFyZFJlbGVhc2VyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gICEoaW5zdGFuY2UgaW5zdGFuY2VvZiBLbGFzcykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVHJ5aW5nIHRvIHJlbGVhc2UgYW4gaW5zdGFuY2UgaW50byBhIHBvb2wgb2YgYSBkaWZmZXJlbnQgdHlwZS4nKSA6IF9wcm9kSW52YXJpYW50KCcyNScpIDogdm9pZCAwO1xuICBpbnN0YW5jZS5kZXN0cnVjdG9yKCk7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoIDwgS2xhc3MucG9vbFNpemUpIHtcbiAgICBLbGFzcy5pbnN0YW5jZVBvb2wucHVzaChpbnN0YW5jZSk7XG4gIH1cbn07XG5cbnZhciBERUZBVUxUX1BPT0xfU0laRSA9IDEwO1xudmFyIERFRkFVTFRfUE9PTEVSID0gb25lQXJndW1lbnRQb29sZXI7XG5cbi8qKlxuICogQXVnbWVudHMgYENvcHlDb25zdHJ1Y3RvcmAgdG8gYmUgYSBwb29sYWJsZSBjbGFzcywgYXVnbWVudGluZyBvbmx5IHRoZSBjbGFzc1xuICogaXRzZWxmIChzdGF0aWNhbGx5KSBub3QgYWRkaW5nIGFueSBwcm90b3R5cGljYWwgZmllbGRzLiBBbnkgQ29weUNvbnN0cnVjdG9yXG4gKiB5b3UgZ2l2ZSB0aGlzIG1heSBoYXZlIGEgYHBvb2xTaXplYCBwcm9wZXJ0eSwgYW5kIHdpbGwgbG9vayBmb3IgYVxuICogcHJvdG90eXBpY2FsIGBkZXN0cnVjdG9yYCBvbiBpbnN0YW5jZXMuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gQ29weUNvbnN0cnVjdG9yIENvbnN0cnVjdG9yIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVzZXQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb29sZXIgQ3VzdG9taXphYmxlIHBvb2xlci5cbiAqL1xudmFyIGFkZFBvb2xpbmdUbyA9IGZ1bmN0aW9uIChDb3B5Q29uc3RydWN0b3IsIHBvb2xlcikge1xuICAvLyBDYXN0aW5nIGFzIGFueSBzbyB0aGF0IGZsb3cgaWdub3JlcyB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIGFuZCB0cnVzdHNcbiAgLy8gaXQgdG8gbWF0Y2ggdGhlIHR5cGUgd2UgZGVjbGFyZWRcbiAgdmFyIE5ld0tsYXNzID0gQ29weUNvbnN0cnVjdG9yO1xuICBOZXdLbGFzcy5pbnN0YW5jZVBvb2wgPSBbXTtcbiAgTmV3S2xhc3MuZ2V0UG9vbGVkID0gcG9vbGVyIHx8IERFRkFVTFRfUE9PTEVSO1xuICBpZiAoIU5ld0tsYXNzLnBvb2xTaXplKSB7XG4gICAgTmV3S2xhc3MucG9vbFNpemUgPSBERUZBVUxUX1BPT0xfU0laRTtcbiAgfVxuICBOZXdLbGFzcy5yZWxlYXNlID0gc3RhbmRhcmRSZWxlYXNlcjtcbiAgcmV0dXJuIE5ld0tsYXNzO1xufTtcblxudmFyIFBvb2xlZENsYXNzID0ge1xuICBhZGRQb29saW5nVG86IGFkZFBvb2xpbmdUbyxcbiAgb25lQXJndW1lbnRQb29sZXI6IG9uZUFyZ3VtZW50UG9vbGVyLFxuICB0d29Bcmd1bWVudFBvb2xlcjogdHdvQXJndW1lbnRQb29sZXIsXG4gIHRocmVlQXJndW1lbnRQb29sZXI6IHRocmVlQXJndW1lbnRQb29sZXIsXG4gIGZvdXJBcmd1bWVudFBvb2xlcjogZm91ckFyZ3VtZW50UG9vbGVyXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBvb2xlZENsYXNzO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWFjdC9saWIvUG9vbGVkQ2xhc3MuanNcbi8vIG1vZHVsZSBpZCA9IDI3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///27\\n\");\n\n/***/ }),\n/* 28 */\n/* no static exports found */\n/* all exports used */\n/*!******************************!*\\\n !*** ./~/react/lib/React.js ***!\n \\******************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\nvar _assign = __webpack_require__(/*! object-assign */ 5);\\n\\nvar ReactBaseClasses = __webpack_require__(/*! ./ReactBaseClasses */ 14);\\nvar ReactChildren = __webpack_require__(/*! ./ReactChildren */ 29);\\nvar ReactDOMFactories = __webpack_require__(/*! ./ReactDOMFactories */ 30);\\nvar ReactElement = __webpack_require__(/*! ./ReactElement */ 3);\\nvar ReactPropTypes = __webpack_require__(/*! ./ReactPropTypes */ 32);\\nvar ReactVersion = __webpack_require__(/*! ./ReactVersion */ 34);\\n\\nvar createReactClass = __webpack_require__(/*! ./createClass */ 36);\\nvar onlyChild = __webpack_require__(/*! ./onlyChild */ 37);\\n\\nvar createElement = ReactElement.createElement;\\nvar createFactory = ReactElement.createFactory;\\nvar cloneElement = ReactElement.cloneElement;\\n\\nif (process.env.NODE_ENV !== 'production') {\\n var lowPriorityWarning = __webpack_require__(/*! ./lowPriorityWarning */ 11);\\n var canDefineProperty = __webpack_require__(/*! ./canDefineProperty */ 8);\\n var ReactElementValidator = __webpack_require__(/*! ./ReactElementValidator */ 16);\\n var didWarnPropTypesDeprecated = false;\\n createElement = ReactElementValidator.createElement;\\n createFactory = ReactElementValidator.createFactory;\\n cloneElement = ReactElementValidator.cloneElement;\\n}\\n\\nvar __spread = _assign;\\nvar createMixin = function (mixin) {\\n return mixin;\\n};\\n\\nif (process.env.NODE_ENV !== 'production') {\\n var warnedForSpread = false;\\n var warnedForCreateMixin = false;\\n __spread = function () {\\n lowPriorityWarning(warnedForSpread, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.');\\n warnedForSpread = true;\\n return _assign.apply(null, arguments);\\n };\\n\\n createMixin = function (mixin) {\\n lowPriorityWarning(warnedForCreateMixin, 'React.createMixin is deprecated and should not be used. ' + 'In React v16.0, it will be removed. ' + 'You can use this mixin directly instead. ' + 'See https://fb.me/createmixin-was-never-implemented for more info.');\\n warnedForCreateMixin = true;\\n return mixin;\\n };\\n}\\n\\nvar React = {\\n // Modern\\n\\n Children: {\\n map: ReactChildren.map,\\n forEach: ReactChildren.forEach,\\n count: ReactChildren.count,\\n toArray: ReactChildren.toArray,\\n only: onlyChild\\n },\\n\\n Component: ReactBaseClasses.Component,\\n PureComponent: ReactBaseClasses.PureComponent,\\n\\n createElement: createElement,\\n cloneElement: cloneElement,\\n isValidElement: ReactElement.isValidElement,\\n\\n // Classic\\n\\n PropTypes: ReactPropTypes,\\n createClass: createReactClass,\\n createFactory: createFactory,\\n createMixin: createMixin,\\n\\n // This looks DOM specific but these are actually isomorphic helpers\\n // since they are just generating DOM strings.\\n DOM: ReactDOMFactories,\\n\\n version: ReactVersion,\\n\\n // Deprecated hook for JSX spread, don't use this for anything.\\n __spread: __spread\\n};\\n\\nif (process.env.NODE_ENV !== 'production') {\\n var warnedForCreateClass = false;\\n if (canDefineProperty) {\\n Object.defineProperty(React, 'PropTypes', {\\n get: function () {\\n lowPriorityWarning(didWarnPropTypesDeprecated, 'Accessing PropTypes via the main React package is deprecated,' + ' and will be removed in React v16.0.' + ' Use the latest available v15.* prop-types package from npm instead.' + ' For info on usage, compatibility, migration and more, see ' + 'https://fb.me/prop-types-docs');\\n didWarnPropTypesDeprecated = true;\\n return ReactPropTypes;\\n }\\n });\\n\\n Object.defineProperty(React, 'createClass', {\\n get: function () {\\n lowPriorityWarning(warnedForCreateClass, 'Accessing createClass via the main React package is deprecated,' + ' and will be removed in React v16.0.' + \\\" Use a plain JavaScript class instead. If you're not yet \\\" + 'ready to migrate, create-react-class v15.* is available ' + 'on npm as a temporary, drop-in replacement. ' + 'For more info see https://fb.me/react-create-class');\\n warnedForCreateClass = true;\\n return createReactClass;\\n }\\n });\\n }\\n\\n // React.DOM factories are deprecated. Wrap these methods so that\\n // invocations of the React.DOM namespace and alert users to switch\\n // to the `react-dom-factories` package.\\n React.DOM = {};\\n var warnedForFactories = false;\\n Object.keys(ReactDOMFactories).forEach(function (factory) {\\n React.DOM[factory] = function () {\\n if (!warnedForFactories) {\\n lowPriorityWarning(false, 'Accessing factories like React.DOM.%s has been deprecated ' + 'and will be removed in v16.0+. Use the ' + 'react-dom-factories package instead. ' + ' Version 1.0 provides a drop-in replacement.' + ' For more info, see https://fb.me/react-dom-factories', factory);\\n warnedForFactories = true;\\n }\\n return ReactDOMFactories[factory].apply(ReactDOMFactories, arguments);\\n };\\n });\\n}\\n\\nmodule.exports = React;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdC5qcz8yNGVmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdEJhc2VDbGFzc2VzID0gcmVxdWlyZSgnLi9SZWFjdEJhc2VDbGFzc2VzJyk7XG52YXIgUmVhY3RDaGlsZHJlbiA9IHJlcXVpcmUoJy4vUmVhY3RDaGlsZHJlbicpO1xudmFyIFJlYWN0RE9NRmFjdG9yaWVzID0gcmVxdWlyZSgnLi9SZWFjdERPTUZhY3RvcmllcycpO1xudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG52YXIgUmVhY3RQcm9wVHlwZXMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVzJyk7XG52YXIgUmVhY3RWZXJzaW9uID0gcmVxdWlyZSgnLi9SZWFjdFZlcnNpb24nKTtcblxudmFyIGNyZWF0ZVJlYWN0Q2xhc3MgPSByZXF1aXJlKCcuL2NyZWF0ZUNsYXNzJyk7XG52YXIgb25seUNoaWxkID0gcmVxdWlyZSgnLi9vbmx5Q2hpbGQnKTtcblxudmFyIGNyZWF0ZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVudDtcbnZhciBjcmVhdGVGYWN0b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUZhY3Rvcnk7XG52YXIgY2xvbmVFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudDtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGxvd1ByaW9yaXR5V2FybmluZyA9IHJlcXVpcmUoJy4vbG93UHJpb3JpdHlXYXJuaW5nJyk7XG4gIHZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vY2FuRGVmaW5lUHJvcGVydHknKTtcbiAgdmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50VmFsaWRhdG9yJyk7XG4gIHZhciBkaWRXYXJuUHJvcFR5cGVzRGVwcmVjYXRlZCA9IGZhbHNlO1xuICBjcmVhdGVFbGVtZW50ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUVsZW1lbnQ7XG4gIGNyZWF0ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9yeTtcbiAgY2xvbmVFbGVtZW50ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNsb25lRWxlbWVudDtcbn1cblxudmFyIF9fc3ByZWFkID0gX2Fzc2lnbjtcbnZhciBjcmVhdGVNaXhpbiA9IGZ1bmN0aW9uIChtaXhpbikge1xuICByZXR1cm4gbWl4aW47XG59O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgd2FybmVkRm9yU3ByZWFkID0gZmFsc2U7XG4gIHZhciB3YXJuZWRGb3JDcmVhdGVNaXhpbiA9IGZhbHNlO1xuICBfX3NwcmVhZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBsb3dQcmlvcml0eVdhcm5pbmcod2FybmVkRm9yU3ByZWFkLCAnUmVhY3QuX19zcHJlYWQgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiBVc2UgJyArICdPYmplY3QuYXNzaWduIGRpcmVjdGx5IG9yIGFub3RoZXIgaGVscGVyIGZ1bmN0aW9uIHdpdGggc2ltaWxhciAnICsgJ3NlbWFudGljcy4gWW91IG1heSBiZSBzZWVpbmcgdGhpcyB3YXJuaW5nIGR1ZSB0byB5b3VyIGNvbXBpbGVyLiAnICsgJ1NlZSBodHRwczovL2ZiLm1lL3JlYWN0LXNwcmVhZC1kZXByZWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLicpO1xuICAgIHdhcm5lZEZvclNwcmVhZCA9IHRydWU7XG4gICAgcmV0dXJuIF9hc3NpZ24uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgfTtcblxuICBjcmVhdGVNaXhpbiA9IGZ1bmN0aW9uIChtaXhpbikge1xuICAgIGxvd1ByaW9yaXR5V2FybmluZyh3YXJuZWRGb3JDcmVhdGVNaXhpbiwgJ1JlYWN0LmNyZWF0ZU1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4gJyArICdJbiBSZWFjdCB2MTYuMCwgaXQgd2lsbCBiZSByZW1vdmVkLiAnICsgJ1lvdSBjYW4gdXNlIHRoaXMgbWl4aW4gZGlyZWN0bHkgaW5zdGVhZC4gJyArICdTZWUgaHR0cHM6Ly9mYi5tZS9jcmVhdGVtaXhpbi13YXMtbmV2ZXItaW1wbGVtZW50ZWQgZm9yIG1vcmUgaW5mby4nKTtcbiAgICB3YXJuZWRGb3JDcmVhdGVNaXhpbiA9IHRydWU7XG4gICAgcmV0dXJuIG1peGluO1xuICB9O1xufVxuXG52YXIgUmVhY3QgPSB7XG4gIC8vIE1vZGVyblxuXG4gIENoaWxkcmVuOiB7XG4gICAgbWFwOiBSZWFjdENoaWxkcmVuLm1hcCxcbiAgICBmb3JFYWNoOiBSZWFjdENoaWxkcmVuLmZvckVhY2gsXG4gICAgY291bnQ6IFJlYWN0Q2hpbGRyZW4uY291bnQsXG4gICAgdG9BcnJheTogUmVhY3RDaGlsZHJlbi50b0FycmF5LFxuICAgIG9ubHk6IG9ubHlDaGlsZFxuICB9LFxuXG4gIENvbXBvbmVudDogUmVhY3RCYXNlQ2xhc3Nlcy5Db21wb25lbnQsXG4gIFB1cmVDb21wb25lbnQ6IFJlYWN0QmFzZUNsYXNzZXMuUHVyZUNvbXBvbmVudCxcblxuICBjcmVhdGVFbGVtZW50OiBjcmVhdGVFbGVtZW50LFxuICBjbG9uZUVsZW1lbnQ6IGNsb25lRWxlbWVudCxcbiAgaXNWYWxpZEVsZW1lbnQ6IFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudCxcblxuICAvLyBDbGFzc2ljXG5cbiAgUHJvcFR5cGVzOiBSZWFjdFByb3BUeXBlcyxcbiAgY3JlYXRlQ2xhc3M6IGNyZWF0ZVJlYWN0Q2xhc3MsXG4gIGNyZWF0ZUZhY3Rvcnk6IGNyZWF0ZUZhY3RvcnksXG4gIGNyZWF0ZU1peGluOiBjcmVhdGVNaXhpbixcblxuICAvLyBUaGlzIGxvb2tzIERPTSBzcGVjaWZpYyBidXQgdGhlc2UgYXJlIGFjdHVhbGx5IGlzb21vcnBoaWMgaGVscGVyc1xuICAvLyBzaW5jZSB0aGV5IGFyZSBqdXN0IGdlbmVyYXRpbmcgRE9NIHN0cmluZ3MuXG4gIERPTTogUmVhY3RET01GYWN0b3JpZXMsXG5cbiAgdmVyc2lvbjogUmVhY3RWZXJzaW9uLFxuXG4gIC8vIERlcHJlY2F0ZWQgaG9vayBmb3IgSlNYIHNwcmVhZCwgZG9uJ3QgdXNlIHRoaXMgZm9yIGFueXRoaW5nLlxuICBfX3NwcmVhZDogX19zcHJlYWRcbn07XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciB3YXJuZWRGb3JDcmVhdGVDbGFzcyA9IGZhbHNlO1xuICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3QsICdQcm9wVHlwZXMnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5nKGRpZFdhcm5Qcm9wVHlwZXNEZXByZWNhdGVkLCAnQWNjZXNzaW5nIFByb3BUeXBlcyB2aWEgdGhlIG1haW4gUmVhY3QgcGFja2FnZSBpcyBkZXByZWNhdGVkLCcgKyAnIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gIFJlYWN0IHYxNi4wLicgKyAnIFVzZSB0aGUgbGF0ZXN0IGF2YWlsYWJsZSB2MTUuKiBwcm9wLXR5cGVzIHBhY2thZ2UgZnJvbSBucG0gaW5zdGVhZC4nICsgJyBGb3IgaW5mbyBvbiB1c2FnZSwgY29tcGF0aWJpbGl0eSwgbWlncmF0aW9uIGFuZCBtb3JlLCBzZWUgJyArICdodHRwczovL2ZiLm1lL3Byb3AtdHlwZXMtZG9jcycpO1xuICAgICAgICBkaWRXYXJuUHJvcFR5cGVzRGVwcmVjYXRlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBSZWFjdFByb3BUeXBlcztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFjdCwgJ2NyZWF0ZUNsYXNzJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxvd1ByaW9yaXR5V2FybmluZyh3YXJuZWRGb3JDcmVhdGVDbGFzcywgJ0FjY2Vzc2luZyBjcmVhdGVDbGFzcyB2aWEgdGhlIG1haW4gUmVhY3QgcGFja2FnZSBpcyBkZXByZWNhdGVkLCcgKyAnIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUmVhY3QgdjE2LjAuJyArIFwiIFVzZSBhIHBsYWluIEphdmFTY3JpcHQgY2xhc3MgaW5zdGVhZC4gSWYgeW91J3JlIG5vdCB5ZXQgXCIgKyAncmVhZHkgdG8gbWlncmF0ZSwgY3JlYXRlLXJlYWN0LWNsYXNzIHYxNS4qIGlzIGF2YWlsYWJsZSAnICsgJ29uIG5wbSBhcyBhIHRlbXBvcmFyeSwgZHJvcC1pbiByZXBsYWNlbWVudC4gJyArICdGb3IgbW9yZSBpbmZvIHNlZSBodHRwczovL2ZiLm1lL3JlYWN0LWNyZWF0ZS1jbGFzcycpO1xuICAgICAgICB3YXJuZWRGb3JDcmVhdGVDbGFzcyA9IHRydWU7XG4gICAgICAgIHJldHVybiBjcmVhdGVSZWFjdENsYXNzO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gUmVhY3QuRE9NIGZhY3RvcmllcyBhcmUgZGVwcmVjYXRlZC4gV3JhcCB0aGVzZSBtZXRob2RzIHNvIHRoYXRcbiAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIFJlYWN0LkRPTSBuYW1lc3BhY2UgYW5kIGFsZXJ0IHVzZXJzIHRvIHN3aXRjaFxuICAvLyB0byB0aGUgYHJlYWN0LWRvbS1mYWN0b3JpZXNgIHBhY2thZ2UuXG4gIFJlYWN0LkRPTSA9IHt9O1xuICB2YXIgd2FybmVkRm9yRmFjdG9yaWVzID0gZmFsc2U7XG4gIE9iamVjdC5rZXlzKFJlYWN0RE9NRmFjdG9yaWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChmYWN0b3J5KSB7XG4gICAgUmVhY3QuRE9NW2ZhY3RvcnldID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCF3YXJuZWRGb3JGYWN0b3JpZXMpIHtcbiAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5nKGZhbHNlLCAnQWNjZXNzaW5nIGZhY3RvcmllcyBsaWtlIFJlYWN0LkRPTS4lcyBoYXMgYmVlbiBkZXByZWNhdGVkICcgKyAnYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2MTYuMCsuIFVzZSB0aGUgJyArICdyZWFjdC1kb20tZmFjdG9yaWVzIHBhY2thZ2UgaW5zdGVhZC4gJyArICcgVmVyc2lvbiAxLjAgcHJvdmlkZXMgYSBkcm9wLWluIHJlcGxhY2VtZW50LicgKyAnIEZvciBtb3JlIGluZm8sIHNlZSBodHRwczovL2ZiLm1lL3JlYWN0LWRvbS1mYWN0b3JpZXMnLCBmYWN0b3J5KTtcbiAgICAgICAgd2FybmVkRm9yRmFjdG9yaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBSZWFjdERPTUZhY3Rvcmllc1tmYWN0b3J5XS5hcHBseShSZWFjdERPTUZhY3RvcmllcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdDtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QvbGliL1JlYWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///28\\n\");\n\n/***/ }),\n/* 29 */\n/* no static exports found */\n/* all exports used */\n/*!**************************************!*\\\n !*** ./~/react/lib/ReactChildren.js ***!\n \\**************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\nvar PooledClass = __webpack_require__(/*! ./PooledClass */ 27);\\nvar ReactElement = __webpack_require__(/*! ./ReactElement */ 3);\\n\\nvar emptyFunction = __webpack_require__(/*! fbjs/lib/emptyFunction */ 6);\\nvar traverseAllChildren = __webpack_require__(/*! ./traverseAllChildren */ 38);\\n\\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\\n\\nvar userProvidedKeyEscapeRegex = /\\\\/+/g;\\nfunction escapeUserProvidedKey(text) {\\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\\n}\\n\\n/**\\n * PooledClass representing the bookkeeping associated with performing a child\\n * traversal. Allows avoiding binding callbacks.\\n *\\n * @constructor ForEachBookKeeping\\n * @param {!function} forEachFunction Function to perform traversal with.\\n * @param {?*} forEachContext Context to perform context with.\\n */\\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\\n this.func = forEachFunction;\\n this.context = forEachContext;\\n this.count = 0;\\n}\\nForEachBookKeeping.prototype.destructor = function () {\\n this.func = null;\\n this.context = null;\\n this.count = 0;\\n};\\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\\n\\nfunction forEachSingleChild(bookKeeping, child, name) {\\n var func = bookKeeping.func,\\n context = bookKeeping.context;\\n\\n func.call(context, child, bookKeeping.count++);\\n}\\n\\n/**\\n * Iterates through children that are typically specified as `props.children`.\\n *\\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\\n *\\n * The provided forEachFunc(child, index) will be called for each\\n * leaf child.\\n *\\n * @param {?*} children Children tree container.\\n * @param {function(*, int)} forEachFunc\\n * @param {*} forEachContext Context for forEachContext.\\n */\\nfunction forEachChildren(children, forEachFunc, forEachContext) {\\n if (children == null) {\\n return children;\\n }\\n var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\\n traverseAllChildren(children, forEachSingleChild, traverseContext);\\n ForEachBookKeeping.release(traverseContext);\\n}\\n\\n/**\\n * PooledClass representing the bookkeeping associated with performing a child\\n * mapping. Allows avoiding binding callbacks.\\n *\\n * @constructor MapBookKeeping\\n * @param {!*} mapResult Object containing the ordered map of results.\\n * @param {!function} mapFunction Function to perform mapping with.\\n * @param {?*} mapContext Context to perform mapping with.\\n */\\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\\n this.result = mapResult;\\n this.keyPrefix = keyPrefix;\\n this.func = mapFunction;\\n this.context = mapContext;\\n this.count = 0;\\n}\\nMapBookKeeping.prototype.destructor = function () {\\n this.result = null;\\n this.keyPrefix = null;\\n this.func = null;\\n this.context = null;\\n this.count = 0;\\n};\\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\\n\\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\\n var result = bookKeeping.result,\\n keyPrefix = bookKeeping.keyPrefix,\\n func = bookKeeping.func,\\n context = bookKeeping.context;\\n\\n\\n var mappedChild = func.call(context, child, bookKeeping.count++);\\n if (Array.isArray(mappedChild)) {\\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\\n } else if (mappedChild != null) {\\n if (ReactElement.isValidElement(mappedChild)) {\\n mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\\n // Keep both the (mapped) and old keys if they differ, just as\\n // traverseAllChildren used to do for objects as children\\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\\n }\\n result.push(mappedChild);\\n }\\n}\\n\\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\\n var escapedPrefix = '';\\n if (prefix != null) {\\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\\n }\\n var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\\n MapBookKeeping.release(traverseContext);\\n}\\n\\n/**\\n * Maps children that are typically specified as `props.children`.\\n *\\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\\n *\\n * The provided mapFunction(child, key, index) will be called for each\\n * leaf child.\\n *\\n * @param {?*} children Children tree container.\\n * @param {function(*, int)} func The map function.\\n * @param {*} context Context for mapFunction.\\n * @return {object} Object containing the ordered map of results.\\n */\\nfunction mapChildren(children, func, context) {\\n if (children == null) {\\n return children;\\n }\\n var result = [];\\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\\n return result;\\n}\\n\\nfunction forEachSingleChildDummy(traverseContext, child, name) {\\n return null;\\n}\\n\\n/**\\n * Count the number of children that are typically specified as\\n * `props.children`.\\n *\\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\\n *\\n * @param {?*} children Children tree container.\\n * @return {number} The number of children.\\n */\\nfunction countChildren(children, context) {\\n return traverseAllChildren(children, forEachSingleChildDummy, null);\\n}\\n\\n/**\\n * Flatten a children object (typically specified as `props.children`) and\\n * return an array with appropriately re-keyed children.\\n *\\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\\n */\\nfunction toArray(children) {\\n var result = [];\\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\\n return result;\\n}\\n\\nvar ReactChildren = {\\n forEach: forEachChildren,\\n map: mapChildren,\\n mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\\n count: countChildren,\\n toArray: toArray\\n};\\n\\nmodule.exports = ReactChildren;//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdENoaWxkcmVuLmpzPzRmMDUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcblxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IHJlcXVpcmUoJy4vdHJhdmVyc2VBbGxDaGlsZHJlbicpO1xuXG52YXIgdHdvQXJndW1lbnRQb29sZXIgPSBQb29sZWRDbGFzcy50d29Bcmd1bWVudFBvb2xlcjtcbnZhciBmb3VyQXJndW1lbnRQb29sZXIgPSBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXI7XG5cbnZhciB1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCA9IC9cXC8rL2c7XG5mdW5jdGlvbiBlc2NhcGVVc2VyUHJvdmlkZWRLZXkodGV4dCkge1xuICByZXR1cm4gKCcnICsgdGV4dCkucmVwbGFjZSh1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCwgJyQmLycpO1xufVxuXG4vKipcbiAqIFBvb2xlZENsYXNzIHJlcHJlc2VudGluZyB0aGUgYm9va2tlZXBpbmcgYXNzb2NpYXRlZCB3aXRoIHBlcmZvcm1pbmcgYSBjaGlsZFxuICogdHJhdmVyc2FsLiBBbGxvd3MgYXZvaWRpbmcgYmluZGluZyBjYWxsYmFja3MuXG4gKlxuICogQGNvbnN0cnVjdG9yIEZvckVhY2hCb29rS2VlcGluZ1xuICogQHBhcmFtIHshZnVuY3Rpb259IGZvckVhY2hGdW5jdGlvbiBGdW5jdGlvbiB0byBwZXJmb3JtIHRyYXZlcnNhbCB3aXRoLlxuICogQHBhcmFtIHs/Kn0gZm9yRWFjaENvbnRleHQgQ29udGV4dCB0byBwZXJmb3JtIGNvbnRleHQgd2l0aC5cbiAqL1xuZnVuY3Rpb24gRm9yRWFjaEJvb2tLZWVwaW5nKGZvckVhY2hGdW5jdGlvbiwgZm9yRWFjaENvbnRleHQpIHtcbiAgdGhpcy5mdW5jID0gZm9yRWFjaEZ1bmN0aW9uO1xuICB0aGlzLmNvbnRleHQgPSBmb3JFYWNoQ29udGV4dDtcbiAgdGhpcy5jb3VudCA9IDA7XG59XG5Gb3JFYWNoQm9va0tlZXBpbmcucHJvdG90eXBlLmRlc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuZnVuYyA9IG51bGw7XG4gIHRoaXMuY29udGV4dCA9IG51bGw7XG4gIHRoaXMuY291bnQgPSAwO1xufTtcblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhGb3JFYWNoQm9va0tlZXBpbmcsIHR3b0FyZ3VtZW50UG9vbGVyKTtcblxuZnVuY3Rpb24gZm9yRWFjaFNpbmdsZUNoaWxkKGJvb2tLZWVwaW5nLCBjaGlsZCwgbmFtZSkge1xuICB2YXIgZnVuYyA9IGJvb2tLZWVwaW5nLmZ1bmMsXG4gICAgICBjb250ZXh0ID0gYm9va0tlZXBpbmcuY29udGV4dDtcblxuICBmdW5jLmNhbGwoY29udGV4dCwgY2hpbGQsIGJvb2tLZWVwaW5nLmNvdW50KyspO1xufVxuXG4vKipcbiAqIEl0ZXJhdGVzIHRocm91Z2ggY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLlxuICpcbiAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGlsZHJlbi5mb3JlYWNoXG4gKlxuICogVGhlIHByb3ZpZGVkIGZvckVhY2hGdW5jKGNoaWxkLCBpbmRleCkgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2hcbiAqIGxlYWYgY2hpbGQuXG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCosIGludCl9IGZvckVhY2hGdW5jXG4gKiBAcGFyYW0geyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQgZm9yIGZvckVhY2hDb250ZXh0LlxuICovXG5mdW5jdGlvbiBmb3JFYWNoQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hGdW5jLCBmb3JFYWNoQ29udGV4dCkge1xuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgIHJldHVybiBjaGlsZHJlbjtcbiAgfVxuICB2YXIgdHJhdmVyc2VDb250ZXh0ID0gRm9yRWFjaEJvb2tLZWVwaW5nLmdldFBvb2xlZChmb3JFYWNoRnVuYywgZm9yRWFjaENvbnRleHQpO1xuICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoU2luZ2xlQ2hpbGQsIHRyYXZlcnNlQ29udGV4dCk7XG4gIEZvckVhY2hCb29rS2VlcGluZy5yZWxlYXNlKHRyYXZlcnNlQ29udGV4dCk7XG59XG5cbi8qKlxuICogUG9vbGVkQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBib29ra2VlcGluZyBhc3NvY2lhdGVkIHdpdGggcGVyZm9ybWluZyBhIGNoaWxkXG4gKiBtYXBwaW5nLiBBbGxvd3MgYXZvaWRpbmcgYmluZGluZyBjYWxsYmFja3MuXG4gKlxuICogQGNvbnN0cnVjdG9yIE1hcEJvb2tLZWVwaW5nXG4gKiBAcGFyYW0geyEqfSBtYXBSZXN1bHQgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIG9yZGVyZWQgbWFwIG9mIHJlc3VsdHMuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gbWFwRnVuY3Rpb24gRnVuY3Rpb24gdG8gcGVyZm9ybSBtYXBwaW5nIHdpdGguXG4gKiBAcGFyYW0gez8qfSBtYXBDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBtYXBwaW5nIHdpdGguXG4gKi9cbmZ1bmN0aW9uIE1hcEJvb2tLZWVwaW5nKG1hcFJlc3VsdCwga2V5UHJlZml4LCBtYXBGdW5jdGlvbiwgbWFwQ29udGV4dCkge1xuICB0aGlzLnJlc3VsdCA9IG1hcFJlc3VsdDtcbiAgdGhpcy5rZXlQcmVmaXggPSBrZXlQcmVmaXg7XG4gIHRoaXMuZnVuYyA9IG1hcEZ1bmN0aW9uO1xuICB0aGlzLmNvbnRleHQgPSBtYXBDb250ZXh0O1xuICB0aGlzLmNvdW50ID0gMDtcbn1cbk1hcEJvb2tLZWVwaW5nLnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLnJlc3VsdCA9IG51bGw7XG4gIHRoaXMua2V5UHJlZml4ID0gbnVsbDtcbiAgdGhpcy5mdW5jID0gbnVsbDtcbiAgdGhpcy5jb250ZXh0ID0gbnVsbDtcbiAgdGhpcy5jb3VudCA9IDA7XG59O1xuUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKE1hcEJvb2tLZWVwaW5nLCBmb3VyQXJndW1lbnRQb29sZXIpO1xuXG5mdW5jdGlvbiBtYXBTaW5nbGVDaGlsZEludG9Db250ZXh0KGJvb2tLZWVwaW5nLCBjaGlsZCwgY2hpbGRLZXkpIHtcbiAgdmFyIHJlc3VsdCA9IGJvb2tLZWVwaW5nLnJlc3VsdCxcbiAgICAgIGtleVByZWZpeCA9IGJvb2tLZWVwaW5nLmtleVByZWZpeCxcbiAgICAgIGZ1bmMgPSBib29rS2VlcGluZy5mdW5jLFxuICAgICAgY29udGV4dCA9IGJvb2tLZWVwaW5nLmNvbnRleHQ7XG5cblxuICB2YXIgbWFwcGVkQ2hpbGQgPSBmdW5jLmNhbGwoY29udGV4dCwgY2hpbGQsIGJvb2tLZWVwaW5nLmNvdW50KyspO1xuICBpZiAoQXJyYXkuaXNBcnJheShtYXBwZWRDaGlsZCkpIHtcbiAgICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKG1hcHBlZENoaWxkLCByZXN1bHQsIGNoaWxkS2V5LCBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKG1hcHBlZENoaWxkICE9IG51bGwpIHtcbiAgICBpZiAoUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KG1hcHBlZENoaWxkKSkge1xuICAgICAgbWFwcGVkQ2hpbGQgPSBSZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlS2V5KG1hcHBlZENoaWxkLFxuICAgICAgLy8gS2VlcCBib3RoIHRoZSAobWFwcGVkKSBhbmQgb2xkIGtleXMgaWYgdGhleSBkaWZmZXIsIGp1c3QgYXNcbiAgICAgIC8vIHRyYXZlcnNlQWxsQ2hpbGRyZW4gdXNlZCB0byBkbyBmb3Igb2JqZWN0cyBhcyBjaGlsZHJlblxuICAgICAga2V5UHJlZml4ICsgKG1hcHBlZENoaWxkLmtleSAmJiAoIWNoaWxkIHx8IGNoaWxkLmtleSAhPT0gbWFwcGVkQ2hpbGQua2V5KSA/IGVzY2FwZVVzZXJQcm92aWRlZEtleShtYXBwZWRDaGlsZC5rZXkpICsgJy8nIDogJycpICsgY2hpbGRLZXkpO1xuICAgIH1cbiAgICByZXN1bHQucHVzaChtYXBwZWRDaGlsZCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgYXJyYXksIHByZWZpeCwgZnVuYywgY29udGV4dCkge1xuICB2YXIgZXNjYXBlZFByZWZpeCA9ICcnO1xuICBpZiAocHJlZml4ICE9IG51bGwpIHtcbiAgICBlc2NhcGVkUHJlZml4ID0gZXNjYXBlVXNlclByb3ZpZGVkS2V5KHByZWZpeCkgKyAnLyc7XG4gIH1cbiAgdmFyIHRyYXZlcnNlQ29udGV4dCA9IE1hcEJvb2tLZWVwaW5nLmdldFBvb2xlZChhcnJheSwgZXNjYXBlZFByZWZpeCwgZnVuYywgY29udGV4dCk7XG4gIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIG1hcFNpbmdsZUNoaWxkSW50b0NvbnRleHQsIHRyYXZlcnNlQ29udGV4dCk7XG4gIE1hcEJvb2tLZWVwaW5nLnJlbGVhc2UodHJhdmVyc2VDb250ZXh0KTtcbn1cblxuLyoqXG4gKiBNYXBzIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4ubWFwXG4gKlxuICogVGhlIHByb3ZpZGVkIG1hcEZ1bmN0aW9uKGNoaWxkLCBrZXksIGluZGV4KSB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaFxuICogbGVhZiBjaGlsZC5cbiAqXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cbiAqIEBwYXJhbSB7ZnVuY3Rpb24oKiwgaW50KX0gZnVuYyBUaGUgbWFwIGZ1bmN0aW9uLlxuICogQHBhcmFtIHsqfSBjb250ZXh0IENvbnRleHQgZm9yIG1hcEZ1bmN0aW9uLlxuICogQHJldHVybiB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyB0aGUgb3JkZXJlZCBtYXAgb2YgcmVzdWx0cy5cbiAqL1xuZnVuY3Rpb24gbWFwQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1bmMsIGNvbnRleHQpIHtcbiAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKGNoaWxkcmVuLCByZXN1bHQsIG51bGwsIGZ1bmMsIGNvbnRleHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBmb3JFYWNoU2luZ2xlQ2hpbGREdW1teSh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lKSB7XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIENvdW50IHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhc1xuICogYHByb3BzLmNoaWxkcmVuYC5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4uY291bnRcbiAqXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbi5cbiAqL1xuZnVuY3Rpb24gY291bnRDaGlsZHJlbihjaGlsZHJlbiwgY29udGV4dCkge1xuICByZXR1cm4gdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZm9yRWFjaFNpbmdsZUNoaWxkRHVtbXksIG51bGwpO1xufVxuXG4vKipcbiAqIEZsYXR0ZW4gYSBjaGlsZHJlbiBvYmplY3QgKHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYCkgYW5kXG4gKiByZXR1cm4gYW4gYXJyYXkgd2l0aCBhcHByb3ByaWF0ZWx5IHJlLWtleWVkIGNoaWxkcmVuLlxuICpcbiAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGlsZHJlbi50b2FycmF5XG4gKi9cbmZ1bmN0aW9uIHRvQXJyYXkoY2hpbGRyZW4pIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKGNoaWxkcmVuLCByZXN1bHQsIG51bGwsIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbnZhciBSZWFjdENoaWxkcmVuID0ge1xuICBmb3JFYWNoOiBmb3JFYWNoQ2hpbGRyZW4sXG4gIG1hcDogbWFwQ2hpbGRyZW4sXG4gIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWw6IG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwsXG4gIGNvdW50OiBjb3VudENoaWxkcmVuLFxuICB0b0FycmF5OiB0b0FycmF5XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q2hpbGRyZW47XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0L2xpYi9SZWFjdENoaWxkcmVuLmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///29\\n\");\n\n/***/ }),\n/* 30 */\n/* no static exports found */\n/* all exports used */\n/*!******************************************!*\\\n !*** ./~/react/lib/ReactDOMFactories.js ***!\n \\******************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\nvar ReactElement = __webpack_require__(/*! ./ReactElement */ 3);\\n\\n/**\\n * Create a factory that creates HTML tag elements.\\n *\\n * @private\\n */\\nvar createDOMFactory = ReactElement.createFactory;\\nif (process.env.NODE_ENV !== 'production') {\\n var ReactElementValidator = __webpack_require__(/*! ./ReactElementValidator */ 16);\\n createDOMFactory = ReactElementValidator.createFactory;\\n}\\n\\n/**\\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\\n *\\n * @public\\n */\\nvar ReactDOMFactories = {\\n a: createDOMFactory('a'),\\n abbr: createDOMFactory('abbr'),\\n address: createDOMFactory('address'),\\n area: createDOMFactory('area'),\\n article: createDOMFactory('article'),\\n aside: createDOMFactory('aside'),\\n audio: createDOMFactory('audio'),\\n b: createDOMFactory('b'),\\n base: createDOMFactory('base'),\\n bdi: createDOMFactory('bdi'),\\n bdo: createDOMFactory('bdo'),\\n big: createDOMFactory('big'),\\n blockquote: createDOMFactory('blockquote'),\\n body: createDOMFactory('body'),\\n br: createDOMFactory('br'),\\n button: createDOMFactory('button'),\\n canvas: createDOMFactory('canvas'),\\n caption: createDOMFactory('caption'),\\n cite: createDOMFactory('cite'),\\n code: createDOMFactory('code'),\\n col: createDOMFactory('col'),\\n colgroup: createDOMFactory('colgroup'),\\n data: createDOMFactory('data'),\\n datalist: createDOMFactory('datalist'),\\n dd: createDOMFactory('dd'),\\n del: createDOMFactory('del'),\\n details: createDOMFactory('details'),\\n dfn: createDOMFactory('dfn'),\\n dialog: createDOMFactory('dialog'),\\n div: createDOMFactory('div'),\\n dl: createDOMFactory('dl'),\\n dt: createDOMFactory('dt'),\\n em: createDOMFactory('em'),\\n embed: createDOMFactory('embed'),\\n fieldset: createDOMFactory('fieldset'),\\n figcaption: createDOMFactory('figcaption'),\\n figure: createDOMFactory('figure'),\\n footer: createDOMFactory('footer'),\\n form: createDOMFactory('form'),\\n h1: createDOMFactory('h1'),\\n h2: createDOMFactory('h2'),\\n h3: createDOMFactory('h3'),\\n h4: createDOMFactory('h4'),\\n h5: createDOMFactory('h5'),\\n h6: createDOMFactory('h6'),\\n head: createDOMFactory('head'),\\n header: createDOMFactory('header'),\\n hgroup: createDOMFactory('hgroup'),\\n hr: createDOMFactory('hr'),\\n html: createDOMFactory('html'),\\n i: createDOMFactory('i'),\\n iframe: createDOMFactory('iframe'),\\n img: createDOMFactory('img'),\\n input: createDOMFactory('input'),\\n ins: createDOMFactory('ins'),\\n kbd: createDOMFactory('kbd'),\\n keygen: createDOMFactory('keygen'),\\n label: createDOMFactory('label'),\\n legend: createDOMFactory('legend'),\\n li: createDOMFactory('li'),\\n link: createDOMFactory('link'),\\n main: createDOMFactory('main'),\\n map: createDOMFactory('map'),\\n mark: createDOMFactory('mark'),\\n menu: createDOMFactory('menu'),\\n menuitem: createDOMFactory('menuitem'),\\n meta: createDOMFactory('meta'),\\n meter: createDOMFactory('meter'),\\n nav: createDOMFactory('nav'),\\n noscript: createDOMFactory('noscript'),\\n object: createDOMFactory('object'),\\n ol: createDOMFactory('ol'),\\n optgroup: createDOMFactory('optgroup'),\\n option: createDOMFactory('option'),\\n output: createDOMFactory('output'),\\n p: createDOMFactory('p'),\\n param: createDOMFactory('param'),\\n picture: createDOMFactory('picture'),\\n pre: createDOMFactory('pre'),\\n progress: createDOMFactory('progress'),\\n q: createDOMFactory('q'),\\n rp: createDOMFactory('rp'),\\n rt: createDOMFactory('rt'),\\n ruby: createDOMFactory('ruby'),\\n s: createDOMFactory('s'),\\n samp: createDOMFactory('samp'),\\n script: createDOMFactory('script'),\\n section: createDOMFactory('section'),\\n select: createDOMFactory('select'),\\n small: createDOMFactory('small'),\\n source: createDOMFactory('source'),\\n span: createDOMFactory('span'),\\n strong: createDOMFactory('strong'),\\n style: createDOMFactory('style'),\\n sub: createDOMFactory('sub'),\\n summary: createDOMFactory('summary'),\\n sup: createDOMFactory('sup'),\\n table: createDOMFactory('table'),\\n tbody: createDOMFactory('tbody'),\\n td: createDOMFactory('td'),\\n textarea: createDOMFactory('textarea'),\\n tfoot: createDOMFactory('tfoot'),\\n th: createDOMFactory('th'),\\n thead: createDOMFactory('thead'),\\n time: createDOMFactory('time'),\\n title: createDOMFactory('title'),\\n tr: createDOMFactory('tr'),\\n track: createDOMFactory('track'),\\n u: createDOMFactory('u'),\\n ul: createDOMFactory('ul'),\\n 'var': createDOMFactory('var'),\\n video: createDOMFactory('video'),\\n wbr: createDOMFactory('wbr'),\\n\\n // SVG\\n circle: createDOMFactory('circle'),\\n clipPath: createDOMFactory('clipPath'),\\n defs: createDOMFactory('defs'),\\n ellipse: createDOMFactory('ellipse'),\\n g: createDOMFactory('g'),\\n image: createDOMFactory('image'),\\n line: createDOMFactory('line'),\\n linearGradient: createDOMFactory('linearGradient'),\\n mask: createDOMFactory('mask'),\\n path: createDOMFactory('path'),\\n pattern: createDOMFactory('pattern'),\\n polygon: createDOMFactory('polygon'),\\n polyline: createDOMFactory('polyline'),\\n radialGradient: createDOMFactory('radialGradient'),\\n rect: createDOMFactory('rect'),\\n stop: createDOMFactory('stop'),\\n svg: createDOMFactory('svg'),\\n text: createDOMFactory('text'),\\n tspan: createDOMFactory('tspan')\\n};\\n\\nmodule.exports = ReactDOMFactories;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdERPTUZhY3Rvcmllcy5qcz81YTkyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG5cbi8qKlxuICogQ3JlYXRlIGEgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgSFRNTCB0YWcgZWxlbWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqL1xudmFyIGNyZWF0ZURPTUZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudFZhbGlkYXRvcicpO1xuICBjcmVhdGVET01GYWN0b3J5ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUZhY3Rvcnk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcHBpbmcgZnJvbSBzdXBwb3J0ZWQgSFRNTCB0YWdzIHRvIGBSZWFjdERPTUNvbXBvbmVudGAgY2xhc3Nlcy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbnZhciBSZWFjdERPTUZhY3RvcmllcyA9IHtcbiAgYTogY3JlYXRlRE9NRmFjdG9yeSgnYScpLFxuICBhYmJyOiBjcmVhdGVET01GYWN0b3J5KCdhYmJyJyksXG4gIGFkZHJlc3M6IGNyZWF0ZURPTUZhY3RvcnkoJ2FkZHJlc3MnKSxcbiAgYXJlYTogY3JlYXRlRE9NRmFjdG9yeSgnYXJlYScpLFxuICBhcnRpY2xlOiBjcmVhdGVET01GYWN0b3J5KCdhcnRpY2xlJyksXG4gIGFzaWRlOiBjcmVhdGVET01GYWN0b3J5KCdhc2lkZScpLFxuICBhdWRpbzogY3JlYXRlRE9NRmFjdG9yeSgnYXVkaW8nKSxcbiAgYjogY3JlYXRlRE9NRmFjdG9yeSgnYicpLFxuICBiYXNlOiBjcmVhdGVET01GYWN0b3J5KCdiYXNlJyksXG4gIGJkaTogY3JlYXRlRE9NRmFjdG9yeSgnYmRpJyksXG4gIGJkbzogY3JlYXRlRE9NRmFjdG9yeSgnYmRvJyksXG4gIGJpZzogY3JlYXRlRE9NRmFjdG9yeSgnYmlnJyksXG4gIGJsb2NrcXVvdGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2Jsb2NrcXVvdGUnKSxcbiAgYm9keTogY3JlYXRlRE9NRmFjdG9yeSgnYm9keScpLFxuICBicjogY3JlYXRlRE9NRmFjdG9yeSgnYnInKSxcbiAgYnV0dG9uOiBjcmVhdGVET01GYWN0b3J5KCdidXR0b24nKSxcbiAgY2FudmFzOiBjcmVhdGVET01GYWN0b3J5KCdjYW52YXMnKSxcbiAgY2FwdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnY2FwdGlvbicpLFxuICBjaXRlOiBjcmVhdGVET01GYWN0b3J5KCdjaXRlJyksXG4gIGNvZGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2NvZGUnKSxcbiAgY29sOiBjcmVhdGVET01GYWN0b3J5KCdjb2wnKSxcbiAgY29sZ3JvdXA6IGNyZWF0ZURPTUZhY3RvcnkoJ2NvbGdyb3VwJyksXG4gIGRhdGE6IGNyZWF0ZURPTUZhY3RvcnkoJ2RhdGEnKSxcbiAgZGF0YWxpc3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ2RhdGFsaXN0JyksXG4gIGRkOiBjcmVhdGVET01GYWN0b3J5KCdkZCcpLFxuICBkZWw6IGNyZWF0ZURPTUZhY3RvcnkoJ2RlbCcpLFxuICBkZXRhaWxzOiBjcmVhdGVET01GYWN0b3J5KCdkZXRhaWxzJyksXG4gIGRmbjogY3JlYXRlRE9NRmFjdG9yeSgnZGZuJyksXG4gIGRpYWxvZzogY3JlYXRlRE9NRmFjdG9yeSgnZGlhbG9nJyksXG4gIGRpdjogY3JlYXRlRE9NRmFjdG9yeSgnZGl2JyksXG4gIGRsOiBjcmVhdGVET01GYWN0b3J5KCdkbCcpLFxuICBkdDogY3JlYXRlRE9NRmFjdG9yeSgnZHQnKSxcbiAgZW06IGNyZWF0ZURPTUZhY3RvcnkoJ2VtJyksXG4gIGVtYmVkOiBjcmVhdGVET01GYWN0b3J5KCdlbWJlZCcpLFxuICBmaWVsZHNldDogY3JlYXRlRE9NRmFjdG9yeSgnZmllbGRzZXQnKSxcbiAgZmlnY2FwdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnZmlnY2FwdGlvbicpLFxuICBmaWd1cmU6IGNyZWF0ZURPTUZhY3RvcnkoJ2ZpZ3VyZScpLFxuICBmb290ZXI6IGNyZWF0ZURPTUZhY3RvcnkoJ2Zvb3RlcicpLFxuICBmb3JtOiBjcmVhdGVET01GYWN0b3J5KCdmb3JtJyksXG4gIGgxOiBjcmVhdGVET01GYWN0b3J5KCdoMScpLFxuICBoMjogY3JlYXRlRE9NRmFjdG9yeSgnaDInKSxcbiAgaDM6IGNyZWF0ZURPTUZhY3RvcnkoJ2gzJyksXG4gIGg0OiBjcmVhdGVET01GYWN0b3J5KCdoNCcpLFxuICBoNTogY3JlYXRlRE9NRmFjdG9yeSgnaDUnKSxcbiAgaDY6IGNyZWF0ZURPTUZhY3RvcnkoJ2g2JyksXG4gIGhlYWQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2hlYWQnKSxcbiAgaGVhZGVyOiBjcmVhdGVET01GYWN0b3J5KCdoZWFkZXInKSxcbiAgaGdyb3VwOiBjcmVhdGVET01GYWN0b3J5KCdoZ3JvdXAnKSxcbiAgaHI6IGNyZWF0ZURPTUZhY3RvcnkoJ2hyJyksXG4gIGh0bWw6IGNyZWF0ZURPTUZhY3RvcnkoJ2h0bWwnKSxcbiAgaTogY3JlYXRlRE9NRmFjdG9yeSgnaScpLFxuICBpZnJhbWU6IGNyZWF0ZURPTUZhY3RvcnkoJ2lmcmFtZScpLFxuICBpbWc6IGNyZWF0ZURPTUZhY3RvcnkoJ2ltZycpLFxuICBpbnB1dDogY3JlYXRlRE9NRmFjdG9yeSgnaW5wdXQnKSxcbiAgaW5zOiBjcmVhdGVET01GYWN0b3J5KCdpbnMnKSxcbiAga2JkOiBjcmVhdGVET01GYWN0b3J5KCdrYmQnKSxcbiAga2V5Z2VuOiBjcmVhdGVET01GYWN0b3J5KCdrZXlnZW4nKSxcbiAgbGFiZWw6IGNyZWF0ZURPTUZhY3RvcnkoJ2xhYmVsJyksXG4gIGxlZ2VuZDogY3JlYXRlRE9NRmFjdG9yeSgnbGVnZW5kJyksXG4gIGxpOiBjcmVhdGVET01GYWN0b3J5KCdsaScpLFxuICBsaW5rOiBjcmVhdGVET01GYWN0b3J5KCdsaW5rJyksXG4gIG1haW46IGNyZWF0ZURPTUZhY3RvcnkoJ21haW4nKSxcbiAgbWFwOiBjcmVhdGVET01GYWN0b3J5KCdtYXAnKSxcbiAgbWFyazogY3JlYXRlRE9NRmFjdG9yeSgnbWFyaycpLFxuICBtZW51OiBjcmVhdGVET01GYWN0b3J5KCdtZW51JyksXG4gIG1lbnVpdGVtOiBjcmVhdGVET01GYWN0b3J5KCdtZW51aXRlbScpLFxuICBtZXRhOiBjcmVhdGVET01GYWN0b3J5KCdtZXRhJyksXG4gIG1ldGVyOiBjcmVhdGVET01GYWN0b3J5KCdtZXRlcicpLFxuICBuYXY6IGNyZWF0ZURPTUZhY3RvcnkoJ25hdicpLFxuICBub3NjcmlwdDogY3JlYXRlRE9NRmFjdG9yeSgnbm9zY3JpcHQnKSxcbiAgb2JqZWN0OiBjcmVhdGVET01GYWN0b3J5KCdvYmplY3QnKSxcbiAgb2w6IGNyZWF0ZURPTUZhY3RvcnkoJ29sJyksXG4gIG9wdGdyb3VwOiBjcmVhdGVET01GYWN0b3J5KCdvcHRncm91cCcpLFxuICBvcHRpb246IGNyZWF0ZURPTUZhY3RvcnkoJ29wdGlvbicpLFxuICBvdXRwdXQ6IGNyZWF0ZURPTUZhY3RvcnkoJ291dHB1dCcpLFxuICBwOiBjcmVhdGVET01GYWN0b3J5KCdwJyksXG4gIHBhcmFtOiBjcmVhdGVET01GYWN0b3J5KCdwYXJhbScpLFxuICBwaWN0dXJlOiBjcmVhdGVET01GYWN0b3J5KCdwaWN0dXJlJyksXG4gIHByZTogY3JlYXRlRE9NRmFjdG9yeSgncHJlJyksXG4gIHByb2dyZXNzOiBjcmVhdGVET01GYWN0b3J5KCdwcm9ncmVzcycpLFxuICBxOiBjcmVhdGVET01GYWN0b3J5KCdxJyksXG4gIHJwOiBjcmVhdGVET01GYWN0b3J5KCdycCcpLFxuICBydDogY3JlYXRlRE9NRmFjdG9yeSgncnQnKSxcbiAgcnVieTogY3JlYXRlRE9NRmFjdG9yeSgncnVieScpLFxuICBzOiBjcmVhdGVET01GYWN0b3J5KCdzJyksXG4gIHNhbXA6IGNyZWF0ZURPTUZhY3RvcnkoJ3NhbXAnKSxcbiAgc2NyaXB0OiBjcmVhdGVET01GYWN0b3J5KCdzY3JpcHQnKSxcbiAgc2VjdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnc2VjdGlvbicpLFxuICBzZWxlY3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3NlbGVjdCcpLFxuICBzbWFsbDogY3JlYXRlRE9NRmFjdG9yeSgnc21hbGwnKSxcbiAgc291cmNlOiBjcmVhdGVET01GYWN0b3J5KCdzb3VyY2UnKSxcbiAgc3BhbjogY3JlYXRlRE9NRmFjdG9yeSgnc3BhbicpLFxuICBzdHJvbmc6IGNyZWF0ZURPTUZhY3RvcnkoJ3N0cm9uZycpLFxuICBzdHlsZTogY3JlYXRlRE9NRmFjdG9yeSgnc3R5bGUnKSxcbiAgc3ViOiBjcmVhdGVET01GYWN0b3J5KCdzdWInKSxcbiAgc3VtbWFyeTogY3JlYXRlRE9NRmFjdG9yeSgnc3VtbWFyeScpLFxuICBzdXA6IGNyZWF0ZURPTUZhY3RvcnkoJ3N1cCcpLFxuICB0YWJsZTogY3JlYXRlRE9NRmFjdG9yeSgndGFibGUnKSxcbiAgdGJvZHk6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rib2R5JyksXG4gIHRkOiBjcmVhdGVET01GYWN0b3J5KCd0ZCcpLFxuICB0ZXh0YXJlYTogY3JlYXRlRE9NRmFjdG9yeSgndGV4dGFyZWEnKSxcbiAgdGZvb3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rmb290JyksXG4gIHRoOiBjcmVhdGVET01GYWN0b3J5KCd0aCcpLFxuICB0aGVhZDogY3JlYXRlRE9NRmFjdG9yeSgndGhlYWQnKSxcbiAgdGltZTogY3JlYXRlRE9NRmFjdG9yeSgndGltZScpLFxuICB0aXRsZTogY3JlYXRlRE9NRmFjdG9yeSgndGl0bGUnKSxcbiAgdHI6IGNyZWF0ZURPTUZhY3RvcnkoJ3RyJyksXG4gIHRyYWNrOiBjcmVhdGVET01GYWN0b3J5KCd0cmFjaycpLFxuICB1OiBjcmVhdGVET01GYWN0b3J5KCd1JyksXG4gIHVsOiBjcmVhdGVET01GYWN0b3J5KCd1bCcpLFxuICAndmFyJzogY3JlYXRlRE9NRmFjdG9yeSgndmFyJyksXG4gIHZpZGVvOiBjcmVhdGVET01GYWN0b3J5KCd2aWRlbycpLFxuICB3YnI6IGNyZWF0ZURPTUZhY3RvcnkoJ3dicicpLFxuXG4gIC8vIFNWR1xuICBjaXJjbGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2NpcmNsZScpLFxuICBjbGlwUGF0aDogY3JlYXRlRE9NRmFjdG9yeSgnY2xpcFBhdGgnKSxcbiAgZGVmczogY3JlYXRlRE9NRmFjdG9yeSgnZGVmcycpLFxuICBlbGxpcHNlOiBjcmVhdGVET01GYWN0b3J5KCdlbGxpcHNlJyksXG4gIGc6IGNyZWF0ZURPTUZhY3RvcnkoJ2cnKSxcbiAgaW1hZ2U6IGNyZWF0ZURPTUZhY3RvcnkoJ2ltYWdlJyksXG4gIGxpbmU6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmUnKSxcbiAgbGluZWFyR3JhZGllbnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmVhckdyYWRpZW50JyksXG4gIG1hc2s6IGNyZWF0ZURPTUZhY3RvcnkoJ21hc2snKSxcbiAgcGF0aDogY3JlYXRlRE9NRmFjdG9yeSgncGF0aCcpLFxuICBwYXR0ZXJuOiBjcmVhdGVET01GYWN0b3J5KCdwYXR0ZXJuJyksXG4gIHBvbHlnb246IGNyZWF0ZURPTUZhY3RvcnkoJ3BvbHlnb24nKSxcbiAgcG9seWxpbmU6IGNyZWF0ZURPTUZhY3RvcnkoJ3BvbHlsaW5lJyksXG4gIHJhZGlhbEdyYWRpZW50OiBjcmVhdGVET01GYWN0b3J5KCdyYWRpYWxHcmFkaWVudCcpLFxuICByZWN0OiBjcmVhdGVET01GYWN0b3J5KCdyZWN0JyksXG4gIHN0b3A6IGNyZWF0ZURPTUZhY3RvcnkoJ3N0b3AnKSxcbiAgc3ZnOiBjcmVhdGVET01GYWN0b3J5KCdzdmcnKSxcbiAgdGV4dDogY3JlYXRlRE9NRmFjdG9yeSgndGV4dCcpLFxuICB0c3BhbjogY3JlYXRlRE9NRmFjdG9yeSgndHNwYW4nKVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUZhY3RvcmllcztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QvbGliL1JlYWN0RE9NRmFjdG9yaWVzLmpzXG4vLyBtb2R1bGUgaWQgPSAzMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///30\\n\");\n\n/***/ }),\n/* 31 */\n/* no static exports found */\n/* all exports used */\n/*!***************************************************!*\\\n !*** ./~/react/lib/ReactPropTypeLocationNames.js ***!\n \\***************************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n * \\n */\\n\\n\\n\\nvar ReactPropTypeLocationNames = {};\\n\\nif (process.env.NODE_ENV !== 'production') {\\n ReactPropTypeLocationNames = {\\n prop: 'prop',\\n context: 'context',\\n childContext: 'child context'\\n };\\n}\\n\\nmodule.exports = ReactPropTypeLocationNames;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcy5qcz83ZGQ5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7XG4gICAgcHJvcDogJ3Byb3AnLFxuICAgIGNvbnRleHQ6ICdjb250ZXh0JyxcbiAgICBjaGlsZENvbnRleHQ6ICdjaGlsZCBjb250ZXh0J1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWFjdC9saWIvUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMuanNcbi8vIG1vZHVsZSBpZCA9IDMxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///31\\n\");\n\n/***/ }),\n/* 32 */\n/* no static exports found */\n/* all exports used */\n/*!***************************************!*\\\n !*** ./~/react/lib/ReactPropTypes.js ***!\n \\***************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\nvar _require = __webpack_require__(/*! ./ReactElement */ 3),\\n isValidElement = _require.isValidElement;\\n\\nvar factory = __webpack_require__(/*! prop-types/factory */ 24);\\n\\nmodule.exports = factory(isValidElement);//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdFByb3BUeXBlcy5qcz8zYzgzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9yZXF1aXJlID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKSxcbiAgICBpc1ZhbGlkRWxlbWVudCA9IF9yZXF1aXJlLmlzVmFsaWRFbGVtZW50O1xuXG52YXIgZmFjdG9yeSA9IHJlcXVpcmUoJ3Byb3AtdHlwZXMvZmFjdG9yeScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoaXNWYWxpZEVsZW1lbnQpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWFjdC9saWIvUmVhY3RQcm9wVHlwZXMuanNcbi8vIG1vZHVsZSBpZCA9IDMyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///32\\n\");\n\n/***/ }),\n/* 33 */\n/* no static exports found */\n/* all exports used */\n/*!*********************************************!*\\\n !*** ./~/react/lib/ReactPropTypesSecret.js ***!\n \\*********************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n * \\n */\\n\\n\\n\\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\\n\\nmodule.exports = ReactPropTypesSecret;//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcz8zOTExIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWFjdC9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanNcbi8vIG1vZHVsZSBpZCA9IDMzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///33\\n\");\n\n/***/ }),\n/* 34 */\n/* no static exports found */\n/* all exports used */\n/*!*************************************!*\\\n !*** ./~/react/lib/ReactVersion.js ***!\n \\*************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\nmodule.exports = '15.6.2';//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdFZlcnNpb24uanM/YzA4MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gJzE1LjYuMic7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3JlYWN0L2xpYi9SZWFjdFZlcnNpb24uanNcbi8vIG1vZHVsZSBpZCA9IDM0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///34\\n\");\n\n/***/ }),\n/* 35 */\n/* no static exports found */\n/* all exports used */\n/*!*******************************************!*\\\n !*** ./~/react/lib/checkReactTypeSpec.js ***!\n \\*******************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\nvar _prodInvariant = __webpack_require__(/*! ./reactProdInvariant */ 4);\\n\\nvar ReactPropTypeLocationNames = __webpack_require__(/*! ./ReactPropTypeLocationNames */ 31);\\nvar ReactPropTypesSecret = __webpack_require__(/*! ./ReactPropTypesSecret */ 33);\\n\\nvar invariant = __webpack_require__(/*! fbjs/lib/invariant */ 1);\\nvar warning = __webpack_require__(/*! fbjs/lib/warning */ 2);\\n\\nvar ReactComponentTreeHook;\\n\\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\\n // Temporary hack.\\n // Inline requires don't work well with Jest:\\n // https://github.com/facebook/react/issues/7240\\n // Remove the inline requires when we don't need them anymore:\\n // https://github.com/facebook/react/pull/7178\\n ReactComponentTreeHook = __webpack_require__(/*! ./ReactComponentTreeHook */ 10);\\n}\\n\\nvar loggedTypeFailures = {};\\n\\n/**\\n * Assert that the values match with the type specs.\\n * Error messages are memorized and will only be shown once.\\n *\\n * @param {object} typeSpecs Map of name to a ReactPropType\\n * @param {object} values Runtime values that need to be type-checked\\n * @param {string} location e.g. \\\"prop\\\", \\\"context\\\", \\\"child context\\\"\\n * @param {string} componentName Name of the component for error messages.\\n * @param {?object} element The React element that is being type-checked\\n * @param {?number} debugID The React component instance that is being type-checked\\n * @private\\n */\\nfunction checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) {\\n for (var typeSpecName in typeSpecs) {\\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\\n var error;\\n // Prop type validation may throw. In case they do, we don't want to\\n // fail the render phase where it didn't fail before. So we log it.\\n // After these have been cleaned up, we'll let them throw.\\n try {\\n // This is intentionally an invariant that gets caught. It's the same\\n // behavior as without this statement except with a better message.\\n !(typeof typeSpecs[typeSpecName] === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant('84', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : void 0;\\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\\n } catch (ex) {\\n error = ex;\\n }\\n process.env.NODE_ENV !== 'production' ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0;\\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\\n // Only monitor this failure once because there tends to be a lot of the\\n // same error.\\n loggedTypeFailures[error.message] = true;\\n\\n var componentStackInfo = '';\\n\\n if (process.env.NODE_ENV !== 'production') {\\n if (!ReactComponentTreeHook) {\\n ReactComponentTreeHook = __webpack_require__(/*! ./ReactComponentTreeHook */ 10);\\n }\\n if (debugID !== null) {\\n componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID);\\n } else if (element !== null) {\\n componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element);\\n }\\n }\\n\\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0;\\n }\\n }\\n }\\n}\\n\\nmodule.exports = checkReactTypeSpec;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9jaGVja1JlYWN0VHlwZVNwZWMuanM/ZDA4YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMnKTtcbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rO1xuXG5pZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcbiAgLy8gVGVtcG9yYXJ5IGhhY2suXG4gIC8vIElubGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyNDBcbiAgLy8gUmVtb3ZlIHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9yZTpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzE3OFxuICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudFRyZWVIb29rJyk7XG59XG5cbnZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcblxuLyoqXG4gKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWVzIG1hdGNoIHdpdGggdGhlIHR5cGUgc3BlY3MuXG4gKiBFcnJvciBtZXNzYWdlcyBhcmUgbWVtb3JpemVkIGFuZCB3aWxsIG9ubHkgYmUgc2hvd24gb25jZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gdHlwZVNwZWNzIE1hcCBvZiBuYW1lIHRvIGEgUmVhY3RQcm9wVHlwZVxuICogQHBhcmFtIHtvYmplY3R9IHZhbHVlcyBSdW50aW1lIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUgdHlwZS1jaGVja2VkXG4gKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRpb24gZS5nLiBcInByb3BcIiwgXCJjb250ZXh0XCIsIFwiY2hpbGQgY29udGV4dFwiXG4gKiBAcGFyYW0ge3N0cmluZ30gY29tcG9uZW50TmFtZSBOYW1lIG9mIHRoZSBjb21wb25lbnQgZm9yIGVycm9yIG1lc3NhZ2VzLlxuICogQHBhcmFtIHs/b2JqZWN0fSBlbGVtZW50IFRoZSBSZWFjdCBlbGVtZW50IHRoYXQgaXMgYmVpbmcgdHlwZS1jaGVja2VkXG4gKiBAcGFyYW0gez9udW1iZXJ9IGRlYnVnSUQgVGhlIFJlYWN0IGNvbXBvbmVudCBpbnN0YW5jZSB0aGF0IGlzIGJlaW5nIHR5cGUtY2hlY2tlZFxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2hlY2tSZWFjdFR5cGVTcGVjKHR5cGVTcGVjcywgdmFsdWVzLCBsb2NhdGlvbiwgY29tcG9uZW50TmFtZSwgZWxlbWVudCwgZGVidWdJRCkge1xuICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7XG4gICAgaWYgKHR5cGVTcGVjcy5oYXNPd25Qcm9wZXJ0eSh0eXBlU3BlY05hbWUpKSB7XG4gICAgICB2YXIgZXJyb3I7XG4gICAgICAvLyBQcm9wIHR5cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIEluIGNhc2UgdGhleSBkbywgd2UgZG9uJ3Qgd2FudCB0b1xuICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LlxuICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LlxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGFuIGludmFyaWFudCB0aGF0IGdldHMgY2F1Z2h0LiBJdCdzIHRoZSBzYW1lXG4gICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgISh0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gUmVhY3QuUHJvcFR5cGVzLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCB0eXBlU3BlY05hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzg0JywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sIHR5cGVTcGVjTmFtZSkgOiB2b2lkIDA7XG4gICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICBlcnJvciA9IGV4O1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWVycm9yIHx8IGVycm9yIGluc3RhbmNlb2YgRXJyb3IsICclczogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICVzIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciAnICsgJ2Z1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1cm5lZCBhICVzLiAnICsgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVudCB0byB0aGUgdHlwZSBjaGVja2VyICcgKyAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFsbCByZXF1aXJlIGFuIGFyZ3VtZW50KS4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9uXSwgdHlwZVNwZWNOYW1lLCB0eXBlb2YgZXJyb3IpIDogdm9pZCAwO1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHtcbiAgICAgICAgLy8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhlXG4gICAgICAgIC8vIHNhbWUgZXJyb3IuXG4gICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9IHRydWU7XG5cbiAgICAgICAgdmFyIGNvbXBvbmVudFN0YWNrSW5mbyA9ICcnO1xuXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgaWYgKCFSZWFjdENvbXBvbmVudFRyZWVIb29rKSB7XG4gICAgICAgICAgICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudFRyZWVIb29rJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChkZWJ1Z0lEICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb21wb25lbnRTdGFja0luZm8gPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGRlYnVnSUQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29tcG9uZW50U3RhY2tJbmZvID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRDdXJyZW50U3RhY2tBZGRlbmR1bShlbGVtZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCAlcyB0eXBlOiAlcyVzJywgbG9jYXRpb24sIGVycm9yLm1lc3NhZ2UsIGNvbXBvbmVudFN0YWNrSW5mbykgOiB2b2lkIDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2hlY2tSZWFjdFR5cGVTcGVjO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWFjdC9saWIvY2hlY2tSZWFjdFR5cGVTcGVjLmpzXG4vLyBtb2R1bGUgaWQgPSAzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///35\\n\");\n\n/***/ }),\n/* 36 */\n/* no static exports found */\n/* all exports used */\n/*!************************************!*\\\n !*** ./~/react/lib/createClass.js ***!\n \\************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\nvar _require = __webpack_require__(/*! ./ReactBaseClasses */ 14),\\n Component = _require.Component;\\n\\nvar _require2 = __webpack_require__(/*! ./ReactElement */ 3),\\n isValidElement = _require2.isValidElement;\\n\\nvar ReactNoopUpdateQueue = __webpack_require__(/*! ./ReactNoopUpdateQueue */ 17);\\nvar factory = __webpack_require__(/*! create-react-class/factory */ 22);\\n\\nmodule.exports = factory(Component, isValidElement, ReactNoopUpdateQueue);//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9jcmVhdGVDbGFzcy5qcz9iMDc2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9yZXF1aXJlID0gcmVxdWlyZSgnLi9SZWFjdEJhc2VDbGFzc2VzJyksXG4gICAgQ29tcG9uZW50ID0gX3JlcXVpcmUuQ29tcG9uZW50O1xuXG52YXIgX3JlcXVpcmUyID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKSxcbiAgICBpc1ZhbGlkRWxlbWVudCA9IF9yZXF1aXJlMi5pc1ZhbGlkRWxlbWVudDtcblxudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9SZWFjdE5vb3BVcGRhdGVRdWV1ZScpO1xudmFyIGZhY3RvcnkgPSByZXF1aXJlKCdjcmVhdGUtcmVhY3QtY2xhc3MvZmFjdG9yeScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoQ29tcG9uZW50LCBpc1ZhbGlkRWxlbWVudCwgUmVhY3ROb29wVXBkYXRlUXVldWUpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWFjdC9saWIvY3JlYXRlQ2xhc3MuanNcbi8vIG1vZHVsZSBpZCA9IDM2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///36\\n\");\n\n/***/ }),\n/* 37 */\n/* no static exports found */\n/* all exports used */\n/*!**********************************!*\\\n !*** ./~/react/lib/onlyChild.js ***!\n \\**********************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\nvar _prodInvariant = __webpack_require__(/*! ./reactProdInvariant */ 4);\\n\\nvar ReactElement = __webpack_require__(/*! ./ReactElement */ 3);\\n\\nvar invariant = __webpack_require__(/*! fbjs/lib/invariant */ 1);\\n\\n/**\\n * Returns the first child in a collection of children and verifies that there\\n * is only one child in the collection.\\n *\\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\\n *\\n * The current implementation of this function assumes that a single child gets\\n * passed without a wrapper, but the purpose of this helper function is to\\n * abstract away the particular structure of children.\\n *\\n * @param {?object} children Child collection structure.\\n * @return {ReactElement} The first and only `ReactElement` contained in the\\n * structure.\\n */\\nfunction onlyChild(children) {\\n !ReactElement.isValidElement(children) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;\\n return children;\\n}\\n\\nmodule.exports = onlyChild;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9vbmx5Q2hpbGQuanM/MjdlMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGZpcnN0IGNoaWxkIGluIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiBhbmQgdmVyaWZpZXMgdGhhdCB0aGVyZVxuICogaXMgb25seSBvbmUgY2hpbGQgaW4gdGhlIGNvbGxlY3Rpb24uXG4gKlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLm9ubHlcbiAqXG4gKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBhIHNpbmdsZSBjaGlsZCBnZXRzXG4gKiBwYXNzZWQgd2l0aG91dCBhIHdyYXBwZXIsIGJ1dCB0aGUgcHVycG9zZSBvZiB0aGlzIGhlbHBlciBmdW5jdGlvbiBpcyB0b1xuICogYWJzdHJhY3QgYXdheSB0aGUgcGFydGljdWxhciBzdHJ1Y3R1cmUgb2YgY2hpbGRyZW4uXG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBjaGlsZHJlbiBDaGlsZCBjb2xsZWN0aW9uIHN0cnVjdHVyZS5cbiAqIEByZXR1cm4ge1JlYWN0RWxlbWVudH0gVGhlIGZpcnN0IGFuZCBvbmx5IGBSZWFjdEVsZW1lbnRgIGNvbnRhaW5lZCBpbiB0aGVcbiAqIHN0cnVjdHVyZS5cbiAqL1xuZnVuY3Rpb24gb25seUNoaWxkKGNoaWxkcmVuKSB7XG4gICFSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MycpIDogdm9pZCAwO1xuICByZXR1cm4gY2hpbGRyZW47XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb25seUNoaWxkO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9yZWFjdC9saWIvb25seUNoaWxkLmpzXG4vLyBtb2R1bGUgaWQgPSAzN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///37\\n\");\n\n/***/ }),\n/* 38 */\n/* no static exports found */\n/* all exports used */\n/*!********************************************!*\\\n !*** ./~/react/lib/traverseAllChildren.js ***!\n \\********************************************/\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"/* WEBPACK VAR INJECTION */(function(process) {/**\\n * Copyright (c) 2013-present, Facebook, Inc.\\n *\\n * This source code is licensed under the MIT license found in the\\n * LICENSE file in the root directory of this source tree.\\n *\\n */\\n\\n\\n\\nvar _prodInvariant = __webpack_require__(/*! ./reactProdInvariant */ 4);\\n\\nvar ReactCurrentOwner = __webpack_require__(/*! ./ReactCurrentOwner */ 7);\\nvar REACT_ELEMENT_TYPE = __webpack_require__(/*! ./ReactElementSymbol */ 15);\\n\\nvar getIteratorFn = __webpack_require__(/*! ./getIteratorFn */ 18);\\nvar invariant = __webpack_require__(/*! fbjs/lib/invariant */ 1);\\nvar KeyEscapeUtils = __webpack_require__(/*! ./KeyEscapeUtils */ 26);\\nvar warning = __webpack_require__(/*! fbjs/lib/warning */ 2);\\n\\nvar SEPARATOR = '.';\\nvar SUBSEPARATOR = ':';\\n\\n/**\\n * This is inlined from ReactElement since this file is shared between\\n * isomorphic and renderers. We could extract this to a\\n *\\n */\\n\\n/**\\n * TODO: Test that a single child and an array with one item have the same key\\n * pattern.\\n */\\n\\nvar didWarnAboutMaps = false;\\n\\n/**\\n * Generate a key string that identifies a component within a set.\\n *\\n * @param {*} component A component that could contain a manual key.\\n * @param {number} index Index that is used if a manual key is not provided.\\n * @return {string}\\n */\\nfunction getComponentKey(component, index) {\\n // Do some typechecking here since we call this blindly. We want to ensure\\n // that we don't block potential future ES APIs.\\n if (component && typeof component === 'object' && component.key != null) {\\n // Explicit key\\n return KeyEscapeUtils.escape(component.key);\\n }\\n // Implicit key determined by the index in the set\\n return index.toString(36);\\n}\\n\\n/**\\n * @param {?*} children Children tree container.\\n * @param {!string} nameSoFar Name of the key path so far.\\n * @param {!function} callback Callback to invoke with each child found.\\n * @param {?*} traverseContext Used to pass information throughout the traversal\\n * process.\\n * @return {!number} The number of children in this subtree.\\n */\\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\\n var type = typeof children;\\n\\n if (type === 'undefined' || type === 'boolean') {\\n // All of the above are perceived as null.\\n children = null;\\n }\\n\\n if (children === null || type === 'string' || type === 'number' ||\\n // The following is inlined from ReactElement. This means we can optimize\\n // some checks. React Fiber also inlines this logic for similar purposes.\\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\\n callback(traverseContext, children,\\n // If it's the only child, treat the name as if it was wrapped in an array\\n // so that it's consistent if the number of children grows.\\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\\n return 1;\\n }\\n\\n var child;\\n var nextName;\\n var subtreeCount = 0; // Count of children found in the current subtree.\\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\\n\\n if (Array.isArray(children)) {\\n for (var i = 0; i < children.length; i++) {\\n child = children[i];\\n nextName = nextNamePrefix + getComponentKey(child, i);\\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\\n }\\n } else {\\n var iteratorFn = getIteratorFn(children);\\n if (iteratorFn) {\\n var iterator = iteratorFn.call(children);\\n var step;\\n if (iteratorFn !== children.entries) {\\n var ii = 0;\\n while (!(step = iterator.next()).done) {\\n child = step.value;\\n nextName = nextNamePrefix + getComponentKey(child, ii++);\\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\\n }\\n } else {\\n if (process.env.NODE_ENV !== 'production') {\\n var mapsAsChildrenAddendum = '';\\n if (ReactCurrentOwner.current) {\\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\\n if (mapsAsChildrenOwnerName) {\\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\\n }\\n }\\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\\n didWarnAboutMaps = true;\\n }\\n // Iterator will provide entry [k,v] tuples rather than values.\\n while (!(step = iterator.next()).done) {\\n var entry = step.value;\\n if (entry) {\\n child = entry[1];\\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\\n }\\n }\\n }\\n } else if (type === 'object') {\\n var addendum = '';\\n if (process.env.NODE_ENV !== 'production') {\\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\\n if (children._isReactElement) {\\n addendum = \\\" It looks like you're using an element created by a different \\\" + 'version of React. Make sure to use only one copy of React.';\\n }\\n if (ReactCurrentOwner.current) {\\n var name = ReactCurrentOwner.current.getName();\\n if (name) {\\n addendum += ' Check the render method of `' + name + '`.';\\n }\\n }\\n }\\n var childrenString = String(children);\\n true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\\n }\\n }\\n\\n return subtreeCount;\\n}\\n\\n/**\\n * Traverses children that are typically specified as `props.children`, but\\n * might also be specified through attributes:\\n *\\n * - `traverseAllChildren(this.props.children, ...)`\\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\\n *\\n * The `traverseContext` is an optional argument that is passed through the\\n * entire traversal. It can be used to store accumulations or anything else that\\n * the callback might find relevant.\\n *\\n * @param {?*} children Children tree object.\\n * @param {!function} callback To invoke upon traversing each child.\\n * @param {?*} traverseContext Context for traversal.\\n * @return {!number} The number of children in this subtree.\\n */\\nfunction traverseAllChildren(children, callback, traverseContext) {\\n if (children == null) {\\n return 0;\\n }\\n\\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\\n}\\n\\nmodule.exports = traverseAllChildren;\\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../process/browser.js */ 0)))//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi90cmF2ZXJzZUFsbENoaWxkcmVuLmpzPzU2ZGUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRTeW1ib2wnKTtcblxudmFyIGdldEl0ZXJhdG9yRm4gPSByZXF1aXJlKCcuL2dldEl0ZXJhdG9yRm4nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBLZXlFc2NhcGVVdGlscyA9IHJlcXVpcmUoJy4vS2V5RXNjYXBlVXRpbHMnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgU0VQQVJBVE9SID0gJy4nO1xudmFyIFNVQlNFUEFSQVRPUiA9ICc6JztcblxuLyoqXG4gKiBUaGlzIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQgc2luY2UgdGhpcyBmaWxlIGlzIHNoYXJlZCBiZXR3ZWVuXG4gKiBpc29tb3JwaGljIGFuZCByZW5kZXJlcnMuIFdlIGNvdWxkIGV4dHJhY3QgdGhpcyB0byBhXG4gKlxuICovXG5cbi8qKlxuICogVE9ETzogVGVzdCB0aGF0IGEgc2luZ2xlIGNoaWxkIGFuZCBhbiBhcnJheSB3aXRoIG9uZSBpdGVtIGhhdmUgdGhlIHNhbWUga2V5XG4gKiBwYXR0ZXJuLlxuICovXG5cbnZhciBkaWRXYXJuQWJvdXRNYXBzID0gZmFsc2U7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBrZXkgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyBhIGNvbXBvbmVudCB3aXRoaW4gYSBzZXQuXG4gKlxuICogQHBhcmFtIHsqfSBjb21wb25lbnQgQSBjb21wb25lbnQgdGhhdCBjb3VsZCBjb250YWluIGEgbWFudWFsIGtleS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCB0aGF0IGlzIHVzZWQgaWYgYSBtYW51YWwga2V5IGlzIG5vdCBwcm92aWRlZC5cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2V0Q29tcG9uZW50S2V5KGNvbXBvbmVudCwgaW5kZXgpIHtcbiAgLy8gRG8gc29tZSB0eXBlY2hlY2tpbmcgaGVyZSBzaW5jZSB3ZSBjYWxsIHRoaXMgYmxpbmRseS4gV2Ugd2FudCB0byBlbnN1cmVcbiAgLy8gdGhhdCB3ZSBkb24ndCBibG9jayBwb3RlbnRpYWwgZnV0dXJlIEVTIEFQSXMuXG4gIGlmIChjb21wb25lbnQgJiYgdHlwZW9mIGNvbXBvbmVudCA9PT0gJ29iamVjdCcgJiYgY29tcG9uZW50LmtleSAhPSBudWxsKSB7XG4gICAgLy8gRXhwbGljaXQga2V5XG4gICAgcmV0dXJuIEtleUVzY2FwZVV0aWxzLmVzY2FwZShjb21wb25lbnQua2V5KTtcbiAgfVxuICAvLyBJbXBsaWNpdCBrZXkgZGV0ZXJtaW5lZCBieSB0aGUgaW5kZXggaW4gdGhlIHNldFxuICByZXR1cm4gaW5kZXgudG9TdHJpbmcoMzYpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHBhcmFtIHshc3RyaW5nfSBuYW1lU29GYXIgTmFtZSBvZiB0aGUga2V5IHBhdGggc28gZmFyLlxuICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIGVhY2ggY2hpbGQgZm91bmQuXG4gKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgVXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIHRocm91Z2hvdXQgdGhlIHRyYXZlcnNhbFxuICogcHJvY2Vzcy5cbiAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuICovXG5mdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwgbmFtZVNvRmFyLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuO1xuXG4gIGlmICh0eXBlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAvLyBBbGwgb2YgdGhlIGFib3ZlIGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC5cbiAgICBjaGlsZHJlbiA9IG51bGw7XG4gIH1cblxuICBpZiAoY2hpbGRyZW4gPT09IG51bGwgfHwgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZSA9PT0gJ251bWJlcicgfHxcbiAgLy8gVGhlIGZvbGxvd2luZyBpcyBpbmxpbmVkIGZyb20gUmVhY3RFbGVtZW50LiBUaGlzIG1lYW5zIHdlIGNhbiBvcHRpbWl6ZVxuICAvLyBzb21lIGNoZWNrcy4gUmVhY3QgRmliZXIgYWxzbyBpbmxpbmVzIHRoaXMgbG9naWMgZm9yIHNpbWlsYXIgcHVycG9zZXMuXG4gIHR5cGUgPT09ICdvYmplY3QnICYmIGNoaWxkcmVuLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHtcbiAgICBjYWxsYmFjayh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkcmVuLFxuICAgIC8vIElmIGl0J3MgdGhlIG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1lIGFzIGlmIGl0IHdhcyB3cmFwcGVkIGluIGFuIGFycmF5XG4gICAgLy8gc28gdGhhdCBpdCdzIGNvbnNpc3RlbnQgaWYgdGhlIG51bWJlciBvZiBjaGlsZHJlbiBncm93cy5cbiAgICBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJBVE9SICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkcmVuLCAwKSA6IG5hbWVTb0Zhcik7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICB2YXIgY2hpbGQ7XG4gIHZhciBuZXh0TmFtZTtcbiAgdmFyIHN1YnRyZWVDb3VudCA9IDA7IC8vIENvdW50IG9mIGNoaWxkcmVuIGZvdW5kIGluIHRoZSBjdXJyZW50IHN1YnRyZWUuXG4gIHZhciBuZXh0TmFtZVByZWZpeCA9IG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgOiBuYW1lU29GYXIgKyBTVUJTRVBBUkFUT1I7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGkpO1xuICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJlbik7XG4gICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChjaGlsZHJlbik7XG4gICAgICB2YXIgc3RlcDtcbiAgICAgIGlmIChpdGVyYXRvckZuICE9PSBjaGlsZHJlbi5lbnRyaWVzKSB7XG4gICAgICAgIHZhciBpaSA9IDA7XG4gICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICBjaGlsZCA9IHN0ZXAudmFsdWU7XG4gICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaWkrKyk7XG4gICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnJztcbiAgICAgICAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XG4gICAgICAgICAgICBpZiAobWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUpIHtcbiAgICAgICAgICAgICAgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSA9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSArICdgLic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGRpZFdhcm5BYm91dE1hcHMsICdVc2luZyBNYXBzIGFzIGNoaWxkcmVuIGlzIG5vdCB5ZXQgZnVsbHkgc3VwcG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWlnaHQgYmUgcmVtb3ZlZC4gQ29udmVydCBpdCB0byBhICcgKyAnc2VxdWVuY2UgLyBpdGVyYWJsZSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJXMnLCBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtKSA6IHZvaWQgMDtcbiAgICAgICAgICBkaWRXYXJuQWJvdXRNYXBzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7XG4gICAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICBjaGlsZCA9IGVudHJ5WzFdO1xuICAgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIEtleUVzY2FwZVV0aWxzLmVzY2FwZShlbnRyeVswXSkgKyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDApO1xuICAgICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgdmFyIGFkZGVuZHVtID0gJyc7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBhZGRlbmR1bSA9ICcgSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSAnICsgJ2luc3RlYWQgb3Igd3JhcCB0aGUgb2JqZWN0IHVzaW5nIGNyZWF0ZUZyYWdtZW50KG9iamVjdCkgZnJvbSB0aGUgJyArICdSZWFjdCBhZGQtb25zLic7XG4gICAgICAgIGlmIChjaGlsZHJlbi5faXNSZWFjdEVsZW1lbnQpIHtcbiAgICAgICAgICBhZGRlbmR1bSA9IFwiIEl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIGFuIGVsZW1lbnQgY3JlYXRlZCBieSBhIGRpZmZlcmVudCBcIiArICd2ZXJzaW9uIG9mIFJlYWN0LiBNYWtlIHN1cmUgdG8gdXNlIG9ubHkgb25lIGNvcHkgb2YgUmVhY3QuJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgICAgICAgIHZhciBuYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XG4gICAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIGFkZGVuZHVtICs9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBjaGlsZHJlblN0cmluZyA9IFN0cmluZyhjaGlsZHJlbik7XG4gICAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAlcykuJXMnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IF9wcm9kSW52YXJpYW50KCczMScsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogdm9pZCAwO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdWJ0cmVlQ291bnQ7XG59XG5cbi8qKlxuICogVHJhdmVyc2VzIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYCwgYnV0XG4gKiBtaWdodCBhbHNvIGJlIHNwZWNpZmllZCB0aHJvdWdoIGF0dHJpYnV0ZXM6XG4gKlxuICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmNoaWxkcmVuLCAuLi4pYFxuICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmxlZnRQYW5lbENoaWxkcmVuLCAuLi4pYFxuICpcbiAqIFRoZSBgdHJhdmVyc2VDb250ZXh0YCBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCB0aGF0IGlzIHBhc3NlZCB0aHJvdWdoIHRoZVxuICogZW50aXJlIHRyYXZlcnNhbC4gSXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYWNjdW11bGF0aW9ucyBvciBhbnl0aGluZyBlbHNlIHRoYXRcbiAqIHRoZSBjYWxsYmFjayBtaWdodCBmaW5kIHJlbGV2YW50LlxuICpcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgb2JqZWN0LlxuICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIFRvIGludm9rZSB1cG9uIHRyYXZlcnNpbmcgZWFjaCBjaGlsZC5cbiAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IGZvciB0cmF2ZXJzYWwuXG4gKiBAcmV0dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoaXMgc3VidHJlZS5cbiAqL1xuZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCkge1xuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCAnJywgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdHJhdmVyc2VBbGxDaGlsZHJlbjtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcmVhY3QvbGliL3RyYXZlcnNlQWxsQ2hpbGRyZW4uanNcbi8vIG1vZHVsZSBpZCA9IDM4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///38\\n\");\n\n/***/ })\n/******/ ]);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vZGlzdC9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9kaXN0L2luZGV4LmpzP2M4YjkiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiUmVhY3RVdGlsc0J1dHRvblwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJSZWFjdFV0aWxzQnV0dG9uXCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4vKioqKioqLyBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4vKioqKioqLyBcdFx0XHRcdGdldDogZ2V0dGVyXG4vKioqKioqLyBcdFx0XHR9KTtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMjEpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vcHJvY2Vzcy9icm93c2VyLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbmV2YWwoXCIvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XFxuXFxuLy8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHViIGl0XFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXFxuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxcbi8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXFxuXFxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XFxudmFyIGNhY2hlZENsZWFyVGltZW91dDtcXG5cXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcXG59XFxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XFxuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XFxufVxcbihmdW5jdGlvbiAoKSB7XFxuICAgIHRyeSB7XFxuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcXG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xcbiAgICB9XFxuICAgIHRyeSB7XFxuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcXG4gICAgfVxcbn0gKCkpXFxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcXG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcXG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcXG4gICAgfVxcbiAgICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcXG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcXG4gICAgfVxcbiAgICB0cnkge1xcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcXG4gICAgfSBjYXRjaChlKXtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XFxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xcbiAgICAgICAgfSBjYXRjaChlKXtcXG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcblxcbn1cXG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XFxuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXFxuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XFxuICAgIH1cXG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcXG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcXG4gICAgfVxcbiAgICB0cnkge1xcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xcbiAgICB9IGNhdGNoIChlKXtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xcbiAgICAgICAgfSBjYXRjaCAoZSl7XFxuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXFxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuXFxuXFxufVxcbnZhciBxdWV1ZSA9IFtdO1xcbnZhciBkcmFpbmluZyA9IGZhbHNlO1xcbnZhciBjdXJyZW50UXVldWU7XFxudmFyIHF1ZXVlSW5kZXggPSAtMTtcXG5cXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XFxuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xcbiAgICAgICAgcmV0dXJuO1xcbiAgICB9XFxuICAgIGRyYWluaW5nID0gZmFsc2U7XFxuICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XFxuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xcbiAgICB9XFxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcXG4gICAgICAgIGRyYWluUXVldWUoKTtcXG4gICAgfVxcbn1cXG5cXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xcbiAgICBpZiAoZHJhaW5pbmcpIHtcXG4gICAgICAgIHJldHVybjtcXG4gICAgfVxcbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcXG4gICAgZHJhaW5pbmcgPSB0cnVlO1xcblxcbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xcbiAgICB3aGlsZShsZW4pIHtcXG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xcbiAgICAgICAgcXVldWUgPSBbXTtcXG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcXG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XFxuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XFxuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XFxuICAgIH1cXG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcXG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcXG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xcbn1cXG5cXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XFxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcXG4gICAgfVxcbn07XFxuXFxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xcbiAgICB0aGlzLmZ1biA9IGZ1bjtcXG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xcbn1cXG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XFxuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xcbn07XFxucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcXG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xcbnByb2Nlc3MuZW52ID0ge307XFxucHJvY2Vzcy5hcmd2ID0gW107XFxucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXFxucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xcblxcbmZ1bmN0aW9uIG5vb3AoKSB7fVxcblxcbnByb2Nlc3Mub24gPSBub29wO1xcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xcbnByb2Nlc3Mub25jZSA9IG5vb3A7XFxucHJvY2Vzcy5vZmYgPSBub29wO1xcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcXG5wcm9jZXNzLmVtaXQgPSBub29wO1xcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtcXG5wcm9jZXNzLnByZXBlbmRPbmNlTGlzdGVuZXIgPSBub29wO1xcblxcbnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cXG5cXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XFxufTtcXG5cXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XFxuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XFxufTtcXG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xcbi8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaU1DNXFjeUlzSW5OdmRYSmpaWE1pT2xzaWQyVmljR0ZqYXpvdkx5OHVMMzR2Y0hKdlkyVnpjeTlpY205M2MyVnlMbXB6UHpneVpUUWlYU3dpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHk4Z2MyaHBiU0JtYjNJZ2RYTnBibWNnY0hKdlkyVnpjeUJwYmlCaWNtOTNjMlZ5WEc1MllYSWdjSEp2WTJWemN5QTlJRzF2WkhWc1pTNWxlSEJ2Y25SeklEMGdlMzA3WEc1Y2JpOHZJR05oWTJobFpDQm1jbTl0SUhkb1lYUmxkbVZ5SUdkc2IySmhiQ0JwY3lCd2NtVnpaVzUwSUhOdklIUm9ZWFFnZEdWemRDQnlkVzV1WlhKeklIUm9ZWFFnYzNSMVlpQnBkRnh1THk4Z1pHOXVKM1FnWW5KbFlXc2dkR2hwYm1kekxpQWdRblYwSUhkbElHNWxaV1FnZEc4Z2QzSmhjQ0JwZENCcGJpQmhJSFJ5ZVNCallYUmphQ0JwYmlCallYTmxJR2wwSUdselhHNHZMeUIzY21Gd2NHVmtJR2x1SUhOMGNtbGpkQ0J0YjJSbElHTnZaR1VnZDJocFkyZ2daRzlsYzI0bmRDQmtaV1pwYm1VZ1lXNTVJR2RzYjJKaGJITXVJQ0JKZENkeklHbHVjMmxrWlNCaFhHNHZMeUJtZFc1amRHbHZiaUJpWldOaGRYTmxJSFJ5ZVM5allYUmphR1Z6SUdSbGIzQjBhVzFwZW1VZ2FXNGdZMlZ5ZEdGcGJpQmxibWRwYm1WekxseHVYRzUyWVhJZ1kyRmphR1ZrVTJWMFZHbHRaVzkxZER0Y2JuWmhjaUJqWVdOb1pXUkRiR1ZoY2xScGJXVnZkWFE3WEc1Y2JtWjFibU4wYVc5dUlHUmxabUYxYkhSVFpYUlVhVzF2ZFhRb0tTQjdYRzRnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0NkelpYUlVhVzFsYjNWMElHaGhjeUJ1YjNRZ1ltVmxiaUJrWldacGJtVmtKeWs3WEc1OVhHNW1kVzVqZEdsdmJpQmtaV1poZFd4MFEyeGxZWEpVYVcxbGIzVjBJQ2dwSUh0Y2JpQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMk5zWldGeVZHbHRaVzkxZENCb1lYTWdibTkwSUdKbFpXNGdaR1ZtYVc1bFpDY3BPMXh1ZlZ4dUtHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlITmxkRlJwYldWdmRYUWdQVDA5SUNkbWRXNWpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaFkyaGxaRk5sZEZScGJXVnZkWFFnUFNCelpYUlVhVzFsYjNWME8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGamFHVmtVMlYwVkdsdFpXOTFkQ0E5SUdSbFptRjFiSFJUWlhSVWFXMXZkWFE3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5SUdOaGRHTm9JQ2hsS1NCN1hHNGdJQ0FnSUNBZ0lHTmhZMmhsWkZObGRGUnBiV1Z2ZFhRZ1BTQmtaV1poZFd4MFUyVjBWR2x0YjNWME8xeHVJQ0FnSUgxY2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JR05zWldGeVZHbHRaVzkxZENBOVBUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZqYUdWa1EyeGxZWEpVYVcxbGIzVjBJRDBnWTJ4bFlYSlVhVzFsYjNWME8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGamFHVmtRMnhsWVhKVWFXMWxiM1YwSUQwZ1pHVm1ZWFZzZEVOc1pXRnlWR2x0Wlc5MWREdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMGdZMkYwWTJnZ0tHVXBJSHRjYmlBZ0lDQWdJQ0FnWTJGamFHVmtRMnhsWVhKVWFXMWxiM1YwSUQwZ1pHVm1ZWFZzZEVOc1pXRnlWR2x0Wlc5MWREdGNiaUFnSUNCOVhHNTlJQ2dwS1Z4dVpuVnVZM1JwYjI0Z2NuVnVWR2x0Wlc5MWRDaG1kVzRwSUh0Y2JpQWdJQ0JwWmlBb1kyRmphR1ZrVTJWMFZHbHRaVzkxZENBOVBUMGdjMlYwVkdsdFpXOTFkQ2tnZTF4dUlDQWdJQ0FnSUNBdkwyNXZjbTFoYkNCbGJuWnBjbTl0Wlc1MGN5QnBiaUJ6WVc1bElITnBkSFZoZEdsdmJuTmNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlITmxkRlJwYldWdmRYUW9ablZ1TENBd0tUdGNiaUFnSUNCOVhHNGdJQ0FnTHk4Z2FXWWdjMlYwVkdsdFpXOTFkQ0IzWVhOdUozUWdZWFpoYVd4aFlteGxJR0oxZENCM1lYTWdiR0YwZEdWeUlHUmxabWx1WldSY2JpQWdJQ0JwWmlBb0tHTmhZMmhsWkZObGRGUnBiV1Z2ZFhRZ1BUMDlJR1JsWm1GMWJIUlRaWFJVYVcxdmRYUWdmSHdnSVdOaFkyaGxaRk5sZEZScGJXVnZkWFFwSUNZbUlITmxkRlJwYldWdmRYUXBJSHRjYmlBZ0lDQWdJQ0FnWTJGamFHVmtVMlYwVkdsdFpXOTFkQ0E5SUhObGRGUnBiV1Z2ZFhRN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCelpYUlVhVzFsYjNWMEtHWjFiaXdnTUNrN1hHNGdJQ0FnZlZ4dUlDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lDOHZJSGRvWlc0Z2QyaGxiaUJ6YjIxbFltOWtlU0JvWVhNZ2MyTnlaWGRsWkNCM2FYUm9JSE5sZEZScGJXVnZkWFFnWW5WMElHNXZJRWt1UlM0Z2JXRmtaRzVsYzNOY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOaFkyaGxaRk5sZEZScGJXVnZkWFFvWm5WdUxDQXdLVHRjYmlBZ0lDQjlJR05oZEdOb0tHVXBlMXh1SUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1YyaGxiaUIzWlNCaGNtVWdhVzRnU1M1RkxpQmlkWFFnZEdobElITmpjbWx3ZENCb1lYTWdZbVZsYmlCbGRtRnNaV1FnYzI4Z1NTNUZMaUJrYjJWemJpZDBJSFJ5ZFhOMElIUm9aU0JuYkc5aVlXd2diMkpxWldOMElIZG9aVzRnWTJGc2JHVmtJRzV2Y20xaGJHeDVYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWTJGamFHVmtVMlYwVkdsdFpXOTFkQzVqWVd4c0tHNTFiR3dzSUdaMWJpd2dNQ2s3WEc0Z0lDQWdJQ0FnSUgwZ1kyRjBZMmdvWlNsN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCellXMWxJR0Z6SUdGaWIzWmxJR0oxZENCM2FHVnVJR2wwSjNNZ1lTQjJaWEp6YVc5dUlHOW1JRWt1UlM0Z2RHaGhkQ0J0ZFhOMElHaGhkbVVnZEdobElHZHNiMkpoYkNCdlltcGxZM1FnWm05eUlDZDBhR2x6Snl3Z2FHOXdablZzYkhrZ2IzVnlJR052Ym5SbGVIUWdZMjl5Y21WamRDQnZkR2hsY25kcGMyVWdhWFFnZDJsc2JDQjBhSEp2ZHlCaElHZHNiMkpoYkNCbGNuSnZjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOaFkyaGxaRk5sZEZScGJXVnZkWFF1WTJGc2JDaDBhR2x6TENCbWRXNHNJREFwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNWNibjFjYm1aMWJtTjBhVzl1SUhKMWJrTnNaV0Z5VkdsdFpXOTFkQ2h0WVhKclpYSXBJSHRjYmlBZ0lDQnBaaUFvWTJGamFHVmtRMnhsWVhKVWFXMWxiM1YwSUQwOVBTQmpiR1ZoY2xScGJXVnZkWFFwSUh0Y2JpQWdJQ0FnSUNBZ0x5OXViM0p0WVd3Z1pXNTJhWEp2YldWdWRITWdhVzRnYzJGdVpTQnphWFIxWVhScGIyNXpYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmpiR1ZoY2xScGJXVnZkWFFvYldGeWEyVnlLVHRjYmlBZ0lDQjlYRzRnSUNBZ0x5OGdhV1lnWTJ4bFlYSlVhVzFsYjNWMElIZGhjMjRuZENCaGRtRnBiR0ZpYkdVZ1luVjBJSGRoY3lCc1lYUjBaWElnWkdWbWFXNWxaRnh1SUNBZ0lHbG1JQ2dvWTJGamFHVmtRMnhsWVhKVWFXMWxiM1YwSUQwOVBTQmtaV1poZFd4MFEyeGxZWEpVYVcxbGIzVjBJSHg4SUNGallXTm9aV1JEYkdWaGNsUnBiV1Z2ZFhRcElDWW1JR05zWldGeVZHbHRaVzkxZENrZ2UxeHVJQ0FnSUNBZ0lDQmpZV05vWldSRGJHVmhjbFJwYldWdmRYUWdQU0JqYkdWaGNsUnBiV1Z2ZFhRN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCamJHVmhjbFJwYldWdmRYUW9iV0Z5YTJWeUtUdGNiaUFnSUNCOVhHNGdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdMeThnZDJobGJpQjNhR1Z1SUhOdmJXVmliMlI1SUdoaGN5QnpZM0psZDJWa0lIZHBkR2dnYzJWMFZHbHRaVzkxZENCaWRYUWdibThnU1M1RkxpQnRZV1JrYm1WemMxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyRmphR1ZrUTJ4bFlYSlVhVzFsYjNWMEtHMWhjbXRsY2lrN1hHNGdJQ0FnZlNCallYUmphQ0FvWlNsN1hHNGdJQ0FnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJYYUdWdUlIZGxJR0Z5WlNCcGJpQkpMa1V1SUdKMWRDQjBhR1VnYzJOeWFYQjBJR2hoY3lCaVpXVnVJR1YyWVd4bFpDQnpieUJKTGtVdUlHUnZaWE51SjNRZ0lIUnlkWE4wSUhSb1pTQm5iRzlpWVd3Z2IySnFaV04wSUhkb1pXNGdZMkZzYkdWa0lHNXZjbTFoYkd4NVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdZMkZqYUdWa1EyeGxZWEpVYVcxbGIzVjBMbU5oYkd3b2JuVnNiQ3dnYldGeWEyVnlLVHRjYmlBZ0lDQWdJQ0FnZlNCallYUmphQ0FvWlNsN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCellXMWxJR0Z6SUdGaWIzWmxJR0oxZENCM2FHVnVJR2wwSjNNZ1lTQjJaWEp6YVc5dUlHOW1JRWt1UlM0Z2RHaGhkQ0J0ZFhOMElHaGhkbVVnZEdobElHZHNiMkpoYkNCdlltcGxZM1FnWm05eUlDZDBhR2x6Snl3Z2FHOXdablZzYkhrZ2IzVnlJR052Ym5SbGVIUWdZMjl5Y21WamRDQnZkR2hsY25kcGMyVWdhWFFnZDJsc2JDQjBhSEp2ZHlCaElHZHNiMkpoYkNCbGNuSnZjaTVjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJRk52YldVZ2RtVnljMmx2Ym5NZ2IyWWdTUzVGTGlCb1lYWmxJR1JwWm1abGNtVnVkQ0J5ZFd4bGN5Qm1iM0lnWTJ4bFlYSlVhVzFsYjNWMElIWnpJSE5sZEZScGJXVnZkWFJjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCallXTm9aV1JEYkdWaGNsUnBiV1Z2ZFhRdVkyRnNiQ2gwYUdsekxDQnRZWEpyWlhJcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzVjYmx4dWZWeHVkbUZ5SUhGMVpYVmxJRDBnVzEwN1hHNTJZWElnWkhKaGFXNXBibWNnUFNCbVlXeHpaVHRjYm5aaGNpQmpkWEp5Wlc1MFVYVmxkV1U3WEc1MllYSWdjWFZsZFdWSmJtUmxlQ0E5SUMweE8xeHVYRzVtZFc1amRHbHZiaUJqYkdWaGJsVndUbVY0ZEZScFkyc29LU0I3WEc0Z0lDQWdhV1lnS0NGa2NtRnBibWx1WnlCOGZDQWhZM1Z5Y21WdWRGRjFaWFZsS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0I5WEc0Z0lDQWdaSEpoYVc1cGJtY2dQU0JtWVd4elpUdGNiaUFnSUNCcFppQW9ZM1Z5Y21WdWRGRjFaWFZsTG14bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnSUNCeGRXVjFaU0E5SUdOMWNuSmxiblJSZFdWMVpTNWpiMjVqWVhRb2NYVmxkV1VwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSEYxWlhWbFNXNWtaWGdnUFNBdE1UdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIRjFaWFZsTG14bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnSUNCa2NtRnBibEYxWlhWbEtDazdYRzRnSUNBZ2ZWeHVmVnh1WEc1bWRXNWpkR2x2YmlCa2NtRnBibEYxWlhWbEtDa2dlMXh1SUNBZ0lHbG1JQ2hrY21GcGJtbHVaeWtnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1SUNBZ0lIWmhjaUIwYVcxbGIzVjBJRDBnY25WdVZHbHRaVzkxZENoamJHVmhibFZ3VG1WNGRGUnBZMnNwTzF4dUlDQWdJR1J5WVdsdWFXNW5JRDBnZEhKMVpUdGNibHh1SUNBZ0lIWmhjaUJzWlc0Z1BTQnhkV1YxWlM1c1pXNW5kR2c3WEc0Z0lDQWdkMmhwYkdVb2JHVnVLU0I3WEc0Z0lDQWdJQ0FnSUdOMWNuSmxiblJSZFdWMVpTQTlJSEYxWlhWbE8xeHVJQ0FnSUNBZ0lDQnhkV1YxWlNBOUlGdGRPMXh1SUNBZ0lDQWdJQ0IzYUdsc1pTQW9LeXR4ZFdWMVpVbHVaR1Y0SUR3Z2JHVnVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWTNWeWNtVnVkRkYxWlhWbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZM1Z5Y21WdWRGRjFaWFZsVzNGMVpYVmxTVzVrWlhoZExuSjFiaWdwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhGMVpYVmxTVzVrWlhnZ1BTQXRNVHRjYmlBZ0lDQWdJQ0FnYkdWdUlEMGdjWFZsZFdVdWJHVnVaM1JvTzF4dUlDQWdJSDFjYmlBZ0lDQmpkWEp5Wlc1MFVYVmxkV1VnUFNCdWRXeHNPMXh1SUNBZ0lHUnlZV2x1YVc1bklEMGdabUZzYzJVN1hHNGdJQ0FnY25WdVEyeGxZWEpVYVcxbGIzVjBLSFJwYldWdmRYUXBPMXh1ZlZ4dVhHNXdjbTlqWlhOekxtNWxlSFJVYVdOcklEMGdablZ1WTNScGIyNGdLR1oxYmlrZ2UxeHVJQ0FnSUhaaGNpQmhjbWR6SUQwZ2JtVjNJRUZ5Y21GNUtHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ0xTQXhLVHRjYmlBZ0lDQnBaaUFvWVhKbmRXMWxiblJ6TG14bGJtZDBhQ0ErSURFcElIdGNiaUFnSUNBZ0lDQWdabTl5SUNoMllYSWdhU0E5SURFN0lHa2dQQ0JoY21kMWJXVnVkSE11YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdGeVozTmJhU0F0SURGZElEMGdZWEpuZFcxbGJuUnpXMmxkTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEYxWlhWbExuQjFjMmdvYm1WM0lFbDBaVzBvWm5WdUxDQmhjbWR6S1NrN1hHNGdJQ0FnYVdZZ0tIRjFaWFZsTG14bGJtZDBhQ0E5UFQwZ01TQW1KaUFoWkhKaGFXNXBibWNwSUh0Y2JpQWdJQ0FnSUNBZ2NuVnVWR2x0Wlc5MWRDaGtjbUZwYmxGMVpYVmxLVHRjYmlBZ0lDQjlYRzU5TzF4dVhHNHZMeUIyT0NCc2FXdGxjeUJ3Y21Wa2FXTjBhV0pzWlNCdlltcGxZM1J6WEc1bWRXNWpkR2x2YmlCSmRHVnRLR1oxYml3Z1lYSnlZWGtwSUh0Y2JpQWdJQ0IwYUdsekxtWjFiaUE5SUdaMWJqdGNiaUFnSUNCMGFHbHpMbUZ5Y21GNUlEMGdZWEp5WVhrN1hHNTlYRzVKZEdWdExuQnliM1J2ZEhsd1pTNXlkVzRnUFNCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2RHaHBjeTVtZFc0dVlYQndiSGtvYm5Wc2JDd2dkR2hwY3k1aGNuSmhlU2s3WEc1OU8xeHVjSEp2WTJWemN5NTBhWFJzWlNBOUlDZGljbTkzYzJWeUp6dGNibkJ5YjJObGMzTXVZbkp2ZDNObGNpQTlJSFJ5ZFdVN1hHNXdjbTlqWlhOekxtVnVkaUE5SUh0OU8xeHVjSEp2WTJWemN5NWhjbWQySUQwZ1cxMDdYRzV3Y205alpYTnpMblpsY25OcGIyNGdQU0FuSnpzZ0x5OGdaVzF3ZEhrZ2MzUnlhVzVuSUhSdklHRjJiMmxrSUhKbFoyVjRjQ0JwYzNOMVpYTmNibkJ5YjJObGMzTXVkbVZ5YzJsdmJuTWdQU0I3ZlR0Y2JseHVablZ1WTNScGIyNGdibTl2Y0NncElIdDlYRzVjYm5CeWIyTmxjM011YjI0Z1BTQnViMjl3TzF4dWNISnZZMlZ6Y3k1aFpHUk1hWE4wWlc1bGNpQTlJRzV2YjNBN1hHNXdjbTlqWlhOekxtOXVZMlVnUFNCdWIyOXdPMXh1Y0hKdlkyVnpjeTV2Wm1ZZ1BTQnViMjl3TzF4dWNISnZZMlZ6Y3k1eVpXMXZkbVZNYVhOMFpXNWxjaUE5SUc1dmIzQTdYRzV3Y205alpYTnpMbkpsYlc5MlpVRnNiRXhwYzNSbGJtVnljeUE5SUc1dmIzQTdYRzV3Y205alpYTnpMbVZ0YVhRZ1BTQnViMjl3TzF4dWNISnZZMlZ6Y3k1d2NtVndaVzVrVEdsemRHVnVaWElnUFNCdWIyOXdPMXh1Y0hKdlkyVnpjeTV3Y21Wd1pXNWtUMjVqWlV4cGMzUmxibVZ5SUQwZ2JtOXZjRHRjYmx4dWNISnZZMlZ6Y3k1c2FYTjBaVzVsY25NZ1BTQm1kVzVqZEdsdmJpQW9ibUZ0WlNrZ2V5QnlaWFIxY200Z1cxMGdmVnh1WEc1d2NtOWpaWE56TG1KcGJtUnBibWNnUFNCbWRXNWpkR2x2YmlBb2JtRnRaU2tnZTF4dUlDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25jSEp2WTJWemN5NWlhVzVrYVc1bklHbHpJRzV2ZENCemRYQndiM0owWldRbktUdGNibjA3WEc1Y2JuQnliMk5sYzNNdVkzZGtJRDBnWm5WdVkzUnBiMjRnS0NrZ2V5QnlaWFIxY200Z0p5OG5JSDA3WEc1d2NtOWpaWE56TG1Ob1pHbHlJRDBnWm5WdVkzUnBiMjRnS0dScGNpa2dlMXh1SUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnbmNISnZZMlZ6Y3k1amFHUnBjaUJwY3lCdWIzUWdjM1Z3Y0c5eWRHVmtKeWs3WEc1OU8xeHVjSEp2WTJWemN5NTFiV0Z6YXlBOUlHWjFibU4wYVc5dUtDa2dleUJ5WlhSMWNtNGdNRHNnZlR0Y2JseHVYRzVjYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OGdWMFZDVUVGRFN5QkdUMDlVUlZKY2JpOHZJQzR2Zmk5d2NtOWpaWE56TDJKeWIzZHpaWEl1YW5OY2JpOHZJRzF2WkhWc1pTQnBaQ0E5SURCY2JpOHZJRzF2WkhWc1pTQmphSFZ1YTNNZ1BTQXdJbDBzSW0xaGNIQnBibWR6SWpvaVFVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUc2lMQ0p6YjNWeVkyVlNiMjkwSWpvaUluMD1cXG4vLyMgc291cmNlVVJMPXdlYnBhY2staW50ZXJuYWw6Ly8vMFxcblwiKTtcblxuLyoqKi8gfSksXG4vKiAxICovXG4vKiBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyogYWxsIGV4cG9ydHMgdXNlZCAqL1xuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vfi9mYmpzL2xpYi9pbnZhcmlhbnQuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5ldmFsKFwiLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKHByb2Nlc3MpIHsvKipcXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cXG4gKlxcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4gKlxcbiAqL1xcblxcblxcblxcbi8qKlxcbiAqIFVzZSBpbnZhcmlhbnQoKSB0byBhc3NlcnQgc3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3VtZXMgdG8gYmUgdHJ1ZS5cXG4gKlxcbiAqIFByb3ZpZGUgc3ByaW50Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzXFxuICogdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGJyb2tlIGFuZCB3aGF0IHlvdSB3ZXJlXFxuICogZXhwZWN0aW5nLlxcbiAqXFxuICogVGhlIGludmFyaWFudCBtZXNzYWdlIHdpbGwgYmUgc3RyaXBwZWQgaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBpbnZhcmlhbnRcXG4gKiB3aWxsIHJlbWFpbiB0byBlbnN1cmUgbG9naWMgZG9lcyBub3QgZGlmZmVyIGluIHByb2R1Y3Rpb24uXFxuICovXFxuXFxudmFyIHZhbGlkYXRlRm9ybWF0ID0gZnVuY3Rpb24gdmFsaWRhdGVGb3JtYXQoZm9ybWF0KSB7fTtcXG5cXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xcbiAgdmFsaWRhdGVGb3JtYXQgPSBmdW5jdGlvbiB2YWxpZGF0ZUZvcm1hdChmb3JtYXQpIHtcXG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XFxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xcbiAgICB9XFxuICB9O1xcbn1cXG5cXG5mdW5jdGlvbiBpbnZhcmlhbnQoY29uZGl0aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUsIGYpIHtcXG4gIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCk7XFxuXFxuICBpZiAoIWNvbmRpdGlvbikge1xcbiAgICB2YXIgZXJyb3I7XFxuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKCdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCAnICsgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJyk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07XFxuICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcXG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xcbiAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XFxuICAgICAgfSkpO1xcbiAgICAgIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XFxuICAgIH1cXG5cXG4gICAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IGludmFyaWFudCdzIG93biBmcmFtZVxcbiAgICB0aHJvdyBlcnJvcjtcXG4gIH1cXG59XFxuXFxubW9kdWxlLmV4cG9ydHMgPSBpbnZhcmlhbnQ7XFxuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vLi4vLi4vcHJvY2Vzcy9icm93c2VyLmpzICovIDApKSkvLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lNUzVxY3lJc0luTnZkWEpqWlhNaU9sc2lkMlZpY0dGamF6b3ZMeTh1TDM0dlptSnFjeTlzYVdJdmFXNTJZWEpwWVc1MExtcHpQelExT1RraVhTd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdLR01wSURJd01UTXRjSEpsYzJWdWRDd2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQk5TVlFnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzVjYmlBcVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc0dktpcGNiaUFxSUZWelpTQnBiblpoY21saGJuUW9LU0IwYnlCaGMzTmxjblFnYzNSaGRHVWdkMmhwWTJnZ2VXOTFjaUJ3Y205bmNtRnRJR0Z6YzNWdFpYTWdkRzhnWW1VZ2RISjFaUzVjYmlBcVhHNGdLaUJRY205MmFXUmxJSE53Y21sdWRHWXRjM1I1YkdVZ1ptOXliV0YwSUNodmJteDVJQ1Z6SUdseklITjFjSEJ2Y25SbFpDa2dZVzVrSUdGeVozVnRaVzUwYzF4dUlDb2dkRzhnY0hKdmRtbGtaU0JwYm1admNtMWhkR2x2YmlCaFltOTFkQ0IzYUdGMElHSnliMnRsSUdGdVpDQjNhR0YwSUhsdmRTQjNaWEpsWEc0Z0tpQmxlSEJsWTNScGJtY3VYRzRnS2x4dUlDb2dWR2hsSUdsdWRtRnlhV0Z1ZENCdFpYTnpZV2RsSUhkcGJHd2dZbVVnYzNSeWFYQndaV1FnYVc0Z2NISnZaSFZqZEdsdmJpd2dZblYwSUhSb1pTQnBiblpoY21saGJuUmNiaUFxSUhkcGJHd2djbVZ0WVdsdUlIUnZJR1Z1YzNWeVpTQnNiMmRwWXlCa2IyVnpJRzV2ZENCa2FXWm1aWElnYVc0Z2NISnZaSFZqZEdsdmJpNWNiaUFxTDF4dVhHNTJZWElnZG1Gc2FXUmhkR1ZHYjNKdFlYUWdQU0JtZFc1amRHbHZiaUIyWVd4cFpHRjBaVVp2Y20xaGRDaG1iM0p0WVhRcElIdDlPMXh1WEc1cFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQjJZV3hwWkdGMFpVWnZjbTFoZENBOUlHWjFibU4wYVc5dUlIWmhiR2xrWVhSbFJtOXliV0YwS0dadmNtMWhkQ2tnZTF4dUlDQWdJR2xtSUNobWIzSnRZWFFnUFQwOUlIVnVaR1ZtYVc1bFpDa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZHBiblpoY21saGJuUWdjbVZ4ZFdseVpYTWdZVzRnWlhKeWIzSWdiV1Z6YzJGblpTQmhjbWQxYldWdWRDY3BPMXh1SUNBZ0lIMWNiaUFnZlR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnYVc1MllYSnBZVzUwS0dOdmJtUnBkR2x2Yml3Z1ptOXliV0YwTENCaExDQmlMQ0JqTENCa0xDQmxMQ0JtS1NCN1hHNGdJSFpoYkdsa1lYUmxSbTl5YldGMEtHWnZjbTFoZENrN1hHNWNiaUFnYVdZZ0tDRmpiMjVrYVhScGIyNHBJSHRjYmlBZ0lDQjJZWElnWlhKeWIzSTdYRzRnSUNBZ2FXWWdLR1p2Y20xaGRDQTlQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnSUNCbGNuSnZjaUE5SUc1bGR5QkZjbkp2Y2lnblRXbHVhV1pwWldRZ1pYaGpaWEIwYVc5dUlHOWpZM1Z5Y21Wa095QjFjMlVnZEdobElHNXZiaTF0YVc1cFptbGxaQ0JrWlhZZ1pXNTJhWEp2Ym0xbGJuUWdKeUFySUNkbWIzSWdkR2hsSUdaMWJHd2daWEp5YjNJZ2JXVnpjMkZuWlNCaGJtUWdZV1JrYVhScGIyNWhiQ0JvWld4d1puVnNJSGRoY201cGJtZHpMaWNwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQjJZWElnWVhKbmN5QTlJRnRoTENCaUxDQmpMQ0JrTENCbExDQm1YVHRjYmlBZ0lDQWdJSFpoY2lCaGNtZEpibVJsZUNBOUlEQTdYRzRnSUNBZ0lDQmxjbkp2Y2lBOUlHNWxkeUJGY25KdmNpaG1iM0p0WVhRdWNtVndiR0ZqWlNndkpYTXZaeXdnWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1lYSm5jMXRoY21kSmJtUmxlQ3NyWFR0Y2JpQWdJQ0FnSUgwcEtUdGNiaUFnSUNBZ0lHVnljbTl5TG01aGJXVWdQU0FuU1c1MllYSnBZVzUwSUZacGIyeGhkR2x2YmljN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWlhKeWIzSXVabkpoYldWelZHOVFiM0FnUFNBeE95QXZMeUIzWlNCa2IyNG5kQ0JqWVhKbElHRmliM1YwSUdsdWRtRnlhV0Z1ZENkeklHOTNiaUJtY21GdFpWeHVJQ0FnSUhSb2NtOTNJR1Z5Y205eU8xeHVJQ0I5WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdhVzUyWVhKcFlXNTBPMXh1WEc1Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeThnVjBWQ1VFRkRTeUJHVDA5VVJWSmNiaTh2SUM0dmZpOW1ZbXB6TDJ4cFlpOXBiblpoY21saGJuUXVhbk5jYmk4dklHMXZaSFZzWlNCcFpDQTlJREZjYmk4dklHMXZaSFZzWlNCamFIVnVhM01nUFNBd0lsMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUluMD1cXG4vLyMgc291cmNlVVJMPXdlYnBhY2staW50ZXJuYWw6Ly8vMVxcblwiKTtcblxuLyoqKi8gfSksXG4vKiAyICovXG4vKiBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyogYWxsIGV4cG9ydHMgdXNlZCAqL1xuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vZmJqcy9saWIvd2FybmluZy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5ldmFsKFwiLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKHByb2Nlc3MpIHsvKipcXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cXG4gKlxcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4gKlxcbiAqL1xcblxcblxcblxcbnZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9lbXB0eUZ1bmN0aW9uICovIDYpO1xcblxcbi8qKlxcbiAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1dCBvbmx5IGxvZ3MgYSB3YXJuaW5nIGlmIHRoZSBjb25kaXRpb24gaXMgbm90IG1ldC5cXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2FsXFxuICogcGF0aHMuIFJlbW92aW5nIHRoZSBsb2dnaW5nIGNvZGUgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdpbGwga2VlcCB0aGVcXG4gKiBzYW1lIGxvZ2ljIGFuZCBmb2xsb3cgdGhlIHNhbWUgY29kZSBwYXRocy5cXG4gKi9cXG5cXG52YXIgd2FybmluZyA9IGVtcHR5RnVuY3Rpb247XFxuXFxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gIHZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbiBwcmludFdhcm5pbmcoZm9ybWF0KSB7XFxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xcbiAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xcbiAgICB9XFxuXFxuICAgIHZhciBhcmdJbmRleCA9IDA7XFxuICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xcbiAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xcbiAgICB9KTtcXG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XFxuICAgIH1cXG4gICAgdHJ5IHtcXG4gICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXFxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXFxuICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXFxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xcbiAgICB9IGNhdGNoICh4KSB7fVxcbiAgfTtcXG5cXG4gIHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0KSB7XFxuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xcbiAgICAgIHRocm93IG5ldyBFcnJvcignYHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQsIC4uLmFyZ3MpYCByZXF1aXJlcyBhIHdhcm5pbmcgJyArICdtZXNzYWdlIGFyZ3VtZW50Jyk7XFxuICAgIH1cXG5cXG4gICAgaWYgKGZvcm1hdC5pbmRleE9mKCdGYWlsZWQgQ29tcG9zaXRlIHByb3BUeXBlOiAnKSA9PT0gMCkge1xcbiAgICAgIHJldHVybjsgLy8gSWdub3JlIENvbXBvc2l0ZUNvbXBvbmVudCBwcm9wdHlwZSBjaGVjay5cXG4gICAgfVxcblxcbiAgICBpZiAoIWNvbmRpdGlvbikge1xcbiAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yID4gMiA/IF9sZW4yIC0gMiA6IDApLCBfa2V5MiA9IDI7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcXG4gICAgICAgIGFyZ3NbX2tleTIgLSAyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XFxuICAgICAgfVxcblxcbiAgICAgIHByaW50V2FybmluZy5hcHBseSh1bmRlZmluZWQsIFtmb3JtYXRdLmNvbmNhdChhcmdzKSk7XFxuICAgIH1cXG4gIH07XFxufVxcblxcbm1vZHVsZS5leHBvcnRzID0gd2FybmluZztcXG4vKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi8uLi8uLi9wcm9jZXNzL2Jyb3dzZXIuanMgKi8gMCkpKS8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaU1pNXFjeUlzSW5OdmRYSmpaWE1pT2xzaWQyVmljR0ZqYXpvdkx5OHVMMzR2Wm1KcWN5OXNhV0l2ZDJGeWJtbHVaeTVxY3o4NFlUVTJJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSUNoaktTQXlNREUwTFhCeVpYTmxiblFzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnVFVsVUlHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdVhHNGdLbHh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUdWdGNIUjVSblZ1WTNScGIyNGdQU0J5WlhGMWFYSmxLQ2N1TDJWdGNIUjVSblZ1WTNScGIyNG5LVHRjYmx4dUx5b3FYRzRnS2lCVGFXMXBiR0Z5SUhSdklHbHVkbUZ5YVdGdWRDQmlkWFFnYjI1c2VTQnNiMmR6SUdFZ2QyRnlibWx1WnlCcFppQjBhR1VnWTI5dVpHbDBhVzl1SUdseklHNXZkQ0J0WlhRdVhHNGdLaUJVYUdseklHTmhiaUJpWlNCMWMyVmtJSFJ2SUd4dlp5QnBjM04xWlhNZ2FXNGdaR1YyWld4dmNHMWxiblFnWlc1MmFYSnZibTFsYm5SeklHbHVJR055YVhScFkyRnNYRzRnS2lCd1lYUm9jeTRnVW1WdGIzWnBibWNnZEdobElHeHZaMmRwYm1jZ1kyOWtaU0JtYjNJZ2NISnZaSFZqZEdsdmJpQmxiblpwY205dWJXVnVkSE1nZDJsc2JDQnJaV1Z3SUhSb1pWeHVJQ29nYzJGdFpTQnNiMmRwWXlCaGJtUWdabTlzYkc5M0lIUm9aU0J6WVcxbElHTnZaR1VnY0dGMGFITXVYRzRnS2k5Y2JseHVkbUZ5SUhkaGNtNXBibWNnUFNCbGJYQjBlVVoxYm1OMGFXOXVPMXh1WEc1cFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQjJZWElnY0hKcGJuUlhZWEp1YVc1bklEMGdablZ1WTNScGIyNGdjSEpwYm5SWFlYSnVhVzVuS0dadmNtMWhkQ2tnZTF4dUlDQWdJR1p2Y2lBb2RtRnlJRjlzWlc0Z1BTQmhjbWQxYldWdWRITXViR1Z1WjNSb0xDQmhjbWR6SUQwZ1FYSnlZWGtvWDJ4bGJpQStJREVnUHlCZmJHVnVJQzBnTVNBNklEQXBMQ0JmYTJWNUlEMGdNVHNnWDJ0bGVTQThJRjlzWlc0N0lGOXJaWGtyS3lrZ2UxeHVJQ0FnSUNBZ1lYSm5jMXRmYTJWNUlDMGdNVjBnUFNCaGNtZDFiV1Z1ZEhOYlgydGxlVjA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUdGeVowbHVaR1Y0SUQwZ01EdGNiaUFnSUNCMllYSWdiV1Z6YzJGblpTQTlJQ2RYWVhKdWFXNW5PaUFuSUNzZ1ptOXliV0YwTG5KbGNHeGhZMlVvTHlWekwyY3NJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJoY21kelcyRnlaMGx1WkdWNEt5dGRPMXh1SUNBZ0lIMHBPMXh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdZMjl1YzI5c1pTQWhQVDBnSjNWdVpHVm1hVzVsWkNjcElIdGNiaUFnSUNBZ0lHTnZibk52YkdVdVpYSnliM0lvYldWemMyRm5aU2s3WEc0Z0lDQWdmVnh1SUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0F2THlBdExTMGdWMlZzWTI5dFpTQjBieUJrWldKMVoyZHBibWNnVW1WaFkzUWdMUzB0WEc0Z0lDQWdJQ0F2THlCVWFHbHpJR1Z5Y205eUlIZGhjeUIwYUhKdmQyNGdZWE1nWVNCamIyNTJaVzVwWlc1alpTQnpieUIwYUdGMElIbHZkU0JqWVc0Z2RYTmxJSFJvYVhNZ2MzUmhZMnRjYmlBZ0lDQWdJQzh2SUhSdklHWnBibVFnZEdobElHTmhiR3h6YVhSbElIUm9ZWFFnWTJGMWMyVmtJSFJvYVhNZ2QyRnlibWx1WnlCMGJ5Qm1hWEpsTGx4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLRzFsYzNOaFoyVXBPMXh1SUNBZ0lIMGdZMkYwWTJnZ0tIZ3BJSHQ5WEc0Z0lIMDdYRzVjYmlBZ2QyRnlibWx1WnlBOUlHWjFibU4wYVc5dUlIZGhjbTVwYm1jb1kyOXVaR2wwYVc5dUxDQm1iM0p0WVhRcElIdGNiaUFnSUNCcFppQW9abTl5YldGMElEMDlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduWUhkaGNtNXBibWNvWTI5dVpHbDBhVzl1TENCbWIzSnRZWFFzSUM0dUxtRnlaM01wWUNCeVpYRjFhWEpsY3lCaElIZGhjbTVwYm1jZ0p5QXJJQ2R0WlhOellXZGxJR0Z5WjNWdFpXNTBKeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0dadmNtMWhkQzVwYm1SbGVFOW1LQ2RHWVdsc1pXUWdRMjl0Y0c5emFYUmxJSEJ5YjNCVWVYQmxPaUFuS1NBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVPeUF2THlCSloyNXZjbVVnUTI5dGNHOXphWFJsUTI5dGNHOXVaVzUwSUhCeWIzQjBlWEJsSUdOb1pXTnJMbHh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2doWTI5dVpHbDBhVzl1S1NCN1hHNGdJQ0FnSUNCbWIzSWdLSFpoY2lCZmJHVnVNaUE5SUdGeVozVnRaVzUwY3k1c1pXNW5kR2dzSUdGeVozTWdQU0JCY25KaGVTaGZiR1Z1TWlBK0lESWdQeUJmYkdWdU1pQXRJRElnT2lBd0tTd2dYMnRsZVRJZ1BTQXlPeUJmYTJWNU1pQThJRjlzWlc0eU95QmZhMlY1TWlzcktTQjdYRzRnSUNBZ0lDQWdJR0Z5WjNOYlgydGxlVElnTFNBeVhTQTlJR0Z5WjNWdFpXNTBjMXRmYTJWNU1sMDdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSEJ5YVc1MFYyRnlibWx1Wnk1aGNIQnNlU2gxYm1SbFptbHVaV1FzSUZ0bWIzSnRZWFJkTG1OdmJtTmhkQ2hoY21kektTazdYRzRnSUNBZ2ZWeHVJQ0I5TzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJSGRoY201cGJtYzdYRzVjYmx4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeUJYUlVKUVFVTkxJRVpQVDFSRlVseHVMeThnTGk5K0wyWmlhbk12YkdsaUwzZGhjbTVwYm1jdWFuTmNiaTh2SUcxdlpIVnNaU0JwWkNBOUlESmNiaTh2SUcxdlpIVnNaU0JqYUhWdWEzTWdQU0F3SWwwc0ltMWhjSEJwYm1keklqb2lRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBFaUxDSnpiM1Z5WTJWU2IyOTBJam9pSW4wPVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8yXFxuXCIpO1xuXG4vKioqLyB9KSxcbi8qIDMgKi9cbi8qIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKiBhbGwgZXhwb3J0cyB1c2VkICovXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vfi9yZWFjdC9saWIvUmVhY3RFbGVtZW50LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbmV2YWwoXCIvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJvY2Vzcykgey8qKlxcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxcbiAqXFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbiAqXFxuICovXFxuXFxuXFxuXFxudmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBvYmplY3QtYXNzaWduICovIDUpO1xcblxcbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vUmVhY3RDdXJyZW50T3duZXIgKi8gNyk7XFxuXFxudmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBmYmpzL2xpYi93YXJuaW5nICovIDIpO1xcbnZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vY2FuRGVmaW5lUHJvcGVydHkgKi8gOCk7XFxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcXG5cXG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9SZWFjdEVsZW1lbnRTeW1ib2wgKi8gMTUpO1xcblxcbnZhciBSRVNFUlZFRF9QUk9QUyA9IHtcXG4gIGtleTogdHJ1ZSxcXG4gIHJlZjogdHJ1ZSxcXG4gIF9fc2VsZjogdHJ1ZSxcXG4gIF9fc291cmNlOiB0cnVlXFxufTtcXG5cXG52YXIgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24sIHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duO1xcblxcbmZ1bmN0aW9uIGhhc1ZhbGlkUmVmKGNvbmZpZykge1xcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHtcXG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdyZWYnKS5nZXQ7XFxuICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcXG4gICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG4gIHJldHVybiBjb25maWcucmVmICE9PSB1bmRlZmluZWQ7XFxufVxcblxcbmZ1bmN0aW9uIGhhc1ZhbGlkS2V5KGNvbmZpZykge1xcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAna2V5JykpIHtcXG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdrZXknKS5nZXQ7XFxuICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcXG4gICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG4gIHJldHVybiBjb25maWcua2V5ICE9PSB1bmRlZmluZWQ7XFxufVxcblxcbmZ1bmN0aW9uIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSkge1xcbiAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ0tleSA9IGZ1bmN0aW9uICgpIHtcXG4gICAgaWYgKCFzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93bikge1xcbiAgICAgIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duID0gdHJ1ZTtcXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzOiBga2V5YCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcGVjaWFsLXByb3BzKScsIGRpc3BsYXlOYW1lKSA6IHZvaWQgMDtcXG4gICAgfVxcbiAgfTtcXG4gIHdhcm5BYm91dEFjY2Vzc2luZ0tleS5pc1JlYWN0V2FybmluZyA9IHRydWU7XFxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdrZXknLCB7XFxuICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nS2V5LFxcbiAgICBjb25maWd1cmFibGU6IHRydWVcXG4gIH0pO1xcbn1cXG5cXG5mdW5jdGlvbiBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHtcXG4gIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYgPSBmdW5jdGlvbiAoKSB7XFxuICAgIGlmICghc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24pIHtcXG4gICAgICBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93biA9IHRydWU7XFxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclczogYHJlZmAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4gKGh0dHBzOi8vZmIubWUvcmVhY3Qtc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSkgOiB2b2lkIDA7XFxuICAgIH1cXG4gIH07XFxuICB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYuaXNSZWFjdFdhcm5pbmcgPSB0cnVlO1xcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAncmVmJywge1xcbiAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ1JlZixcXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXFxuICB9KTtcXG59XFxuXFxuLyoqXFxuICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEgbmV3IFJlYWN0IGVsZW1lbnQuIFRoaXMgbm8gbG9uZ2VyIGFkaGVyZXMgdG9cXG4gKiB0aGUgY2xhc3MgcGF0dGVybiwgc28gZG8gbm90IHVzZSBuZXcgdG8gY2FsbCBpdC4gQWxzbywgbm8gaW5zdGFuY2VvZiBjaGVja1xcbiAqIHdpbGwgd29yay4gSW5zdGVhZCB0ZXN0ICQkdHlwZW9mIGZpZWxkIGFnYWluc3QgU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpIHRvIGNoZWNrXFxuICogaWYgc29tZXRoaW5nIGlzIGEgUmVhY3QgRWxlbWVudC5cXG4gKlxcbiAqIEBwYXJhbSB7Kn0gdHlwZVxcbiAqIEBwYXJhbSB7Kn0ga2V5XFxuICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSByZWZcXG4gKiBAcGFyYW0geyp9IHNlbGYgQSAqdGVtcG9yYXJ5KiBoZWxwZXIgdG8gZGV0ZWN0IHBsYWNlcyB3aGVyZSBgdGhpc2AgaXNcXG4gKiBkaWZmZXJlbnQgZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJlYWN0LmNyZWF0ZUVsZW1lbnQgaXMgY2FsbGVkLCBzbyB0aGF0IHdlXFxuICogY2FuIHdhcm4uIFdlIHdhbnQgdG8gZ2V0IHJpZCBvZiBvd25lciBhbmQgcmVwbGFjZSBzdHJpbmcgYHJlZmBzIHdpdGggYXJyb3dcXG4gKiBmdW5jdGlvbnMsIGFuZCBhcyBsb25nIGFzIGB0aGlzYCBhbmQgb3duZXIgYXJlIHRoZSBzYW1lLCB0aGVyZSB3aWxsIGJlIG5vXFxuICogY2hhbmdlIGluIGJlaGF2aW9yLlxcbiAqIEBwYXJhbSB7Kn0gc291cmNlIEFuIGFubm90YXRpb24gb2JqZWN0IChhZGRlZCBieSBhIHRyYW5zcGlsZXIgb3Igb3RoZXJ3aXNlKVxcbiAqIGluZGljYXRpbmcgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBhbmQvb3Igb3RoZXIgaW5mb3JtYXRpb24uXFxuICogQHBhcmFtIHsqfSBvd25lclxcbiAqIEBwYXJhbSB7Kn0gcHJvcHNcXG4gKiBAaW50ZXJuYWxcXG4gKi9cXG52YXIgUmVhY3RFbGVtZW50ID0gZnVuY3Rpb24gKHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcykge1xcbiAgdmFyIGVsZW1lbnQgPSB7XFxuICAgIC8vIFRoaXMgdGFnIGFsbG93IHVzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgYXMgYSBSZWFjdCBFbGVtZW50XFxuICAgICQkdHlwZW9mOiBSRUFDVF9FTEVNRU5UX1RZUEUsXFxuXFxuICAgIC8vIEJ1aWx0LWluIHByb3BlcnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnRcXG4gICAgdHlwZTogdHlwZSxcXG4gICAga2V5OiBrZXksXFxuICAgIHJlZjogcmVmLFxcbiAgICBwcm9wczogcHJvcHMsXFxuXFxuICAgIC8vIFJlY29yZCB0aGUgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGlzIGVsZW1lbnQuXFxuICAgIF9vd25lcjogb3duZXJcXG4gIH07XFxuXFxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xcbiAgICAvLyBUaGUgdmFsaWRhdGlvbiBmbGFnIGlzIGN1cnJlbnRseSBtdXRhdGl2ZS4gV2UgcHV0IGl0IG9uXFxuICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXFxuICAgIC8vIFRoaXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBXZWFrTWFwIG9uY2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgaW5cXG4gICAgLy8gY29tbW9ubHkgdXNlZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuXFxuICAgIGVsZW1lbnQuX3N0b3JlID0ge307XFxuXFxuICAgIC8vIFRvIG1ha2UgY29tcGFyaW5nIFJlYWN0RWxlbWVudHMgZWFzaWVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB3ZSBtYWtlXFxuICAgIC8vIHRoZSB2YWxpZGF0aW9uIGZsYWcgbm9uLWVudW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGRcXG4gICAgLy8gaW5jbHVkZSBldmVyeSBlbnZpcm9ubWVudCB3ZSBydW4gdGVzdHMgaW4pLCBzbyB0aGUgdGVzdCBmcmFtZXdvcmtcXG4gICAgLy8gaWdub3JlcyBpdC5cXG4gICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XFxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQuX3N0b3JlLCAndmFsaWRhdGVkJywge1xcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXFxuICAgICAgICB2YWx1ZTogZmFsc2VcXG4gICAgICB9KTtcXG4gICAgICAvLyBzZWxmIGFuZCBzb3VyY2UgYXJlIERFViBvbmx5IHByb3BlcnRpZXMuXFxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc2VsZicsIHtcXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcXG4gICAgICAgIHZhbHVlOiBzZWxmXFxuICAgICAgfSk7XFxuICAgICAgLy8gVHdvIGVsZW1lbnRzIGNyZWF0ZWQgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXMgc2hvdWxkIGJlIGNvbnNpZGVyZWRcXG4gICAgICAvLyBlcXVhbCBmb3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgdGhlcmVmb3JlIHdlIGhpZGUgaXQgZnJvbSBlbnVtZXJhdGlvbi5cXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudCwgJ19zb3VyY2UnLCB7XFxuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXFxuICAgICAgICB2YWx1ZTogc291cmNlXFxuICAgICAgfSk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkID0gZmFsc2U7XFxuICAgICAgZWxlbWVudC5fc2VsZiA9IHNlbGY7XFxuICAgICAgZWxlbWVudC5fc291cmNlID0gc291cmNlO1xcbiAgICB9XFxuICAgIGlmIChPYmplY3QuZnJlZXplKSB7XFxuICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50LnByb3BzKTtcXG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQpO1xcbiAgICB9XFxuICB9XFxuXFxuICByZXR1cm4gZWxlbWVudDtcXG59O1xcblxcbi8qKlxcbiAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IFJlYWN0RWxlbWVudCBvZiB0aGUgZ2l2ZW4gdHlwZS5cXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlZWxlbWVudFxcbiAqL1xcblJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gKHR5cGUsIGNvbmZpZywgY2hpbGRyZW4pIHtcXG4gIHZhciBwcm9wTmFtZTtcXG5cXG4gIC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcXG4gIHZhciBwcm9wcyA9IHt9O1xcblxcbiAgdmFyIGtleSA9IG51bGw7XFxuICB2YXIgcmVmID0gbnVsbDtcXG4gIHZhciBzZWxmID0gbnVsbDtcXG4gIHZhciBzb3VyY2UgPSBudWxsO1xcblxcbiAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XFxuICAgIGlmIChoYXNWYWxpZFJlZihjb25maWcpKSB7XFxuICAgICAgcmVmID0gY29uZmlnLnJlZjtcXG4gICAgfVxcbiAgICBpZiAoaGFzVmFsaWRLZXkoY29uZmlnKSkge1xcbiAgICAgIGtleSA9ICcnICsgY29uZmlnLmtleTtcXG4gICAgfVxcblxcbiAgICBzZWxmID0gY29uZmlnLl9fc2VsZiA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NlbGY7XFxuICAgIHNvdXJjZSA9IGNvbmZpZy5fX3NvdXJjZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NvdXJjZTtcXG4gICAgLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgYXJlIGFkZGVkIHRvIGEgbmV3IHByb3BzIG9iamVjdFxcbiAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcXG4gICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICAvLyBDaGlsZHJlbiBjYW4gYmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRvXFxuICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVkIHByb3BzIG9iamVjdC5cXG4gIHZhciBjaGlsZHJlbkxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGggLSAyO1xcbiAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7XFxuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47XFxuICB9IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3RoID4gMSkge1xcbiAgICB2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XFxuICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07XFxuICAgIH1cXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gICAgICBpZiAoT2JqZWN0LmZyZWV6ZSkge1xcbiAgICAgICAgT2JqZWN0LmZyZWV6ZShjaGlsZEFycmF5KTtcXG4gICAgICB9XFxuICAgIH1cXG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xcbiAgfVxcblxcbiAgLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXFxuICBpZiAodHlwZSAmJiB0eXBlLmRlZmF1bHRQcm9wcykge1xcbiAgICB2YXIgZGVmYXVsdFByb3BzID0gdHlwZS5kZWZhdWx0UHJvcHM7XFxuICAgIGZvciAocHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7XFxuICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gICAgaWYgKGtleSB8fCByZWYpIHtcXG4gICAgICBpZiAodHlwZW9mIHByb3BzLiQkdHlwZW9mID09PSAndW5kZWZpbmVkJyB8fCBwcm9wcy4kJHR5cGVvZiAhPT0gUkVBQ1RfRUxFTUVOVF9UWVBFKSB7XFxuICAgICAgICB2YXIgZGlzcGxheU5hbWUgPSB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyA/IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8ICdVbmtub3duJyA6IHR5cGU7XFxuICAgICAgICBpZiAoa2V5KSB7XFxuICAgICAgICAgIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAocmVmKSB7XFxuICAgICAgICAgIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuICByZXR1cm4gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQsIHByb3BzKTtcXG59O1xcblxcbi8qKlxcbiAqIFJldHVybiBhIGZ1bmN0aW9uIHRoYXQgcHJvZHVjZXMgUmVhY3RFbGVtZW50cyBvZiBhIGdpdmVuIHR5cGUuXFxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWZhY3RvcnlcXG4gKi9cXG5SZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeSA9IGZ1bmN0aW9uICh0eXBlKSB7XFxuICB2YXIgZmFjdG9yeSA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50LmJpbmQobnVsbCwgdHlwZSk7XFxuICAvLyBFeHBvc2UgdGhlIHR5cGUgb24gdGhlIGZhY3RvcnkgYW5kIHRoZSBwcm90b3R5cGUgc28gdGhhdCBpdCBjYW4gYmVcXG4gIC8vIGVhc2lseSBhY2Nlc3NlZCBvbiBlbGVtZW50cy4gRS5nLiBgPEZvbyAvPi50eXBlID09PSBGb29gLlxcbiAgLy8gVGhpcyBzaG91bGQgbm90IGJlIG5hbWVkIGBjb25zdHJ1Y3RvcmAgc2luY2UgdGhpcyBtYXkgbm90IGJlIHRoZSBmdW5jdGlvblxcbiAgLy8gdGhhdCBjcmVhdGVkIHRoZSBlbGVtZW50LCBhbmQgaXQgbWF5IG5vdCBldmVuIGJlIGEgY29uc3RydWN0b3IuXFxuICAvLyBMZWdhY3kgaG9vayBUT0RPOiBXYXJuIGlmIHRoaXMgaXMgYWNjZXNzZWRcXG4gIGZhY3RvcnkudHlwZSA9IHR5cGU7XFxuICByZXR1cm4gZmFjdG9yeTtcXG59O1xcblxcblJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VLZXkgPSBmdW5jdGlvbiAob2xkRWxlbWVudCwgbmV3S2V5KSB7XFxuICB2YXIgbmV3RWxlbWVudCA9IFJlYWN0RWxlbWVudChvbGRFbGVtZW50LnR5cGUsIG5ld0tleSwgb2xkRWxlbWVudC5yZWYsIG9sZEVsZW1lbnQuX3NlbGYsIG9sZEVsZW1lbnQuX3NvdXJjZSwgb2xkRWxlbWVudC5fb3duZXIsIG9sZEVsZW1lbnQucHJvcHMpO1xcblxcbiAgcmV0dXJuIG5ld0VsZW1lbnQ7XFxufTtcXG5cXG4vKipcXG4gKiBDbG9uZSBhbmQgcmV0dXJuIGEgbmV3IFJlYWN0RWxlbWVudCB1c2luZyBlbGVtZW50IGFzIHRoZSBzdGFydGluZyBwb2ludC5cXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2xvbmVlbGVtZW50XFxuICovXFxuUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCBjb25maWcsIGNoaWxkcmVuKSB7XFxuICB2YXIgcHJvcE5hbWU7XFxuXFxuICAvLyBPcmlnaW5hbCBwcm9wcyBhcmUgY29waWVkXFxuICB2YXIgcHJvcHMgPSBfYXNzaWduKHt9LCBlbGVtZW50LnByb3BzKTtcXG5cXG4gIC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcXG4gIHZhciBrZXkgPSBlbGVtZW50LmtleTtcXG4gIHZhciByZWYgPSBlbGVtZW50LnJlZjtcXG4gIC8vIFNlbGYgaXMgcHJlc2VydmVkIHNpbmNlIHRoZSBvd25lciBpcyBwcmVzZXJ2ZWQuXFxuICB2YXIgc2VsZiA9IGVsZW1lbnQuX3NlbGY7XFxuICAvLyBTb3VyY2UgaXMgcHJlc2VydmVkIHNpbmNlIGNsb25lRWxlbWVudCBpcyB1bmxpa2VseSB0byBiZSB0YXJnZXRlZCBieSBhXFxuICAvLyB0cmFuc3BpbGVyLCBhbmQgdGhlIG9yaWdpbmFsIHNvdXJjZSBpcyBwcm9iYWJseSBhIGJldHRlciBpbmRpY2F0b3Igb2YgdGhlXFxuICAvLyB0cnVlIG93bmVyLlxcbiAgdmFyIHNvdXJjZSA9IGVsZW1lbnQuX3NvdXJjZTtcXG5cXG4gIC8vIE93bmVyIHdpbGwgYmUgcHJlc2VydmVkLCB1bmxlc3MgcmVmIGlzIG92ZXJyaWRkZW5cXG4gIHZhciBvd25lciA9IGVsZW1lbnQuX293bmVyO1xcblxcbiAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XFxuICAgIGlmIChoYXNWYWxpZFJlZihjb25maWcpKSB7XFxuICAgICAgLy8gU2lsZW50bHkgc3RlYWwgdGhlIHJlZiBmcm9tIHRoZSBwYXJlbnQuXFxuICAgICAgcmVmID0gY29uZmlnLnJlZjtcXG4gICAgICBvd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XFxuICAgIH1cXG4gICAgaWYgKGhhc1ZhbGlkS2V5KGNvbmZpZykpIHtcXG4gICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7XFxuICAgIH1cXG5cXG4gICAgLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgb3ZlcnJpZGUgZXhpc3RpbmcgcHJvcHNcXG4gICAgdmFyIGRlZmF1bHRQcm9wcztcXG4gICAgaWYgKGVsZW1lbnQudHlwZSAmJiBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzKSB7XFxuICAgICAgZGVmYXVsdFByb3BzID0gZWxlbWVudC50eXBlLmRlZmF1bHRQcm9wcztcXG4gICAgfVxcbiAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcXG4gICAgICAgIGlmIChjb25maWdbcHJvcE5hbWVdID09PSB1bmRlZmluZWQgJiYgZGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQpIHtcXG4gICAgICAgICAgLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXFxuICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGRlZmF1bHRQcm9wc1twcm9wTmFtZV07XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgLy8gQ2hpbGRyZW4gY2FuIGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJyZWQgb250b1xcbiAgLy8gdGhlIG5ld2x5IGFsbG9jYXRlZCBwcm9wcyBvYmplY3QuXFxuICB2YXIgY2hpbGRyZW5MZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoIC0gMjtcXG4gIGlmIChjaGlsZHJlbkxlbmd0aCA9PT0gMSkge1xcbiAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xcbiAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0aCA+IDEpIHtcXG4gICAgdmFyIGNoaWxkQXJyYXkgPSBBcnJheShjaGlsZHJlbkxlbmd0aCk7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xcbiAgICAgIGNoaWxkQXJyYXlbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xcbiAgICB9XFxuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcXG4gIH1cXG5cXG4gIHJldHVybiBSZWFjdEVsZW1lbnQoZWxlbWVudC50eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpO1xcbn07XFxuXFxuLyoqXFxuICogVmVyaWZpZXMgdGhlIG9iamVjdCBpcyBhIFJlYWN0RWxlbWVudC5cXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuaXN2YWxpZGVsZW1lbnRcXG4gKiBAcGFyYW0gez9vYmplY3R9IG9iamVjdFxcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYG9iamVjdGAgaXMgYSB2YWxpZCBjb21wb25lbnQuXFxuICogQGZpbmFsXFxuICovXFxuUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50ID0gZnVuY3Rpb24gKG9iamVjdCkge1xcbiAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcXG59O1xcblxcbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFbGVtZW50O1xcbi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLy4uLy4uL3Byb2Nlc3MvYnJvd3Nlci5qcyAqLyAwKSkpLy8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTXk1cWN5SXNJbk52ZFhKalpYTWlPbHNpZDJWaWNHRmphem92THk4dUwzNHZjbVZoWTNRdmJHbGlMMUpsWVdOMFJXeGxiV1Z1ZEM1cWN6OWhZakptSWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElDaGpLU0F5TURFMExYQnlaWE5sYm5Rc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1RVbFVJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVYRzRnS2x4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlGOWhjM05wWjI0Z1BTQnlaWEYxYVhKbEtDZHZZbXBsWTNRdFlYTnphV2R1SnlrN1hHNWNiblpoY2lCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSW5LVHRjYmx4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1MllYSWdZMkZ1UkdWbWFXNWxVSEp2Y0dWeWRIa2dQU0J5WlhGMWFYSmxLQ2N1TDJOaGJrUmxabWx1WlZCeWIzQmxjblI1SnlrN1hHNTJZWElnYUdGelQzZHVVSEp2Y0dWeWRIa2dQU0JQWW1wbFkzUXVjSEp2ZEc5MGVYQmxMbWhoYzA5M2JsQnliM0JsY25SNU8xeHVYRzUyWVhJZ1VrVkJRMVJmUlV4RlRVVk9WRjlVV1ZCRklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFVnNaVzFsYm5SVGVXMWliMnduS1R0Y2JseHVkbUZ5SUZKRlUwVlNWa1ZFWDFCU1QxQlRJRDBnZTF4dUlDQnJaWGs2SUhSeWRXVXNYRzRnSUhKbFpqb2dkSEoxWlN4Y2JpQWdYMTl6Wld4bU9pQjBjblZsTEZ4dUlDQmZYM052ZFhKalpUb2dkSEoxWlZ4dWZUdGNibHh1ZG1GeUlITndaV05wWVd4UWNtOXdTMlY1VjJGeWJtbHVaMU5vYjNkdUxDQnpjR1ZqYVdGc1VISnZjRkpsWmxkaGNtNXBibWRUYUc5M2JqdGNibHh1Wm5WdVkzUnBiMjRnYUdGelZtRnNhV1JTWldZb1kyOXVabWxuS1NCN1hHNGdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ2FXWWdLR2hoYzA5M2JsQnliM0JsY25SNUxtTmhiR3dvWTI5dVptbG5MQ0FuY21WbUp5a3BJSHRjYmlBZ0lDQWdJSFpoY2lCblpYUjBaWElnUFNCUFltcGxZM1F1WjJWMFQzZHVVSEp2Y0dWeWRIbEVaWE5qY21sd2RHOXlLR052Ym1acFp5d2dKM0psWmljcExtZGxkRHRjYmlBZ0lDQWdJR2xtSUNoblpYUjBaWElnSmlZZ1oyVjBkR1Z5TG1selVtVmhZM1JYWVhKdWFXNW5LU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUdOdmJtWnBaeTV5WldZZ0lUMDlJSFZ1WkdWbWFXNWxaRHRjYm4xY2JseHVablZ1WTNScGIyNGdhR0Z6Vm1Gc2FXUkxaWGtvWTI5dVptbG5LU0I3WEc0Z0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnYVdZZ0tHaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29ZMjl1Wm1sbkxDQW5hMlY1SnlrcElIdGNiaUFnSUNBZ0lIWmhjaUJuWlhSMFpYSWdQU0JQWW1wbFkzUXVaMlYwVDNkdVVISnZjR1Z5ZEhsRVpYTmpjbWx3ZEc5eUtHTnZibVpwWnl3Z0oydGxlU2NwTG1kbGREdGNiaUFnSUNBZ0lHbG1JQ2huWlhSMFpYSWdKaVlnWjJWMGRHVnlMbWx6VW1WaFkzUlhZWEp1YVc1bktTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJR052Ym1acFp5NXJaWGtnSVQwOUlIVnVaR1ZtYVc1bFpEdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1pHVm1hVzVsUzJWNVVISnZjRmRoY201cGJtZEhaWFIwWlhJb2NISnZjSE1zSUdScGMzQnNZWGxPWVcxbEtTQjdYRzRnSUhaaGNpQjNZWEp1UVdKdmRYUkJZMk5sYzNOcGJtZExaWGtnUFNCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2FXWWdLQ0Z6Y0dWamFXRnNVSEp2Y0V0bGVWZGhjbTVwYm1kVGFHOTNiaWtnZTF4dUlDQWdJQ0FnYzNCbFkybGhiRkJ5YjNCTFpYbFhZWEp1YVc1blUyaHZkMjRnUFNCMGNuVmxPMXh1SUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvWm1Gc2MyVXNJQ2NsY3pvZ1lHdGxlV0FnYVhNZ2JtOTBJR0VnY0hKdmNDNGdWSEo1YVc1bklIUnZJR0ZqWTJWemN5QnBkQ0IzYVd4c0lISmxjM1ZzZENBbklDc2dKMmx1SUdCMWJtUmxabWx1WldSZ0lHSmxhVzVuSUhKbGRIVnlibVZrTGlCSlppQjViM1VnYm1WbFpDQjBieUJoWTJObGMzTWdkR2hsSUhOaGJXVWdKeUFySUNkMllXeDFaU0IzYVhSb2FXNGdkR2hsSUdOb2FXeGtJR052YlhCdmJtVnVkQ3dnZVc5MUlITm9iM1ZzWkNCd1lYTnpJR2wwSUdGeklHRWdaR2xtWm1WeVpXNTBJQ2NnS3lBbmNISnZjQzRnS0doMGRIQnpPaTh2Wm1JdWJXVXZjbVZoWTNRdGMzQmxZMmxoYkMxd2NtOXdjeWtuTENCa2FYTndiR0Y1VG1GdFpTa2dPaUIyYjJsa0lEQTdYRzRnSUNBZ2ZWeHVJQ0I5TzF4dUlDQjNZWEp1UVdKdmRYUkJZMk5sYzNOcGJtZExaWGt1YVhOU1pXRmpkRmRoY201cGJtY2dQU0IwY25WbE8xeHVJQ0JQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb2NISnZjSE1zSUNkclpYa25MQ0I3WEc0Z0lDQWdaMlYwT2lCM1lYSnVRV0p2ZFhSQlkyTmxjM05wYm1kTFpYa3NYRzRnSUNBZ1kyOXVabWxuZFhKaFlteGxPaUIwY25WbFhHNGdJSDBwTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJrWldacGJtVlNaV1pRY205d1YyRnlibWx1WjBkbGRIUmxjaWh3Y205d2N5d2daR2x6Y0d4aGVVNWhiV1VwSUh0Y2JpQWdkbUZ5SUhkaGNtNUJZbTkxZEVGalkyVnpjMmx1WjFKbFppQTlJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0JwWmlBb0lYTndaV05wWVd4UWNtOXdVbVZtVjJGeWJtbHVaMU5vYjNkdUtTQjdYRzRnSUNBZ0lDQnpjR1ZqYVdGc1VISnZjRkpsWmxkaGNtNXBibWRUYUc5M2JpQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aG1ZV3h6WlN3Z0p5VnpPaUJnY21WbVlDQnBjeUJ1YjNRZ1lTQndjbTl3TGlCVWNubHBibWNnZEc4Z1lXTmpaWE56SUdsMElIZHBiR3dnY21WemRXeDBJQ2NnS3lBbmFXNGdZSFZ1WkdWbWFXNWxaR0FnWW1WcGJtY2djbVYwZFhKdVpXUXVJRWxtSUhsdmRTQnVaV1ZrSUhSdklHRmpZMlZ6Y3lCMGFHVWdjMkZ0WlNBbklDc2dKM1poYkhWbElIZHBkR2hwYmlCMGFHVWdZMmhwYkdRZ1kyOXRjRzl1Wlc1MExDQjViM1VnYzJodmRXeGtJSEJoYzNNZ2FYUWdZWE1nWVNCa2FXWm1aWEpsYm5RZ0p5QXJJQ2R3Y205d0xpQW9hSFIwY0hNNkx5OW1ZaTV0WlM5eVpXRmpkQzF6Y0dWamFXRnNMWEJ5YjNCektTY3NJR1JwYzNCc1lYbE9ZVzFsS1NBNklIWnZhV1FnTUR0Y2JpQWdJQ0I5WEc0Z0lIMDdYRzRnSUhkaGNtNUJZbTkxZEVGalkyVnpjMmx1WjFKbFppNXBjMUpsWVdOMFYyRnlibWx1WnlBOUlIUnlkV1U3WEc0Z0lFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2h3Y205d2N5d2dKM0psWmljc0lIdGNiaUFnSUNCblpYUTZJSGRoY201QlltOTFkRUZqWTJWemMybHVaMUpsWml4Y2JpQWdJQ0JqYjI1bWFXZDFjbUZpYkdVNklIUnlkV1ZjYmlBZ2ZTazdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1JtRmpkRzl5ZVNCdFpYUm9iMlFnZEc4Z1kzSmxZWFJsSUdFZ2JtVjNJRkpsWVdOMElHVnNaVzFsYm5RdUlGUm9hWE1nYm04Z2JHOXVaMlZ5SUdGa2FHVnlaWE1nZEc5Y2JpQXFJSFJvWlNCamJHRnpjeUJ3WVhSMFpYSnVMQ0J6YnlCa2J5QnViM1FnZFhObElHNWxkeUIwYnlCallXeHNJR2wwTGlCQmJITnZMQ0J1YnlCcGJuTjBZVzVqWlc5bUlHTm9aV05yWEc0Z0tpQjNhV3hzSUhkdmNtc3VJRWx1YzNSbFlXUWdkR1Z6ZENBa0pIUjVjR1Z2WmlCbWFXVnNaQ0JoWjJGcGJuTjBJRk41YldKdmJDNW1iM0lvSjNKbFlXTjBMbVZzWlcxbGJuUW5LU0IwYnlCamFHVmphMXh1SUNvZ2FXWWdjMjl0WlhSb2FXNW5JR2x6SUdFZ1VtVmhZM1FnUld4bGJXVnVkQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdleXA5SUhSNWNHVmNiaUFxSUVCd1lYSmhiU0I3S24wZ2EyVjVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaM3h2WW1wbFkzUjlJSEpsWmx4dUlDb2dRSEJoY21GdElIc3FmU0J6Wld4bUlFRWdLblJsYlhCdmNtRnllU29nYUdWc2NHVnlJSFJ2SUdSbGRHVmpkQ0J3YkdGalpYTWdkMmhsY21VZ1lIUm9hWE5nSUdselhHNGdLaUJrYVdabVpYSmxiblFnWm5KdmJTQjBhR1VnWUc5M2JtVnlZQ0IzYUdWdUlGSmxZV04wTG1OeVpXRjBaVVZzWlcxbGJuUWdhWE1nWTJGc2JHVmtMQ0J6YnlCMGFHRjBJSGRsWEc0Z0tpQmpZVzRnZDJGeWJpNGdWMlVnZDJGdWRDQjBieUJuWlhRZ2NtbGtJRzltSUc5M2JtVnlJR0Z1WkNCeVpYQnNZV05sSUhOMGNtbHVaeUJnY21WbVlITWdkMmwwYUNCaGNuSnZkMXh1SUNvZ1puVnVZM1JwYjI1ekxDQmhibVFnWVhNZ2JHOXVaeUJoY3lCZ2RHaHBjMkFnWVc1a0lHOTNibVZ5SUdGeVpTQjBhR1VnYzJGdFpTd2dkR2hsY21VZ2QybHNiQ0JpWlNCdWIxeHVJQ29nWTJoaGJtZGxJR2x1SUdKbGFHRjJhVzl5TGx4dUlDb2dRSEJoY21GdElIc3FmU0J6YjNWeVkyVWdRVzRnWVc1dWIzUmhkR2x2YmlCdlltcGxZM1FnS0dGa1pHVmtJR0o1SUdFZ2RISmhibk53YVd4bGNpQnZjaUJ2ZEdobGNuZHBjMlVwWEc0Z0tpQnBibVJwWTJGMGFXNW5JR1pwYkdWdVlXMWxMQ0JzYVc1bElHNTFiV0psY2l3Z1lXNWtMMjl5SUc5MGFHVnlJR2x1Wm05eWJXRjBhVzl1TGx4dUlDb2dRSEJoY21GdElIc3FmU0J2ZDI1bGNseHVJQ29nUUhCaGNtRnRJSHNxZlNCd2NtOXdjMXh1SUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdLaTljYm5aaGNpQlNaV0ZqZEVWc1pXMWxiblFnUFNCbWRXNWpkR2x2YmlBb2RIbHdaU3dnYTJWNUxDQnlaV1lzSUhObGJHWXNJSE52ZFhKalpTd2diM2R1WlhJc0lIQnliM0J6S1NCN1hHNGdJSFpoY2lCbGJHVnRaVzUwSUQwZ2UxeHVJQ0FnSUM4dklGUm9hWE1nZEdGbklHRnNiRzkzSUhWeklIUnZJSFZ1YVhGMVpXeDVJR2xrWlc1MGFXWjVJSFJvYVhNZ1lYTWdZU0JTWldGamRDQkZiR1Z0Wlc1MFhHNGdJQ0FnSkNSMGVYQmxiMlk2SUZKRlFVTlVYMFZNUlUxRlRsUmZWRmxRUlN4Y2JseHVJQ0FnSUM4dklFSjFhV3gwTFdsdUlIQnliM0JsY25ScFpYTWdkR2hoZENCaVpXeHZibWNnYjI0Z2RHaGxJR1ZzWlcxbGJuUmNiaUFnSUNCMGVYQmxPaUIwZVhCbExGeHVJQ0FnSUd0bGVUb2dhMlY1TEZ4dUlDQWdJSEpsWmpvZ2NtVm1MRnh1SUNBZ0lIQnliM0J6T2lCd2NtOXdjeXhjYmx4dUlDQWdJQzh2SUZKbFkyOXlaQ0IwYUdVZ1kyOXRjRzl1Wlc1MElISmxjM0J2Ym5OcFlteGxJR1p2Y2lCamNtVmhkR2x1WnlCMGFHbHpJR1ZzWlcxbGJuUXVYRzRnSUNBZ1gyOTNibVZ5T2lCdmQyNWxjbHh1SUNCOU8xeHVYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdMeThnVkdobElIWmhiR2xrWVhScGIyNGdabXhoWnlCcGN5QmpkWEp5Wlc1MGJIa2diWFYwWVhScGRtVXVJRmRsSUhCMWRDQnBkQ0J2Ymx4dUlDQWdJQzh2SUdGdUlHVjRkR1Z5Ym1Gc0lHSmhZMnRwYm1jZ2MzUnZjbVVnYzI4Z2RHaGhkQ0IzWlNCallXNGdabkpsWlhwbElIUm9aU0IzYUc5c1pTQnZZbXBsWTNRdVhHNGdJQ0FnTHk4Z1ZHaHBjeUJqWVc0Z1ltVWdjbVZ3YkdGalpXUWdkMmwwYUNCaElGZGxZV3ROWVhBZ2IyNWpaU0IwYUdWNUlHRnlaU0JwYlhCc1pXMWxiblJsWkNCcGJseHVJQ0FnSUM4dklHTnZiVzF2Ym14NUlIVnpaV1FnWkdWMlpXeHZjRzFsYm5RZ1pXNTJhWEp2Ym0xbGJuUnpMbHh1SUNBZ0lHVnNaVzFsYm5RdVgzTjBiM0psSUQwZ2UzMDdYRzVjYmlBZ0lDQXZMeUJVYnlCdFlXdGxJR052YlhCaGNtbHVaeUJTWldGamRFVnNaVzFsYm5SeklHVmhjMmxsY2lCbWIzSWdkR1Z6ZEdsdVp5QndkWEp3YjNObGN5d2dkMlVnYldGclpWeHVJQ0FnSUM4dklIUm9aU0IyWVd4cFpHRjBhVzl1SUdac1lXY2dibTl1TFdWdWRXMWxjbUZpYkdVZ0tIZG9aWEpsSUhCdmMzTnBZbXhsTENCM2FHbGphQ0J6YUc5MWJHUmNiaUFnSUNBdkx5QnBibU5zZFdSbElHVjJaWEo1SUdWdWRtbHliMjV0Wlc1MElIZGxJSEoxYmlCMFpYTjBjeUJwYmlrc0lITnZJSFJvWlNCMFpYTjBJR1p5WVcxbGQyOXlhMXh1SUNBZ0lDOHZJR2xuYm05eVpYTWdhWFF1WEc0Z0lDQWdhV1lnS0dOaGJrUmxabWx1WlZCeWIzQmxjblI1S1NCN1hHNGdJQ0FnSUNCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29aV3hsYldWdWRDNWZjM1J2Y21Vc0lDZDJZV3hwWkdGMFpXUW5MQ0I3WEc0Z0lDQWdJQ0FnSUdOdmJtWnBaM1Z5WVdKc1pUb2dabUZzYzJVc1hHNGdJQ0FnSUNBZ0lHVnVkVzFsY21GaWJHVTZJR1poYkhObExGeHVJQ0FnSUNBZ0lDQjNjbWwwWVdKc1pUb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ2RtRnNkV1U2SUdaaGJITmxYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQzh2SUhObGJHWWdZVzVrSUhOdmRYSmpaU0JoY21VZ1JFVldJRzl1YkhrZ2NISnZjR1Z5ZEdsbGN5NWNiaUFnSUNBZ0lFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2hsYkdWdFpXNTBMQ0FuWDNObGJHWW5MQ0I3WEc0Z0lDQWdJQ0FnSUdOdmJtWnBaM1Z5WVdKc1pUb2dabUZzYzJVc1hHNGdJQ0FnSUNBZ0lHVnVkVzFsY21GaWJHVTZJR1poYkhObExGeHVJQ0FnSUNBZ0lDQjNjbWwwWVdKc1pUb2dabUZzYzJVc1hHNGdJQ0FnSUNBZ0lIWmhiSFZsT2lCelpXeG1YRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQzh2SUZSM2J5QmxiR1Z0Wlc1MGN5QmpjbVZoZEdWa0lHbHVJSFIzYnlCa2FXWm1aWEpsYm5RZ2NHeGhZMlZ6SUhOb2IzVnNaQ0JpWlNCamIyNXphV1JsY21Wa1hHNGdJQ0FnSUNBdkx5QmxjWFZoYkNCbWIzSWdkR1Z6ZEdsdVp5QndkWEp3YjNObGN5QmhibVFnZEdobGNtVm1iM0psSUhkbElHaHBaR1VnYVhRZ1puSnZiU0JsYm5WdFpYSmhkR2x2Ymk1Y2JpQWdJQ0FnSUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaGxiR1Z0Wlc1MExDQW5YM052ZFhKalpTY3NJSHRjYmlBZ0lDQWdJQ0FnWTI5dVptbG5kWEpoWW14bE9pQm1ZV3h6WlN4Y2JpQWdJQ0FnSUNBZ1pXNTFiV1Z5WVdKc1pUb2dabUZzYzJVc1hHNGdJQ0FnSUNBZ0lIZHlhWFJoWW14bE9pQm1ZV3h6WlN4Y2JpQWdJQ0FnSUNBZ2RtRnNkV1U2SUhOdmRYSmpaVnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHVnNaVzFsYm5RdVgzTjBiM0psTG5aaGJHbGtZWFJsWkNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnWld4bGJXVnVkQzVmYzJWc1ppQTlJSE5sYkdZN1hHNGdJQ0FnSUNCbGJHVnRaVzUwTGw5emIzVnlZMlVnUFNCemIzVnlZMlU3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hQWW1wbFkzUXVabkpsWlhwbEtTQjdYRzRnSUNBZ0lDQlBZbXBsWTNRdVpuSmxaWHBsS0dWc1pXMWxiblF1Y0hKdmNITXBPMXh1SUNBZ0lDQWdUMkpxWldOMExtWnlaV1Y2WlNobGJHVnRaVzUwS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnWld4bGJXVnVkRHRjYm4wN1hHNWNiaThxS2x4dUlDb2dRM0psWVhSbElHRnVaQ0J5WlhSMWNtNGdZU0J1WlhjZ1VtVmhZM1JGYkdWdFpXNTBJRzltSUhSb1pTQm5hWFpsYmlCMGVYQmxMbHh1SUNvZ1UyVmxJR2gwZEhCek9pOHZabUZqWldKdmIyc3VaMmwwYUhWaUxtbHZMM0psWVdOMEwyUnZZM012ZEc5d0xXeGxkbVZzTFdGd2FTNW9kRzFzSTNKbFlXTjBMbU55WldGMFpXVnNaVzFsYm5SY2JpQXFMMXh1VW1WaFkzUkZiR1Z0Wlc1MExtTnlaV0YwWlVWc1pXMWxiblFnUFNCbWRXNWpkR2x2YmlBb2RIbHdaU3dnWTI5dVptbG5MQ0JqYUdsc1pISmxiaWtnZTF4dUlDQjJZWElnY0hKdmNFNWhiV1U3WEc1Y2JpQWdMeThnVW1WelpYSjJaV1FnYm1GdFpYTWdZWEpsSUdWNGRISmhZM1JsWkZ4dUlDQjJZWElnY0hKdmNITWdQU0I3ZlR0Y2JseHVJQ0IyWVhJZ2EyVjVJRDBnYm5Wc2JEdGNiaUFnZG1GeUlISmxaaUE5SUc1MWJHdzdYRzRnSUhaaGNpQnpaV3htSUQwZ2JuVnNiRHRjYmlBZ2RtRnlJSE52ZFhKalpTQTlJRzUxYkd3N1hHNWNiaUFnYVdZZ0tHTnZibVpwWnlBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnYVdZZ0tHaGhjMVpoYkdsa1VtVm1LR052Ym1acFp5a3BJSHRjYmlBZ0lDQWdJSEpsWmlBOUlHTnZibVpwWnk1eVpXWTdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaG9ZWE5XWVd4cFpFdGxlU2hqYjI1bWFXY3BLU0I3WEc0Z0lDQWdJQ0JyWlhrZ1BTQW5KeUFySUdOdmJtWnBaeTVyWlhrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYzJWc1ppQTlJR052Ym1acFp5NWZYM05sYkdZZ1BUMDlJSFZ1WkdWbWFXNWxaQ0EvSUc1MWJHd2dPaUJqYjI1bWFXY3VYMTl6Wld4bU8xeHVJQ0FnSUhOdmRYSmpaU0E5SUdOdmJtWnBaeTVmWDNOdmRYSmpaU0E5UFQwZ2RXNWtaV1pwYm1Wa0lEOGdiblZzYkNBNklHTnZibVpwWnk1ZlgzTnZkWEpqWlR0Y2JpQWdJQ0F2THlCU1pXMWhhVzVwYm1jZ2NISnZjR1Z5ZEdsbGN5QmhjbVVnWVdSa1pXUWdkRzhnWVNCdVpYY2djSEp2Y0hNZ2IySnFaV04wWEc0Z0lDQWdabTl5SUNod2NtOXdUbUZ0WlNCcGJpQmpiMjVtYVdjcElIdGNiaUFnSUNBZ0lHbG1JQ2hvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0dOdmJtWnBaeXdnY0hKdmNFNWhiV1VwSUNZbUlDRlNSVk5GVWxaRlJGOVFVazlRVXk1b1lYTlBkMjVRY205d1pYSjBlU2h3Y205d1RtRnRaU2twSUh0Y2JpQWdJQ0FnSUNBZ2NISnZjSE5iY0hKdmNFNWhiV1ZkSUQwZ1kyOXVabWxuVzNCeWIzQk9ZVzFsWFR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNBdkx5QkRhR2xzWkhKbGJpQmpZVzRnWW1VZ2JXOXlaU0IwYUdGdUlHOXVaU0JoY21kMWJXVnVkQ3dnWVc1a0lIUm9iM05sSUdGeVpTQjBjbUZ1YzJabGNuSmxaQ0J2Ym5SdlhHNGdJQzh2SUhSb1pTQnVaWGRzZVNCaGJHeHZZMkYwWldRZ2NISnZjSE1nYjJKcVpXTjBMbHh1SUNCMllYSWdZMmhwYkdSeVpXNU1aVzVuZEdnZ1BTQmhjbWQxYldWdWRITXViR1Z1WjNSb0lDMGdNanRjYmlBZ2FXWWdLR05vYVd4a2NtVnVUR1Z1WjNSb0lEMDlQU0F4S1NCN1hHNGdJQ0FnY0hKdmNITXVZMmhwYkdSeVpXNGdQU0JqYUdsc1pISmxianRjYmlBZ2ZTQmxiSE5sSUdsbUlDaGphR2xzWkhKbGJreGxibWQwYUNBK0lERXBJSHRjYmlBZ0lDQjJZWElnWTJocGJHUkJjbkpoZVNBOUlFRnljbUY1S0dOb2FXeGtjbVZ1VEdWdVozUm9LVHRjYmlBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJR05vYVd4a2NtVnVUR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUdOb2FXeGtRWEp5WVhsYmFWMGdQU0JoY21kMWJXVnVkSE5iYVNBcklESmRPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnYVdZZ0tFOWlhbVZqZEM1bWNtVmxlbVVwSUh0Y2JpQWdJQ0FnSUNBZ1QySnFaV04wTG1aeVpXVjZaU2hqYUdsc1pFRnljbUY1S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjSEp2Y0hNdVkyaHBiR1J5Wlc0Z1BTQmphR2xzWkVGeWNtRjVPMXh1SUNCOVhHNWNiaUFnTHk4Z1VtVnpiMngyWlNCa1pXWmhkV3gwSUhCeWIzQnpYRzRnSUdsbUlDaDBlWEJsSUNZbUlIUjVjR1V1WkdWbVlYVnNkRkJ5YjNCektTQjdYRzRnSUNBZ2RtRnlJR1JsWm1GMWJIUlFjbTl3Y3lBOUlIUjVjR1V1WkdWbVlYVnNkRkJ5YjNCek8xeHVJQ0FnSUdadmNpQW9jSEp2Y0U1aGJXVWdhVzRnWkdWbVlYVnNkRkJ5YjNCektTQjdYRzRnSUNBZ0lDQnBaaUFvY0hKdmNITmJjSEp2Y0U1aGJXVmRJRDA5UFNCMWJtUmxabWx1WldRcElIdGNiaUFnSUNBZ0lDQWdjSEp2Y0hOYmNISnZjRTVoYldWZElEMGdaR1ZtWVhWc2RGQnliM0J6VzNCeWIzQk9ZVzFsWFR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMWNiaUFnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQnBaaUFvYTJWNUlIeDhJSEpsWmlrZ2UxeHVJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQndjbTl3Y3k0a0pIUjVjR1Z2WmlBOVBUMGdKM1Z1WkdWbWFXNWxaQ2NnZkh3Z2NISnZjSE11SkNSMGVYQmxiMllnSVQwOUlGSkZRVU5VWDBWTVJVMUZUbFJmVkZsUVJTa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ1pHbHpjR3hoZVU1aGJXVWdQU0IwZVhCbGIyWWdkSGx3WlNBOVBUMGdKMloxYm1OMGFXOXVKeUEvSUhSNWNHVXVaR2x6Y0d4aGVVNWhiV1VnZkh3Z2RIbHdaUzV1WVcxbElIeDhJQ2RWYm10dWIzZHVKeUE2SUhSNWNHVTdYRzRnSUNBZ0lDQWdJR2xtSUNoclpYa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCa1pXWnBibVZMWlhsUWNtOXdWMkZ5Ym1sdVowZGxkSFJsY2lod2NtOXdjeXdnWkdsemNHeGhlVTVoYldVcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR2xtSUNoeVpXWXBJSHRjYmlBZ0lDQWdJQ0FnSUNCa1pXWnBibVZTWldaUWNtOXdWMkZ5Ym1sdVowZGxkSFJsY2lod2NtOXdjeXdnWkdsemNHeGhlVTVoYldVcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCU1pXRmpkRVZzWlcxbGJuUW9kSGx3WlN3Z2EyVjVMQ0J5WldZc0lITmxiR1lzSUhOdmRYSmpaU3dnVW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEl1WTNWeWNtVnVkQ3dnY0hKdmNITXBPMXh1ZlR0Y2JseHVMeW9xWEc0Z0tpQlNaWFIxY200Z1lTQm1kVzVqZEdsdmJpQjBhR0YwSUhCeWIyUjFZMlZ6SUZKbFlXTjBSV3hsYldWdWRITWdiMllnWVNCbmFYWmxiaUIwZVhCbExseHVJQ29nVTJWbElHaDBkSEJ6T2k4dlptRmpaV0p2YjJzdVoybDBhSFZpTG1sdkwzSmxZV04wTDJSdlkzTXZkRzl3TFd4bGRtVnNMV0Z3YVM1b2RHMXNJM0psWVdOMExtTnlaV0YwWldaaFkzUnZjbmxjYmlBcUwxeHVVbVZoWTNSRmJHVnRaVzUwTG1OeVpXRjBaVVpoWTNSdmNua2dQU0JtZFc1amRHbHZiaUFvZEhsd1pTa2dlMXh1SUNCMllYSWdabUZqZEc5eWVTQTlJRkpsWVdOMFJXeGxiV1Z1ZEM1amNtVmhkR1ZGYkdWdFpXNTBMbUpwYm1Rb2JuVnNiQ3dnZEhsd1pTazdYRzRnSUM4dklFVjRjRzl6WlNCMGFHVWdkSGx3WlNCdmJpQjBhR1VnWm1GamRHOXllU0JoYm1RZ2RHaGxJSEJ5YjNSdmRIbHdaU0J6YnlCMGFHRjBJR2wwSUdOaGJpQmlaVnh1SUNBdkx5QmxZWE5wYkhrZ1lXTmpaWE56WldRZ2IyNGdaV3hsYldWdWRITXVJRVV1Wnk0Z1lEeEdiMjhnTHo0dWRIbHdaU0E5UFQwZ1JtOXZZQzVjYmlBZ0x5OGdWR2hwY3lCemFHOTFiR1FnYm05MElHSmxJRzVoYldWa0lHQmpiMjV6ZEhKMVkzUnZjbUFnYzJsdVkyVWdkR2hwY3lCdFlYa2dibTkwSUdKbElIUm9aU0JtZFc1amRHbHZibHh1SUNBdkx5QjBhR0YwSUdOeVpXRjBaV1FnZEdobElHVnNaVzFsYm5Rc0lHRnVaQ0JwZENCdFlYa2dibTkwSUdWMlpXNGdZbVVnWVNCamIyNXpkSEoxWTNSdmNpNWNiaUFnTHk4Z1RHVm5ZV041SUdodmIyc2dWRTlFVHpvZ1YyRnliaUJwWmlCMGFHbHpJR2x6SUdGalkyVnpjMlZrWEc0Z0lHWmhZM1J2Y25rdWRIbHdaU0E5SUhSNWNHVTdYRzRnSUhKbGRIVnliaUJtWVdOMGIzSjVPMXh1ZlR0Y2JseHVVbVZoWTNSRmJHVnRaVzUwTG1Oc2IyNWxRVzVrVW1Wd2JHRmpaVXRsZVNBOUlHWjFibU4wYVc5dUlDaHZiR1JGYkdWdFpXNTBMQ0J1WlhkTFpYa3BJSHRjYmlBZ2RtRnlJRzVsZDBWc1pXMWxiblFnUFNCU1pXRmpkRVZzWlcxbGJuUW9iMnhrUld4bGJXVnVkQzUwZVhCbExDQnVaWGRMWlhrc0lHOXNaRVZzWlcxbGJuUXVjbVZtTENCdmJHUkZiR1Z0Wlc1MExsOXpaV3htTENCdmJHUkZiR1Z0Wlc1MExsOXpiM1Z5WTJVc0lHOXNaRVZzWlcxbGJuUXVYMjkzYm1WeUxDQnZiR1JGYkdWdFpXNTBMbkJ5YjNCektUdGNibHh1SUNCeVpYUjFjbTRnYm1WM1JXeGxiV1Z1ZER0Y2JuMDdYRzVjYmk4cUtseHVJQ29nUTJ4dmJtVWdZVzVrSUhKbGRIVnliaUJoSUc1bGR5QlNaV0ZqZEVWc1pXMWxiblFnZFhOcGJtY2daV3hsYldWdWRDQmhjeUIwYUdVZ2MzUmhjblJwYm1jZ2NHOXBiblF1WEc0Z0tpQlRaV1VnYUhSMGNITTZMeTltWVdObFltOXZheTVuYVhSb2RXSXVhVzh2Y21WaFkzUXZaRzlqY3k5MGIzQXRiR1YyWld3dFlYQnBMbWgwYld3amNtVmhZM1F1WTJ4dmJtVmxiR1Z0Wlc1MFhHNGdLaTljYmxKbFlXTjBSV3hsYldWdWRDNWpiRzl1WlVWc1pXMWxiblFnUFNCbWRXNWpkR2x2YmlBb1pXeGxiV1Z1ZEN3Z1kyOXVabWxuTENCamFHbHNaSEpsYmlrZ2UxeHVJQ0IyWVhJZ2NISnZjRTVoYldVN1hHNWNiaUFnTHk4Z1QzSnBaMmx1WVd3Z2NISnZjSE1nWVhKbElHTnZjR2xsWkZ4dUlDQjJZWElnY0hKdmNITWdQU0JmWVhOemFXZHVLSHQ5TENCbGJHVnRaVzUwTG5CeWIzQnpLVHRjYmx4dUlDQXZMeUJTWlhObGNuWmxaQ0J1WVcxbGN5QmhjbVVnWlhoMGNtRmpkR1ZrWEc0Z0lIWmhjaUJyWlhrZ1BTQmxiR1Z0Wlc1MExtdGxlVHRjYmlBZ2RtRnlJSEpsWmlBOUlHVnNaVzFsYm5RdWNtVm1PMXh1SUNBdkx5QlRaV3htSUdseklIQnlaWE5sY25abFpDQnphVzVqWlNCMGFHVWdiM2R1WlhJZ2FYTWdjSEpsYzJWeWRtVmtMbHh1SUNCMllYSWdjMlZzWmlBOUlHVnNaVzFsYm5RdVgzTmxiR1k3WEc0Z0lDOHZJRk52ZFhKalpTQnBjeUJ3Y21WelpYSjJaV1FnYzJsdVkyVWdZMnh2Ym1WRmJHVnRaVzUwSUdseklIVnViR2xyWld4NUlIUnZJR0psSUhSaGNtZGxkR1ZrSUdKNUlHRmNiaUFnTHk4Z2RISmhibk53YVd4bGNpd2dZVzVrSUhSb1pTQnZjbWxuYVc1aGJDQnpiM1Z5WTJVZ2FYTWdjSEp2WW1GaWJIa2dZU0JpWlhSMFpYSWdhVzVrYVdOaGRHOXlJRzltSUhSb1pWeHVJQ0F2THlCMGNuVmxJRzkzYm1WeUxseHVJQ0IyWVhJZ2MyOTFjbU5sSUQwZ1pXeGxiV1Z1ZEM1ZmMyOTFjbU5sTzF4dVhHNGdJQzh2SUU5M2JtVnlJSGRwYkd3Z1ltVWdjSEpsYzJWeWRtVmtMQ0IxYm14bGMzTWdjbVZtSUdseklHOTJaWEp5YVdSa1pXNWNiaUFnZG1GeUlHOTNibVZ5SUQwZ1pXeGxiV1Z1ZEM1ZmIzZHVaWEk3WEc1Y2JpQWdhV1lnS0dOdmJtWnBaeUFoUFNCdWRXeHNLU0I3WEc0Z0lDQWdhV1lnS0doaGMxWmhiR2xrVW1WbUtHTnZibVpwWnlrcElIdGNiaUFnSUNBZ0lDOHZJRk5wYkdWdWRHeDVJSE4wWldGc0lIUm9aU0J5WldZZ1puSnZiU0IwYUdVZ2NHRnlaVzUwTGx4dUlDQWdJQ0FnY21WbUlEMGdZMjl1Wm1sbkxuSmxaanRjYmlBZ0lDQWdJRzkzYm1WeUlEMGdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWREdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tHaGhjMVpoYkdsa1MyVjVLR052Ym1acFp5a3BJSHRjYmlBZ0lDQWdJR3RsZVNBOUlDY25JQ3NnWTI5dVptbG5MbXRsZVR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCU1pXMWhhVzVwYm1jZ2NISnZjR1Z5ZEdsbGN5QnZkbVZ5Y21sa1pTQmxlR2x6ZEdsdVp5QndjbTl3YzF4dUlDQWdJSFpoY2lCa1pXWmhkV3gwVUhKdmNITTdYRzRnSUNBZ2FXWWdLR1ZzWlcxbGJuUXVkSGx3WlNBbUppQmxiR1Z0Wlc1MExuUjVjR1V1WkdWbVlYVnNkRkJ5YjNCektTQjdYRzRnSUNBZ0lDQmtaV1poZFd4MFVISnZjSE1nUFNCbGJHVnRaVzUwTG5SNWNHVXVaR1ZtWVhWc2RGQnliM0J6TzF4dUlDQWdJSDFjYmlBZ0lDQm1iM0lnS0hCeWIzQk9ZVzFsSUdsdUlHTnZibVpwWnlrZ2UxeHVJQ0FnSUNBZ2FXWWdLR2hoYzA5M2JsQnliM0JsY25SNUxtTmhiR3dvWTI5dVptbG5MQ0J3Y205d1RtRnRaU2tnSmlZZ0lWSkZVMFZTVmtWRVgxQlNUMUJUTG1oaGMwOTNibEJ5YjNCbGNuUjVLSEJ5YjNCT1lXMWxLU2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9ZMjl1Wm1sblczQnliM0JPWVcxbFhTQTlQVDBnZFc1a1pXWnBibVZrSUNZbUlHUmxabUYxYkhSUWNtOXdjeUFoUFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1VtVnpiMngyWlNCa1pXWmhkV3gwSUhCeWIzQnpYRzRnSUNBZ0lDQWdJQ0FnY0hKdmNITmJjSEp2Y0U1aGJXVmRJRDBnWkdWbVlYVnNkRkJ5YjNCelczQnliM0JPWVcxbFhUdGNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0J3Y205d2MxdHdjbTl3VG1GdFpWMGdQU0JqYjI1bWFXZGJjSEp2Y0U1aGJXVmRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnTHk4Z1EyaHBiR1J5Wlc0Z1kyRnVJR0psSUcxdmNtVWdkR2hoYmlCdmJtVWdZWEpuZFcxbGJuUXNJR0Z1WkNCMGFHOXpaU0JoY21VZ2RISmhibk5tWlhKeVpXUWdiMjUwYjF4dUlDQXZMeUIwYUdVZ2JtVjNiSGtnWVd4c2IyTmhkR1ZrSUhCeWIzQnpJRzlpYW1WamRDNWNiaUFnZG1GeUlHTm9hV3hrY21WdVRHVnVaM1JvSUQwZ1lYSm5kVzFsYm5SekxteGxibWQwYUNBdElESTdYRzRnSUdsbUlDaGphR2xzWkhKbGJreGxibWQwYUNBOVBUMGdNU2tnZTF4dUlDQWdJSEJ5YjNCekxtTm9hV3hrY21WdUlEMGdZMmhwYkdSeVpXNDdYRzRnSUgwZ1pXeHpaU0JwWmlBb1kyaHBiR1J5Wlc1TVpXNW5kR2dnUGlBeEtTQjdYRzRnSUNBZ2RtRnlJR05vYVd4a1FYSnlZWGtnUFNCQmNuSmhlU2hqYUdsc1pISmxia3hsYm1kMGFDazdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BDQmphR2xzWkhKbGJreGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JqYUdsc1pFRnljbUY1VzJsZElEMGdZWEpuZFcxbGJuUnpXMmtnS3lBeVhUdGNiaUFnSUNCOVhHNGdJQ0FnY0hKdmNITXVZMmhwYkdSeVpXNGdQU0JqYUdsc1pFRnljbUY1TzF4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUZKbFlXTjBSV3hsYldWdWRDaGxiR1Z0Wlc1MExuUjVjR1VzSUd0bGVTd2djbVZtTENCelpXeG1MQ0J6YjNWeVkyVXNJRzkzYm1WeUxDQndjbTl3Y3lrN1hHNTlPMXh1WEc0dktpcGNiaUFxSUZabGNtbG1hV1Z6SUhSb1pTQnZZbXBsWTNRZ2FYTWdZU0JTWldGamRFVnNaVzFsYm5RdVhHNGdLaUJUWldVZ2FIUjBjSE02THk5bVlXTmxZbTl2YXk1bmFYUm9kV0l1YVc4dmNtVmhZM1F2Wkc5amN5OTBiM0F0YkdWMlpXd3RZWEJwTG1oMGJXd2pjbVZoWTNRdWFYTjJZV3hwWkdWc1pXMWxiblJjYmlBcUlFQndZWEpoYlNCN1AyOWlhbVZqZEgwZ2IySnFaV04wWEc0Z0tpQkFjbVYwZFhKdUlIdGliMjlzWldGdWZTQlVjblZsSUdsbUlHQnZZbXBsWTNSZ0lHbHpJR0VnZG1Gc2FXUWdZMjl0Y0c5dVpXNTBMbHh1SUNvZ1FHWnBibUZzWEc0Z0tpOWNibEpsWVdOMFJXeGxiV1Z1ZEM1cGMxWmhiR2xrUld4bGJXVnVkQ0E5SUdaMWJtTjBhVzl1SUNodlltcGxZM1FwSUh0Y2JpQWdjbVYwZFhKdUlIUjVjR1Z2WmlCdlltcGxZM1FnUFQwOUlDZHZZbXBsWTNRbklDWW1JRzlpYW1WamRDQWhQVDBnYm5Wc2JDQW1KaUJ2WW1wbFkzUXVKQ1IwZVhCbGIyWWdQVDA5SUZKRlFVTlVYMFZNUlUxRlRsUmZWRmxRUlR0Y2JuMDdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnVW1WaFkzUkZiR1Z0Wlc1ME8xeHVYRzVjYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OGdWMFZDVUVGRFN5QkdUMDlVUlZKY2JpOHZJQzR2Zmk5eVpXRmpkQzlzYVdJdlVtVmhZM1JGYkdWdFpXNTBMbXB6WEc0dkx5QnRiMlIxYkdVZ2FXUWdQU0F6WEc0dkx5QnRiMlIxYkdVZ1kyaDFibXR6SUQwZ01DSmRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCSWl3aWMyOTFjbU5sVW05dmRDSTZJaUo5XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzNcXG5cIik7XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9+L3JlYWN0L2xpYi9yZWFjdFByb2RJbnZhcmlhbnQuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qKlxcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxcbiAqXFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbiAqXFxuICogXFxuICovXFxuXFxuXFxuLyoqXFxuICogV0FSTklORzogRE8gTk9UIG1hbnVhbGx5IHJlcXVpcmUgdGhpcyBtb2R1bGUuXFxuICogVGhpcyBpcyBhIHJlcGxhY2VtZW50IGZvciBgaW52YXJpYW50KC4uLilgIHVzZWQgYnkgdGhlIGVycm9yIGNvZGUgc3lzdGVtXFxuICogYW5kIHdpbGwgX29ubHlfIGJlIHJlcXVpcmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGJhYmVsIHBhc3MuXFxuICogSXQgYWx3YXlzIHRocm93cy5cXG4gKi9cXG5cXG5mdW5jdGlvbiByZWFjdFByb2RJbnZhcmlhbnQoY29kZSkge1xcbiAgdmFyIGFyZ0NvdW50ID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XFxuXFxuICB2YXIgbWVzc2FnZSA9ICdNaW5pZmllZCBSZWFjdCBlcnJvciAjJyArIGNvZGUgKyAnOyB2aXNpdCAnICsgJ2h0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PScgKyBjb2RlO1xcblxcbiAgZm9yICh2YXIgYXJnSWR4ID0gMDsgYXJnSWR4IDwgYXJnQ291bnQ7IGFyZ0lkeCsrKSB7XFxuICAgIG1lc3NhZ2UgKz0gJyZhcmdzW109JyArIGVuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbYXJnSWR4ICsgMV0pO1xcbiAgfVxcblxcbiAgbWVzc2FnZSArPSAnIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCcgKyAnIGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLic7XFxuXFxuICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XFxuICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xcbiAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IHJlYWN0UHJvZEludmFyaWFudCdzIG93biBmcmFtZVxcblxcbiAgdGhyb3cgZXJyb3I7XFxufVxcblxcbm1vZHVsZS5leHBvcnRzID0gcmVhY3RQcm9kSW52YXJpYW50Oy8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaU5DNXFjeUlzSW5OdmRYSmpaWE1pT2xzaWQyVmljR0ZqYXpvdkx5OHVMMzR2Y21WaFkzUXZiR2xpTDNKbFlXTjBVSEp2WkVsdWRtRnlhV0Z1ZEM1cWN6OWxNek5tSWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElDaGpLU0F5TURFekxYQnlaWE5sYm5Rc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1RVbFVJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVYRzRnS2x4dUlDb2dYRzRnS2k5Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dUx5b3FYRzRnS2lCWFFWSk9TVTVIT2lCRVR5Qk9UMVFnYldGdWRXRnNiSGtnY21WeGRXbHlaU0IwYUdseklHMXZaSFZzWlM1Y2JpQXFJRlJvYVhNZ2FYTWdZU0J5WlhCc1lXTmxiV1Z1ZENCbWIzSWdZR2x1ZG1GeWFXRnVkQ2d1TGk0cFlDQjFjMlZrSUdKNUlIUm9aU0JsY25KdmNpQmpiMlJsSUhONWMzUmxiVnh1SUNvZ1lXNWtJSGRwYkd3Z1gyOXViSGxmSUdKbElISmxjWFZwY21Wa0lHSjVJSFJvWlNCamIzSnlaWE53YjI1a2FXNW5JR0poWW1Wc0lIQmhjM011WEc0Z0tpQkpkQ0JoYkhkaGVYTWdkR2h5YjNkekxseHVJQ292WEc1Y2JtWjFibU4wYVc5dUlISmxZV04wVUhKdlpFbHVkbUZ5YVdGdWRDaGpiMlJsS1NCN1hHNGdJSFpoY2lCaGNtZERiM1Z1ZENBOUlHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ0xTQXhPMXh1WEc0Z0lIWmhjaUJ0WlhOellXZGxJRDBnSjAxcGJtbG1hV1ZrSUZKbFlXTjBJR1Z5Y205eUlDTW5JQ3NnWTI5a1pTQXJJQ2M3SUhacGMybDBJQ2NnS3lBbmFIUjBjRG92TDJaaFkyVmliMjlyTG1kcGRHaDFZaTVwYnk5eVpXRmpkQzlrYjJOekwyVnljbTl5TFdSbFkyOWtaWEl1YUhSdGJEOXBiblpoY21saGJuUTlKeUFySUdOdlpHVTdYRzVjYmlBZ1ptOXlJQ2gyWVhJZ1lYSm5TV1I0SUQwZ01Ec2dZWEpuU1dSNElEd2dZWEpuUTI5MWJuUTdJR0Z5WjBsa2VDc3JLU0I3WEc0Z0lDQWdiV1Z6YzJGblpTQXJQU0FuSm1GeVozTmJYVDBuSUNzZ1pXNWpiMlJsVlZKSlEyOXRjRzl1Wlc1MEtHRnlaM1Z0Wlc1MGMxdGhjbWRKWkhnZ0t5QXhYU2s3WEc0Z0lIMWNibHh1SUNCdFpYTnpZV2RsSUNzOUlDY2dabTl5SUhSb1pTQm1kV3hzSUcxbGMzTmhaMlVnYjNJZ2RYTmxJSFJvWlNCdWIyNHRiV2x1YVdacFpXUWdaR1YySUdWdWRtbHliMjV0Wlc1MEp5QXJJQ2NnWm05eUlHWjFiR3dnWlhKeWIzSnpJR0Z1WkNCaFpHUnBkR2x2Ym1Gc0lHaGxiSEJtZFd3Z2QyRnlibWx1WjNNdUp6dGNibHh1SUNCMllYSWdaWEp5YjNJZ1BTQnVaWGNnUlhKeWIzSW9iV1Z6YzJGblpTazdYRzRnSUdWeWNtOXlMbTVoYldVZ1BTQW5TVzUyWVhKcFlXNTBJRlpwYjJ4aGRHbHZiaWM3WEc0Z0lHVnljbTl5TG1aeVlXMWxjMVJ2VUc5d0lEMGdNVHNnTHk4Z2QyVWdaRzl1SjNRZ1kyRnlaU0JoWW05MWRDQnlaV0ZqZEZCeWIyUkpiblpoY21saGJuUW5jeUJ2ZDI0Z1puSmhiV1ZjYmx4dUlDQjBhSEp2ZHlCbGNuSnZjanRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQnlaV0ZqZEZCeWIyUkpiblpoY21saGJuUTdYRzVjYmx4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeUJYUlVKUVFVTkxJRVpQVDFSRlVseHVMeThnTGk5K0wzSmxZV04wTDJ4cFlpOXlaV0ZqZEZCeWIyUkpiblpoY21saGJuUXVhbk5jYmk4dklHMXZaSFZzWlNCcFpDQTlJRFJjYmk4dklHMXZaSFZzWlNCamFIVnVhM01nUFNBd0lsMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKemIzVnlZMlZTYjI5MElqb2lJbjA9XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzRcXG5cIik7XG5cbi8qKiovIH0pLFxuLyogNSAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9+L29iamVjdC1hc3NpZ24vaW5kZXguanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qXFxub2JqZWN0LWFzc2lnblxcbihjKSBTaW5kcmUgU29yaHVzXFxuQGxpY2Vuc2UgTUlUXFxuKi9cXG5cXG5cXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XFxudmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xcblxcbmZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xcblxcdGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcXG5cXHRcXHR0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCcpO1xcblxcdH1cXG5cXG5cXHRyZXR1cm4gT2JqZWN0KHZhbCk7XFxufVxcblxcbmZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcXG5cXHR0cnkge1xcblxcdFxcdGlmICghT2JqZWN0LmFzc2lnbikge1xcblxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gRGV0ZWN0IGJ1Z2d5IHByb3BlcnR5IGVudW1lcmF0aW9uIG9yZGVyIGluIG9sZGVyIFY4IHZlcnNpb25zLlxcblxcblxcdFxcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMThcXG5cXHRcXHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3LXdyYXBwZXJzXFxuXFx0XFx0dGVzdDFbNV0gPSAnZGUnO1xcblxcdFxcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1Jykge1xcblxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxcblxcdFxcdHZhciB0ZXN0MiA9IHt9O1xcblxcdFxcdGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykge1xcblxcdFxcdFxcdHRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcXG5cXHRcXHR9XFxuXFx0XFx0dmFyIG9yZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtcXG5cXHRcXHRcXHRyZXR1cm4gdGVzdDJbbl07XFxuXFx0XFx0fSk7XFxuXFx0XFx0aWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XFxuXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcblxcdFxcdH1cXG5cXG5cXHRcXHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XFxuXFx0XFx0dmFyIHRlc3QzID0ge307XFxuXFx0XFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XFxuXFx0XFx0XFx0dGVzdDNbbGV0dGVyXSA9IGxldHRlcjtcXG5cXHRcXHR9KTtcXG5cXHRcXHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cXG5cXHRcXHRcXHRcXHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XFxuXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcblxcdFxcdH1cXG5cXG5cXHRcXHRyZXR1cm4gdHJ1ZTtcXG5cXHR9IGNhdGNoIChlcnIpIHtcXG5cXHRcXHQvLyBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxcblxcdFxcdHJldHVybiBmYWxzZTtcXG5cXHR9XFxufVxcblxcbm1vZHVsZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7XFxuXFx0dmFyIGZyb207XFxuXFx0dmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTtcXG5cXHR2YXIgc3ltYm9scztcXG5cXG5cXHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykge1xcblxcdFxcdGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTtcXG5cXG5cXHRcXHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xcblxcdFxcdFxcdGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZyb20sIGtleSkpIHtcXG5cXHRcXHRcXHRcXHR0b1trZXldID0gZnJvbVtrZXldO1xcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFxuXFx0XFx0aWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xcblxcdFxcdFxcdHN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XFxuXFx0XFx0XFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzeW1ib2xzLmxlbmd0aDsgaSsrKSB7XFxuXFx0XFx0XFx0XFx0aWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xcblxcdFxcdFxcdFxcdFxcdHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fVxcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0cmV0dXJuIHRvO1xcbn07XFxuLy8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTlM1cWN5SXNJbk52ZFhKalpYTWlPbHNpZDJWaWNHRmphem92THk4dUwzNHZiMkpxWldOMExXRnpjMmxuYmk5cGJtUmxlQzVxY3o4eU9USTNJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cVhHNXZZbXBsWTNRdFlYTnphV2R1WEc0b1l5a2dVMmx1WkhKbElGTnZjbWgxYzF4dVFHeHBZMlZ1YzJVZ1RVbFVYRzRxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc0dktpQmxjMnhwYm5RdFpHbHpZV0pzWlNCdWJ5MTFiblZ6WldRdGRtRnljeUFxTDF4dWRtRnlJR2RsZEU5M2JsQnliM0JsY25SNVUzbHRZbTlzY3lBOUlFOWlhbVZqZEM1blpYUlBkMjVRY205d1pYSjBlVk41YldKdmJITTdYRzUyWVhJZ2FHRnpUM2R1VUhKdmNHVnlkSGtnUFNCUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG1oaGMwOTNibEJ5YjNCbGNuUjVPMXh1ZG1GeUlIQnliM0JKYzBWdWRXMWxjbUZpYkdVZ1BTQlBZbXBsWTNRdWNISnZkRzkwZVhCbExuQnliM0JsY25SNVNYTkZiblZ0WlhKaFlteGxPMXh1WEc1bWRXNWpkR2x2YmlCMGIwOWlhbVZqZENoMllXd3BJSHRjYmx4MGFXWWdLSFpoYkNBOVBUMGdiblZzYkNCOGZDQjJZV3dnUFQwOUlIVnVaR1ZtYVc1bFpDa2dlMXh1WEhSY2RIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9KMDlpYW1WamRDNWhjM05wWjI0Z1kyRnVibTkwSUdKbElHTmhiR3hsWkNCM2FYUm9JRzUxYkd3Z2IzSWdkVzVrWldacGJtVmtKeWs3WEc1Y2RIMWNibHh1WEhSeVpYUjFjbTRnVDJKcVpXTjBLSFpoYkNrN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUhOb2IzVnNaRlZ6WlU1aGRHbDJaU2dwSUh0Y2JseDBkSEo1SUh0Y2JseDBYSFJwWmlBb0lVOWlhbVZqZEM1aGMzTnBaMjRwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJtWVd4elpUdGNibHgwWEhSOVhHNWNibHgwWEhRdkx5QkVaWFJsWTNRZ1luVm5aM2tnY0hKdmNHVnlkSGtnWlc1MWJXVnlZWFJwYjI0Z2IzSmtaWElnYVc0Z2IyeGtaWElnVmpnZ2RtVnljMmx2Ym5NdVhHNWNibHgwWEhRdkx5Qm9kSFJ3Y3pvdkwySjFaM011WTJoeWIyMXBkVzB1YjNKbkwzQXZkamd2YVhOemRXVnpMMlJsZEdGcGJEOXBaRDAwTVRFNFhHNWNkRngwZG1GeUlIUmxjM1F4SUQwZ2JtVjNJRk4wY21sdVp5Z25ZV0pqSnlrN0lDQXZMeUJsYzJ4cGJuUXRaR2x6WVdKc1pTMXNhVzVsSUc1dkxXNWxkeTEzY21Gd2NHVnljMXh1WEhSY2RIUmxjM1F4V3pWZElEMGdKMlJsSnp0Y2JseDBYSFJwWmlBb1QySnFaV04wTG1kbGRFOTNibEJ5YjNCbGNuUjVUbUZ0WlhNb2RHVnpkREVwV3pCZElEMDlQU0FuTlNjcElIdGNibHgwWEhSY2RISmxkSFZ5YmlCbVlXeHpaVHRjYmx4MFhIUjlYRzVjYmx4MFhIUXZMeUJvZEhSd2N6b3ZMMkoxWjNNdVkyaHliMjFwZFcwdWIzSm5MM0F2ZGpndmFYTnpkV1Z6TDJSbGRHRnBiRDlwWkQwek1EVTJYRzVjZEZ4MGRtRnlJSFJsYzNReUlEMGdlMzA3WEc1Y2RGeDBabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0F4TURzZ2FTc3JLU0I3WEc1Y2RGeDBYSFIwWlhOME1sc25YeWNnS3lCVGRISnBibWN1Wm5KdmJVTm9ZWEpEYjJSbEtHa3BYU0E5SUdrN1hHNWNkRngwZlZ4dVhIUmNkSFpoY2lCdmNtUmxjaklnUFNCUFltcGxZM1F1WjJWMFQzZHVVSEp2Y0dWeWRIbE9ZVzFsY3loMFpYTjBNaWt1YldGd0tHWjFibU4wYVc5dUlDaHVLU0I3WEc1Y2RGeDBYSFJ5WlhSMWNtNGdkR1Z6ZERKYmJsMDdYRzVjZEZ4MGZTazdYRzVjZEZ4MGFXWWdLRzl5WkdWeU1pNXFiMmx1S0NjbktTQWhQVDBnSnpBeE1qTTBOVFkzT0RrbktTQjdYRzVjZEZ4MFhIUnlaWFIxY200Z1ptRnNjMlU3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBMeThnYUhSMGNITTZMeTlpZFdkekxtTm9jbTl0YVhWdExtOXlaeTl3TDNZNEwybHpjM1ZsY3k5a1pYUmhhV3cvYVdROU16QTFObHh1WEhSY2RIWmhjaUIwWlhOME15QTlJSHQ5TzF4dVhIUmNkQ2RoWW1Oa1pXWm5hR2xxYTJ4dGJtOXdjWEp6ZENjdWMzQnNhWFFvSnljcExtWnZja1ZoWTJnb1puVnVZM1JwYjI0Z0tHeGxkSFJsY2lrZ2UxeHVYSFJjZEZ4MGRHVnpkRE5iYkdWMGRHVnlYU0E5SUd4bGRIUmxjanRjYmx4MFhIUjlLVHRjYmx4MFhIUnBaaUFvVDJKcVpXTjBMbXRsZVhNb1QySnFaV04wTG1GemMybG5iaWg3ZlN3Z2RHVnpkRE1wS1M1cWIybHVLQ2NuS1NBaFBUMWNibHgwWEhSY2RGeDBKMkZpWTJSbFptZG9hV3ByYkcxdWIzQnhjbk4wSnlrZ2UxeHVYSFJjZEZ4MGNtVjBkWEp1SUdaaGJITmxPMXh1WEhSY2RIMWNibHh1WEhSY2RISmxkSFZ5YmlCMGNuVmxPMXh1WEhSOUlHTmhkR05vSUNobGNuSXBJSHRjYmx4MFhIUXZMeUJYWlNCa2IyNG5kQ0JsZUhCbFkzUWdZVzU1SUc5bUlIUm9aU0JoWW05MlpTQjBieUIwYUhKdmR5d2dZblYwSUdKbGRIUmxjaUIwYnlCaVpTQnpZV1psTGx4dVhIUmNkSEpsZEhWeWJpQm1ZV3h6WlR0Y2JseDBmVnh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlITm9iM1ZzWkZWelpVNWhkR2wyWlNncElEOGdUMkpxWldOMExtRnpjMmxuYmlBNklHWjFibU4wYVc5dUlDaDBZWEpuWlhRc0lITnZkWEpqWlNrZ2UxeHVYSFIyWVhJZ1puSnZiVHRjYmx4MGRtRnlJSFJ2SUQwZ2RHOVBZbXBsWTNRb2RHRnlaMlYwS1R0Y2JseDBkbUZ5SUhONWJXSnZiSE03WEc1Y2JseDBabTl5SUNoMllYSWdjeUE5SURFN0lITWdQQ0JoY21kMWJXVnVkSE11YkdWdVozUm9PeUJ6S3lzcElIdGNibHgwWEhSbWNtOXRJRDBnVDJKcVpXTjBLR0Z5WjNWdFpXNTBjMXR6WFNrN1hHNWNibHgwWEhSbWIzSWdLSFpoY2lCclpYa2dhVzRnWm5KdmJTa2dlMXh1WEhSY2RGeDBhV1lnS0doaGMwOTNibEJ5YjNCbGNuUjVMbU5oYkd3b1puSnZiU3dnYTJWNUtTa2dlMXh1WEhSY2RGeDBYSFIwYjF0clpYbGRJRDBnWm5KdmJWdHJaWGxkTzF4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4dVhIUmNkR2xtSUNoblpYUlBkMjVRY205d1pYSjBlVk41YldKdmJITXBJSHRjYmx4MFhIUmNkSE41YldKdmJITWdQU0JuWlhSUGQyNVFjbTl3WlhKMGVWTjViV0p2YkhNb1puSnZiU2s3WEc1Y2RGeDBYSFJtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUhONWJXSnZiSE11YkdWdVozUm9PeUJwS3lzcElIdGNibHgwWEhSY2RGeDBhV1lnS0hCeWIzQkpjMFZ1ZFcxbGNtRmliR1V1WTJGc2JDaG1jbTl0TENCemVXMWliMnh6VzJsZEtTa2dlMXh1WEhSY2RGeDBYSFJjZEhSdlczTjViV0p2YkhOYmFWMWRJRDBnWm5KdmJWdHplVzFpYjJ4elcybGRYVHRjYmx4MFhIUmNkRngwZlZ4dVhIUmNkRngwZlZ4dVhIUmNkSDFjYmx4MGZWeHVYRzVjZEhKbGRIVnliaUIwYnp0Y2JuMDdYRzVjYmx4dVhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNiaTh2SUZkRlFsQkJRMHNnUms5UFZFVlNYRzR2THlBdUwzNHZiMkpxWldOMExXRnpjMmxuYmk5cGJtUmxlQzVxYzF4dUx5OGdiVzlrZFd4bElHbGtJRDBnTlZ4dUx5OGdiVzlrZFd4bElHTm9kVzVyY3lBOUlEQWlYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVRzaUxDSnpiM1Z5WTJWU2IyOTBJam9pSW4wPVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy81XFxuXCIpO1xuXG4vKioqLyB9KSxcbi8qIDYgKi9cbi8qIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKiBhbGwgZXhwb3J0cyB1c2VkICovXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vfi9mYmpzL2xpYi9lbXB0eUZ1bmN0aW9uLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbmV2YWwoXCJcXG5cXG4vKipcXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cXG4gKlxcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4gKlxcbiAqIFxcbiAqL1xcblxcbmZ1bmN0aW9uIG1ha2VFbXB0eUZ1bmN0aW9uKGFyZykge1xcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcXG4gICAgcmV0dXJuIGFyZztcXG4gIH07XFxufVxcblxcbi8qKlxcbiAqIFRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhbmQgZGlzY2FyZHMgaW5wdXRzOyBpdCBoYXMgbm8gc2lkZSBlZmZlY3RzLiBUaGlzIGlzXFxuICogcHJpbWFyaWx5IHVzZWZ1bCBpZGlvbWF0aWNhbGx5IGZvciBvdmVycmlkYWJsZSBmdW5jdGlvbiBlbmRwb2ludHMgd2hpY2hcXG4gKiBhbHdheXMgbmVlZCB0byBiZSBjYWxsYWJsZSwgc2luY2UgSlMgbGFja3MgYSBudWxsLWNhbGwgaWRpb20gYWxhIENvY29hLlxcbiAqL1xcbnZhciBlbXB0eUZ1bmN0aW9uID0gZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9O1xcblxcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnMgPSBtYWtlRW1wdHlGdW5jdGlvbjtcXG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2UgPSBtYWtlRW1wdHlGdW5jdGlvbihmYWxzZSk7XFxuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWUgPSBtYWtlRW1wdHlGdW5jdGlvbih0cnVlKTtcXG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCA9IG1ha2VFbXB0eUZ1bmN0aW9uKG51bGwpO1xcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUaGlzID0gZnVuY3Rpb24gKCkge1xcbiAgcmV0dXJuIHRoaXM7XFxufTtcXG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQgPSBmdW5jdGlvbiAoYXJnKSB7XFxuICByZXR1cm4gYXJnO1xcbn07XFxuXFxubW9kdWxlLmV4cG9ydHMgPSBlbXB0eUZ1bmN0aW9uOy8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaU5pNXFjeUlzSW5OdmRYSmpaWE1pT2xzaWQyVmljR0ZqYXpvdkx5OHVMMzR2Wm1KcWN5OXNhV0l2Wlcxd2RIbEdkVzVqZEdsdmJpNXFjejh5WVROaUlsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbHdpZFhObElITjBjbWxqZEZ3aU8xeHVYRzR2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0FvWXlrZ01qQXhNeTF3Y21WelpXNTBMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRTFKVkNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGx4dUlDcGNiaUFxSUZ4dUlDb3ZYRzVjYm1aMWJtTjBhVzl1SUcxaGEyVkZiWEIwZVVaMWJtTjBhVzl1S0dGeVp5a2dlMXh1SUNCeVpYUjFjbTRnWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJoY21jN1hHNGdJSDA3WEc1OVhHNWNiaThxS2x4dUlDb2dWR2hwY3lCbWRXNWpkR2x2YmlCaFkyTmxjSFJ6SUdGdVpDQmthWE5qWVhKa2N5QnBibkIxZEhNN0lHbDBJR2hoY3lCdWJ5QnphV1JsSUdWbVptVmpkSE11SUZSb2FYTWdhWE5jYmlBcUlIQnlhVzFoY21sc2VTQjFjMlZtZFd3Z2FXUnBiMjFoZEdsallXeHNlU0JtYjNJZ2IzWmxjbkpwWkdGaWJHVWdablZ1WTNScGIyNGdaVzVrY0c5cGJuUnpJSGRvYVdOb1hHNGdLaUJoYkhkaGVYTWdibVZsWkNCMGJ5QmlaU0JqWVd4c1lXSnNaU3dnYzJsdVkyVWdTbE1nYkdGamEzTWdZU0J1ZFd4c0xXTmhiR3dnYVdScGIyMGdZV3hoSUVOdlkyOWhMbHh1SUNvdlhHNTJZWElnWlcxd2RIbEdkVzVqZEdsdmJpQTlJR1oxYm1OMGFXOXVJR1Z0Y0hSNVJuVnVZM1JwYjI0b0tTQjdmVHRjYmx4dVpXMXdkSGxHZFc1amRHbHZiaTUwYUdGMFVtVjBkWEp1Y3lBOUlHMWhhMlZGYlhCMGVVWjFibU4wYVc5dU8xeHVaVzF3ZEhsR2RXNWpkR2x2Ymk1MGFHRjBVbVYwZFhKdWMwWmhiSE5sSUQwZ2JXRnJaVVZ0Y0hSNVJuVnVZM1JwYjI0b1ptRnNjMlVwTzF4dVpXMXdkSGxHZFc1amRHbHZiaTUwYUdGMFVtVjBkWEp1YzFSeWRXVWdQU0J0WVd0bFJXMXdkSGxHZFc1amRHbHZiaWgwY25WbEtUdGNibVZ0Y0hSNVJuVnVZM1JwYjI0dWRHaGhkRkpsZEhWeWJuTk9kV3hzSUQwZ2JXRnJaVVZ0Y0hSNVJuVnVZM1JwYjI0b2JuVnNiQ2s3WEc1bGJYQjBlVVoxYm1OMGFXOXVMblJvWVhSU1pYUjFjbTV6VkdocGN5QTlJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdjbVYwZFhKdUlIUm9hWE03WEc1OU8xeHVaVzF3ZEhsR2RXNWpkR2x2Ymk1MGFHRjBVbVYwZFhKdWMwRnlaM1Z0Wlc1MElEMGdablZ1WTNScGIyNGdLR0Z5WnlrZ2UxeHVJQ0J5WlhSMWNtNGdZWEpuTzF4dWZUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JsYlhCMGVVWjFibU4wYVc5dU8xeHVYRzVjYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OGdWMFZDVUVGRFN5QkdUMDlVUlZKY2JpOHZJQzR2Zmk5bVltcHpMMnhwWWk5bGJYQjBlVVoxYm1OMGFXOXVMbXB6WEc0dkx5QnRiMlIxYkdVZ2FXUWdQU0EyWEc0dkx5QnRiMlIxYkdVZ1kyaDFibXR6SUQwZ01DSmRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CSWl3aWMyOTFjbU5sVW05dmRDSTZJaUo5XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzZcXG5cIik7XG5cbi8qKiovIH0pLFxuLyogNyAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vcmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qKlxcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxcbiAqXFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbiAqXFxuICogXFxuICovXFxuXFxuXFxuXFxuLyoqXFxuICogS2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgb3duZXIuXFxuICpcXG4gKiBUaGUgY3VycmVudCBvd25lciBpcyB0aGUgY29tcG9uZW50IHdobyBzaG91bGQgb3duIGFueSBjb21wb25lbnRzIHRoYXQgYXJlXFxuICogY3VycmVudGx5IGJlaW5nIGNvbnN0cnVjdGVkLlxcbiAqL1xcbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHtcXG4gIC8qKlxcbiAgICogQGludGVybmFsXFxuICAgKiBAdHlwZSB7UmVhY3RDb21wb25lbnR9XFxuICAgKi9cXG4gIGN1cnJlbnQ6IG51bGxcXG59O1xcblxcbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDdXJyZW50T3duZXI7Ly8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTnk1cWN5SXNJbk52ZFhKalpYTWlPbHNpZDJWaWNHRmphem92THk4dUwzNHZjbVZoWTNRdmJHbGlMMUpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlMbXB6UHpZeFpHSWlYU3dpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnS0dNcElESXdNVE10Y0hKbGMyVnVkQ3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JOU1ZRZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM1Y2JpQXFYRzRnS2lCY2JpQXFMMXh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYmk4cUtseHVJQ29nUzJWbGNITWdkSEpoWTJzZ2IyWWdkR2hsSUdOMWNuSmxiblFnYjNkdVpYSXVYRzRnS2x4dUlDb2dWR2hsSUdOMWNuSmxiblFnYjNkdVpYSWdhWE1nZEdobElHTnZiWEJ2Ym1WdWRDQjNhRzhnYzJodmRXeGtJRzkzYmlCaGJua2dZMjl0Y0c5dVpXNTBjeUIwYUdGMElHRnlaVnh1SUNvZ1kzVnljbVZ1ZEd4NUlHSmxhVzVuSUdOdmJuTjBjblZqZEdWa0xseHVJQ292WEc1MllYSWdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSWdQU0I3WEc0Z0lDOHFLbHh1SUNBZ0tpQkFhVzUwWlhKdVlXeGNiaUFnSUNvZ1FIUjVjR1VnZTFKbFlXTjBRMjl0Y0c5dVpXNTBmVnh1SUNBZ0tpOWNiaUFnWTNWeWNtVnVkRG9nYm5Wc2JGeHVmVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2p0Y2JseHVYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dklGZEZRbEJCUTBzZ1JrOVBWRVZTWEc0dkx5QXVMMzR2Y21WaFkzUXZiR2xpTDFKbFlXTjBRM1Z5Y21WdWRFOTNibVZ5TG1welhHNHZMeUJ0YjJSMWJHVWdhV1FnUFNBM1hHNHZMeUJ0YjJSMWJHVWdZMmgxYm10eklEMGdNQ0pkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW5OdmRYSmpaVkp2YjNRaU9pSWlmUT09XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzdcXG5cIik7XG5cbi8qKiovIH0pLFxuLyogOCAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vcmVhY3QvbGliL2NhbkRlZmluZVByb3BlcnR5LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihwcm9jZXNzKSB7LyoqXFxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXFxuICpcXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuICpcXG4gKiBcXG4gKi9cXG5cXG5cXG5cXG52YXIgY2FuRGVmaW5lUHJvcGVydHkgPSBmYWxzZTtcXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xcbiAgdHJ5IHtcXG4gICAgLy8gJEZsb3dGaXhNZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvMjg1XFxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ3gnLCB7IGdldDogZnVuY3Rpb24gKCkge30gfSk7XFxuICAgIGNhbkRlZmluZVByb3BlcnR5ID0gdHJ1ZTtcXG4gIH0gY2F0Y2ggKHgpIHtcXG4gICAgLy8gSUUgd2lsbCBmYWlsIG9uIGRlZmluZVByb3BlcnR5XFxuICB9XFxufVxcblxcbm1vZHVsZS5leHBvcnRzID0gY2FuRGVmaW5lUHJvcGVydHk7XFxuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vLi4vLi4vcHJvY2Vzcy9icm93c2VyLmpzICovIDApKSkvLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lPQzVxY3lJc0luTnZkWEpqWlhNaU9sc2lkMlZpY0dGamF6b3ZMeTh1TDM0dmNtVmhZM1F2YkdsaUwyTmhia1JsWm1sdVpWQnliM0JsY25SNUxtcHpQMlU1WVRBaVhTd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdLR01wSURJd01UTXRjSEpsYzJWdWRDd2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQk5TVlFnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzVjYmlBcVhHNGdLaUJjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCallXNUVaV1pwYm1WUWNtOXdaWEowZVNBOUlHWmhiSE5sTzF4dWFXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdkSEo1SUh0Y2JpQWdJQ0F2THlBa1JteHZkMFpwZUUxbElHaDBkSEJ6T2k4dloybDBhSFZpTG1OdmJTOW1ZV05sWW05dmF5OW1iRzkzTDJsemMzVmxjeTh5T0RWY2JpQWdJQ0JQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb2UzMHNJQ2Q0Snl3Z2V5Qm5aWFE2SUdaMWJtTjBhVzl1SUNncElIdDlJSDBwTzF4dUlDQWdJR05oYmtSbFptbHVaVkJ5YjNCbGNuUjVJRDBnZEhKMVpUdGNiaUFnZlNCallYUmphQ0FvZUNrZ2UxeHVJQ0FnSUM4dklFbEZJSGRwYkd3Z1ptRnBiQ0J2YmlCa1pXWnBibVZRY205d1pYSjBlVnh1SUNCOVhHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnWTJGdVJHVm1hVzVsVUhKdmNHVnlkSGs3WEc1Y2JseHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THlCWFJVSlFRVU5MSUVaUFQxUkZVbHh1THk4Z0xpOStMM0psWVdOMEwyeHBZaTlqWVc1RVpXWnBibVZRY205d1pYSjBlUzVxYzF4dUx5OGdiVzlrZFd4bElHbGtJRDBnT0Z4dUx5OGdiVzlrZFd4bElHTm9kVzVyY3lBOUlEQWlYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVNJc0luTnZkWEpqWlZKdmIzUWlPaUlpZlE9PVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy84XFxuXCIpO1xuXG4vKioqLyB9KSxcbi8qIDkgKi9cbi8qIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKiBhbGwgZXhwb3J0cyB1c2VkICovXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbmV2YWwoXCIvKipcXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cXG4gKlxcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4gKi9cXG5cXG5cXG5cXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xcblxcbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XFxuLy8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pT1M1cWN5SXNJbk52ZFhKalpYTWlPbHNpZDJWaWNHRmphem92THk4dUwzNHZjSEp2Y0MxMGVYQmxjeTlzYVdJdlVtVmhZM1JRY205d1ZIbHdaWE5UWldOeVpYUXVhbk0vTVRWa05TSmRMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0FvWXlrZ01qQXhNeTF3Y21WelpXNTBMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRTFKVkNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGx4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlGSmxZV04wVUhKdmNGUjVjR1Z6VTJWamNtVjBJRDBnSjFORlExSkZWRjlFVDE5T1QxUmZVRUZUVTE5VVNFbFRYMDlTWDFsUFZWOVhTVXhNWDBKRlgwWkpVa1ZFSnp0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEZCeWIzQlVlWEJsYzFObFkzSmxkRHRjYmx4dVhHNWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1THk4Z1YwVkNVRUZEU3lCR1QwOVVSVkpjYmk4dklDNHZmaTl3Y205d0xYUjVjR1Z6TDJ4cFlpOVNaV0ZqZEZCeWIzQlVlWEJsYzFObFkzSmxkQzVxYzF4dUx5OGdiVzlrZFd4bElHbGtJRDBnT1Z4dUx5OGdiVzlrZFd4bElHTm9kVzVyY3lBOUlEQWlYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHNpTENKemIzVnlZMlZTYjI5MElqb2lJbjA9XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzlcXG5cIik7XG5cbi8qKiovIH0pLFxuLyogMTAgKi9cbi8qIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKiBhbGwgZXhwb3J0cyB1c2VkICovXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2suanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbmV2YWwoXCIvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJvY2Vzcykgey8qKlxcbiAqIENvcHlyaWdodCAoYykgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxcbiAqXFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbiAqXFxuICogXFxuICovXFxuXFxuXFxuXFxudmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9yZWFjdFByb2RJbnZhcmlhbnQgKi8gNCk7XFxuXFxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9SZWFjdEN1cnJlbnRPd25lciAqLyA3KTtcXG5cXG52YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgZmJqcy9saWIvaW52YXJpYW50ICovIDEpO1xcbnZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgZmJqcy9saWIvd2FybmluZyAqLyAyKTtcXG5cXG5mdW5jdGlvbiBpc05hdGl2ZShmbikge1xcbiAgLy8gQmFzZWQgb24gaXNOYXRpdmUoKSBmcm9tIExvZGFzaFxcbiAgdmFyIGZ1bmNUb1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztcXG4gIHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XFxuICB2YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgKyBmdW5jVG9TdHJpbmdcXG4gIC8vIFRha2UgYW4gZXhhbXBsZSBuYXRpdmUgZnVuY3Rpb24gc291cmNlIGZvciBjb21wYXJpc29uXFxuICAuY2FsbChoYXNPd25Qcm9wZXJ0eVxcbiAgLy8gU3RyaXAgcmVnZXggY2hhcmFjdGVycyBzbyB3ZSBjYW4gdXNlIGl0IGZvciByZWdleFxcbiAgKS5yZXBsYWNlKC9bXFxcXFxcXFxeJC4qKz8oKVtcXFxcXXt9fF0vZywgJ1xcXFxcXFxcJCYnXFxuICAvLyBSZW1vdmUgaGFzT3duUHJvcGVydHkgZnJvbSB0aGUgdGVtcGxhdGUgdG8gbWFrZSBpdCBnZW5lcmljXFxuICApLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFxcXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXFxcXFxcXF0pL2csICckMS4qPycpICsgJyQnKTtcXG4gIHRyeSB7XFxuICAgIHZhciBzb3VyY2UgPSBmdW5jVG9TdHJpbmcuY2FsbChmbik7XFxuICAgIHJldHVybiByZUlzTmF0aXZlLnRlc3Qoc291cmNlKTtcXG4gIH0gY2F0Y2ggKGVycikge1xcbiAgICByZXR1cm4gZmFsc2U7XFxuICB9XFxufVxcblxcbnZhciBjYW5Vc2VDb2xsZWN0aW9ucyA9XFxuLy8gQXJyYXkuZnJvbVxcbnR5cGVvZiBBcnJheS5mcm9tID09PSAnZnVuY3Rpb24nICYmXFxuLy8gTWFwXFxudHlwZW9mIE1hcCA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShNYXApICYmXFxuLy8gTWFwLnByb3RvdHlwZS5rZXlzXFxuTWFwLnByb3RvdHlwZSAhPSBudWxsICYmIHR5cGVvZiBNYXAucHJvdG90eXBlLmtleXMgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUoTWFwLnByb3RvdHlwZS5rZXlzKSAmJlxcbi8vIFNldFxcbnR5cGVvZiBTZXQgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUoU2V0KSAmJlxcbi8vIFNldC5wcm90b3R5cGUua2V5c1xcblNldC5wcm90b3R5cGUgIT0gbnVsbCAmJiB0eXBlb2YgU2V0LnByb3RvdHlwZS5rZXlzID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKFNldC5wcm90b3R5cGUua2V5cyk7XFxuXFxudmFyIHNldEl0ZW07XFxudmFyIGdldEl0ZW07XFxudmFyIHJlbW92ZUl0ZW07XFxudmFyIGdldEl0ZW1JRHM7XFxudmFyIGFkZFJvb3Q7XFxudmFyIHJlbW92ZVJvb3Q7XFxudmFyIGdldFJvb3RJRHM7XFxuXFxuaWYgKGNhblVzZUNvbGxlY3Rpb25zKSB7XFxuICB2YXIgaXRlbU1hcCA9IG5ldyBNYXAoKTtcXG4gIHZhciByb290SURTZXQgPSBuZXcgU2V0KCk7XFxuXFxuICBzZXRJdGVtID0gZnVuY3Rpb24gKGlkLCBpdGVtKSB7XFxuICAgIGl0ZW1NYXAuc2V0KGlkLCBpdGVtKTtcXG4gIH07XFxuICBnZXRJdGVtID0gZnVuY3Rpb24gKGlkKSB7XFxuICAgIHJldHVybiBpdGVtTWFwLmdldChpZCk7XFxuICB9O1xcbiAgcmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpZCkge1xcbiAgICBpdGVtTWFwWydkZWxldGUnXShpZCk7XFxuICB9O1xcbiAgZ2V0SXRlbUlEcyA9IGZ1bmN0aW9uICgpIHtcXG4gICAgcmV0dXJuIEFycmF5LmZyb20oaXRlbU1hcC5rZXlzKCkpO1xcbiAgfTtcXG5cXG4gIGFkZFJvb3QgPSBmdW5jdGlvbiAoaWQpIHtcXG4gICAgcm9vdElEU2V0LmFkZChpZCk7XFxuICB9O1xcbiAgcmVtb3ZlUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xcbiAgICByb290SURTZXRbJ2RlbGV0ZSddKGlkKTtcXG4gIH07XFxuICBnZXRSb290SURzID0gZnVuY3Rpb24gKCkge1xcbiAgICByZXR1cm4gQXJyYXkuZnJvbShyb290SURTZXQua2V5cygpKTtcXG4gIH07XFxufSBlbHNlIHtcXG4gIHZhciBpdGVtQnlLZXkgPSB7fTtcXG4gIHZhciByb290QnlLZXkgPSB7fTtcXG5cXG4gIC8vIFVzZSBub24tbnVtZXJpYyBrZXlzIHRvIHByZXZlbnQgVjggcGVyZm9ybWFuY2UgaXNzdWVzOlxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzIzMlxcbiAgdmFyIGdldEtleUZyb21JRCA9IGZ1bmN0aW9uIChpZCkge1xcbiAgICByZXR1cm4gJy4nICsgaWQ7XFxuICB9O1xcbiAgdmFyIGdldElERnJvbUtleSA9IGZ1bmN0aW9uIChrZXkpIHtcXG4gICAgcmV0dXJuIHBhcnNlSW50KGtleS5zdWJzdHIoMSksIDEwKTtcXG4gIH07XFxuXFxuICBzZXRJdGVtID0gZnVuY3Rpb24gKGlkLCBpdGVtKSB7XFxuICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xcbiAgICBpdGVtQnlLZXlba2V5XSA9IGl0ZW07XFxuICB9O1xcbiAgZ2V0SXRlbSA9IGZ1bmN0aW9uIChpZCkge1xcbiAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcXG4gICAgcmV0dXJuIGl0ZW1CeUtleVtrZXldO1xcbiAgfTtcXG4gIHJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcXG4gICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7XFxuICAgIGRlbGV0ZSBpdGVtQnlLZXlba2V5XTtcXG4gIH07XFxuICBnZXRJdGVtSURzID0gZnVuY3Rpb24gKCkge1xcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoaXRlbUJ5S2V5KS5tYXAoZ2V0SURGcm9tS2V5KTtcXG4gIH07XFxuXFxuICBhZGRSb290ID0gZnVuY3Rpb24gKGlkKSB7XFxuICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xcbiAgICByb290QnlLZXlba2V5XSA9IHRydWU7XFxuICB9O1xcbiAgcmVtb3ZlUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xcbiAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcXG4gICAgZGVsZXRlIHJvb3RCeUtleVtrZXldO1xcbiAgfTtcXG4gIGdldFJvb3RJRHMgPSBmdW5jdGlvbiAoKSB7XFxuICAgIHJldHVybiBPYmplY3Qua2V5cyhyb290QnlLZXkpLm1hcChnZXRJREZyb21LZXkpO1xcbiAgfTtcXG59XFxuXFxudmFyIHVubW91bnRlZElEcyA9IFtdO1xcblxcbmZ1bmN0aW9uIHB1cmdlRGVlcChpZCkge1xcbiAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcXG4gIGlmIChpdGVtKSB7XFxuICAgIHZhciBjaGlsZElEcyA9IGl0ZW0uY2hpbGRJRHM7XFxuXFxuICAgIHJlbW92ZUl0ZW0oaWQpO1xcbiAgICBjaGlsZElEcy5mb3JFYWNoKHB1cmdlRGVlcCk7XFxuICB9XFxufVxcblxcbmZ1bmN0aW9uIGRlc2NyaWJlQ29tcG9uZW50RnJhbWUobmFtZSwgc291cmNlLCBvd25lck5hbWUpIHtcXG4gIHJldHVybiAnXFxcXG4gICAgaW4gJyArIChuYW1lIHx8ICdVbmtub3duJykgKyAoc291cmNlID8gJyAoYXQgJyArIHNvdXJjZS5maWxlTmFtZS5yZXBsYWNlKC9eLipbXFxcXFxcXFxcXFxcL10vLCAnJykgKyAnOicgKyBzb3VyY2UubGluZU51bWJlciArICcpJyA6IG93bmVyTmFtZSA/ICcgKGNyZWF0ZWQgYnkgJyArIG93bmVyTmFtZSArICcpJyA6ICcnKTtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0RGlzcGxheU5hbWUoZWxlbWVudCkge1xcbiAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xcbiAgICByZXR1cm4gJyNlbXB0eSc7XFxuICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgZWxlbWVudCA9PT0gJ251bWJlcicpIHtcXG4gICAgcmV0dXJuICcjdGV4dCc7XFxuICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSB7XFxuICAgIHJldHVybiBlbGVtZW50LnR5cGU7XFxuICB9IGVsc2Uge1xcbiAgICByZXR1cm4gZWxlbWVudC50eXBlLmRpc3BsYXlOYW1lIHx8IGVsZW1lbnQudHlwZS5uYW1lIHx8ICdVbmtub3duJztcXG4gIH1cXG59XFxuXFxuZnVuY3Rpb24gZGVzY3JpYmVJRChpZCkge1xcbiAgdmFyIG5hbWUgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKGlkKTtcXG4gIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtcXG4gIHZhciBvd25lcklEID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRPd25lcklEKGlkKTtcXG4gIHZhciBvd25lck5hbWU7XFxuICBpZiAob3duZXJJRCkge1xcbiAgICBvd25lck5hbWUgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKG93bmVySUQpO1xcbiAgfVxcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZWxlbWVudCwgJ1JlYWN0Q29tcG9uZW50VHJlZUhvb2s6IE1pc3NpbmcgUmVhY3QgZWxlbWVudCBmb3IgZGVidWdJRCAlcyB3aGVuICcgKyAnYnVpbGRpbmcgc3RhY2snLCBpZCkgOiB2b2lkIDA7XFxuICByZXR1cm4gZGVzY3JpYmVDb21wb25lbnRGcmFtZShuYW1lLCBlbGVtZW50ICYmIGVsZW1lbnQuX3NvdXJjZSwgb3duZXJOYW1lKTtcXG59XFxuXFxudmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSB7XFxuICBvblNldENoaWxkcmVuOiBmdW5jdGlvbiAoaWQsIG5leHRDaGlsZElEcykge1xcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xcbiAgICAhaXRlbSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdJdGVtIG11c3QgaGF2ZSBiZWVuIHNldCcpIDogX3Byb2RJbnZhcmlhbnQoJzE0NCcpIDogdm9pZCAwO1xcbiAgICBpdGVtLmNoaWxkSURzID0gbmV4dENoaWxkSURzO1xcblxcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5leHRDaGlsZElEcy5sZW5ndGg7IGkrKykge1xcbiAgICAgIHZhciBuZXh0Q2hpbGRJRCA9IG5leHRDaGlsZElEc1tpXTtcXG4gICAgICB2YXIgbmV4dENoaWxkID0gZ2V0SXRlbShuZXh0Q2hpbGRJRCk7XFxuICAgICAgIW5leHRDaGlsZCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBob29rIGV2ZW50cyB0byBmaXJlIGZvciB0aGUgY2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMgaXQgaW4gb25TZXRDaGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MCcpIDogdm9pZCAwO1xcbiAgICAgICEobmV4dENoaWxkLmNoaWxkSURzICE9IG51bGwgfHwgdHlwZW9mIG5leHRDaGlsZC5lbGVtZW50ICE9PSAnb2JqZWN0JyB8fCBuZXh0Q2hpbGQuZWxlbWVudCA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBvblNldENoaWxkcmVuKCkgdG8gZmlyZSBmb3IgYSBjb250YWluZXIgY2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMgaXQgaW4gb25TZXRDaGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MScpIDogdm9pZCAwO1xcbiAgICAgICFuZXh0Q2hpbGQuaXNNb3VudGVkID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIG9uTW91bnRDb21wb25lbnQoKSB0byBmaXJlIGZvciB0aGUgY2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMgaXQgaW4gb25TZXRDaGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlhbnQoJzcxJykgOiB2b2lkIDA7XFxuICAgICAgaWYgKG5leHRDaGlsZC5wYXJlbnRJRCA9PSBudWxsKSB7XFxuICAgICAgICBuZXh0Q2hpbGQucGFyZW50SUQgPSBpZDtcXG4gICAgICAgIC8vIFRPRE86IFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBidXQgbW91bnRpbmcgYSBuZXcgcm9vdCBkdXJpbmcgaW5cXG4gICAgICAgIC8vIGNvbXBvbmVudFdpbGxNb3VudCBjdXJyZW50bHkgY2F1c2VzIG5vdC15ZXQtbW91bnRlZCBjb21wb25lbnRzIHRvXFxuICAgICAgICAvLyBiZSBwdXJnZWQgZnJvbSBvdXIgdHJlZSBkYXRhIHNvIHRoZWlyIHBhcmVudCBpZCBpcyBtaXNzaW5nLlxcbiAgICAgIH1cXG4gICAgICAhKG5leHRDaGlsZC5wYXJlbnRJRCA9PT0gaWQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIG9uQmVmb3JlTW91bnRDb21wb25lbnQoKSBwYXJlbnQgYW5kIG9uU2V0Q2hpbGRyZW4oKSB0byBiZSBjb25zaXN0ZW50ICglcyBoYXMgcGFyZW50cyAlcyBhbmQgJXMpLicsIG5leHRDaGlsZElELCBuZXh0Q2hpbGQucGFyZW50SUQsIGlkKSA6IF9wcm9kSW52YXJpYW50KCcxNDInLCBuZXh0Q2hpbGRJRCwgbmV4dENoaWxkLnBhcmVudElELCBpZCkgOiB2b2lkIDA7XFxuICAgIH1cXG4gIH0sXFxuICBvbkJlZm9yZU1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaWQsIGVsZW1lbnQsIHBhcmVudElEKSB7XFxuICAgIHZhciBpdGVtID0ge1xcbiAgICAgIGVsZW1lbnQ6IGVsZW1lbnQsXFxuICAgICAgcGFyZW50SUQ6IHBhcmVudElELFxcbiAgICAgIHRleHQ6IG51bGwsXFxuICAgICAgY2hpbGRJRHM6IFtdLFxcbiAgICAgIGlzTW91bnRlZDogZmFsc2UsXFxuICAgICAgdXBkYXRlQ291bnQ6IDBcXG4gICAgfTtcXG4gICAgc2V0SXRlbShpZCwgaXRlbSk7XFxuICB9LFxcbiAgb25CZWZvcmVVcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCwgZWxlbWVudCkge1xcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xcbiAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaXNNb3VudGVkKSB7XFxuICAgICAgLy8gV2UgbWF5IGVuZCB1cCBoZXJlIGFzIGEgcmVzdWx0IG9mIHNldFN0YXRlKCkgaW4gY29tcG9uZW50V2lsbFVubW91bnQoKS5cXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIGlnbm9yZSB0aGUgZWxlbWVudC5cXG4gICAgICByZXR1cm47XFxuICAgIH1cXG4gICAgaXRlbS5lbGVtZW50ID0gZWxlbWVudDtcXG4gIH0sXFxuICBvbk1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaWQpIHtcXG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcXG4gICAgIWl0ZW0gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnSXRlbSBtdXN0IGhhdmUgYmVlbiBzZXQnKSA6IF9wcm9kSW52YXJpYW50KCcxNDQnKSA6IHZvaWQgMDtcXG4gICAgaXRlbS5pc01vdW50ZWQgPSB0cnVlO1xcbiAgICB2YXIgaXNSb290ID0gaXRlbS5wYXJlbnRJRCA9PT0gMDtcXG4gICAgaWYgKGlzUm9vdCkge1xcbiAgICAgIGFkZFJvb3QoaWQpO1xcbiAgICB9XFxuICB9LFxcbiAgb25VcGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCkge1xcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xcbiAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaXNNb3VudGVkKSB7XFxuICAgICAgLy8gV2UgbWF5IGVuZCB1cCBoZXJlIGFzIGEgcmVzdWx0IG9mIHNldFN0YXRlKCkgaW4gY29tcG9uZW50V2lsbFVubW91bnQoKS5cXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIGlnbm9yZSB0aGUgZWxlbWVudC5cXG4gICAgICByZXR1cm47XFxuICAgIH1cXG4gICAgaXRlbS51cGRhdGVDb3VudCsrO1xcbiAgfSxcXG4gIG9uVW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGlkKSB7XFxuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XFxuICAgIGlmIChpdGVtKSB7XFxuICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBpZiBpdCBleGlzdHMuXFxuICAgICAgLy8gYGl0ZW1gIG1pZ2h0IG5vdCBleGlzdCBpZiBpdCBpcyBpbnNpZGUgYW4gZXJyb3IgYm91bmRhcnksIGFuZCBhIHNpYmxpbmdcXG4gICAgICAvLyBlcnJvciBib3VuZGFyeSBjaGlsZCB0aHJldyB3aGlsZSBtb3VudGluZy4gVGhlbiB0aGlzIGluc3RhbmNlIG5ldmVyXFxuICAgICAgLy8gZ290IGEgY2hhbmNlIHRvIG1vdW50LCBidXQgaXQgc3RpbGwgZ2V0cyBhbiB1bm1vdW50aW5nIGV2ZW50IGR1cmluZ1xcbiAgICAgIC8vIHRoZSBlcnJvciBib3VuZGFyeSBjbGVhbnVwLlxcbiAgICAgIGl0ZW0uaXNNb3VudGVkID0gZmFsc2U7XFxuICAgICAgdmFyIGlzUm9vdCA9IGl0ZW0ucGFyZW50SUQgPT09IDA7XFxuICAgICAgaWYgKGlzUm9vdCkge1xcbiAgICAgICAgcmVtb3ZlUm9vdChpZCk7XFxuICAgICAgfVxcbiAgICB9XFxuICAgIHVubW91bnRlZElEcy5wdXNoKGlkKTtcXG4gIH0sXFxuICBwdXJnZVVubW91bnRlZENvbXBvbmVudHM6IGZ1bmN0aW9uICgpIHtcXG4gICAgaWYgKFJlYWN0Q29tcG9uZW50VHJlZUhvb2suX3ByZXZlbnRQdXJnaW5nKSB7XFxuICAgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdGVzdGluZy5cXG4gICAgICByZXR1cm47XFxuICAgIH1cXG5cXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1bm1vdW50ZWRJRHMubGVuZ3RoOyBpKyspIHtcXG4gICAgICB2YXIgaWQgPSB1bm1vdW50ZWRJRHNbaV07XFxuICAgICAgcHVyZ2VEZWVwKGlkKTtcXG4gICAgfVxcbiAgICB1bm1vdW50ZWRJRHMubGVuZ3RoID0gMDtcXG4gIH0sXFxuICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChpZCkge1xcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xcbiAgICByZXR1cm4gaXRlbSA/IGl0ZW0uaXNNb3VudGVkIDogZmFsc2U7XFxuICB9LFxcbiAgZ2V0Q3VycmVudFN0YWNrQWRkZW5kdW06IGZ1bmN0aW9uICh0b3BFbGVtZW50KSB7XFxuICAgIHZhciBpbmZvID0gJyc7XFxuICAgIGlmICh0b3BFbGVtZW50KSB7XFxuICAgICAgdmFyIG5hbWUgPSBnZXREaXNwbGF5TmFtZSh0b3BFbGVtZW50KTtcXG4gICAgICB2YXIgb3duZXIgPSB0b3BFbGVtZW50Ll9vd25lcjtcXG4gICAgICBpbmZvICs9IGRlc2NyaWJlQ29tcG9uZW50RnJhbWUobmFtZSwgdG9wRWxlbWVudC5fc291cmNlLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkpO1xcbiAgICB9XFxuXFxuICAgIHZhciBjdXJyZW50T3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xcbiAgICB2YXIgaWQgPSBjdXJyZW50T3duZXIgJiYgY3VycmVudE93bmVyLl9kZWJ1Z0lEO1xcblxcbiAgICBpbmZvICs9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoaWQpO1xcbiAgICByZXR1cm4gaW5mbztcXG4gIH0sXFxuICBnZXRTdGFja0FkZGVuZHVtQnlJRDogZnVuY3Rpb24gKGlkKSB7XFxuICAgIHZhciBpbmZvID0gJyc7XFxuICAgIHdoaWxlIChpZCkge1xcbiAgICAgIGluZm8gKz0gZGVzY3JpYmVJRChpZCk7XFxuICAgICAgaWQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFBhcmVudElEKGlkKTtcXG4gICAgfVxcbiAgICByZXR1cm4gaW5mbztcXG4gIH0sXFxuICBnZXRDaGlsZElEczogZnVuY3Rpb24gKGlkKSB7XFxuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XFxuICAgIHJldHVybiBpdGVtID8gaXRlbS5jaGlsZElEcyA6IFtdO1xcbiAgfSxcXG4gIGdldERpc3BsYXlOYW1lOiBmdW5jdGlvbiAoaWQpIHtcXG4gICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQpO1xcbiAgICBpZiAoIWVsZW1lbnQpIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbiAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWUoZWxlbWVudCk7XFxuICB9LFxcbiAgZ2V0RWxlbWVudDogZnVuY3Rpb24gKGlkKSB7XFxuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XFxuICAgIHJldHVybiBpdGVtID8gaXRlbS5lbGVtZW50IDogbnVsbDtcXG4gIH0sXFxuICBnZXRPd25lcklEOiBmdW5jdGlvbiAoaWQpIHtcXG4gICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQpO1xcbiAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQuX293bmVyKSB7XFxuICAgICAgcmV0dXJuIG51bGw7XFxuICAgIH1cXG4gICAgcmV0dXJuIGVsZW1lbnQuX293bmVyLl9kZWJ1Z0lEO1xcbiAgfSxcXG4gIGdldFBhcmVudElEOiBmdW5jdGlvbiAoaWQpIHtcXG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcXG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLnBhcmVudElEIDogbnVsbDtcXG4gIH0sXFxuICBnZXRTb3VyY2U6IGZ1bmN0aW9uIChpZCkge1xcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xcbiAgICB2YXIgZWxlbWVudCA9IGl0ZW0gPyBpdGVtLmVsZW1lbnQgOiBudWxsO1xcbiAgICB2YXIgc291cmNlID0gZWxlbWVudCAhPSBudWxsID8gZWxlbWVudC5fc291cmNlIDogbnVsbDtcXG4gICAgcmV0dXJuIHNvdXJjZTtcXG4gIH0sXFxuICBnZXRUZXh0OiBmdW5jdGlvbiAoaWQpIHtcXG4gICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQpO1xcbiAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnKSB7XFxuICAgICAgcmV0dXJuIGVsZW1lbnQ7XFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdudW1iZXInKSB7XFxuICAgICAgcmV0dXJuICcnICsgZWxlbWVudDtcXG4gICAgfSBlbHNlIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbiAgfSxcXG4gIGdldFVwZGF0ZUNvdW50OiBmdW5jdGlvbiAoaWQpIHtcXG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcXG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLnVwZGF0ZUNvdW50IDogMDtcXG4gIH0sXFxuXFxuXFxuICBnZXRSb290SURzOiBnZXRSb290SURzLFxcbiAgZ2V0UmVnaXN0ZXJlZElEczogZ2V0SXRlbUlEcyxcXG5cXG4gIHB1c2hOb25TdGFuZGFyZFdhcm5pbmdTdGFjazogZnVuY3Rpb24gKGlzQ3JlYXRpbmdFbGVtZW50LCBjdXJyZW50U291cmNlKSB7XFxuICAgIGlmICh0eXBlb2YgY29uc29sZS5yZWFjdFN0YWNrICE9PSAnZnVuY3Rpb24nKSB7XFxuICAgICAgcmV0dXJuO1xcbiAgICB9XFxuXFxuICAgIHZhciBzdGFjayA9IFtdO1xcbiAgICB2YXIgY3VycmVudE93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcXG4gICAgdmFyIGlkID0gY3VycmVudE93bmVyICYmIGN1cnJlbnRPd25lci5fZGVidWdJRDtcXG5cXG4gICAgdHJ5IHtcXG4gICAgICBpZiAoaXNDcmVhdGluZ0VsZW1lbnQpIHtcXG4gICAgICAgIHN0YWNrLnB1c2goe1xcbiAgICAgICAgICBuYW1lOiBpZCA/IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUoaWQpIDogbnVsbCxcXG4gICAgICAgICAgZmlsZU5hbWU6IGN1cnJlbnRTb3VyY2UgPyBjdXJyZW50U291cmNlLmZpbGVOYW1lIDogbnVsbCxcXG4gICAgICAgICAgbGluZU51bWJlcjogY3VycmVudFNvdXJjZSA/IGN1cnJlbnRTb3VyY2UubGluZU51bWJlciA6IG51bGxcXG4gICAgICAgIH0pO1xcbiAgICAgIH1cXG5cXG4gICAgICB3aGlsZSAoaWQpIHtcXG4gICAgICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtcXG4gICAgICAgIHZhciBwYXJlbnRJRCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0UGFyZW50SUQoaWQpO1xcbiAgICAgICAgdmFyIG93bmVySUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldE93bmVySUQoaWQpO1xcbiAgICAgICAgdmFyIG93bmVyTmFtZSA9IG93bmVySUQgPyBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKG93bmVySUQpIDogbnVsbDtcXG4gICAgICAgIHZhciBzb3VyY2UgPSBlbGVtZW50ICYmIGVsZW1lbnQuX3NvdXJjZTtcXG4gICAgICAgIHN0YWNrLnB1c2goe1xcbiAgICAgICAgICBuYW1lOiBvd25lck5hbWUsXFxuICAgICAgICAgIGZpbGVOYW1lOiBzb3VyY2UgPyBzb3VyY2UuZmlsZU5hbWUgOiBudWxsLFxcbiAgICAgICAgICBsaW5lTnVtYmVyOiBzb3VyY2UgPyBzb3VyY2UubGluZU51bWJlciA6IG51bGxcXG4gICAgICAgIH0pO1xcbiAgICAgICAgaWQgPSBwYXJlbnRJRDtcXG4gICAgICB9XFxuICAgIH0gY2F0Y2ggKGVycikge1xcbiAgICAgIC8vIEludGVybmFsIHN0YXRlIGlzIG1lc3NlZCB1cC5cXG4gICAgICAvLyBTdG9wIGJ1aWxkaW5nIHRoZSBzdGFjayAoaXQncyBqdXN0IGEgbmljZSB0byBoYXZlKS5cXG4gICAgfVxcblxcbiAgICBjb25zb2xlLnJlYWN0U3RhY2soc3RhY2spO1xcbiAgfSxcXG4gIHBvcE5vblN0YW5kYXJkV2FybmluZ1N0YWNrOiBmdW5jdGlvbiAoKSB7XFxuICAgIGlmICh0eXBlb2YgY29uc29sZS5yZWFjdFN0YWNrRW5kICE9PSAnZnVuY3Rpb24nKSB7XFxuICAgICAgcmV0dXJuO1xcbiAgICB9XFxuICAgIGNvbnNvbGUucmVhY3RTdGFja0VuZCgpO1xcbiAgfVxcbn07XFxuXFxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rO1xcbi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLy4uLy4uL3Byb2Nlc3MvYnJvd3Nlci5qcyAqLyAwKSkpLy8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTVRBdWFuTWlMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOStMM0psWVdOMEwyeHBZaTlTWldGamRFTnZiWEJ2Ym1WdWRGUnlaV1ZJYjI5ckxtcHpQek01T0RNaVhTd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdLR01wSURJd01UWXRjSEpsYzJWdWRDd2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQk5TVlFnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzVjYmlBcVhHNGdLaUJjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCZmNISnZaRWx1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSnk0dmNtVmhZM1JRY205a1NXNTJZWEpwWVc1MEp5azdYRzVjYm5aaGNpQlNaV0ZqZEVOMWNuSmxiblJQZDI1bGNpQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkRkWEp5Wlc1MFQzZHVaWEluS1R0Y2JseHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1ZG1GeUlIZGhjbTVwYm1jZ1BTQnlaWEYxYVhKbEtDZG1ZbXB6TDJ4cFlpOTNZWEp1YVc1bkp5azdYRzVjYm1aMWJtTjBhVzl1SUdselRtRjBhWFpsS0dadUtTQjdYRzRnSUM4dklFSmhjMlZrSUc5dUlHbHpUbUYwYVhabEtDa2dabkp2YlNCTWIyUmhjMmhjYmlBZ2RtRnlJR1oxYm1OVWIxTjBjbWx1WnlBOUlFWjFibU4wYVc5dUxuQnliM1J2ZEhsd1pTNTBiMU4wY21sdVp6dGNiaUFnZG1GeUlHaGhjMDkzYmxCeWIzQmxjblI1SUQwZ1QySnFaV04wTG5CeWIzUnZkSGx3WlM1b1lYTlBkMjVRY205d1pYSjBlVHRjYmlBZ2RtRnlJSEpsU1hOT1lYUnBkbVVnUFNCU1pXZEZlSEFvSjE0bklDc2dablZ1WTFSdlUzUnlhVzVuWEc0Z0lDOHZJRlJoYTJVZ1lXNGdaWGhoYlhCc1pTQnVZWFJwZG1VZ1puVnVZM1JwYjI0Z2MyOTFjbU5sSUdadmNpQmpiMjF3WVhKcGMyOXVYRzRnSUM1allXeHNLR2hoYzA5M2JsQnliM0JsY25SNVhHNGdJQzh2SUZOMGNtbHdJSEpsWjJWNElHTm9ZWEpoWTNSbGNuTWdjMjhnZDJVZ1kyRnVJSFZ6WlNCcGRDQm1iM0lnY21WblpYaGNiaUFnS1M1eVpYQnNZV05sS0M5YlhGeGNYRjRrTGlvclB5Z3BXMXhjWFh0OWZGMHZaeXdnSjF4Y1hGd2tKaWRjYmlBZ0x5OGdVbVZ0YjNabElHaGhjMDkzYmxCeWIzQmxjblI1SUdaeWIyMGdkR2hsSUhSbGJYQnNZWFJsSUhSdklHMWhhMlVnYVhRZ1oyVnVaWEpwWTF4dUlDQXBMbkpsY0d4aFkyVW9MMmhoYzA5M2JsQnliM0JsY25SNWZDaG1kVzVqZEdsdmJpa3VLajhvUHoxY1hGeGNYRndvS1h3Z1ptOXlJQzRyUHlnL1BWeGNYRnhjWEYwcEwyY3NJQ2NrTVM0cVB5Y3BJQ3NnSnlRbktUdGNiaUFnZEhKNUlIdGNiaUFnSUNCMllYSWdjMjkxY21ObElEMGdablZ1WTFSdlUzUnlhVzVuTG1OaGJHd29abTRwTzF4dUlDQWdJSEpsZEhWeWJpQnlaVWx6VG1GMGFYWmxMblJsYzNRb2MyOTFjbU5sS1R0Y2JpQWdmU0JqWVhSamFDQW9aWEp5S1NCN1hHNGdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0I5WEc1OVhHNWNiblpoY2lCallXNVZjMlZEYjJ4c1pXTjBhVzl1Y3lBOVhHNHZMeUJCY25KaGVTNW1jbTl0WEc1MGVYQmxiMllnUVhKeVlYa3Vabkp2YlNBOVBUMGdKMloxYm1OMGFXOXVKeUFtSmx4dUx5OGdUV0Z3WEc1MGVYQmxiMllnVFdGd0lEMDlQU0FuWm5WdVkzUnBiMjRuSUNZbUlHbHpUbUYwYVhabEtFMWhjQ2tnSmlaY2JpOHZJRTFoY0M1d2NtOTBiM1I1Y0dVdWEyVjVjMXh1VFdGd0xuQnliM1J2ZEhsd1pTQWhQU0J1ZFd4c0lDWW1JSFI1Y0dWdlppQk5ZWEF1Y0hKdmRHOTBlWEJsTG10bGVYTWdQVDA5SUNkbWRXNWpkR2x2YmljZ0ppWWdhWE5PWVhScGRtVW9UV0Z3TG5CeWIzUnZkSGx3WlM1clpYbHpLU0FtSmx4dUx5OGdVMlYwWEc1MGVYQmxiMllnVTJWMElEMDlQU0FuWm5WdVkzUnBiMjRuSUNZbUlHbHpUbUYwYVhabEtGTmxkQ2tnSmlaY2JpOHZJRk5sZEM1d2NtOTBiM1I1Y0dVdWEyVjVjMXh1VTJWMExuQnliM1J2ZEhsd1pTQWhQU0J1ZFd4c0lDWW1JSFI1Y0dWdlppQlRaWFF1Y0hKdmRHOTBlWEJsTG10bGVYTWdQVDA5SUNkbWRXNWpkR2x2YmljZ0ppWWdhWE5PWVhScGRtVW9VMlYwTG5CeWIzUnZkSGx3WlM1clpYbHpLVHRjYmx4dWRtRnlJSE5sZEVsMFpXMDdYRzUyWVhJZ1oyVjBTWFJsYlR0Y2JuWmhjaUJ5WlcxdmRtVkpkR1Z0TzF4dWRtRnlJR2RsZEVsMFpXMUpSSE03WEc1MllYSWdZV1JrVW05dmREdGNiblpoY2lCeVpXMXZkbVZTYjI5ME8xeHVkbUZ5SUdkbGRGSnZiM1JKUkhNN1hHNWNibWxtSUNoallXNVZjMlZEYjJ4c1pXTjBhVzl1Y3lrZ2UxeHVJQ0IyWVhJZ2FYUmxiVTFoY0NBOUlHNWxkeUJOWVhBb0tUdGNiaUFnZG1GeUlISnZiM1JKUkZObGRDQTlJRzVsZHlCVFpYUW9LVHRjYmx4dUlDQnpaWFJKZEdWdElEMGdablZ1WTNScGIyNGdLR2xrTENCcGRHVnRLU0I3WEc0Z0lDQWdhWFJsYlUxaGNDNXpaWFFvYVdRc0lHbDBaVzBwTzF4dUlDQjlPMXh1SUNCblpYUkpkR1Z0SUQwZ1puVnVZM1JwYjI0Z0tHbGtLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHbDBaVzFOWVhBdVoyVjBLR2xrS1R0Y2JpQWdmVHRjYmlBZ2NtVnRiM1psU1hSbGJTQTlJR1oxYm1OMGFXOXVJQ2hwWkNrZ2UxeHVJQ0FnSUdsMFpXMU5ZWEJiSjJSbGJHVjBaU2RkS0dsa0tUdGNiaUFnZlR0Y2JpQWdaMlYwU1hSbGJVbEVjeUE5SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCeVpYUjFjbTRnUVhKeVlYa3Vabkp2YlNocGRHVnRUV0Z3TG10bGVYTW9LU2s3WEc0Z0lIMDdYRzVjYmlBZ1lXUmtVbTl2ZENBOUlHWjFibU4wYVc5dUlDaHBaQ2tnZTF4dUlDQWdJSEp2YjNSSlJGTmxkQzVoWkdRb2FXUXBPMXh1SUNCOU8xeHVJQ0J5WlcxdmRtVlNiMjkwSUQwZ1puVnVZM1JwYjI0Z0tHbGtLU0I3WEc0Z0lDQWdjbTl2ZEVsRVUyVjBXeWRrWld4bGRHVW5YU2hwWkNrN1hHNGdJSDA3WEc0Z0lHZGxkRkp2YjNSSlJITWdQU0JtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnY21WMGRYSnVJRUZ5Y21GNUxtWnliMjBvY205dmRFbEVVMlYwTG10bGVYTW9LU2s3WEc0Z0lIMDdYRzU5SUdWc2MyVWdlMXh1SUNCMllYSWdhWFJsYlVKNVMyVjVJRDBnZTMwN1hHNGdJSFpoY2lCeWIyOTBRbmxMWlhrZ1BTQjdmVHRjYmx4dUlDQXZMeUJWYzJVZ2JtOXVMVzUxYldWeWFXTWdhMlY1Y3lCMGJ5QndjbVYyWlc1MElGWTRJSEJsY21admNtMWhibU5sSUdsemMzVmxjenBjYmlBZ0x5OGdhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMlpoWTJWaWIyOXJMM0psWVdOMEwzQjFiR3d2TnpJek1seHVJQ0IyWVhJZ1oyVjBTMlY1Um5KdmJVbEVJRDBnWm5WdVkzUnBiMjRnS0dsa0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUNjdUp5QXJJR2xrTzF4dUlDQjlPMXh1SUNCMllYSWdaMlYwU1VSR2NtOXRTMlY1SUQwZ1puVnVZM1JwYjI0Z0tHdGxlU2tnZTF4dUlDQWdJSEpsZEhWeWJpQndZWEp6WlVsdWRDaHJaWGt1YzNWaWMzUnlLREVwTENBeE1DazdYRzRnSUgwN1hHNWNiaUFnYzJWMFNYUmxiU0E5SUdaMWJtTjBhVzl1SUNocFpDd2dhWFJsYlNrZ2UxeHVJQ0FnSUhaaGNpQnJaWGtnUFNCblpYUkxaWGxHY205dFNVUW9hV1FwTzF4dUlDQWdJR2wwWlcxQ2VVdGxlVnRyWlhsZElEMGdhWFJsYlR0Y2JpQWdmVHRjYmlBZ1oyVjBTWFJsYlNBOUlHWjFibU4wYVc5dUlDaHBaQ2tnZTF4dUlDQWdJSFpoY2lCclpYa2dQU0JuWlhSTFpYbEdjbTl0U1VRb2FXUXBPMXh1SUNBZ0lISmxkSFZ5YmlCcGRHVnRRbmxMWlhsYmEyVjVYVHRjYmlBZ2ZUdGNiaUFnY21WdGIzWmxTWFJsYlNBOUlHWjFibU4wYVc5dUlDaHBaQ2tnZTF4dUlDQWdJSFpoY2lCclpYa2dQU0JuWlhSTFpYbEdjbTl0U1VRb2FXUXBPMXh1SUNBZ0lHUmxiR1YwWlNCcGRHVnRRbmxMWlhsYmEyVjVYVHRjYmlBZ2ZUdGNiaUFnWjJWMFNYUmxiVWxFY3lBOUlHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z1QySnFaV04wTG10bGVYTW9hWFJsYlVKNVMyVjVLUzV0WVhBb1oyVjBTVVJHY205dFMyVjVLVHRjYmlBZ2ZUdGNibHh1SUNCaFpHUlNiMjkwSUQwZ1puVnVZM1JwYjI0Z0tHbGtLU0I3WEc0Z0lDQWdkbUZ5SUd0bGVTQTlJR2RsZEV0bGVVWnliMjFKUkNocFpDazdYRzRnSUNBZ2NtOXZkRUo1UzJWNVcydGxlVjBnUFNCMGNuVmxPMXh1SUNCOU8xeHVJQ0J5WlcxdmRtVlNiMjkwSUQwZ1puVnVZM1JwYjI0Z0tHbGtLU0I3WEc0Z0lDQWdkbUZ5SUd0bGVTQTlJR2RsZEV0bGVVWnliMjFKUkNocFpDazdYRzRnSUNBZ1pHVnNaWFJsSUhKdmIzUkNlVXRsZVZ0clpYbGRPMXh1SUNCOU8xeHVJQ0JuWlhSU2IyOTBTVVJ6SUQwZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCUFltcGxZM1F1YTJWNWN5aHliMjkwUW5sTFpYa3BMbTFoY0NoblpYUkpSRVp5YjIxTFpYa3BPMXh1SUNCOU8xeHVmVnh1WEc1MllYSWdkVzV0YjNWdWRHVmtTVVJ6SUQwZ1cxMDdYRzVjYm1aMWJtTjBhVzl1SUhCMWNtZGxSR1ZsY0NocFpDa2dlMXh1SUNCMllYSWdhWFJsYlNBOUlHZGxkRWwwWlcwb2FXUXBPMXh1SUNCcFppQW9hWFJsYlNrZ2UxeHVJQ0FnSUhaaGNpQmphR2xzWkVsRWN5QTlJR2wwWlcwdVkyaHBiR1JKUkhNN1hHNWNiaUFnSUNCeVpXMXZkbVZKZEdWdEtHbGtLVHRjYmlBZ0lDQmphR2xzWkVsRWN5NW1iM0pGWVdOb0tIQjFjbWRsUkdWbGNDazdYRzRnSUgxY2JuMWNibHh1Wm5WdVkzUnBiMjRnWkdWelkzSnBZbVZEYjIxd2IyNWxiblJHY21GdFpTaHVZVzFsTENCemIzVnlZMlVzSUc5M2JtVnlUbUZ0WlNrZ2UxeHVJQ0J5WlhSMWNtNGdKMXhjYmlBZ0lDQnBiaUFuSUNzZ0tHNWhiV1VnZkh3Z0oxVnVhMjV2ZDI0bktTQXJJQ2h6YjNWeVkyVWdQeUFuSUNoaGRDQW5JQ3NnYzI5MWNtTmxMbVpwYkdWT1lXMWxMbkpsY0d4aFkyVW9MMTR1S2x0Y1hGeGNYRnd2WFM4c0lDY25LU0FySUNjNkp5QXJJSE52ZFhKalpTNXNhVzVsVG5WdFltVnlJQ3NnSnlrbklEb2diM2R1WlhKT1lXMWxJRDhnSnlBb1kzSmxZWFJsWkNCaWVTQW5JQ3NnYjNkdVpYSk9ZVzFsSUNzZ0p5a25JRG9nSnljcE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCblpYUkVhWE53YkdGNVRtRnRaU2hsYkdWdFpXNTBLU0I3WEc0Z0lHbG1JQ2hsYkdWdFpXNTBJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQnlaWFIxY200Z0p5TmxiWEIwZVNjN1hHNGdJSDBnWld4elpTQnBaaUFvZEhsd1pXOW1JR1ZzWlcxbGJuUWdQVDA5SUNkemRISnBibWNuSUh4OElIUjVjR1Z2WmlCbGJHVnRaVzUwSUQwOVBTQW5iblZ0WW1WeUp5a2dlMXh1SUNBZ0lISmxkSFZ5YmlBbkkzUmxlSFFuTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dWdlppQmxiR1Z0Wlc1MExuUjVjR1VnUFQwOUlDZHpkSEpwYm1jbktTQjdYRzRnSUNBZ2NtVjBkWEp1SUdWc1pXMWxiblF1ZEhsd1pUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQnlaWFIxY200Z1pXeGxiV1Z1ZEM1MGVYQmxMbVJwYzNCc1lYbE9ZVzFsSUh4OElHVnNaVzFsYm5RdWRIbHdaUzV1WVcxbElIeDhJQ2RWYm10dWIzZHVKenRjYmlBZ2ZWeHVmVnh1WEc1bWRXNWpkR2x2YmlCa1pYTmpjbWxpWlVsRUtHbGtLU0I3WEc0Z0lIWmhjaUJ1WVcxbElEMGdVbVZoWTNSRGIyMXdiMjVsYm5SVWNtVmxTRzl2YXk1blpYUkVhWE53YkdGNVRtRnRaU2hwWkNrN1hHNGdJSFpoY2lCbGJHVnRaVzUwSUQwZ1VtVmhZM1JEYjIxd2IyNWxiblJVY21WbFNHOXZheTVuWlhSRmJHVnRaVzUwS0dsa0tUdGNiaUFnZG1GeUlHOTNibVZ5U1VRZ1BTQlNaV0ZqZEVOdmJYQnZibVZ1ZEZSeVpXVkliMjlyTG1kbGRFOTNibVZ5U1VRb2FXUXBPMXh1SUNCMllYSWdiM2R1WlhKT1lXMWxPMXh1SUNCcFppQW9iM2R1WlhKSlJDa2dlMXh1SUNBZ0lHOTNibVZ5VG1GdFpTQTlJRkpsWVdOMFEyOXRjRzl1Wlc1MFZISmxaVWh2YjJzdVoyVjBSR2x6Y0d4aGVVNWhiV1VvYjNkdVpYSkpSQ2s3WEc0Z0lIMWNiaUFnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lIZGhjbTVwYm1jb1pXeGxiV1Z1ZEN3Z0oxSmxZV04wUTI5dGNHOXVaVzUwVkhKbFpVaHZiMnM2SUUxcGMzTnBibWNnVW1WaFkzUWdaV3hsYldWdWRDQm1iM0lnWkdWaWRXZEpSQ0FsY3lCM2FHVnVJQ2NnS3lBblluVnBiR1JwYm1jZ2MzUmhZMnNuTENCcFpDa2dPaUIyYjJsa0lEQTdYRzRnSUhKbGRIVnliaUJrWlhOamNtbGlaVU52YlhCdmJtVnVkRVp5WVcxbEtHNWhiV1VzSUdWc1pXMWxiblFnSmlZZ1pXeGxiV1Z1ZEM1ZmMyOTFjbU5sTENCdmQyNWxjazVoYldVcE8xeHVmVnh1WEc1MllYSWdVbVZoWTNSRGIyMXdiMjVsYm5SVWNtVmxTRzl2YXlBOUlIdGNiaUFnYjI1VFpYUkRhR2xzWkhKbGJqb2dablZ1WTNScGIyNGdLR2xrTENCdVpYaDBRMmhwYkdSSlJITXBJSHRjYmlBZ0lDQjJZWElnYVhSbGJTQTlJR2RsZEVsMFpXMG9hV1FwTzF4dUlDQWdJQ0ZwZEdWdElEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjBsMFpXMGdiWFZ6ZENCb1lYWmxJR0psWlc0Z2MyVjBKeWtnT2lCZmNISnZaRWx1ZG1GeWFXRnVkQ2duTVRRMEp5a2dPaUIyYjJsa0lEQTdYRzRnSUNBZ2FYUmxiUzVqYUdsc1pFbEVjeUE5SUc1bGVIUkRhR2xzWkVsRWN6dGNibHh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2dibVY0ZEVOb2FXeGtTVVJ6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQjJZWElnYm1WNGRFTm9hV3hrU1VRZ1BTQnVaWGgwUTJocGJHUkpSSE5iYVYwN1hHNGdJQ0FnSUNCMllYSWdibVY0ZEVOb2FXeGtJRDBnWjJWMFNYUmxiU2h1WlhoMFEyaHBiR1JKUkNrN1hHNGdJQ0FnSUNBaGJtVjRkRU5vYVd4a0lEOGdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUdsdWRtRnlhV0Z1ZENobVlXeHpaU3dnSjBWNGNHVmpkR1ZrSUdodmIyc2daWFpsYm5SeklIUnZJR1pwY21VZ1ptOXlJSFJvWlNCamFHbHNaQ0JpWldadmNtVWdhWFJ6SUhCaGNtVnVkQ0JwYm1Oc2RXUmxjeUJwZENCcGJpQnZibE5sZEVOb2FXeGtjbVZ1S0NrdUp5a2dPaUJmY0hKdlpFbHVkbUZ5YVdGdWRDZ25NVFF3SnlrZ09pQjJiMmxrSURBN1hHNGdJQ0FnSUNBaEtHNWxlSFJEYUdsc1pDNWphR2xzWkVsRWN5QWhQU0J1ZFd4c0lIeDhJSFI1Y0dWdlppQnVaWGgwUTJocGJHUXVaV3hsYldWdWRDQWhQVDBnSjI5aWFtVmpkQ2NnZkh3Z2JtVjRkRU5vYVd4a0xtVnNaVzFsYm5RZ1BUMGdiblZzYkNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuUlhod1pXTjBaV1FnYjI1VFpYUkRhR2xzWkhKbGJpZ3BJSFJ2SUdacGNtVWdabTl5SUdFZ1kyOXVkR0ZwYm1WeUlHTm9hV3hrSUdKbFptOXlaU0JwZEhNZ2NHRnlaVzUwSUdsdVkyeDFaR1Z6SUdsMElHbHVJRzl1VTJWMFEyaHBiR1J5Wlc0b0tTNG5LU0E2SUY5d2NtOWtTVzUyWVhKcFlXNTBLQ2N4TkRFbktTQTZJSFp2YVdRZ01EdGNiaUFnSUNBZ0lDRnVaWGgwUTJocGJHUXVhWE5OYjNWdWRHVmtJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0owVjRjR1ZqZEdWa0lHOXVUVzkxYm5SRGIyMXdiMjVsYm5Rb0tTQjBieUJtYVhKbElHWnZjaUIwYUdVZ1kyaHBiR1FnWW1WbWIzSmxJR2wwY3lCd1lYSmxiblFnYVc1amJIVmtaWE1nYVhRZ2FXNGdiMjVUWlhSRGFHbHNaSEpsYmlncExpY3BJRG9nWDNCeWIyUkpiblpoY21saGJuUW9KemN4SnlrZ09pQjJiMmxrSURBN1hHNGdJQ0FnSUNCcFppQW9ibVY0ZEVOb2FXeGtMbkJoY21WdWRFbEVJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnYm1WNGRFTm9hV3hrTG5CaGNtVnVkRWxFSUQwZ2FXUTdYRzRnSUNBZ0lDQWdJQzh2SUZSUFJFODZJRlJvYVhNZ2MyaHZkV3hrYmlkMElHSmxJRzVsWTJWemMyRnllU0JpZFhRZ2JXOTFiblJwYm1jZ1lTQnVaWGNnY205dmRDQmtkWEpwYm1jZ2FXNWNiaUFnSUNBZ0lDQWdMeThnWTI5dGNHOXVaVzUwVjJsc2JFMXZkVzUwSUdOMWNuSmxiblJzZVNCallYVnpaWE1nYm05MExYbGxkQzF0YjNWdWRHVmtJR052YlhCdmJtVnVkSE1nZEc5Y2JpQWdJQ0FnSUNBZ0x5OGdZbVVnY0hWeVoyVmtJR1p5YjIwZ2IzVnlJSFJ5WldVZ1pHRjBZU0J6YnlCMGFHVnBjaUJ3WVhKbGJuUWdhV1FnYVhNZ2JXbHpjMmx1Wnk1Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUNFb2JtVjRkRU5vYVd4a0xuQmhjbVZ1ZEVsRUlEMDlQU0JwWkNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuUlhod1pXTjBaV1FnYjI1Q1pXWnZjbVZOYjNWdWRFTnZiWEJ2Ym1WdWRDZ3BJSEJoY21WdWRDQmhibVFnYjI1VFpYUkRhR2xzWkhKbGJpZ3BJSFJ2SUdKbElHTnZibk5wYzNSbGJuUWdLQ1Z6SUdoaGN5QndZWEpsYm5SeklDVnpJR0Z1WkNBbGN5a3VKeXdnYm1WNGRFTm9hV3hrU1VRc0lHNWxlSFJEYUdsc1pDNXdZWEpsYm5SSlJDd2dhV1FwSURvZ1gzQnliMlJKYm5aaGNtbGhiblFvSnpFME1pY3NJRzVsZUhSRGFHbHNaRWxFTENCdVpYaDBRMmhwYkdRdWNHRnlaVzUwU1VRc0lHbGtLU0E2SUhadmFXUWdNRHRjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJRzl1UW1WbWIzSmxUVzkxYm5SRGIyMXdiMjVsYm5RNklHWjFibU4wYVc5dUlDaHBaQ3dnWld4bGJXVnVkQ3dnY0dGeVpXNTBTVVFwSUh0Y2JpQWdJQ0IyWVhJZ2FYUmxiU0E5SUh0Y2JpQWdJQ0FnSUdWc1pXMWxiblE2SUdWc1pXMWxiblFzWEc0Z0lDQWdJQ0J3WVhKbGJuUkpSRG9nY0dGeVpXNTBTVVFzWEc0Z0lDQWdJQ0IwWlhoME9pQnVkV3hzTEZ4dUlDQWdJQ0FnWTJocGJHUkpSSE02SUZ0ZExGeHVJQ0FnSUNBZ2FYTk5iM1Z1ZEdWa09pQm1ZV3h6WlN4Y2JpQWdJQ0FnSUhWd1pHRjBaVU52ZFc1ME9pQXdYRzRnSUNBZ2ZUdGNiaUFnSUNCelpYUkpkR1Z0S0dsa0xDQnBkR1Z0S1R0Y2JpQWdmU3hjYmlBZ2IyNUNaV1p2Y21WVmNHUmhkR1ZEYjIxd2IyNWxiblE2SUdaMWJtTjBhVzl1SUNocFpDd2daV3hsYldWdWRDa2dlMXh1SUNBZ0lIWmhjaUJwZEdWdElEMGdaMlYwU1hSbGJTaHBaQ2s3WEc0Z0lDQWdhV1lnS0NGcGRHVnRJSHg4SUNGcGRHVnRMbWx6VFc5MWJuUmxaQ2tnZTF4dUlDQWdJQ0FnTHk4Z1YyVWdiV0Y1SUdWdVpDQjFjQ0JvWlhKbElHRnpJR0VnY21WemRXeDBJRzltSUhObGRGTjBZWFJsS0NrZ2FXNGdZMjl0Y0c5dVpXNTBWMmxzYkZWdWJXOTFiblFvS1M1Y2JpQWdJQ0FnSUM4dklFbHVJSFJvYVhNZ1kyRnpaU3dnYVdkdWIzSmxJSFJvWlNCbGJHVnRaVzUwTGx4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNiaUFnSUNCcGRHVnRMbVZzWlcxbGJuUWdQU0JsYkdWdFpXNTBPMXh1SUNCOUxGeHVJQ0J2YmsxdmRXNTBRMjl0Y0c5dVpXNTBPaUJtZFc1amRHbHZiaUFvYVdRcElIdGNiaUFnSUNCMllYSWdhWFJsYlNBOUlHZGxkRWwwWlcwb2FXUXBPMXh1SUNBZ0lDRnBkR1Z0SUQ4Z2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JR2x1ZG1GeWFXRnVkQ2htWVd4elpTd2dKMGwwWlcwZ2JYVnpkQ0JvWVhabElHSmxaVzRnYzJWMEp5a2dPaUJmY0hKdlpFbHVkbUZ5YVdGdWRDZ25NVFEwSnlrZ09pQjJiMmxrSURBN1hHNGdJQ0FnYVhSbGJTNXBjMDF2ZFc1MFpXUWdQU0IwY25WbE8xeHVJQ0FnSUhaaGNpQnBjMUp2YjNRZ1BTQnBkR1Z0TG5CaGNtVnVkRWxFSUQwOVBTQXdPMXh1SUNBZ0lHbG1JQ2hwYzFKdmIzUXBJSHRjYmlBZ0lDQWdJR0ZrWkZKdmIzUW9hV1FwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnYjI1VmNHUmhkR1ZEYjIxd2IyNWxiblE2SUdaMWJtTjBhVzl1SUNocFpDa2dlMXh1SUNBZ0lIWmhjaUJwZEdWdElEMGdaMlYwU1hSbGJTaHBaQ2s3WEc0Z0lDQWdhV1lnS0NGcGRHVnRJSHg4SUNGcGRHVnRMbWx6VFc5MWJuUmxaQ2tnZTF4dUlDQWdJQ0FnTHk4Z1YyVWdiV0Y1SUdWdVpDQjFjQ0JvWlhKbElHRnpJR0VnY21WemRXeDBJRzltSUhObGRGTjBZWFJsS0NrZ2FXNGdZMjl0Y0c5dVpXNTBWMmxzYkZWdWJXOTFiblFvS1M1Y2JpQWdJQ0FnSUM4dklFbHVJSFJvYVhNZ1kyRnpaU3dnYVdkdWIzSmxJSFJvWlNCbGJHVnRaVzUwTGx4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNiaUFnSUNCcGRHVnRMblZ3WkdGMFpVTnZkVzUwS3lzN1hHNGdJSDBzWEc0Z0lHOXVWVzV0YjNWdWRFTnZiWEJ2Ym1WdWREb2dablZ1WTNScGIyNGdLR2xrS1NCN1hHNGdJQ0FnZG1GeUlHbDBaVzBnUFNCblpYUkpkR1Z0S0dsa0tUdGNiaUFnSUNCcFppQW9hWFJsYlNrZ2UxeHVJQ0FnSUNBZ0x5OGdWMlVnYm1WbFpDQjBieUJqYUdWamF5QnBaaUJwZENCbGVHbHpkSE11WEc0Z0lDQWdJQ0F2THlCZ2FYUmxiV0FnYldsbmFIUWdibTkwSUdWNGFYTjBJR2xtSUdsMElHbHpJR2x1YzJsa1pTQmhiaUJsY25KdmNpQmliM1Z1WkdGeWVTd2dZVzVrSUdFZ2MybGliR2x1WjF4dUlDQWdJQ0FnTHk4Z1pYSnliM0lnWW05MWJtUmhjbmtnWTJocGJHUWdkR2h5WlhjZ2QyaHBiR1VnYlc5MWJuUnBibWN1SUZSb1pXNGdkR2hwY3lCcGJuTjBZVzVqWlNCdVpYWmxjbHh1SUNBZ0lDQWdMeThnWjI5MElHRWdZMmhoYm1ObElIUnZJRzF2ZFc1MExDQmlkWFFnYVhRZ2MzUnBiR3dnWjJWMGN5QmhiaUIxYm0xdmRXNTBhVzVuSUdWMlpXNTBJR1IxY21sdVoxeHVJQ0FnSUNBZ0x5OGdkR2hsSUdWeWNtOXlJR0p2ZFc1a1lYSjVJR05zWldGdWRYQXVYRzRnSUNBZ0lDQnBkR1Z0TG1selRXOTFiblJsWkNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnZG1GeUlHbHpVbTl2ZENBOUlHbDBaVzB1Y0dGeVpXNTBTVVFnUFQwOUlEQTdYRzRnSUNBZ0lDQnBaaUFvYVhOU2IyOTBLU0I3WEc0Z0lDQWdJQ0FnSUhKbGJXOTJaVkp2YjNRb2FXUXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCMWJtMXZkVzUwWldSSlJITXVjSFZ6YUNocFpDazdYRzRnSUgwc1hHNGdJSEIxY21kbFZXNXRiM1Z1ZEdWa1EyOXRjRzl1Wlc1MGN6b2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJR2xtSUNoU1pXRmpkRU52YlhCdmJtVnVkRlJ5WldWSWIyOXJMbDl3Y21WMlpXNTBVSFZ5WjJsdVp5a2dlMXh1SUNBZ0lDQWdMeThnVTJodmRXeGtJRzl1YkhrZ1ltVWdkWE5sWkNCbWIzSWdkR1Z6ZEdsdVp5NWNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUhWdWJXOTFiblJsWkVsRWN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnZG1GeUlHbGtJRDBnZFc1dGIzVnVkR1ZrU1VSelcybGRPMXh1SUNBZ0lDQWdjSFZ5WjJWRVpXVndLR2xrS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdkVzV0YjNWdWRHVmtTVVJ6TG14bGJtZDBhQ0E5SURBN1hHNGdJSDBzWEc0Z0lHbHpUVzkxYm5SbFpEb2dablZ1WTNScGIyNGdLR2xrS1NCN1hHNGdJQ0FnZG1GeUlHbDBaVzBnUFNCblpYUkpkR1Z0S0dsa0tUdGNiaUFnSUNCeVpYUjFjbTRnYVhSbGJTQS9JR2wwWlcwdWFYTk5iM1Z1ZEdWa0lEb2dabUZzYzJVN1hHNGdJSDBzWEc0Z0lHZGxkRU4xY25KbGJuUlRkR0ZqYTBGa1pHVnVaSFZ0T2lCbWRXNWpkR2x2YmlBb2RHOXdSV3hsYldWdWRDa2dlMXh1SUNBZ0lIWmhjaUJwYm1adklEMGdKeWM3WEc0Z0lDQWdhV1lnS0hSdmNFVnNaVzFsYm5RcElIdGNiaUFnSUNBZ0lIWmhjaUJ1WVcxbElEMGdaMlYwUkdsemNHeGhlVTVoYldVb2RHOXdSV3hsYldWdWRDazdYRzRnSUNBZ0lDQjJZWElnYjNkdVpYSWdQU0IwYjNCRmJHVnRaVzUwTGw5dmQyNWxjanRjYmlBZ0lDQWdJR2x1Wm04Z0t6MGdaR1Z6WTNKcFltVkRiMjF3YjI1bGJuUkdjbUZ0WlNodVlXMWxMQ0IwYjNCRmJHVnRaVzUwTGw5emIzVnlZMlVzSUc5M2JtVnlJQ1ltSUc5M2JtVnlMbWRsZEU1aGJXVW9LU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUdOMWNuSmxiblJQZDI1bGNpQTlJRkpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlMbU4xY25KbGJuUTdYRzRnSUNBZ2RtRnlJR2xrSUQwZ1kzVnljbVZ1ZEU5M2JtVnlJQ1ltSUdOMWNuSmxiblJQZDI1bGNpNWZaR1ZpZFdkSlJEdGNibHh1SUNBZ0lHbHVabThnS3owZ1VtVmhZM1JEYjIxd2IyNWxiblJVY21WbFNHOXZheTVuWlhSVGRHRmphMEZrWkdWdVpIVnRRbmxKUkNocFpDazdYRzRnSUNBZ2NtVjBkWEp1SUdsdVptODdYRzRnSUgwc1hHNGdJR2RsZEZOMFlXTnJRV1JrWlc1a2RXMUNlVWxFT2lCbWRXNWpkR2x2YmlBb2FXUXBJSHRjYmlBZ0lDQjJZWElnYVc1bWJ5QTlJQ2NuTzF4dUlDQWdJSGRvYVd4bElDaHBaQ2tnZTF4dUlDQWdJQ0FnYVc1bWJ5QXJQU0JrWlhOamNtbGlaVWxFS0dsa0tUdGNiaUFnSUNBZ0lHbGtJRDBnVW1WaFkzUkRiMjF3YjI1bGJuUlVjbVZsU0c5dmF5NW5aWFJRWVhKbGJuUkpSQ2hwWkNrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnBibVp2TzF4dUlDQjlMRnh1SUNCblpYUkRhR2xzWkVsRWN6b2dablZ1WTNScGIyNGdLR2xrS1NCN1hHNGdJQ0FnZG1GeUlHbDBaVzBnUFNCblpYUkpkR1Z0S0dsa0tUdGNiaUFnSUNCeVpYUjFjbTRnYVhSbGJTQS9JR2wwWlcwdVkyaHBiR1JKUkhNZ09pQmJYVHRjYmlBZ2ZTeGNiaUFnWjJWMFJHbHpjR3hoZVU1aGJXVTZJR1oxYm1OMGFXOXVJQ2hwWkNrZ2UxeHVJQ0FnSUhaaGNpQmxiR1Z0Wlc1MElEMGdVbVZoWTNSRGIyMXdiMjVsYm5SVWNtVmxTRzl2YXk1blpYUkZiR1Z0Wlc1MEtHbGtLVHRjYmlBZ0lDQnBaaUFvSVdWc1pXMWxiblFwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdaMlYwUkdsemNHeGhlVTVoYldVb1pXeGxiV1Z1ZENrN1hHNGdJSDBzWEc0Z0lHZGxkRVZzWlcxbGJuUTZJR1oxYm1OMGFXOXVJQ2hwWkNrZ2UxeHVJQ0FnSUhaaGNpQnBkR1Z0SUQwZ1oyVjBTWFJsYlNocFpDazdYRzRnSUNBZ2NtVjBkWEp1SUdsMFpXMGdQeUJwZEdWdExtVnNaVzFsYm5RZ09pQnVkV3hzTzF4dUlDQjlMRnh1SUNCblpYUlBkMjVsY2tsRU9pQm1kVzVqZEdsdmJpQW9hV1FwSUh0Y2JpQWdJQ0IyWVhJZ1pXeGxiV1Z1ZENBOUlGSmxZV04wUTI5dGNHOXVaVzUwVkhKbFpVaHZiMnN1WjJWMFJXeGxiV1Z1ZENocFpDazdYRzRnSUNBZ2FXWWdLQ0ZsYkdWdFpXNTBJSHg4SUNGbGJHVnRaVzUwTGw5dmQyNWxjaWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQmxiR1Z0Wlc1MExsOXZkMjVsY2k1ZlpHVmlkV2RKUkR0Y2JpQWdmU3hjYmlBZ1oyVjBVR0Z5Wlc1MFNVUTZJR1oxYm1OMGFXOXVJQ2hwWkNrZ2UxeHVJQ0FnSUhaaGNpQnBkR1Z0SUQwZ1oyVjBTWFJsYlNocFpDazdYRzRnSUNBZ2NtVjBkWEp1SUdsMFpXMGdQeUJwZEdWdExuQmhjbVZ1ZEVsRUlEb2diblZzYkR0Y2JpQWdmU3hjYmlBZ1oyVjBVMjkxY21ObE9pQm1kVzVqZEdsdmJpQW9hV1FwSUh0Y2JpQWdJQ0IyWVhJZ2FYUmxiU0E5SUdkbGRFbDBaVzBvYVdRcE8xeHVJQ0FnSUhaaGNpQmxiR1Z0Wlc1MElEMGdhWFJsYlNBL0lHbDBaVzB1Wld4bGJXVnVkQ0E2SUc1MWJHdzdYRzRnSUNBZ2RtRnlJSE52ZFhKalpTQTlJR1ZzWlcxbGJuUWdJVDBnYm5Wc2JDQS9JR1ZzWlcxbGJuUXVYM052ZFhKalpTQTZJRzUxYkd3N1hHNGdJQ0FnY21WMGRYSnVJSE52ZFhKalpUdGNiaUFnZlN4Y2JpQWdaMlYwVkdWNGREb2dablZ1WTNScGIyNGdLR2xrS1NCN1hHNGdJQ0FnZG1GeUlHVnNaVzFsYm5RZ1BTQlNaV0ZqZEVOdmJYQnZibVZ1ZEZSeVpXVkliMjlyTG1kbGRFVnNaVzFsYm5Rb2FXUXBPMXh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdaV3hsYldWdWRDQTlQVDBnSjNOMGNtbHVaeWNwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJsYkdWdFpXNTBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3Wlc5bUlHVnNaVzFsYm5RZ1BUMDlJQ2R1ZFcxaVpYSW5LU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKeWNnS3lCbGJHVnRaVzUwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR2RsZEZWd1pHRjBaVU52ZFc1ME9pQm1kVzVqZEdsdmJpQW9hV1FwSUh0Y2JpQWdJQ0IyWVhJZ2FYUmxiU0E5SUdkbGRFbDBaVzBvYVdRcE8xeHVJQ0FnSUhKbGRIVnliaUJwZEdWdElEOGdhWFJsYlM1MWNHUmhkR1ZEYjNWdWRDQTZJREE3WEc0Z0lIMHNYRzVjYmx4dUlDQm5aWFJTYjI5MFNVUnpPaUJuWlhSU2IyOTBTVVJ6TEZ4dUlDQm5aWFJTWldkcGMzUmxjbVZrU1VSek9pQm5aWFJKZEdWdFNVUnpMRnh1WEc0Z0lIQjFjMmhPYjI1VGRHRnVaR0Z5WkZkaGNtNXBibWRUZEdGamF6b2dablZ1WTNScGIyNGdLR2x6UTNKbFlYUnBibWRGYkdWdFpXNTBMQ0JqZFhKeVpXNTBVMjkxY21ObEtTQjdYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQmpiMjV6YjJ4bExuSmxZV04wVTNSaFkyc2dJVDA5SUNkbWRXNWpkR2x2YmljcElIdGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ2MzUmhZMnNnUFNCYlhUdGNiaUFnSUNCMllYSWdZM1Z5Y21WdWRFOTNibVZ5SUQwZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZER0Y2JpQWdJQ0IyWVhJZ2FXUWdQU0JqZFhKeVpXNTBUM2R1WlhJZ0ppWWdZM1Z5Y21WdWRFOTNibVZ5TGw5a1pXSjFaMGxFTzF4dVhHNGdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lHbG1JQ2hwYzBOeVpXRjBhVzVuUld4bGJXVnVkQ2tnZTF4dUlDQWdJQ0FnSUNCemRHRmpheTV3ZFhOb0tIdGNiaUFnSUNBZ0lDQWdJQ0J1WVcxbE9pQnBaQ0EvSUZKbFlXTjBRMjl0Y0c5dVpXNTBWSEpsWlVodmIyc3VaMlYwUkdsemNHeGhlVTVoYldVb2FXUXBJRG9nYm5Wc2JDeGNiaUFnSUNBZ0lDQWdJQ0JtYVd4bFRtRnRaVG9nWTNWeWNtVnVkRk52ZFhKalpTQS9JR04xY25KbGJuUlRiM1Z5WTJVdVptbHNaVTVoYldVZ09pQnVkV3hzTEZ4dUlDQWdJQ0FnSUNBZ0lHeHBibVZPZFcxaVpYSTZJR04xY25KbGJuUlRiM1Z5WTJVZ1B5QmpkWEp5Wlc1MFUyOTFjbU5sTG14cGJtVk9kVzFpWlhJZ09pQnVkV3hzWEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQjNhR2xzWlNBb2FXUXBJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHVnNaVzFsYm5RZ1BTQlNaV0ZqZEVOdmJYQnZibVZ1ZEZSeVpXVkliMjlyTG1kbGRFVnNaVzFsYm5Rb2FXUXBPMXh1SUNBZ0lDQWdJQ0IyWVhJZ2NHRnlaVzUwU1VRZ1BTQlNaV0ZqZEVOdmJYQnZibVZ1ZEZSeVpXVkliMjlyTG1kbGRGQmhjbVZ1ZEVsRUtHbGtLVHRjYmlBZ0lDQWdJQ0FnZG1GeUlHOTNibVZ5U1VRZ1BTQlNaV0ZqZEVOdmJYQnZibVZ1ZEZSeVpXVkliMjlyTG1kbGRFOTNibVZ5U1VRb2FXUXBPMXh1SUNBZ0lDQWdJQ0IyWVhJZ2IzZHVaWEpPWVcxbElEMGdiM2R1WlhKSlJDQS9JRkpsWVdOMFEyOXRjRzl1Wlc1MFZISmxaVWh2YjJzdVoyVjBSR2x6Y0d4aGVVNWhiV1VvYjNkdVpYSkpSQ2tnT2lCdWRXeHNPMXh1SUNBZ0lDQWdJQ0IyWVhJZ2MyOTFjbU5sSUQwZ1pXeGxiV1Z1ZENBbUppQmxiR1Z0Wlc1MExsOXpiM1Z5WTJVN1hHNGdJQ0FnSUNBZ0lITjBZV05yTG5CMWMyZ29lMXh1SUNBZ0lDQWdJQ0FnSUc1aGJXVTZJRzkzYm1WeVRtRnRaU3hjYmlBZ0lDQWdJQ0FnSUNCbWFXeGxUbUZ0WlRvZ2MyOTFjbU5sSUQ4Z2MyOTFjbU5sTG1acGJHVk9ZVzFsSURvZ2JuVnNiQ3hjYmlBZ0lDQWdJQ0FnSUNCc2FXNWxUblZ0WW1WeU9pQnpiM1Z5WTJVZ1B5QnpiM1Z5WTJVdWJHbHVaVTUxYldKbGNpQTZJRzUxYkd4Y2JpQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJR2xrSUQwZ2NHRnlaVzUwU1VRN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCallYUmphQ0FvWlhKeUtTQjdYRzRnSUNBZ0lDQXZMeUJKYm5SbGNtNWhiQ0J6ZEdGMFpTQnBjeUJ0WlhOelpXUWdkWEF1WEc0Z0lDQWdJQ0F2THlCVGRHOXdJR0oxYVd4a2FXNW5JSFJvWlNCemRHRmpheUFvYVhRbmN5QnFkWE4wSUdFZ2JtbGpaU0IwYnlCb1lYWmxLUzVjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6YjJ4bExuSmxZV04wVTNSaFkyc29jM1JoWTJzcE8xeHVJQ0I5TEZ4dUlDQndiM0JPYjI1VGRHRnVaR0Z5WkZkaGNtNXBibWRUZEdGamF6b2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJR2xtSUNoMGVYQmxiMllnWTI5dWMyOXNaUzV5WldGamRGTjBZV05yUlc1a0lDRTlQU0FuWm5WdVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1SUNBZ0lHTnZibk52YkdVdWNtVmhZM1JUZEdGamEwVnVaQ2dwTzF4dUlDQjlYRzU5TzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wUTI5dGNHOXVaVzUwVkhKbFpVaHZiMnM3WEc1Y2JseHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THlCWFJVSlFRVU5MSUVaUFQxUkZVbHh1THk4Z0xpOStMM0psWVdOMEwyeHBZaTlTWldGamRFTnZiWEJ2Ym1WdWRGUnlaV1ZJYjI5ckxtcHpYRzR2THlCdGIyUjFiR1VnYVdRZ1BTQXhNRnh1THk4Z2JXOWtkV3hsSUdOb2RXNXJjeUE5SURBaVhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEVpTENKemIzVnlZMlZTYjI5MElqb2lJbjA9XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzEwXFxuXCIpO1xuXG4vKioqLyB9KSxcbi8qIDExICovXG4vKiBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyogYWxsIGV4cG9ydHMgdXNlZCAqL1xuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vcmVhY3QvbGliL2xvd1ByaW9yaXR5V2FybmluZy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5ldmFsKFwiLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKHByb2Nlc3MpIHsvKipcXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cXG4gKlxcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4gKlxcbiAqL1xcblxcblxcblxcbi8qKlxcbiAqIEZvcmtlZCBmcm9tIGZianMvd2FybmluZzpcXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmJqcy9ibG9iL2U2NmJhMjBhZDViZTQzM2ViNTQ0MjNmMmIwOTdkODI5MzI0ZDlkZTYvcGFja2FnZXMvZmJqcy9zcmMvX19mb3Jrc19fL3dhcm5pbmcuanNcXG4gKlxcbiAqIE9ubHkgY2hhbmdlIGlzIHdlIHVzZSBjb25zb2xlLndhcm4gaW5zdGVhZCBvZiBjb25zb2xlLmVycm9yLFxcbiAqIGFuZCBkbyBub3RoaW5nIHdoZW4gJ2NvbnNvbGUnIGlzIG5vdCBzdXBwb3J0ZWQuXFxuICogVGhpcyByZWFsbHkgc2ltcGxpZmllcyB0aGUgY29kZS5cXG4gKiAtLS1cXG4gKiBTaW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuXFxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBsb2cgaXNzdWVzIGluIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBpbiBjcml0aWNhbFxcbiAqIHBhdGhzLiBSZW1vdmluZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50cyB3aWxsIGtlZXAgdGhlXFxuICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuXFxuICovXFxuXFxudmFyIGxvd1ByaW9yaXR5V2FybmluZyA9IGZ1bmN0aW9uICgpIHt9O1xcblxcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XFxuICB2YXIgcHJpbnRXYXJuaW5nID0gZnVuY3Rpb24gKGZvcm1hdCkge1xcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcXG4gICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcXG4gICAgfVxcblxcbiAgICB2YXIgYXJnSW5kZXggPSAwO1xcbiAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICsgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHtcXG4gICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcXG4gICAgfSk7XFxuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcXG4gICAgICBjb25zb2xlLndhcm4obWVzc2FnZSk7XFxuICAgIH1cXG4gICAgdHJ5IHtcXG4gICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXFxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXFxuICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXFxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xcbiAgICB9IGNhdGNoICh4KSB7fVxcbiAgfTtcXG5cXG4gIGxvd1ByaW9yaXR5V2FybmluZyA9IGZ1bmN0aW9uIChjb25kaXRpb24sIGZvcm1hdCkge1xcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2B3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgKyAnbWVzc2FnZSBhcmd1bWVudCcpO1xcbiAgICB9XFxuICAgIGlmICghY29uZGl0aW9uKSB7XFxuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIgPiAyID8gX2xlbjIgLSAyIDogMCksIF9rZXkyID0gMjsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xcbiAgICAgICAgYXJnc1tfa2V5MiAtIDJdID0gYXJndW1lbnRzW19rZXkyXTtcXG4gICAgICB9XFxuXFxuICAgICAgcHJpbnRXYXJuaW5nLmFwcGx5KHVuZGVmaW5lZCwgW2Zvcm1hdF0uY29uY2F0KGFyZ3MpKTtcXG4gICAgfVxcbiAgfTtcXG59XFxuXFxubW9kdWxlLmV4cG9ydHMgPSBsb3dQcmlvcml0eVdhcm5pbmc7XFxuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vLi4vLi4vcHJvY2Vzcy9icm93c2VyLmpzICovIDApKSkvLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lNVEV1YW5NaUxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5K0wzSmxZV04wTDJ4cFlpOXNiM2RRY21sdmNtbDBlVmRoY201cGJtY3Vhbk0vWkRrell5SmRMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0FvWXlrZ01qQXhOQzF3Y21WelpXNTBMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRTFKVkNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGx4dUlDcGNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JpOHFLbHh1SUNvZ1JtOXlhMlZrSUdaeWIyMGdabUpxY3k5M1lYSnVhVzVuT2x4dUlDb2dhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMlpoWTJWaWIyOXJMMlppYW5NdllteHZZaTlsTmpaaVlUSXdZV1ExWW1VME16TmxZalUwTkRJelpqSmlNRGszWkRneU9UTXlOR1E1WkdVMkwzQmhZMnRoWjJWekwyWmlhbk12YzNKakwxOWZabTl5YTNOZlh5OTNZWEp1YVc1bkxtcHpYRzRnS2x4dUlDb2dUMjVzZVNCamFHRnVaMlVnYVhNZ2QyVWdkWE5sSUdOdmJuTnZiR1V1ZDJGeWJpQnBibk4wWldGa0lHOW1JR052Ym5OdmJHVXVaWEp5YjNJc1hHNGdLaUJoYm1RZ1pHOGdibTkwYUdsdVp5QjNhR1Z1SUNkamIyNXpiMnhsSnlCcGN5QnViM1FnYzNWd2NHOXlkR1ZrTGx4dUlDb2dWR2hwY3lCeVpXRnNiSGtnYzJsdGNHeHBabWxsY3lCMGFHVWdZMjlrWlM1Y2JpQXFJQzB0TFZ4dUlDb2dVMmx0YVd4aGNpQjBieUJwYm5aaGNtbGhiblFnWW5WMElHOXViSGtnYkc5bmN5QmhJSGRoY201cGJtY2dhV1lnZEdobElHTnZibVJwZEdsdmJpQnBjeUJ1YjNRZ2JXVjBMbHh1SUNvZ1ZHaHBjeUJqWVc0Z1ltVWdkWE5sWkNCMGJ5QnNiMmNnYVhOemRXVnpJR2x1SUdSbGRtVnNiM0J0Wlc1MElHVnVkbWx5YjI1dFpXNTBjeUJwYmlCamNtbDBhV05oYkZ4dUlDb2djR0YwYUhNdUlGSmxiVzkyYVc1bklIUm9aU0JzYjJkbmFXNW5JR052WkdVZ1ptOXlJSEJ5YjJSMVkzUnBiMjRnWlc1MmFYSnZibTFsYm5SeklIZHBiR3dnYTJWbGNDQjBhR1ZjYmlBcUlITmhiV1VnYkc5bmFXTWdZVzVrSUdadmJHeHZkeUIwYUdVZ2MyRnRaU0JqYjJSbElIQmhkR2h6TGx4dUlDb3ZYRzVjYm5aaGNpQnNiM2RRY21sdmNtbDBlVmRoY201cGJtY2dQU0JtZFc1amRHbHZiaUFvS1NCN2ZUdGNibHh1YVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ2RtRnlJSEJ5YVc1MFYyRnlibWx1WnlBOUlHWjFibU4wYVc5dUlDaG1iM0p0WVhRcElIdGNiaUFnSUNCbWIzSWdLSFpoY2lCZmJHVnVJRDBnWVhKbmRXMWxiblJ6TG14bGJtZDBhQ3dnWVhKbmN5QTlJRUZ5Y21GNUtGOXNaVzRnUGlBeElEOGdYMnhsYmlBdElERWdPaUF3S1N3Z1gydGxlU0E5SURFN0lGOXJaWGtnUENCZmJHVnVPeUJmYTJWNUt5c3BJSHRjYmlBZ0lDQWdJR0Z5WjNOYlgydGxlU0F0SURGZElEMGdZWEpuZFcxbGJuUnpXMTlyWlhsZE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhaaGNpQmhjbWRKYm1SbGVDQTlJREE3WEc0Z0lDQWdkbUZ5SUcxbGMzTmhaMlVnUFNBblYyRnlibWx1WnpvZ0p5QXJJR1p2Y20xaGRDNXlaWEJzWVdObEtDOGxjeTluTENCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1lYSm5jMXRoY21kSmJtUmxlQ3NyWFR0Y2JpQWdJQ0I5S1R0Y2JpQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJuTnZiR1VnSVQwOUlDZDFibVJsWm1sdVpXUW5LU0I3WEc0Z0lDQWdJQ0JqYjI1emIyeGxMbmRoY200b2JXVnpjMkZuWlNrN1hHNGdJQ0FnZlZ4dUlDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBdkx5QXRMUzBnVjJWc1kyOXRaU0IwYnlCa1pXSjFaMmRwYm1jZ1VtVmhZM1FnTFMwdFhHNGdJQ0FnSUNBdkx5QlVhR2x6SUdWeWNtOXlJSGRoY3lCMGFISnZkMjRnWVhNZ1lTQmpiMjUyWlc1cFpXNWpaU0J6YnlCMGFHRjBJSGx2ZFNCallXNGdkWE5sSUhSb2FYTWdjM1JoWTJ0Y2JpQWdJQ0FnSUM4dklIUnZJR1pwYm1RZ2RHaGxJR05oYkd4emFYUmxJSFJvWVhRZ1kyRjFjMlZrSUhSb2FYTWdkMkZ5Ym1sdVp5QjBieUJtYVhKbExseHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0cxbGMzTmhaMlVwTzF4dUlDQWdJSDBnWTJGMFkyZ2dLSGdwSUh0OVhHNGdJSDA3WEc1Y2JpQWdiRzkzVUhKcGIzSnBkSGxYWVhKdWFXNW5JRDBnWm5WdVkzUnBiMjRnS0dOdmJtUnBkR2x2Yml3Z1ptOXliV0YwS1NCN1hHNGdJQ0FnYVdZZ0tHWnZjbTFoZENBOVBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMkIzWVhKdWFXNW5LR052Ym1ScGRHbHZiaXdnWm05eWJXRjBMQ0F1TGk1aGNtZHpLV0FnY21WeGRXbHlaWE1nWVNCM1lYSnVhVzVuSUNjZ0t5QW5iV1Z6YzJGblpTQmhjbWQxYldWdWRDY3BPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9JV052Ym1ScGRHbHZiaWtnZTF4dUlDQWdJQ0FnWm05eUlDaDJZWElnWDJ4bGJqSWdQU0JoY21kMWJXVnVkSE11YkdWdVozUm9MQ0JoY21keklEMGdRWEp5WVhrb1gyeGxiaklnUGlBeUlEOGdYMnhsYmpJZ0xTQXlJRG9nTUNrc0lGOXJaWGt5SUQwZ01qc2dYMnRsZVRJZ1BDQmZiR1Z1TWpzZ1gydGxlVElyS3lrZ2UxeHVJQ0FnSUNBZ0lDQmhjbWR6VzE5clpYa3lJQzBnTWwwZ1BTQmhjbWQxYldWdWRITmJYMnRsZVRKZE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQndjbWx1ZEZkaGNtNXBibWN1WVhCd2JIa29kVzVrWldacGJtVmtMQ0JiWm05eWJXRjBYUzVqYjI1allYUW9ZWEpuY3lrcE8xeHVJQ0FnSUgxY2JpQWdmVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQnNiM2RRY21sdmNtbDBlVmRoY201cGJtYzdYRzVjYmx4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeUJYUlVKUVFVTkxJRVpQVDFSRlVseHVMeThnTGk5K0wzSmxZV04wTDJ4cFlpOXNiM2RRY21sdmNtbDBlVmRoY201cGJtY3Vhbk5jYmk4dklHMXZaSFZzWlNCcFpDQTlJREV4WEc0dkx5QnRiMlIxYkdVZ1kyaDFibXR6SUQwZ01DSmRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJJaXdpYzI5MWNtTmxVbTl2ZENJNklpSjlcXG4vLyMgc291cmNlVVJMPXdlYnBhY2staW50ZXJuYWw6Ly8vMTFcXG5cIik7XG5cbi8qKiovIH0pLFxuLyogMTIgKi9cbi8qIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKiBhbGwgZXhwb3J0cyB1c2VkICovXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vZmJqcy9saWIvZW1wdHlPYmplY3QuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbmV2YWwoXCIvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJvY2Vzcykgey8qKlxcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxcbiAqXFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbiAqXFxuICovXFxuXFxuXFxuXFxudmFyIGVtcHR5T2JqZWN0ID0ge307XFxuXFxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gIE9iamVjdC5mcmVlemUoZW1wdHlPYmplY3QpO1xcbn1cXG5cXG5tb2R1bGUuZXhwb3J0cyA9IGVtcHR5T2JqZWN0O1xcbi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLy4uLy4uL3Byb2Nlc3MvYnJvd3Nlci5qcyAqLyAwKSkpLy8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTVRJdWFuTWlMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOStMMlppYW5NdmJHbGlMMlZ0Y0hSNVQySnFaV04wTG1welB6UXlaVFFpWFN3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ0tHTXBJREl3TVRNdGNISmxjMlZ1ZEN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCTlNWUWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNWNiaUFxWEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1pXMXdkSGxQWW1wbFkzUWdQU0I3ZlR0Y2JseHVhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnVDJKcVpXTjBMbVp5WldWNlpTaGxiWEIwZVU5aWFtVmpkQ2s3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdaVzF3ZEhsUFltcGxZM1E3WEc1Y2JseHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THlCWFJVSlFRVU5MSUVaUFQxUkZVbHh1THk4Z0xpOStMMlppYW5NdmJHbGlMMlZ0Y0hSNVQySnFaV04wTG1welhHNHZMeUJ0YjJSMWJHVWdhV1FnUFNBeE1seHVMeThnYlc5a2RXeGxJR05vZFc1cmN5QTlJREFpWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVNJc0luTnZkWEpqWlZKdmIzUWlPaUlpZlE9PVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8xMlxcblwiKTtcblxuLyoqKi8gfSksXG4vKiAxMyAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9+L3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihwcm9jZXNzKSB7LyoqXFxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXFxuICpcXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuICovXFxuXFxuXFxuXFxudmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uICovIDYpO1xcbnZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBmYmpzL2xpYi9pbnZhcmlhbnQgKi8gMSk7XFxudmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBmYmpzL2xpYi93YXJuaW5nICovIDIpO1xcbnZhciBhc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBvYmplY3QtYXNzaWduICovIDUpO1xcblxcbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0ICovIDkpO1xcbnZhciBjaGVja1Byb3BUeXBlcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vY2hlY2tQcm9wVHlwZXMgKi8gMjMpO1xcblxcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXNWYWxpZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpIHtcXG4gIC8qIGdsb2JhbCBTeW1ib2wgKi9cXG4gIHZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVyYXRvcjtcXG4gIHZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLlxcblxcbiAgLyoqXFxuICAgKiBSZXR1cm5zIHRoZSBpdGVyYXRvciBtZXRob2QgZnVuY3Rpb24gY29udGFpbmVkIG9uIHRoZSBpdGVyYWJsZSBvYmplY3QuXFxuICAgKlxcbiAgICogQmUgc3VyZSB0byBpbnZva2UgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGl0ZXJhYmxlIGFzIGNvbnRleHQ6XFxuICAgKlxcbiAgICogICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihteUl0ZXJhYmxlKTtcXG4gICAqICAgICBpZiAoaXRlcmF0b3JGbikge1xcbiAgICogICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG15SXRlcmFibGUpO1xcbiAgICogICAgICAgLi4uXFxuICAgKiAgICAgfVxcbiAgICpcXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbWF5YmVJdGVyYWJsZVxcbiAgICogQHJldHVybiB7P2Z1bmN0aW9ufVxcbiAgICovXFxuICBmdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcXG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBtYXliZUl0ZXJhYmxlICYmIChJVEVSQVRPUl9TWU1CT0wgJiYgbWF5YmVJdGVyYWJsZVtJVEVSQVRPUl9TWU1CT0xdIHx8IG1heWJlSXRlcmFibGVbRkFVWF9JVEVSQVRPUl9TWU1CT0xdKTtcXG4gICAgaWYgKHR5cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rpb24nKSB7XFxuICAgICAgcmV0dXJuIGl0ZXJhdG9yRm47XFxuICAgIH1cXG4gIH1cXG5cXG4gIC8qKlxcbiAgICogQ29sbGVjdGlvbiBvZiBtZXRob2RzIHRoYXQgYWxsb3cgZGVjbGFyYXRpb24gYW5kIHZhbGlkYXRpb24gb2YgcHJvcHMgdGhhdCBhcmVcXG4gICAqIHN1cHBsaWVkIHRvIFJlYWN0IGNvbXBvbmVudHMuIEV4YW1wbGUgdXNhZ2U6XFxuICAgKlxcbiAgICogICB2YXIgUHJvcHMgPSByZXF1aXJlKCdSZWFjdFByb3BUeXBlcycpO1xcbiAgICogICB2YXIgTXlBcnRpY2xlID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xcbiAgICogICAgIHByb3BUeXBlczoge1xcbiAgICogICAgICAgLy8gQW4gb3B0aW9uYWwgc3RyaW5nIHByb3AgbmFtZWQgXFxcImRlc2NyaXB0aW9uXFxcIi5cXG4gICAqICAgICAgIGRlc2NyaXB0aW9uOiBQcm9wcy5zdHJpbmcsXFxuICAgKlxcbiAgICogICAgICAgLy8gQSByZXF1aXJlZCBlbnVtIHByb3AgbmFtZWQgXFxcImNhdGVnb3J5XFxcIi5cXG4gICAqICAgICAgIGNhdGVnb3J5OiBQcm9wcy5vbmVPZihbJ05ld3MnLCdQaG90b3MnXSkuaXNSZXF1aXJlZCxcXG4gICAqXFxuICAgKiAgICAgICAvLyBBIHByb3AgbmFtZWQgXFxcImRpYWxvZ1xcXCIgdGhhdCByZXF1aXJlcyBhbiBpbnN0YW5jZSBvZiBEaWFsb2cuXFxuICAgKiAgICAgICBkaWFsb2c6IFByb3BzLmluc3RhbmNlT2YoRGlhbG9nKS5pc1JlcXVpcmVkXFxuICAgKiAgICAgfSxcXG4gICAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeyAuLi4gfVxcbiAgICogICB9KTtcXG4gICAqXFxuICAgKiBBIG1vcmUgZm9ybWFsIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZXNlIG1ldGhvZHMgYXJlIHVzZWQ6XFxuICAgKlxcbiAgICogICB0eXBlIDo9IGFycmF5fGJvb2x8ZnVuY3xvYmplY3R8bnVtYmVyfHN0cmluZ3xvbmVPZihbLi4uXSl8aW5zdGFuY2VPZiguLi4pXFxuICAgKiAgIGRlY2wgOj0gUmVhY3RQcm9wVHlwZXMue3R5cGV9KC5pc1JlcXVpcmVkKT9cXG4gICAqXFxuICAgKiBFYWNoIGFuZCBldmVyeSBkZWNsYXJhdGlvbiBwcm9kdWNlcyBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlLiBUaGlzXFxuICAgKiBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGN1c3RvbSB2YWxpZGF0aW9uIGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGU6XFxuICAgKlxcbiAgICogIHZhciBNeUxpbmsgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XFxuICAgKiAgICBwcm9wVHlwZXM6IHtcXG4gICAqICAgICAgLy8gQW4gb3B0aW9uYWwgc3RyaW5nIG9yIFVSSSBwcm9wIG5hbWVkIFxcXCJocmVmXFxcIi5cXG4gICAqICAgICAgaHJlZjogZnVuY3Rpb24ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XFxuICAgKiAgICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcXG4gICAqICAgICAgICBpZiAocHJvcFZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHByb3BWYWx1ZSAhPT0gJ3N0cmluZycgJiZcXG4gICAqICAgICAgICAgICAgIShwcm9wVmFsdWUgaW5zdGFuY2VvZiBVUkkpKSB7XFxuICAgKiAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFxcbiAgICogICAgICAgICAgICAnRXhwZWN0ZWQgYSBzdHJpbmcgb3IgYW4gVVJJIGZvciAnICsgcHJvcE5hbWUgKyAnIGluICcgK1xcbiAgICogICAgICAgICAgICBjb21wb25lbnROYW1lXFxuICAgKiAgICAgICAgICApO1xcbiAgICogICAgICAgIH1cXG4gICAqICAgICAgfVxcbiAgICogICAgfSxcXG4gICAqICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7Li4ufVxcbiAgICogIH0pO1xcbiAgICpcXG4gICAqIEBpbnRlcm5hbFxcbiAgICovXFxuXFxuICB2YXIgQU5PTllNT1VTID0gJzw8YW5vbnltb3VzPj4nO1xcblxcbiAgLy8gSW1wb3J0YW50IVxcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanNgLlxcbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xcbiAgICBhcnJheTogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2FycmF5JyksXFxuICAgIGJvb2w6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdib29sZWFuJyksXFxuICAgIGZ1bmM6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdmdW5jdGlvbicpLFxcbiAgICBudW1iZXI6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdudW1iZXInKSxcXG4gICAgb2JqZWN0OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignb2JqZWN0JyksXFxuICAgIHN0cmluZzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N0cmluZycpLFxcbiAgICBzeW1ib2w6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzeW1ib2wnKSxcXG5cXG4gICAgYW55OiBjcmVhdGVBbnlUeXBlQ2hlY2tlcigpLFxcbiAgICBhcnJheU9mOiBjcmVhdGVBcnJheU9mVHlwZUNoZWNrZXIsXFxuICAgIGVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tlcigpLFxcbiAgICBpbnN0YW5jZU9mOiBjcmVhdGVJbnN0YW5jZVR5cGVDaGVja2VyLFxcbiAgICBub2RlOiBjcmVhdGVOb2RlQ2hlY2tlcigpLFxcbiAgICBvYmplY3RPZjogY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlcixcXG4gICAgb25lT2Y6IGNyZWF0ZUVudW1UeXBlQ2hlY2tlcixcXG4gICAgb25lT2ZUeXBlOiBjcmVhdGVVbmlvblR5cGVDaGVja2VyLFxcbiAgICBzaGFwZTogY3JlYXRlU2hhcGVUeXBlQ2hlY2tlcixcXG4gICAgZXhhY3Q6IGNyZWF0ZVN0cmljdFNoYXBlVHlwZUNoZWNrZXIsXFxuICB9O1xcblxcbiAgLyoqXFxuICAgKiBpbmxpbmVkIE9iamVjdC5pcyBwb2x5ZmlsbCB0byBhdm9pZCByZXF1aXJpbmcgY29uc3VtZXJzIHNoaXAgdGhlaXIgb3duXFxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvaXNcXG4gICAqL1xcbiAgLyplc2xpbnQtZGlzYWJsZSBuby1zZWxmLWNvbXBhcmUqL1xcbiAgZnVuY3Rpb24gaXMoeCwgeSkge1xcbiAgICAvLyBTYW1lVmFsdWUgYWxnb3JpdGhtXFxuICAgIGlmICh4ID09PSB5KSB7XFxuICAgICAgLy8gU3RlcHMgMS01LCA3LTEwXFxuICAgICAgLy8gU3RlcHMgNi5iLTYuZTogKzAgIT0gLTBcXG4gICAgICByZXR1cm4geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgLy8gU3RlcCA2LmE6IE5hTiA9PSBOYU5cXG4gICAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5O1xcbiAgICB9XFxuICB9XFxuICAvKmVzbGludC1lbmFibGUgbm8tc2VsZi1jb21wYXJlKi9cXG5cXG4gIC8qKlxcbiAgICogV2UgdXNlIGFuIEVycm9yLWxpa2Ugb2JqZWN0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFzIHBlb3BsZSBtYXkgY2FsbFxcbiAgICogUHJvcFR5cGVzIGRpcmVjdGx5IGFuZCBpbnNwZWN0IHRoZWlyIG91dHB1dC4gSG93ZXZlciwgd2UgZG9uJ3QgdXNlIHJlYWxcXG4gICAqIEVycm9ycyBhbnltb3JlLiBXZSBkb24ndCBpbnNwZWN0IHRoZWlyIHN0YWNrIGFueXdheSwgYW5kIGNyZWF0aW5nIHRoZW1cXG4gICAqIGlzIHByb2hpYml0aXZlbHkgZXhwZW5zaXZlIGlmIHRoZXkgYXJlIGNyZWF0ZWQgdG9vIG9mdGVuLCBzdWNoIGFzIHdoYXRcXG4gICAqIGhhcHBlbnMgaW4gb25lT2ZUeXBlKCkgZm9yIGFueSB0eXBlIGJlZm9yZSB0aGUgb25lIHRoYXQgbWF0Y2hlZC5cXG4gICAqL1xcbiAgZnVuY3Rpb24gUHJvcFR5cGVFcnJvcihtZXNzYWdlKSB7XFxuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XFxuICAgIHRoaXMuc3RhY2sgPSAnJztcXG4gIH1cXG4gIC8vIE1ha2UgYGluc3RhbmNlb2YgRXJyb3JgIHN0aWxsIHdvcmsgZm9yIHJldHVybmVkIGVycm9ycy5cXG4gIFByb3BUeXBlRXJyb3IucHJvdG90eXBlID0gRXJyb3IucHJvdG90eXBlO1xcblxcbiAgZnVuY3Rpb24gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpIHtcXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gICAgICB2YXIgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGUgPSB7fTtcXG4gICAgICB2YXIgbWFudWFsUHJvcFR5cGVXYXJuaW5nQ291bnQgPSAwO1xcbiAgICB9XFxuICAgIGZ1bmN0aW9uIGNoZWNrVHlwZShpc1JlcXVpcmVkLCBwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xcbiAgICAgIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnROYW1lIHx8IEFOT05ZTU9VUztcXG4gICAgICBwcm9wRnVsbE5hbWUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XFxuXFxuICAgICAgaWYgKHNlY3JldCAhPT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcXG4gICAgICAgIGlmICh0aHJvd09uRGlyZWN0QWNjZXNzKSB7XFxuICAgICAgICAgIC8vIE5ldyBiZWhhdmlvciBvbmx5IGZvciB1c2VycyBvZiBgcHJvcC10eXBlc2AgcGFja2FnZVxcbiAgICAgICAgICBpbnZhcmlhbnQoXFxuICAgICAgICAgICAgZmFsc2UsXFxuICAgICAgICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xcbiAgICAgICAgICAgICdVc2UgYFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpYCB0byBjYWxsIHRoZW0uICcgK1xcbiAgICAgICAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xcbiAgICAgICAgICApO1xcbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xcbiAgICAgICAgICAvLyBPbGQgYmVoYXZpb3IgZm9yIHBlb3BsZSB1c2luZyBSZWFjdC5Qcm9wVHlwZXNcXG4gICAgICAgICAgdmFyIGNhY2hlS2V5ID0gY29tcG9uZW50TmFtZSArICc6JyArIHByb3BOYW1lO1xcbiAgICAgICAgICBpZiAoXFxuICAgICAgICAgICAgIW1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSAmJlxcbiAgICAgICAgICAgIC8vIEF2b2lkIHNwYW1taW5nIHRoZSBjb25zb2xlIGJlY2F1c2UgdGhleSBhcmUgb2Z0ZW4gbm90IGFjdGlvbmFibGUgZXhjZXB0IGZvciBsaWIgYXV0aG9yc1xcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50IDwgM1xcbiAgICAgICAgICApIHtcXG4gICAgICAgICAgICB3YXJuaW5nKFxcbiAgICAgICAgICAgICAgZmFsc2UsXFxuICAgICAgICAgICAgICAnWW91IGFyZSBtYW51YWxseSBjYWxsaW5nIGEgUmVhY3QuUHJvcFR5cGVzIHZhbGlkYXRpb24gJyArXFxuICAgICAgICAgICAgICAnZnVuY3Rpb24gZm9yIHRoZSBgJXNgIHByb3Agb24gYCVzYC4gVGhpcyBpcyBkZXByZWNhdGVkICcgK1xcbiAgICAgICAgICAgICAgJ2FuZCB3aWxsIHRocm93IGluIHRoZSBzdGFuZGFsb25lIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcXG4gICAgICAgICAgICAgICdZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVlIHRvIGEgdGhpcmQtcGFydHkgUHJvcFR5cGVzICcgK1xcbiAgICAgICAgICAgICAgJ2xpYnJhcnkuIFNlZSBodHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmctZG9udC1jYWxsLXByb3B0eXBlcyAnICsgJ2ZvciBkZXRhaWxzLicsXFxuICAgICAgICAgICAgICBwcm9wRnVsbE5hbWUsXFxuICAgICAgICAgICAgICBjb21wb25lbnROYW1lXFxuICAgICAgICAgICAgKTtcXG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZUNhbGxDYWNoZVtjYWNoZUtleV0gPSB0cnVlO1xcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50Kys7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7XFxuICAgICAgICBpZiAoaXNSZXF1aXJlZCkge1xcbiAgICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSBudWxsKSB7XFxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdUaGUgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCAnICsgKCdpbiBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuJykpO1xcbiAgICAgICAgICB9XFxuICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignVGhlICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgaW4gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuJykpO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIG51bGw7XFxuICAgICAgfSBlbHNlIHtcXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpO1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICB2YXIgY2hhaW5lZENoZWNrVHlwZSA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIGZhbHNlKTtcXG4gICAgY2hhaW5lZENoZWNrVHlwZS5pc1JlcXVpcmVkID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgdHJ1ZSk7XFxuXFxuICAgIHJldHVybiBjaGFpbmVkQ2hlY2tUeXBlO1xcbiAgfVxcblxcbiAgZnVuY3Rpb24gY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoZXhwZWN0ZWRUeXBlKSB7XFxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XFxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcXG4gICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gZXhwZWN0ZWRUeXBlKSB7XFxuICAgICAgICAvLyBgcHJvcFZhbHVlYCBiZWluZyBpbnN0YW5jZSBvZiwgc2F5LCBkYXRlL3JlZ2V4cCwgcGFzcyB0aGUgJ29iamVjdCdcXG4gICAgICAgIC8vIGNoZWNrLCBidXQgd2UgY2FuIG9mZmVyIGEgbW9yZSBwcmVjaXNlIGVycm9yIG1lc3NhZ2UgaGVyZSByYXRoZXIgdGhhblxcbiAgICAgICAgLy8gJ29mIHR5cGUgYG9iamVjdGAnLlxcbiAgICAgICAgdmFyIHByZWNpc2VUeXBlID0gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKTtcXG5cXG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByZWNpc2VUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdgJyArIGV4cGVjdGVkVHlwZSArICdgLicpKTtcXG4gICAgICB9XFxuICAgICAgcmV0dXJuIG51bGw7XFxuICAgIH1cXG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcXG4gIH1cXG5cXG4gIGZ1bmN0aW9uIGNyZWF0ZUFueVR5cGVDaGVja2VyKCkge1xcbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIoZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGwpO1xcbiAgfVxcblxcbiAgZnVuY3Rpb24gY3JlYXRlQXJyYXlPZlR5cGVDaGVja2VyKHR5cGVDaGVja2VyKSB7XFxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xcbiAgICAgIGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcXG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignUHJvcGVydHkgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiBjb21wb25lbnQgYCcgKyBjb21wb25lbnROYW1lICsgJ2AgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIGFycmF5T2YuJyk7XFxuICAgICAgfVxcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XFxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcXG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XFxuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBhcnJheS4nKSk7XFxuICAgICAgfVxcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICB2YXIgZXJyb3IgPSB0eXBlQ2hlY2tlcihwcm9wVmFsdWUsIGksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnWycgKyBpICsgJ10nLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XFxuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICAgIHJldHVybiBudWxsO1xcbiAgICB9XFxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XFxuICB9XFxuXFxuICBmdW5jdGlvbiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIoKSB7XFxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XFxuICAgICAgaWYgKCFpc1ZhbGlkRWxlbWVudChwcm9wVmFsdWUpKSB7XFxuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3RFbGVtZW50LicpKTtcXG4gICAgICB9XFxuICAgICAgcmV0dXJuIG51bGw7XFxuICAgIH1cXG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcXG4gIH1cXG5cXG4gIGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIoZXhwZWN0ZWRDbGFzcykge1xcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcXG4gICAgICBpZiAoIShwcm9wc1twcm9wTmFtZV0gaW5zdGFuY2VvZiBleHBlY3RlZENsYXNzKSkge1xcbiAgICAgICAgdmFyIGV4cGVjdGVkQ2xhc3NOYW1lID0gZXhwZWN0ZWRDbGFzcy5uYW1lIHx8IEFOT05ZTU9VUztcXG4gICAgICAgIHZhciBhY3R1YWxDbGFzc05hbWUgPSBnZXRDbGFzc05hbWUocHJvcHNbcHJvcE5hbWVdKTtcXG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIGFjdHVhbENsYXNzTmFtZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnaW5zdGFuY2Ugb2YgYCcgKyBleHBlY3RlZENsYXNzTmFtZSArICdgLicpKTtcXG4gICAgICB9XFxuICAgICAgcmV0dXJuIG51bGw7XFxuICAgIH1cXG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcXG4gIH1cXG5cXG4gIGZ1bmN0aW9uIGNyZWF0ZUVudW1UeXBlQ2hlY2tlcihleHBlY3RlZFZhbHVlcykge1xcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXhwZWN0ZWRWYWx1ZXMpKSB7XFxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mLCBleHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhcnJheS4nKSA6IHZvaWQgMDtcXG4gICAgICByZXR1cm4gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGw7XFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XFxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICBpZiAoaXMocHJvcFZhbHVlLCBleHBlY3RlZFZhbHVlc1tpXSkpIHtcXG4gICAgICAgICAgcmV0dXJuIG51bGw7XFxuICAgICAgICB9XFxuICAgICAgfVxcblxcbiAgICAgIHZhciB2YWx1ZXNTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShleHBlY3RlZFZhbHVlcyk7XFxuICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB2YWx1ZSBgJyArIHByb3BWYWx1ZSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBvbmUgb2YgJyArIHZhbHVlc1N0cmluZyArICcuJykpO1xcbiAgICB9XFxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XFxuICB9XFxuXFxuICBmdW5jdGlvbiBjcmVhdGVPYmplY3RPZlR5cGVDaGVja2VyKHR5cGVDaGVja2VyKSB7XFxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xcbiAgICAgIGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcXG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignUHJvcGVydHkgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiBjb21wb25lbnQgYCcgKyBjb21wb25lbnROYW1lICsgJ2AgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIG9iamVjdE9mLicpO1xcbiAgICAgIH1cXG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xcbiAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XFxuICAgICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0Jykge1xcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LicpKTtcXG4gICAgICB9XFxuICAgICAgZm9yICh2YXIga2V5IGluIHByb3BWYWx1ZSkge1xcbiAgICAgICAgaWYgKHByb3BWYWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XFxuICAgICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XFxuICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICAgIHJldHVybiBudWxsO1xcbiAgICB9XFxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XFxuICB9XFxuXFxuICBmdW5jdGlvbiBjcmVhdGVVbmlvblR5cGVDaGVja2VyKGFycmF5T2ZUeXBlQ2hlY2tlcnMpIHtcXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5T2ZUeXBlQ2hlY2tlcnMpKSB7XFxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mVHlwZSwgZXhwZWN0ZWQgYW4gaW5zdGFuY2Ugb2YgYXJyYXkuJykgOiB2b2lkIDA7XFxuICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsO1xcbiAgICB9XFxuXFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZlR5cGVDaGVja2Vycy5sZW5ndGg7IGkrKykge1xcbiAgICAgIHZhciBjaGVja2VyID0gYXJyYXlPZlR5cGVDaGVja2Vyc1tpXTtcXG4gICAgICBpZiAodHlwZW9mIGNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcXG4gICAgICAgIHdhcm5pbmcoXFxuICAgICAgICAgIGZhbHNlLFxcbiAgICAgICAgICAnSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUuIEV4cGVjdGVkIGFuIGFycmF5IG9mIGNoZWNrIGZ1bmN0aW9ucywgYnV0ICcgK1xcbiAgICAgICAgICAncmVjZWl2ZWQgJXMgYXQgaW5kZXggJXMuJyxcXG4gICAgICAgICAgZ2V0UG9zdGZpeEZvclR5cGVXYXJuaW5nKGNoZWNrZXIpLFxcbiAgICAgICAgICBpXFxuICAgICAgICApO1xcbiAgICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsO1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5T2ZUeXBlQ2hlY2tlcnMubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciBjaGVja2VyID0gYXJyYXlPZlR5cGVDaGVja2Vyc1tpXTtcXG4gICAgICAgIGlmIChjaGVja2VyKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpID09IG51bGwpIHtcXG4gICAgICAgICAgcmV0dXJuIG51bGw7XFxuICAgICAgICB9XFxuICAgICAgfVxcblxcbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AuJykpO1xcbiAgICB9XFxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XFxuICB9XFxuXFxuICBmdW5jdGlvbiBjcmVhdGVOb2RlQ2hlY2tlcigpIHtcXG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XFxuICAgICAgaWYgKCFpc05vZGUocHJvcHNbcHJvcE5hbWVdKSkge1xcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYSBSZWFjdE5vZGUuJykpO1xcbiAgICAgIH1cXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xcbiAgfVxcblxcbiAgZnVuY3Rpb24gY3JlYXRlU2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XFxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XFxuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcXG4gICAgICBpZiAocHJvcFR5cGUgIT09ICdvYmplY3QnKSB7XFxuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgYCcgKyBwcm9wVHlwZSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBgb2JqZWN0YC4nKSk7XFxuICAgICAgfVxcbiAgICAgIGZvciAodmFyIGtleSBpbiBzaGFwZVR5cGVzKSB7XFxuICAgICAgICB2YXIgY2hlY2tlciA9IHNoYXBlVHlwZXNba2V5XTtcXG4gICAgICAgIGlmICghY2hlY2tlcikge1xcbiAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBlcnJvciA9IGNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcXG4gICAgICAgIGlmIChlcnJvcikge1xcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICAgIHJldHVybiBudWxsO1xcbiAgICB9XFxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XFxuICB9XFxuXFxuICBmdW5jdGlvbiBjcmVhdGVTdHJpY3RTaGFwZVR5cGVDaGVja2VyKHNoYXBlVHlwZXMpIHtcXG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XFxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcXG4gICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcXG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSBgJyArIHByb3BUeXBlICsgJ2AgJyArICgnc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGBvYmplY3RgLicpKTtcXG4gICAgICB9XFxuICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBhbGwga2V5cyBpbiBjYXNlIHNvbWUgYXJlIHJlcXVpcmVkIGJ1dCBtaXNzaW5nIGZyb21cXG4gICAgICAvLyBwcm9wcy5cXG4gICAgICB2YXIgYWxsS2V5cyA9IGFzc2lnbih7fSwgcHJvcHNbcHJvcE5hbWVdLCBzaGFwZVR5cGVzKTtcXG4gICAgICBmb3IgKHZhciBrZXkgaW4gYWxsS2V5cykge1xcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBzaGFwZVR5cGVzW2tleV07XFxuICAgICAgICBpZiAoIWNoZWNrZXIpIHtcXG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKFxcbiAgICAgICAgICAgICdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBrZXkgYCcgKyBrZXkgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYC4nICtcXG4gICAgICAgICAgICAnXFxcXG5CYWQgb2JqZWN0OiAnICsgSlNPTi5zdHJpbmdpZnkocHJvcHNbcHJvcE5hbWVdLCBudWxsLCAnICAnKSArXFxuICAgICAgICAgICAgJ1xcXFxuVmFsaWQga2V5czogJyArICBKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyhzaGFwZVR5cGVzKSwgbnVsbCwgJyAgJylcXG4gICAgICAgICAgKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBlcnJvciA9IGNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcXG4gICAgICAgIGlmIChlcnJvcikge1xcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICAgIHJldHVybiBudWxsO1xcbiAgICB9XFxuXFxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XFxuICB9XFxuXFxuICBmdW5jdGlvbiBpc05vZGUocHJvcFZhbHVlKSB7XFxuICAgIHN3aXRjaCAodHlwZW9mIHByb3BWYWx1ZSkge1xcbiAgICAgIGNhc2UgJ251bWJlcic6XFxuICAgICAgY2FzZSAnc3RyaW5nJzpcXG4gICAgICBjYXNlICd1bmRlZmluZWQnOlxcbiAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgICAgY2FzZSAnYm9vbGVhbic6XFxuICAgICAgICByZXR1cm4gIXByb3BWYWx1ZTtcXG4gICAgICBjYXNlICdvYmplY3QnOlxcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xcbiAgICAgICAgICByZXR1cm4gcHJvcFZhbHVlLmV2ZXJ5KGlzTm9kZSk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAocHJvcFZhbHVlID09PSBudWxsIHx8IGlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHtcXG4gICAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgICAgICB9XFxuXFxuICAgICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4ocHJvcFZhbHVlKTtcXG4gICAgICAgIGlmIChpdGVyYXRvckZuKSB7XFxuICAgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChwcm9wVmFsdWUpO1xcbiAgICAgICAgICB2YXIgc3RlcDtcXG4gICAgICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IHByb3BWYWx1ZS5lbnRyaWVzKSB7XFxuICAgICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xcbiAgICAgICAgICAgICAgaWYgKCFpc05vZGUoc3RlcC52YWx1ZSkpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cXG4gICAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XFxuICAgICAgICAgICAgICB2YXIgZW50cnkgPSBzdGVwLnZhbHVlO1xcbiAgICAgICAgICAgICAgaWYgKGVudHJ5KSB7XFxuICAgICAgICAgICAgICAgIGlmICghaXNOb2RlKGVudHJ5WzFdKSkge1xcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgICAgZGVmYXVsdDpcXG4gICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgfVxcbiAgfVxcblxcbiAgZnVuY3Rpb24gaXNTeW1ib2wocHJvcFR5cGUsIHByb3BWYWx1ZSkge1xcbiAgICAvLyBOYXRpdmUgU3ltYm9sLlxcbiAgICBpZiAocHJvcFR5cGUgPT09ICdzeW1ib2wnKSB7XFxuICAgICAgcmV0dXJuIHRydWU7XFxuICAgIH1cXG5cXG4gICAgLy8gMTkuNC4zLjUgU3ltYm9sLnByb3RvdHlwZVtAQHRvU3RyaW5nVGFnXSA9PT0gJ1N5bWJvbCdcXG4gICAgaWYgKHByb3BWYWx1ZVsnQEB0b1N0cmluZ1RhZyddID09PSAnU3ltYm9sJykge1xcbiAgICAgIHJldHVybiB0cnVlO1xcbiAgICB9XFxuXFxuICAgIC8vIEZhbGxiYWNrIGZvciBub24tc3BlYyBjb21wbGlhbnQgU3ltYm9scyB3aGljaCBhcmUgcG9seWZpbGxlZC5cXG4gICAgaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgcHJvcFZhbHVlIGluc3RhbmNlb2YgU3ltYm9sKSB7XFxuICAgICAgcmV0dXJuIHRydWU7XFxuICAgIH1cXG5cXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcblxcbiAgLy8gRXF1aXZhbGVudCBvZiBgdHlwZW9mYCBidXQgd2l0aCBzcGVjaWFsIGhhbmRsaW5nIGZvciBhcnJheSBhbmQgcmVnZXhwLlxcbiAgZnVuY3Rpb24gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKSB7XFxuICAgIHZhciBwcm9wVHlwZSA9IHR5cGVvZiBwcm9wVmFsdWU7XFxuICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcXG4gICAgICByZXR1cm4gJ2FycmF5JztcXG4gICAgfVxcbiAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XFxuICAgICAgLy8gT2xkIHdlYmtpdHMgKGF0IGxlYXN0IHVudGlsIEFuZHJvaWQgNC4wKSByZXR1cm4gJ2Z1bmN0aW9uJyByYXRoZXIgdGhhblxcbiAgICAgIC8vICdvYmplY3QnIGZvciB0eXBlb2YgYSBSZWdFeHAuIFdlJ2xsIG5vcm1hbGl6ZSB0aGlzIGhlcmUgc28gdGhhdCAvYmxhL1xcbiAgICAgIC8vIHBhc3NlcyBQcm9wVHlwZXMub2JqZWN0LlxcbiAgICAgIHJldHVybiAnb2JqZWN0JztcXG4gICAgfVxcbiAgICBpZiAoaXNTeW1ib2wocHJvcFR5cGUsIHByb3BWYWx1ZSkpIHtcXG4gICAgICByZXR1cm4gJ3N5bWJvbCc7XFxuICAgIH1cXG4gICAgcmV0dXJuIHByb3BUeXBlO1xcbiAgfVxcblxcbiAgLy8gVGhpcyBoYW5kbGVzIG1vcmUgdHlwZXMgdGhhbiBgZ2V0UHJvcFR5cGVgLiBPbmx5IHVzZWQgZm9yIGVycm9yIG1lc3NhZ2VzLlxcbiAgLy8gU2VlIGBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcmAuXFxuICBmdW5jdGlvbiBnZXRQcmVjaXNlVHlwZShwcm9wVmFsdWUpIHtcXG4gICAgaWYgKHR5cGVvZiBwcm9wVmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IHByb3BWYWx1ZSA9PT0gbnVsbCkge1xcbiAgICAgIHJldHVybiAnJyArIHByb3BWYWx1ZTtcXG4gICAgfVxcbiAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xcbiAgICBpZiAocHJvcFR5cGUgPT09ICdvYmplY3QnKSB7XFxuICAgICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcXG4gICAgICAgIHJldHVybiAnZGF0ZSc7XFxuICAgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcXG4gICAgICAgIHJldHVybiAncmVnZXhwJztcXG4gICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIHByb3BUeXBlO1xcbiAgfVxcblxcbiAgLy8gUmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHBvc3RmaXhlZCB0byBhIHdhcm5pbmcgYWJvdXQgYW4gaW52YWxpZCB0eXBlLlxcbiAgLy8gRm9yIGV4YW1wbGUsIFxcXCJ1bmRlZmluZWRcXFwiIG9yIFxcXCJvZiB0eXBlIGFycmF5XFxcIlxcbiAgZnVuY3Rpb24gZ2V0UG9zdGZpeEZvclR5cGVXYXJuaW5nKHZhbHVlKSB7XFxuICAgIHZhciB0eXBlID0gZ2V0UHJlY2lzZVR5cGUodmFsdWUpO1xcbiAgICBzd2l0Y2ggKHR5cGUpIHtcXG4gICAgICBjYXNlICdhcnJheSc6XFxuICAgICAgY2FzZSAnb2JqZWN0JzpcXG4gICAgICAgIHJldHVybiAnYW4gJyArIHR5cGU7XFxuICAgICAgY2FzZSAnYm9vbGVhbic6XFxuICAgICAgY2FzZSAnZGF0ZSc6XFxuICAgICAgY2FzZSAncmVnZXhwJzpcXG4gICAgICAgIHJldHVybiAnYSAnICsgdHlwZTtcXG4gICAgICBkZWZhdWx0OlxcbiAgICAgICAgcmV0dXJuIHR5cGU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC8vIFJldHVybnMgY2xhc3MgbmFtZSBvZiB0aGUgb2JqZWN0LCBpZiBhbnkuXFxuICBmdW5jdGlvbiBnZXRDbGFzc05hbWUocHJvcFZhbHVlKSB7XFxuICAgIGlmICghcHJvcFZhbHVlLmNvbnN0cnVjdG9yIHx8ICFwcm9wVmFsdWUuY29uc3RydWN0b3IubmFtZSkge1xcbiAgICAgIHJldHVybiBBTk9OWU1PVVM7XFxuICAgIH1cXG4gICAgcmV0dXJuIHByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lO1xcbiAgfVxcblxcbiAgUmVhY3RQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMgPSBjaGVja1Byb3BUeXBlcztcXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xcblxcbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xcbn07XFxuXFxuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vLi4vcHJvY2Vzcy9icm93c2VyLmpzICovIDApKSkvLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lNVE11YW5NaUxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5K0wzQnliM0F0ZEhsd1pYTXZabUZqZEc5eWVWZHBkR2hVZVhCbFEyaGxZMnRsY25NdWFuTS9aR05rTlNKZExDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQW9ZeWtnTWpBeE15MXdjbVZ6Wlc1MExDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFMUpWQ0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMbHh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUdWdGNIUjVSblZ1WTNScGIyNGdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlsYlhCMGVVWjFibU4wYVc5dUp5azdYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYm5aaGNpQmhjM05wWjI0Z1BTQnlaWEYxYVhKbEtDZHZZbXBsWTNRdFlYTnphV2R1SnlrN1hHNWNiblpoY2lCU1pXRmpkRkJ5YjNCVWVYQmxjMU5sWTNKbGRDQTlJSEpsY1hWcGNtVW9KeTR2YkdsaUwxSmxZV04wVUhKdmNGUjVjR1Z6VTJWamNtVjBKeWs3WEc1MllYSWdZMmhsWTJ0UWNtOXdWSGx3WlhNZ1BTQnlaWEYxYVhKbEtDY3VMMk5vWldOclVISnZjRlI1Y0dWekp5azdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnWm5WdVkzUnBiMjRvYVhOV1lXeHBaRVZzWlcxbGJuUXNJSFJvY205M1QyNUVhWEpsWTNSQlkyTmxjM01wSUh0Y2JpQWdMeW9nWjJ4dlltRnNJRk41YldKdmJDQXFMMXh1SUNCMllYSWdTVlJGVWtGVVQxSmZVMWxOUWs5TUlEMGdkSGx3Wlc5bUlGTjViV0p2YkNBOVBUMGdKMloxYm1OMGFXOXVKeUFtSmlCVGVXMWliMnd1YVhSbGNtRjBiM0k3WEc0Z0lIWmhjaUJHUVZWWVgwbFVSVkpCVkU5U1gxTlpUVUpQVENBOUlDZEFRR2wwWlhKaGRHOXlKenNnTHk4Z1FtVm1iM0psSUZONWJXSnZiQ0J6Y0dWakxseHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUhSb1pTQnBkR1Z5WVhSdmNpQnRaWFJvYjJRZ1puVnVZM1JwYjI0Z1kyOXVkR0ZwYm1Wa0lHOXVJSFJvWlNCcGRHVnlZV0pzWlNCdlltcGxZM1F1WEc0Z0lDQXFYRzRnSUNBcUlFSmxJSE4xY21VZ2RHOGdhVzUyYjJ0bElIUm9aU0JtZFc1amRHbHZiaUIzYVhSb0lIUm9aU0JwZEdWeVlXSnNaU0JoY3lCamIyNTBaWGgwT2x4dUlDQWdLbHh1SUNBZ0tpQWdJQ0FnZG1GeUlHbDBaWEpoZEc5eVJtNGdQU0JuWlhSSmRHVnlZWFJ2Y2tadUtHMTVTWFJsY21GaWJHVXBPMXh1SUNBZ0tpQWdJQ0FnYVdZZ0tHbDBaWEpoZEc5eVJtNHBJSHRjYmlBZ0lDb2dJQ0FnSUNBZ2RtRnlJR2wwWlhKaGRHOXlJRDBnYVhSbGNtRjBiM0pHYmk1allXeHNLRzE1U1hSbGNtRmliR1VwTzF4dUlDQWdLaUFnSUNBZ0lDQXVMaTVjYmlBZ0lDb2dJQ0FnSUgxY2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIcy9iMkpxWldOMGZTQnRZWGxpWlVsMFpYSmhZbXhsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlejltZFc1amRHbHZibjFjYmlBZ0lDb3ZYRzRnSUdaMWJtTjBhVzl1SUdkbGRFbDBaWEpoZEc5eVJtNG9iV0Y1WW1WSmRHVnlZV0pzWlNrZ2UxeHVJQ0FnSUhaaGNpQnBkR1Z5WVhSdmNrWnVJRDBnYldGNVltVkpkR1Z5WVdKc1pTQW1KaUFvU1ZSRlVrRlVUMUpmVTFsTlFrOU1JQ1ltSUcxaGVXSmxTWFJsY21GaWJHVmJTVlJGVWtGVVQxSmZVMWxOUWs5TVhTQjhmQ0J0WVhsaVpVbDBaWEpoWW14bFcwWkJWVmhmU1ZSRlVrRlVUMUpmVTFsTlFrOU1YU2s3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJwZEdWeVlYUnZja1p1SUQwOVBTQW5ablZ1WTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdhWFJsY21GMGIzSkdianRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUTI5c2JHVmpkR2x2YmlCdlppQnRaWFJvYjJSeklIUm9ZWFFnWVd4c2IzY2daR1ZqYkdGeVlYUnBiMjRnWVc1a0lIWmhiR2xrWVhScGIyNGdiMllnY0hKdmNITWdkR2hoZENCaGNtVmNiaUFnSUNvZ2MzVndjR3hwWldRZ2RHOGdVbVZoWTNRZ1kyOXRjRzl1Wlc1MGN5NGdSWGhoYlhCc1pTQjFjMkZuWlRwY2JpQWdJQ3BjYmlBZ0lDb2dJQ0IyWVhJZ1VISnZjSE1nUFNCeVpYRjFhWEpsS0NkU1pXRmpkRkJ5YjNCVWVYQmxjeWNwTzF4dUlDQWdLaUFnSUhaaGNpQk5lVUZ5ZEdsamJHVWdQU0JTWldGamRDNWpjbVZoZEdWRGJHRnpjeWg3WEc0Z0lDQXFJQ0FnSUNCd2NtOXdWSGx3WlhNNklIdGNiaUFnSUNvZ0lDQWdJQ0FnTHk4Z1FXNGdiM0IwYVc5dVlXd2djM1J5YVc1bklIQnliM0FnYm1GdFpXUWdYQ0prWlhOamNtbHdkR2x2Ymx3aUxseHVJQ0FnS2lBZ0lDQWdJQ0JrWlhOamNtbHdkR2x2YmpvZ1VISnZjSE11YzNSeWFXNW5MRnh1SUNBZ0tseHVJQ0FnS2lBZ0lDQWdJQ0F2THlCQklISmxjWFZwY21Wa0lHVnVkVzBnY0hKdmNDQnVZVzFsWkNCY0ltTmhkR1ZuYjNKNVhDSXVYRzRnSUNBcUlDQWdJQ0FnSUdOaGRHVm5iM0o1T2lCUWNtOXdjeTV2Ym1WUFppaGJKMDVsZDNNbkxDZFFhRzkwYjNNblhTa3VhWE5TWlhGMWFYSmxaQ3hjYmlBZ0lDcGNiaUFnSUNvZ0lDQWdJQ0FnTHk4Z1FTQndjbTl3SUc1aGJXVmtJRndpWkdsaGJHOW5YQ0lnZEdoaGRDQnlaWEYxYVhKbGN5QmhiaUJwYm5OMFlXNWpaU0J2WmlCRWFXRnNiMmN1WEc0Z0lDQXFJQ0FnSUNBZ0lHUnBZV3h2WnpvZ1VISnZjSE11YVc1emRHRnVZMlZQWmloRWFXRnNiMmNwTG1selVtVnhkV2x5WldSY2JpQWdJQ29nSUNBZ0lIMHNYRzRnSUNBcUlDQWdJQ0J5Wlc1a1pYSTZJR1oxYm1OMGFXOXVLQ2tnZXlBdUxpNGdmVnh1SUNBZ0tpQWdJSDBwTzF4dUlDQWdLbHh1SUNBZ0tpQkJJRzF2Y21VZ1ptOXliV0ZzSUhOd1pXTnBabWxqWVhScGIyNGdiMllnYUc5M0lIUm9aWE5sSUcxbGRHaHZaSE1nWVhKbElIVnpaV1E2WEc0Z0lDQXFYRzRnSUNBcUlDQWdkSGx3WlNBNlBTQmhjbkpoZVh4aWIyOXNmR1oxYm1OOGIySnFaV04wZkc1MWJXSmxjbnh6ZEhKcGJtZDhiMjVsVDJZb1d5NHVMbDBwZkdsdWMzUmhibU5sVDJZb0xpNHVLVnh1SUNBZ0tpQWdJR1JsWTJ3Z09qMGdVbVZoWTNSUWNtOXdWSGx3WlhNdWUzUjVjR1Y5S0M1cGMxSmxjWFZwY21Wa0tUOWNiaUFnSUNwY2JpQWdJQ29nUldGamFDQmhibVFnWlhabGNua2daR1ZqYkdGeVlYUnBiMjRnY0hKdlpIVmpaWE1nWVNCbWRXNWpkR2x2YmlCM2FYUm9JSFJvWlNCellXMWxJSE5wWjI1aGRIVnlaUzRnVkdocGMxeHVJQ0FnS2lCaGJHeHZkM01nZEdobElHTnlaV0YwYVc5dUlHOW1JR04xYzNSdmJTQjJZV3hwWkdGMGFXOXVJR1oxYm1OMGFXOXVjeTRnUm05eUlHVjRZVzF3YkdVNlhHNGdJQ0FxWEc0Z0lDQXFJQ0IyWVhJZ1RYbE1hVzVySUQwZ1VtVmhZM1F1WTNKbFlYUmxRMnhoYzNNb2UxeHVJQ0FnS2lBZ0lDQndjbTl3Vkhsd1pYTTZJSHRjYmlBZ0lDb2dJQ0FnSUNBdkx5QkJiaUJ2Y0hScGIyNWhiQ0J6ZEhKcGJtY2diM0lnVlZKSklIQnliM0FnYm1GdFpXUWdYQ0pvY21WbVhDSXVYRzRnSUNBcUlDQWdJQ0FnYUhKbFpqb2dablZ1WTNScGIyNG9jSEp2Y0hNc0lIQnliM0JPWVcxbExDQmpiMjF3YjI1bGJuUk9ZVzFsS1NCN1hHNGdJQ0FxSUNBZ0lDQWdJQ0IyWVhJZ2NISnZjRlpoYkhWbElEMGdjSEp2Y0hOYmNISnZjRTVoYldWZE8xeHVJQ0FnS2lBZ0lDQWdJQ0FnYVdZZ0tIQnliM0JXWVd4MVpTQWhQU0J1ZFd4c0lDWW1JSFI1Y0dWdlppQndjbTl3Vm1Gc2RXVWdJVDA5SUNkemRISnBibWNuSUNZbVhHNGdJQ0FxSUNBZ0lDQWdJQ0FnSUNBZ0lTaHdjbTl3Vm1Gc2RXVWdhVzV6ZEdGdVkyVnZaaUJWVWtrcEtTQjdYRzRnSUNBcUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCdVpYY2dSWEp5YjNJb1hHNGdJQ0FxSUNBZ0lDQWdJQ0FnSUNBZ0owVjRjR1ZqZEdWa0lHRWdjM1J5YVc1bklHOXlJR0Z1SUZWU1NTQm1iM0lnSnlBcklIQnliM0JPWVcxbElDc2dKeUJwYmlBbklDdGNiaUFnSUNvZ0lDQWdJQ0FnSUNBZ0lDQmpiMjF3YjI1bGJuUk9ZVzFsWEc0Z0lDQXFJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQXFJQ0FnSUNBZ0lDQjlYRzRnSUNBcUlDQWdJQ0FnZlZ4dUlDQWdLaUFnSUNCOUxGeHVJQ0FnS2lBZ0lDQnlaVzVrWlhJNklHWjFibU4wYVc5dUtDa2dleTR1TG4xY2JpQWdJQ29nSUgwcE8xeHVJQ0FnS2x4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzVjYmlBZ2RtRnlJRUZPVDA1WlRVOVZVeUE5SUNjOFBHRnViMjU1Ylc5MWN6NCtKenRjYmx4dUlDQXZMeUJKYlhCdmNuUmhiblFoWEc0Z0lDOHZJRXRsWlhBZ2RHaHBjeUJzYVhOMElHbHVJSE41Ym1NZ2QybDBhQ0J3Y205a2RXTjBhVzl1SUhabGNuTnBiMjRnYVc0Z1lDNHZabUZqZEc5eWVWZHBkR2hVYUhKdmQybHVaMU5vYVcxekxtcHpZQzVjYmlBZ2RtRnlJRkpsWVdOMFVISnZjRlI1Y0dWeklEMGdlMXh1SUNBZ0lHRnljbUY1T2lCamNtVmhkR1ZRY21sdGFYUnBkbVZVZVhCbFEyaGxZMnRsY2lnbllYSnlZWGtuS1N4Y2JpQWdJQ0JpYjI5c09pQmpjbVZoZEdWUWNtbHRhWFJwZG1WVWVYQmxRMmhsWTJ0bGNpZ25ZbTl2YkdWaGJpY3BMRnh1SUNBZ0lHWjFibU02SUdOeVpXRjBaVkJ5YVcxcGRHbDJaVlI1Y0dWRGFHVmphMlZ5S0NkbWRXNWpkR2x2YmljcExGeHVJQ0FnSUc1MWJXSmxjam9nWTNKbFlYUmxVSEpwYldsMGFYWmxWSGx3WlVOb1pXTnJaWElvSjI1MWJXSmxjaWNwTEZ4dUlDQWdJRzlpYW1WamREb2dZM0psWVhSbFVISnBiV2wwYVhabFZIbHdaVU5vWldOclpYSW9KMjlpYW1WamRDY3BMRnh1SUNBZ0lITjBjbWx1WnpvZ1kzSmxZWFJsVUhKcGJXbDBhWFpsVkhsd1pVTm9aV05yWlhJb0ozTjBjbWx1WnljcExGeHVJQ0FnSUhONWJXSnZiRG9nWTNKbFlYUmxVSEpwYldsMGFYWmxWSGx3WlVOb1pXTnJaWElvSjNONWJXSnZiQ2NwTEZ4dVhHNGdJQ0FnWVc1NU9pQmpjbVZoZEdWQmJubFVlWEJsUTJobFkydGxjaWdwTEZ4dUlDQWdJR0Z5Y21GNVQyWTZJR055WldGMFpVRnljbUY1VDJaVWVYQmxRMmhsWTJ0bGNpeGNiaUFnSUNCbGJHVnRaVzUwT2lCamNtVmhkR1ZGYkdWdFpXNTBWSGx3WlVOb1pXTnJaWElvS1N4Y2JpQWdJQ0JwYm5OMFlXNWpaVTltT2lCamNtVmhkR1ZKYm5OMFlXNWpaVlI1Y0dWRGFHVmphMlZ5TEZ4dUlDQWdJRzV2WkdVNklHTnlaV0YwWlU1dlpHVkRhR1ZqYTJWeUtDa3NYRzRnSUNBZ2IySnFaV04wVDJZNklHTnlaV0YwWlU5aWFtVmpkRTltVkhsd1pVTm9aV05yWlhJc1hHNGdJQ0FnYjI1bFQyWTZJR055WldGMFpVVnVkVzFVZVhCbFEyaGxZMnRsY2l4Y2JpQWdJQ0J2Ym1WUFpsUjVjR1U2SUdOeVpXRjBaVlZ1YVc5dVZIbHdaVU5vWldOclpYSXNYRzRnSUNBZ2MyaGhjR1U2SUdOeVpXRjBaVk5vWVhCbFZIbHdaVU5vWldOclpYSXNYRzRnSUNBZ1pYaGhZM1E2SUdOeVpXRjBaVk4wY21samRGTm9ZWEJsVkhsd1pVTm9aV05yWlhJc1hHNGdJSDA3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJR2x1YkdsdVpXUWdUMkpxWldOMExtbHpJSEJ2YkhsbWFXeHNJSFJ2SUdGMmIybGtJSEpsY1hWcGNtbHVaeUJqYjI1emRXMWxjbk1nYzJocGNDQjBhR1ZwY2lCdmQyNWNiaUFnSUNvZ2FIUjBjSE02THk5a1pYWmxiRzl3WlhJdWJXOTZhV3hzWVM1dmNtY3ZaVzR0VlZNdlpHOWpjeTlYWldJdlNtRjJZVk5qY21sd2RDOVNaV1psY21WdVkyVXZSMnh2WW1Gc1gwOWlhbVZqZEhNdlQySnFaV04wTDJselhHNGdJQ0FxTDF4dUlDQXZLbVZ6YkdsdWRDMWthWE5oWW14bElHNXZMWE5sYkdZdFkyOXRjR0Z5WlNvdlhHNGdJR1oxYm1OMGFXOXVJR2x6S0hnc0lIa3BJSHRjYmlBZ0lDQXZMeUJUWVcxbFZtRnNkV1VnWVd4bmIzSnBkR2h0WEc0Z0lDQWdhV1lnS0hnZ1BUMDlJSGtwSUh0Y2JpQWdJQ0FnSUM4dklGTjBaWEJ6SURFdE5Td2dOeTB4TUZ4dUlDQWdJQ0FnTHk4Z1UzUmxjSE1nTmk1aUxUWXVaVG9nS3pBZ0lUMGdMVEJjYmlBZ0lDQWdJSEpsZEhWeWJpQjRJQ0U5UFNBd0lIeDhJREVnTHlCNElEMDlQU0F4SUM4Z2VUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnTHk4Z1UzUmxjQ0EyTG1FNklFNWhUaUE5UFNCT1lVNWNiaUFnSUNBZ0lISmxkSFZ5YmlCNElDRTlQU0I0SUNZbUlIa2dJVDA5SUhrN1hHNGdJQ0FnZlZ4dUlDQjlYRzRnSUM4cVpYTnNhVzUwTFdWdVlXSnNaU0J1YnkxelpXeG1MV052YlhCaGNtVXFMMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlhaU0IxYzJVZ1lXNGdSWEp5YjNJdGJHbHJaU0J2WW1wbFkzUWdabTl5SUdKaFkydDNZWEprSUdOdmJYQmhkR2xpYVd4cGRIa2dZWE1nY0dWdmNHeGxJRzFoZVNCallXeHNYRzRnSUNBcUlGQnliM0JVZVhCbGN5QmthWEpsWTNSc2VTQmhibVFnYVc1emNHVmpkQ0IwYUdWcGNpQnZkWFJ3ZFhRdUlFaHZkMlYyWlhJc0lIZGxJR1J2YmlkMElIVnpaU0J5WldGc1hHNGdJQ0FxSUVWeWNtOXljeUJoYm5sdGIzSmxMaUJYWlNCa2IyNG5kQ0JwYm5Od1pXTjBJSFJvWldseUlITjBZV05ySUdGdWVYZGhlU3dnWVc1a0lHTnlaV0YwYVc1bklIUm9aVzFjYmlBZ0lDb2dhWE1nY0hKdmFHbGlhWFJwZG1Wc2VTQmxlSEJsYm5OcGRtVWdhV1lnZEdobGVTQmhjbVVnWTNKbFlYUmxaQ0IwYjI4Z2IyWjBaVzRzSUhOMVkyZ2dZWE1nZDJoaGRGeHVJQ0FnS2lCb1lYQndaVzV6SUdsdUlHOXVaVTltVkhsd1pTZ3BJR1p2Y2lCaGJua2dkSGx3WlNCaVpXWnZjbVVnZEdobElHOXVaU0IwYUdGMElHMWhkR05vWldRdVhHNGdJQ0FxTDF4dUlDQm1kVzVqZEdsdmJpQlFjbTl3Vkhsd1pVVnljbTl5S0cxbGMzTmhaMlVwSUh0Y2JpQWdJQ0IwYUdsekxtMWxjM05oWjJVZ1BTQnRaWE56WVdkbE8xeHVJQ0FnSUhSb2FYTXVjM1JoWTJzZ1BTQW5KenRjYmlBZ2ZWeHVJQ0F2THlCTllXdGxJR0JwYm5OMFlXNWpaVzltSUVWeWNtOXlZQ0J6ZEdsc2JDQjNiM0pySUdadmNpQnlaWFIxY201bFpDQmxjbkp2Y25NdVhHNGdJRkJ5YjNCVWVYQmxSWEp5YjNJdWNISnZkRzkwZVhCbElEMGdSWEp5YjNJdWNISnZkRzkwZVhCbE8xeHVYRzRnSUdaMWJtTjBhVzl1SUdOeVpXRjBaVU5vWVdsdVlXSnNaVlI1Y0dWRGFHVmphMlZ5S0haaGJHbGtZWFJsS1NCN1hHNGdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJSFpoY2lCdFlXNTFZV3hRY205d1ZIbHdaVU5oYkd4RFlXTm9aU0E5SUh0OU8xeHVJQ0FnSUNBZ2RtRnlJRzFoYm5WaGJGQnliM0JVZVhCbFYyRnlibWx1WjBOdmRXNTBJRDBnTUR0Y2JpQWdJQ0I5WEc0Z0lDQWdablZ1WTNScGIyNGdZMmhsWTJ0VWVYQmxLR2x6VW1WeGRXbHlaV1FzSUhCeWIzQnpMQ0J3Y205d1RtRnRaU3dnWTI5dGNHOXVaVzUwVG1GdFpTd2diRzlqWVhScGIyNHNJSEJ5YjNCR2RXeHNUbUZ0WlN3Z2MyVmpjbVYwS1NCN1hHNGdJQ0FnSUNCamIyMXdiMjVsYm5ST1lXMWxJRDBnWTI5dGNHOXVaVzUwVG1GdFpTQjhmQ0JCVGs5T1dVMVBWVk03WEc0Z0lDQWdJQ0J3Y205d1JuVnNiRTVoYldVZ1BTQndjbTl3Um5Wc2JFNWhiV1VnZkh3Z2NISnZjRTVoYldVN1hHNWNiaUFnSUNBZ0lHbG1JQ2h6WldOeVpYUWdJVDA5SUZKbFlXTjBVSEp2Y0ZSNWNHVnpVMlZqY21WMEtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFISnZkMDl1UkdseVpXTjBRV05qWlhOektTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1RtVjNJR0psYUdGMmFXOXlJRzl1YkhrZ1ptOXlJSFZ6WlhKeklHOW1JR0J3Y205d0xYUjVjR1Z6WUNCd1lXTnJZV2RsWEc0Z0lDQWdJQ0FnSUNBZ2FXNTJZWEpwWVc1MEtGeHVJQ0FnSUNBZ0lDQWdJQ0FnWm1Gc2MyVXNYRzRnSUNBZ0lDQWdJQ0FnSUNBblEyRnNiR2x1WnlCUWNtOXdWSGx3WlhNZ2RtRnNhV1JoZEc5eWN5QmthWEpsWTNSc2VTQnBjeUJ1YjNRZ2MzVndjRzl5ZEdWa0lHSjVJSFJvWlNCZ2NISnZjQzEwZVhCbGMyQWdjR0ZqYTJGblpTNGdKeUFyWEc0Z0lDQWdJQ0FnSUNBZ0lDQW5WWE5sSUdCUWNtOXdWSGx3WlhNdVkyaGxZMnRRY205d1ZIbHdaWE1vS1dBZ2RHOGdZMkZzYkNCMGFHVnRMaUFuSUN0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ2RTWldGa0lHMXZjbVVnWVhRZ2FIUjBjRG92TDJaaUxtMWxMM1Z6WlMxamFHVmpheTF3Y205d0xYUjVjR1Z6SjF4dUlDQWdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBbUppQjBlWEJsYjJZZ1kyOXVjMjlzWlNBaFBUMGdKM1Z1WkdWbWFXNWxaQ2NwSUh0Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJQYkdRZ1ltVm9ZWFpwYjNJZ1ptOXlJSEJsYjNCc1pTQjFjMmx1WnlCU1pXRmpkQzVRY205d1ZIbHdaWE5jYmlBZ0lDQWdJQ0FnSUNCMllYSWdZMkZqYUdWTFpYa2dQU0JqYjIxd2IyNWxiblJPWVcxbElDc2dKem9uSUNzZ2NISnZjRTVoYldVN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJVzFoYm5WaGJGQnliM0JVZVhCbFEyRnNiRU5oWTJobFcyTmhZMmhsUzJWNVhTQW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdRWFp2YVdRZ2MzQmhiVzFwYm1jZ2RHaGxJR052Ym5OdmJHVWdZbVZqWVhWelpTQjBhR1Y1SUdGeVpTQnZablJsYmlCdWIzUWdZV04wYVc5dVlXSnNaU0JsZUdObGNIUWdabTl5SUd4cFlpQmhkWFJvYjNKelhHNGdJQ0FnSUNBZ0lDQWdJQ0J0WVc1MVlXeFFjbTl3Vkhsd1pWZGhjbTVwYm1kRGIzVnVkQ0E4SUROY2JpQWdJQ0FnSUNBZ0lDQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIZGhjbTVwYm1jb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdaaGJITmxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQW5XVzkxSUdGeVpTQnRZVzUxWVd4c2VTQmpZV3hzYVc1bklHRWdVbVZoWTNRdVVISnZjRlI1Y0dWeklIWmhiR2xrWVhScGIyNGdKeUFyWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ2RtZFc1amRHbHZiaUJtYjNJZ2RHaGxJR0FsYzJBZ2NISnZjQ0J2YmlCZ0pYTmdMaUJVYUdseklHbHpJR1JsY0hKbFkyRjBaV1FnSnlBclhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNkaGJtUWdkMmxzYkNCMGFISnZkeUJwYmlCMGFHVWdjM1JoYm1SaGJHOXVaU0JnY0hKdmNDMTBlWEJsYzJBZ2NHRmphMkZuWlM0Z0p5QXJYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDZFpiM1VnYldGNUlHSmxJSE5sWldsdVp5QjBhR2x6SUhkaGNtNXBibWNnWkhWbElIUnZJR0VnZEdocGNtUXRjR0Z5ZEhrZ1VISnZjRlI1Y0dWeklDY2dLMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQW5iR2xpY21GeWVTNGdVMlZsSUdoMGRIQnpPaTh2Wm1JdWJXVXZjbVZoWTNRdGQyRnlibWx1Wnkxa2IyNTBMV05oYkd3dGNISnZjSFI1Y0dWeklDY2dLeUFuWm05eUlHUmxkR0ZwYkhNdUp5eGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NISnZjRVoxYkd4T1lXMWxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjF3YjI1bGJuUk9ZVzFsWEc0Z0lDQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JXRnVkV0ZzVUhKdmNGUjVjR1ZEWVd4c1EyRmphR1ZiWTJGamFHVkxaWGxkSUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHMWhiblZoYkZCeWIzQlVlWEJsVjJGeWJtbHVaME52ZFc1MEt5czdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCcFppQW9jSEp2Y0hOYmNISnZjRTVoYldWZElEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdhV1lnS0dselVtVnhkV2x5WldRcElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2NISnZjSE5iY0hKdmNFNWhiV1ZkSUQwOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdibVYzSUZCeWIzQlVlWEJsUlhKeWIzSW9KMVJvWlNBbklDc2diRzlqWVhScGIyNGdLeUFuSUdBbklDc2djSEp2Y0VaMWJHeE9ZVzFsSUNzZ0oyQWdhWE1nYldGeWEyVmtJR0Z6SUhKbGNYVnBjbVZrSUNjZ0t5QW9KMmx1SUdBbklDc2dZMjl0Y0c5dVpXNTBUbUZ0WlNBcklDZGdMQ0JpZFhRZ2FYUnpJSFpoYkhWbElHbHpJR0J1ZFd4c1lDNG5LU2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnVaWGNnVUhKdmNGUjVjR1ZGY25KdmNpZ25WR2hsSUNjZ0t5QnNiMk5oZEdsdmJpQXJJQ2NnWUNjZ0t5QndjbTl3Um5Wc2JFNWhiV1VnS3lBbllDQnBjeUJ0WVhKclpXUWdZWE1nY21WeGRXbHlaV1FnYVc0Z0p5QXJJQ2duWUNjZ0t5QmpiMjF3YjI1bGJuUk9ZVzFsSUNzZ0oyQXNJR0oxZENCcGRITWdkbUZzZFdVZ2FYTWdZSFZ1WkdWbWFXNWxaR0F1SnlrcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFpoYkdsa1lYUmxLSEJ5YjNCekxDQndjbTl3VG1GdFpTd2dZMjl0Y0c5dVpXNTBUbUZ0WlN3Z2JHOWpZWFJwYjI0c0lIQnliM0JHZFd4c1RtRnRaU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUdOb1lXbHVaV1JEYUdWamExUjVjR1VnUFNCamFHVmphMVI1Y0dVdVltbHVaQ2h1ZFd4c0xDQm1ZV3h6WlNrN1hHNGdJQ0FnWTJoaGFXNWxaRU5vWldOclZIbHdaUzVwYzFKbGNYVnBjbVZrSUQwZ1kyaGxZMnRVZVhCbExtSnBibVFvYm5Wc2JDd2dkSEoxWlNrN1hHNWNiaUFnSUNCeVpYUjFjbTRnWTJoaGFXNWxaRU5vWldOclZIbHdaVHRjYmlBZ2ZWeHVYRzRnSUdaMWJtTjBhVzl1SUdOeVpXRjBaVkJ5YVcxcGRHbDJaVlI1Y0dWRGFHVmphMlZ5S0dWNGNHVmpkR1ZrVkhsd1pTa2dlMXh1SUNBZ0lHWjFibU4wYVc5dUlIWmhiR2xrWVhSbEtIQnliM0J6TENCd2NtOXdUbUZ0WlN3Z1kyOXRjRzl1Wlc1MFRtRnRaU3dnYkc5allYUnBiMjRzSUhCeWIzQkdkV3hzVG1GdFpTd2djMlZqY21WMEtTQjdYRzRnSUNBZ0lDQjJZWElnY0hKdmNGWmhiSFZsSUQwZ2NISnZjSE5iY0hKdmNFNWhiV1ZkTzF4dUlDQWdJQ0FnZG1GeUlIQnliM0JVZVhCbElEMGdaMlYwVUhKdmNGUjVjR1VvY0hKdmNGWmhiSFZsS1R0Y2JpQWdJQ0FnSUdsbUlDaHdjbTl3Vkhsd1pTQWhQVDBnWlhod1pXTjBaV1JVZVhCbEtTQjdYRzRnSUNBZ0lDQWdJQzh2SUdCd2NtOXdWbUZzZFdWZ0lHSmxhVzVuSUdsdWMzUmhibU5sSUc5bUxDQnpZWGtzSUdSaGRHVXZjbVZuWlhod0xDQndZWE56SUhSb1pTQW5iMkpxWldOMEoxeHVJQ0FnSUNBZ0lDQXZMeUJqYUdWamF5d2dZblYwSUhkbElHTmhiaUJ2Wm1abGNpQmhJRzF2Y21VZ2NISmxZMmx6WlNCbGNuSnZjaUJ0WlhOellXZGxJR2hsY21VZ2NtRjBhR1Z5SUhSb1lXNWNiaUFnSUNBZ0lDQWdMeThnSjI5bUlIUjVjR1VnWUc5aWFtVmpkR0FuTGx4dUlDQWdJQ0FnSUNCMllYSWdjSEpsWTJselpWUjVjR1VnUFNCblpYUlFjbVZqYVhObFZIbHdaU2h3Y205d1ZtRnNkV1VwTzF4dVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCdVpYY2dVSEp2Y0ZSNWNHVkZjbkp2Y2lnblNXNTJZV3hwWkNBbklDc2diRzlqWVhScGIyNGdLeUFuSUdBbklDc2djSEp2Y0VaMWJHeE9ZVzFsSUNzZ0oyQWdiMllnZEhsd1pTQW5JQ3NnS0NkZ0p5QXJJSEJ5WldOcGMyVlVlWEJsSUNzZ0oyQWdjM1Z3Y0d4cFpXUWdkRzhnWUNjZ0t5QmpiMjF3YjI1bGJuUk9ZVzFsSUNzZ0oyQXNJR1Y0Y0dWamRHVmtJQ2NwSUNzZ0tDZGdKeUFySUdWNGNHVmpkR1ZrVkhsd1pTQXJJQ2RnTGljcEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnWTNKbFlYUmxRMmhoYVc1aFlteGxWSGx3WlVOb1pXTnJaWElvZG1Gc2FXUmhkR1VwTzF4dUlDQjlYRzVjYmlBZ1puVnVZM1JwYjI0Z1kzSmxZWFJsUVc1NVZIbHdaVU5vWldOclpYSW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlHTnlaV0YwWlVOb1lXbHVZV0pzWlZSNWNHVkRhR1ZqYTJWeUtHVnRjSFI1Um5WdVkzUnBiMjR1ZEdoaGRGSmxkSFZ5Ym5OT2RXeHNLVHRjYmlBZ2ZWeHVYRzRnSUdaMWJtTjBhVzl1SUdOeVpXRjBaVUZ5Y21GNVQyWlVlWEJsUTJobFkydGxjaWgwZVhCbFEyaGxZMnRsY2lrZ2UxeHVJQ0FnSUdaMWJtTjBhVzl1SUhaaGJHbGtZWFJsS0hCeWIzQnpMQ0J3Y205d1RtRnRaU3dnWTI5dGNHOXVaVzUwVG1GdFpTd2diRzlqWVhScGIyNHNJSEJ5YjNCR2RXeHNUbUZ0WlNrZ2UxeHVJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQjBlWEJsUTJobFkydGxjaUFoUFQwZ0oyWjFibU4wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdibVYzSUZCeWIzQlVlWEJsUlhKeWIzSW9KMUJ5YjNCbGNuUjVJR0FuSUNzZ2NISnZjRVoxYkd4T1lXMWxJQ3NnSjJBZ2IyWWdZMjl0Y0c5dVpXNTBJR0FuSUNzZ1kyOXRjRzl1Wlc1MFRtRnRaU0FySUNkZ0lHaGhjeUJwYm5aaGJHbGtJRkJ5YjNCVWVYQmxJRzV2ZEdGMGFXOXVJR2x1YzJsa1pTQmhjbkpoZVU5bUxpY3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkbUZ5SUhCeWIzQldZV3gxWlNBOUlIQnliM0J6VzNCeWIzQk9ZVzFsWFR0Y2JpQWdJQ0FnSUdsbUlDZ2hRWEp5WVhrdWFYTkJjbkpoZVNod2NtOXdWbUZzZFdVcEtTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCd2NtOXdWSGx3WlNBOUlHZGxkRkJ5YjNCVWVYQmxLSEJ5YjNCV1lXeDFaU2s3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ1WlhjZ1VISnZjRlI1Y0dWRmNuSnZjaWduU1c1MllXeHBaQ0FuSUNzZ2JHOWpZWFJwYjI0Z0t5QW5JR0FuSUNzZ2NISnZjRVoxYkd4T1lXMWxJQ3NnSjJBZ2IyWWdkSGx3WlNBbklDc2dLQ2RnSnlBcklIQnliM0JVZVhCbElDc2dKMkFnYzNWd2NHeHBaV1FnZEc4Z1lDY2dLeUJqYjIxd2IyNWxiblJPWVcxbElDc2dKMkFzSUdWNGNHVmpkR1ZrSUdGdUlHRnljbUY1TGljcEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2djSEp2Y0ZaaGJIVmxMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJsY25KdmNpQTlJSFI1Y0dWRGFHVmphMlZ5S0hCeWIzQldZV3gxWlN3Z2FTd2dZMjl0Y0c5dVpXNTBUbUZ0WlN3Z2JHOWpZWFJwYjI0c0lIQnliM0JHZFd4c1RtRnRaU0FySUNkYkp5QXJJR2tnS3lBblhTY3NJRkpsWVdOMFVISnZjRlI1Y0dWelUyVmpjbVYwS1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLR1Z5Y205eUlHbHVjM1JoYm1ObGIyWWdSWEp5YjNJcElIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdaWEp5YjNJN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnWTNKbFlYUmxRMmhoYVc1aFlteGxWSGx3WlVOb1pXTnJaWElvZG1Gc2FXUmhkR1VwTzF4dUlDQjlYRzVjYmlBZ1puVnVZM1JwYjI0Z1kzSmxZWFJsUld4bGJXVnVkRlI1Y0dWRGFHVmphMlZ5S0NrZ2UxeHVJQ0FnSUdaMWJtTjBhVzl1SUhaaGJHbGtZWFJsS0hCeWIzQnpMQ0J3Y205d1RtRnRaU3dnWTI5dGNHOXVaVzUwVG1GdFpTd2diRzlqWVhScGIyNHNJSEJ5YjNCR2RXeHNUbUZ0WlNrZ2UxeHVJQ0FnSUNBZ2RtRnlJSEJ5YjNCV1lXeDFaU0E5SUhCeWIzQnpXM0J5YjNCT1lXMWxYVHRjYmlBZ0lDQWdJR2xtSUNnaGFYTldZV3hwWkVWc1pXMWxiblFvY0hKdmNGWmhiSFZsS1NrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnY0hKdmNGUjVjR1VnUFNCblpYUlFjbTl3Vkhsd1pTaHdjbTl3Vm1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdibVYzSUZCeWIzQlVlWEJsUlhKeWIzSW9KMGx1ZG1Gc2FXUWdKeUFySUd4dlkyRjBhVzl1SUNzZ0p5QmdKeUFySUhCeWIzQkdkV3hzVG1GdFpTQXJJQ2RnSUc5bUlIUjVjR1VnSnlBcklDZ25ZQ2NnS3lCd2NtOXdWSGx3WlNBcklDZGdJSE4xY0hCc2FXVmtJSFJ2SUdBbklDc2dZMjl0Y0c5dVpXNTBUbUZ0WlNBcklDZGdMQ0JsZUhCbFkzUmxaQ0JoSUhOcGJtZHNaU0JTWldGamRFVnNaVzFsYm5RdUp5a3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCamNtVmhkR1ZEYUdGcGJtRmliR1ZVZVhCbFEyaGxZMnRsY2loMllXeHBaR0YwWlNrN1hHNGdJSDFjYmx4dUlDQm1kVzVqZEdsdmJpQmpjbVZoZEdWSmJuTjBZVzVqWlZSNWNHVkRhR1ZqYTJWeUtHVjRjR1ZqZEdWa1EyeGhjM01wSUh0Y2JpQWdJQ0JtZFc1amRHbHZiaUIyWVd4cFpHRjBaU2h3Y205d2N5d2djSEp2Y0U1aGJXVXNJR052YlhCdmJtVnVkRTVoYldVc0lHeHZZMkYwYVc5dUxDQndjbTl3Um5Wc2JFNWhiV1VwSUh0Y2JpQWdJQ0FnSUdsbUlDZ2hLSEJ5YjNCelczQnliM0JPWVcxbFhTQnBibk4wWVc1alpXOW1JR1Y0Y0dWamRHVmtRMnhoYzNNcEtTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCbGVIQmxZM1JsWkVOc1lYTnpUbUZ0WlNBOUlHVjRjR1ZqZEdWa1EyeGhjM011Ym1GdFpTQjhmQ0JCVGs5T1dVMVBWVk03WEc0Z0lDQWdJQ0FnSUhaaGNpQmhZM1IxWVd4RGJHRnpjMDVoYldVZ1BTQm5aWFJEYkdGemMwNWhiV1VvY0hKdmNITmJjSEp2Y0U1aGJXVmRLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRzVsZHlCUWNtOXdWSGx3WlVWeWNtOXlLQ2RKYm5aaGJHbGtJQ2NnS3lCc2IyTmhkR2x2YmlBcklDY2dZQ2NnS3lCd2NtOXdSblZzYkU1aGJXVWdLeUFuWUNCdlppQjBlWEJsSUNjZ0t5QW9KMkFuSUNzZ1lXTjBkV0ZzUTJ4aGMzTk9ZVzFsSUNzZ0oyQWdjM1Z3Y0d4cFpXUWdkRzhnWUNjZ0t5QmpiMjF3YjI1bGJuUk9ZVzFsSUNzZ0oyQXNJR1Y0Y0dWamRHVmtJQ2NwSUNzZ0tDZHBibk4wWVc1alpTQnZaaUJnSnlBcklHVjRjR1ZqZEdWa1EyeGhjM05PWVcxbElDc2dKMkF1SnlrcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJqY21WaGRHVkRhR0ZwYm1GaWJHVlVlWEJsUTJobFkydGxjaWgyWVd4cFpHRjBaU2s3WEc0Z0lIMWNibHh1SUNCbWRXNWpkR2x2YmlCamNtVmhkR1ZGYm5WdFZIbHdaVU5vWldOclpYSW9aWGh3WldOMFpXUldZV3gxWlhNcElIdGNiaUFnSUNCcFppQW9JVUZ5Y21GNUxtbHpRWEp5WVhrb1pYaHdaV04wWldSV1lXeDFaWE1wS1NCN1hHNGdJQ0FnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aG1ZV3h6WlN3Z0owbHVkbUZzYVdRZ1lYSm5kVzFsYm5RZ2MzVndjR3hwWldRZ2RHOGdiMjVsVDJZc0lHVjRjR1ZqZEdWa0lHRnVJR2x1YzNSaGJtTmxJRzltSUdGeWNtRjVMaWNwSURvZ2RtOXBaQ0F3TzF4dUlDQWdJQ0FnY21WMGRYSnVJR1Z0Y0hSNVJuVnVZM1JwYjI0dWRHaGhkRkpsZEhWeWJuTk9kV3hzTzF4dUlDQWdJSDFjYmx4dUlDQWdJR1oxYm1OMGFXOXVJSFpoYkdsa1lYUmxLSEJ5YjNCekxDQndjbTl3VG1GdFpTd2dZMjl0Y0c5dVpXNTBUbUZ0WlN3Z2JHOWpZWFJwYjI0c0lIQnliM0JHZFd4c1RtRnRaU2tnZTF4dUlDQWdJQ0FnZG1GeUlIQnliM0JXWVd4MVpTQTlJSEJ5YjNCelczQnliM0JPWVcxbFhUdGNiaUFnSUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2daWGh3WldOMFpXUldZV3gxWlhNdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHbHpLSEJ5YjNCV1lXeDFaU3dnWlhod1pXTjBaV1JXWVd4MVpYTmJhVjBwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2RtRnlJSFpoYkhWbGMxTjBjbWx1WnlBOUlFcFRUMDR1YzNSeWFXNW5hV1o1S0dWNGNHVmpkR1ZrVm1Gc2RXVnpLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVaWGNnVUhKdmNGUjVjR1ZGY25KdmNpZ25TVzUyWVd4cFpDQW5JQ3NnYkc5allYUnBiMjRnS3lBbklHQW5JQ3NnY0hKdmNFWjFiR3hPWVcxbElDc2dKMkFnYjJZZ2RtRnNkV1VnWUNjZ0t5QndjbTl3Vm1Gc2RXVWdLeUFuWUNBbklDc2dLQ2R6ZFhCd2JHbGxaQ0IwYnlCZ0p5QXJJR052YlhCdmJtVnVkRTVoYldVZ0t5QW5ZQ3dnWlhod1pXTjBaV1FnYjI1bElHOW1JQ2NnS3lCMllXeDFaWE5UZEhKcGJtY2dLeUFuTGljcEtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR055WldGMFpVTm9ZV2x1WVdKc1pWUjVjR1ZEYUdWamEyVnlLSFpoYkdsa1lYUmxLVHRjYmlBZ2ZWeHVYRzRnSUdaMWJtTjBhVzl1SUdOeVpXRjBaVTlpYW1WamRFOW1WSGx3WlVOb1pXTnJaWElvZEhsd1pVTm9aV05yWlhJcElIdGNiaUFnSUNCbWRXNWpkR2x2YmlCMllXeHBaR0YwWlNod2NtOXdjeXdnY0hKdmNFNWhiV1VzSUdOdmJYQnZibVZ1ZEU1aGJXVXNJR3h2WTJGMGFXOXVMQ0J3Y205d1JuVnNiRTVoYldVcElIdGNiaUFnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdkSGx3WlVOb1pXTnJaWElnSVQwOUlDZG1kVzVqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRzVsZHlCUWNtOXdWSGx3WlVWeWNtOXlLQ2RRY205d1pYSjBlU0JnSnlBcklIQnliM0JHZFd4c1RtRnRaU0FySUNkZ0lHOW1JR052YlhCdmJtVnVkQ0JnSnlBcklHTnZiWEJ2Ym1WdWRFNWhiV1VnS3lBbllDQm9ZWE1nYVc1MllXeHBaQ0JRY205d1ZIbHdaU0J1YjNSaGRHbHZiaUJwYm5OcFpHVWdiMkpxWldOMFQyWXVKeWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0IyWVhJZ2NISnZjRlpoYkhWbElEMGdjSEp2Y0hOYmNISnZjRTVoYldWZE8xeHVJQ0FnSUNBZ2RtRnlJSEJ5YjNCVWVYQmxJRDBnWjJWMFVISnZjRlI1Y0dVb2NISnZjRlpoYkhWbEtUdGNiaUFnSUNBZ0lHbG1JQ2h3Y205d1ZIbHdaU0FoUFQwZ0oyOWlhbVZqZENjcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHNWxkeUJRY205d1ZIbHdaVVZ5Y205eUtDZEpiblpoYkdsa0lDY2dLeUJzYjJOaGRHbHZiaUFySUNjZ1lDY2dLeUJ3Y205d1JuVnNiRTVoYldVZ0t5QW5ZQ0J2WmlCMGVYQmxJQ2NnS3lBb0oyQW5JQ3NnY0hKdmNGUjVjR1VnS3lBbllDQnpkWEJ3YkdsbFpDQjBieUJnSnlBcklHTnZiWEJ2Ym1WdWRFNWhiV1VnS3lBbllDd2daWGh3WldOMFpXUWdZVzRnYjJKcVpXTjBMaWNwS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdadmNpQW9kbUZ5SUd0bGVTQnBiaUJ3Y205d1ZtRnNkV1VwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSEJ5YjNCV1lXeDFaUzVvWVhOUGQyNVFjbTl3WlhKMGVTaHJaWGtwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkbUZ5SUdWeWNtOXlJRDBnZEhsd1pVTm9aV05yWlhJb2NISnZjRlpoYkhWbExDQnJaWGtzSUdOdmJYQnZibVZ1ZEU1aGJXVXNJR3h2WTJGMGFXOXVMQ0J3Y205d1JuVnNiRTVoYldVZ0t5QW5MaWNnS3lCclpYa3NJRkpsWVdOMFVISnZjRlI1Y0dWelUyVmpjbVYwS1R0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvWlhKeWIzSWdhVzV6ZEdGdVkyVnZaaUJGY25KdmNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdWeWNtOXlPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJqY21WaGRHVkRhR0ZwYm1GaWJHVlVlWEJsUTJobFkydGxjaWgyWVd4cFpHRjBaU2s3WEc0Z0lIMWNibHh1SUNCbWRXNWpkR2x2YmlCamNtVmhkR1ZWYm1sdmJsUjVjR1ZEYUdWamEyVnlLR0Z5Y21GNVQyWlVlWEJsUTJobFkydGxjbk1wSUh0Y2JpQWdJQ0JwWmlBb0lVRnljbUY1TG1selFYSnlZWGtvWVhKeVlYbFBabFI1Y0dWRGFHVmphMlZ5Y3lrcElIdGNiaUFnSUNBZ0lIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY2dQeUIzWVhKdWFXNW5LR1poYkhObExDQW5TVzUyWVd4cFpDQmhjbWQxYldWdWRDQnpkWEJ3YkdsbFpDQjBieUJ2Ym1WUFpsUjVjR1VzSUdWNGNHVmpkR1ZrSUdGdUlHbHVjM1JoYm1ObElHOW1JR0Z5Y21GNUxpY3BJRG9nZG05cFpDQXdPMXh1SUNBZ0lDQWdjbVYwZFhKdUlHVnRjSFI1Um5WdVkzUnBiMjR1ZEdoaGRGSmxkSFZ5Ym5OT2RXeHNPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2dZWEp5WVhsUFpsUjVjR1ZEYUdWamEyVnljeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2RtRnlJR05vWldOclpYSWdQU0JoY25KaGVVOW1WSGx3WlVOb1pXTnJaWEp6VzJsZE8xeHVJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQmphR1ZqYTJWeUlDRTlQU0FuWm5WdVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lIZGhjbTVwYm1jb1hHNGdJQ0FnSUNBZ0lDQWdabUZzYzJVc1hHNGdJQ0FnSUNBZ0lDQWdKMGx1ZG1Gc2FXUWdZWEpuZFcxbGJuUWdjM1Z3Y0d4cFpXUWdkRzhnYjI1bFQyWlVlWEJsTGlCRmVIQmxZM1JsWkNCaGJpQmhjbkpoZVNCdlppQmphR1ZqYXlCbWRXNWpkR2x2Ym5Nc0lHSjFkQ0FuSUN0Y2JpQWdJQ0FnSUNBZ0lDQW5jbVZqWldsMlpXUWdKWE1nWVhRZ2FXNWtaWGdnSlhNdUp5eGNiaUFnSUNBZ0lDQWdJQ0JuWlhSUWIzTjBabWw0Um05eVZIbHdaVmRoY201cGJtY29ZMmhsWTJ0bGNpa3NYRzRnSUNBZ0lDQWdJQ0FnYVZ4dUlDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1pXMXdkSGxHZFc1amRHbHZiaTUwYUdGMFVtVjBkWEp1YzA1MWJHdzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1puVnVZM1JwYjI0Z2RtRnNhV1JoZEdVb2NISnZjSE1zSUhCeWIzQk9ZVzFsTENCamIyMXdiMjVsYm5ST1lXMWxMQ0JzYjJOaGRHbHZiaXdnY0hKdmNFWjFiR3hPWVcxbEtTQjdYRzRnSUNBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJR0Z5Y21GNVQyWlVlWEJsUTJobFkydGxjbk11YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdOb1pXTnJaWElnUFNCaGNuSmhlVTltVkhsd1pVTm9aV05yWlhKelcybGRPMXh1SUNBZ0lDQWdJQ0JwWmlBb1kyaGxZMnRsY2lod2NtOXdjeXdnY0hKdmNFNWhiV1VzSUdOdmJYQnZibVZ1ZEU1aGJXVXNJR3h2WTJGMGFXOXVMQ0J3Y205d1JuVnNiRTVoYldVc0lGSmxZV04wVUhKdmNGUjVjR1Z6VTJWamNtVjBLU0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnY21WMGRYSnVJRzVsZHlCUWNtOXdWSGx3WlVWeWNtOXlLQ2RKYm5aaGJHbGtJQ2NnS3lCc2IyTmhkR2x2YmlBcklDY2dZQ2NnS3lCd2NtOXdSblZzYkU1aGJXVWdLeUFuWUNCemRYQndiR2xsWkNCMGJ5QW5JQ3NnS0NkZ0p5QXJJR052YlhCdmJtVnVkRTVoYldVZ0t5QW5ZQzRuS1NrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQmpjbVZoZEdWRGFHRnBibUZpYkdWVWVYQmxRMmhsWTJ0bGNpaDJZV3hwWkdGMFpTazdYRzRnSUgxY2JseHVJQ0JtZFc1amRHbHZiaUJqY21WaGRHVk9iMlJsUTJobFkydGxjaWdwSUh0Y2JpQWdJQ0JtZFc1amRHbHZiaUIyWVd4cFpHRjBaU2h3Y205d2N5d2djSEp2Y0U1aGJXVXNJR052YlhCdmJtVnVkRTVoYldVc0lHeHZZMkYwYVc5dUxDQndjbTl3Um5Wc2JFNWhiV1VwSUh0Y2JpQWdJQ0FnSUdsbUlDZ2hhWE5PYjJSbEtIQnliM0J6VzNCeWIzQk9ZVzFsWFNrcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHNWxkeUJRY205d1ZIbHdaVVZ5Y205eUtDZEpiblpoYkdsa0lDY2dLeUJzYjJOaGRHbHZiaUFySUNjZ1lDY2dLeUJ3Y205d1JuVnNiRTVoYldVZ0t5QW5ZQ0J6ZFhCd2JHbGxaQ0IwYnlBbklDc2dLQ2RnSnlBcklHTnZiWEJ2Ym1WdWRFNWhiV1VnS3lBbllDd2daWGh3WldOMFpXUWdZU0JTWldGamRFNXZaR1V1SnlrcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJqY21WaGRHVkRhR0ZwYm1GaWJHVlVlWEJsUTJobFkydGxjaWgyWVd4cFpHRjBaU2s3WEc0Z0lIMWNibHh1SUNCbWRXNWpkR2x2YmlCamNtVmhkR1ZUYUdGd1pWUjVjR1ZEYUdWamEyVnlLSE5vWVhCbFZIbHdaWE1wSUh0Y2JpQWdJQ0JtZFc1amRHbHZiaUIyWVd4cFpHRjBaU2h3Y205d2N5d2djSEp2Y0U1aGJXVXNJR052YlhCdmJtVnVkRTVoYldVc0lHeHZZMkYwYVc5dUxDQndjbTl3Um5Wc2JFNWhiV1VwSUh0Y2JpQWdJQ0FnSUhaaGNpQndjbTl3Vm1Gc2RXVWdQU0J3Y205d2MxdHdjbTl3VG1GdFpWMDdYRzRnSUNBZ0lDQjJZWElnY0hKdmNGUjVjR1VnUFNCblpYUlFjbTl3Vkhsd1pTaHdjbTl3Vm1Gc2RXVXBPMXh1SUNBZ0lDQWdhV1lnS0hCeWIzQlVlWEJsSUNFOVBTQW5iMkpxWldOMEp5a2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdibVYzSUZCeWIzQlVlWEJsUlhKeWIzSW9KMGx1ZG1Gc2FXUWdKeUFySUd4dlkyRjBhVzl1SUNzZ0p5QmdKeUFySUhCeWIzQkdkV3hzVG1GdFpTQXJJQ2RnSUc5bUlIUjVjR1VnWUNjZ0t5QndjbTl3Vkhsd1pTQXJJQ2RnSUNjZ0t5QW9KM04xY0hCc2FXVmtJSFJ2SUdBbklDc2dZMjl0Y0c5dVpXNTBUbUZ0WlNBcklDZGdMQ0JsZUhCbFkzUmxaQ0JnYjJKcVpXTjBZQzRuS1NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCbWIzSWdLSFpoY2lCclpYa2dhVzRnYzJoaGNHVlVlWEJsY3lrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnWTJobFkydGxjaUE5SUhOb1lYQmxWSGx3WlhOYmEyVjVYVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRmphR1ZqYTJWeUtTQjdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2RtRnlJR1Z5Y205eUlEMGdZMmhsWTJ0bGNpaHdjbTl3Vm1Gc2RXVXNJR3RsZVN3Z1kyOXRjRzl1Wlc1MFRtRnRaU3dnYkc5allYUnBiMjRzSUhCeWIzQkdkV3hzVG1GdFpTQXJJQ2N1SnlBcklHdGxlU3dnVW1WaFkzUlFjbTl3Vkhsd1pYTlRaV055WlhRcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvWlhKeWIzSXBJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWlhKeWIzSTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z1kzSmxZWFJsUTJoaGFXNWhZbXhsVkhsd1pVTm9aV05yWlhJb2RtRnNhV1JoZEdVcE8xeHVJQ0I5WEc1Y2JpQWdablZ1WTNScGIyNGdZM0psWVhSbFUzUnlhV04wVTJoaGNHVlVlWEJsUTJobFkydGxjaWh6YUdGd1pWUjVjR1Z6S1NCN1hHNGdJQ0FnWm5WdVkzUnBiMjRnZG1Gc2FXUmhkR1VvY0hKdmNITXNJSEJ5YjNCT1lXMWxMQ0JqYjIxd2IyNWxiblJPWVcxbExDQnNiMk5oZEdsdmJpd2djSEp2Y0VaMWJHeE9ZVzFsS1NCN1hHNGdJQ0FnSUNCMllYSWdjSEp2Y0ZaaGJIVmxJRDBnY0hKdmNITmJjSEp2Y0U1aGJXVmRPMXh1SUNBZ0lDQWdkbUZ5SUhCeWIzQlVlWEJsSUQwZ1oyVjBVSEp2Y0ZSNWNHVW9jSEp2Y0ZaaGJIVmxLVHRjYmlBZ0lDQWdJR2xtSUNod2NtOXdWSGx3WlNBaFBUMGdKMjlpYW1WamRDY3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRzVsZHlCUWNtOXdWSGx3WlVWeWNtOXlLQ2RKYm5aaGJHbGtJQ2NnS3lCc2IyTmhkR2x2YmlBcklDY2dZQ2NnS3lCd2NtOXdSblZzYkU1aGJXVWdLeUFuWUNCdlppQjBlWEJsSUdBbklDc2djSEp2Y0ZSNWNHVWdLeUFuWUNBbklDc2dLQ2R6ZFhCd2JHbGxaQ0IwYnlCZ0p5QXJJR052YlhCdmJtVnVkRTVoYldVZ0t5QW5ZQ3dnWlhod1pXTjBaV1FnWUc5aWFtVmpkR0F1SnlrcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0x5OGdWMlVnYm1WbFpDQjBieUJqYUdWamF5QmhiR3dnYTJWNWN5QnBiaUJqWVhObElITnZiV1VnWVhKbElISmxjWFZwY21Wa0lHSjFkQ0J0YVhOemFXNW5JR1p5YjIxY2JpQWdJQ0FnSUM4dklIQnliM0J6TGx4dUlDQWdJQ0FnZG1GeUlHRnNiRXRsZVhNZ1BTQmhjM05wWjI0b2UzMHNJSEJ5YjNCelczQnliM0JPWVcxbFhTd2djMmhoY0dWVWVYQmxjeWs3WEc0Z0lDQWdJQ0JtYjNJZ0tIWmhjaUJyWlhrZ2FXNGdZV3hzUzJWNWN5a2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ1kyaGxZMnRsY2lBOUlITm9ZWEJsVkhsd1pYTmJhMlY1WFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0ZqYUdWamEyVnlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc1bGR5QlFjbTl3Vkhsd1pVVnljbTl5S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdKMGx1ZG1Gc2FXUWdKeUFySUd4dlkyRjBhVzl1SUNzZ0p5QmdKeUFySUhCeWIzQkdkV3hzVG1GdFpTQXJJQ2RnSUd0bGVTQmdKeUFySUd0bGVTQXJJQ2RnSUhOMWNIQnNhV1ZrSUhSdklHQW5JQ3NnWTI5dGNHOXVaVzUwVG1GdFpTQXJJQ2RnTGljZ0sxeHVJQ0FnSUNBZ0lDQWdJQ0FnSjF4Y2JrSmhaQ0J2WW1wbFkzUTZJQ2NnS3lCS1UwOU9Mbk4wY21sdVoybG1lU2h3Y205d2MxdHdjbTl3VG1GdFpWMHNJRzUxYkd3c0lDY2dJQ2NwSUN0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ2RjWEc1V1lXeHBaQ0JyWlhsek9pQW5JQ3NnSUVwVFQwNHVjM1J5YVc1bmFXWjVLRTlpYW1WamRDNXJaWGx6S0hOb1lYQmxWSGx3WlhNcExDQnVkV3hzTENBbklDQW5LVnh1SUNBZ0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdkbUZ5SUdWeWNtOXlJRDBnWTJobFkydGxjaWh3Y205d1ZtRnNkV1VzSUd0bGVTd2dZMjl0Y0c5dVpXNTBUbUZ0WlN3Z2JHOWpZWFJwYjI0c0lIQnliM0JHZFd4c1RtRnRaU0FySUNjdUp5QXJJR3RsZVN3Z1VtVmhZM1JRY205d1ZIbHdaWE5UWldOeVpYUXBPMXh1SUNBZ0lDQWdJQ0JwWmlBb1pYSnliM0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1pYSnliM0k3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJqY21WaGRHVkRhR0ZwYm1GaWJHVlVlWEJsUTJobFkydGxjaWgyWVd4cFpHRjBaU2s3WEc0Z0lIMWNibHh1SUNCbWRXNWpkR2x2YmlCcGMwNXZaR1VvY0hKdmNGWmhiSFZsS1NCN1hHNGdJQ0FnYzNkcGRHTm9JQ2gwZVhCbGIyWWdjSEp2Y0ZaaGJIVmxLU0I3WEc0Z0lDQWdJQ0JqWVhObElDZHVkVzFpWlhJbk9seHVJQ0FnSUNBZ1kyRnpaU0FuYzNSeWFXNW5KenBjYmlBZ0lDQWdJR05oYzJVZ0ozVnVaR1ZtYVc1bFpDYzZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQWdJQ0FnWTJGelpTQW5ZbTl2YkdWaGJpYzZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQWhjSEp2Y0ZaaGJIVmxPMXh1SUNBZ0lDQWdZMkZ6WlNBbmIySnFaV04wSnpwY2JpQWdJQ0FnSUNBZ2FXWWdLRUZ5Y21GNUxtbHpRWEp5WVhrb2NISnZjRlpoYkhWbEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ3Y205d1ZtRnNkV1V1WlhabGNua29hWE5PYjJSbEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JwWmlBb2NISnZjRlpoYkhWbElEMDlQU0J1ZFd4c0lIeDhJR2x6Vm1Gc2FXUkZiR1Z0Wlc1MEtIQnliM0JXWVd4MVpTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUhaaGNpQnBkR1Z5WVhSdmNrWnVJRDBnWjJWMFNYUmxjbUYwYjNKR2JpaHdjbTl3Vm1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0JwWmlBb2FYUmxjbUYwYjNKR2Jpa2dlMXh1SUNBZ0lDQWdJQ0FnSUhaaGNpQnBkR1Z5WVhSdmNpQTlJR2wwWlhKaGRHOXlSbTR1WTJGc2JDaHdjbTl3Vm1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0FnSUhaaGNpQnpkR1Z3TzF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2hwZEdWeVlYUnZja1p1SUNFOVBTQndjbTl3Vm1Gc2RXVXVaVzUwY21sbGN5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2QyaHBiR1VnS0NFb2MzUmxjQ0E5SUdsMFpYSmhkRzl5TG01bGVIUW9LU2t1Wkc5dVpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdselRtOWtaU2h6ZEdWd0xuWmhiSFZsS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QkpkR1Z5WVhSdmNpQjNhV3hzSUhCeWIzWnBaR1VnWlc1MGNua2dXMnNzZGwwZ2RIVndiR1Z6SUhKaGRHaGxjaUIwYUdGdUlIWmhiSFZsY3k1Y2JpQWdJQ0FnSUNBZ0lDQWdJSGRvYVd4bElDZ2hLSE4wWlhBZ1BTQnBkR1Z5WVhSdmNpNXVaWGgwS0NrcExtUnZibVVwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlHVnVkSEo1SUQwZ2MzUmxjQzUyWVd4MVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR1Z1ZEhKNUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0NGcGMwNXZaR1VvWlc1MGNubGJNVjBwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNBZ0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUdaMWJtTjBhVzl1SUdselUzbHRZbTlzS0hCeWIzQlVlWEJsTENCd2NtOXdWbUZzZFdVcElIdGNiaUFnSUNBdkx5Qk9ZWFJwZG1VZ1UzbHRZbTlzTGx4dUlDQWdJR2xtSUNod2NtOXdWSGx3WlNBOVBUMGdKM041YldKdmJDY3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SURFNUxqUXVNeTQxSUZONWJXSnZiQzV3Y205MGIzUjVjR1ZiUUVCMGIxTjBjbWx1WjFSaFoxMGdQVDA5SUNkVGVXMWliMnduWEc0Z0lDQWdhV1lnS0hCeWIzQldZV3gxWlZzblFFQjBiMU4wY21sdVoxUmhaeWRkSUQwOVBTQW5VM2x0WW05c0p5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnUm1Gc2JHSmhZMnNnWm05eUlHNXZiaTF6Y0dWaklHTnZiWEJzYVdGdWRDQlRlVzFpYjJ4eklIZG9hV05vSUdGeVpTQndiMng1Wm1sc2JHVmtMbHh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdVM2x0WW05c0lEMDlQU0FuWm5WdVkzUnBiMjRuSUNZbUlIQnliM0JXWVd4MVpTQnBibk4wWVc1alpXOW1JRk41YldKdmJDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQjlYRzVjYmlBZ0x5OGdSWEYxYVhaaGJHVnVkQ0J2WmlCZ2RIbHdaVzltWUNCaWRYUWdkMmwwYUNCemNHVmphV0ZzSUdoaGJtUnNhVzVuSUdadmNpQmhjbkpoZVNCaGJtUWdjbVZuWlhod0xseHVJQ0JtZFc1amRHbHZiaUJuWlhSUWNtOXdWSGx3WlNod2NtOXdWbUZzZFdVcElIdGNiaUFnSUNCMllYSWdjSEp2Y0ZSNWNHVWdQU0IwZVhCbGIyWWdjSEp2Y0ZaaGJIVmxPMXh1SUNBZ0lHbG1JQ2hCY25KaGVTNXBjMEZ5Y21GNUtIQnliM0JXWVd4MVpTa3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQW5ZWEp5WVhrbk8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2NISnZjRlpoYkhWbElHbHVjM1JoYm1ObGIyWWdVbVZuUlhod0tTQjdYRzRnSUNBZ0lDQXZMeUJQYkdRZ2QyVmlhMmwwY3lBb1lYUWdiR1ZoYzNRZ2RXNTBhV3dnUVc1a2NtOXBaQ0EwTGpBcElISmxkSFZ5YmlBblpuVnVZM1JwYjI0bklISmhkR2hsY2lCMGFHRnVYRzRnSUNBZ0lDQXZMeUFuYjJKcVpXTjBKeUJtYjNJZ2RIbHdaVzltSUdFZ1VtVm5SWGh3TGlCWFpTZHNiQ0J1YjNKdFlXeHBlbVVnZEdocGN5Qm9aWEpsSUhOdklIUm9ZWFFnTDJKc1lTOWNiaUFnSUNBZ0lDOHZJSEJoYzNObGN5QlFjbTl3Vkhsd1pYTXViMkpxWldOMExseHVJQ0FnSUNBZ2NtVjBkWEp1SUNkdlltcGxZM1FuTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvYVhOVGVXMWliMndvY0hKdmNGUjVjR1VzSUhCeWIzQldZV3gxWlNrcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlBbmMzbHRZbTlzSnp0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIQnliM0JVZVhCbE8xeHVJQ0I5WEc1Y2JpQWdMeThnVkdocGN5Qm9ZVzVrYkdWeklHMXZjbVVnZEhsd1pYTWdkR2hoYmlCZ1oyVjBVSEp2Y0ZSNWNHVmdMaUJQYm14NUlIVnpaV1FnWm05eUlHVnljbTl5SUcxbGMzTmhaMlZ6TGx4dUlDQXZMeUJUWldVZ1lHTnlaV0YwWlZCeWFXMXBkR2wyWlZSNWNHVkRhR1ZqYTJWeVlDNWNiaUFnWm5WdVkzUnBiMjRnWjJWMFVISmxZMmx6WlZSNWNHVW9jSEp2Y0ZaaGJIVmxLU0I3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJ3Y205d1ZtRnNkV1VnUFQwOUlDZDFibVJsWm1sdVpXUW5JSHg4SUhCeWIzQldZV3gxWlNBOVBUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUNjbklDc2djSEp2Y0ZaaGJIVmxPMXh1SUNBZ0lIMWNiaUFnSUNCMllYSWdjSEp2Y0ZSNWNHVWdQU0JuWlhSUWNtOXdWSGx3WlNod2NtOXdWbUZzZFdVcE8xeHVJQ0FnSUdsbUlDaHdjbTl3Vkhsd1pTQTlQVDBnSjI5aWFtVmpkQ2NwSUh0Y2JpQWdJQ0FnSUdsbUlDaHdjbTl3Vm1Gc2RXVWdhVzV6ZEdGdVkyVnZaaUJFWVhSbEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQW5aR0YwWlNjN1hHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tIQnliM0JXWVd4MVpTQnBibk4wWVc1alpXOW1JRkpsWjBWNGNDa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdKM0psWjJWNGNDYzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ3Y205d1ZIbHdaVHRjYmlBZ2ZWeHVYRzRnSUM4dklGSmxkSFZ5Ym5NZ1lTQnpkSEpwYm1jZ2RHaGhkQ0JwY3lCd2IzTjBabWw0WldRZ2RHOGdZU0IzWVhKdWFXNW5JR0ZpYjNWMElHRnVJR2x1ZG1Gc2FXUWdkSGx3WlM1Y2JpQWdMeThnUm05eUlHVjRZVzF3YkdVc0lGd2lkVzVrWldacGJtVmtYQ0lnYjNJZ1hDSnZaaUIwZVhCbElHRnljbUY1WENKY2JpQWdablZ1WTNScGIyNGdaMlYwVUc5emRHWnBlRVp2Y2xSNWNHVlhZWEp1YVc1bktIWmhiSFZsS1NCN1hHNGdJQ0FnZG1GeUlIUjVjR1VnUFNCblpYUlFjbVZqYVhObFZIbHdaU2gyWVd4MVpTazdYRzRnSUNBZ2MzZHBkR05vSUNoMGVYQmxLU0I3WEc0Z0lDQWdJQ0JqWVhObElDZGhjbkpoZVNjNlhHNGdJQ0FnSUNCallYTmxJQ2R2WW1wbFkzUW5PbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdKMkZ1SUNjZ0t5QjBlWEJsTzF4dUlDQWdJQ0FnWTJGelpTQW5ZbTl2YkdWaGJpYzZYRzRnSUNBZ0lDQmpZWE5sSUNka1lYUmxKenBjYmlBZ0lDQWdJR05oYzJVZ0ozSmxaMlY0Y0NjNlhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlBbllTQW5JQ3NnZEhsd1pUdGNiaUFnSUNBZ0lHUmxabUYxYkhRNlhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGVYQmxPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzh2SUZKbGRIVnlibk1nWTJ4aGMzTWdibUZ0WlNCdlppQjBhR1VnYjJKcVpXTjBMQ0JwWmlCaGJua3VYRzRnSUdaMWJtTjBhVzl1SUdkbGRFTnNZWE56VG1GdFpTaHdjbTl3Vm1Gc2RXVXBJSHRjYmlBZ0lDQnBaaUFvSVhCeWIzQldZV3gxWlM1amIyNXpkSEoxWTNSdmNpQjhmQ0FoY0hKdmNGWmhiSFZsTG1OdmJuTjBjblZqZEc5eUxtNWhiV1VwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJCVGs5T1dVMVBWVk03WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCd2NtOXdWbUZzZFdVdVkyOXVjM1J5ZFdOMGIzSXVibUZ0WlR0Y2JpQWdmVnh1WEc0Z0lGSmxZV04wVUhKdmNGUjVjR1Z6TG1Ob1pXTnJVSEp2Y0ZSNWNHVnpJRDBnWTJobFkydFFjbTl3Vkhsd1pYTTdYRzRnSUZKbFlXTjBVSEp2Y0ZSNWNHVnpMbEJ5YjNCVWVYQmxjeUE5SUZKbFlXTjBVSEp2Y0ZSNWNHVnpPMXh1WEc0Z0lISmxkSFZ5YmlCU1pXRmpkRkJ5YjNCVWVYQmxjenRjYm4wN1hHNWNibHh1WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZJRmRGUWxCQlEwc2dSazlQVkVWU1hHNHZMeUF1TDM0dmNISnZjQzEwZVhCbGN5OW1ZV04wYjNKNVYybDBhRlI1Y0dWRGFHVmphMlZ5Y3k1cWMxeHVMeThnYlc5a2RXeGxJR2xrSUQwZ01UTmNiaTh2SUcxdlpIVnNaU0JqYUhWdWEzTWdQU0F3SWwwc0ltMWhjSEJwYm1keklqb2lRVUZCUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCSWl3aWMyOTFjbU5sVW05dmRDSTZJaUo5XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzEzXFxuXCIpO1xuXG4vKioqLyB9KSxcbi8qIDE0ICovXG4vKiBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyogYWxsIGV4cG9ydHMgdXNlZCAqL1xuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9+L3JlYWN0L2xpYi9SZWFjdEJhc2VDbGFzc2VzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5ldmFsKFwiLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKHByb2Nlc3MpIHsvKipcXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cXG4gKlxcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4gKlxcbiAqL1xcblxcblxcblxcbnZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vcmVhY3RQcm9kSW52YXJpYW50ICovIDQpLFxcbiAgICBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgb2JqZWN0LWFzc2lnbiAqLyA1KTtcXG5cXG52YXIgUmVhY3ROb29wVXBkYXRlUXVldWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlICovIDE3KTtcXG5cXG52YXIgY2FuRGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2NhbkRlZmluZVByb3BlcnR5ICovIDgpO1xcbnZhciBlbXB0eU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGZianMvbGliL2VtcHR5T2JqZWN0ICovIDEyKTtcXG52YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgZmJqcy9saWIvaW52YXJpYW50ICovIDEpO1xcbnZhciBsb3dQcmlvcml0eVdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2xvd1ByaW9yaXR5V2FybmluZyAqLyAxMSk7XFxuXFxuLyoqXFxuICogQmFzZSBjbGFzcyBoZWxwZXJzIGZvciB0aGUgdXBkYXRpbmcgc3RhdGUgb2YgYSBjb21wb25lbnQuXFxuICovXFxuZnVuY3Rpb24gUmVhY3RDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcXG4gIHRoaXMucHJvcHMgPSBwcm9wcztcXG4gIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XFxuICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDtcXG4gIC8vIFdlIGluaXRpYWxpemUgdGhlIGRlZmF1bHQgdXBkYXRlciBidXQgdGhlIHJlYWwgb25lIGdldHMgaW5qZWN0ZWQgYnkgdGhlXFxuICAvLyByZW5kZXJlci5cXG4gIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XFxufVxcblxcblJlYWN0Q29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0ge307XFxuXFxuLyoqXFxuICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyB0byBtdXRhdGVcXG4gKiBzdGF0ZS4gWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxcbiAqXFxuICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cXG4gKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxcbiAqXFxuICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgY2FsbHMgdG8gYHNldFN0YXRlYCB3aWxsIHJ1biBzeW5jaHJvbm91c2x5LFxcbiAqIGFzIHRoZXkgbWF5IGV2ZW50dWFsbHkgYmUgYmF0Y2hlZCB0b2dldGhlci4gIFlvdSBjYW4gcHJvdmlkZSBhbiBvcHRpb25hbFxcbiAqIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB3aGVuIHRoZSBjYWxsIHRvIHNldFN0YXRlIGlzIGFjdHVhbGx5XFxuICogY29tcGxldGVkLlxcbiAqXFxuICogV2hlbiBhIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRvIHNldFN0YXRlLCBpdCB3aWxsIGJlIGNhbGxlZCBhdCBzb21lIHBvaW50IGluXFxuICogdGhlIGZ1dHVyZSAobm90IHN5bmNocm9ub3VzbHkpLiBJdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSB1cCB0byBkYXRlXFxuICogY29tcG9uZW50IGFyZ3VtZW50cyAoc3RhdGUsIHByb3BzLCBjb250ZXh0KS4gVGhlc2UgdmFsdWVzIGNhbiBiZSBkaWZmZXJlbnRcXG4gKiBmcm9tIHRoaXMuKiBiZWNhdXNlIHlvdXIgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBhZnRlciByZWNlaXZlUHJvcHMgYnV0IGJlZm9yZVxcbiAqIHNob3VsZENvbXBvbmVudFVwZGF0ZSwgYW5kIHRoaXMgbmV3IHN0YXRlLCBwcm9wcywgYW5kIGNvbnRleHQgd2lsbCBub3QgeWV0IGJlXFxuICogYXNzaWduZWQgdG8gdGhpcy5cXG4gKlxcbiAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIG9yIGZ1bmN0aW9uIHRvXFxuICogICAgICAgIHByb2R1Y2UgbmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIGN1cnJlbnQgc3RhdGUuXFxuICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLlxcbiAqIEBmaW5hbFxcbiAqIEBwcm90ZWN0ZWRcXG4gKi9cXG5SZWFjdENvbXBvbmVudC5wcm90b3R5cGUuc2V0U3RhdGUgPSBmdW5jdGlvbiAocGFydGlhbFN0YXRlLCBjYWxsYmFjaykge1xcbiAgISh0eXBlb2YgcGFydGlhbFN0YXRlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgcGFydGlhbFN0YXRlID09PSAnZnVuY3Rpb24nIHx8IHBhcnRpYWxTdGF0ZSA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdzZXRTdGF0ZSguLi4pOiB0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzIHRvIHVwZGF0ZSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcy4nKSA6IF9wcm9kSW52YXJpYW50KCc4NScpIDogdm9pZCAwO1xcbiAgdGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLCBwYXJ0aWFsU3RhdGUpO1xcbiAgaWYgKGNhbGxiYWNrKSB7XFxuICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJhY2ssICdzZXRTdGF0ZScpO1xcbiAgfVxcbn07XFxuXFxuLyoqXFxuICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxcbiAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxcbiAqXFxuICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxcbiAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxcbiAqXFxuICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxcbiAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXFxuICpcXG4gKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHVwZGF0ZSBpcyBjb21wbGV0ZS5cXG4gKiBAZmluYWxcXG4gKiBAcHJvdGVjdGVkXFxuICovXFxuUmVhY3RDb21wb25lbnQucHJvdG90eXBlLmZvcmNlVXBkYXRlID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XFxuICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMpO1xcbiAgaWYgKGNhbGxiYWNrKSB7XFxuICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJhY2ssICdmb3JjZVVwZGF0ZScpO1xcbiAgfVxcbn07XFxuXFxuLyoqXFxuICogRGVwcmVjYXRlZCBBUElzLiBUaGVzZSBBUElzIHVzZWQgdG8gZXhpc3Qgb24gY2xhc3NpYyBSZWFjdCBjbGFzc2VzIGJ1dCBzaW5jZVxcbiAqIHdlIHdvdWxkIGxpa2UgdG8gZGVwcmVjYXRlIHRoZW0sIHdlJ3JlIG5vdCBnb2luZyB0byBtb3ZlIHRoZW0gb3ZlciB0byB0aGlzXFxuICogbW9kZXJuIGJhc2UgY2xhc3MuIEluc3RlYWQsIHdlIGRlZmluZSBhIGdldHRlciB0aGF0IHdhcm5zIGlmIGl0J3MgYWNjZXNzZWQuXFxuICovXFxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gIHZhciBkZXByZWNhdGVkQVBJcyA9IHtcXG4gICAgaXNNb3VudGVkOiBbJ2lzTW91bnRlZCcsICdJbnN0ZWFkLCBtYWtlIHN1cmUgdG8gY2xlYW4gdXAgc3Vic2NyaXB0aW9ucyBhbmQgcGVuZGluZyByZXF1ZXN0cyBpbiAnICsgJ2NvbXBvbmVudFdpbGxVbm1vdW50IHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLiddLFxcbiAgICByZXBsYWNlU3RhdGU6IFsncmVwbGFjZVN0YXRlJywgJ1JlZmFjdG9yIHlvdXIgY29kZSB0byB1c2Ugc2V0U3RhdGUgaW5zdGVhZCAoc2VlICcgKyAnaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8zMjM2KS4nXVxcbiAgfTtcXG4gIHZhciBkZWZpbmVEZXByZWNhdGlvbldhcm5pbmcgPSBmdW5jdGlvbiAobWV0aG9kTmFtZSwgaW5mbykge1xcbiAgICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3RDb21wb25lbnQucHJvdG90eXBlLCBtZXRob2ROYW1lLCB7XFxuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcXG4gICAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5nKGZhbHNlLCAnJXMoLi4uKSBpcyBkZXByZWNhdGVkIGluIHBsYWluIEphdmFTY3JpcHQgUmVhY3QgY2xhc3Nlcy4gJXMnLCBpbmZvWzBdLCBpbmZvWzFdKTtcXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcXG4gICAgICAgIH1cXG4gICAgICB9KTtcXG4gICAgfVxcbiAgfTtcXG4gIGZvciAodmFyIGZuTmFtZSBpbiBkZXByZWNhdGVkQVBJcykge1xcbiAgICBpZiAoZGVwcmVjYXRlZEFQSXMuaGFzT3duUHJvcGVydHkoZm5OYW1lKSkge1xcbiAgICAgIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyhmbk5hbWUsIGRlcHJlY2F0ZWRBUElzW2ZuTmFtZV0pO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8qKlxcbiAqIEJhc2UgY2xhc3MgaGVscGVycyBmb3IgdGhlIHVwZGF0aW5nIHN0YXRlIG9mIGEgY29tcG9uZW50LlxcbiAqL1xcbmZ1bmN0aW9uIFJlYWN0UHVyZUNvbXBvbmVudChwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xcbiAgLy8gRHVwbGljYXRlZCBmcm9tIFJlYWN0Q29tcG9uZW50LlxcbiAgdGhpcy5wcm9wcyA9IHByb3BzO1xcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcXG4gIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xcbiAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB1cGRhdGVyIGJ1dCB0aGUgcmVhbCBvbmUgZ2V0cyBpbmplY3RlZCBieSB0aGVcXG4gIC8vIHJlbmRlcmVyLlxcbiAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcXG59XFxuXFxuZnVuY3Rpb24gQ29tcG9uZW50RHVtbXkoKSB7fVxcbkNvbXBvbmVudER1bW15LnByb3RvdHlwZSA9IFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZTtcXG5SZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlID0gbmV3IENvbXBvbmVudER1bW15KCk7XFxuUmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJlYWN0UHVyZUNvbXBvbmVudDtcXG4vLyBBdm9pZCBhbiBleHRyYSBwcm90b3R5cGUganVtcCBmb3IgdGhlc2UgbWV0aG9kcy5cXG5fYXNzaWduKFJlYWN0UHVyZUNvbXBvbmVudC5wcm90b3R5cGUsIFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSk7XFxuUmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCA9IHRydWU7XFxuXFxubW9kdWxlLmV4cG9ydHMgPSB7XFxuICBDb21wb25lbnQ6IFJlYWN0Q29tcG9uZW50LFxcbiAgUHVyZUNvbXBvbmVudDogUmVhY3RQdXJlQ29tcG9uZW50XFxufTtcXG4vKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi8uLi8uLi9wcm9jZXNzL2Jyb3dzZXIuanMgKi8gMCkpKS8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaU1UUXVhbk1pTENKemIzVnlZMlZ6SWpwYkluZGxZbkJoWTJzNkx5OHZMaTkrTDNKbFlXTjBMMnhwWWk5U1pXRmpkRUpoYzJWRGJHRnpjMlZ6TG1welAyWTJNV1VpWFN3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ0tHTXBJREl3TVRNdGNISmxjMlZ1ZEN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCTlNWUWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNWNiaUFxWEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1gzQnliMlJKYm5aaGNtbGhiblFnUFNCeVpYRjFhWEpsS0NjdUwzSmxZV04wVUhKdlpFbHVkbUZ5YVdGdWRDY3BMRnh1SUNBZ0lGOWhjM05wWjI0Z1BTQnlaWEYxYVhKbEtDZHZZbXBsWTNRdFlYTnphV2R1SnlrN1hHNWNiblpoY2lCU1pXRmpkRTV2YjNCVmNHUmhkR1ZSZFdWMVpTQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUk9iMjl3VlhCa1lYUmxVWFZsZFdVbktUdGNibHh1ZG1GeUlHTmhia1JsWm1sdVpWQnliM0JsY25SNUlEMGdjbVZ4ZFdseVpTZ25MaTlqWVc1RVpXWnBibVZRY205d1pYSjBlU2NwTzF4dWRtRnlJR1Z0Y0hSNVQySnFaV04wSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdlpXMXdkSGxQWW1wbFkzUW5LVHRjYm5aaGNpQnBiblpoY21saGJuUWdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlwYm5aaGNtbGhiblFuS1R0Y2JuWmhjaUJzYjNkUWNtbHZjbWwwZVZkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NjdUwyeHZkMUJ5YVc5eWFYUjVWMkZ5Ym1sdVp5Y3BPMXh1WEc0dktpcGNiaUFxSUVKaGMyVWdZMnhoYzNNZ2FHVnNjR1Z5Y3lCbWIzSWdkR2hsSUhWd1pHRjBhVzVuSUhOMFlYUmxJRzltSUdFZ1kyOXRjRzl1Wlc1MExseHVJQ292WEc1bWRXNWpkR2x2YmlCU1pXRmpkRU52YlhCdmJtVnVkQ2h3Y205d2N5d2dZMjl1ZEdWNGRDd2dkWEJrWVhSbGNpa2dlMXh1SUNCMGFHbHpMbkJ5YjNCeklEMGdjSEp2Y0hNN1hHNGdJSFJvYVhNdVkyOXVkR1Y0ZENBOUlHTnZiblJsZUhRN1hHNGdJSFJvYVhNdWNtVm1jeUE5SUdWdGNIUjVUMkpxWldOME8xeHVJQ0F2THlCWFpTQnBibWwwYVdGc2FYcGxJSFJvWlNCa1pXWmhkV3gwSUhWd1pHRjBaWElnWW5WMElIUm9aU0J5WldGc0lHOXVaU0JuWlhSeklHbHVhbVZqZEdWa0lHSjVJSFJvWlZ4dUlDQXZMeUJ5Wlc1a1pYSmxjaTVjYmlBZ2RHaHBjeTUxY0dSaGRHVnlJRDBnZFhCa1lYUmxjaUI4ZkNCU1pXRmpkRTV2YjNCVmNHUmhkR1ZSZFdWMVpUdGNibjFjYmx4dVVtVmhZM1JEYjIxd2IyNWxiblF1Y0hKdmRHOTBlWEJsTG1selVtVmhZM1JEYjIxd2IyNWxiblFnUFNCN2ZUdGNibHh1THlvcVhHNGdLaUJUWlhSeklHRWdjM1ZpYzJWMElHOW1JSFJvWlNCemRHRjBaUzRnUVd4M1lYbHpJSFZ6WlNCMGFHbHpJSFJ2SUcxMWRHRjBaVnh1SUNvZ2MzUmhkR1V1SUZsdmRTQnphRzkxYkdRZ2RISmxZWFFnWUhSb2FYTXVjM1JoZEdWZ0lHRnpJR2x0YlhWMFlXSnNaUzVjYmlBcVhHNGdLaUJVYUdWeVpTQnBjeUJ1YnlCbmRXRnlZVzUwWldVZ2RHaGhkQ0JnZEdocGN5NXpkR0YwWldBZ2QybHNiQ0JpWlNCcGJXMWxaR2xoZEdWc2VTQjFjR1JoZEdWa0xDQnpiMXh1SUNvZ1lXTmpaWE56YVc1bklHQjBhR2x6TG5OMFlYUmxZQ0JoWm5SbGNpQmpZV3hzYVc1bklIUm9hWE1nYldWMGFHOWtJRzFoZVNCeVpYUjFjbTRnZEdobElHOXNaQ0IyWVd4MVpTNWNiaUFxWEc0Z0tpQlVhR1Z5WlNCcGN5QnVieUJuZFdGeVlXNTBaV1VnZEdoaGRDQmpZV3hzY3lCMGJ5QmdjMlYwVTNSaGRHVmdJSGRwYkd3Z2NuVnVJSE41Ym1Ob2NtOXViM1Z6Ykhrc1hHNGdLaUJoY3lCMGFHVjVJRzFoZVNCbGRtVnVkSFZoYkd4NUlHSmxJR0poZEdOb1pXUWdkRzluWlhSb1pYSXVJQ0JaYjNVZ1kyRnVJSEJ5YjNacFpHVWdZVzRnYjNCMGFXOXVZV3hjYmlBcUlHTmhiR3hpWVdOcklIUm9ZWFFnZDJsc2JDQmlaU0JsZUdWamRYUmxaQ0IzYUdWdUlIUm9aU0JqWVd4c0lIUnZJSE5sZEZOMFlYUmxJR2x6SUdGamRIVmhiR3g1WEc0Z0tpQmpiMjF3YkdWMFpXUXVYRzRnS2x4dUlDb2dWMmhsYmlCaElHWjFibU4wYVc5dUlHbHpJSEJ5YjNacFpHVmtJSFJ2SUhObGRGTjBZWFJsTENCcGRDQjNhV3hzSUdKbElHTmhiR3hsWkNCaGRDQnpiMjFsSUhCdmFXNTBJR2x1WEc0Z0tpQjBhR1VnWm5WMGRYSmxJQ2h1YjNRZ2MzbHVZMmh5YjI1dmRYTnNlU2t1SUVsMElIZHBiR3dnWW1VZ1kyRnNiR1ZrSUhkcGRHZ2dkR2hsSUhWd0lIUnZJR1JoZEdWY2JpQXFJR052YlhCdmJtVnVkQ0JoY21kMWJXVnVkSE1nS0hOMFlYUmxMQ0J3Y205d2N5d2dZMjl1ZEdWNGRDa3VJRlJvWlhObElIWmhiSFZsY3lCallXNGdZbVVnWkdsbVptVnlaVzUwWEc0Z0tpQm1jbTl0SUhSb2FYTXVLaUJpWldOaGRYTmxJSGx2ZFhJZ1puVnVZM1JwYjI0Z2JXRjVJR0psSUdOaGJHeGxaQ0JoWm5SbGNpQnlaV05sYVhabFVISnZjSE1nWW5WMElHSmxabTl5WlZ4dUlDb2djMmh2ZFd4a1EyOXRjRzl1Wlc1MFZYQmtZWFJsTENCaGJtUWdkR2hwY3lCdVpYY2djM1JoZEdVc0lIQnliM0J6TENCaGJtUWdZMjl1ZEdWNGRDQjNhV3hzSUc1dmRDQjVaWFFnWW1WY2JpQXFJR0Z6YzJsbmJtVmtJSFJ2SUhSb2FYTXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdHZZbXBsWTNSOFpuVnVZM1JwYjI1OUlIQmhjblJwWVd4VGRHRjBaU0JPWlhoMElIQmhjblJwWVd3Z2MzUmhkR1VnYjNJZ1puVnVZM1JwYjI0Z2RHOWNiaUFxSUNBZ0lDQWdJQ0J3Y205a2RXTmxJRzVsZUhRZ2NHRnlkR2xoYkNCemRHRjBaU0IwYnlCaVpTQnRaWEpuWldRZ2QybDBhQ0JqZFhKeVpXNTBJSE4wWVhSbExseHVJQ29nUUhCaGNtRnRJSHMvWm5WdVkzUnBiMjU5SUdOaGJHeGlZV05ySUVOaGJHeGxaQ0JoWm5SbGNpQnpkR0YwWlNCcGN5QjFjR1JoZEdWa0xseHVJQ29nUUdacGJtRnNYRzRnS2lCQWNISnZkR1ZqZEdWa1hHNGdLaTljYmxKbFlXTjBRMjl0Y0c5dVpXNTBMbkJ5YjNSdmRIbHdaUzV6WlhSVGRHRjBaU0E5SUdaMWJtTjBhVzl1SUNod1lYSjBhV0ZzVTNSaGRHVXNJR05oYkd4aVlXTnJLU0I3WEc0Z0lDRW9kSGx3Wlc5bUlIQmhjblJwWVd4VGRHRjBaU0E5UFQwZ0oyOWlhbVZqZENjZ2ZId2dkSGx3Wlc5bUlIQmhjblJwWVd4VGRHRjBaU0E5UFQwZ0oyWjFibU4wYVc5dUp5QjhmQ0J3WVhKMGFXRnNVM1JoZEdVZ1BUMGdiblZzYkNrZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuYzJWMFUzUmhkR1VvTGk0dUtUb2dkR0ZyWlhNZ1lXNGdiMkpxWldOMElHOW1JSE4wWVhSbElIWmhjbWxoWW14bGN5QjBieUIxY0dSaGRHVWdiM0lnWVNCbWRXNWpkR2x2YmlCM2FHbGphQ0J5WlhSMWNtNXpJR0Z1SUc5aWFtVmpkQ0J2WmlCemRHRjBaU0IyWVhKcFlXSnNaWE11SnlrZ09pQmZjSEp2WkVsdWRtRnlhV0Z1ZENnbk9EVW5LU0E2SUhadmFXUWdNRHRjYmlBZ2RHaHBjeTUxY0dSaGRHVnlMbVZ1Y1hWbGRXVlRaWFJUZEdGMFpTaDBhR2x6TENCd1lYSjBhV0ZzVTNSaGRHVXBPMXh1SUNCcFppQW9ZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQjBhR2x6TG5Wd1pHRjBaWEl1Wlc1eGRXVjFaVU5oYkd4aVlXTnJLSFJvYVhNc0lHTmhiR3hpWVdOckxDQW5jMlYwVTNSaGRHVW5LVHRjYmlBZ2ZWeHVmVHRjYmx4dUx5b3FYRzRnS2lCR2IzSmpaWE1nWVc0Z2RYQmtZWFJsTGlCVWFHbHpJSE5vYjNWc1pDQnZibXg1SUdKbElHbHVkbTlyWldRZ2QyaGxiaUJwZENCcGN5QnJibTkzYmlCM2FYUm9YRzRnS2lCalpYSjBZV2x1ZEhrZ2RHaGhkQ0IzWlNCaGNtVWdLaXB1YjNRcUtpQnBiaUJoSUVSUFRTQjBjbUZ1YzJGamRHbHZiaTVjYmlBcVhHNGdLaUJaYjNVZ2JXRjVJSGRoYm5RZ2RHOGdZMkZzYkNCMGFHbHpJSGRvWlc0Z2VXOTFJR3R1YjNjZ2RHaGhkQ0J6YjIxbElHUmxaWEJsY2lCaGMzQmxZM1FnYjJZZ2RHaGxYRzRnS2lCamIyMXdiMjVsYm5RbmN5QnpkR0YwWlNCb1lYTWdZMmhoYm1kbFpDQmlkWFFnWUhObGRGTjBZWFJsWUNCM1lYTWdibTkwSUdOaGJHeGxaQzVjYmlBcVhHNGdLaUJVYUdseklIZHBiR3dnYm05MElHbHVkbTlyWlNCZ2MyaHZkV3hrUTI5dGNHOXVaVzUwVlhCa1lYUmxZQ3dnWW5WMElHbDBJSGRwYkd3Z2FXNTJiMnRsWEc0Z0tpQmdZMjl0Y0c5dVpXNTBWMmxzYkZWd1pHRjBaV0FnWVc1a0lHQmpiMjF3YjI1bGJuUkVhV1JWY0dSaGRHVmdMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdQMloxYm1OMGFXOXVmU0JqWVd4c1ltRmpheUJEWVd4c1pXUWdZV1owWlhJZ2RYQmtZWFJsSUdseklHTnZiWEJzWlhSbExseHVJQ29nUUdacGJtRnNYRzRnS2lCQWNISnZkR1ZqZEdWa1hHNGdLaTljYmxKbFlXTjBRMjl0Y0c5dVpXNTBMbkJ5YjNSdmRIbHdaUzVtYjNKalpWVndaR0YwWlNBOUlHWjFibU4wYVc5dUlDaGpZV3hzWW1GamF5a2dlMXh1SUNCMGFHbHpMblZ3WkdGMFpYSXVaVzV4ZFdWMVpVWnZjbU5sVlhCa1lYUmxLSFJvYVhNcE8xeHVJQ0JwWmlBb1kyRnNiR0poWTJzcElIdGNiaUFnSUNCMGFHbHpMblZ3WkdGMFpYSXVaVzV4ZFdWMVpVTmhiR3hpWVdOcktIUm9hWE1zSUdOaGJHeGlZV05yTENBblptOXlZMlZWY0dSaGRHVW5LVHRjYmlBZ2ZWeHVmVHRjYmx4dUx5b3FYRzRnS2lCRVpYQnlaV05oZEdWa0lFRlFTWE11SUZSb1pYTmxJRUZRU1hNZ2RYTmxaQ0IwYnlCbGVHbHpkQ0J2YmlCamJHRnpjMmxqSUZKbFlXTjBJR05zWVhOelpYTWdZblYwSUhOcGJtTmxYRzRnS2lCM1pTQjNiM1ZzWkNCc2FXdGxJSFJ2SUdSbGNISmxZMkYwWlNCMGFHVnRMQ0IzWlNkeVpTQnViM1FnWjI5cGJtY2dkRzhnYlc5MlpTQjBhR1Z0SUc5MlpYSWdkRzhnZEdocGMxeHVJQ29nYlc5a1pYSnVJR0poYzJVZ1kyeGhjM011SUVsdWMzUmxZV1FzSUhkbElHUmxabWx1WlNCaElHZGxkSFJsY2lCMGFHRjBJSGRoY201eklHbG1JR2wwSjNNZ1lXTmpaWE56WldRdVhHNGdLaTljYm1sbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lIWmhjaUJrWlhCeVpXTmhkR1ZrUVZCSmN5QTlJSHRjYmlBZ0lDQnBjMDF2ZFc1MFpXUTZJRnNuYVhOTmIzVnVkR1ZrSnl3Z0owbHVjM1JsWVdRc0lHMWhhMlVnYzNWeVpTQjBieUJqYkdWaGJpQjFjQ0J6ZFdKelkzSnBjSFJwYjI1eklHRnVaQ0J3Wlc1a2FXNW5JSEpsY1hWbGMzUnpJR2x1SUNjZ0t5QW5ZMjl0Y0c5dVpXNTBWMmxzYkZWdWJXOTFiblFnZEc4Z2NISmxkbVZ1ZENCdFpXMXZjbmtnYkdWaGEzTXVKMTBzWEc0Z0lDQWdjbVZ3YkdGalpWTjBZWFJsT2lCYkozSmxjR3hoWTJWVGRHRjBaU2NzSUNkU1pXWmhZM1J2Y2lCNWIzVnlJR052WkdVZ2RHOGdkWE5sSUhObGRGTjBZWFJsSUdsdWMzUmxZV1FnS0hObFpTQW5JQ3NnSjJoMGRIQnpPaTh2WjJsMGFIVmlMbU52YlM5bVlXTmxZbTl2YXk5eVpXRmpkQzlwYzNOMVpYTXZNekl6TmlrdUoxMWNiaUFnZlR0Y2JpQWdkbUZ5SUdSbFptbHVaVVJsY0hKbFkyRjBhVzl1VjJGeWJtbHVaeUE5SUdaMWJtTjBhVzl1SUNodFpYUm9iMlJPWVcxbExDQnBibVp2S1NCN1hHNGdJQ0FnYVdZZ0tHTmhia1JsWm1sdVpWQnliM0JsY25SNUtTQjdYRzRnSUNBZ0lDQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvVW1WaFkzUkRiMjF3YjI1bGJuUXVjSEp2ZEc5MGVYQmxMQ0J0WlhSb2IyUk9ZVzFsTENCN1hHNGdJQ0FnSUNBZ0lHZGxkRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR3h2ZDFCeWFXOXlhWFI1VjJGeWJtbHVaeWhtWVd4elpTd2dKeVZ6S0M0dUxpa2dhWE1nWkdWd2NtVmpZWFJsWkNCcGJpQndiR0ZwYmlCS1lYWmhVMk55YVhCMElGSmxZV04wSUdOc1lYTnpaWE11SUNWekp5d2dhVzVtYjFzd1hTd2dhVzVtYjFzeFhTazdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnZlZ4dUlDQjlPMXh1SUNCbWIzSWdLSFpoY2lCbWJrNWhiV1VnYVc0Z1pHVndjbVZqWVhSbFpFRlFTWE1wSUh0Y2JpQWdJQ0JwWmlBb1pHVndjbVZqWVhSbFpFRlFTWE11YUdGelQzZHVVSEp2Y0dWeWRIa29abTVPWVcxbEtTa2dlMXh1SUNBZ0lDQWdaR1ZtYVc1bFJHVndjbVZqWVhScGIyNVhZWEp1YVc1bktHWnVUbUZ0WlN3Z1pHVndjbVZqWVhSbFpFRlFTWE5iWm01T1lXMWxYU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nUW1GelpTQmpiR0Z6Y3lCb1pXeHdaWEp6SUdadmNpQjBhR1VnZFhCa1lYUnBibWNnYzNSaGRHVWdiMllnWVNCamIyMXdiMjVsYm5RdVhHNGdLaTljYm1aMWJtTjBhVzl1SUZKbFlXTjBVSFZ5WlVOdmJYQnZibVZ1ZENod2NtOXdjeXdnWTI5dWRHVjRkQ3dnZFhCa1lYUmxjaWtnZTF4dUlDQXZMeUJFZFhCc2FXTmhkR1ZrSUdaeWIyMGdVbVZoWTNSRGIyMXdiMjVsYm5RdVhHNGdJSFJvYVhNdWNISnZjSE1nUFNCd2NtOXdjenRjYmlBZ2RHaHBjeTVqYjI1MFpYaDBJRDBnWTI5dWRHVjRkRHRjYmlBZ2RHaHBjeTV5WldaeklEMGdaVzF3ZEhsUFltcGxZM1E3WEc0Z0lDOHZJRmRsSUdsdWFYUnBZV3hwZW1VZ2RHaGxJR1JsWm1GMWJIUWdkWEJrWVhSbGNpQmlkWFFnZEdobElISmxZV3dnYjI1bElHZGxkSE1nYVc1cVpXTjBaV1FnWW5rZ2RHaGxYRzRnSUM4dklISmxibVJsY21WeUxseHVJQ0IwYUdsekxuVndaR0YwWlhJZ1BTQjFjR1JoZEdWeUlIeDhJRkpsWVdOMFRtOXZjRlZ3WkdGMFpWRjFaWFZsTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJEYjIxd2IyNWxiblJFZFcxdGVTZ3BJSHQ5WEc1RGIyMXdiMjVsYm5SRWRXMXRlUzV3Y205MGIzUjVjR1VnUFNCU1pXRmpkRU52YlhCdmJtVnVkQzV3Y205MGIzUjVjR1U3WEc1U1pXRmpkRkIxY21WRGIyMXdiMjVsYm5RdWNISnZkRzkwZVhCbElEMGdibVYzSUVOdmJYQnZibVZ1ZEVSMWJXMTVLQ2s3WEc1U1pXRmpkRkIxY21WRGIyMXdiMjVsYm5RdWNISnZkRzkwZVhCbExtTnZibk4wY25WamRHOXlJRDBnVW1WaFkzUlFkWEpsUTI5dGNHOXVaVzUwTzF4dUx5OGdRWFp2YVdRZ1lXNGdaWGgwY21FZ2NISnZkRzkwZVhCbElHcDFiWEFnWm05eUlIUm9aWE5sSUcxbGRHaHZaSE11WEc1ZllYTnphV2R1S0ZKbFlXTjBVSFZ5WlVOdmJYQnZibVZ1ZEM1d2NtOTBiM1I1Y0dVc0lGSmxZV04wUTI5dGNHOXVaVzUwTG5CeWIzUnZkSGx3WlNrN1hHNVNaV0ZqZEZCMWNtVkRiMjF3YjI1bGJuUXVjSEp2ZEc5MGVYQmxMbWx6VUhWeVpWSmxZV04wUTI5dGNHOXVaVzUwSUQwZ2RISjFaVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCN1hHNGdJRU52YlhCdmJtVnVkRG9nVW1WaFkzUkRiMjF3YjI1bGJuUXNYRzRnSUZCMWNtVkRiMjF3YjI1bGJuUTZJRkpsWVdOMFVIVnlaVU52YlhCdmJtVnVkRnh1ZlR0Y2JseHVYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dklGZEZRbEJCUTBzZ1JrOVBWRVZTWEc0dkx5QXVMMzR2Y21WaFkzUXZiR2xpTDFKbFlXTjBRbUZ6WlVOc1lYTnpaWE11YW5OY2JpOHZJRzF2WkhWc1pTQnBaQ0E5SURFMFhHNHZMeUJ0YjJSMWJHVWdZMmgxYm10eklEMGdNQ0pkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0Qklpd2ljMjkxY21ObFVtOXZkQ0k2SWlKOVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8xNFxcblwiKTtcblxuLyoqKi8gfSksXG4vKiAxNSAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9+L3JlYWN0L2xpYi9SZWFjdEVsZW1lbnRTeW1ib2wuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qKlxcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxcbiAqXFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbiAqXFxuICogXFxuICovXFxuXFxuXFxuXFxuLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50IHR5cGUuIElmIHRoZXJlIGlzIG5vIG5hdGl2ZSBTeW1ib2xcXG4vLyBub3IgcG9seWZpbGwsIHRoZW4gYSBwbGFpbiBudW1iZXIgaXMgdXNlZCBmb3IgcGVyZm9ybWFuY2UuXFxuXFxudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sWydmb3InXSAmJiBTeW1ib2xbJ2ZvciddKCdyZWFjdC5lbGVtZW50JykgfHwgMHhlYWM3O1xcblxcbm1vZHVsZS5leHBvcnRzID0gUkVBQ1RfRUxFTUVOVF9UWVBFOy8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaU1UVXVhbk1pTENKemIzVnlZMlZ6SWpwYkluZGxZbkJoWTJzNkx5OHZMaTkrTDNKbFlXTjBMMnhwWWk5U1pXRmpkRVZzWlcxbGJuUlRlVzFpYjJ3dWFuTS9OV1F3TkNKZExDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQW9ZeWtnTWpBeE5DMXdjbVZ6Wlc1MExDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFMUpWQ0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMbHh1SUNwY2JpQXFJRnh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVMeThnVkdobElGTjViV0p2YkNCMWMyVmtJSFJ2SUhSaFp5QjBhR1VnVW1WaFkzUkZiR1Z0Wlc1MElIUjVjR1V1SUVsbUlIUm9aWEpsSUdseklHNXZJRzVoZEdsMlpTQlRlVzFpYjJ4Y2JpOHZJRzV2Y2lCd2IyeDVabWxzYkN3Z2RHaGxiaUJoSUhCc1lXbHVJRzUxYldKbGNpQnBjeUIxYzJWa0lHWnZjaUJ3WlhKbWIzSnRZVzVqWlM1Y2JseHVkbUZ5SUZKRlFVTlVYMFZNUlUxRlRsUmZWRmxRUlNBOUlIUjVjR1Z2WmlCVGVXMWliMndnUFQwOUlDZG1kVzVqZEdsdmJpY2dKaVlnVTNsdFltOXNXeWRtYjNJblhTQW1KaUJUZVcxaWIyeGJKMlp2Y2lkZEtDZHlaV0ZqZEM1bGJHVnRaVzUwSnlrZ2ZId2dNSGhsWVdNM08xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRkpGUVVOVVgwVk1SVTFGVGxSZlZGbFFSVHRjYmx4dVhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNiaTh2SUZkRlFsQkJRMHNnUms5UFZFVlNYRzR2THlBdUwzNHZjbVZoWTNRdmJHbGlMMUpsWVdOMFJXeGxiV1Z1ZEZONWJXSnZiQzVxYzF4dUx5OGdiVzlrZFd4bElHbGtJRDBnTVRWY2JpOHZJRzF2WkhWc1pTQmphSFZ1YTNNZ1BTQXdJbDBzSW0xaGNIQnBibWR6SWpvaVFVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpYzI5MWNtTmxVbTl2ZENJNklpSjlcXG4vLyMgc291cmNlVVJMPXdlYnBhY2staW50ZXJuYWw6Ly8vMTVcXG5cIik7XG5cbi8qKiovIH0pLFxuLyogMTYgKi9cbi8qIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKiBhbGwgZXhwb3J0cyB1c2VkICovXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vfi9yZWFjdC9saWIvUmVhY3RFbGVtZW50VmFsaWRhdG9yLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbmV2YWwoXCIvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJvY2Vzcykgey8qKlxcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxcbiAqXFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbiAqXFxuICovXFxuXFxuLyoqXFxuICogUmVhY3RFbGVtZW50VmFsaWRhdG9yIHByb3ZpZGVzIGEgd3JhcHBlciBhcm91bmQgYSBlbGVtZW50IGZhY3RvcnlcXG4gKiB3aGljaCB2YWxpZGF0ZXMgdGhlIHByb3BzIHBhc3NlZCB0byB0aGUgZWxlbWVudC4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZVxcbiAqIHVzZWQgb25seSBpbiBERVYgYW5kIGNvdWxkIGJlIHJlcGxhY2VkIGJ5IGEgc3RhdGljIHR5cGUgY2hlY2tlciBmb3IgbGFuZ3VhZ2VzXFxuICogdGhhdCBzdXBwb3J0IGl0LlxcbiAqL1xcblxcblxcblxcbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vUmVhY3RDdXJyZW50T3duZXIgKi8gNyk7XFxudmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL1JlYWN0Q29tcG9uZW50VHJlZUhvb2sgKi8gMTApO1xcbnZhciBSZWFjdEVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL1JlYWN0RWxlbWVudCAqLyAzKTtcXG5cXG52YXIgY2hlY2tSZWFjdFR5cGVTcGVjID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9jaGVja1JlYWN0VHlwZVNwZWMgKi8gMzUpO1xcblxcbnZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vY2FuRGVmaW5lUHJvcGVydHkgKi8gOCk7XFxudmFyIGdldEl0ZXJhdG9yRm4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2dldEl0ZXJhdG9yRm4gKi8gMTgpO1xcbnZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgZmJqcy9saWIvd2FybmluZyAqLyAyKTtcXG52YXIgbG93UHJpb3JpdHlXYXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9sb3dQcmlvcml0eVdhcm5pbmcgKi8gMTEpO1xcblxcbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpIHtcXG4gIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XFxuICAgIHZhciBuYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XFxuICAgIGlmIChuYW1lKSB7XFxuICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcXG4gICAgfVxcbiAgfVxcbiAgcmV0dXJuICcnO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bShlbGVtZW50UHJvcHMpIHtcXG4gIGlmIChlbGVtZW50UHJvcHMgIT09IG51bGwgJiYgZWxlbWVudFByb3BzICE9PSB1bmRlZmluZWQgJiYgZWxlbWVudFByb3BzLl9fc291cmNlICE9PSB1bmRlZmluZWQpIHtcXG4gICAgdmFyIHNvdXJjZSA9IGVsZW1lbnRQcm9wcy5fX3NvdXJjZTtcXG4gICAgdmFyIGZpbGVOYW1lID0gc291cmNlLmZpbGVOYW1lLnJlcGxhY2UoL14uKltcXFxcXFxcXFxcXFwvXS8sICcnKTtcXG4gICAgdmFyIGxpbmVOdW1iZXIgPSBzb3VyY2UubGluZU51bWJlcjtcXG4gICAgcmV0dXJuICcgQ2hlY2sgeW91ciBjb2RlIGF0ICcgKyBmaWxlTmFtZSArICc6JyArIGxpbmVOdW1iZXIgKyAnLic7XFxuICB9XFxuICByZXR1cm4gJyc7XFxufVxcblxcbi8qKlxcbiAqIFdhcm4gaWYgdGhlcmUncyBubyBrZXkgZXhwbGljaXRseSBzZXQgb24gZHluYW1pYyBhcnJheXMgb2YgY2hpbGRyZW4gb3JcXG4gKiBvYmplY3Qga2V5cyBhcmUgbm90IHZhbGlkLiBUaGlzIGFsbG93cyB1cyB0byBrZWVwIHRyYWNrIG9mIGNoaWxkcmVuIGJldHdlZW5cXG4gKiB1cGRhdGVzLlxcbiAqL1xcbnZhciBvd25lckhhc0tleVVzZVdhcm5pbmcgPSB7fTtcXG5cXG5mdW5jdGlvbiBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpIHtcXG4gIHZhciBpbmZvID0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7XFxuXFxuICBpZiAoIWluZm8pIHtcXG4gICAgdmFyIHBhcmVudE5hbWUgPSB0eXBlb2YgcGFyZW50VHlwZSA9PT0gJ3N0cmluZycgPyBwYXJlbnRUeXBlIDogcGFyZW50VHlwZS5kaXNwbGF5TmFtZSB8fCBwYXJlbnRUeXBlLm5hbWU7XFxuICAgIGlmIChwYXJlbnROYW1lKSB7XFxuICAgICAgaW5mbyA9ICcgQ2hlY2sgdGhlIHRvcC1sZXZlbCByZW5kZXIgY2FsbCB1c2luZyA8JyArIHBhcmVudE5hbWUgKyAnPi4nO1xcbiAgICB9XFxuICB9XFxuICByZXR1cm4gaW5mbztcXG59XFxuXFxuLyoqXFxuICogV2FybiBpZiB0aGUgZWxlbWVudCBkb2Vzbid0IGhhdmUgYW4gZXhwbGljaXQga2V5IGFzc2lnbmVkIHRvIGl0LlxcbiAqIFRoaXMgZWxlbWVudCBpcyBpbiBhbiBhcnJheS4gVGhlIGFycmF5IGNvdWxkIGdyb3cgYW5kIHNocmluayBvciBiZVxcbiAqIHJlb3JkZXJlZC4gQWxsIGNoaWxkcmVuIHRoYXQgaGF2ZW4ndCBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkIGFyZSByZXF1aXJlZCB0b1xcbiAqIGhhdmUgYSBcXFwia2V5XFxcIiBwcm9wZXJ0eSBhc3NpZ25lZCB0byBpdC4gRXJyb3Igc3RhdHVzZXMgYXJlIGNhY2hlZCBzbyBhIHdhcm5pbmdcXG4gKiB3aWxsIG9ubHkgYmUgc2hvd24gb25jZS5cXG4gKlxcbiAqIEBpbnRlcm5hbFxcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50IEVsZW1lbnQgdGhhdCByZXF1aXJlcyBhIGtleS5cXG4gKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgZWxlbWVudCdzIHBhcmVudCdzIHR5cGUuXFxuICovXFxuZnVuY3Rpb24gdmFsaWRhdGVFeHBsaWNpdEtleShlbGVtZW50LCBwYXJlbnRUeXBlKSB7XFxuICBpZiAoIWVsZW1lbnQuX3N0b3JlIHx8IGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCB8fCBlbGVtZW50LmtleSAhPSBudWxsKSB7XFxuICAgIHJldHVybjtcXG4gIH1cXG4gIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IHRydWU7XFxuXFxuICB2YXIgbWVtb2l6ZXIgPSBvd25lckhhc0tleVVzZVdhcm5pbmcudW5pcXVlS2V5IHx8IChvd25lckhhc0tleVVzZVdhcm5pbmcudW5pcXVlS2V5ID0ge30pO1xcblxcbiAgdmFyIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8gPSBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpO1xcbiAgaWYgKG1lbW9pemVyW2N1cnJlbnRDb21wb25lbnRFcnJvckluZm9dKSB7XFxuICAgIHJldHVybjtcXG4gIH1cXG4gIG1lbW9pemVyW2N1cnJlbnRDb21wb25lbnRFcnJvckluZm9dID0gdHJ1ZTtcXG5cXG4gIC8vIFVzdWFsbHkgdGhlIGN1cnJlbnQgb3duZXIgaXMgdGhlIG9mZmVuZGVyLCBidXQgaWYgaXQgYWNjZXB0cyBjaGlsZHJlbiBhcyBhXFxuICAvLyBwcm9wZXJ0eSwgaXQgbWF5IGJlIHRoZSBjcmVhdG9yIG9mIHRoZSBjaGlsZCB0aGF0J3MgcmVzcG9uc2libGUgZm9yXFxuICAvLyBhc3NpZ25pbmcgaXQgYSBrZXkuXFxuICB2YXIgY2hpbGRPd25lciA9ICcnO1xcbiAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5fb3duZXIgJiYgZWxlbWVudC5fb3duZXIgIT09IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHtcXG4gICAgLy8gR2l2ZSB0aGUgY29tcG9uZW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoaXMgY2hpbGQuXFxuICAgIGNoaWxkT3duZXIgPSAnIEl0IHdhcyBwYXNzZWQgYSBjaGlsZCBmcm9tICcgKyBlbGVtZW50Ll9vd25lci5nZXROYW1lKCkgKyAnLic7XFxuICB9XFxuXFxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0VhY2ggY2hpbGQgaW4gYW4gYXJyYXkgb3IgaXRlcmF0b3Igc2hvdWxkIGhhdmUgYSB1bmlxdWUgXFxcImtleVxcXCIgcHJvcC4nICsgJyVzJXMgU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1rZXlzIGZvciBtb3JlIGluZm9ybWF0aW9uLiVzJywgY3VycmVudENvbXBvbmVudEVycm9ySW5mbywgY2hpbGRPd25lciwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRDdXJyZW50U3RhY2tBZGRlbmR1bShlbGVtZW50KSkgOiB2b2lkIDA7XFxufVxcblxcbi8qKlxcbiAqIEVuc3VyZSB0aGF0IGV2ZXJ5IGVsZW1lbnQgZWl0aGVyIGlzIHBhc3NlZCBpbiBhIHN0YXRpYyBsb2NhdGlvbiwgaW4gYW5cXG4gKiBhcnJheSB3aXRoIGFuIGV4cGxpY2l0IGtleXMgcHJvcGVydHkgZGVmaW5lZCwgb3IgaW4gYW4gb2JqZWN0IGxpdGVyYWxcXG4gKiB3aXRoIHZhbGlkIGtleSBwcm9wZXJ0eS5cXG4gKlxcbiAqIEBpbnRlcm5hbFxcbiAqIEBwYXJhbSB7UmVhY3ROb2RlfSBub2RlIFN0YXRpY2FsbHkgcGFzc2VkIGNoaWxkIG9mIGFueSB0eXBlLlxcbiAqIEBwYXJhbSB7Kn0gcGFyZW50VHlwZSBub2RlJ3MgcGFyZW50J3MgdHlwZS5cXG4gKi9cXG5mdW5jdGlvbiB2YWxpZGF0ZUNoaWxkS2V5cyhub2RlLCBwYXJlbnRUeXBlKSB7XFxuICBpZiAodHlwZW9mIG5vZGUgIT09ICdvYmplY3QnKSB7XFxuICAgIHJldHVybjtcXG4gIH1cXG4gIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xcbiAgICAgIHZhciBjaGlsZCA9IG5vZGVbaV07XFxuICAgICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcXG4gICAgICAgIHZhbGlkYXRlRXhwbGljaXRLZXkoY2hpbGQsIHBhcmVudFR5cGUpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfSBlbHNlIGlmIChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQobm9kZSkpIHtcXG4gICAgLy8gVGhpcyBlbGVtZW50IHdhcyBwYXNzZWQgaW4gYSB2YWxpZCBsb2NhdGlvbi5cXG4gICAgaWYgKG5vZGUuX3N0b3JlKSB7XFxuICAgICAgbm9kZS5fc3RvcmUudmFsaWRhdGVkID0gdHJ1ZTtcXG4gICAgfVxcbiAgfSBlbHNlIGlmIChub2RlKSB7XFxuICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihub2RlKTtcXG4gICAgLy8gRW50cnkgaXRlcmF0b3JzIHByb3ZpZGUgaW1wbGljaXQga2V5cy5cXG4gICAgaWYgKGl0ZXJhdG9yRm4pIHtcXG4gICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gbm9kZS5lbnRyaWVzKSB7XFxuICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobm9kZSk7XFxuICAgICAgICB2YXIgc3RlcDtcXG4gICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcXG4gICAgICAgICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChzdGVwLnZhbHVlKSkge1xcbiAgICAgICAgICAgIHZhbGlkYXRlRXhwbGljaXRLZXkoc3RlcC52YWx1ZSwgcGFyZW50VHlwZSk7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLyoqXFxuICogR2l2ZW4gYW4gZWxlbWVudCwgdmFsaWRhdGUgdGhhdCBpdHMgcHJvcHMgZm9sbG93IHRoZSBwcm9wVHlwZXMgZGVmaW5pdGlvbixcXG4gKiBwcm92aWRlZCBieSB0aGUgdHlwZS5cXG4gKlxcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50XFxuICovXFxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wVHlwZXMoZWxlbWVudCkge1xcbiAgdmFyIGNvbXBvbmVudENsYXNzID0gZWxlbWVudC50eXBlO1xcbiAgaWYgKHR5cGVvZiBjb21wb25lbnRDbGFzcyAhPT0gJ2Z1bmN0aW9uJykge1xcbiAgICByZXR1cm47XFxuICB9XFxuICB2YXIgbmFtZSA9IGNvbXBvbmVudENsYXNzLmRpc3BsYXlOYW1lIHx8IGNvbXBvbmVudENsYXNzLm5hbWU7XFxuICBpZiAoY29tcG9uZW50Q2xhc3MucHJvcFR5cGVzKSB7XFxuICAgIGNoZWNrUmVhY3RUeXBlU3BlYyhjb21wb25lbnRDbGFzcy5wcm9wVHlwZXMsIGVsZW1lbnQucHJvcHMsICdwcm9wJywgbmFtZSwgZWxlbWVudCwgbnVsbCk7XFxuICB9XFxuICBpZiAodHlwZW9mIGNvbXBvbmVudENsYXNzLmdldERlZmF1bHRQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhjb21wb25lbnRDbGFzcy5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdnZXREZWZhdWx0UHJvcHMgaXMgb25seSB1c2VkIG9uIGNsYXNzaWMgUmVhY3QuY3JlYXRlQ2xhc3MgJyArICdkZWZpbml0aW9ucy4gVXNlIGEgc3RhdGljIHByb3BlcnR5IG5hbWVkIGBkZWZhdWx0UHJvcHNgIGluc3RlYWQuJykgOiB2b2lkIDA7XFxuICB9XFxufVxcblxcbnZhciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSB7XFxuICBjcmVhdGVFbGVtZW50OiBmdW5jdGlvbiAodHlwZSwgcHJvcHMsIGNoaWxkcmVuKSB7XFxuICAgIHZhciB2YWxpZFR5cGUgPSB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbic7XFxuICAgIC8vIFdlIHdhcm4gaW4gdGhpcyBjYXNlIGJ1dCBkb24ndCB0aHJvdy4gV2UgZXhwZWN0IHRoZSBlbGVtZW50IGNyZWF0aW9uIHRvXFxuICAgIC8vIHN1Y2NlZWQgYW5kIHRoZXJlIHdpbGwgbGlrZWx5IGJlIGVycm9ycyBpbiByZW5kZXIuXFxuICAgIGlmICghdmFsaWRUeXBlKSB7XFxuICAgICAgaWYgKHR5cGVvZiB0eXBlICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJykge1xcbiAgICAgICAgdmFyIGluZm8gPSAnJztcXG4gICAgICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwgJiYgT2JqZWN0LmtleXModHlwZSkubGVuZ3RoID09PSAwKSB7XFxuICAgICAgICAgIGluZm8gKz0gJyBZb3UgbGlrZWx5IGZvcmdvdCB0byBleHBvcnQgeW91ciBjb21wb25lbnQgZnJvbSB0aGUgZmlsZSAnICsgXFxcIml0J3MgZGVmaW5lZCBpbi5cXFwiO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgdmFyIHNvdXJjZUluZm8gPSBnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bShwcm9wcyk7XFxuICAgICAgICBpZiAoc291cmNlSW5mbykge1xcbiAgICAgICAgICBpbmZvICs9IHNvdXJjZUluZm87XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICBpbmZvICs9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgaW5mbyArPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEN1cnJlbnRTdGFja0FkZGVuZHVtKCk7XFxuXFxuICAgICAgICB2YXIgY3VycmVudFNvdXJjZSA9IHByb3BzICE9PSBudWxsICYmIHByb3BzICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuX19zb3VyY2UgIT09IHVuZGVmaW5lZCA/IHByb3BzLl9fc291cmNlIDogbnVsbDtcXG4gICAgICAgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sucHVzaE5vblN0YW5kYXJkV2FybmluZ1N0YWNrKHRydWUsIGN1cnJlbnRTb3VyY2UpO1xcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFjdC5jcmVhdGVFbGVtZW50OiB0eXBlIGlzIGludmFsaWQgLS0gZXhwZWN0ZWQgYSBzdHJpbmcgKGZvciAnICsgJ2J1aWx0LWluIGNvbXBvbmVudHMpIG9yIGEgY2xhc3MvZnVuY3Rpb24gKGZvciBjb21wb3NpdGUgJyArICdjb21wb25lbnRzKSBidXQgZ290OiAlcy4lcycsIHR5cGUgPT0gbnVsbCA/IHR5cGUgOiB0eXBlb2YgdHlwZSwgaW5mbykgOiB2b2lkIDA7XFxuICAgICAgICBSZWFjdENvbXBvbmVudFRyZWVIb29rLnBvcE5vblN0YW5kYXJkV2FybmluZ1N0YWNrKCk7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIHZhciBlbGVtZW50ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcXG5cXG4gICAgLy8gVGhlIHJlc3VsdCBjYW4gYmUgbnVsbGlzaCBpZiBhIG1vY2sgb3IgYSBjdXN0b20gZnVuY3Rpb24gaXMgdXNlZC5cXG4gICAgLy8gVE9ETzogRHJvcCB0aGlzIHdoZW4gdGhlc2UgYXJlIG5vIGxvbmdlciBhbGxvd2VkIGFzIHRoZSB0eXBlIGFyZ3VtZW50LlxcbiAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XFxuICAgICAgcmV0dXJuIGVsZW1lbnQ7XFxuICAgIH1cXG5cXG4gICAgLy8gU2tpcCBrZXkgd2FybmluZyBpZiB0aGUgdHlwZSBpc24ndCB2YWxpZCBzaW5jZSBvdXIga2V5IHZhbGlkYXRpb24gbG9naWNcXG4gICAgLy8gZG9lc24ndCBleHBlY3QgYSBub24tc3RyaW5nL2Z1bmN0aW9uIHR5cGUgYW5kIGNhbiB0aHJvdyBjb25mdXNpbmcgZXJyb3JzLlxcbiAgICAvLyBXZSBkb24ndCB3YW50IGV4Y2VwdGlvbiBiZWhhdmlvciB0byBkaWZmZXIgYmV0d2VlbiBkZXYgYW5kIHByb2QuXFxuICAgIC8vIChSZW5kZXJpbmcgd2lsbCB0aHJvdyB3aXRoIGEgaGVscGZ1bCBtZXNzYWdlIGFuZCBhcyBzb29uIGFzIHRoZSB0eXBlIGlzXFxuICAgIC8vIGZpeGVkLCB0aGUga2V5IHdhcm5pbmdzIHdpbGwgYXBwZWFyLilcXG4gICAgaWYgKHZhbGlkVHlwZSkge1xcbiAgICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhhcmd1bWVudHNbaV0sIHR5cGUpO1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KTtcXG5cXG4gICAgcmV0dXJuIGVsZW1lbnQ7XFxuICB9LFxcblxcbiAgY3JlYXRlRmFjdG9yeTogZnVuY3Rpb24gKHR5cGUpIHtcXG4gICAgdmFyIHZhbGlkYXRlZEZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRWxlbWVudC5iaW5kKG51bGwsIHR5cGUpO1xcbiAgICAvLyBMZWdhY3kgaG9vayBUT0RPOiBXYXJuIGlmIHRoaXMgaXMgYWNjZXNzZWRcXG4gICAgdmFsaWRhdGVkRmFjdG9yeS50eXBlID0gdHlwZTtcXG5cXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gICAgICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWxpZGF0ZWRGYWN0b3J5LCAndHlwZScsIHtcXG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXFxuICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xcbiAgICAgICAgICAgIGxvd1ByaW9yaXR5V2FybmluZyhmYWxzZSwgJ0ZhY3RvcnkudHlwZSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdGhlIGNsYXNzIGRpcmVjdGx5ICcgKyAnYmVmb3JlIHBhc3NpbmcgaXQgdG8gY3JlYXRlRmFjdG9yeS4nKTtcXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3R5cGUnLCB7XFxuICAgICAgICAgICAgICB2YWx1ZTogdHlwZVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHJldHVybiB0eXBlO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgcmV0dXJuIHZhbGlkYXRlZEZhY3Rvcnk7XFxuICB9LFxcblxcbiAgY2xvbmVFbGVtZW50OiBmdW5jdGlvbiAoZWxlbWVudCwgcHJvcHMsIGNoaWxkcmVuKSB7XFxuICAgIHZhciBuZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xcbiAgICAgIHZhbGlkYXRlQ2hpbGRLZXlzKGFyZ3VtZW50c1tpXSwgbmV3RWxlbWVudC50eXBlKTtcXG4gICAgfVxcbiAgICB2YWxpZGF0ZVByb3BUeXBlcyhuZXdFbGVtZW50KTtcXG4gICAgcmV0dXJuIG5ld0VsZW1lbnQ7XFxuICB9XFxufTtcXG5cXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RWxlbWVudFZhbGlkYXRvcjtcXG4vKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi8uLi8uLi9wcm9jZXNzL2Jyb3dzZXIuanMgKi8gMCkpKS8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaU1UWXVhbk1pTENKemIzVnlZMlZ6SWpwYkluZGxZbkJoWTJzNkx5OHZMaTkrTDNKbFlXTjBMMnhwWWk5U1pXRmpkRVZzWlcxbGJuUldZV3hwWkdGMGIzSXVhbk0vWVRVNU9TSmRMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0FvWXlrZ01qQXhOQzF3Y21WelpXNTBMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRTFKVkNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGx4dUlDcGNiaUFxTDF4dVhHNHZLaXBjYmlBcUlGSmxZV04wUld4bGJXVnVkRlpoYkdsa1lYUnZjaUJ3Y205MmFXUmxjeUJoSUhkeVlYQndaWElnWVhKdmRXNWtJR0VnWld4bGJXVnVkQ0JtWVdOMGIzSjVYRzRnS2lCM2FHbGphQ0IyWVd4cFpHRjBaWE1nZEdobElIQnliM0J6SUhCaGMzTmxaQ0IwYnlCMGFHVWdaV3hsYldWdWRDNGdWR2hwY3lCcGN5QnBiblJsYm1SbFpDQjBieUJpWlZ4dUlDb2dkWE5sWkNCdmJteDVJR2x1SUVSRlZpQmhibVFnWTI5MWJHUWdZbVVnY21Wd2JHRmpaV1FnWW5rZ1lTQnpkR0YwYVdNZ2RIbHdaU0JqYUdWamEyVnlJR1p2Y2lCc1lXNW5kV0ZuWlhOY2JpQXFJSFJvWVhRZ2MzVndjRzl5ZENCcGRDNWNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJTWldGamRFTjFjbkpsYm5SUGQyNWxjaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JEZFhKeVpXNTBUM2R1WlhJbktUdGNiblpoY2lCU1pXRmpkRU52YlhCdmJtVnVkRlJ5WldWSWIyOXJJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRU52YlhCdmJtVnVkRlJ5WldWSWIyOXJKeWs3WEc1MllYSWdVbVZoWTNSRmJHVnRaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVWc1pXMWxiblFuS1R0Y2JseHVkbUZ5SUdOb1pXTnJVbVZoWTNSVWVYQmxVM0JsWXlBOUlISmxjWFZwY21Vb0p5NHZZMmhsWTJ0U1pXRmpkRlI1Y0dWVGNHVmpKeWs3WEc1Y2JuWmhjaUJqWVc1RVpXWnBibVZRY205d1pYSjBlU0E5SUhKbGNYVnBjbVVvSnk0dlkyRnVSR1ZtYVc1bFVISnZjR1Z5ZEhrbktUdGNiblpoY2lCblpYUkpkR1Z5WVhSdmNrWnVJRDBnY21WeGRXbHlaU2duTGk5blpYUkpkR1Z5WVhSdmNrWnVKeWs3WEc1MllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYm5aaGNpQnNiM2RRY21sdmNtbDBlVmRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2N1TDJ4dmQxQnlhVzl5YVhSNVYyRnlibWx1WnljcE8xeHVYRzVtZFc1amRHbHZiaUJuWlhSRVpXTnNZWEpoZEdsdmJrVnljbTl5UVdSa1pXNWtkVzBvS1NCN1hHNGdJR2xtSUNoU1pXRmpkRU4xY25KbGJuUlBkMjVsY2k1amRYSnlaVzUwS1NCN1hHNGdJQ0FnZG1GeUlHNWhiV1VnUFNCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2k1amRYSnlaVzUwTG1kbGRFNWhiV1VvS1R0Y2JpQWdJQ0JwWmlBb2JtRnRaU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJQ2NnUTJobFkyc2dkR2hsSUhKbGJtUmxjaUJ0WlhSb2IyUWdiMllnWUNjZ0t5QnVZVzFsSUNzZ0oyQXVKenRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlDY25PMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQm5aWFJUYjNWeVkyVkpibVp2UlhKeWIzSkJaR1JsYm1SMWJTaGxiR1Z0Wlc1MFVISnZjSE1wSUh0Y2JpQWdhV1lnS0dWc1pXMWxiblJRY205d2N5QWhQVDBnYm5Wc2JDQW1KaUJsYkdWdFpXNTBVSEp2Y0hNZ0lUMDlJSFZ1WkdWbWFXNWxaQ0FtSmlCbGJHVnRaVzUwVUhKdmNITXVYMTl6YjNWeVkyVWdJVDA5SUhWdVpHVm1hVzVsWkNrZ2UxeHVJQ0FnSUhaaGNpQnpiM1Z5WTJVZ1BTQmxiR1Z0Wlc1MFVISnZjSE11WDE5emIzVnlZMlU3WEc0Z0lDQWdkbUZ5SUdacGJHVk9ZVzFsSUQwZ2MyOTFjbU5sTG1acGJHVk9ZVzFsTG5KbGNHeGhZMlVvTDE0dUtsdGNYRnhjWEZ3dlhTOHNJQ2NuS1R0Y2JpQWdJQ0IyWVhJZ2JHbHVaVTUxYldKbGNpQTlJSE52ZFhKalpTNXNhVzVsVG5WdFltVnlPMXh1SUNBZ0lISmxkSFZ5YmlBbklFTm9aV05ySUhsdmRYSWdZMjlrWlNCaGRDQW5JQ3NnWm1sc1pVNWhiV1VnS3lBbk9pY2dLeUJzYVc1bFRuVnRZbVZ5SUNzZ0p5NG5PMXh1SUNCOVhHNGdJSEpsZEhWeWJpQW5KenRjYm4xY2JseHVMeW9xWEc0Z0tpQlhZWEp1SUdsbUlIUm9aWEpsSjNNZ2JtOGdhMlY1SUdWNGNHeHBZMmwwYkhrZ2MyVjBJRzl1SUdSNWJtRnRhV01nWVhKeVlYbHpJRzltSUdOb2FXeGtjbVZ1SUc5eVhHNGdLaUJ2WW1wbFkzUWdhMlY1Y3lCaGNtVWdibTkwSUhaaGJHbGtMaUJVYUdseklHRnNiRzkzY3lCMWN5QjBieUJyWldWd0lIUnlZV05ySUc5bUlHTm9hV3hrY21WdUlHSmxkSGRsWlc1Y2JpQXFJSFZ3WkdGMFpYTXVYRzRnS2k5Y2JuWmhjaUJ2ZDI1bGNraGhjMHRsZVZWelpWZGhjbTVwYm1jZ1BTQjdmVHRjYmx4dVpuVnVZM1JwYjI0Z1oyVjBRM1Z5Y21WdWRFTnZiWEJ2Ym1WdWRFVnljbTl5U1c1bWJ5aHdZWEpsYm5SVWVYQmxLU0I3WEc0Z0lIWmhjaUJwYm1adklEMGdaMlYwUkdWamJHRnlZWFJwYjI1RmNuSnZja0ZrWkdWdVpIVnRLQ2s3WEc1Y2JpQWdhV1lnS0NGcGJtWnZLU0I3WEc0Z0lDQWdkbUZ5SUhCaGNtVnVkRTVoYldVZ1BTQjBlWEJsYjJZZ2NHRnlaVzUwVkhsd1pTQTlQVDBnSjNOMGNtbHVaeWNnUHlCd1lYSmxiblJVZVhCbElEb2djR0Z5Wlc1MFZIbHdaUzVrYVhOd2JHRjVUbUZ0WlNCOGZDQndZWEpsYm5SVWVYQmxMbTVoYldVN1hHNGdJQ0FnYVdZZ0tIQmhjbVZ1ZEU1aGJXVXBJSHRjYmlBZ0lDQWdJR2x1Wm04Z1BTQW5JRU5vWldOcklIUm9aU0IwYjNBdGJHVjJaV3dnY21WdVpHVnlJR05oYkd3Z2RYTnBibWNnUENjZ0t5QndZWEpsYm5ST1lXMWxJQ3NnSno0dUp6dGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUdsdVptODdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1YyRnliaUJwWmlCMGFHVWdaV3hsYldWdWRDQmtiMlZ6YmlkMElHaGhkbVVnWVc0Z1pYaHdiR2xqYVhRZ2EyVjVJR0Z6YzJsbmJtVmtJSFJ2SUdsMExseHVJQ29nVkdocGN5QmxiR1Z0Wlc1MElHbHpJR2x1SUdGdUlHRnljbUY1TGlCVWFHVWdZWEp5WVhrZ1kyOTFiR1FnWjNKdmR5QmhibVFnYzJoeWFXNXJJRzl5SUdKbFhHNGdLaUJ5Wlc5eVpHVnlaV1F1SUVGc2JDQmphR2xzWkhKbGJpQjBhR0YwSUdoaGRtVnVKM1FnWVd4eVpXRmtlU0JpWldWdUlIWmhiR2xrWVhSbFpDQmhjbVVnY21WeGRXbHlaV1FnZEc5Y2JpQXFJR2hoZG1VZ1lTQmNJbXRsZVZ3aUlIQnliM0JsY25SNUlHRnpjMmxuYm1Wa0lIUnZJR2wwTGlCRmNuSnZjaUJ6ZEdGMGRYTmxjeUJoY21VZ1kyRmphR1ZrSUhOdklHRWdkMkZ5Ym1sdVoxeHVJQ29nZDJsc2JDQnZibXg1SUdKbElITm9iM2R1SUc5dVkyVXVYRzRnS2x4dUlDb2dRR2x1ZEdWeWJtRnNYRzRnS2lCQWNHRnlZVzBnZTFKbFlXTjBSV3hsYldWdWRIMGdaV3hsYldWdWRDQkZiR1Z0Wlc1MElIUm9ZWFFnY21WeGRXbHlaWE1nWVNCclpYa3VYRzRnS2lCQWNHRnlZVzBnZXlwOUlIQmhjbVZ1ZEZSNWNHVWdaV3hsYldWdWRDZHpJSEJoY21WdWRDZHpJSFI1Y0dVdVhHNGdLaTljYm1aMWJtTjBhVzl1SUhaaGJHbGtZWFJsUlhod2JHbGphWFJMWlhrb1pXeGxiV1Z1ZEN3Z2NHRnlaVzUwVkhsd1pTa2dlMXh1SUNCcFppQW9JV1ZzWlcxbGJuUXVYM04wYjNKbElIeDhJR1ZzWlcxbGJuUXVYM04wYjNKbExuWmhiR2xrWVhSbFpDQjhmQ0JsYkdWdFpXNTBMbXRsZVNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnY21WMGRYSnVPMXh1SUNCOVhHNGdJR1ZzWlcxbGJuUXVYM04wYjNKbExuWmhiR2xrWVhSbFpDQTlJSFJ5ZFdVN1hHNWNiaUFnZG1GeUlHMWxiVzlwZW1WeUlEMGdiM2R1WlhKSVlYTkxaWGxWYzJWWFlYSnVhVzVuTG5WdWFYRjFaVXRsZVNCOGZDQW9iM2R1WlhKSVlYTkxaWGxWYzJWWFlYSnVhVzVuTG5WdWFYRjFaVXRsZVNBOUlIdDlLVHRjYmx4dUlDQjJZWElnWTNWeWNtVnVkRU52YlhCdmJtVnVkRVZ5Y205eVNXNW1ieUE5SUdkbGRFTjFjbkpsYm5SRGIyMXdiMjVsYm5SRmNuSnZja2x1Wm04b2NHRnlaVzUwVkhsd1pTazdYRzRnSUdsbUlDaHRaVzF2YVhwbGNsdGpkWEp5Wlc1MFEyOXRjRzl1Wlc1MFJYSnliM0pKYm1adlhTa2dlMXh1SUNBZ0lISmxkSFZ5Ymp0Y2JpQWdmVnh1SUNCdFpXMXZhWHBsY2x0amRYSnlaVzUwUTI5dGNHOXVaVzUwUlhKeWIzSkpibVp2WFNBOUlIUnlkV1U3WEc1Y2JpQWdMeThnVlhOMVlXeHNlU0IwYUdVZ1kzVnljbVZ1ZENCdmQyNWxjaUJwY3lCMGFHVWdiMlptWlc1a1pYSXNJR0oxZENCcFppQnBkQ0JoWTJObGNIUnpJR05vYVd4a2NtVnVJR0Z6SUdGY2JpQWdMeThnY0hKdmNHVnlkSGtzSUdsMElHMWhlU0JpWlNCMGFHVWdZM0psWVhSdmNpQnZaaUIwYUdVZ1kyaHBiR1FnZEdoaGRDZHpJSEpsYzNCdmJuTnBZbXhsSUdadmNseHVJQ0F2THlCaGMzTnBaMjVwYm1jZ2FYUWdZU0JyWlhrdVhHNGdJSFpoY2lCamFHbHNaRTkzYm1WeUlEMGdKeWM3WEc0Z0lHbG1JQ2hsYkdWdFpXNTBJQ1ltSUdWc1pXMWxiblF1WDI5M2JtVnlJQ1ltSUdWc1pXMWxiblF1WDI5M2JtVnlJQ0U5UFNCU1pXRmpkRU4xY25KbGJuUlBkMjVsY2k1amRYSnlaVzUwS1NCN1hHNGdJQ0FnTHk4Z1IybDJaU0IwYUdVZ1kyOXRjRzl1Wlc1MElIUm9ZWFFnYjNKcFoybHVZV3hzZVNCamNtVmhkR1ZrSUhSb2FYTWdZMmhwYkdRdVhHNGdJQ0FnWTJocGJHUlBkMjVsY2lBOUlDY2dTWFFnZDJGeklIQmhjM05sWkNCaElHTm9hV3hrSUdaeWIyMGdKeUFySUdWc1pXMWxiblF1WDI5M2JtVnlMbWRsZEU1aGJXVW9LU0FySUNjdUp6dGNiaUFnZlZ4dVhHNGdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0daaGJITmxMQ0FuUldGamFDQmphR2xzWkNCcGJpQmhiaUJoY25KaGVTQnZjaUJwZEdWeVlYUnZjaUJ6YUc5MWJHUWdhR0YyWlNCaElIVnVhWEYxWlNCY0ltdGxlVndpSUhCeWIzQXVKeUFySUNjbGN5VnpJRk5sWlNCb2RIUndjem92TDJaaUxtMWxMM0psWVdOMExYZGhjbTVwYm1jdGEyVjVjeUJtYjNJZ2JXOXlaU0JwYm1admNtMWhkR2x2Ymk0bGN5Y3NJR04xY25KbGJuUkRiMjF3YjI1bGJuUkZjbkp2Y2tsdVptOHNJR05vYVd4a1QzZHVaWElzSUZKbFlXTjBRMjl0Y0c5dVpXNTBWSEpsWlVodmIyc3VaMlYwUTNWeWNtVnVkRk4wWVdOclFXUmtaVzVrZFcwb1pXeGxiV1Z1ZENrcElEb2dkbTlwWkNBd08xeHVmVnh1WEc0dktpcGNiaUFxSUVWdWMzVnlaU0IwYUdGMElHVjJaWEo1SUdWc1pXMWxiblFnWldsMGFHVnlJR2x6SUhCaGMzTmxaQ0JwYmlCaElITjBZWFJwWXlCc2IyTmhkR2x2Yml3Z2FXNGdZVzVjYmlBcUlHRnljbUY1SUhkcGRHZ2dZVzRnWlhod2JHbGphWFFnYTJWNWN5QndjbTl3WlhKMGVTQmtaV1pwYm1Wa0xDQnZjaUJwYmlCaGJpQnZZbXBsWTNRZ2JHbDBaWEpoYkZ4dUlDb2dkMmwwYUNCMllXeHBaQ0JyWlhrZ2NISnZjR1Z5ZEhrdVhHNGdLbHh1SUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdLaUJBY0dGeVlXMGdlMUpsWVdOMFRtOWtaWDBnYm05a1pTQlRkR0YwYVdOaGJHeDVJSEJoYzNObFpDQmphR2xzWkNCdlppQmhibmtnZEhsd1pTNWNiaUFxSUVCd1lYSmhiU0I3S24wZ2NHRnlaVzUwVkhsd1pTQnViMlJsSjNNZ2NHRnlaVzUwSjNNZ2RIbHdaUzVjYmlBcUwxeHVablZ1WTNScGIyNGdkbUZzYVdSaGRHVkRhR2xzWkV0bGVYTW9ibTlrWlN3Z2NHRnlaVzUwVkhsd1pTa2dlMXh1SUNCcFppQW9kSGx3Wlc5bUlHNXZaR1VnSVQwOUlDZHZZbXBsWTNRbktTQjdYRzRnSUNBZ2NtVjBkWEp1TzF4dUlDQjlYRzRnSUdsbUlDaEJjbkpoZVM1cGMwRnljbUY1S0c1dlpHVXBLU0I3WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0J1YjJSbExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0IyWVhJZ1kyaHBiR1FnUFNCdWIyUmxXMmxkTzF4dUlDQWdJQ0FnYVdZZ0tGSmxZV04wUld4bGJXVnVkQzVwYzFaaGJHbGtSV3hsYldWdWRDaGphR2xzWkNrcElIdGNiaUFnSUNBZ0lDQWdkbUZzYVdSaGRHVkZlSEJzYVdOcGRFdGxlU2hqYUdsc1pDd2djR0Z5Wlc1MFZIbHdaU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOUlHVnNjMlVnYVdZZ0tGSmxZV04wUld4bGJXVnVkQzVwYzFaaGJHbGtSV3hsYldWdWRDaHViMlJsS1NrZ2UxeHVJQ0FnSUM4dklGUm9hWE1nWld4bGJXVnVkQ0IzWVhNZ2NHRnpjMlZrSUdsdUlHRWdkbUZzYVdRZ2JHOWpZWFJwYjI0dVhHNGdJQ0FnYVdZZ0tHNXZaR1V1WDNOMGIzSmxLU0I3WEc0Z0lDQWdJQ0J1YjJSbExsOXpkRzl5WlM1MllXeHBaR0YwWldRZ1BTQjBjblZsTzF4dUlDQWdJSDFjYmlBZ2ZTQmxiSE5sSUdsbUlDaHViMlJsS1NCN1hHNGdJQ0FnZG1GeUlHbDBaWEpoZEc5eVJtNGdQU0JuWlhSSmRHVnlZWFJ2Y2tadUtHNXZaR1VwTzF4dUlDQWdJQzh2SUVWdWRISjVJR2wwWlhKaGRHOXljeUJ3Y205MmFXUmxJR2x0Y0d4cFkybDBJR3RsZVhNdVhHNGdJQ0FnYVdZZ0tHbDBaWEpoZEc5eVJtNHBJSHRjYmlBZ0lDQWdJR2xtSUNocGRHVnlZWFJ2Y2tadUlDRTlQU0J1YjJSbExtVnVkSEpwWlhNcElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdsMFpYSmhkRzl5SUQwZ2FYUmxjbUYwYjNKR2JpNWpZV3hzS0c1dlpHVXBPMXh1SUNBZ0lDQWdJQ0IyWVhJZ2MzUmxjRHRjYmlBZ0lDQWdJQ0FnZDJocGJHVWdLQ0VvYzNSbGNDQTlJR2wwWlhKaGRHOXlMbTVsZUhRb0tTa3VaRzl1WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNoU1pXRmpkRVZzWlcxbGJuUXVhWE5XWVd4cFpFVnNaVzFsYm5Rb2MzUmxjQzUyWVd4MVpTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhiR2xrWVhSbFJYaHdiR2xqYVhSTFpYa29jM1JsY0M1MllXeDFaU3dnY0dGeVpXNTBWSGx3WlNrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nUjJsMlpXNGdZVzRnWld4bGJXVnVkQ3dnZG1Gc2FXUmhkR1VnZEdoaGRDQnBkSE1nY0hKdmNITWdabTlzYkc5M0lIUm9aU0J3Y205d1ZIbHdaWE1nWkdWbWFXNXBkR2x2Yml4Y2JpQXFJSEJ5YjNacFpHVmtJR0o1SUhSb1pTQjBlWEJsTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3VW1WaFkzUkZiR1Z0Wlc1MGZTQmxiR1Z0Wlc1MFhHNGdLaTljYm1aMWJtTjBhVzl1SUhaaGJHbGtZWFJsVUhKdmNGUjVjR1Z6S0dWc1pXMWxiblFwSUh0Y2JpQWdkbUZ5SUdOdmJYQnZibVZ1ZEVOc1lYTnpJRDBnWld4bGJXVnVkQzUwZVhCbE8xeHVJQ0JwWmlBb2RIbHdaVzltSUdOdmJYQnZibVZ1ZEVOc1lYTnpJQ0U5UFNBblpuVnVZM1JwYjI0bktTQjdYRzRnSUNBZ2NtVjBkWEp1TzF4dUlDQjlYRzRnSUhaaGNpQnVZVzFsSUQwZ1kyOXRjRzl1Wlc1MFEyeGhjM011WkdsemNHeGhlVTVoYldVZ2ZId2dZMjl0Y0c5dVpXNTBRMnhoYzNNdWJtRnRaVHRjYmlBZ2FXWWdLR052YlhCdmJtVnVkRU5zWVhOekxuQnliM0JVZVhCbGN5a2dlMXh1SUNBZ0lHTm9aV05yVW1WaFkzUlVlWEJsVTNCbFl5aGpiMjF3YjI1bGJuUkRiR0Z6Y3k1d2NtOXdWSGx3WlhNc0lHVnNaVzFsYm5RdWNISnZjSE1zSUNkd2NtOXdKeXdnYm1GdFpTd2daV3hsYldWdWRDd2diblZzYkNrN1hHNGdJSDFjYmlBZ2FXWWdLSFI1Y0dWdlppQmpiMjF3YjI1bGJuUkRiR0Z6Y3k1blpYUkVaV1poZFd4MFVISnZjSE1nUFQwOUlDZG1kVzVqZEdsdmJpY3BJSHRjYmlBZ0lDQndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnZDJGeWJtbHVaeWhqYjIxd2IyNWxiblJEYkdGemN5NW5aWFJFWldaaGRXeDBVSEp2Y0hNdWFYTlNaV0ZqZEVOc1lYTnpRWEJ3Y205MlpXUXNJQ2RuWlhSRVpXWmhkV3gwVUhKdmNITWdhWE1nYjI1c2VTQjFjMlZrSUc5dUlHTnNZWE56YVdNZ1VtVmhZM1F1WTNKbFlYUmxRMnhoYzNNZ0p5QXJJQ2RrWldacGJtbDBhVzl1Y3k0Z1ZYTmxJR0VnYzNSaGRHbGpJSEJ5YjNCbGNuUjVJRzVoYldWa0lHQmtaV1poZFd4MFVISnZjSE5nSUdsdWMzUmxZV1F1SnlrZ09pQjJiMmxrSURBN1hHNGdJSDFjYm4xY2JseHVkbUZ5SUZKbFlXTjBSV3hsYldWdWRGWmhiR2xrWVhSdmNpQTlJSHRjYmlBZ1kzSmxZWFJsUld4bGJXVnVkRG9nWm5WdVkzUnBiMjRnS0hSNWNHVXNJSEJ5YjNCekxDQmphR2xzWkhKbGJpa2dlMXh1SUNBZ0lIWmhjaUIyWVd4cFpGUjVjR1VnUFNCMGVYQmxiMllnZEhsd1pTQTlQVDBnSjNOMGNtbHVaeWNnZkh3Z2RIbHdaVzltSUhSNWNHVWdQVDA5SUNkbWRXNWpkR2x2YmljN1hHNGdJQ0FnTHk4Z1YyVWdkMkZ5YmlCcGJpQjBhR2x6SUdOaGMyVWdZblYwSUdSdmJpZDBJSFJvY205M0xpQlhaU0JsZUhCbFkzUWdkR2hsSUdWc1pXMWxiblFnWTNKbFlYUnBiMjRnZEc5Y2JpQWdJQ0F2THlCemRXTmpaV1ZrSUdGdVpDQjBhR1Z5WlNCM2FXeHNJR3hwYTJWc2VTQmlaU0JsY25KdmNuTWdhVzRnY21WdVpHVnlMbHh1SUNBZ0lHbG1JQ2doZG1Gc2FXUlVlWEJsS1NCN1hHNGdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlIUjVjR1VnSVQwOUlDZG1kVzVqZEdsdmJpY2dKaVlnZEhsd1pXOW1JSFI1Y0dVZ0lUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQnBibVp2SUQwZ0p5YzdYRzRnSUNBZ0lDQWdJR2xtSUNoMGVYQmxJRDA5UFNCMWJtUmxabWx1WldRZ2ZId2dkSGx3Wlc5bUlIUjVjR1VnUFQwOUlDZHZZbXBsWTNRbklDWW1JSFI1Y0dVZ0lUMDlJRzUxYkd3Z0ppWWdUMkpxWldOMExtdGxlWE1vZEhsd1pTa3ViR1Z1WjNSb0lEMDlQU0F3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdhVzVtYnlBclBTQW5JRmx2ZFNCc2FXdGxiSGtnWm05eVoyOTBJSFJ2SUdWNGNHOXlkQ0I1YjNWeUlHTnZiWEJ2Ym1WdWRDQm1jbTl0SUhSb1pTQm1hV3hsSUNjZ0t5QmNJbWwwSjNNZ1pHVm1hVzVsWkNCcGJpNWNJanRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lIWmhjaUJ6YjNWeVkyVkpibVp2SUQwZ1oyVjBVMjkxY21ObFNXNW1iMFZ5Y205eVFXUmtaVzVrZFcwb2NISnZjSE1wTzF4dUlDQWdJQ0FnSUNCcFppQW9jMjkxY21ObFNXNW1ieWtnZTF4dUlDQWdJQ0FnSUNBZ0lHbHVabThnS3owZ2MyOTFjbU5sU1c1bWJ6dGNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0JwYm1adklDczlJR2RsZEVSbFkyeGhjbUYwYVc5dVJYSnliM0pCWkdSbGJtUjFiU2dwTzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdhVzVtYnlBclBTQlNaV0ZqZEVOdmJYQnZibVZ1ZEZSeVpXVkliMjlyTG1kbGRFTjFjbkpsYm5SVGRHRmphMEZrWkdWdVpIVnRLQ2s3WEc1Y2JpQWdJQ0FnSUNBZ2RtRnlJR04xY25KbGJuUlRiM1Z5WTJVZ1BTQndjbTl3Y3lBaFBUMGdiblZzYkNBbUppQndjbTl3Y3lBaFBUMGdkVzVrWldacGJtVmtJQ1ltSUhCeWIzQnpMbDlmYzI5MWNtTmxJQ0U5UFNCMWJtUmxabWx1WldRZ1B5QndjbTl3Y3k1ZlgzTnZkWEpqWlNBNklHNTFiR3c3WEc0Z0lDQWdJQ0FnSUZKbFlXTjBRMjl0Y0c5dVpXNTBWSEpsWlVodmIyc3VjSFZ6YUU1dmJsTjBZVzVrWVhKa1YyRnlibWx1WjFOMFlXTnJLSFJ5ZFdVc0lHTjFjbkpsYm5SVGIzVnlZMlVwTzF4dUlDQWdJQ0FnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aG1ZV3h6WlN3Z0oxSmxZV04wTG1OeVpXRjBaVVZzWlcxbGJuUTZJSFI1Y0dVZ2FYTWdhVzUyWVd4cFpDQXRMU0JsZUhCbFkzUmxaQ0JoSUhOMGNtbHVaeUFvWm05eUlDY2dLeUFuWW5WcGJIUXRhVzRnWTI5dGNHOXVaVzUwY3lrZ2IzSWdZU0JqYkdGemN5OW1kVzVqZEdsdmJpQW9abTl5SUdOdmJYQnZjMmwwWlNBbklDc2dKMk52YlhCdmJtVnVkSE1wSUdKMWRDQm5iM1E2SUNWekxpVnpKeXdnZEhsd1pTQTlQU0J1ZFd4c0lEOGdkSGx3WlNBNklIUjVjR1Z2WmlCMGVYQmxMQ0JwYm1adktTQTZJSFp2YVdRZ01EdGNiaUFnSUNBZ0lDQWdVbVZoWTNSRGIyMXdiMjVsYm5SVWNtVmxTRzl2YXk1d2IzQk9iMjVUZEdGdVpHRnlaRmRoY201cGJtZFRkR0ZqYXlncE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUhaaGNpQmxiR1Z0Wlc1MElEMGdVbVZoWTNSRmJHVnRaVzUwTG1OeVpXRjBaVVZzWlcxbGJuUXVZWEJ3Ykhrb2RHaHBjeXdnWVhKbmRXMWxiblJ6S1R0Y2JseHVJQ0FnSUM4dklGUm9aU0J5WlhOMWJIUWdZMkZ1SUdKbElHNTFiR3hwYzJnZ2FXWWdZU0J0YjJOcklHOXlJR0VnWTNWemRHOXRJR1oxYm1OMGFXOXVJR2x6SUhWelpXUXVYRzRnSUNBZ0x5OGdWRTlFVHpvZ1JISnZjQ0IwYUdseklIZG9aVzRnZEdobGMyVWdZWEpsSUc1dklHeHZibWRsY2lCaGJHeHZkMlZrSUdGeklIUm9aU0IwZVhCbElHRnlaM1Z0Wlc1MExseHVJQ0FnSUdsbUlDaGxiR1Z0Wlc1MElEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCbGJHVnRaVzUwTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUZOcmFYQWdhMlY1SUhkaGNtNXBibWNnYVdZZ2RHaGxJSFI1Y0dVZ2FYTnVKM1FnZG1Gc2FXUWdjMmx1WTJVZ2IzVnlJR3RsZVNCMllXeHBaR0YwYVc5dUlHeHZaMmxqWEc0Z0lDQWdMeThnWkc5bGMyNG5kQ0JsZUhCbFkzUWdZU0J1YjI0dGMzUnlhVzVuTDJaMWJtTjBhVzl1SUhSNWNHVWdZVzVrSUdOaGJpQjBhSEp2ZHlCamIyNW1kWE5wYm1jZ1pYSnliM0p6TGx4dUlDQWdJQzh2SUZkbElHUnZiaWQwSUhkaGJuUWdaWGhqWlhCMGFXOXVJR0psYUdGMmFXOXlJSFJ2SUdScFptWmxjaUJpWlhSM1pXVnVJR1JsZGlCaGJtUWdjSEp2WkM1Y2JpQWdJQ0F2THlBb1VtVnVaR1Z5YVc1bklIZHBiR3dnZEdoeWIzY2dkMmwwYUNCaElHaGxiSEJtZFd3Z2JXVnpjMkZuWlNCaGJtUWdZWE1nYzI5dmJpQmhjeUIwYUdVZ2RIbHdaU0JwYzF4dUlDQWdJQzh2SUdacGVHVmtMQ0IwYUdVZ2EyVjVJSGRoY201cGJtZHpJSGRwYkd3Z1lYQndaV0Z5TGlsY2JpQWdJQ0JwWmlBb2RtRnNhV1JVZVhCbEtTQjdYRzRnSUNBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTWpzZ2FTQThJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ0lDQjJZV3hwWkdGMFpVTm9hV3hrUzJWNWN5aGhjbWQxYldWdWRITmJhVjBzSUhSNWNHVXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lIWmhiR2xrWVhSbFVISnZjRlI1Y0dWektHVnNaVzFsYm5RcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUdWc1pXMWxiblE3WEc0Z0lIMHNYRzVjYmlBZ1kzSmxZWFJsUm1GamRHOXllVG9nWm5WdVkzUnBiMjRnS0hSNWNHVXBJSHRjYmlBZ0lDQjJZWElnZG1Gc2FXUmhkR1ZrUm1GamRHOXllU0E5SUZKbFlXTjBSV3hsYldWdWRGWmhiR2xrWVhSdmNpNWpjbVZoZEdWRmJHVnRaVzUwTG1KcGJtUW9iblZzYkN3Z2RIbHdaU2s3WEc0Z0lDQWdMeThnVEdWbllXTjVJR2h2YjJzZ1ZFOUVUem9nVjJGeWJpQnBaaUIwYUdseklHbHpJR0ZqWTJWemMyVmtYRzRnSUNBZ2RtRnNhV1JoZEdWa1JtRmpkRzl5ZVM1MGVYQmxJRDBnZEhsd1pUdGNibHh1SUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNCcFppQW9ZMkZ1UkdWbWFXNWxVSEp2Y0dWeWRIa3BJSHRjYmlBZ0lDQWdJQ0FnVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtIWmhiR2xrWVhSbFpFWmhZM1J2Y25rc0lDZDBlWEJsSnl3Z2UxeHVJQ0FnSUNBZ0lDQWdJR1Z1ZFcxbGNtRmliR1U2SUdaaGJITmxMRnh1SUNBZ0lDQWdJQ0FnSUdkbGREb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiRzkzVUhKcGIzSnBkSGxYWVhKdWFXNW5LR1poYkhObExDQW5SbUZqZEc5eWVTNTBlWEJsSUdseklHUmxjSEpsWTJGMFpXUXVJRUZqWTJWemN5QjBhR1VnWTJ4aGMzTWdaR2x5WldOMGJIa2dKeUFySUNkaVpXWnZjbVVnY0dGemMybHVaeUJwZENCMGJ5QmpjbVZoZEdWR1lXTjBiM0o1TGljcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtIUm9hWE1zSUNkMGVYQmxKeXdnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVd4MVpUb2dkSGx3WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RIbHdaVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCMllXeHBaR0YwWldSR1lXTjBiM0o1TzF4dUlDQjlMRnh1WEc0Z0lHTnNiMjVsUld4bGJXVnVkRG9nWm5WdVkzUnBiMjRnS0dWc1pXMWxiblFzSUhCeWIzQnpMQ0JqYUdsc1pISmxiaWtnZTF4dUlDQWdJSFpoY2lCdVpYZEZiR1Z0Wlc1MElEMGdVbVZoWTNSRmJHVnRaVzUwTG1Oc2IyNWxSV3hsYldWdWRDNWhjSEJzZVNoMGFHbHpMQ0JoY21kMWJXVnVkSE1wTzF4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBeU95QnBJRHdnWVhKbmRXMWxiblJ6TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQjJZV3hwWkdGMFpVTm9hV3hrUzJWNWN5aGhjbWQxYldWdWRITmJhVjBzSUc1bGQwVnNaVzFsYm5RdWRIbHdaU2s3WEc0Z0lDQWdmVnh1SUNBZ0lIWmhiR2xrWVhSbFVISnZjRlI1Y0dWektHNWxkMFZzWlcxbGJuUXBPMXh1SUNBZ0lISmxkSFZ5YmlCdVpYZEZiR1Z0Wlc1ME8xeHVJQ0I5WEc1OU8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRkpsWVdOMFJXeGxiV1Z1ZEZaaGJHbGtZWFJ2Y2p0Y2JseHVYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dklGZEZRbEJCUTBzZ1JrOVBWRVZTWEc0dkx5QXVMMzR2Y21WaFkzUXZiR2xpTDFKbFlXTjBSV3hsYldWdWRGWmhiR2xrWVhSdmNpNXFjMXh1THk4Z2JXOWtkV3hsSUdsa0lEMGdNVFpjYmk4dklHMXZaSFZzWlNCamFIVnVhM01nUFNBd0lsMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVNJc0luTnZkWEpqWlZKdmIzUWlPaUlpZlE9PVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8xNlxcblwiKTtcblxuLyoqKi8gfSksXG4vKiAxNyAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vcmVhY3QvbGliL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihwcm9jZXNzKSB7LyoqXFxuICogQ29weXJpZ2h0IChjKSAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXFxuICpcXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuICpcXG4gKi9cXG5cXG5cXG5cXG52YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGZianMvbGliL3dhcm5pbmcgKi8gMik7XFxuXFxuZnVuY3Rpb24gd2Fybk5vb3AocHVibGljSW5zdGFuY2UsIGNhbGxlck5hbWUpIHtcXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XFxuICAgIHZhciBjb25zdHJ1Y3RvciA9IHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yO1xcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50ZWQgb3IgbW91bnRpbmcgY29tcG9uZW50LiAnICsgJ1RoaXMgdXN1YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb24gYW4gdW5tb3VudGVkIGNvbXBvbmVudC4gJyArICdUaGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhlICVzIGNvbXBvbmVudC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBjb25zdHJ1Y3RvciAmJiAoY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3IubmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQgMDtcXG4gIH1cXG59XFxuXFxuLyoqXFxuICogVGhpcyBpcyB0aGUgYWJzdHJhY3QgQVBJIGZvciBhbiB1cGRhdGUgcXVldWUuXFxuICovXFxudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0ge1xcbiAgLyoqXFxuICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuXFxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRlc3QuXFxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cXG4gICAqIEBwcm90ZWN0ZWRcXG4gICAqIEBmaW5hbFxcbiAgICovXFxuICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xcbiAgICByZXR1cm4gZmFsc2U7XFxuICB9LFxcblxcbiAgLyoqXFxuICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUgcGVuZGluZyB1cGRhdGVzXFxuICAgKiBoYXZlIHByb2Nlc3NlZC5cXG4gICAqXFxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0byB1c2UgYXMgYHRoaXNgIGNvbnRleHQuXFxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXFxuICAgKiBAaW50ZXJuYWxcXG4gICAqL1xcbiAgZW5xdWV1ZUNhbGxiYWNrOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNhbGxiYWNrKSB7fSxcXG5cXG4gIC8qKlxcbiAgICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxcbiAgICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXFxuICAgKlxcbiAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxcbiAgICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXFxuICAgKlxcbiAgICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxcbiAgICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cXG4gICAqXFxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cXG4gICAqIEBpbnRlcm5hbFxcbiAgICovXFxuICBlbnF1ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xcbiAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7XFxuICB9LFxcblxcbiAgLyoqXFxuICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuXFxuICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXFxuICAgKlxcbiAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cXG4gICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXFxuICAgKlxcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXFxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcGxldGVTdGF0ZSBOZXh0IHN0YXRlLlxcbiAgICogQGludGVybmFsXFxuICAgKi9cXG4gIGVucXVldWVSZXBsYWNlU3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSkge1xcbiAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpO1xcbiAgfSxcXG5cXG4gIC8qKlxcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzXFxuICAgKiBpbnRlcm5hbC4gVGhpcyBwcm92aWRlcyBhIG1lcmdpbmcgc3RyYXRlZ3kgdGhhdCBpcyBub3QgYXZhaWxhYmxlIHRvIGRlZXBcXG4gICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxcbiAgICogZHVyaW5nIHRoZSBtZXJnZS5cXG4gICAqXFxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0YXRlLlxcbiAgICogQGludGVybmFsXFxuICAgKi9cXG4gIGVucXVldWVTZXRTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpIHtcXG4gICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpO1xcbiAgfVxcbn07XFxuXFxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcXG4vKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi8uLi8uLi9wcm9jZXNzL2Jyb3dzZXIuanMgKi8gMCkpKS8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaU1UY3Vhbk1pTENKemIzVnlZMlZ6SWpwYkluZGxZbkJoWTJzNkx5OHZMaTkrTDNKbFlXTjBMMnhwWWk5U1pXRmpkRTV2YjNCVmNHUmhkR1ZSZFdWMVpTNXFjejloWkRCaUlsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJQ2hqS1NBeU1ERTFMWEJ5WlhObGJuUXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdUVWxVSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1WEc0Z0tseHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJSGRoY201cGJtY2dQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTkzWVhKdWFXNW5KeWs3WEc1Y2JtWjFibU4wYVc5dUlIZGhjbTVPYjI5d0tIQjFZbXhwWTBsdWMzUmhibU5sTENCallXeHNaWEpPWVcxbEtTQjdYRzRnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdkbUZ5SUdOdmJuTjBjblZqZEc5eUlEMGdjSFZpYkdsalNXNXpkR0Z1WTJVdVkyOXVjM1J5ZFdOMGIzSTdYRzRnSUNBZ2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5QS9JSGRoY201cGJtY29abUZzYzJVc0lDY2xjeWd1TGk0cE9pQkRZVzRnYjI1c2VTQjFjR1JoZEdVZ1lTQnRiM1Z1ZEdWa0lHOXlJRzF2ZFc1MGFXNW5JR052YlhCdmJtVnVkQzRnSnlBcklDZFVhR2x6SUhWemRXRnNiSGtnYldWaGJuTWdlVzkxSUdOaGJHeGxaQ0FsY3lncElHOXVJR0Z1SUhWdWJXOTFiblJsWkNCamIyMXdiMjVsYm5RdUlDY2dLeUFuVkdocGN5QnBjeUJoSUc1dkxXOXdMaUJRYkdWaGMyVWdZMmhsWTJzZ2RHaGxJR052WkdVZ1ptOXlJSFJvWlNBbGN5QmpiMjF3YjI1bGJuUXVKeXdnWTJGc2JHVnlUbUZ0WlN3Z1kyRnNiR1Z5VG1GdFpTd2dZMjl1YzNSeWRXTjBiM0lnSmlZZ0tHTnZibk4wY25WamRHOXlMbVJwYzNCc1lYbE9ZVzFsSUh4OElHTnZibk4wY25WamRHOXlMbTVoYldVcElIeDhJQ2RTWldGamRFTnNZWE56SnlrZ09pQjJiMmxrSURBN1hHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQlVhR2x6SUdseklIUm9aU0JoWW5OMGNtRmpkQ0JCVUVrZ1ptOXlJR0Z1SUhWd1pHRjBaU0J4ZFdWMVpTNWNiaUFxTDF4dWRtRnlJRkpsWVdOMFRtOXZjRlZ3WkdGMFpWRjFaWFZsSUQwZ2UxeHVJQ0F2S2lwY2JpQWdJQ29nUTJobFkydHpJSGRvWlhSb1pYSWdiM0lnYm05MElIUm9hWE1nWTI5dGNHOXphWFJsSUdOdmJYQnZibVZ1ZENCcGN5QnRiM1Z1ZEdWa0xseHVJQ0FnS2lCQWNHRnlZVzBnZTFKbFlXTjBRMnhoYzNOOUlIQjFZbXhwWTBsdWMzUmhibU5sSUZSb1pTQnBibk4wWVc1alpTQjNaU0IzWVc1MElIUnZJSFJsYzNRdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTJKdmIyeGxZVzU5SUZSeWRXVWdhV1lnYlc5MWJuUmxaQ3dnWm1Gc2MyVWdiM1JvWlhKM2FYTmxMbHh1SUNBZ0tpQkFjSEp2ZEdWamRHVmtYRzRnSUNBcUlFQm1hVzVoYkZ4dUlDQWdLaTljYmlBZ2FYTk5iM1Z1ZEdWa09pQm1kVzVqZEdsdmJpQW9jSFZpYkdsalNXNXpkR0Z1WTJVcElIdGNiaUFnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVWdWNYVmxkV1VnWVNCallXeHNZbUZqYXlCMGFHRjBJSGRwYkd3Z1ltVWdaWGhsWTNWMFpXUWdZV1owWlhJZ1lXeHNJSFJvWlNCd1pXNWthVzVuSUhWd1pHRjBaWE5jYmlBZ0lDb2dhR0YyWlNCd2NtOWpaWE56WldRdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdVbVZoWTNSRGJHRnpjMzBnY0hWaWJHbGpTVzV6ZEdGdVkyVWdWR2hsSUdsdWMzUmhibU5sSUhSdklIVnpaU0JoY3lCZ2RHaHBjMkFnWTI5dWRHVjRkQzVjYmlBZ0lDb2dRSEJoY21GdElIcy9ablZ1WTNScGIyNTlJR05oYkd4aVlXTnJJRU5oYkd4bFpDQmhablJsY2lCemRHRjBaU0JwY3lCMWNHUmhkR1ZrTGx4dUlDQWdLaUJBYVc1MFpYSnVZV3hjYmlBZ0lDb3ZYRzRnSUdWdWNYVmxkV1ZEWVd4c1ltRmphem9nWm5WdVkzUnBiMjRnS0hCMVlteHBZMGx1YzNSaGJtTmxMQ0JqWVd4c1ltRmpheWtnZTMwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVadmNtTmxjeUJoYmlCMWNHUmhkR1V1SUZSb2FYTWdjMmh2ZFd4a0lHOXViSGtnWW1VZ2FXNTJiMnRsWkNCM2FHVnVJR2wwSUdseklHdHViM2R1SUhkcGRHaGNiaUFnSUNvZ1kyVnlkR0ZwYm5SNUlIUm9ZWFFnZDJVZ1lYSmxJQ29xYm05MEtpb2dhVzRnWVNCRVQwMGdkSEpoYm5OaFkzUnBiMjR1WEc0Z0lDQXFYRzRnSUNBcUlGbHZkU0J0WVhrZ2QyRnVkQ0IwYnlCallXeHNJSFJvYVhNZ2QyaGxiaUI1YjNVZ2EyNXZkeUIwYUdGMElITnZiV1VnWkdWbGNHVnlJR0Z6Y0dWamRDQnZaaUIwYUdWY2JpQWdJQ29nWTI5dGNHOXVaVzUwSjNNZ2MzUmhkR1VnYUdGeklHTm9ZVzVuWldRZ1luVjBJR0J6WlhSVGRHRjBaV0FnZDJGeklHNXZkQ0JqWVd4c1pXUXVYRzRnSUNBcVhHNGdJQ0FxSUZSb2FYTWdkMmxzYkNCdWIzUWdhVzUyYjJ0bElHQnphRzkxYkdSRGIyMXdiMjVsYm5SVmNHUmhkR1ZnTENCaWRYUWdhWFFnZDJsc2JDQnBiblp2YTJWY2JpQWdJQ29nWUdOdmJYQnZibVZ1ZEZkcGJHeFZjR1JoZEdWZ0lHRnVaQ0JnWTI5dGNHOXVaVzUwUkdsa1ZYQmtZWFJsWUM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEVOc1lYTnpmU0J3ZFdKc2FXTkpibk4wWVc1alpTQlVhR1VnYVc1emRHRnVZMlVnZEdoaGRDQnphRzkxYkdRZ2NtVnlaVzVrWlhJdVhHNGdJQ0FxSUVCcGJuUmxjbTVoYkZ4dUlDQWdLaTljYmlBZ1pXNXhkV1YxWlVadmNtTmxWWEJrWVhSbE9pQm1kVzVqZEdsdmJpQW9jSFZpYkdsalNXNXpkR0Z1WTJVcElIdGNiaUFnSUNCM1lYSnVUbTl2Y0Nod2RXSnNhV05KYm5OMFlXNWpaU3dnSjJadmNtTmxWWEJrWVhSbEp5azdYRzRnSUgwc1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGNHeGhZMlZ6SUdGc2JDQnZaaUIwYUdVZ2MzUmhkR1V1SUVGc2QyRjVjeUIxYzJVZ2RHaHBjeUJ2Y2lCZ2MyVjBVM1JoZEdWZ0lIUnZJRzExZEdGMFpTQnpkR0YwWlM1Y2JpQWdJQ29nV1c5MUlITm9iM1ZzWkNCMGNtVmhkQ0JnZEdocGN5NXpkR0YwWldBZ1lYTWdhVzF0ZFhSaFlteGxMbHh1SUNBZ0tseHVJQ0FnS2lCVWFHVnlaU0JwY3lCdWJ5Qm5kV0Z5WVc1MFpXVWdkR2hoZENCZ2RHaHBjeTV6ZEdGMFpXQWdkMmxzYkNCaVpTQnBiVzFsWkdsaGRHVnNlU0IxY0dSaGRHVmtMQ0J6YjF4dUlDQWdLaUJoWTJObGMzTnBibWNnWUhSb2FYTXVjM1JoZEdWZ0lHRm1kR1Z5SUdOaGJHeHBibWNnZEdocGN5QnRaWFJvYjJRZ2JXRjVJSEpsZEhWeWJpQjBhR1VnYjJ4a0lIWmhiSFZsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUTJ4aGMzTjlJSEIxWW14cFkwbHVjM1JoYm1ObElGUm9aU0JwYm5OMFlXNWpaU0IwYUdGMElITm9iM1ZzWkNCeVpYSmxibVJsY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJR052YlhCc1pYUmxVM1JoZEdVZ1RtVjRkQ0J6ZEdGMFpTNWNiaUFnSUNvZ1FHbHVkR1Z5Ym1Gc1hHNGdJQ0FxTDF4dUlDQmxibkYxWlhWbFVtVndiR0ZqWlZOMFlYUmxPaUJtZFc1amRHbHZiaUFvY0hWaWJHbGpTVzV6ZEdGdVkyVXNJR052YlhCc1pYUmxVM1JoZEdVcElIdGNiaUFnSUNCM1lYSnVUbTl2Y0Nod2RXSnNhV05KYm5OMFlXNWpaU3dnSjNKbGNHeGhZMlZUZEdGMFpTY3BPMXh1SUNCOUxGeHVYRzRnSUM4cUtseHVJQ0FnS2lCVFpYUnpJR0VnYzNWaWMyVjBJRzltSUhSb1pTQnpkR0YwWlM0Z1ZHaHBjeUJ2Ym14NUlHVjRhWE4wY3lCaVpXTmhkWE5sSUY5d1pXNWthVzVuVTNSaGRHVWdhWE5jYmlBZ0lDb2dhVzUwWlhKdVlXd3VJRlJvYVhNZ2NISnZkbWxrWlhNZ1lTQnRaWEpuYVc1bklITjBjbUYwWldkNUlIUm9ZWFFnYVhNZ2JtOTBJR0YyWVdsc1lXSnNaU0IwYnlCa1pXVndYRzRnSUNBcUlIQnliM0JsY25ScFpYTWdkMmhwWTJnZ2FYTWdZMjl1Wm5WemFXNW5MaUJVVDBSUE9pQkZlSEJ2YzJVZ2NHVnVaR2x1WjFOMFlYUmxJRzl5SUdSdmJpZDBJSFZ6WlNCcGRGeHVJQ0FnS2lCa2RYSnBibWNnZEdobElHMWxjbWRsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wUTJ4aGMzTjlJSEIxWW14cFkwbHVjM1JoYm1ObElGUm9aU0JwYm5OMFlXNWpaU0IwYUdGMElITm9iM1ZzWkNCeVpYSmxibVJsY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJSEJoY25ScFlXeFRkR0YwWlNCT1pYaDBJSEJoY25ScFlXd2djM1JoZEdVZ2RHOGdZbVVnYldWeVoyVmtJSGRwZEdnZ2MzUmhkR1V1WEc0Z0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0tpOWNiaUFnWlc1eGRXVjFaVk5sZEZOMFlYUmxPaUJtZFc1amRHbHZiaUFvY0hWaWJHbGpTVzV6ZEdGdVkyVXNJSEJoY25ScFlXeFRkR0YwWlNrZ2UxeHVJQ0FnSUhkaGNtNU9iMjl3S0hCMVlteHBZMGx1YzNSaGJtTmxMQ0FuYzJWMFUzUmhkR1VuS1R0Y2JpQWdmVnh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQlNaV0ZqZEU1dmIzQlZjR1JoZEdWUmRXVjFaVHRjYmx4dVhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNiaTh2SUZkRlFsQkJRMHNnUms5UFZFVlNYRzR2THlBdUwzNHZjbVZoWTNRdmJHbGlMMUpsWVdOMFRtOXZjRlZ3WkdGMFpWRjFaWFZsTG1welhHNHZMeUJ0YjJSMWJHVWdhV1FnUFNBeE4xeHVMeThnYlc5a2RXeGxJR05vZFc1cmN5QTlJREFpWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRU0lzSW5OdmRYSmpaVkp2YjNRaU9pSWlmUT09XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzE3XFxuXCIpO1xuXG4vKioqLyB9KSxcbi8qIDE4ICovXG4vKiBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyogYWxsIGV4cG9ydHMgdXNlZCAqL1xuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9+L3JlYWN0L2xpYi9nZXRJdGVyYXRvckZuLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5ldmFsKFwiLyoqXFxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXFxuICpcXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuICpcXG4gKiBcXG4gKi9cXG5cXG5cXG5cXG4vKiBnbG9iYWwgU3ltYm9sICovXFxuXFxudmFyIElURVJBVE9SX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLml0ZXJhdG9yO1xcbnZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLlxcblxcbi8qKlxcbiAqIFJldHVybnMgdGhlIGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlvbiBjb250YWluZWQgb24gdGhlIGl0ZXJhYmxlIG9iamVjdC5cXG4gKlxcbiAqIEJlIHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJsZSBhcyBjb250ZXh0OlxcbiAqXFxuICogICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihteUl0ZXJhYmxlKTtcXG4gKiAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcXG4gKiAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobXlJdGVyYWJsZSk7XFxuICogICAgICAgLi4uXFxuICogICAgIH1cXG4gKlxcbiAqIEBwYXJhbSB7P29iamVjdH0gbWF5YmVJdGVyYWJsZVxcbiAqIEByZXR1cm4gez9mdW5jdGlvbn1cXG4gKi9cXG5mdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcXG4gIHZhciBpdGVyYXRvckZuID0gbWF5YmVJdGVyYWJsZSAmJiAoSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXSk7XFxuICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicpIHtcXG4gICAgcmV0dXJuIGl0ZXJhdG9yRm47XFxuICB9XFxufVxcblxcbm1vZHVsZS5leHBvcnRzID0gZ2V0SXRlcmF0b3JGbjsvLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lNVGd1YW5NaUxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5K0wzSmxZV04wTDJ4cFlpOW5aWFJKZEdWeVlYUnZja1p1TG1welB6RTFNRGNpWFN3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ0tHTXBJREl3TVRNdGNISmxjMlZ1ZEN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCTlNWUWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNWNiaUFxWEc0Z0tpQmNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JpOHFJR2RzYjJKaGJDQlRlVzFpYjJ3Z0tpOWNibHh1ZG1GeUlFbFVSVkpCVkU5U1gxTlpUVUpQVENBOUlIUjVjR1Z2WmlCVGVXMWliMndnUFQwOUlDZG1kVzVqZEdsdmJpY2dKaVlnVTNsdFltOXNMbWwwWlhKaGRHOXlPMXh1ZG1GeUlFWkJWVmhmU1ZSRlVrRlVUMUpmVTFsTlFrOU1JRDBnSjBCQWFYUmxjbUYwYjNJbk95QXZMeUJDWldadmNtVWdVM2x0WW05c0lITndaV011WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCMGFHVWdhWFJsY21GMGIzSWdiV1YwYUc5a0lHWjFibU4wYVc5dUlHTnZiblJoYVc1bFpDQnZiaUIwYUdVZ2FYUmxjbUZpYkdVZ2IySnFaV04wTGx4dUlDcGNiaUFxSUVKbElITjFjbVVnZEc4Z2FXNTJiMnRsSUhSb1pTQm1kVzVqZEdsdmJpQjNhWFJvSUhSb1pTQnBkR1Z5WVdKc1pTQmhjeUJqYjI1MFpYaDBPbHh1SUNwY2JpQXFJQ0FnSUNCMllYSWdhWFJsY21GMGIzSkdiaUE5SUdkbGRFbDBaWEpoZEc5eVJtNG9iWGxKZEdWeVlXSnNaU2s3WEc0Z0tpQWdJQ0FnYVdZZ0tHbDBaWEpoZEc5eVJtNHBJSHRjYmlBcUlDQWdJQ0FnSUhaaGNpQnBkR1Z5WVhSdmNpQTlJR2wwWlhKaGRHOXlSbTR1WTJGc2JDaHRlVWwwWlhKaFlteGxLVHRjYmlBcUlDQWdJQ0FnSUM0dUxseHVJQ29nSUNBZ0lIMWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2V6OXZZbXBsWTNSOUlHMWhlV0psU1hSbGNtRmliR1ZjYmlBcUlFQnlaWFIxY200Z2V6OW1kVzVqZEdsdmJuMWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1oyVjBTWFJsY21GMGIzSkdiaWh0WVhsaVpVbDBaWEpoWW14bEtTQjdYRzRnSUhaaGNpQnBkR1Z5WVhSdmNrWnVJRDBnYldGNVltVkpkR1Z5WVdKc1pTQW1KaUFvU1ZSRlVrRlVUMUpmVTFsTlFrOU1JQ1ltSUcxaGVXSmxTWFJsY21GaWJHVmJTVlJGVWtGVVQxSmZVMWxOUWs5TVhTQjhmQ0J0WVhsaVpVbDBaWEpoWW14bFcwWkJWVmhmU1ZSRlVrRlVUMUpmVTFsTlFrOU1YU2s3WEc0Z0lHbG1JQ2gwZVhCbGIyWWdhWFJsY21GMGIzSkdiaUE5UFQwZ0oyWjFibU4wYVc5dUp5a2dlMXh1SUNBZ0lISmxkSFZ5YmlCcGRHVnlZWFJ2Y2tadU8xeHVJQ0I5WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdaMlYwU1hSbGNtRjBiM0pHYmp0Y2JseHVYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dklGZEZRbEJCUTBzZ1JrOVBWRVZTWEc0dkx5QXVMMzR2Y21WaFkzUXZiR2xpTDJkbGRFbDBaWEpoZEc5eVJtNHVhbk5jYmk4dklHMXZaSFZzWlNCcFpDQTlJREU0WEc0dkx5QnRiMlIxYkdVZ1kyaDFibXR6SUQwZ01DSmRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0luTnZkWEpqWlZKdmIzUWlPaUlpZlE9PVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8xOFxcblwiKTtcblxuLyoqKi8gfSksXG4vKiAxOSAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9+L3Byb3AtdHlwZXMvaW5kZXguanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbmV2YWwoXCIvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJvY2Vzcykgey8qKlxcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxcbiAqXFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbiAqL1xcblxcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XFxuICB2YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiZcXG4gICAgU3ltYm9sLmZvciAmJlxcbiAgICBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykpIHx8XFxuICAgIDB4ZWFjNztcXG5cXG4gIHZhciBpc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uKG9iamVjdCkge1xcbiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiZcXG4gICAgICBvYmplY3QgIT09IG51bGwgJiZcXG4gICAgICBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcXG4gIH07XFxuXFxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcXG4gIG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycyAqLyAxMykoaXNWYWxpZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xcbn0gZWxzZSB7XFxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxcbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxcbiAgbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcyAqLyAyNSkoKTtcXG59XFxuXFxuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vLi4vcHJvY2Vzcy9icm93c2VyLmpzICovIDApKSkvLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lNVGt1YW5NaUxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5K0wzQnliM0F0ZEhsd1pYTXZhVzVrWlhndWFuTS9NVE14TnlKZExDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFTnZjSGx5YVdkb2RDQW9ZeWtnTWpBeE15MXdjbVZ6Wlc1MExDQkdZV05sWW05dmF5d2dTVzVqTGx4dUlDcGNiaUFxSUZSb2FYTWdjMjkxY21ObElHTnZaR1VnYVhNZ2JHbGpaVzV6WldRZ2RXNWtaWElnZEdobElFMUpWQ0JzYVdObGJuTmxJR1p2ZFc1a0lHbHVJSFJvWlZ4dUlDb2dURWxEUlU1VFJTQm1hV3hsSUdsdUlIUm9aU0J5YjI5MElHUnBjbVZqZEc5eWVTQnZaaUIwYUdseklITnZkWEpqWlNCMGNtVmxMbHh1SUNvdlhHNWNibWxtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUhaaGNpQlNSVUZEVkY5RlRFVk5SVTVVWDFSWlVFVWdQU0FvZEhsd1pXOW1JRk41YldKdmJDQTlQVDBnSjJaMWJtTjBhVzl1SnlBbUpseHVJQ0FnSUZONWJXSnZiQzVtYjNJZ0ppWmNiaUFnSUNCVGVXMWliMnd1Wm05eUtDZHlaV0ZqZEM1bGJHVnRaVzUwSnlrcElIeDhYRzRnSUNBZ01IaGxZV00zTzF4dVhHNGdJSFpoY2lCcGMxWmhiR2xrUld4bGJXVnVkQ0E5SUdaMWJtTjBhVzl1S0c5aWFtVmpkQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBlWEJsYjJZZ2IySnFaV04wSUQwOVBTQW5iMkpxWldOMEp5QW1KbHh1SUNBZ0lDQWdiMkpxWldOMElDRTlQU0J1ZFd4c0lDWW1YRzRnSUNBZ0lDQnZZbXBsWTNRdUpDUjBlWEJsYjJZZ1BUMDlJRkpGUVVOVVgwVk1SVTFGVGxSZlZGbFFSVHRjYmlBZ2ZUdGNibHh1SUNBdkx5QkNlU0JsZUhCc2FXTnBkR3g1SUhWemFXNW5JR0J3Y205d0xYUjVjR1Z6WUNCNWIzVWdZWEpsSUc5d2RHbHVaeUJwYm5SdklHNWxkeUJrWlhabGJHOXdiV1Z1ZENCaVpXaGhkbWx2Y2k1Y2JpQWdMeThnYUhSMGNEb3ZMMlppTG0xbEwzQnliM0F0ZEhsd1pYTXRhVzR0Y0hKdlpGeHVJQ0IyWVhJZ2RHaHliM2RQYmtScGNtVmpkRUZqWTJWemN5QTlJSFJ5ZFdVN1hHNGdJRzF2WkhWc1pTNWxlSEJ2Y25SeklEMGdjbVZ4ZFdseVpTZ25MaTltWVdOMGIzSjVWMmwwYUZSNWNHVkRhR1ZqYTJWeWN5Y3BLR2x6Vm1Gc2FXUkZiR1Z0Wlc1MExDQjBhSEp2ZDA5dVJHbHlaV04wUVdOalpYTnpLVHRjYm4wZ1pXeHpaU0I3WEc0Z0lDOHZJRUo1SUdWNGNHeHBZMmwwYkhrZ2RYTnBibWNnWUhCeWIzQXRkSGx3WlhOZ0lIbHZkU0JoY21VZ2IzQjBhVzVuSUdsdWRHOGdibVYzSUhCeWIyUjFZM1JwYjI0Z1ltVm9ZWFpwYjNJdVhHNGdJQzh2SUdoMGRIQTZMeTltWWk1dFpTOXdjbTl3TFhSNWNHVnpMV2x1TFhCeWIyUmNiaUFnYlc5a2RXeGxMbVY0Y0c5eWRITWdQU0J5WlhGMWFYSmxLQ2N1TDJaaFkzUnZjbmxYYVhSb1ZHaHliM2RwYm1kVGFHbHRjeWNwS0NrN1hHNTlYRzVjYmx4dVhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNiaTh2SUZkRlFsQkJRMHNnUms5UFZFVlNYRzR2THlBdUwzNHZjSEp2Y0MxMGVYQmxjeTlwYm1SbGVDNXFjMXh1THk4Z2JXOWtkV3hsSUdsa0lEMGdNVGxjYmk4dklHMXZaSFZzWlNCamFIVnVhM01nUFNBd0lsMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRU0lzSW5OdmRYSmpaVkp2YjNRaU9pSWlmUT09XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzE5XFxuXCIpO1xuXG4vKioqLyB9KSxcbi8qIDIwICovXG4vKiBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyogYWxsIGV4cG9ydHMgdXNlZCAqL1xuLyohKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9+L3JlYWN0L3JlYWN0LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5ldmFsKFwiXFxuXFxubW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2xpYi9SZWFjdCAqLyAyOCk7XFxuLy8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTWpBdWFuTWlMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOStMM0psWVdOMEwzSmxZV04wTG1welB6TmtOamNpWFN3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUhKbGNYVnBjbVVvSnk0dmJHbGlMMUpsWVdOMEp5azdYRzVjYmx4dVhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNiaTh2SUZkRlFsQkJRMHNnUms5UFZFVlNYRzR2THlBdUwzNHZjbVZoWTNRdmNtVmhZM1F1YW5OY2JpOHZJRzF2WkhWc1pTQnBaQ0E5SURJd1hHNHZMeUJ0YjJSMWJHVWdZMmgxYm10eklEMGdNQ0pkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3UVVGRFFUdEJRVU5CT3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpZlE9PVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8yMFxcblwiKTtcblxuLyoqKi8gfSksXG4vKiAyMSAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9zcmMvaW5kZXguanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIlxcblxcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcXFwiX19lc01vZHVsZVxcXCIsIHtcXG4gICAgdmFsdWU6IHRydWVcXG59KTtcXG5cXG52YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFxcXCJ2YWx1ZVxcXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcXG5cXG52YXIgX3JlYWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgcmVhY3QgKi8gMjApO1xcblxcbnZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xcblxcbnZhciBfcHJvcFR5cGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgcHJvcC10eXBlcyAqLyAxOSk7XFxuXFxudmFyIF9wcm9wVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcHJvcFR5cGVzKTtcXG5cXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxcblxcbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcXFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXFxcIik7IH0gfVxcblxcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcXFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXFxcIik7IH0gcmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09PSBcXFwib2JqZWN0XFxcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXFxcImZ1bmN0aW9uXFxcIikgPyBjYWxsIDogc2VsZjsgfVxcblxcbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFxcXCJmdW5jdGlvblxcXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFxcXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFxcXCIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XFxuXFxudmFyIFJlYWN0VXRpbHNCdXR0b24gPSBmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xcbiAgICBfaW5oZXJpdHMoUmVhY3RVdGlsc0J1dHRvbiwgX1JlYWN0JENvbXBvbmVudCk7XFxuXFxuICAgIGZ1bmN0aW9uIFJlYWN0VXRpbHNCdXR0b24oKSB7XFxuICAgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVhY3RVdGlsc0J1dHRvbik7XFxuXFxuICAgICAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgKFJlYWN0VXRpbHNCdXR0b24uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihSZWFjdFV0aWxzQnV0dG9uKSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XFxuICAgIH1cXG5cXG4gICAgX2NyZWF0ZUNsYXNzKFJlYWN0VXRpbHNCdXR0b24sIFt7XFxuICAgICAgICBrZXk6ICdyZW5kZXInLFxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcXG4gICAgICAgICAgICB2YXIgX3Byb3BzID0gdGhpcy5wcm9wcyxcXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBfcHJvcHMudmFsdWUsXFxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgPSBfcHJvcHMub25DbGljayxcXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQgPSBfcHJvcHMuZGlzYWJsZWQsXFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA9IF9wcm9wcy5jbGFzc05hbWUsXFxuICAgICAgICAgICAgICAgIGFjdGl2ZSA9IF9wcm9wcy5hY3RpdmUsXFxuICAgICAgICAgICAgICAgIGxvYWRpbmcgPSBfcHJvcHMubG9hZGluZztcXG5cXG4gICAgICAgICAgICB2YXIgaXNEaXNhYmxlZCA9IGRpc2FibGVkIHx8IGxvYWRpbmc7XFxuICAgICAgICAgICAgdmFyIGVsZW1DbGFzcyA9ICd1dGlscy1idXR0b24nICsgKGNsYXNzTmFtZSA/ICcgJyArIGNsYXNzTmFtZSA6ICcnKTtcXG4gICAgICAgICAgICBpZiAoYWN0aXZlKSB7XFxuICAgICAgICAgICAgICAgIGVsZW1DbGFzcyArPSAnJyArIChhY3RpdmUgPyAnIHV0aWxzLWJ1dHRvbi0tYWN0aXZlJyA6ICcnKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKGxvYWRpbmcpIHtcXG4gICAgICAgICAgICAgICAgZWxlbUNsYXNzICs9ICcnICsgKGxvYWRpbmcgPyAnIHV0aWxzLWJ1dHRvbi0tbG9hZGluZycgOiAnJyk7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIHJldHVybiBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcXG4gICAgICAgICAgICAgICAgJ2J1dHRvbicsXFxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2J1dHRvbicsIGNsYXNzTmFtZTogZWxlbUNsYXNzXFxuICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHRyaWdnZXIgb25DbGljayBpZiBjb21wb25lbnQgaXMgbm90IGRpc2FibGVkXFxuICAgICAgICAgICAgICAgICAgICAsIG9uQ2xpY2s6ICFpc0Rpc2FibGVkID8gb25DbGljayA6IGZ1bmN0aW9uICgpIHt9LFxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogdW5kZWZpbmVkIH0sXFxuICAgICAgICAgICAgICAgIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxcbiAgICAgICAgICAgICAgICAgICAgJ3NwYW4nLFxcbiAgICAgICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd1dGlscy1idXR0b24tdmFsdWUnIH0sXFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVxcbiAgICAgICAgICAgICAgICApXFxuICAgICAgICAgICAgKTtcXG4gICAgICAgIH1cXG4gICAgfV0pO1xcblxcbiAgICByZXR1cm4gUmVhY3RVdGlsc0J1dHRvbjtcXG59KF9yZWFjdDIuZGVmYXVsdC5Db21wb25lbnQpO1xcblxcblJlYWN0VXRpbHNCdXR0b24ucHJvcFR5cGVzID0ge1xcbiAgICB2YWx1ZTogX3Byb3BUeXBlczIuZGVmYXVsdC5zdHJpbmcuaXNSZXF1aXJlZCxcXG4gICAgY2xhc3NOYW1lOiBfcHJvcFR5cGVzMi5kZWZhdWx0LnN0cmluZyxcXG4gICAgb25DbGljazogX3Byb3BUeXBlczIuZGVmYXVsdC5mdW5jLFxcbiAgICBkaXNhYmxlZDogX3Byb3BUeXBlczIuZGVmYXVsdC5ib29sLFxcbiAgICBhY3RpdmU6IF9wcm9wVHlwZXMyLmRlZmF1bHQuYm9vbCxcXG4gICAgbG9hZGluZzogX3Byb3BUeXBlczIuZGVmYXVsdC5ib29sXFxufTtcXG5cXG5leHBvcnRzLmRlZmF1bHQgPSBSZWFjdFV0aWxzQnV0dG9uOy8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaU1qRXVhbk1pTENKemIzVnlZMlZ6SWpwYkluZGxZbkJoWTJzNkx5OHZjM0pqTDJsdVpHVjRMbXB6UHpGbVpHWWlYU3dpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJRkpsWVdOMElHWnliMjBnSjNKbFlXTjBKenRjYm1sdGNHOXlkQ0JRY205d1ZIbHdaWE1nWm5KdmJTQW5jSEp2Y0MxMGVYQmxjeWM3WEc1Y2JtTnNZWE56SUZKbFlXTjBWWFJwYkhOQ2RYUjBiMjRnWlhoMFpXNWtjeUJTWldGamRDNURiMjF3YjI1bGJuUWdlMXh1SUNBZ0lISmxibVJsY2lncElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2V5QjJZV3gxWlN3Z2IyNURiR2xqYXl3Z1pHbHpZV0pzWldRc0lHTnNZWE56VG1GdFpTd2dZV04wYVhabExDQnNiMkZrYVc1bklIMGdQU0IwYUdsekxuQnliM0J6TzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JwYzBScGMyRmliR1ZrSUQwZ1pHbHpZV0pzWldRZ2ZId2diRzloWkdsdVp6dGNiaUFnSUNBZ0lDQWdiR1YwSUdWc1pXMURiR0Z6Y3lBOUlHQjFkR2xzY3kxaWRYUjBiMjRrZTJOc1lYTnpUbUZ0WlNBL0lHQWdKSHRqYkdGemMwNWhiV1Y5WUNBNklDY25mV0E3WEc0Z0lDQWdJQ0FnSUdsbUlDaGhZM1JwZG1VcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdWc1pXMURiR0Z6Y3lBclBTQmdKSHRoWTNScGRtVWdQeUFuSUhWMGFXeHpMV0oxZEhSdmJpMHRZV04wYVhabEp5QTZJQ2NuZldBN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdhV1lnS0d4dllXUnBibWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1ZzWlcxRGJHRnpjeUFyUFNCZ0pIdHNiMkZrYVc1bklEOGdKeUIxZEdsc2N5MWlkWFIwYjI0dExXeHZZV1JwYm1jbklEb2dKeWQ5WUR0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQW9YRzRnSUNBZ0lDQWdJQ0FnSUNBOFluVjBkRzl1SUhSNWNHVTlYQ0ppZFhSMGIyNWNJaUJqYkdGemMwNWhiV1U5ZTJWc1pXMURiR0Z6YzMxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnVDI1c2VTQjBjbWxuWjJWeUlHOXVRMnhwWTJzZ2FXWWdZMjl0Y0c5dVpXNTBJR2x6SUc1dmRDQmthWE5oWW14bFpGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2YmtOc2FXTnJQWHNoYVhORWFYTmhZbXhsWkNBL0lHOXVRMnhwWTJzZ09pQW9LU0E5UGlCN2ZYMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWkdsellXSnNaV1E5ZTJselJHbHpZV0pzWldRZ1B5QW5aR2x6WVdKc1pXUW5JRG9nZFc1a1pXWnBibVZrZlQ1Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzQmhiaUJqYkdGemMwNWhiV1U5SjNWMGFXeHpMV0oxZEhSdmJpMTJZV3gxWlNjK2UzWmhiSFZsZlR3dmMzQmhiajVjYmlBZ0lDQWdJQ0FnSUNBZ0lEd3ZZblYwZEc5dVBseHVJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lIMWNibjFjYmx4dVVtVmhZM1JWZEdsc2MwSjFkSFJ2Ymk1d2NtOXdWSGx3WlhNZ1BTQjdYRzRnSUNBZ2RtRnNkV1U2SUZCeWIzQlVlWEJsY3k1emRISnBibWN1YVhOU1pYRjFhWEpsWkN4Y2JpQWdJQ0JqYkdGemMwNWhiV1U2SUZCeWIzQlVlWEJsY3k1emRISnBibWNzWEc0Z0lDQWdiMjVEYkdsamF6b2dVSEp2Y0ZSNWNHVnpMbVoxYm1Nc1hHNGdJQ0FnWkdsellXSnNaV1E2SUZCeWIzQlVlWEJsY3k1aWIyOXNMRnh1SUNBZ0lHRmpkR2wyWlRvZ1VISnZjRlI1Y0dWekxtSnZiMndzWEc0Z0lDQWdiRzloWkdsdVp6b2dVSEp2Y0ZSNWNHVnpMbUp2YjJ4Y2JuMDdYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJRkpsWVdOMFZYUnBiSE5DZFhSMGIyNDdYRzVjYmx4dVhHNHZMeUJYUlVKUVFVTkxJRVpQVDFSRlVpQXZMMXh1THk4Z2MzSmpMMmx1WkdWNExtcHpJbDBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3p0QlFVRkJPMEZCUTBFN096dEJRVUZCTzBGQlEwRTdPenM3T3pzN096czdPMEZCUTBFN096czdPenM3T3pzN08wRkJRMEU3UVVGQlFUdEJRVUZCTzBGQlFVRTdRVUZCUVR0QlFVRkJPMEZCUVVFN1FVRkJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVUZCTzBGQlEwRTdRVUZFUVR0QlFVZEJPMEZCUTBFN1FVRkJRVHRCUVVGQk8wRkJRVUU3UVVGQlFUdEJRVXBCTzBGQlQwRTdPenM3UVVGd1FrRTdRVUZEUVR0QlFYTkNRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVNUJPMEZCUTBFN1FVRlJRU0lzSW5OdmRYSmpaVkp2YjNRaU9pSWlmUT09XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzIxXFxuXCIpO1xuXG4vKioqLyB9KSxcbi8qIDIyICovXG4vKiBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyogYWxsIGV4cG9ydHMgdXNlZCAqL1xuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9+L2NyZWF0ZS1yZWFjdC1jbGFzcy9mYWN0b3J5LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5ldmFsKFwiLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKHByb2Nlc3MpIHsvKipcXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cXG4gKlxcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4gKlxcbiAqL1xcblxcblxcblxcbnZhciBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgb2JqZWN0LWFzc2lnbiAqLyA1KTtcXG5cXG52YXIgZW1wdHlPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBmYmpzL2xpYi9lbXB0eU9iamVjdCAqLyAxMik7XFxudmFyIF9pbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBmYmpzL2xpYi9pbnZhcmlhbnQgKi8gMSk7XFxuXFxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gIHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgZmJqcy9saWIvd2FybmluZyAqLyAyKTtcXG59XFxuXFxudmFyIE1JWElOU19LRVkgPSAnbWl4aW5zJztcXG5cXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gYWxsb3cgdGhlIGNyZWF0aW9uIG9mIGFub255bW91cyBmdW5jdGlvbnMgd2hpY2ggZG8gbm90XFxuLy8gaGF2ZSAubmFtZSBzZXQgdG8gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIGJlaW5nIGFzc2lnbmVkIHRvLlxcbmZ1bmN0aW9uIGlkZW50aXR5KGZuKSB7XFxuICByZXR1cm4gZm47XFxufVxcblxcbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcztcXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xcbiAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7XFxuICAgIHByb3A6ICdwcm9wJyxcXG4gICAgY29udGV4dDogJ2NvbnRleHQnLFxcbiAgICBjaGlsZENvbnRleHQ6ICdjaGlsZCBjb250ZXh0J1xcbiAgfTtcXG59IGVsc2Uge1xcbiAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7fTtcXG59XFxuXFxuZnVuY3Rpb24gZmFjdG9yeShSZWFjdENvbXBvbmVudCwgaXNWYWxpZEVsZW1lbnQsIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlKSB7XFxuICAvKipcXG4gICAqIFBvbGljaWVzIHRoYXQgZGVzY3JpYmUgbWV0aG9kcyBpbiBgUmVhY3RDbGFzc0ludGVyZmFjZWAuXFxuICAgKi9cXG5cXG4gIHZhciBpbmplY3RlZE1peGlucyA9IFtdO1xcblxcbiAgLyoqXFxuICAgKiBDb21wb3NpdGUgY29tcG9uZW50cyBhcmUgaGlnaGVyLWxldmVsIGNvbXBvbmVudHMgdGhhdCBjb21wb3NlIG90aGVyIGNvbXBvc2l0ZVxcbiAgICogb3IgaG9zdCBjb21wb25lbnRzLlxcbiAgICpcXG4gICAqIFRvIGNyZWF0ZSBhIG5ldyB0eXBlIG9mIGBSZWFjdENsYXNzYCwgcGFzcyBhIHNwZWNpZmljYXRpb24gb2ZcXG4gICAqIHlvdXIgbmV3IGNsYXNzIHRvIGBSZWFjdC5jcmVhdGVDbGFzc2AuIFRoZSBvbmx5IHJlcXVpcmVtZW50IG9mIHlvdXIgY2xhc3NcXG4gICAqIHNwZWNpZmljYXRpb24gaXMgdGhhdCB5b3UgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLlxcbiAgICpcXG4gICAqICAgdmFyIE15Q29tcG9uZW50ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xcbiAgICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7XFxuICAgKiAgICAgICByZXR1cm4gPGRpdj5IZWxsbyBXb3JsZDwvZGl2PjtcXG4gICAqICAgICB9XFxuICAgKiAgIH0pO1xcbiAgICpcXG4gICAqIFRoZSBjbGFzcyBzcGVjaWZpY2F0aW9uIHN1cHBvcnRzIGEgc3BlY2lmaWMgcHJvdG9jb2wgb2YgbWV0aG9kcyB0aGF0IGhhdmVcXG4gICAqIHNwZWNpYWwgbWVhbmluZyAoZS5nLiBgcmVuZGVyYCkuIFNlZSBgUmVhY3RDbGFzc0ludGVyZmFjZWAgZm9yXFxuICAgKiBtb3JlIHRoZSBjb21wcmVoZW5zaXZlIHByb3RvY29sLiBBbnkgb3RoZXIgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBpbiB0aGVcXG4gICAqIGNsYXNzIHNwZWNpZmljYXRpb24gd2lsbCBiZSBhdmFpbGFibGUgb24gdGhlIHByb3RvdHlwZS5cXG4gICAqXFxuICAgKiBAaW50ZXJmYWNlIFJlYWN0Q2xhc3NJbnRlcmZhY2VcXG4gICAqIEBpbnRlcm5hbFxcbiAgICovXFxuICB2YXIgUmVhY3RDbGFzc0ludGVyZmFjZSA9IHtcXG4gICAgLyoqXFxuICAgICAqIEFuIGFycmF5IG9mIE1peGluIG9iamVjdHMgdG8gaW5jbHVkZSB3aGVuIGRlZmluaW5nIHlvdXIgY29tcG9uZW50LlxcbiAgICAgKlxcbiAgICAgKiBAdHlwZSB7YXJyYXl9XFxuICAgICAqIEBvcHRpb25hbFxcbiAgICAgKi9cXG4gICAgbWl4aW5zOiAnREVGSU5FX01BTlknLFxcblxcbiAgICAvKipcXG4gICAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBhbmQgbWV0aG9kcyB0aGF0IHNob3VsZCBiZSBkZWZpbmVkIG9uXFxuICAgICAqIHRoZSBjb21wb25lbnQncyBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIGl0cyBwcm90b3R5cGUgKHN0YXRpYyBtZXRob2RzKS5cXG4gICAgICpcXG4gICAgICogQHR5cGUge29iamVjdH1cXG4gICAgICogQG9wdGlvbmFsXFxuICAgICAqL1xcbiAgICBzdGF0aWNzOiAnREVGSU5FX01BTlknLFxcblxcbiAgICAvKipcXG4gICAgICogRGVmaW5pdGlvbiBvZiBwcm9wIHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC5cXG4gICAgICpcXG4gICAgICogQHR5cGUge29iamVjdH1cXG4gICAgICogQG9wdGlvbmFsXFxuICAgICAqL1xcbiAgICBwcm9wVHlwZXM6ICdERUZJTkVfTUFOWScsXFxuXFxuICAgIC8qKlxcbiAgICAgKiBEZWZpbml0aW9uIG9mIGNvbnRleHQgdHlwZXMgZm9yIHRoaXMgY29tcG9uZW50LlxcbiAgICAgKlxcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxcbiAgICAgKiBAb3B0aW9uYWxcXG4gICAgICovXFxuICAgIGNvbnRleHRUeXBlczogJ0RFRklORV9NQU5ZJyxcXG5cXG4gICAgLyoqXFxuICAgICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyB0aGlzIGNvbXBvbmVudCBzZXRzIGZvciBpdHMgY2hpbGRyZW4uXFxuICAgICAqXFxuICAgICAqIEB0eXBlIHtvYmplY3R9XFxuICAgICAqIEBvcHRpb25hbFxcbiAgICAgKi9cXG4gICAgY2hpbGRDb250ZXh0VHlwZXM6ICdERUZJTkVfTUFOWScsXFxuXFxuICAgIC8vID09PT0gRGVmaW5pdGlvbiBtZXRob2RzID09PT1cXG5cXG4gICAgLyoqXFxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFZhbHVlcyBpbiB0aGUgbWFwcGluZyB3aWxsIGJlIHNldCBvblxcbiAgICAgKiBgdGhpcy5wcm9wc2AgaWYgdGhhdCBwcm9wIGlzIG5vdCBzcGVjaWZpZWQgKGkuZS4gdXNpbmcgYW4gYGluYCBjaGVjaykuXFxuICAgICAqXFxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYmVmb3JlIGBnZXRJbml0aWFsU3RhdGVgIGFuZCB0aGVyZWZvcmUgY2Fubm90IHJlbHlcXG4gICAgICogb24gYHRoaXMuc3RhdGVgIG9yIHVzZSBgdGhpcy5zZXRTdGF0ZWAuXFxuICAgICAqXFxuICAgICAqIEByZXR1cm4ge29iamVjdH1cXG4gICAgICogQG9wdGlvbmFsXFxuICAgICAqL1xcbiAgICBnZXREZWZhdWx0UHJvcHM6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxcblxcbiAgICAvKipcXG4gICAgICogSW52b2tlZCBvbmNlIGJlZm9yZSB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSB1c2VkXFxuICAgICAqIGFzIHRoZSBpbml0aWFsIHZhbHVlIG9mIGB0aGlzLnN0YXRlYC5cXG4gICAgICpcXG4gICAgICogICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uKCkge1xcbiAgICAgKiAgICAgcmV0dXJuIHtcXG4gICAgICogICAgICAgaXNPbjogZmFsc2UsXFxuICAgICAqICAgICAgIGZvb0JhejogbmV3IEJhekZvbygpXFxuICAgICAqICAgICB9XFxuICAgICAqICAgfVxcbiAgICAgKlxcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9XFxuICAgICAqIEBvcHRpb25hbFxcbiAgICAgKi9cXG4gICAgZ2V0SW5pdGlhbFN0YXRlOiAnREVGSU5FX01BTllfTUVSR0VEJyxcXG5cXG4gICAgLyoqXFxuICAgICAqIEByZXR1cm4ge29iamVjdH1cXG4gICAgICogQG9wdGlvbmFsXFxuICAgICAqL1xcbiAgICBnZXRDaGlsZENvbnRleHQ6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxcblxcbiAgICAvKipcXG4gICAgICogVXNlcyBwcm9wcyBmcm9tIGB0aGlzLnByb3BzYCBhbmQgc3RhdGUgZnJvbSBgdGhpcy5zdGF0ZWAgdG8gcmVuZGVyIHRoZVxcbiAgICAgKiBzdHJ1Y3R1cmUgb2YgdGhlIGNvbXBvbmVudC5cXG4gICAgICpcXG4gICAgICogTm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBhYm91dCB3aGVuIG9yIGhvdyBvZnRlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCBzb1xcbiAgICAgKiBpdCBtdXN0IG5vdCBoYXZlIHNpZGUgZWZmZWN0cy5cXG4gICAgICpcXG4gICAgICogICByZW5kZXI6IGZ1bmN0aW9uKCkge1xcbiAgICAgKiAgICAgdmFyIG5hbWUgPSB0aGlzLnByb3BzLm5hbWU7XFxuICAgICAqICAgICByZXR1cm4gPGRpdj5IZWxsbywge25hbWV9ITwvZGl2PjtcXG4gICAgICogICB9XFxuICAgICAqXFxuICAgICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fVxcbiAgICAgKiBAcmVxdWlyZWRcXG4gICAgICovXFxuICAgIHJlbmRlcjogJ0RFRklORV9PTkNFJyxcXG5cXG4gICAgLy8gPT09PSBEZWxlZ2F0ZSBtZXRob2RzID09PT1cXG5cXG4gICAgLyoqXFxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxseSBjcmVhdGVkIGFuZCBhYm91dCB0byBiZSBtb3VudGVkLlxcbiAgICAgKiBUaGlzIG1heSBoYXZlIHNpZGUgZWZmZWN0cywgYnV0IGFueSBleHRlcm5hbCBzdWJzY3JpcHRpb25zIG9yIGRhdGEgY3JlYXRlZFxcbiAgICAgKiBieSB0aGlzIG1ldGhvZCBtdXN0IGJlIGNsZWFuZWQgdXAgaW4gYGNvbXBvbmVudFdpbGxVbm1vdW50YC5cXG4gICAgICpcXG4gICAgICogQG9wdGlvbmFsXFxuICAgICAqL1xcbiAgICBjb21wb25lbnRXaWxsTW91bnQ6ICdERUZJTkVfTUFOWScsXFxuXFxuICAgIC8qKlxcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBtb3VudGVkIGFuZCBoYXMgYSBET00gcmVwcmVzZW50YXRpb24uXFxuICAgICAqIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBET00gbm9kZSBpcyBpbiB0aGUgZG9jdW1lbnQuXFxuICAgICAqXFxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25lbnQgaGFzXFxuICAgICAqIGJlZW4gbW91bnRlZCAoaW5pdGlhbGl6ZWQgYW5kIHJlbmRlcmVkKSBmb3IgdGhlIGZpcnN0IHRpbWUuXFxuICAgICAqXFxuICAgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQuXFxuICAgICAqIEBvcHRpb25hbFxcbiAgICAgKi9cXG4gICAgY29tcG9uZW50RGlkTW91bnQ6ICdERUZJTkVfTUFOWScsXFxuXFxuICAgIC8qKlxcbiAgICAgKiBJbnZva2VkIGJlZm9yZSB0aGUgY29tcG9uZW50IHJlY2VpdmVzIG5ldyBwcm9wcy5cXG4gICAgICpcXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcmVhY3QgdG8gYSBwcm9wIHRyYW5zaXRpb24gYnkgdXBkYXRpbmcgdGhlXFxuICAgICAqIHN0YXRlIHVzaW5nIGB0aGlzLnNldFN0YXRlYC4gQ3VycmVudCBwcm9wcyBhcmUgYWNjZXNzZWQgdmlhIGB0aGlzLnByb3BzYC5cXG4gICAgICpcXG4gICAgICogICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRDb250ZXh0KSB7XFxuICAgICAqICAgICB0aGlzLnNldFN0YXRlKHtcXG4gICAgICogICAgICAgbGlrZXNJbmNyZWFzaW5nOiBuZXh0UHJvcHMubGlrZUNvdW50ID4gdGhpcy5wcm9wcy5saWtlQ291bnRcXG4gICAgICogICAgIH0pO1xcbiAgICAgKiAgIH1cXG4gICAgICpcXG4gICAgICogTk9URTogVGhlcmUgaXMgbm8gZXF1aXZhbGVudCBgY29tcG9uZW50V2lsbFJlY2VpdmVTdGF0ZWAuIEFuIGluY29taW5nIHByb3BcXG4gICAgICogdHJhbnNpdGlvbiBtYXkgY2F1c2UgYSBzdGF0ZSBjaGFuZ2UsIGJ1dCB0aGUgb3Bwb3NpdGUgaXMgbm90IHRydWUuIElmIHlvdVxcbiAgICAgKiBuZWVkIGl0LCB5b3UgYXJlIHByb2JhYmx5IGxvb2tpbmcgZm9yIGBjb21wb25lbnRXaWxsVXBkYXRlYC5cXG4gICAgICpcXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xcbiAgICAgKiBAb3B0aW9uYWxcXG4gICAgICovXFxuICAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6ICdERUZJTkVfTUFOWScsXFxuXFxuICAgIC8qKlxcbiAgICAgKiBJbnZva2VkIHdoaWxlIGRlY2lkaW5nIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2ZcXG4gICAgICogcmVjZWl2aW5nIG5ldyBwcm9wcywgc3RhdGUgYW5kL29yIGNvbnRleHQuXFxuICAgICAqXFxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIGByZXR1cm4gZmFsc2VgIHdoZW4geW91J3JlIGNlcnRhaW4gdGhhdCB0aGVcXG4gICAgICogdHJhbnNpdGlvbiB0byB0aGUgbmV3IHByb3BzL3N0YXRlL2NvbnRleHQgd2lsbCBub3QgcmVxdWlyZSBhIGNvbXBvbmVudFxcbiAgICAgKiB1cGRhdGUuXFxuICAgICAqXFxuICAgICAqICAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpIHtcXG4gICAgICogICAgIHJldHVybiAhZXF1YWwobmV4dFByb3BzLCB0aGlzLnByb3BzKSB8fFxcbiAgICAgKiAgICAgICAhZXF1YWwobmV4dFN0YXRlLCB0aGlzLnN0YXRlKSB8fFxcbiAgICAgKiAgICAgICAhZXF1YWwobmV4dENvbnRleHQsIHRoaXMuY29udGV4dCk7XFxuICAgICAqICAgfVxcbiAgICAgKlxcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXFxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlXFxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHRcXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUuXFxuICAgICAqIEBvcHRpb25hbFxcbiAgICAgKi9cXG4gICAgc2hvdWxkQ29tcG9uZW50VXBkYXRlOiAnREVGSU5FX09OQ0UnLFxcblxcbiAgICAvKipcXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgYWJvdXQgdG8gdXBkYXRlIGR1ZSB0byBhIHRyYW5zaXRpb24gZnJvbVxcbiAgICAgKiBgdGhpcy5wcm9wc2AsIGB0aGlzLnN0YXRlYCBhbmQgYHRoaXMuY29udGV4dGAgdG8gYG5leHRQcm9wc2AsIGBuZXh0U3RhdGVgXFxuICAgICAqIGFuZCBgbmV4dENvbnRleHRgLlxcbiAgICAgKlxcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBwZXJmb3JtIHByZXBhcmF0aW9uIGJlZm9yZSBhbiB1cGRhdGUgb2NjdXJzLlxcbiAgICAgKlxcbiAgICAgKiBOT1RFOiBZb3UgKipjYW5ub3QqKiB1c2UgYHRoaXMuc2V0U3RhdGUoKWAgaW4gdGhpcyBtZXRob2QuXFxuICAgICAqXFxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGVcXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dFxcbiAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXFxuICAgICAqIEBvcHRpb25hbFxcbiAgICAgKi9cXG4gICAgY29tcG9uZW50V2lsbFVwZGF0ZTogJ0RFRklORV9NQU5ZJyxcXG5cXG4gICAgLyoqXFxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50J3MgRE9NIHJlcHJlc2VudGF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuXFxuICAgICAqXFxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25lbnQgaGFzXFxuICAgICAqIGJlZW4gdXBkYXRlZC5cXG4gICAgICpcXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHByZXZQcm9wc1xcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZTdGF0ZVxcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZDb250ZXh0XFxuICAgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQuXFxuICAgICAqIEBvcHRpb25hbFxcbiAgICAgKi9cXG4gICAgY29tcG9uZW50RGlkVXBkYXRlOiAnREVGSU5FX01BTlknLFxcblxcbiAgICAvKipcXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgYWJvdXQgdG8gYmUgcmVtb3ZlZCBmcm9tIGl0cyBwYXJlbnQgYW5kIGhhdmVcXG4gICAgICogaXRzIERPTSByZXByZXNlbnRhdGlvbiBkZXN0cm95ZWQuXFxuICAgICAqXFxuICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIGRlYWxsb2NhdGUgYW55IGV4dGVybmFsIHJlc291cmNlcy5cXG4gICAgICpcXG4gICAgICogTk9URTogVGhlcmUgaXMgbm8gYGNvbXBvbmVudERpZFVubW91bnRgIHNpbmNlIHlvdXIgY29tcG9uZW50IHdpbGwgaGF2ZSBiZWVuXFxuICAgICAqIGRlc3Ryb3llZCBieSB0aGF0IHBvaW50LlxcbiAgICAgKlxcbiAgICAgKiBAb3B0aW9uYWxcXG4gICAgICovXFxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50OiAnREVGSU5FX01BTlknLFxcblxcbiAgICAvLyA9PT09IEFkdmFuY2VkIG1ldGhvZHMgPT09PVxcblxcbiAgICAvKipcXG4gICAgICogVXBkYXRlcyB0aGUgY29tcG9uZW50J3MgY3VycmVudGx5IG1vdW50ZWQgRE9NIHJlcHJlc2VudGF0aW9uLlxcbiAgICAgKlxcbiAgICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVudHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS5cXG4gICAgICogU29waGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92ZXJyaWRlIHRoaXMuXFxuICAgICAqXFxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cXG4gICAgICogQGludGVybmFsXFxuICAgICAqIEBvdmVycmlkYWJsZVxcbiAgICAgKi9cXG4gICAgdXBkYXRlQ29tcG9uZW50OiAnT1ZFUlJJREVfQkFTRSdcXG4gIH07XFxuXFxuICAvKipcXG4gICAqIE1hcHBpbmcgZnJvbSBjbGFzcyBzcGVjaWZpY2F0aW9uIGtleXMgdG8gc3BlY2lhbCBwcm9jZXNzaW5nIGZ1bmN0aW9ucy5cXG4gICAqXFxuICAgKiBBbHRob3VnaCB0aGVzZSBhcmUgZGVjbGFyZWQgbGlrZSBpbnN0YW5jZSBwcm9wZXJ0aWVzIGluIHRoZSBzcGVjaWZpY2F0aW9uXFxuICAgKiB3aGVuIGRlZmluaW5nIGNsYXNzZXMgdXNpbmcgYFJlYWN0LmNyZWF0ZUNsYXNzYCwgdGhleSBhcmUgYWN0dWFsbHkgc3RhdGljXFxuICAgKiBhbmQgYXJlIGFjY2Vzc2libGUgb24gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdGhlIHByb3RvdHlwZS4gRGVzcGl0ZVxcbiAgICogYmVpbmcgc3RhdGljLCB0aGV5IG11c3QgYmUgZGVmaW5lZCBvdXRzaWRlIG9mIHRoZSBcXFwic3RhdGljc1xcXCIga2V5IHVuZGVyXFxuICAgKiB3aGljaCBhbGwgb3RoZXIgc3RhdGljIG1ldGhvZHMgYXJlIGRlZmluZWQuXFxuICAgKi9cXG4gIHZhciBSRVNFUlZFRF9TUEVDX0tFWVMgPSB7XFxuICAgIGRpc3BsYXlOYW1lOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgZGlzcGxheU5hbWUpIHtcXG4gICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xcbiAgICB9LFxcbiAgICBtaXhpbnM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBtaXhpbnMpIHtcXG4gICAgICBpZiAobWl4aW5zKSB7XFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1peGlucy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3RvciwgbWl4aW5zW2ldKTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH0sXFxuICAgIGNoaWxkQ29udGV4dFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgY2hpbGRDb250ZXh0VHlwZXMpIHtcXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xcbiAgICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcywgJ2NoaWxkQ29udGV4dCcpO1xcbiAgICAgIH1cXG4gICAgICBDb25zdHJ1Y3Rvci5jaGlsZENvbnRleHRUeXBlcyA9IF9hc3NpZ24oXFxuICAgICAgICB7fSxcXG4gICAgICAgIENvbnN0cnVjdG9yLmNoaWxkQ29udGV4dFR5cGVzLFxcbiAgICAgICAgY2hpbGRDb250ZXh0VHlwZXNcXG4gICAgICApO1xcbiAgICB9LFxcbiAgICBjb250ZXh0VHlwZXM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBjb250ZXh0VHlwZXMpIHtcXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xcbiAgICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjb250ZXh0VHlwZXMsICdjb250ZXh0Jyk7XFxuICAgICAgfVxcbiAgICAgIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcyA9IF9hc3NpZ24oXFxuICAgICAgICB7fSxcXG4gICAgICAgIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcyxcXG4gICAgICAgIGNvbnRleHRUeXBlc1xcbiAgICAgICk7XFxuICAgIH0sXFxuICAgIC8qKlxcbiAgICAgKiBTcGVjaWFsIGNhc2UgZ2V0RGVmYXVsdFByb3BzIHdoaWNoIHNob3VsZCBtb3ZlIGludG8gc3RhdGljcyBidXQgcmVxdWlyZXNcXG4gICAgICogYXV0b21hdGljIG1lcmdpbmcuXFxuICAgICAqL1xcbiAgICBnZXREZWZhdWx0UHJvcHM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBnZXREZWZhdWx0UHJvcHMpIHtcXG4gICAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XFxuICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihcXG4gICAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzLFxcbiAgICAgICAgICBnZXREZWZhdWx0UHJvcHNcXG4gICAgICAgICk7XFxuICAgICAgfSBlbHNlIHtcXG4gICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyA9IGdldERlZmF1bHRQcm9wcztcXG4gICAgICB9XFxuICAgIH0sXFxuICAgIHByb3BUeXBlczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIHByb3BUeXBlcykge1xcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XFxuICAgICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIHByb3BUeXBlcywgJ3Byb3AnKTtcXG4gICAgICB9XFxuICAgICAgQ29uc3RydWN0b3IucHJvcFR5cGVzID0gX2Fzc2lnbih7fSwgQ29uc3RydWN0b3IucHJvcFR5cGVzLCBwcm9wVHlwZXMpO1xcbiAgICB9LFxcbiAgICBzdGF0aWNzOiBmdW5jdGlvbihDb25zdHJ1Y3Rvciwgc3RhdGljcykge1xcbiAgICAgIG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNzKTtcXG4gICAgfSxcXG4gICAgYXV0b2JpbmQ6IGZ1bmN0aW9uKCkge31cXG4gIH07XFxuXFxuICBmdW5jdGlvbiB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIHR5cGVEZWYsIGxvY2F0aW9uKSB7XFxuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHR5cGVEZWYpIHtcXG4gICAgICBpZiAodHlwZURlZi5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcXG4gICAgICAgIC8vIHVzZSBhIHdhcm5pbmcgaW5zdGVhZCBvZiBhbiBfaW52YXJpYW50IHNvIGNvbXBvbmVudHNcXG4gICAgICAgIC8vIGRvbid0IHNob3cgdXAgaW4gcHJvZCBidXQgb25seSBpbiBfX0RFVl9fXFxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xcbiAgICAgICAgICB3YXJuaW5nKFxcbiAgICAgICAgICAgIHR5cGVvZiB0eXBlRGVmW3Byb3BOYW1lXSA9PT0gJ2Z1bmN0aW9uJyxcXG4gICAgICAgICAgICAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICtcXG4gICAgICAgICAgICAgICdSZWFjdC5Qcm9wVHlwZXMuJyxcXG4gICAgICAgICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDbGFzcycsXFxuICAgICAgICAgICAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLFxcbiAgICAgICAgICAgIHByb3BOYW1lXFxuICAgICAgICAgICk7XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICBmdW5jdGlvbiB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5hbWUpIHtcXG4gICAgdmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpXFxuICAgICAgPyBSZWFjdENsYXNzSW50ZXJmYWNlW25hbWVdXFxuICAgICAgOiBudWxsO1xcblxcbiAgICAvLyBEaXNhbGxvdyBvdmVycmlkaW5nIG9mIGJhc2UgY2xhc3MgbWV0aG9kcyB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2VkLlxcbiAgICBpZiAoUmVhY3RDbGFzc01peGluLmhhc093blByb3BlcnR5KG5hbWUpKSB7XFxuICAgICAgX2ludmFyaWFudChcXG4gICAgICAgIHNwZWNQb2xpY3kgPT09ICdPVkVSUklERV9CQVNFJyxcXG4gICAgICAgICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gb3ZlcnJpZGUgJyArXFxuICAgICAgICAgICdgJXNgIGZyb20geW91ciBjbGFzcyBzcGVjaWZpY2F0aW9uLiBFbnN1cmUgdGhhdCB5b3VyIG1ldGhvZCBuYW1lcyAnICtcXG4gICAgICAgICAgJ2RvIG5vdCBvdmVybGFwIHdpdGggUmVhY3QgbWV0aG9kcy4nLFxcbiAgICAgICAgbmFtZVxcbiAgICAgICk7XFxuICAgIH1cXG5cXG4gICAgLy8gRGlzYWxsb3cgZGVmaW5pbmcgbWV0aG9kcyBtb3JlIHRoYW4gb25jZSB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2VkLlxcbiAgICBpZiAoaXNBbHJlYWR5RGVmaW5lZCkge1xcbiAgICAgIF9pbnZhcmlhbnQoXFxuICAgICAgICBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknIHx8IHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxcbiAgICAgICAgJ1JlYWN0Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgJyArXFxuICAgICAgICAgICdgJXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSBkdWUgJyArXFxuICAgICAgICAgICd0byBhIG1peGluLicsXFxuICAgICAgICBuYW1lXFxuICAgICAgKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLyoqXFxuICAgKiBNaXhpbiBoZWxwZXIgd2hpY2ggaGFuZGxlcyBwb2xpY3kgdmFsaWRhdGlvbiBhbmQgcmVzZXJ2ZWRcXG4gICAqIHNwZWNpZmljYXRpb24ga2V5cyB3aGVuIGJ1aWxkaW5nIFJlYWN0IGNsYXNzZXMuXFxuICAgKi9cXG4gIGZ1bmN0aW9uIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzcGVjKSB7XFxuICAgIGlmICghc3BlYykge1xcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XFxuICAgICAgICB2YXIgdHlwZW9mU3BlYyA9IHR5cGVvZiBzcGVjO1xcbiAgICAgICAgdmFyIGlzTWl4aW5WYWxpZCA9IHR5cGVvZlNwZWMgPT09ICdvYmplY3QnICYmIHNwZWMgIT09IG51bGw7XFxuXFxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xcbiAgICAgICAgICB3YXJuaW5nKFxcbiAgICAgICAgICAgIGlzTWl4aW5WYWxpZCxcXG4gICAgICAgICAgICBcXFwiJXM6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIGluY2x1ZGUgYSBtaXhpbiB0aGF0IGlzIGVpdGhlciBudWxsIFxcXCIgK1xcbiAgICAgICAgICAgICAgJ29yIG5vdCBhbiBvYmplY3QuIENoZWNrIHRoZSBtaXhpbnMgaW5jbHVkZWQgYnkgdGhlIGNvbXBvbmVudCwgJyArXFxuICAgICAgICAgICAgICAnYXMgd2VsbCBhcyBhbnkgbWl4aW5zIHRoZXkgaW5jbHVkZSB0aGVtc2VsdmVzLiAnICtcXG4gICAgICAgICAgICAgICdFeHBlY3RlZCBvYmplY3QgYnV0IGdvdCAlcy4nLFxcbiAgICAgICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENsYXNzJyxcXG4gICAgICAgICAgICBzcGVjID09PSBudWxsID8gbnVsbCA6IHR5cGVvZlNwZWNcXG4gICAgICAgICAgKTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgcmV0dXJuO1xcbiAgICB9XFxuXFxuICAgIF9pbnZhcmlhbnQoXFxuICAgICAgdHlwZW9mIHNwZWMgIT09ICdmdW5jdGlvbicsXFxuICAgICAgXFxcIlJlYWN0Q2xhc3M6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIFxcXCIgK1xcbiAgICAgICAgJ3VzZSBhIGNvbXBvbmVudCBjbGFzcyBvciBmdW5jdGlvbiBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhICcgK1xcbiAgICAgICAgJ3JlZ3VsYXIgb2JqZWN0LidcXG4gICAgKTtcXG4gICAgX2ludmFyaWFudChcXG4gICAgICAhaXNWYWxpZEVsZW1lbnQoc3BlYyksXFxuICAgICAgXFxcIlJlYWN0Q2xhc3M6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIFxcXCIgK1xcbiAgICAgICAgJ3VzZSBhIGNvbXBvbmVudCBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LidcXG4gICAgKTtcXG5cXG4gICAgdmFyIHByb3RvID0gQ29uc3RydWN0b3IucHJvdG90eXBlO1xcbiAgICB2YXIgYXV0b0JpbmRQYWlycyA9IHByb3RvLl9fcmVhY3RBdXRvQmluZFBhaXJzO1xcblxcbiAgICAvLyBCeSBoYW5kbGluZyBtaXhpbnMgYmVmb3JlIGFueSBvdGhlciBwcm9wZXJ0aWVzLCB3ZSBlbnN1cmUgdGhlIHNhbWVcXG4gICAgLy8gY2hhaW5pbmcgb3JkZXIgaXMgYXBwbGllZCB0byBtZXRob2RzIHdpdGggREVGSU5FX01BTlkgcG9saWN5LCB3aGV0aGVyXFxuICAgIC8vIG1peGlucyBhcmUgbGlzdGVkIGJlZm9yZSBvciBhZnRlciB0aGVzZSBtZXRob2RzIGluIHRoZSBzcGVjLlxcbiAgICBpZiAoc3BlYy5oYXNPd25Qcm9wZXJ0eShNSVhJTlNfS0VZKSkge1xcbiAgICAgIFJFU0VSVkVEX1NQRUNfS0VZUy5taXhpbnMoQ29uc3RydWN0b3IsIHNwZWMubWl4aW5zKTtcXG4gICAgfVxcblxcbiAgICBmb3IgKHZhciBuYW1lIGluIHNwZWMpIHtcXG4gICAgICBpZiAoIXNwZWMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcXG4gICAgICAgIGNvbnRpbnVlO1xcbiAgICAgIH1cXG5cXG4gICAgICBpZiAobmFtZSA9PT0gTUlYSU5TX0tFWSkge1xcbiAgICAgICAgLy8gV2UgaGF2ZSBhbHJlYWR5IGhhbmRsZWQgbWl4aW5zIGluIGEgc3BlY2lhbCBjYXNlIGFib3ZlLlxcbiAgICAgICAgY29udGludWU7XFxuICAgICAgfVxcblxcbiAgICAgIHZhciBwcm9wZXJ0eSA9IHNwZWNbbmFtZV07XFxuICAgICAgdmFyIGlzQWxyZWFkeURlZmluZWQgPSBwcm90by5oYXNPd25Qcm9wZXJ0eShuYW1lKTtcXG4gICAgICB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5hbWUpO1xcblxcbiAgICAgIGlmIChSRVNFUlZFRF9TUEVDX0tFWVMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcXG4gICAgICAgIFJFU0VSVkVEX1NQRUNfS0VZU1tuYW1lXShDb25zdHJ1Y3RvciwgcHJvcGVydHkpO1xcbiAgICAgIH0gZWxzZSB7XFxuICAgICAgICAvLyBTZXR1cCBtZXRob2RzIG9uIHByb3RvdHlwZTpcXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbWVtYmVyIG1ldGhvZHMgc2hvdWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGJvdW5kOlxcbiAgICAgICAgLy8gMS4gRXhwZWN0ZWQgUmVhY3RDbGFzcyBtZXRob2RzIChpbiB0aGUgXFxcImludGVyZmFjZVxcXCIpLlxcbiAgICAgICAgLy8gMi4gT3ZlcnJpZGRlbiBtZXRob2RzICh0aGF0IHdlcmUgbWl4ZWQgaW4pLlxcbiAgICAgICAgdmFyIGlzUmVhY3RDbGFzc01ldGhvZCA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSk7XFxuICAgICAgICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJztcXG4gICAgICAgIHZhciBzaG91bGRBdXRvQmluZCA9XFxuICAgICAgICAgIGlzRnVuY3Rpb24gJiZcXG4gICAgICAgICAgIWlzUmVhY3RDbGFzc01ldGhvZCAmJlxcbiAgICAgICAgICAhaXNBbHJlYWR5RGVmaW5lZCAmJlxcbiAgICAgICAgICBzcGVjLmF1dG9iaW5kICE9PSBmYWxzZTtcXG5cXG4gICAgICAgIGlmIChzaG91bGRBdXRvQmluZCkge1xcbiAgICAgICAgICBhdXRvQmluZFBhaXJzLnB1c2gobmFtZSwgcHJvcGVydHkpO1xcbiAgICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5O1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcXG4gICAgICAgICAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2VbbmFtZV07XFxuXFxuICAgICAgICAgICAgLy8gVGhlc2UgY2FzZXMgc2hvdWxkIGFscmVhZHkgYmUgY2F1Z2h0IGJ5IHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUuXFxuICAgICAgICAgICAgX2ludmFyaWFudChcXG4gICAgICAgICAgICAgIGlzUmVhY3RDbGFzc01ldGhvZCAmJlxcbiAgICAgICAgICAgICAgICAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcgfHxcXG4gICAgICAgICAgICAgICAgICBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknKSxcXG4gICAgICAgICAgICAgICdSZWFjdENsYXNzOiBVbmV4cGVjdGVkIHNwZWMgcG9saWN5ICVzIGZvciBrZXkgJXMgJyArXFxuICAgICAgICAgICAgICAgICd3aGVuIG1peGluZyBpbiBjb21wb25lbnQgc3BlY3MuJyxcXG4gICAgICAgICAgICAgIHNwZWNQb2xpY3ksXFxuICAgICAgICAgICAgICBuYW1lXFxuICAgICAgICAgICAgKTtcXG5cXG4gICAgICAgICAgICAvLyBGb3IgbWV0aG9kcyB3aGljaCBhcmUgZGVmaW5lZCBtb3JlIHRoYW4gb25jZSwgY2FsbCB0aGUgZXhpc3RpbmdcXG4gICAgICAgICAgICAvLyBtZXRob2RzIGJlZm9yZSBjYWxsaW5nIHRoZSBuZXcgcHJvcGVydHksIG1lcmdpbmcgaWYgYXBwcm9wcmlhdGUuXFxuICAgICAgICAgICAgaWYgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9NRVJHRUQnKSB7XFxuICAgICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKHByb3RvW25hbWVdLCBwcm9wZXJ0eSk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknKSB7XFxuICAgICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5O1xcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XFxuICAgICAgICAgICAgICAvLyBBZGQgdmVyYm9zZSBkaXNwbGF5TmFtZSB0byB0aGUgZnVuY3Rpb24sIHdoaWNoIGhlbHBzIHdoZW4gbG9va2luZ1xcbiAgICAgICAgICAgICAgLy8gYXQgcHJvZmlsaW5nIHRvb2xzLlxcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJyAmJiBzcGVjLmRpc3BsYXlOYW1lKSB7XFxuICAgICAgICAgICAgICAgIHByb3RvW25hbWVdLmRpc3BsYXlOYW1lID0gc3BlYy5kaXNwbGF5TmFtZSArICdfJyArIG5hbWU7XFxuICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICBmdW5jdGlvbiBtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3RhdGljcykge1xcbiAgICBpZiAoIXN0YXRpY3MpIHtcXG4gICAgICByZXR1cm47XFxuICAgIH1cXG4gICAgZm9yICh2YXIgbmFtZSBpbiBzdGF0aWNzKSB7XFxuICAgICAgdmFyIHByb3BlcnR5ID0gc3RhdGljc1tuYW1lXTtcXG4gICAgICBpZiAoIXN0YXRpY3MuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcXG4gICAgICAgIGNvbnRpbnVlO1xcbiAgICAgIH1cXG5cXG4gICAgICB2YXIgaXNSZXNlcnZlZCA9IG5hbWUgaW4gUkVTRVJWRURfU1BFQ19LRVlTO1xcbiAgICAgIF9pbnZhcmlhbnQoXFxuICAgICAgICAhaXNSZXNlcnZlZCxcXG4gICAgICAgICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lIGEgcmVzZXJ2ZWQgJyArXFxuICAgICAgICAgICdwcm9wZXJ0eSwgYCVzYCwgdGhhdCBzaG91bGRuXFxcXCd0IGJlIG9uIHRoZSBcXFwic3RhdGljc1xcXCIga2V5LiBEZWZpbmUgaXQgJyArXFxuICAgICAgICAgICdhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBpbnN0ZWFkOyBpdCB3aWxsIHN0aWxsIGJlIGFjY2Vzc2libGUgb24gdGhlICcgK1xcbiAgICAgICAgICAnY29uc3RydWN0b3IuJyxcXG4gICAgICAgIG5hbWVcXG4gICAgICApO1xcblxcbiAgICAgIHZhciBpc0luaGVyaXRlZCA9IG5hbWUgaW4gQ29uc3RydWN0b3I7XFxuICAgICAgX2ludmFyaWFudChcXG4gICAgICAgICFpc0luaGVyaXRlZCxcXG4gICAgICAgICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgK1xcbiAgICAgICAgICAnYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUgJyArXFxuICAgICAgICAgICdkdWUgdG8gYSBtaXhpbi4nLFxcbiAgICAgICAgbmFtZVxcbiAgICAgICk7XFxuICAgICAgQ29uc3RydWN0b3JbbmFtZV0gPSBwcm9wZXJ0eTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLyoqXFxuICAgKiBNZXJnZSB0d28gb2JqZWN0cywgYnV0IHRocm93IGlmIGJvdGggY29udGFpbiB0aGUgc2FtZSBrZXkuXFxuICAgKlxcbiAgICogQHBhcmFtIHtvYmplY3R9IG9uZSBUaGUgZmlyc3Qgb2JqZWN0LCB3aGljaCBpcyBtdXRhdGVkLlxcbiAgICogQHBhcmFtIHtvYmplY3R9IHR3byBUaGUgc2Vjb25kIG9iamVjdFxcbiAgICogQHJldHVybiB7b2JqZWN0fSBvbmUgYWZ0ZXIgaXQgaGFzIGJlZW4gbXV0YXRlZCB0byBjb250YWluIGV2ZXJ5dGhpbmcgaW4gdHdvLlxcbiAgICovXFxuICBmdW5jdGlvbiBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKG9uZSwgdHdvKSB7XFxuICAgIF9pbnZhcmlhbnQoXFxuICAgICAgb25lICYmIHR3byAmJiB0eXBlb2Ygb25lID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdHdvID09PSAnb2JqZWN0JyxcXG4gICAgICAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiBDYW5ub3QgbWVyZ2Ugbm9uLW9iamVjdHMuJ1xcbiAgICApO1xcblxcbiAgICBmb3IgKHZhciBrZXkgaW4gdHdvKSB7XFxuICAgICAgaWYgKHR3by5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XFxuICAgICAgICBfaW52YXJpYW50KFxcbiAgICAgICAgICBvbmVba2V5XSA9PT0gdW5kZWZpbmVkLFxcbiAgICAgICAgICAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiAnICtcXG4gICAgICAgICAgICAnVHJpZWQgdG8gbWVyZ2UgdHdvIG9iamVjdHMgd2l0aCB0aGUgc2FtZSBrZXk6IGAlc2AuIFRoaXMgY29uZmxpY3QgJyArXFxuICAgICAgICAgICAgJ21heSBiZSBkdWUgdG8gYSBtaXhpbjsgaW4gcGFydGljdWxhciwgdGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHR3byAnICtcXG4gICAgICAgICAgICAnZ2V0SW5pdGlhbFN0YXRlKCkgb3IgZ2V0RGVmYXVsdFByb3BzKCkgbWV0aG9kcyByZXR1cm5pbmcgb2JqZWN0cyAnICtcXG4gICAgICAgICAgICAnd2l0aCBjbGFzaGluZyBrZXlzLicsXFxuICAgICAgICAgIGtleVxcbiAgICAgICAgKTtcXG4gICAgICAgIG9uZVtrZXldID0gdHdvW2tleV07XFxuICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiBvbmU7XFxuICB9XFxuXFxuICAvKipcXG4gICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdHdvIGZ1bmN0aW9ucyBhbmQgbWVyZ2VzIHRoZWlyIHJldHVybiB2YWx1ZXMuXFxuICAgKlxcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb25lIEZ1bmN0aW9uIHRvIGludm9rZSBmaXJzdC5cXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLlxcbiAgICogQHJldHVybiB7ZnVuY3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0aW9ucy5cXG4gICAqIEBwcml2YXRlXFxuICAgKi9cXG4gIGZ1bmN0aW9uIGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKG9uZSwgdHdvKSB7XFxuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWRSZXN1bHQoKSB7XFxuICAgICAgdmFyIGEgPSBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcXG4gICAgICB2YXIgYiA9IHR3by5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xcbiAgICAgIGlmIChhID09IG51bGwpIHtcXG4gICAgICAgIHJldHVybiBiO1xcbiAgICAgIH0gZWxzZSBpZiAoYiA9PSBudWxsKSB7XFxuICAgICAgICByZXR1cm4gYTtcXG4gICAgICB9XFxuICAgICAgdmFyIGMgPSB7fTtcXG4gICAgICBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKGMsIGEpO1xcbiAgICAgIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYik7XFxuICAgICAgcmV0dXJuIGM7XFxuICAgIH07XFxuICB9XFxuXFxuICAvKipcXG4gICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdHdvIGZ1bmN0aW9ucyBhbmQgaWdub3JlcyB0aGVpciByZXR1cm4gdmFsZXMuXFxuICAgKlxcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb25lIEZ1bmN0aW9uIHRvIGludm9rZSBmaXJzdC5cXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLlxcbiAgICogQHJldHVybiB7ZnVuY3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0aW9ucy5cXG4gICAqIEBwcml2YXRlXFxuICAgKi9cXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoYWluZWRGdW5jdGlvbihvbmUsIHR3bykge1xcbiAgICByZXR1cm4gZnVuY3Rpb24gY2hhaW5lZEZ1bmN0aW9uKCkge1xcbiAgICAgIG9uZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xcbiAgICAgIHR3by5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xcbiAgICB9O1xcbiAgfVxcblxcbiAgLyoqXFxuICAgKiBCaW5kcyBhIG1ldGhvZCB0byB0aGUgY29tcG9uZW50LlxcbiAgICpcXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnQgQ29tcG9uZW50IHdob3NlIG1ldGhvZCBpcyBnb2luZyB0byBiZSBib3VuZC5cXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZCBNZXRob2QgdG8gYmUgYm91bmQuXFxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGJvdW5kIG1ldGhvZC5cXG4gICAqL1xcbiAgZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9kKSB7XFxuICAgIHZhciBib3VuZE1ldGhvZCA9IG1ldGhvZC5iaW5kKGNvbXBvbmVudCk7XFxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XFxuICAgICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDtcXG4gICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XFxuICAgICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQXJndW1lbnRzID0gbnVsbDtcXG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZTtcXG4gICAgICB2YXIgX2JpbmQgPSBib3VuZE1ldGhvZC5iaW5kO1xcbiAgICAgIGJvdW5kTWV0aG9kLmJpbmQgPSBmdW5jdGlvbihuZXdUaGlzKSB7XFxuICAgICAgICBmb3IgKFxcbiAgICAgICAgICB2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsXFxuICAgICAgICAgICAgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSxcXG4gICAgICAgICAgICBfa2V5ID0gMTtcXG4gICAgICAgICAgX2tleSA8IF9sZW47XFxuICAgICAgICAgIF9rZXkrK1xcbiAgICAgICAgKSB7XFxuICAgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgLy8gVXNlciBpcyB0cnlpbmcgdG8gYmluZCgpIGFuIGF1dG9ib3VuZCBtZXRob2Q7IHdlIGVmZmVjdGl2ZWx5IHdpbGxcXG4gICAgICAgIC8vIGlnbm9yZSB0aGUgdmFsdWUgb2YgXFxcInRoaXNcXFwiIHRoYXQgdGhlIHVzZXIgaXMgdHJ5aW5nIHRvIHVzZSwgc29cXG4gICAgICAgIC8vIGxldCdzIHdhcm4uXFxuICAgICAgICBpZiAobmV3VGhpcyAhPT0gY29tcG9uZW50ICYmIG5ld1RoaXMgIT09IG51bGwpIHtcXG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gICAgICAgICAgICB3YXJuaW5nKFxcbiAgICAgICAgICAgICAgZmFsc2UsXFxuICAgICAgICAgICAgICAnYmluZCgpOiBSZWFjdCBjb21wb25lbnQgbWV0aG9kcyBtYXkgb25seSBiZSBib3VuZCB0byB0aGUgJyArXFxuICAgICAgICAgICAgICAgICdjb21wb25lbnQgaW5zdGFuY2UuIFNlZSAlcycsXFxuICAgICAgICAgICAgICBjb21wb25lbnROYW1lXFxuICAgICAgICAgICAgKTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIGlmICghYXJncy5sZW5ndGgpIHtcXG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gICAgICAgICAgICB3YXJuaW5nKFxcbiAgICAgICAgICAgICAgZmFsc2UsXFxuICAgICAgICAgICAgICAnYmluZCgpOiBZb3UgYXJlIGJpbmRpbmcgYSBjb21wb25lbnQgbWV0aG9kIHRvIHRoZSBjb21wb25lbnQuICcgK1xcbiAgICAgICAgICAgICAgICAnUmVhY3QgZG9lcyB0aGlzIGZvciB5b3UgYXV0b21hdGljYWxseSBpbiBhIGhpZ2gtcGVyZm9ybWFuY2UgJyArXFxuICAgICAgICAgICAgICAgICd3YXksIHNvIHlvdSBjYW4gc2FmZWx5IHJlbW92ZSB0aGlzIGNhbGwuIFNlZSAlcycsXFxuICAgICAgICAgICAgICBjb21wb25lbnROYW1lXFxuICAgICAgICAgICAgKTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgICByZXR1cm4gYm91bmRNZXRob2Q7XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgcmVib3VuZE1ldGhvZCA9IF9iaW5kLmFwcGx5KGJvdW5kTWV0aG9kLCBhcmd1bWVudHMpO1xcbiAgICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRDb250ZXh0ID0gY29tcG9uZW50O1xcbiAgICAgICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XFxuICAgICAgICByZWJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZEFyZ3VtZW50cyA9IGFyZ3M7XFxuICAgICAgICByZXR1cm4gcmVib3VuZE1ldGhvZDtcXG4gICAgICB9O1xcbiAgICB9XFxuICAgIHJldHVybiBib3VuZE1ldGhvZDtcXG4gIH1cXG5cXG4gIC8qKlxcbiAgICogQmluZHMgYWxsIGF1dG8tYm91bmQgbWV0aG9kcyBpbiBhIGNvbXBvbmVudC5cXG4gICAqXFxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUgYm91bmQuXFxuICAgKi9cXG4gIGZ1bmN0aW9uIGJpbmRBdXRvQmluZE1ldGhvZHMoY29tcG9uZW50KSB7XFxuICAgIHZhciBwYWlycyA9IGNvbXBvbmVudC5fX3JlYWN0QXV0b0JpbmRQYWlycztcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7IGkgKz0gMikge1xcbiAgICAgIHZhciBhdXRvQmluZEtleSA9IHBhaXJzW2ldO1xcbiAgICAgIHZhciBtZXRob2QgPSBwYWlyc1tpICsgMV07XFxuICAgICAgY29tcG9uZW50W2F1dG9CaW5kS2V5XSA9IGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25lbnQsIG1ldGhvZCk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIHZhciBJc01vdW50ZWRQcmVNaXhpbiA9IHtcXG4gICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uKCkge1xcbiAgICAgIHRoaXMuX19pc01vdW50ZWQgPSB0cnVlO1xcbiAgICB9XFxuICB9O1xcblxcbiAgdmFyIElzTW91bnRlZFBvc3RNaXhpbiA9IHtcXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQ6IGZ1bmN0aW9uKCkge1xcbiAgICAgIHRoaXMuX19pc01vdW50ZWQgPSBmYWxzZTtcXG4gICAgfVxcbiAgfTtcXG5cXG4gIC8qKlxcbiAgICogQWRkIG1vcmUgdG8gdGhlIFJlYWN0Q2xhc3MgYmFzZSBjbGFzcy4gVGhlc2UgYXJlIGFsbCBsZWdhY3kgZmVhdHVyZXMgYW5kXFxuICAgKiB0aGVyZWZvcmUgbm90IGFscmVhZHkgcGFydCBvZiB0aGUgbW9kZXJuIFJlYWN0Q29tcG9uZW50LlxcbiAgICovXFxuICB2YXIgUmVhY3RDbGFzc01peGluID0ge1xcbiAgICAvKipcXG4gICAgICogVE9ETzogVGhpcyB3aWxsIGJlIGRlcHJlY2F0ZWQgYmVjYXVzZSBzdGF0ZSBzaG91bGQgYWx3YXlzIGtlZXAgYSBjb25zaXN0ZW50XFxuICAgICAqIHR5cGUgc2lnbmF0dXJlIGFuZCB0aGUgb25seSB1c2UgY2FzZSBmb3IgdGhpcywgaXMgdG8gYXZvaWQgdGhhdC5cXG4gICAgICovXFxuICAgIHJlcGxhY2VTdGF0ZTogZnVuY3Rpb24obmV3U3RhdGUsIGNhbGxiYWNrKSB7XFxuICAgICAgdGhpcy51cGRhdGVyLmVucXVldWVSZXBsYWNlU3RhdGUodGhpcywgbmV3U3RhdGUsIGNhbGxiYWNrKTtcXG4gICAgfSxcXG5cXG4gICAgLyoqXFxuICAgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuXFxuICAgICAqIEBwcm90ZWN0ZWRcXG4gICAgICogQGZpbmFsXFxuICAgICAqL1xcbiAgICBpc01vdW50ZWQ6IGZ1bmN0aW9uKCkge1xcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XFxuICAgICAgICB3YXJuaW5nKFxcbiAgICAgICAgICB0aGlzLl9fZGlkV2FybklzTW91bnRlZCxcXG4gICAgICAgICAgJyVzOiBpc01vdW50ZWQgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgbWFrZSBzdXJlIHRvIGNsZWFuIHVwICcgK1xcbiAgICAgICAgICAgICdzdWJzY3JpcHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluIGNvbXBvbmVudFdpbGxVbm1vdW50IHRvICcgK1xcbiAgICAgICAgICAgICdwcmV2ZW50IG1lbW9yeSBsZWFrcy4nLFxcbiAgICAgICAgICAodGhpcy5jb25zdHJ1Y3RvciAmJiB0aGlzLmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lKSB8fFxcbiAgICAgICAgICAgIHRoaXMubmFtZSB8fFxcbiAgICAgICAgICAgICdDb21wb25lbnQnXFxuICAgICAgICApO1xcbiAgICAgICAgdGhpcy5fX2RpZFdhcm5Jc01vdW50ZWQgPSB0cnVlO1xcbiAgICAgIH1cXG4gICAgICByZXR1cm4gISF0aGlzLl9faXNNb3VudGVkO1xcbiAgICB9XFxuICB9O1xcblxcbiAgdmFyIFJlYWN0Q2xhc3NDb21wb25lbnQgPSBmdW5jdGlvbigpIHt9O1xcbiAgX2Fzc2lnbihcXG4gICAgUmVhY3RDbGFzc0NvbXBvbmVudC5wcm90b3R5cGUsXFxuICAgIFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSxcXG4gICAgUmVhY3RDbGFzc01peGluXFxuICApO1xcblxcbiAgLyoqXFxuICAgKiBDcmVhdGVzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBjbGFzcyBnaXZlbiBhIGNsYXNzIHNwZWNpZmljYXRpb24uXFxuICAgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlY2xhc3NcXG4gICAqXFxuICAgKiBAcGFyYW0ge29iamVjdH0gc3BlYyBDbGFzcyBzcGVjaWZpY2F0aW9uICh3aGljaCBtdXN0IGRlZmluZSBgcmVuZGVyYCkuXFxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gQ29tcG9uZW50IGNvbnN0cnVjdG9yIGZ1bmN0aW9uLlxcbiAgICogQHB1YmxpY1xcbiAgICovXFxuICBmdW5jdGlvbiBjcmVhdGVDbGFzcyhzcGVjKSB7XFxuICAgIC8vIFRvIGtlZXAgb3VyIHdhcm5pbmdzIG1vcmUgdW5kZXJzdGFuZGFibGUsIHdlJ2xsIHVzZSBhIGxpdHRsZSBoYWNrIGhlcmUgdG9cXG4gICAgLy8gZW5zdXJlIHRoYXQgQ29uc3RydWN0b3IubmFtZSAhPT0gJ0NvbnN0cnVjdG9yJy4gVGhpcyBtYWtlcyBzdXJlIHdlIGRvbid0XFxuICAgIC8vIHVubmVjZXNzYXJpbHkgaWRlbnRpZnkgYSBjbGFzcyB3aXRob3V0IGRpc3BsYXlOYW1lIGFzICdDb25zdHJ1Y3RvcicuXFxuICAgIHZhciBDb25zdHJ1Y3RvciA9IGlkZW50aXR5KGZ1bmN0aW9uKHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XFxuICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBnZXRzIG92ZXJyaWRkZW4gYnkgbW9ja3MuIFRoZSBhcmd1bWVudCBpcyB1c2VkXFxuICAgICAgLy8gYnkgbW9ja3MgdG8gYXNzZXJ0IG9uIHdoYXQgZ2V0cyBtb3VudGVkLlxcblxcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XFxuICAgICAgICB3YXJuaW5nKFxcbiAgICAgICAgICB0aGlzIGluc3RhbmNlb2YgQ29uc3RydWN0b3IsXFxuICAgICAgICAgICdTb21ldGhpbmcgaXMgY2FsbGluZyBhIFJlYWN0IGNvbXBvbmVudCBkaXJlY3RseS4gVXNlIGEgZmFjdG9yeSBvciAnICtcXG4gICAgICAgICAgICAnSlNYIGluc3RlYWQuIFNlZTogaHR0cHM6Ly9mYi5tZS9yZWFjdC1sZWdhY3lmYWN0b3J5J1xcbiAgICAgICAgKTtcXG4gICAgICB9XFxuXFxuICAgICAgLy8gV2lyZSB1cCBhdXRvLWJpbmRpbmdcXG4gICAgICBpZiAodGhpcy5fX3JlYWN0QXV0b0JpbmRQYWlycy5sZW5ndGgpIHtcXG4gICAgICAgIGJpbmRBdXRvQmluZE1ldGhvZHModGhpcyk7XFxuICAgICAgfVxcblxcbiAgICAgIHRoaXMucHJvcHMgPSBwcm9wcztcXG4gICAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xcbiAgICAgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xcbiAgICAgIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XFxuXFxuICAgICAgdGhpcy5zdGF0ZSA9IG51bGw7XFxuXFxuICAgICAgLy8gUmVhY3RDbGFzc2VzIGRvZXNuJ3QgaGF2ZSBjb25zdHJ1Y3RvcnMuIEluc3RlYWQsIHRoZXkgdXNlIHRoZVxcbiAgICAgIC8vIGdldEluaXRpYWxTdGF0ZSBhbmQgY29tcG9uZW50V2lsbE1vdW50IG1ldGhvZHMgZm9yIGluaXRpYWxpemF0aW9uLlxcblxcbiAgICAgIHZhciBpbml0aWFsU3RhdGUgPSB0aGlzLmdldEluaXRpYWxTdGF0ZSA/IHRoaXMuZ2V0SW5pdGlhbFN0YXRlKCkgOiBudWxsO1xcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XFxuICAgICAgICAvLyBXZSBhbGxvdyBhdXRvLW1vY2tzIHRvIHByb2NlZWQgYXMgaWYgdGhleSdyZSByZXR1cm5pbmcgbnVsbC5cXG4gICAgICAgIGlmIChcXG4gICAgICAgICAgaW5pdGlhbFN0YXRlID09PSB1bmRlZmluZWQgJiZcXG4gICAgICAgICAgdGhpcy5nZXRJbml0aWFsU3RhdGUuX2lzTW9ja0Z1bmN0aW9uXFxuICAgICAgICApIHtcXG4gICAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBiYWQgcHJhY3RpY2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmRcXG4gICAgICAgICAgLy8gZGVwcmVjYXRpbmcgdGhpcyBjb252ZW5pZW5jZS5cXG4gICAgICAgICAgaW5pdGlhbFN0YXRlID0gbnVsbDtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgICAgX2ludmFyaWFudChcXG4gICAgICAgIHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGluaXRpYWxTdGF0ZSksXFxuICAgICAgICAnJXMuZ2V0SW5pdGlhbFN0YXRlKCk6IG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsJyxcXG4gICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdcXG4gICAgICApO1xcblxcbiAgICAgIHRoaXMuc3RhdGUgPSBpbml0aWFsU3RhdGU7XFxuICAgIH0pO1xcbiAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBuZXcgUmVhY3RDbGFzc0NvbXBvbmVudCgpO1xcbiAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjtcXG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJzID0gW107XFxuXFxuICAgIGluamVjdGVkTWl4aW5zLmZvckVhY2gobWl4U3BlY0ludG9Db21wb25lbnQuYmluZChudWxsLCBDb25zdHJ1Y3RvcikpO1xcblxcbiAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3RvciwgSXNNb3VudGVkUHJlTWl4aW4pO1xcbiAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3BlYyk7XFxuICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBJc01vdW50ZWRQb3N0TWl4aW4pO1xcblxcbiAgICAvLyBJbml0aWFsaXplIHRoZSBkZWZhdWx0UHJvcHMgcHJvcGVydHkgYWZ0ZXIgYWxsIG1peGlucyBoYXZlIGJlZW4gbWVyZ2VkLlxcbiAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XFxuICAgICAgQ29uc3RydWN0b3IuZGVmYXVsdFByb3BzID0gQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKCk7XFxuICAgIH1cXG5cXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gICAgICAvLyBUaGlzIGlzIGEgdGFnIHRvIGluZGljYXRlIHRoYXQgdGhlIHVzZSBvZiB0aGVzZSBtZXRob2QgbmFtZXMgaXMgb2ssXFxuICAgICAgLy8gc2luY2UgaXQncyB1c2VkIHdpdGggY3JlYXRlQ2xhc3MuIElmIGl0J3Mgbm90LCB0aGVuIGl0J3MgbGlrZWx5IGFcXG4gICAgICAvLyBtaXN0YWtlIHNvIHdlJ2xsIHdhcm4geW91IHRvIHVzZSB0aGUgc3RhdGljIHByb3BlcnR5LCBwcm9wZXJ0eVxcbiAgICAgIC8vIGluaXRpYWxpemVyIG9yIGNvbnN0cnVjdG9yIHJlc3BlY3RpdmVseS5cXG4gICAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XFxuICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTtcXG4gICAgICB9XFxuICAgICAgaWYgKENvbnN0cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFsU3RhdGUpIHtcXG4gICAgICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgX2ludmFyaWFudChcXG4gICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUucmVuZGVyLFxcbiAgICAgICdjcmVhdGVDbGFzcyguLi4pOiBDbGFzcyBzcGVjaWZpY2F0aW9uIG11c3QgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLidcXG4gICAgKTtcXG5cXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gICAgICB3YXJuaW5nKFxcbiAgICAgICAgIUNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25lbnRTaG91bGRVcGRhdGUsXFxuICAgICAgICAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICtcXG4gICAgICAgICAgJ2NvbXBvbmVudFNob3VsZFVwZGF0ZSgpLiBEaWQgeW91IG1lYW4gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk/ICcgK1xcbiAgICAgICAgICAnVGhlIG5hbWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzICcgK1xcbiAgICAgICAgICAnZXhwZWN0ZWQgdG8gcmV0dXJuIGEgdmFsdWUuJyxcXG4gICAgICAgIHNwZWMuZGlzcGxheU5hbWUgfHwgJ0EgY29tcG9uZW50J1xcbiAgICAgICk7XFxuICAgICAgd2FybmluZyhcXG4gICAgICAgICFDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyxcXG4gICAgICAgICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgK1xcbiAgICAgICAgICAnY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcygpLiBEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpPycsXFxuICAgICAgICBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCdcXG4gICAgICApO1xcbiAgICB9XFxuXFxuICAgIC8vIFJlZHVjZSB0aW1lIHNwZW50IGRvaW5nIGxvb2t1cHMgYnkgc2V0dGluZyB0aGVzZSBvbiB0aGUgcHJvdG90eXBlLlxcbiAgICBmb3IgKHZhciBtZXRob2ROYW1lIGluIFJlYWN0Q2xhc3NJbnRlcmZhY2UpIHtcXG4gICAgICBpZiAoIUNvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSkge1xcbiAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdID0gbnVsbDtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xcbiAgfVxcblxcbiAgcmV0dXJuIGNyZWF0ZUNsYXNzO1xcbn1cXG5cXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3Rvcnk7XFxuXFxuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vLi4vcHJvY2Vzcy9icm93c2VyLmpzICovIDApKSkvLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lNakl1YW5NaUxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5K0wyTnlaV0YwWlMxeVpXRmpkQzFqYkdGemN5OW1ZV04wYjNKNUxtcHpQelJtTW1VaVhTd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdLR01wSURJd01UTXRjSEpsYzJWdWRDd2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQk5TVlFnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzVjYmlBcVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdYMkZ6YzJsbmJpQTlJSEpsY1hWcGNtVW9KMjlpYW1WamRDMWhjM05wWjI0bktUdGNibHh1ZG1GeUlHVnRjSFI1VDJKcVpXTjBJRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2Wlcxd2RIbFBZbXBsWTNRbktUdGNiblpoY2lCZmFXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1Y2JtbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJSFpoY2lCM1lYSnVhVzVuSUQwZ2NtVnhkV2x5WlNnblptSnFjeTlzYVdJdmQyRnlibWx1WnljcE8xeHVmVnh1WEc1MllYSWdUVWxZU1U1VFgwdEZXU0E5SUNkdGFYaHBibk1uTzF4dVhHNHZMeUJJWld4d1pYSWdablZ1WTNScGIyNGdkRzhnWVd4c2IzY2dkR2hsSUdOeVpXRjBhVzl1SUc5bUlHRnViMjU1Ylc5MWN5Qm1kVzVqZEdsdmJuTWdkMmhwWTJnZ1pHOGdibTkwWEc0dkx5Qm9ZWFpsSUM1dVlXMWxJSE5sZENCMGJ5QjBhR1VnYm1GdFpTQnZaaUIwYUdVZ2RtRnlhV0ZpYkdVZ1ltVnBibWNnWVhOemFXZHVaV1FnZEc4dVhHNW1kVzVqZEdsdmJpQnBaR1Z1ZEdsMGVTaG1iaWtnZTF4dUlDQnlaWFIxY200Z1ptNDdYRzU5WEc1Y2JuWmhjaUJTWldGamRGQnliM0JVZVhCbFRHOWpZWFJwYjI1T1lXMWxjenRjYm1sbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lGSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZiazVoYldWeklEMGdlMXh1SUNBZ0lIQnliM0E2SUNkd2NtOXdKeXhjYmlBZ0lDQmpiMjUwWlhoME9pQW5ZMjl1ZEdWNGRDY3NYRzRnSUNBZ1kyaHBiR1JEYjI1MFpYaDBPaUFuWTJocGJHUWdZMjl1ZEdWNGRDZGNiaUFnZlR0Y2JuMGdaV3h6WlNCN1hHNGdJRkpsWVdOMFVISnZjRlI1Y0dWTWIyTmhkR2x2Yms1aGJXVnpJRDBnZTMwN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdaaFkzUnZjbmtvVW1WaFkzUkRiMjF3YjI1bGJuUXNJR2x6Vm1Gc2FXUkZiR1Z0Wlc1MExDQlNaV0ZqZEU1dmIzQlZjR1JoZEdWUmRXVjFaU2tnZTF4dUlDQXZLaXBjYmlBZ0lDb2dVRzlzYVdOcFpYTWdkR2hoZENCa1pYTmpjbWxpWlNCdFpYUm9iMlJ6SUdsdUlHQlNaV0ZqZEVOc1lYTnpTVzUwWlhKbVlXTmxZQzVjYmlBZ0lDb3ZYRzVjYmlBZ2RtRnlJR2x1YW1WamRHVmtUV2w0YVc1eklEMGdXMTA3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU52YlhCdmMybDBaU0JqYjIxd2IyNWxiblJ6SUdGeVpTQm9hV2RvWlhJdGJHVjJaV3dnWTI5dGNHOXVaVzUwY3lCMGFHRjBJR052YlhCdmMyVWdiM1JvWlhJZ1kyOXRjRzl6YVhSbFhHNGdJQ0FxSUc5eUlHaHZjM1FnWTI5dGNHOXVaVzUwY3k1Y2JpQWdJQ3BjYmlBZ0lDb2dWRzhnWTNKbFlYUmxJR0VnYm1WM0lIUjVjR1VnYjJZZ1lGSmxZV04wUTJ4aGMzTmdMQ0J3WVhOeklHRWdjM0JsWTJsbWFXTmhkR2x2YmlCdlpseHVJQ0FnS2lCNWIzVnlJRzVsZHlCamJHRnpjeUIwYnlCZ1VtVmhZM1F1WTNKbFlYUmxRMnhoYzNOZ0xpQlVhR1VnYjI1c2VTQnlaWEYxYVhKbGJXVnVkQ0J2WmlCNWIzVnlJR05zWVhOelhHNGdJQ0FxSUhOd1pXTnBabWxqWVhScGIyNGdhWE1nZEdoaGRDQjViM1VnYVcxd2JHVnRaVzUwSUdFZ1lISmxibVJsY21BZ2JXVjBhRzlrTGx4dUlDQWdLbHh1SUNBZ0tpQWdJSFpoY2lCTmVVTnZiWEJ2Ym1WdWRDQTlJRkpsWVdOMExtTnlaV0YwWlVOc1lYTnpLSHRjYmlBZ0lDb2dJQ0FnSUhKbGJtUmxjam9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FxSUNBZ0lDQWdJSEpsZEhWeWJpQThaR2wyUGtobGJHeHZJRmR2Y214a1BDOWthWFkrTzF4dUlDQWdLaUFnSUNBZ2ZWeHVJQ0FnS2lBZ0lIMHBPMXh1SUNBZ0tseHVJQ0FnS2lCVWFHVWdZMnhoYzNNZ2MzQmxZMmxtYVdOaGRHbHZiaUJ6ZFhCd2IzSjBjeUJoSUhOd1pXTnBabWxqSUhCeWIzUnZZMjlzSUc5bUlHMWxkR2h2WkhNZ2RHaGhkQ0JvWVhabFhHNGdJQ0FxSUhOd1pXTnBZV3dnYldWaGJtbHVaeUFvWlM1bkxpQmdjbVZ1WkdWeVlDa3VJRk5sWlNCZ1VtVmhZM1JEYkdGemMwbHVkR1Z5Wm1GalpXQWdabTl5WEc0Z0lDQXFJRzF2Y21VZ2RHaGxJR052YlhCeVpXaGxibk5wZG1VZ2NISnZkRzlqYjJ3dUlFRnVlU0J2ZEdobGNpQndjbTl3WlhKMGFXVnpJR0Z1WkNCdFpYUm9iMlJ6SUdsdUlIUm9aVnh1SUNBZ0tpQmpiR0Z6Y3lCemNHVmphV1pwWTJGMGFXOXVJSGRwYkd3Z1ltVWdZWFpoYVd4aFlteGxJRzl1SUhSb1pTQndjbTkwYjNSNWNHVXVYRzRnSUNBcVhHNGdJQ0FxSUVCcGJuUmxjbVpoWTJVZ1VtVmhZM1JEYkdGemMwbHVkR1Z5Wm1GalpWeHVJQ0FnS2lCQWFXNTBaWEp1WVd4Y2JpQWdJQ292WEc0Z0lIWmhjaUJTWldGamRFTnNZWE56U1c1MFpYSm1ZV05sSUQwZ2UxeHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlFRnVJR0Z5Y21GNUlHOW1JRTFwZUdsdUlHOWlhbVZqZEhNZ2RHOGdhVzVqYkhWa1pTQjNhR1Z1SUdSbFptbHVhVzVuSUhsdmRYSWdZMjl0Y0c5dVpXNTBMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSFI1Y0dVZ2UyRnljbUY1ZlZ4dUlDQWdJQ0FxSUVCdmNIUnBiMjVoYkZ4dUlDQWdJQ0FxTDF4dUlDQWdJRzFwZUdsdWN6b2dKMFJGUmtsT1JWOU5RVTVaSnl4Y2JseHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlFRnVJRzlpYW1WamRDQmpiMjUwWVdsdWFXNW5JSEJ5YjNCbGNuUnBaWE1nWVc1a0lHMWxkR2h2WkhNZ2RHaGhkQ0J6YUc5MWJHUWdZbVVnWkdWbWFXNWxaQ0J2Ymx4dUlDQWdJQ0FxSUhSb1pTQmpiMjF3YjI1bGJuUW5jeUJqYjI1emRISjFZM1J2Y2lCcGJuTjBaV0ZrSUc5bUlHbDBjeUJ3Y205MGIzUjVjR1VnS0hOMFlYUnBZeUJ0WlhSb2IyUnpLUzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUIwZVhCbElIdHZZbXBsWTNSOVhHNGdJQ0FnSUNvZ1FHOXdkR2x2Ym1Gc1hHNGdJQ0FnSUNvdlhHNGdJQ0FnYzNSaGRHbGpjem9nSjBSRlJrbE9SVjlOUVU1Wkp5eGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRVJsWm1sdWFYUnBiMjRnYjJZZ2NISnZjQ0IwZVhCbGN5Qm1iM0lnZEdocGN5QmpiMjF3YjI1bGJuUXVYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQkFkSGx3WlNCN2IySnFaV04wZlZ4dUlDQWdJQ0FxSUVCdmNIUnBiMjVoYkZ4dUlDQWdJQ0FxTDF4dUlDQWdJSEJ5YjNCVWVYQmxjem9nSjBSRlJrbE9SVjlOUVU1Wkp5eGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRVJsWm1sdWFYUnBiMjRnYjJZZ1kyOXVkR1Y0ZENCMGVYQmxjeUJtYjNJZ2RHaHBjeUJqYjIxd2IyNWxiblF1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJBZEhsd1pTQjdiMkpxWldOMGZWeHVJQ0FnSUNBcUlFQnZjSFJwYjI1aGJGeHVJQ0FnSUNBcUwxeHVJQ0FnSUdOdmJuUmxlSFJVZVhCbGN6b2dKMFJGUmtsT1JWOU5RVTVaSnl4Y2JseHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlFUmxabWx1YVhScGIyNGdiMllnWTI5dWRHVjRkQ0IwZVhCbGN5QjBhR2x6SUdOdmJYQnZibVZ1ZENCelpYUnpJR1p2Y2lCcGRITWdZMmhwYkdSeVpXNHVYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQkFkSGx3WlNCN2IySnFaV04wZlZ4dUlDQWdJQ0FxSUVCdmNIUnBiMjVoYkZ4dUlDQWdJQ0FxTDF4dUlDQWdJR05vYVd4a1EyOXVkR1Y0ZEZSNWNHVnpPaUFuUkVWR1NVNUZYMDFCVGxrbkxGeHVYRzRnSUNBZ0x5OGdQVDA5UFNCRVpXWnBibWwwYVc5dUlHMWxkR2h2WkhNZ1BUMDlQVnh1WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nU1c1MmIydGxaQ0IzYUdWdUlIUm9aU0JqYjIxd2IyNWxiblFnYVhNZ2JXOTFiblJsWkM0Z1ZtRnNkV1Z6SUdsdUlIUm9aU0J0WVhCd2FXNW5JSGRwYkd3Z1ltVWdjMlYwSUc5dVhHNGdJQ0FnSUNvZ1lIUm9hWE11Y0hKdmNITmdJR2xtSUhSb1lYUWdjSEp2Y0NCcGN5QnViM1FnYzNCbFkybG1hV1ZrSUNocExtVXVJSFZ6YVc1bklHRnVJR0JwYm1BZ1kyaGxZMnNwTGx4dUlDQWdJQ0FxWEc0Z0lDQWdJQ29nVkdocGN5QnRaWFJvYjJRZ2FYTWdhVzUyYjJ0bFpDQmlaV1p2Y21VZ1lHZGxkRWx1YVhScFlXeFRkR0YwWldBZ1lXNWtJSFJvWlhKbFptOXlaU0JqWVc1dWIzUWdjbVZzZVZ4dUlDQWdJQ0FxSUc5dUlHQjBhR2x6TG5OMFlYUmxZQ0J2Y2lCMWMyVWdZSFJvYVhNdWMyVjBVM1JoZEdWZ0xseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1FISmxkSFZ5YmlCN2IySnFaV04wZlZ4dUlDQWdJQ0FxSUVCdmNIUnBiMjVoYkZ4dUlDQWdJQ0FxTDF4dUlDQWdJR2RsZEVSbFptRjFiSFJRY205d2N6b2dKMFJGUmtsT1JWOU5RVTVaWDAxRlVrZEZSQ2NzWEc1Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCSmJuWnZhMlZrSUc5dVkyVWdZbVZtYjNKbElIUm9aU0JqYjIxd2IyNWxiblFnYVhNZ2JXOTFiblJsWkM0Z1ZHaGxJSEpsZEhWeWJpQjJZV3gxWlNCM2FXeHNJR0psSUhWelpXUmNiaUFnSUNBZ0tpQmhjeUIwYUdVZ2FXNXBkR2xoYkNCMllXeDFaU0J2WmlCZ2RHaHBjeTV6ZEdGMFpXQXVYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQWdJR2RsZEVsdWFYUnBZV3hUZEdGMFpUb2dablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdJQ29nSUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNvZ0lDQWdJQ0FnYVhOUGJqb2dabUZzYzJVc1hHNGdJQ0FnSUNvZ0lDQWdJQ0FnWm05dlFtRjZPaUJ1WlhjZ1FtRjZSbTl2S0NsY2JpQWdJQ0FnS2lBZ0lDQWdmVnh1SUNBZ0lDQXFJQ0FnZlZ4dUlDQWdJQ0FxWEc0Z0lDQWdJQ29nUUhKbGRIVnliaUI3YjJKcVpXTjBmVnh1SUNBZ0lDQXFJRUJ2Y0hScGIyNWhiRnh1SUNBZ0lDQXFMMXh1SUNBZ0lHZGxkRWx1YVhScFlXeFRkR0YwWlRvZ0owUkZSa2xPUlY5TlFVNVpYMDFGVWtkRlJDY3NYRzVjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJBY21WMGRYSnVJSHR2WW1wbFkzUjlYRzRnSUNBZ0lDb2dRRzl3ZEdsdmJtRnNYRzRnSUNBZ0lDb3ZYRzRnSUNBZ1oyVjBRMmhwYkdSRGIyNTBaWGgwT2lBblJFVkdTVTVGWDAxQlRsbGZUVVZTUjBWRUp5eGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRlZ6WlhNZ2NISnZjSE1nWm5KdmJTQmdkR2hwY3k1d2NtOXdjMkFnWVc1a0lITjBZWFJsSUdaeWIyMGdZSFJvYVhNdWMzUmhkR1ZnSUhSdklISmxibVJsY2lCMGFHVmNiaUFnSUNBZ0tpQnpkSEoxWTNSMWNtVWdiMllnZEdobElHTnZiWEJ2Ym1WdWRDNWNiaUFnSUNBZ0tseHVJQ0FnSUNBcUlFNXZJR2QxWVhKaGJuUmxaWE1nWVhKbElHMWhaR1VnWVdKdmRYUWdkMmhsYmlCdmNpQm9iM2NnYjJaMFpXNGdkR2hwY3lCdFpYUm9iMlFnYVhNZ2FXNTJiMnRsWkN3Z2MyOWNiaUFnSUNBZ0tpQnBkQ0J0ZFhOMElHNXZkQ0JvWVhabElITnBaR1VnWldabVpXTjBjeTVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJQ0FnY21WdVpHVnlPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0FnS2lBZ0lDQWdkbUZ5SUc1aGJXVWdQU0IwYUdsekxuQnliM0J6TG01aGJXVTdYRzRnSUNBZ0lDb2dJQ0FnSUhKbGRIVnliaUE4WkdsMlBraGxiR3h2TENCN2JtRnRaWDBoUEM5a2FYWStPMXh1SUNBZ0lDQXFJQ0FnZlZ4dUlDQWdJQ0FxWEc0Z0lDQWdJQ29nUUhKbGRIVnliaUI3VW1WaFkzUkRiMjF3YjI1bGJuUjlYRzRnSUNBZ0lDb2dRSEpsY1hWcGNtVmtYRzRnSUNBZ0lDb3ZYRzRnSUNBZ2NtVnVaR1Z5T2lBblJFVkdTVTVGWDA5T1EwVW5MRnh1WEc0Z0lDQWdMeThnUFQwOVBTQkVaV3hsWjJGMFpTQnRaWFJvYjJSeklEMDlQVDFjYmx4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUVsdWRtOXJaV1FnZDJobGJpQjBhR1VnWTI5dGNHOXVaVzUwSUdseklHbHVhWFJwWVd4c2VTQmpjbVZoZEdWa0lHRnVaQ0JoWW05MWRDQjBieUJpWlNCdGIzVnVkR1ZrTGx4dUlDQWdJQ0FxSUZSb2FYTWdiV0Y1SUdoaGRtVWdjMmxrWlNCbFptWmxZM1J6TENCaWRYUWdZVzU1SUdWNGRHVnlibUZzSUhOMVluTmpjbWx3ZEdsdmJuTWdiM0lnWkdGMFlTQmpjbVZoZEdWa1hHNGdJQ0FnSUNvZ1lua2dkR2hwY3lCdFpYUm9iMlFnYlhWemRDQmlaU0JqYkdWaGJtVmtJSFZ3SUdsdUlHQmpiMjF3YjI1bGJuUlhhV3hzVlc1dGIzVnVkR0F1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJBYjNCMGFXOXVZV3hjYmlBZ0lDQWdLaTljYmlBZ0lDQmpiMjF3YjI1bGJuUlhhV3hzVFc5MWJuUTZJQ2RFUlVaSlRrVmZUVUZPV1Njc1hHNWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQkpiblp2YTJWa0lIZG9aVzRnZEdobElHTnZiWEJ2Ym1WdWRDQm9ZWE1nWW1WbGJpQnRiM1Z1ZEdWa0lHRnVaQ0JvWVhNZ1lTQkVUMDBnY21Wd2NtVnpaVzUwWVhScGIyNHVYRzRnSUNBZ0lDb2dTRzkzWlhabGNpd2dkR2hsY21VZ2FYTWdibThnWjNWaGNtRnVkR1ZsSUhSb1lYUWdkR2hsSUVSUFRTQnViMlJsSUdseklHbHVJSFJvWlNCa2IyTjFiV1Z1ZEM1Y2JpQWdJQ0FnS2x4dUlDQWdJQ0FxSUZWelpTQjBhR2x6SUdGeklHRnVJRzl3Y0c5eWRIVnVhWFI1SUhSdklHOXdaWEpoZEdVZ2IyNGdkR2hsSUVSUFRTQjNhR1Z1SUhSb1pTQmpiMjF3YjI1bGJuUWdhR0Z6WEc0Z0lDQWdJQ29nWW1WbGJpQnRiM1Z1ZEdWa0lDaHBibWwwYVdGc2FYcGxaQ0JoYm1RZ2NtVnVaR1Z5WldRcElHWnZjaUIwYUdVZ1ptbHljM1FnZEdsdFpTNWNiaUFnSUNBZ0tseHVJQ0FnSUNBcUlFQndZWEpoYlNCN1JFOU5SV3hsYldWdWRIMGdjbTl2ZEU1dlpHVWdSRTlOSUdWc1pXMWxiblFnY21Wd2NtVnpaVzUwYVc1bklIUm9aU0JqYjIxd2IyNWxiblF1WEc0Z0lDQWdJQ29nUUc5d2RHbHZibUZzWEc0Z0lDQWdJQ292WEc0Z0lDQWdZMjl0Y0c5dVpXNTBSR2xrVFc5MWJuUTZJQ2RFUlVaSlRrVmZUVUZPV1Njc1hHNWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQkpiblp2YTJWa0lHSmxabTl5WlNCMGFHVWdZMjl0Y0c5dVpXNTBJSEpsWTJWcGRtVnpJRzVsZHlCd2NtOXdjeTVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRlZ6WlNCMGFHbHpJR0Z6SUdGdUlHOXdjRzl5ZEhWdWFYUjVJSFJ2SUhKbFlXTjBJSFJ2SUdFZ2NISnZjQ0IwY21GdWMybDBhVzl1SUdKNUlIVndaR0YwYVc1bklIUm9aVnh1SUNBZ0lDQXFJSE4wWVhSbElIVnphVzVuSUdCMGFHbHpMbk5sZEZOMFlYUmxZQzRnUTNWeWNtVnVkQ0J3Y205d2N5QmhjbVVnWVdOalpYTnpaV1FnZG1saElHQjBhR2x6TG5CeWIzQnpZQzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJQ0FnWTI5dGNHOXVaVzUwVjJsc2JGSmxZMlZwZG1WUWNtOXdjem9nWm5WdVkzUnBiMjRvYm1WNGRGQnliM0J6TENCdVpYaDBRMjl1ZEdWNGRDa2dlMXh1SUNBZ0lDQXFJQ0FnSUNCMGFHbHpMbk5sZEZOMFlYUmxLSHRjYmlBZ0lDQWdLaUFnSUNBZ0lDQnNhV3RsYzBsdVkzSmxZWE5wYm1jNklHNWxlSFJRY205d2N5NXNhV3RsUTI5MWJuUWdQaUIwYUdsekxuQnliM0J6TG14cGEyVkRiM1Z1ZEZ4dUlDQWdJQ0FxSUNBZ0lDQjlLVHRjYmlBZ0lDQWdLaUFnSUgxY2JpQWdJQ0FnS2x4dUlDQWdJQ0FxSUU1UFZFVTZJRlJvWlhKbElHbHpJRzV2SUdWeGRXbDJZV3hsYm5RZ1lHTnZiWEJ2Ym1WdWRGZHBiR3hTWldObGFYWmxVM1JoZEdWZ0xpQkJiaUJwYm1OdmJXbHVaeUJ3Y205d1hHNGdJQ0FnSUNvZ2RISmhibk5wZEdsdmJpQnRZWGtnWTJGMWMyVWdZU0J6ZEdGMFpTQmphR0Z1WjJVc0lHSjFkQ0IwYUdVZ2IzQndiM05wZEdVZ2FYTWdibTkwSUhSeWRXVXVJRWxtSUhsdmRWeHVJQ0FnSUNBcUlHNWxaV1FnYVhRc0lIbHZkU0JoY21VZ2NISnZZbUZpYkhrZ2JHOXZhMmx1WnlCbWIzSWdZR052YlhCdmJtVnVkRmRwYkd4VmNHUmhkR1ZnTGx4dUlDQWdJQ0FxWEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJRzVsZUhSUWNtOXdjMXh1SUNBZ0lDQXFJRUJ2Y0hScGIyNWhiRnh1SUNBZ0lDQXFMMXh1SUNBZ0lHTnZiWEJ2Ym1WdWRGZHBiR3hTWldObGFYWmxVSEp2Y0hNNklDZEVSVVpKVGtWZlRVRk9XU2NzWEc1Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCSmJuWnZhMlZrSUhkb2FXeGxJR1JsWTJsa2FXNW5JR2xtSUhSb1pTQmpiMjF3YjI1bGJuUWdjMmh2ZFd4a0lHSmxJSFZ3WkdGMFpXUWdZWE1nWVNCeVpYTjFiSFFnYjJaY2JpQWdJQ0FnS2lCeVpXTmxhWFpwYm1jZ2JtVjNJSEJ5YjNCekxDQnpkR0YwWlNCaGJtUXZiM0lnWTI5dWRHVjRkQzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRlZ6WlNCMGFHbHpJR0Z6SUdGdUlHOXdjRzl5ZEhWdWFYUjVJSFJ2SUdCeVpYUjFjbTRnWm1Gc2MyVmdJSGRvWlc0Z2VXOTFKM0psSUdObGNuUmhhVzRnZEdoaGRDQjBhR1ZjYmlBZ0lDQWdLaUIwY21GdWMybDBhVzl1SUhSdklIUm9aU0J1WlhjZ2NISnZjSE12YzNSaGRHVXZZMjl1ZEdWNGRDQjNhV3hzSUc1dmRDQnlaWEYxYVhKbElHRWdZMjl0Y0c5dVpXNTBYRzRnSUNBZ0lDb2dkWEJrWVhSbExseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ0lDQnphRzkxYkdSRGIyMXdiMjVsYm5SVmNHUmhkR1U2SUdaMWJtTjBhVzl1S0c1bGVIUlFjbTl3Y3l3Z2JtVjRkRk4wWVhSbExDQnVaWGgwUTI5dWRHVjRkQ2tnZTF4dUlDQWdJQ0FxSUNBZ0lDQnlaWFIxY200Z0lXVnhkV0ZzS0c1bGVIUlFjbTl3Y3l3Z2RHaHBjeTV3Y205d2N5a2dmSHhjYmlBZ0lDQWdLaUFnSUNBZ0lDQWhaWEYxWVd3b2JtVjRkRk4wWVhSbExDQjBhR2x6TG5OMFlYUmxLU0I4ZkZ4dUlDQWdJQ0FxSUNBZ0lDQWdJQ0ZsY1hWaGJDaHVaWGgwUTI5dWRHVjRkQ3dnZEdocGN5NWpiMjUwWlhoMEtUdGNiaUFnSUNBZ0tpQWdJSDFjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQnVaWGgwVUhKdmNITmNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2V6OXZZbXBsWTNSOUlHNWxlSFJUZEdGMFpWeHVJQ0FnSUNBcUlFQndZWEpoYlNCN1AyOWlhbVZqZEgwZ2JtVjRkRU52Ym5SbGVIUmNiaUFnSUNBZ0tpQkFjbVYwZFhKdUlIdGliMjlzWldGdWZTQlVjblZsSUdsbUlIUm9aU0JqYjIxd2IyNWxiblFnYzJodmRXeGtJSFZ3WkdGMFpTNWNiaUFnSUNBZ0tpQkFiM0IwYVc5dVlXeGNiaUFnSUNBZ0tpOWNiaUFnSUNCemFHOTFiR1JEYjIxd2IyNWxiblJWY0dSaGRHVTZJQ2RFUlVaSlRrVmZUMDVEUlNjc1hHNWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQkpiblp2YTJWa0lIZG9aVzRnZEdobElHTnZiWEJ2Ym1WdWRDQnBjeUJoWW05MWRDQjBieUIxY0dSaGRHVWdaSFZsSUhSdklHRWdkSEpoYm5OcGRHbHZiaUJtY205dFhHNGdJQ0FnSUNvZ1lIUm9hWE11Y0hKdmNITmdMQ0JnZEdocGN5NXpkR0YwWldBZ1lXNWtJR0IwYUdsekxtTnZiblJsZUhSZ0lIUnZJR0J1WlhoMFVISnZjSE5nTENCZ2JtVjRkRk4wWVhSbFlGeHVJQ0FnSUNBcUlHRnVaQ0JnYm1WNGRFTnZiblJsZUhSZ0xseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1ZYTmxJSFJvYVhNZ1lYTWdZVzRnYjNCd2IzSjBkVzVwZEhrZ2RHOGdjR1Z5Wm05eWJTQndjbVZ3WVhKaGRHbHZiaUJpWldadmNtVWdZVzRnZFhCa1lYUmxJRzlqWTNWeWN5NWNiaUFnSUNBZ0tseHVJQ0FnSUNBcUlFNVBWRVU2SUZsdmRTQXFLbU5oYm01dmRDb3FJSFZ6WlNCZ2RHaHBjeTV6WlhSVGRHRjBaU2dwWUNCcGJpQjBhR2x6SUcxbGRHaHZaQzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQnVaWGgwVUhKdmNITmNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2V6OXZZbXBsWTNSOUlHNWxlSFJUZEdGMFpWeHVJQ0FnSUNBcUlFQndZWEpoYlNCN1AyOWlhbVZqZEgwZ2JtVjRkRU52Ym5SbGVIUmNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UxSmxZV04wVW1WamIyNWphV3hsVkhKaGJuTmhZM1JwYjI1OUlIUnlZVzV6WVdOMGFXOXVYRzRnSUNBZ0lDb2dRRzl3ZEdsdmJtRnNYRzRnSUNBZ0lDb3ZYRzRnSUNBZ1kyOXRjRzl1Wlc1MFYybHNiRlZ3WkdGMFpUb2dKMFJGUmtsT1JWOU5RVTVaSnl4Y2JseHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlFbHVkbTlyWldRZ2QyaGxiaUIwYUdVZ1kyOXRjRzl1Wlc1MEozTWdSRTlOSUhKbGNISmxjMlZ1ZEdGMGFXOXVJR2hoY3lCaVpXVnVJSFZ3WkdGMFpXUXVYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQlZjMlVnZEdocGN5QmhjeUJoYmlCdmNIQnZjblIxYm1sMGVTQjBieUJ2Y0dWeVlYUmxJRzl1SUhSb1pTQkVUMDBnZDJobGJpQjBhR1VnWTI5dGNHOXVaVzUwSUdoaGMxeHVJQ0FnSUNBcUlHSmxaVzRnZFhCa1lYUmxaQzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQndjbVYyVUhKdmNITmNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2V6OXZZbXBsWTNSOUlIQnlaWFpUZEdGMFpWeHVJQ0FnSUNBcUlFQndZWEpoYlNCN1AyOWlhbVZqZEgwZ2NISmxka052Ym5SbGVIUmNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UwUlBUVVZzWlcxbGJuUjlJSEp2YjNST2IyUmxJRVJQVFNCbGJHVnRaVzUwSUhKbGNISmxjMlZ1ZEdsdVp5QjBhR1VnWTI5dGNHOXVaVzUwTGx4dUlDQWdJQ0FxSUVCdmNIUnBiMjVoYkZ4dUlDQWdJQ0FxTDF4dUlDQWdJR052YlhCdmJtVnVkRVJwWkZWd1pHRjBaVG9nSjBSRlJrbE9SVjlOUVU1Wkp5eGNibHh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRWx1ZG05clpXUWdkMmhsYmlCMGFHVWdZMjl0Y0c5dVpXNTBJR2x6SUdGaWIzVjBJSFJ2SUdKbElISmxiVzkyWldRZ1puSnZiU0JwZEhNZ2NHRnlaVzUwSUdGdVpDQm9ZWFpsWEc0Z0lDQWdJQ29nYVhSeklFUlBUU0J5WlhCeVpYTmxiblJoZEdsdmJpQmtaWE4wY205NVpXUXVYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQlZjMlVnZEdocGN5QmhjeUJoYmlCdmNIQnZjblIxYm1sMGVTQjBieUJrWldGc2JHOWpZWFJsSUdGdWVTQmxlSFJsY201aGJDQnlaWE52ZFhKalpYTXVYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQk9UMVJGT2lCVWFHVnlaU0JwY3lCdWJ5QmdZMjl0Y0c5dVpXNTBSR2xrVlc1dGIzVnVkR0FnYzJsdVkyVWdlVzkxY2lCamIyMXdiMjVsYm5RZ2QybHNiQ0JvWVhabElHSmxaVzVjYmlBZ0lDQWdLaUJrWlhOMGNtOTVaV1FnWW5rZ2RHaGhkQ0J3YjJsdWRDNWNiaUFnSUNBZ0tseHVJQ0FnSUNBcUlFQnZjSFJwYjI1aGJGeHVJQ0FnSUNBcUwxeHVJQ0FnSUdOdmJYQnZibVZ1ZEZkcGJHeFZibTF2ZFc1ME9pQW5SRVZHU1U1RlgwMUJUbGtuTEZ4dVhHNGdJQ0FnTHk4Z1BUMDlQU0JCWkhaaGJtTmxaQ0J0WlhSb2IyUnpJRDA5UFQxY2JseHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlGVndaR0YwWlhNZ2RHaGxJR052YlhCdmJtVnVkQ2R6SUdOMWNuSmxiblJzZVNCdGIzVnVkR1ZrSUVSUFRTQnlaWEJ5WlhObGJuUmhkR2x2Ymk1Y2JpQWdJQ0FnS2x4dUlDQWdJQ0FxSUVKNUlHUmxabUYxYkhRc0lIUm9hWE1nYVcxd2JHVnRaVzUwY3lCU1pXRmpkQ2R6SUhKbGJtUmxjbWx1WnlCaGJtUWdjbVZqYjI1amFXeHBZWFJwYjI0Z1lXeG5iM0pwZEdodExseHVJQ0FnSUNBcUlGTnZjR2hwYzNScFkyRjBaV1FnWTJ4cFpXNTBjeUJ0WVhrZ2QybHphQ0IwYnlCdmRtVnljbWxrWlNCMGFHbHpMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSEJoY21GdElIdFNaV0ZqZEZKbFkyOXVZMmxzWlZSeVlXNXpZV04wYVc5dWZTQjBjbUZ1YzJGamRHbHZibHh1SUNBZ0lDQXFJRUJwYm5SbGNtNWhiRnh1SUNBZ0lDQXFJRUJ2ZG1WeWNtbGtZV0pzWlZ4dUlDQWdJQ0FxTDF4dUlDQWdJSFZ3WkdGMFpVTnZiWEJ2Ym1WdWREb2dKMDlXUlZKU1NVUkZYMEpCVTBVblhHNGdJSDA3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRTFoY0hCcGJtY2dabkp2YlNCamJHRnpjeUJ6Y0dWamFXWnBZMkYwYVc5dUlHdGxlWE1nZEc4Z2MzQmxZMmxoYkNCd2NtOWpaWE56YVc1bklHWjFibU4wYVc5dWN5NWNiaUFnSUNwY2JpQWdJQ29nUVd4MGFHOTFaMmdnZEdobGMyVWdZWEpsSUdSbFkyeGhjbVZrSUd4cGEyVWdhVzV6ZEdGdVkyVWdjSEp2Y0dWeWRHbGxjeUJwYmlCMGFHVWdjM0JsWTJsbWFXTmhkR2x2Ymx4dUlDQWdLaUIzYUdWdUlHUmxabWx1YVc1bklHTnNZWE56WlhNZ2RYTnBibWNnWUZKbFlXTjBMbU55WldGMFpVTnNZWE56WUN3Z2RHaGxlU0JoY21VZ1lXTjBkV0ZzYkhrZ2MzUmhkR2xqWEc0Z0lDQXFJR0Z1WkNCaGNtVWdZV05qWlhOemFXSnNaU0J2YmlCMGFHVWdZMjl1YzNSeWRXTjBiM0lnYVc1emRHVmhaQ0J2WmlCMGFHVWdjSEp2ZEc5MGVYQmxMaUJFWlhOd2FYUmxYRzRnSUNBcUlHSmxhVzVuSUhOMFlYUnBZeXdnZEdobGVTQnRkWE4wSUdKbElHUmxabWx1WldRZ2IzVjBjMmxrWlNCdlppQjBhR1VnWENKemRHRjBhV056WENJZ2EyVjVJSFZ1WkdWeVhHNGdJQ0FxSUhkb2FXTm9JR0ZzYkNCdmRHaGxjaUJ6ZEdGMGFXTWdiV1YwYUc5a2N5QmhjbVVnWkdWbWFXNWxaQzVjYmlBZ0lDb3ZYRzRnSUhaaGNpQlNSVk5GVWxaRlJGOVRVRVZEWDB0RldWTWdQU0I3WEc0Z0lDQWdaR2x6Y0d4aGVVNWhiV1U2SUdaMWJtTjBhVzl1S0VOdmJuTjBjblZqZEc5eUxDQmthWE53YkdGNVRtRnRaU2tnZTF4dUlDQWdJQ0FnUTI5dWMzUnlkV04wYjNJdVpHbHpjR3hoZVU1aGJXVWdQU0JrYVhOd2JHRjVUbUZ0WlR0Y2JpQWdJQ0I5TEZ4dUlDQWdJRzFwZUdsdWN6b2dablZ1WTNScGIyNG9RMjl1YzNSeWRXTjBiM0lzSUcxcGVHbHVjeWtnZTF4dUlDQWdJQ0FnYVdZZ0tHMXBlR2x1Y3lrZ2UxeHVJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJRzFwZUdsdWN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHMXBlRk53WldOSmJuUnZRMjl0Y0c5dVpXNTBLRU52Ym5OMGNuVmpkRzl5TENCdGFYaHBibk5iYVYwcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTeGNiaUFnSUNCamFHbHNaRU52Ym5SbGVIUlVlWEJsY3pvZ1puVnVZM1JwYjI0b1EyOXVjM1J5ZFdOMGIzSXNJR05vYVd4a1EyOXVkR1Y0ZEZSNWNHVnpLU0I3WEc0Z0lDQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0IyWVd4cFpHRjBaVlI1Y0dWRVpXWW9RMjl1YzNSeWRXTjBiM0lzSUdOb2FXeGtRMjl1ZEdWNGRGUjVjR1Z6TENBblkyaHBiR1JEYjI1MFpYaDBKeWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JEYjI1emRISjFZM1J2Y2k1amFHbHNaRU52Ym5SbGVIUlVlWEJsY3lBOUlGOWhjM05wWjI0b1hHNGdJQ0FnSUNBZ0lIdDlMRnh1SUNBZ0lDQWdJQ0JEYjI1emRISjFZM1J2Y2k1amFHbHNaRU52Ym5SbGVIUlVlWEJsY3l4Y2JpQWdJQ0FnSUNBZ1kyaHBiR1JEYjI1MFpYaDBWSGx3WlhOY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlN4Y2JpQWdJQ0JqYjI1MFpYaDBWSGx3WlhNNklHWjFibU4wYVc5dUtFTnZibk4wY25WamRHOXlMQ0JqYjI1MFpYaDBWSGx3WlhNcElIdGNiaUFnSUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lIWmhiR2xrWVhSbFZIbHdaVVJsWmloRGIyNXpkSEoxWTNSdmNpd2dZMjl1ZEdWNGRGUjVjR1Z6TENBblkyOXVkR1Y0ZENjcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ1EyOXVjM1J5ZFdOMGIzSXVZMjl1ZEdWNGRGUjVjR1Z6SUQwZ1gyRnpjMmxuYmloY2JpQWdJQ0FnSUNBZ2UzMHNYRzRnSUNBZ0lDQWdJRU52Ym5OMGNuVmpkRzl5TG1OdmJuUmxlSFJVZVhCbGN5eGNiaUFnSUNBZ0lDQWdZMjl1ZEdWNGRGUjVjR1Z6WEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDBzWEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nVTNCbFkybGhiQ0JqWVhObElHZGxkRVJsWm1GMWJIUlFjbTl3Y3lCM2FHbGphQ0J6YUc5MWJHUWdiVzkyWlNCcGJuUnZJSE4wWVhScFkzTWdZblYwSUhKbGNYVnBjbVZ6WEc0Z0lDQWdJQ29nWVhWMGIyMWhkR2xqSUcxbGNtZHBibWN1WEc0Z0lDQWdJQ292WEc0Z0lDQWdaMlYwUkdWbVlYVnNkRkJ5YjNCek9pQm1kVzVqZEdsdmJpaERiMjV6ZEhKMVkzUnZjaXdnWjJWMFJHVm1ZWFZzZEZCeWIzQnpLU0I3WEc0Z0lDQWdJQ0JwWmlBb1EyOXVjM1J5ZFdOMGIzSXVaMlYwUkdWbVlYVnNkRkJ5YjNCektTQjdYRzRnSUNBZ0lDQWdJRU52Ym5OMGNuVmpkRzl5TG1kbGRFUmxabUYxYkhSUWNtOXdjeUE5SUdOeVpXRjBaVTFsY21kbFpGSmxjM1ZzZEVaMWJtTjBhVzl1S0Z4dUlDQWdJQ0FnSUNBZ0lFTnZibk4wY25WamRHOXlMbWRsZEVSbFptRjFiSFJRY205d2N5eGNiaUFnSUNBZ0lDQWdJQ0JuWlhSRVpXWmhkV3gwVUhKdmNITmNiaUFnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJRU52Ym5OMGNuVmpkRzl5TG1kbGRFUmxabUYxYkhSUWNtOXdjeUE5SUdkbGRFUmxabUYxYkhSUWNtOXdjenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlMRnh1SUNBZ0lIQnliM0JVZVhCbGN6b2dablZ1WTNScGIyNG9RMjl1YzNSeWRXTjBiM0lzSUhCeWIzQlVlWEJsY3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnNhV1JoZEdWVWVYQmxSR1ZtS0VOdmJuTjBjblZqZEc5eUxDQndjbTl3Vkhsd1pYTXNJQ2R3Y205d0p5azdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQkRiMjV6ZEhKMVkzUnZjaTV3Y205d1ZIbHdaWE1nUFNCZllYTnphV2R1S0h0OUxDQkRiMjV6ZEhKMVkzUnZjaTV3Y205d1ZIbHdaWE1zSUhCeWIzQlVlWEJsY3lrN1hHNGdJQ0FnZlN4Y2JpQWdJQ0J6ZEdGMGFXTnpPaUJtZFc1amRHbHZiaWhEYjI1emRISjFZM1J2Y2l3Z2MzUmhkR2xqY3lrZ2UxeHVJQ0FnSUNBZ2JXbDRVM1JoZEdsalUzQmxZMGx1ZEc5RGIyMXdiMjVsYm5Rb1EyOXVjM1J5ZFdOMGIzSXNJSE4wWVhScFkzTXBPMXh1SUNBZ0lIMHNYRzRnSUNBZ1lYVjBiMkpwYm1RNklHWjFibU4wYVc5dUtDa2dlMzFjYmlBZ2ZUdGNibHh1SUNCbWRXNWpkR2x2YmlCMllXeHBaR0YwWlZSNWNHVkVaV1lvUTI5dWMzUnlkV04wYjNJc0lIUjVjR1ZFWldZc0lHeHZZMkYwYVc5dUtTQjdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2NISnZjRTVoYldVZ2FXNGdkSGx3WlVSbFppa2dlMXh1SUNBZ0lDQWdhV1lnS0hSNWNHVkVaV1l1YUdGelQzZHVVSEp2Y0dWeWRIa29jSEp2Y0U1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUM4dklIVnpaU0JoSUhkaGNtNXBibWNnYVc1emRHVmhaQ0J2WmlCaGJpQmZhVzUyWVhKcFlXNTBJSE52SUdOdmJYQnZibVZ1ZEhOY2JpQWdJQ0FnSUNBZ0x5OGdaRzl1SjNRZ2MyaHZkeUIxY0NCcGJpQndjbTlrSUdKMWRDQnZibXg1SUdsdUlGOWZSRVZXWDE5Y2JpQWdJQ0FnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjNZWEp1YVc1bktGeHVJQ0FnSUNBZ0lDQWdJQ0FnZEhsd1pXOW1JSFI1Y0dWRVpXWmJjSEp2Y0U1aGJXVmRJRDA5UFNBblpuVnVZM1JwYjI0bkxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSnlWek9pQWxjeUIwZVhCbElHQWxjMkFnYVhNZ2FXNTJZV3hwWkRzZ2FYUWdiWFZ6ZENCaVpTQmhJR1oxYm1OMGFXOXVMQ0IxYzNWaGJHeDVJR1p5YjIwZ0p5QXJYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDZFNaV0ZqZEM1UWNtOXdWSGx3WlhNdUp5eGNiaUFnSUNBZ0lDQWdJQ0FnSUVOdmJuTjBjblZqZEc5eUxtUnBjM0JzWVhsT1lXMWxJSHg4SUNkU1pXRmpkRU5zWVhOekp5eGNiaUFnSUNBZ0lDQWdJQ0FnSUZKbFlXTjBVSEp2Y0ZSNWNHVk1iMk5oZEdsdmJrNWhiV1Z6VzJ4dlkyRjBhVzl1WFN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSEJ5YjNCT1lXMWxYRzRnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lHWjFibU4wYVc5dUlIWmhiR2xrWVhSbFRXVjBhRzlrVDNabGNuSnBaR1VvYVhOQmJISmxZV1I1UkdWbWFXNWxaQ3dnYm1GdFpTa2dlMXh1SUNBZ0lIWmhjaUJ6Y0dWalVHOXNhV041SUQwZ1VtVmhZM1JEYkdGemMwbHVkR1Z5Wm1GalpTNW9ZWE5QZDI1UWNtOXdaWEowZVNodVlXMWxLVnh1SUNBZ0lDQWdQeUJTWldGamRFTnNZWE56U1c1MFpYSm1ZV05sVzI1aGJXVmRYRzRnSUNBZ0lDQTZJRzUxYkd3N1hHNWNiaUFnSUNBdkx5QkVhWE5oYkd4dmR5QnZkbVZ5Y21sa2FXNW5JRzltSUdKaGMyVWdZMnhoYzNNZ2JXVjBhRzlrY3lCMWJteGxjM01nWlhod2JHbGphWFJzZVNCaGJHeHZkMlZrTGx4dUlDQWdJR2xtSUNoU1pXRmpkRU5zWVhOelRXbDRhVzR1YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrcElIdGNiaUFnSUNBZ0lGOXBiblpoY21saGJuUW9YRzRnSUNBZ0lDQWdJSE53WldOUWIyeHBZM2tnUFQwOUlDZFBWa1ZTVWtsRVJWOUNRVk5GSnl4Y2JpQWdJQ0FnSUNBZ0oxSmxZV04wUTJ4aGMzTkpiblJsY21aaFkyVTZJRmx2ZFNCaGNtVWdZWFIwWlcxd2RHbHVaeUIwYnlCdmRtVnljbWxrWlNBbklDdGNiaUFnSUNBZ0lDQWdJQ0FuWUNWellDQm1jbTl0SUhsdmRYSWdZMnhoYzNNZ2MzQmxZMmxtYVdOaGRHbHZiaTRnUlc1emRYSmxJSFJvWVhRZ2VXOTFjaUJ0WlhSb2IyUWdibUZ0WlhNZ0p5QXJYRzRnSUNBZ0lDQWdJQ0FnSjJSdklHNXZkQ0J2ZG1WeWJHRndJSGRwZEdnZ1VtVmhZM1FnYldWMGFHOWtjeTRuTEZ4dUlDQWdJQ0FnSUNCdVlXMWxYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJRVJwYzJGc2JHOTNJR1JsWm1sdWFXNW5JRzFsZEdodlpITWdiVzl5WlNCMGFHRnVJRzl1WTJVZ2RXNXNaWE56SUdWNGNHeHBZMmwwYkhrZ1lXeHNiM2RsWkM1Y2JpQWdJQ0JwWmlBb2FYTkJiSEpsWVdSNVJHVm1hVzVsWkNrZ2UxeHVJQ0FnSUNBZ1gybHVkbUZ5YVdGdWRDaGNiaUFnSUNBZ0lDQWdjM0JsWTFCdmJHbGplU0E5UFQwZ0owUkZSa2xPUlY5TlFVNVpKeUI4ZkNCemNHVmpVRzlzYVdONUlEMDlQU0FuUkVWR1NVNUZYMDFCVGxsZlRVVlNSMFZFSnl4Y2JpQWdJQ0FnSUNBZ0oxSmxZV04wUTJ4aGMzTkpiblJsY21aaFkyVTZJRmx2ZFNCaGNtVWdZWFIwWlcxd2RHbHVaeUIwYnlCa1pXWnBibVVnSnlBclhHNGdJQ0FnSUNBZ0lDQWdKMkFsYzJBZ2IyNGdlVzkxY2lCamIyMXdiMjVsYm5RZ2JXOXlaU0IwYUdGdUlHOXVZMlV1SUZSb2FYTWdZMjl1Wm14cFkzUWdiV0Y1SUdKbElHUjFaU0FuSUN0Y2JpQWdJQ0FnSUNBZ0lDQW5kRzhnWVNCdGFYaHBiaTRuTEZ4dUlDQWdJQ0FnSUNCdVlXMWxYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJOYVhocGJpQm9aV3h3WlhJZ2QyaHBZMmdnYUdGdVpHeGxjeUJ3YjJ4cFkza2dkbUZzYVdSaGRHbHZiaUJoYm1RZ2NtVnpaWEoyWldSY2JpQWdJQ29nYzNCbFkybG1hV05oZEdsdmJpQnJaWGx6SUhkb1pXNGdZblZwYkdScGJtY2dVbVZoWTNRZ1kyeGhjM05sY3k1Y2JpQWdJQ292WEc0Z0lHWjFibU4wYVc5dUlHMXBlRk53WldOSmJuUnZRMjl0Y0c5dVpXNTBLRU52Ym5OMGNuVmpkRzl5TENCemNHVmpLU0I3WEc0Z0lDQWdhV1lnS0NGemNHVmpLU0I3WEc0Z0lDQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ2RIbHdaVzltVTNCbFl5QTlJSFI1Y0dWdlppQnpjR1ZqTzF4dUlDQWdJQ0FnSUNCMllYSWdhWE5OYVhocGJsWmhiR2xrSUQwZ2RIbHdaVzltVTNCbFl5QTlQVDBnSjI5aWFtVmpkQ2NnSmlZZ2MzQmxZeUFoUFQwZ2JuVnNiRHRjYmx4dUlDQWdJQ0FnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lIZGhjbTVwYm1jb1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwYzAxcGVHbHVWbUZzYVdRc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JjSWlWek9pQlpiM1VuY21VZ1lYUjBaVzF3ZEdsdVp5QjBieUJwYm1Oc2RXUmxJR0VnYldsNGFXNGdkR2hoZENCcGN5QmxhWFJvWlhJZ2JuVnNiQ0JjSWlBclhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNkdmNpQnViM1FnWVc0Z2IySnFaV04wTGlCRGFHVmpheUIwYUdVZ2JXbDRhVzV6SUdsdVkyeDFaR1ZrSUdKNUlIUm9aU0JqYjIxd2IyNWxiblFzSUNjZ0sxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBbllYTWdkMlZzYkNCaGN5QmhibmtnYldsNGFXNXpJSFJvWlhrZ2FXNWpiSFZrWlNCMGFHVnRjMlZzZG1WekxpQW5JQ3RjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdKMFY0Y0dWamRHVmtJRzlpYW1WamRDQmlkWFFnWjI5MElDVnpMaWNzWEc0Z0lDQWdJQ0FnSUNBZ0lDQkRiMjV6ZEhKMVkzUnZjaTVrYVhOd2JHRjVUbUZ0WlNCOGZDQW5VbVZoWTNSRGJHRnpjeWNzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpjR1ZqSUQwOVBTQnVkV3hzSUQ4Z2JuVnNiQ0E2SUhSNWNHVnZabE53WldOY2JpQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmZhVzUyWVhKcFlXNTBLRnh1SUNBZ0lDQWdkSGx3Wlc5bUlITndaV01nSVQwOUlDZG1kVzVqZEdsdmJpY3NYRzRnSUNBZ0lDQmNJbEpsWVdOMFEyeGhjM002SUZsdmRTZHlaU0JoZEhSbGJYQjBhVzVuSUhSdklGd2lJQ3RjYmlBZ0lDQWdJQ0FnSjNWelpTQmhJR052YlhCdmJtVnVkQ0JqYkdGemN5QnZjaUJtZFc1amRHbHZiaUJoY3lCaElHMXBlR2x1TGlCSmJuTjBaV0ZrTENCcWRYTjBJSFZ6WlNCaElDY2dLMXh1SUNBZ0lDQWdJQ0FuY21WbmRXeGhjaUJ2WW1wbFkzUXVKMXh1SUNBZ0lDazdYRzRnSUNBZ1gybHVkbUZ5YVdGdWRDaGNiaUFnSUNBZ0lDRnBjMVpoYkdsa1JXeGxiV1Z1ZENoemNHVmpLU3hjYmlBZ0lDQWdJRndpVW1WaFkzUkRiR0Z6Y3pvZ1dXOTFKM0psSUdGMGRHVnRjSFJwYm1jZ2RHOGdYQ0lnSzF4dUlDQWdJQ0FnSUNBbmRYTmxJR0VnWTI5dGNHOXVaVzUwSUdGeklHRWdiV2w0YVc0dUlFbHVjM1JsWVdRc0lHcDFjM1FnZFhObElHRWdjbVZuZFd4aGNpQnZZbXBsWTNRdUoxeHVJQ0FnSUNrN1hHNWNiaUFnSUNCMllYSWdjSEp2ZEc4Z1BTQkRiMjV6ZEhKMVkzUnZjaTV3Y205MGIzUjVjR1U3WEc0Z0lDQWdkbUZ5SUdGMWRHOUNhVzVrVUdGcGNuTWdQU0J3Y205MGJ5NWZYM0psWVdOMFFYVjBiMEpwYm1SUVlXbHljenRjYmx4dUlDQWdJQzh2SUVKNUlHaGhibVJzYVc1bklHMXBlR2x1Y3lCaVpXWnZjbVVnWVc1NUlHOTBhR1Z5SUhCeWIzQmxjblJwWlhNc0lIZGxJR1Z1YzNWeVpTQjBhR1VnYzJGdFpWeHVJQ0FnSUM4dklHTm9ZV2x1YVc1bklHOXlaR1Z5SUdseklHRndjR3hwWldRZ2RHOGdiV1YwYUc5a2N5QjNhWFJvSUVSRlJrbE9SVjlOUVU1WklIQnZiR2xqZVN3Z2QyaGxkR2hsY2x4dUlDQWdJQzh2SUcxcGVHbHVjeUJoY21VZ2JHbHpkR1ZrSUdKbFptOXlaU0J2Y2lCaFpuUmxjaUIwYUdWelpTQnRaWFJvYjJSeklHbHVJSFJvWlNCemNHVmpMbHh1SUNBZ0lHbG1JQ2h6Y0dWakxtaGhjMDkzYmxCeWIzQmxjblI1S0UxSldFbE9VMTlMUlZrcEtTQjdYRzRnSUNBZ0lDQlNSVk5GVWxaRlJGOVRVRVZEWDB0RldWTXViV2w0YVc1ektFTnZibk4wY25WamRHOXlMQ0J6Y0dWakxtMXBlR2x1Y3lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWm05eUlDaDJZWElnYm1GdFpTQnBiaUJ6Y0dWaktTQjdYRzRnSUNBZ0lDQnBaaUFvSVhOd1pXTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtRnRaU2twSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHbG1JQ2h1WVcxbElEMDlQU0JOU1ZoSlRsTmZTMFZaS1NCN1hHNGdJQ0FnSUNBZ0lDOHZJRmRsSUdoaGRtVWdZV3h5WldGa2VTQm9ZVzVrYkdWa0lHMXBlR2x1Y3lCcGJpQmhJSE53WldOcFlXd2dZMkZ6WlNCaFltOTJaUzVjYmlBZ0lDQWdJQ0FnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUhaaGNpQndjbTl3WlhKMGVTQTlJSE53WldOYmJtRnRaVjA3WEc0Z0lDQWdJQ0IyWVhJZ2FYTkJiSEpsWVdSNVJHVm1hVzVsWkNBOUlIQnliM1J2TG1oaGMwOTNibEJ5YjNCbGNuUjVLRzVoYldVcE8xeHVJQ0FnSUNBZ2RtRnNhV1JoZEdWTlpYUm9iMlJQZG1WeWNtbGtaU2hwYzBGc2NtVmhaSGxFWldacGJtVmtMQ0J1WVcxbEtUdGNibHh1SUNBZ0lDQWdhV1lnS0ZKRlUwVlNWa1ZFWDFOUVJVTmZTMFZaVXk1b1lYTlBkMjVRY205d1pYSjBlU2h1WVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0JTUlZORlVsWkZSRjlUVUVWRFgwdEZXVk5iYm1GdFpWMG9RMjl1YzNSeWRXTjBiM0lzSUhCeWIzQmxjblI1S1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUM4dklGTmxkSFZ3SUcxbGRHaHZaSE1nYjI0Z2NISnZkRzkwZVhCbE9seHVJQ0FnSUNBZ0lDQXZMeUJVYUdVZ1ptOXNiRzkzYVc1bklHMWxiV0psY2lCdFpYUm9iMlJ6SUhOb2IzVnNaQ0J1YjNRZ1ltVWdZWFYwYjIxaGRHbGpZV3hzZVNCaWIzVnVaRHBjYmlBZ0lDQWdJQ0FnTHk4Z01TNGdSWGh3WldOMFpXUWdVbVZoWTNSRGJHRnpjeUJ0WlhSb2IyUnpJQ2hwYmlCMGFHVWdYQ0pwYm5SbGNtWmhZMlZjSWlrdVhHNGdJQ0FnSUNBZ0lDOHZJREl1SUU5MlpYSnlhV1JrWlc0Z2JXVjBhRzlrY3lBb2RHaGhkQ0IzWlhKbElHMXBlR1ZrSUdsdUtTNWNiaUFnSUNBZ0lDQWdkbUZ5SUdselVtVmhZM1JEYkdGemMwMWxkR2h2WkNBOUlGSmxZV04wUTJ4aGMzTkpiblJsY21aaFkyVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2JtRnRaU2s3WEc0Z0lDQWdJQ0FnSUhaaGNpQnBjMFoxYm1OMGFXOXVJRDBnZEhsd1pXOW1JSEJ5YjNCbGNuUjVJRDA5UFNBblpuVnVZM1JwYjI0bk8xeHVJQ0FnSUNBZ0lDQjJZWElnYzJodmRXeGtRWFYwYjBKcGJtUWdQVnh1SUNBZ0lDQWdJQ0FnSUdselJuVnVZM1JwYjI0Z0ppWmNiaUFnSUNBZ0lDQWdJQ0FoYVhOU1pXRmpkRU5zWVhOelRXVjBhRzlrSUNZbVhHNGdJQ0FnSUNBZ0lDQWdJV2x6UVd4eVpXRmtlVVJsWm1sdVpXUWdKaVpjYmlBZ0lDQWdJQ0FnSUNCemNHVmpMbUYxZEc5aWFXNWtJQ0U5UFNCbVlXeHpaVHRjYmx4dUlDQWdJQ0FnSUNCcFppQW9jMmh2ZFd4a1FYVjBiMEpwYm1RcElIdGNiaUFnSUNBZ0lDQWdJQ0JoZFhSdlFtbHVaRkJoYVhKekxuQjFjMmdvYm1GdFpTd2djSEp2Y0dWeWRIa3BPMXh1SUNBZ0lDQWdJQ0FnSUhCeWIzUnZXMjVoYldWZElEMGdjSEp2Y0dWeWRIazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tHbHpRV3h5WldGa2VVUmxabWx1WldRcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQnpjR1ZqVUc5c2FXTjVJRDBnVW1WaFkzUkRiR0Z6YzBsdWRHVnlabUZqWlZ0dVlXMWxYVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnVkdobGMyVWdZMkZ6WlhNZ2MyaHZkV3hrSUdGc2NtVmhaSGtnWW1VZ1kyRjFaMmgwSUdKNUlIWmhiR2xrWVhSbFRXVjBhRzlrVDNabGNuSnBaR1V1WEc0Z0lDQWdJQ0FnSUNBZ0lDQmZhVzUyWVhKcFlXNTBLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnBjMUpsWVdOMFEyeGhjM05OWlhSb2IyUWdKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FvYzNCbFkxQnZiR2xqZVNBOVBUMGdKMFJGUmtsT1JWOU5RVTVaWDAxRlVrZEZSQ2NnZkh4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITndaV05RYjJ4cFkza2dQVDA5SUNkRVJVWkpUa1ZmVFVGT1dTY3BMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQW5VbVZoWTNSRGJHRnpjem9nVlc1bGVIQmxZM1JsWkNCemNHVmpJSEJ2YkdsamVTQWxjeUJtYjNJZ2EyVjVJQ1Z6SUNjZ0sxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZDNhR1Z1SUcxcGVHbHVaeUJwYmlCamIyMXdiMjVsYm5RZ2MzQmxZM011Snl4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNCbFkxQnZiR2xqZVN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnYm1GdFpWeHVJQ0FnSUNBZ0lDQWdJQ0FnS1R0Y2JseHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1JtOXlJRzFsZEdodlpITWdkMmhwWTJnZ1lYSmxJR1JsWm1sdVpXUWdiVzl5WlNCMGFHRnVJRzl1WTJVc0lHTmhiR3dnZEdobElHVjRhWE4wYVc1blhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCdFpYUm9iMlJ6SUdKbFptOXlaU0JqWVd4c2FXNW5JSFJvWlNCdVpYY2djSEp2Y0dWeWRIa3NJRzFsY21kcGJtY2dhV1lnWVhCd2NtOXdjbWxoZEdVdVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2MzQmxZMUJ2YkdsamVTQTlQVDBnSjBSRlJrbE9SVjlOUVU1WlgwMUZVa2RGUkNjcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NISnZkRzliYm1GdFpWMGdQU0JqY21WaGRHVk5aWEpuWldSU1pYTjFiSFJHZFc1amRHbHZiaWh3Y205MGIxdHVZVzFsWFN3Z2NISnZjR1Z5ZEhrcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJR2xtSUNoemNHVmpVRzlzYVdONUlEMDlQU0FuUkVWR1NVNUZYMDFCVGxrbktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIQnliM1J2VzI1aGJXVmRJRDBnWTNKbFlYUmxRMmhoYVc1bFpFWjFibU4wYVc5dUtIQnliM1J2VzI1aGJXVmRMQ0J3Y205d1pYSjBlU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIQnliM1J2VzI1aGJXVmRJRDBnY0hKdmNHVnlkSGs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QkJaR1FnZG1WeVltOXpaU0JrYVhOd2JHRjVUbUZ0WlNCMGJ5QjBhR1VnWm5WdVkzUnBiMjRzSUhkb2FXTm9JR2hsYkhCeklIZG9aVzRnYkc5dmEybHVaMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJoZENCd2NtOW1hV3hwYm1jZ2RHOXZiSE11WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoMGVYQmxiMllnY0hKdmNHVnlkSGtnUFQwOUlDZG1kVzVqZEdsdmJpY2dKaVlnYzNCbFl5NWthWE53YkdGNVRtRnRaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhCeWIzUnZXMjVoYldWZExtUnBjM0JzWVhsT1lXMWxJRDBnYzNCbFl5NWthWE53YkdGNVRtRnRaU0FySUNkZkp5QXJJRzVoYldVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQm1kVzVqZEdsdmJpQnRhWGhUZEdGMGFXTlRjR1ZqU1c1MGIwTnZiWEJ2Ym1WdWRDaERiMjV6ZEhKMVkzUnZjaXdnYzNSaGRHbGpjeWtnZTF4dUlDQWdJR2xtSUNnaGMzUmhkR2xqY3lrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmlBZ0lDQm1iM0lnS0haaGNpQnVZVzFsSUdsdUlITjBZWFJwWTNNcElIdGNiaUFnSUNBZ0lIWmhjaUJ3Y205d1pYSjBlU0E5SUhOMFlYUnBZM05iYm1GdFpWMDdYRzRnSUNBZ0lDQnBaaUFvSVhOMFlYUnBZM011YUdGelQzZHVVSEp2Y0dWeWRIa29ibUZ0WlNrcElIdGNiaUFnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSFpoY2lCcGMxSmxjMlZ5ZG1Wa0lEMGdibUZ0WlNCcGJpQlNSVk5GVWxaRlJGOVRVRVZEWDB0RldWTTdYRzRnSUNBZ0lDQmZhVzUyWVhKcFlXNTBLRnh1SUNBZ0lDQWdJQ0FoYVhOU1pYTmxjblpsWkN4Y2JpQWdJQ0FnSUNBZ0oxSmxZV04wUTJ4aGMzTTZJRmx2ZFNCaGNtVWdZWFIwWlcxd2RHbHVaeUIwYnlCa1pXWnBibVVnWVNCeVpYTmxjblpsWkNBbklDdGNiaUFnSUNBZ0lDQWdJQ0FuY0hKdmNHVnlkSGtzSUdBbGMyQXNJSFJvWVhRZ2MyaHZkV3hrYmx4Y0ozUWdZbVVnYjI0Z2RHaGxJRndpYzNSaGRHbGpjMXdpSUd0bGVTNGdSR1ZtYVc1bElHbDBJQ2NnSzF4dUlDQWdJQ0FnSUNBZ0lDZGhjeUJoYmlCcGJuTjBZVzVqWlNCd2NtOXdaWEowZVNCcGJuTjBaV0ZrT3lCcGRDQjNhV3hzSUhOMGFXeHNJR0psSUdGalkyVnpjMmxpYkdVZ2IyNGdkR2hsSUNjZ0sxeHVJQ0FnSUNBZ0lDQWdJQ2RqYjI1emRISjFZM1J2Y2k0bkxGeHVJQ0FnSUNBZ0lDQnVZVzFsWEc0Z0lDQWdJQ0FwTzF4dVhHNGdJQ0FnSUNCMllYSWdhWE5KYm1obGNtbDBaV1FnUFNCdVlXMWxJR2x1SUVOdmJuTjBjblZqZEc5eU8xeHVJQ0FnSUNBZ1gybHVkbUZ5YVdGdWRDaGNiaUFnSUNBZ0lDQWdJV2x6U1c1b1pYSnBkR1ZrTEZ4dUlDQWdJQ0FnSUNBblVtVmhZM1JEYkdGemN6b2dXVzkxSUdGeVpTQmhkSFJsYlhCMGFXNW5JSFJ2SUdSbFptbHVaU0FuSUN0Y2JpQWdJQ0FnSUNBZ0lDQW5ZQ1Z6WUNCdmJpQjViM1Z5SUdOdmJYQnZibVZ1ZENCdGIzSmxJSFJvWVc0Z2IyNWpaUzRnVkdocGN5QmpiMjVtYkdsamRDQnRZWGtnWW1VZ0p5QXJYRzRnSUNBZ0lDQWdJQ0FnSjJSMVpTQjBieUJoSUcxcGVHbHVMaWNzWEc0Z0lDQWdJQ0FnSUc1aGJXVmNiaUFnSUNBZ0lDazdYRzRnSUNBZ0lDQkRiMjV6ZEhKMVkzUnZjbHR1WVcxbFhTQTlJSEJ5YjNCbGNuUjVPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJOWlhKblpTQjBkMjhnYjJKcVpXTjBjeXdnWW5WMElIUm9jbTkzSUdsbUlHSnZkR2dnWTI5dWRHRnBiaUIwYUdVZ2MyRnRaU0JyWlhrdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiMkpxWldOMGZTQnZibVVnVkdobElHWnBjbk4wSUc5aWFtVmpkQ3dnZDJocFkyZ2dhWE1nYlhWMFlYUmxaQzVjYmlBZ0lDb2dRSEJoY21GdElIdHZZbXBsWTNSOUlIUjNieUJVYUdVZ2MyVmpiMjVrSUc5aWFtVmpkRnh1SUNBZ0tpQkFjbVYwZFhKdUlIdHZZbXBsWTNSOUlHOXVaU0JoWm5SbGNpQnBkQ0JvWVhNZ1ltVmxiaUJ0ZFhSaGRHVmtJSFJ2SUdOdmJuUmhhVzRnWlhabGNubDBhR2x1WnlCcGJpQjBkMjh1WEc0Z0lDQXFMMXh1SUNCbWRXNWpkR2x2YmlCdFpYSm5aVWx1ZEc5WGFYUm9UbTlFZFhCc2FXTmhkR1ZMWlhsektHOXVaU3dnZEhkdktTQjdYRzRnSUNBZ1gybHVkbUZ5YVdGdWRDaGNiaUFnSUNBZ0lHOXVaU0FtSmlCMGQyOGdKaVlnZEhsd1pXOW1JRzl1WlNBOVBUMGdKMjlpYW1WamRDY2dKaVlnZEhsd1pXOW1JSFIzYnlBOVBUMGdKMjlpYW1WamRDY3NYRzRnSUNBZ0lDQW5iV1Z5WjJWSmJuUnZWMmwwYUU1dlJIVndiR2xqWVhSbFMyVjVjeWdwT2lCRFlXNXViM1FnYldWeVoyVWdibTl1TFc5aWFtVmpkSE11SjF4dUlDQWdJQ2s3WEc1Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJyWlhrZ2FXNGdkSGR2S1NCN1hHNGdJQ0FnSUNCcFppQW9kSGR2TG1oaGMwOTNibEJ5YjNCbGNuUjVLR3RsZVNrcElIdGNiaUFnSUNBZ0lDQWdYMmx1ZG1GeWFXRnVkQ2hjYmlBZ0lDQWdJQ0FnSUNCdmJtVmJhMlY1WFNBOVBUMGdkVzVrWldacGJtVmtMRnh1SUNBZ0lDQWdJQ0FnSUNkdFpYSm5aVWx1ZEc5WGFYUm9UbTlFZFhCc2FXTmhkR1ZMWlhsektDazZJQ2NnSzF4dUlDQWdJQ0FnSUNBZ0lDQWdKMVJ5YVdWa0lIUnZJRzFsY21kbElIUjNieUJ2WW1wbFkzUnpJSGRwZEdnZ2RHaGxJSE5oYldVZ2EyVjVPaUJnSlhOZ0xpQlVhR2x6SUdOdmJtWnNhV04wSUNjZ0sxeHVJQ0FnSUNBZ0lDQWdJQ0FnSjIxaGVTQmlaU0JrZFdVZ2RHOGdZU0J0YVhocGJqc2dhVzRnY0dGeWRHbGpkV3hoY2l3Z2RHaHBjeUJ0WVhrZ1ltVWdZMkYxYzJWa0lHSjVJSFIzYnlBbklDdGNiaUFnSUNBZ0lDQWdJQ0FnSUNkblpYUkpibWwwYVdGc1UzUmhkR1VvS1NCdmNpQm5aWFJFWldaaGRXeDBVSEp2Y0hNb0tTQnRaWFJvYjJSeklISmxkSFZ5Ym1sdVp5QnZZbXBsWTNSeklDY2dLMXh1SUNBZ0lDQWdJQ0FnSUNBZ0ozZHBkR2dnWTJ4aGMyaHBibWNnYTJWNWN5NG5MRnh1SUNBZ0lDQWdJQ0FnSUd0bGVWeHVJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0J2Ym1WYmEyVjVYU0E5SUhSM2IxdHJaWGxkTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2IyNWxPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOeVpXRjBaWE1nWVNCbWRXNWpkR2x2YmlCMGFHRjBJR2x1ZG05clpYTWdkSGR2SUdaMWJtTjBhVzl1Y3lCaGJtUWdiV1Z5WjJWeklIUm9aV2x5SUhKbGRIVnliaUIyWVd4MVpYTXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3Wm5WdVkzUnBiMjU5SUc5dVpTQkdkVzVqZEdsdmJpQjBieUJwYm5admEyVWdabWx5YzNRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3Wm5WdVkzUnBiMjU5SUhSM2J5QkdkVzVqZEdsdmJpQjBieUJwYm5admEyVWdjMlZqYjI1a0xseHVJQ0FnS2lCQWNtVjBkWEp1SUh0bWRXNWpkR2x2Ym4wZ1JuVnVZM1JwYjI0Z2RHaGhkQ0JwYm5admEyVnpJSFJvWlNCMGQyOGdZWEpuZFcxbGJuUWdablZ1WTNScGIyNXpMbHh1SUNBZ0tpQkFjSEpwZG1GMFpWeHVJQ0FnS2k5Y2JpQWdablZ1WTNScGIyNGdZM0psWVhSbFRXVnlaMlZrVW1WemRXeDBSblZ1WTNScGIyNG9iMjVsTENCMGQyOHBJSHRjYmlBZ0lDQnlaWFIxY200Z1puVnVZM1JwYjI0Z2JXVnlaMlZrVW1WemRXeDBLQ2tnZTF4dUlDQWdJQ0FnZG1GeUlHRWdQU0J2Ym1VdVlYQndiSGtvZEdocGN5d2dZWEpuZFcxbGJuUnpLVHRjYmlBZ0lDQWdJSFpoY2lCaUlEMGdkSGR2TG1Gd2NHeDVLSFJvYVhNc0lHRnlaM1Z0Wlc1MGN5azdYRzRnSUNBZ0lDQnBaaUFvWVNBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCaU8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaGlJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR0U3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0IyWVhJZ1l5QTlJSHQ5TzF4dUlDQWdJQ0FnYldWeVoyVkpiblJ2VjJsMGFFNXZSSFZ3YkdsallYUmxTMlY1Y3loakxDQmhLVHRjYmlBZ0lDQWdJRzFsY21kbFNXNTBiMWRwZEdoT2IwUjFjR3hwWTJGMFpVdGxlWE1vWXl3Z1lpazdYRzRnSUNBZ0lDQnlaWFIxY200Z1l6dGNiaUFnSUNCOU8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU55WldGMFpYTWdZU0JtZFc1amRHbHZiaUIwYUdGMElHbHVkbTlyWlhNZ2RIZHZJR1oxYm1OMGFXOXVjeUJoYm1RZ2FXZHViM0psY3lCMGFHVnBjaUJ5WlhSMWNtNGdkbUZzWlhNdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdablZ1WTNScGIyNTlJRzl1WlNCR2RXNWpkR2x2YmlCMGJ5QnBiblp2YTJVZ1ptbHljM1F1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdablZ1WTNScGIyNTlJSFIzYnlCR2RXNWpkR2x2YmlCMGJ5QnBiblp2YTJVZ2MyVmpiMjVrTGx4dUlDQWdLaUJBY21WMGRYSnVJSHRtZFc1amRHbHZibjBnUm5WdVkzUnBiMjRnZEdoaGRDQnBiblp2YTJWeklIUm9aU0IwZDI4Z1lYSm5kVzFsYm5RZ1puVnVZM1JwYjI1ekxseHVJQ0FnS2lCQWNISnBkbUYwWlZ4dUlDQWdLaTljYmlBZ1puVnVZM1JwYjI0Z1kzSmxZWFJsUTJoaGFXNWxaRVoxYm1OMGFXOXVLRzl1WlN3Z2RIZHZLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHWjFibU4wYVc5dUlHTm9ZV2x1WldSR2RXNWpkR2x2YmlncElIdGNiaUFnSUNBZ0lHOXVaUzVoY0hCc2VTaDBhR2x6TENCaGNtZDFiV1Z1ZEhNcE8xeHVJQ0FnSUNBZ2RIZHZMbUZ3Y0d4NUtIUm9hWE1zSUdGeVozVnRaVzUwY3lrN1hHNGdJQ0FnZlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkNhVzVrY3lCaElHMWxkR2h2WkNCMGJ5QjBhR1VnWTI5dGNHOXVaVzUwTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyOWlhbVZqZEgwZ1kyOXRjRzl1Wlc1MElFTnZiWEJ2Ym1WdWRDQjNhRzl6WlNCdFpYUm9iMlFnYVhNZ1oyOXBibWNnZEc4Z1ltVWdZbTkxYm1RdVhHNGdJQ0FxSUVCd1lYSmhiU0I3Wm5WdVkzUnBiMjU5SUcxbGRHaHZaQ0JOWlhSb2IyUWdkRzhnWW1VZ1ltOTFibVF1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMloxYm1OMGFXOXVmU0JVYUdVZ1ltOTFibVFnYldWMGFHOWtMbHh1SUNBZ0tpOWNiaUFnWm5WdVkzUnBiMjRnWW1sdVpFRjFkRzlDYVc1a1RXVjBhRzlrS0dOdmJYQnZibVZ1ZEN3Z2JXVjBhRzlrS1NCN1hHNGdJQ0FnZG1GeUlHSnZkVzVrVFdWMGFHOWtJRDBnYldWMGFHOWtMbUpwYm1Rb1kyOXRjRzl1Wlc1MEtUdGNiaUFnSUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJQ0FnWW05MWJtUk5aWFJvYjJRdVgxOXlaV0ZqZEVKdmRXNWtRMjl1ZEdWNGRDQTlJR052YlhCdmJtVnVkRHRjYmlBZ0lDQWdJR0p2ZFc1a1RXVjBhRzlrTGw5ZmNtVmhZM1JDYjNWdVpFMWxkR2h2WkNBOUlHMWxkR2h2WkR0Y2JpQWdJQ0FnSUdKdmRXNWtUV1YwYUc5a0xsOWZjbVZoWTNSQ2IzVnVaRUZ5WjNWdFpXNTBjeUE5SUc1MWJHdzdYRzRnSUNBZ0lDQjJZWElnWTI5dGNHOXVaVzUwVG1GdFpTQTlJR052YlhCdmJtVnVkQzVqYjI1emRISjFZM1J2Y2k1a2FYTndiR0Y1VG1GdFpUdGNiaUFnSUNBZ0lIWmhjaUJmWW1sdVpDQTlJR0p2ZFc1a1RXVjBhRzlrTG1KcGJtUTdYRzRnSUNBZ0lDQmliM1Z1WkUxbGRHaHZaQzVpYVc1a0lEMGdablZ1WTNScGIyNG9ibVYzVkdocGN5a2dlMXh1SUNBZ0lDQWdJQ0JtYjNJZ0tGeHVJQ0FnSUNBZ0lDQWdJSFpoY2lCZmJHVnVJRDBnWVhKbmRXMWxiblJ6TG14bGJtZDBhQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHRnlaM01nUFNCQmNuSmhlU2hmYkdWdUlENGdNU0EvSUY5c1pXNGdMU0F4SURvZ01Da3NYRzRnSUNBZ0lDQWdJQ0FnSUNCZmEyVjVJRDBnTVR0Y2JpQWdJQ0FnSUNBZ0lDQmZhMlY1SUR3Z1gyeGxianRjYmlBZ0lDQWdJQ0FnSUNCZmEyVjVLeXRjYmlBZ0lDQWdJQ0FnS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZWEpuYzF0ZmEyVjVJQzBnTVYwZ1BTQmhjbWQxYldWdWRITmJYMnRsZVYwN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0F2THlCVmMyVnlJR2x6SUhSeWVXbHVaeUIwYnlCaWFXNWtLQ2tnWVc0Z1lYVjBiMkp2ZFc1a0lHMWxkR2h2WkRzZ2QyVWdaV1ptWldOMGFYWmxiSGtnZDJsc2JGeHVJQ0FnSUNBZ0lDQXZMeUJwWjI1dmNtVWdkR2hsSUhaaGJIVmxJRzltSUZ3aWRHaHBjMXdpSUhSb1lYUWdkR2hsSUhWelpYSWdhWE1nZEhKNWFXNW5JSFJ2SUhWelpTd2djMjljYmlBZ0lDQWdJQ0FnTHk4Z2JHVjBKM01nZDJGeWJpNWNiaUFnSUNBZ0lDQWdhV1lnS0c1bGQxUm9hWE1nSVQwOUlHTnZiWEJ2Ym1WdWRDQW1KaUJ1WlhkVWFHbHpJQ0U5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSGRoY201cGJtY29YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHWmhiSE5sTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FuWW1sdVpDZ3BPaUJTWldGamRDQmpiMjF3YjI1bGJuUWdiV1YwYUc5a2N5QnRZWGtnYjI1c2VTQmlaU0JpYjNWdVpDQjBieUIwYUdVZ0p5QXJYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKMk52YlhCdmJtVnVkQ0JwYm5OMFlXNWpaUzRnVTJWbElDVnpKeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl0Y0c5dVpXNTBUbUZ0WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9JV0Z5WjNNdWJHVnVaM1JvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhkaGNtNXBibWNvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR1poYkhObExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBblltbHVaQ2dwT2lCWmIzVWdZWEpsSUdKcGJtUnBibWNnWVNCamIyMXdiMjVsYm5RZ2JXVjBhRzlrSUhSdklIUm9aU0JqYjIxd2IyNWxiblF1SUNjZ0sxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDZFNaV0ZqZENCa2IyVnpJSFJvYVhNZ1ptOXlJSGx2ZFNCaGRYUnZiV0YwYVdOaGJHeDVJR2x1SUdFZ2FHbG5hQzF3WlhKbWIzSnRZVzVqWlNBbklDdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQW5kMkY1TENCemJ5QjViM1VnWTJGdUlITmhabVZzZVNCeVpXMXZkbVVnZEdocGN5QmpZV3hzTGlCVFpXVWdKWE1uTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjIxd2IyNWxiblJPWVcxbFhHNGdJQ0FnSUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdZbTkxYm1STlpYUm9iMlE3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2RtRnlJSEpsWW05MWJtUk5aWFJvYjJRZ1BTQmZZbWx1WkM1aGNIQnNlU2hpYjNWdVpFMWxkR2h2WkN3Z1lYSm5kVzFsYm5SektUdGNiaUFnSUNBZ0lDQWdjbVZpYjNWdVpFMWxkR2h2WkM1ZlgzSmxZV04wUW05MWJtUkRiMjUwWlhoMElEMGdZMjl0Y0c5dVpXNTBPMXh1SUNBZ0lDQWdJQ0J5WldKdmRXNWtUV1YwYUc5a0xsOWZjbVZoWTNSQ2IzVnVaRTFsZEdodlpDQTlJRzFsZEdodlpEdGNiaUFnSUNBZ0lDQWdjbVZpYjNWdVpFMWxkR2h2WkM1ZlgzSmxZV04wUW05MWJtUkJjbWQxYldWdWRITWdQU0JoY21kek8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVmliM1Z1WkUxbGRHaHZaRHRjYmlBZ0lDQWdJSDA3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCaWIzVnVaRTFsZEdodlpEdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJDYVc1a2N5QmhiR3dnWVhWMGJ5MWliM1Z1WkNCdFpYUm9iMlJ6SUdsdUlHRWdZMjl0Y0c5dVpXNTBMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnWTI5dGNHOXVaVzUwSUVOdmJYQnZibVZ1ZENCM2FHOXpaU0J0WlhSb2IyUWdhWE1nWjI5cGJtY2dkRzhnWW1VZ1ltOTFibVF1WEc0Z0lDQXFMMXh1SUNCbWRXNWpkR2x2YmlCaWFXNWtRWFYwYjBKcGJtUk5aWFJvYjJSektHTnZiWEJ2Ym1WdWRDa2dlMXh1SUNBZ0lIWmhjaUJ3WVdseWN5QTlJR052YlhCdmJtVnVkQzVmWDNKbFlXTjBRWFYwYjBKcGJtUlFZV2x5Y3p0Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUhCaGFYSnpMbXhsYm1kMGFEc2dhU0FyUFNBeUtTQjdYRzRnSUNBZ0lDQjJZWElnWVhWMGIwSnBibVJMWlhrZ1BTQndZV2x5YzF0cFhUdGNiaUFnSUNBZ0lIWmhjaUJ0WlhSb2IyUWdQU0J3WVdseWMxdHBJQ3NnTVYwN1hHNGdJQ0FnSUNCamIyMXdiMjVsYm5SYllYVjBiMEpwYm1STFpYbGRJRDBnWW1sdVpFRjFkRzlDYVc1a1RXVjBhRzlrS0dOdmJYQnZibVZ1ZEN3Z2JXVjBhRzlrS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCMllYSWdTWE5OYjNWdWRHVmtVSEpsVFdsNGFXNGdQU0I3WEc0Z0lDQWdZMjl0Y0c5dVpXNTBSR2xrVFc5MWJuUTZJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NWZYMmx6VFc5MWJuUmxaQ0E5SUhSeWRXVTdYRzRnSUNBZ2ZWeHVJQ0I5TzF4dVhHNGdJSFpoY2lCSmMwMXZkVzUwWldSUWIzTjBUV2w0YVc0Z1BTQjdYRzRnSUNBZ1kyOXRjRzl1Wlc1MFYybHNiRlZ1Ylc5MWJuUTZJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NWZYMmx6VFc5MWJuUmxaQ0E5SUdaaGJITmxPMXh1SUNBZ0lIMWNiaUFnZlR0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUVdSa0lHMXZjbVVnZEc4Z2RHaGxJRkpsWVdOMFEyeGhjM01nWW1GelpTQmpiR0Z6Y3k0Z1ZHaGxjMlVnWVhKbElHRnNiQ0JzWldkaFkza2dabVZoZEhWeVpYTWdZVzVrWEc0Z0lDQXFJSFJvWlhKbFptOXlaU0J1YjNRZ1lXeHlaV0ZrZVNCd1lYSjBJRzltSUhSb1pTQnRiMlJsY200Z1VtVmhZM1JEYjIxd2IyNWxiblF1WEc0Z0lDQXFMMXh1SUNCMllYSWdVbVZoWTNSRGJHRnpjMDFwZUdsdUlEMGdlMXh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRlJQUkU4NklGUm9hWE1nZDJsc2JDQmlaU0JrWlhCeVpXTmhkR1ZrSUdKbFkyRjFjMlVnYzNSaGRHVWdjMmh2ZFd4a0lHRnNkMkY1Y3lCclpXVndJR0VnWTI5dWMybHpkR1Z1ZEZ4dUlDQWdJQ0FxSUhSNWNHVWdjMmxuYm1GMGRYSmxJR0Z1WkNCMGFHVWdiMjVzZVNCMWMyVWdZMkZ6WlNCbWIzSWdkR2hwY3l3Z2FYTWdkRzhnWVhadmFXUWdkR2hoZEM1Y2JpQWdJQ0FnS2k5Y2JpQWdJQ0J5WlhCc1lXTmxVM1JoZEdVNklHWjFibU4wYVc5dUtHNWxkMU4wWVhSbExDQmpZV3hzWW1GamF5a2dlMXh1SUNBZ0lDQWdkR2hwY3k1MWNHUmhkR1Z5TG1WdWNYVmxkV1ZTWlhCc1lXTmxVM1JoZEdVb2RHaHBjeXdnYm1WM1UzUmhkR1VzSUdOaGJHeGlZV05yS1R0Y2JpQWdJQ0I5TEZ4dVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1EyaGxZMnR6SUhkb1pYUm9aWElnYjNJZ2JtOTBJSFJvYVhNZ1kyOXRjRzl6YVhSbElHTnZiWEJ2Ym1WdWRDQnBjeUJ0YjNWdWRHVmtMbHh1SUNBZ0lDQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlJRlJ5ZFdVZ2FXWWdiVzkxYm5SbFpDd2dabUZzYzJVZ2IzUm9aWEozYVhObExseHVJQ0FnSUNBcUlFQndjbTkwWldOMFpXUmNiaUFnSUNBZ0tpQkFabWx1WVd4Y2JpQWdJQ0FnS2k5Y2JpQWdJQ0JwYzAxdmRXNTBaV1E2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUNBZ2FXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ2QyRnlibWx1WnloY2JpQWdJQ0FnSUNBZ0lDQjBhR2x6TGw5ZlpHbGtWMkZ5YmtselRXOTFiblJsWkN4Y2JpQWdJQ0FnSUNBZ0lDQW5KWE02SUdselRXOTFiblJsWkNCcGN5QmtaWEJ5WldOaGRHVmtMaUJKYm5OMFpXRmtMQ0J0WVd0bElITjFjbVVnZEc4Z1kyeGxZVzRnZFhBZ0p5QXJYRzRnSUNBZ0lDQWdJQ0FnSUNBbmMzVmljMk55YVhCMGFXOXVjeUJoYm1RZ2NHVnVaR2x1WnlCeVpYRjFaWE4wY3lCcGJpQmpiMjF3YjI1bGJuUlhhV3hzVlc1dGIzVnVkQ0IwYnlBbklDdGNiaUFnSUNBZ0lDQWdJQ0FnSUNkd2NtVjJaVzUwSUcxbGJXOXllU0JzWldGcmN5NG5MRnh1SUNBZ0lDQWdJQ0FnSUNoMGFHbHpMbU52Ym5OMGNuVmpkRzl5SUNZbUlIUm9hWE11WTI5dWMzUnlkV04wYjNJdVpHbHpjR3hoZVU1aGJXVXBJSHg4WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG01aGJXVWdmSHhjYmlBZ0lDQWdJQ0FnSUNBZ0lDZERiMjF3YjI1bGJuUW5YRzRnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVYMTlrYVdSWFlYSnVTWE5OYjNWdWRHVmtJRDBnZEhKMVpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlBaElYUm9hWE11WDE5cGMwMXZkVzUwWldRN1hHNGdJQ0FnZlZ4dUlDQjlPMXh1WEc0Z0lIWmhjaUJTWldGamRFTnNZWE56UTI5dGNHOXVaVzUwSUQwZ1puVnVZM1JwYjI0b0tTQjdmVHRjYmlBZ1gyRnpjMmxuYmloY2JpQWdJQ0JTWldGamRFTnNZWE56UTI5dGNHOXVaVzUwTG5CeWIzUnZkSGx3WlN4Y2JpQWdJQ0JTWldGamRFTnZiWEJ2Ym1WdWRDNXdjbTkwYjNSNWNHVXNYRzRnSUNBZ1VtVmhZM1JEYkdGemMwMXBlR2x1WEc0Z0lDazdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlhNZ1lTQmpiMjF3YjNOcGRHVWdZMjl0Y0c5dVpXNTBJR05zWVhOeklHZHBkbVZ1SUdFZ1kyeGhjM01nYzNCbFkybG1hV05oZEdsdmJpNWNiaUFnSUNvZ1UyVmxJR2gwZEhCek9pOHZabUZqWldKdmIyc3VaMmwwYUhWaUxtbHZMM0psWVdOMEwyUnZZM012ZEc5d0xXeGxkbVZzTFdGd2FTNW9kRzFzSTNKbFlXTjBMbU55WldGMFpXTnNZWE56WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2IySnFaV04wZlNCemNHVmpJRU5zWVhOeklITndaV05wWm1sallYUnBiMjRnS0hkb2FXTm9JRzExYzNRZ1pHVm1hVzVsSUdCeVpXNWtaWEpnS1M1Y2JpQWdJQ29nUUhKbGRIVnliaUI3Wm5WdVkzUnBiMjU5SUVOdmJYQnZibVZ1ZENCamIyNXpkSEoxWTNSdmNpQm1kVzVqZEdsdmJpNWNiaUFnSUNvZ1FIQjFZbXhwWTF4dUlDQWdLaTljYmlBZ1puVnVZM1JwYjI0Z1kzSmxZWFJsUTJ4aGMzTW9jM0JsWXlrZ2UxeHVJQ0FnSUM4dklGUnZJR3RsWlhBZ2IzVnlJSGRoY201cGJtZHpJRzF2Y21VZ2RXNWtaWEp6ZEdGdVpHRmliR1VzSUhkbEoyeHNJSFZ6WlNCaElHeHBkSFJzWlNCb1lXTnJJR2hsY21VZ2RHOWNiaUFnSUNBdkx5Qmxibk4xY21VZ2RHaGhkQ0JEYjI1emRISjFZM1J2Y2k1dVlXMWxJQ0U5UFNBblEyOXVjM1J5ZFdOMGIzSW5MaUJVYUdseklHMWhhMlZ6SUhOMWNtVWdkMlVnWkc5dUozUmNiaUFnSUNBdkx5QjFibTVsWTJWemMyRnlhV3g1SUdsa1pXNTBhV1o1SUdFZ1kyeGhjM01nZDJsMGFHOTFkQ0JrYVhOd2JHRjVUbUZ0WlNCaGN5QW5RMjl1YzNSeWRXTjBiM0luTGx4dUlDQWdJSFpoY2lCRGIyNXpkSEoxWTNSdmNpQTlJR2xrWlc1MGFYUjVLR1oxYm1OMGFXOXVLSEJ5YjNCekxDQmpiMjUwWlhoMExDQjFjR1JoZEdWeUtTQjdYRzRnSUNBZ0lDQXZMeUJVYUdseklHTnZibk4wY25WamRHOXlJR2RsZEhNZ2IzWmxjbkpwWkdSbGJpQmllU0J0YjJOcmN5NGdWR2hsSUdGeVozVnRaVzUwSUdseklIVnpaV1JjYmlBZ0lDQWdJQzh2SUdKNUlHMXZZMnR6SUhSdklHRnpjMlZ5ZENCdmJpQjNhR0YwSUdkbGRITWdiVzkxYm5SbFpDNWNibHh1SUNBZ0lDQWdhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdkMkZ5Ym1sdVp5aGNiaUFnSUNBZ0lDQWdJQ0IwYUdseklHbHVjM1JoYm1ObGIyWWdRMjl1YzNSeWRXTjBiM0lzWEc0Z0lDQWdJQ0FnSUNBZ0oxTnZiV1YwYUdsdVp5QnBjeUJqWVd4c2FXNW5JR0VnVW1WaFkzUWdZMjl0Y0c5dVpXNTBJR1JwY21WamRHeDVMaUJWYzJVZ1lTQm1ZV04wYjNKNUlHOXlJQ2NnSzF4dUlDQWdJQ0FnSUNBZ0lDQWdKMHBUV0NCcGJuTjBaV0ZrTGlCVFpXVTZJR2gwZEhCek9pOHZabUl1YldVdmNtVmhZM1F0YkdWbllXTjVabUZqZEc5eWVTZGNiaUFnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnTHk4Z1YybHlaU0IxY0NCaGRYUnZMV0pwYm1ScGJtZGNiaUFnSUNBZ0lHbG1JQ2gwYUdsekxsOWZjbVZoWTNSQmRYUnZRbWx1WkZCaGFYSnpMbXhsYm1kMGFDa2dlMXh1SUNBZ0lDQWdJQ0JpYVc1a1FYVjBiMEpwYm1STlpYUm9iMlJ6S0hSb2FYTXBPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0IwYUdsekxuQnliM0J6SUQwZ2NISnZjSE03WEc0Z0lDQWdJQ0IwYUdsekxtTnZiblJsZUhRZ1BTQmpiMjUwWlhoME8xeHVJQ0FnSUNBZ2RHaHBjeTV5WldaeklEMGdaVzF3ZEhsUFltcGxZM1E3WEc0Z0lDQWdJQ0IwYUdsekxuVndaR0YwWlhJZ1BTQjFjR1JoZEdWeUlIeDhJRkpsWVdOMFRtOXZjRlZ3WkdGMFpWRjFaWFZsTzF4dVhHNGdJQ0FnSUNCMGFHbHpMbk4wWVhSbElEMGdiblZzYkR0Y2JseHVJQ0FnSUNBZ0x5OGdVbVZoWTNSRGJHRnpjMlZ6SUdSdlpYTnVKM1FnYUdGMlpTQmpiMjV6ZEhKMVkzUnZjbk11SUVsdWMzUmxZV1FzSUhSb1pYa2dkWE5sSUhSb1pWeHVJQ0FnSUNBZ0x5OGdaMlYwU1c1cGRHbGhiRk4wWVhSbElHRnVaQ0JqYjIxd2IyNWxiblJYYVd4c1RXOTFiblFnYldWMGFHOWtjeUJtYjNJZ2FXNXBkR2xoYkdsNllYUnBiMjR1WEc1Y2JpQWdJQ0FnSUhaaGNpQnBibWwwYVdGc1UzUmhkR1VnUFNCMGFHbHpMbWRsZEVsdWFYUnBZV3hUZEdGMFpTQS9JSFJvYVhNdVoyVjBTVzVwZEdsaGJGTjBZWFJsS0NrZ09pQnVkV3hzTzF4dUlDQWdJQ0FnYVdZZ0tIQnliMk5sYzNNdVpXNTJMazVQUkVWZlJVNVdJQ0U5UFNBbmNISnZaSFZqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1YyVWdZV3hzYjNjZ1lYVjBieTF0YjJOcmN5QjBieUJ3Y205alpXVmtJR0Z6SUdsbUlIUm9aWGtuY21VZ2NtVjBkWEp1YVc1bklHNTFiR3d1WEc0Z0lDQWdJQ0FnSUdsbUlDaGNiaUFnSUNBZ0lDQWdJQ0JwYm1sMGFXRnNVM1JoZEdVZ1BUMDlJSFZ1WkdWbWFXNWxaQ0FtSmx4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11WjJWMFNXNXBkR2xoYkZOMFlYUmxMbDlwYzAxdlkydEdkVzVqZEdsdmJseHVJQ0FnSUNBZ0lDQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QlVhR2x6SUdseklIQnliMkpoWW14NUlHSmhaQ0J3Y21GamRHbGpaUzRnUTI5dWMybGtaWElnZDJGeWJtbHVaeUJvWlhKbElHRnVaRnh1SUNBZ0lDQWdJQ0FnSUM4dklHUmxjSEpsWTJGMGFXNW5JSFJvYVhNZ1kyOXVkbVZ1YVdWdVkyVXVYRzRnSUNBZ0lDQWdJQ0FnYVc1cGRHbGhiRk4wWVhSbElEMGdiblZzYkR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ1gybHVkbUZ5YVdGdWRDaGNiaUFnSUNBZ0lDQWdkSGx3Wlc5bUlHbHVhWFJwWVd4VGRHRjBaU0E5UFQwZ0oyOWlhbVZqZENjZ0ppWWdJVUZ5Y21GNUxtbHpRWEp5WVhrb2FXNXBkR2xoYkZOMFlYUmxLU3hjYmlBZ0lDQWdJQ0FnSnlWekxtZGxkRWx1YVhScFlXeFRkR0YwWlNncE9pQnRkWE4wSUhKbGRIVnliaUJoYmlCdlltcGxZM1FnYjNJZ2JuVnNiQ2NzWEc0Z0lDQWdJQ0FnSUVOdmJuTjBjblZqZEc5eUxtUnBjM0JzWVhsT1lXMWxJSHg4SUNkU1pXRmpkRU52YlhCdmMybDBaVU52YlhCdmJtVnVkQ2RjYmlBZ0lDQWdJQ2s3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVjM1JoZEdVZ1BTQnBibWwwYVdGc1UzUmhkR1U3WEc0Z0lDQWdmU2s3WEc0Z0lDQWdRMjl1YzNSeWRXTjBiM0l1Y0hKdmRHOTBlWEJsSUQwZ2JtVjNJRkpsWVdOMFEyeGhjM05EYjIxd2IyNWxiblFvS1R0Y2JpQWdJQ0JEYjI1emRISjFZM1J2Y2k1d2NtOTBiM1I1Y0dVdVkyOXVjM1J5ZFdOMGIzSWdQU0JEYjI1emRISjFZM1J2Y2p0Y2JpQWdJQ0JEYjI1emRISjFZM1J2Y2k1d2NtOTBiM1I1Y0dVdVgxOXlaV0ZqZEVGMWRHOUNhVzVrVUdGcGNuTWdQU0JiWFR0Y2JseHVJQ0FnSUdsdWFtVmpkR1ZrVFdsNGFXNXpMbVp2Y2tWaFkyZ29iV2w0VTNCbFkwbHVkRzlEYjIxd2IyNWxiblF1WW1sdVpDaHVkV3hzTENCRGIyNXpkSEoxWTNSdmNpa3BPMXh1WEc0Z0lDQWdiV2w0VTNCbFkwbHVkRzlEYjIxd2IyNWxiblFvUTI5dWMzUnlkV04wYjNJc0lFbHpUVzkxYm5SbFpGQnlaVTFwZUdsdUtUdGNiaUFnSUNCdGFYaFRjR1ZqU1c1MGIwTnZiWEJ2Ym1WdWRDaERiMjV6ZEhKMVkzUnZjaXdnYzNCbFl5azdYRzRnSUNBZ2JXbDRVM0JsWTBsdWRHOURiMjF3YjI1bGJuUW9RMjl1YzNSeWRXTjBiM0lzSUVselRXOTFiblJsWkZCdmMzUk5hWGhwYmlrN1hHNWNiaUFnSUNBdkx5QkpibWwwYVdGc2FYcGxJSFJvWlNCa1pXWmhkV3gwVUhKdmNITWdjSEp2Y0dWeWRIa2dZV1owWlhJZ1lXeHNJRzFwZUdsdWN5Qm9ZWFpsSUdKbFpXNGdiV1Z5WjJWa0xseHVJQ0FnSUdsbUlDaERiMjV6ZEhKMVkzUnZjaTVuWlhSRVpXWmhkV3gwVUhKdmNITXBJSHRjYmlBZ0lDQWdJRU52Ym5OMGNuVmpkRzl5TG1SbFptRjFiSFJRY205d2N5QTlJRU52Ym5OMGNuVmpkRzl5TG1kbGRFUmxabUYxYkhSUWNtOXdjeWdwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNod2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQXZMeUJVYUdseklHbHpJR0VnZEdGbklIUnZJR2x1WkdsallYUmxJSFJvWVhRZ2RHaGxJSFZ6WlNCdlppQjBhR1Z6WlNCdFpYUm9iMlFnYm1GdFpYTWdhWE1nYjJzc1hHNGdJQ0FnSUNBdkx5QnphVzVqWlNCcGRDZHpJSFZ6WldRZ2QybDBhQ0JqY21WaGRHVkRiR0Z6Y3k0Z1NXWWdhWFFuY3lCdWIzUXNJSFJvWlc0Z2FYUW5jeUJzYVd0bGJIa2dZVnh1SUNBZ0lDQWdMeThnYldsemRHRnJaU0J6YnlCM1pTZHNiQ0IzWVhKdUlIbHZkU0IwYnlCMWMyVWdkR2hsSUhOMFlYUnBZeUJ3Y205d1pYSjBlU3dnY0hKdmNHVnlkSGxjYmlBZ0lDQWdJQzh2SUdsdWFYUnBZV3hwZW1WeUlHOXlJR052Ym5OMGNuVmpkRzl5SUhKbGMzQmxZM1JwZG1Wc2VTNWNiaUFnSUNBZ0lHbG1JQ2hEYjI1emRISjFZM1J2Y2k1blpYUkVaV1poZFd4MFVISnZjSE1wSUh0Y2JpQWdJQ0FnSUNBZ1EyOXVjM1J5ZFdOMGIzSXVaMlYwUkdWbVlYVnNkRkJ5YjNCekxtbHpVbVZoWTNSRGJHRnpjMEZ3Y0hKdmRtVmtJRDBnZTMwN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCcFppQW9RMjl1YzNSeWRXTjBiM0l1Y0hKdmRHOTBlWEJsTG1kbGRFbHVhWFJwWVd4VGRHRjBaU2tnZTF4dUlDQWdJQ0FnSUNCRGIyNXpkSEoxWTNSdmNpNXdjbTkwYjNSNWNHVXVaMlYwU1c1cGRHbGhiRk4wWVhSbExtbHpVbVZoWTNSRGJHRnpjMEZ3Y0hKdmRtVmtJRDBnZTMwN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnWDJsdWRtRnlhV0Z1ZENoY2JpQWdJQ0FnSUVOdmJuTjBjblZqZEc5eUxuQnliM1J2ZEhsd1pTNXlaVzVrWlhJc1hHNGdJQ0FnSUNBblkzSmxZWFJsUTJ4aGMzTW9MaTR1S1RvZ1EyeGhjM01nYzNCbFkybG1hV05oZEdsdmJpQnRkWE4wSUdsdGNHeGxiV1Z1ZENCaElHQnlaVzVrWlhKZ0lHMWxkR2h2WkM0blhHNGdJQ0FnS1R0Y2JseHVJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0IzWVhKdWFXNW5LRnh1SUNBZ0lDQWdJQ0FoUTI5dWMzUnlkV04wYjNJdWNISnZkRzkwZVhCbExtTnZiWEJ2Ym1WdWRGTm9iM1ZzWkZWd1pHRjBaU3hjYmlBZ0lDQWdJQ0FnSnlWeklHaGhjeUJoSUcxbGRHaHZaQ0JqWVd4c1pXUWdKeUFyWEc0Z0lDQWdJQ0FnSUNBZ0oyTnZiWEJ2Ym1WdWRGTm9iM1ZzWkZWd1pHRjBaU2dwTGlCRWFXUWdlVzkxSUcxbFlXNGdjMmh2ZFd4a1EyOXRjRzl1Wlc1MFZYQmtZWFJsS0NrL0lDY2dLMXh1SUNBZ0lDQWdJQ0FnSUNkVWFHVWdibUZ0WlNCcGN5QndhSEpoYzJWa0lHRnpJR0VnY1hWbGMzUnBiMjRnWW1WallYVnpaU0IwYUdVZ1puVnVZM1JwYjI0Z2FYTWdKeUFyWEc0Z0lDQWdJQ0FnSUNBZ0oyVjRjR1ZqZEdWa0lIUnZJSEpsZEhWeWJpQmhJSFpoYkhWbExpY3NYRzRnSUNBZ0lDQWdJSE53WldNdVpHbHpjR3hoZVU1aGJXVWdmSHdnSjBFZ1kyOXRjRzl1Wlc1MEoxeHVJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lIZGhjbTVwYm1jb1hHNGdJQ0FnSUNBZ0lDRkRiMjV6ZEhKMVkzUnZjaTV3Y205MGIzUjVjR1V1WTI5dGNHOXVaVzUwVjJsc2JGSmxZMmxsZG1WUWNtOXdjeXhjYmlBZ0lDQWdJQ0FnSnlWeklHaGhjeUJoSUcxbGRHaHZaQ0JqWVd4c1pXUWdKeUFyWEc0Z0lDQWdJQ0FnSUNBZ0oyTnZiWEJ2Ym1WdWRGZHBiR3hTWldOcFpYWmxVSEp2Y0hNb0tTNGdSR2xrSUhsdmRTQnRaV0Z1SUdOdmJYQnZibVZ1ZEZkcGJHeFNaV05sYVhabFVISnZjSE1vS1Q4bkxGeHVJQ0FnSUNBZ0lDQnpjR1ZqTG1ScGMzQnNZWGxPWVcxbElIeDhJQ2RCSUdOdmJYQnZibVZ1ZENkY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1VtVmtkV05sSUhScGJXVWdjM0JsYm5RZ1pHOXBibWNnYkc5dmEzVndjeUJpZVNCelpYUjBhVzVuSUhSb1pYTmxJRzl1SUhSb1pTQndjbTkwYjNSNWNHVXVYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2JXVjBhRzlrVG1GdFpTQnBiaUJTWldGamRFTnNZWE56U1c1MFpYSm1ZV05sS1NCN1hHNGdJQ0FnSUNCcFppQW9JVU52Ym5OMGNuVmpkRzl5TG5CeWIzUnZkSGx3WlZ0dFpYUm9iMlJPWVcxbFhTa2dlMXh1SUNBZ0lDQWdJQ0JEYjI1emRISjFZM1J2Y2k1d2NtOTBiM1I1Y0dWYmJXVjBhRzlrVG1GdFpWMGdQU0J1ZFd4c08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJEYjI1emRISjFZM1J2Y2p0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCamNtVmhkR1ZEYkdGemN6dGNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCbVlXTjBiM0o1TzF4dVhHNWNibHh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5QlhSVUpRUVVOTElFWlBUMVJGVWx4dUx5OGdMaTkrTDJOeVpXRjBaUzF5WldGamRDMWpiR0Z6Y3k5bVlXTjBiM0o1TG1welhHNHZMeUJ0YjJSMWJHVWdhV1FnUFNBeU1seHVMeThnYlc5a2RXeGxJR05vZFc1cmN5QTlJREFpWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVNJc0luTnZkWEpqWlZKdmIzUWlPaUlpZlE9PVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8yMlxcblwiKTtcblxuLyoqKi8gfSksXG4vKiAyMyAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9+L3Byb3AtdHlwZXMvY2hlY2tQcm9wVHlwZXMuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihwcm9jZXNzKSB7LyoqXFxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXFxuICpcXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuICovXFxuXFxuXFxuXFxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gIHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBmYmpzL2xpYi9pbnZhcmlhbnQgKi8gMSk7XFxuICB2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGZianMvbGliL3dhcm5pbmcgKi8gMik7XFxuICB2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCAqLyA5KTtcXG4gIHZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcXG59XFxuXFxuLyoqXFxuICogQXNzZXJ0IHRoYXQgdGhlIHZhbHVlcyBtYXRjaCB3aXRoIHRoZSB0eXBlIHNwZWNzLlxcbiAqIEVycm9yIG1lc3NhZ2VzIGFyZSBtZW1vcml6ZWQgYW5kIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxcbiAqXFxuICogQHBhcmFtIHtvYmplY3R9IHR5cGVTcGVjcyBNYXAgb2YgbmFtZSB0byBhIFJlYWN0UHJvcFR5cGVcXG4gKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWRcXG4gKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRpb24gZS5nLiBcXFwicHJvcFxcXCIsIFxcXCJjb250ZXh0XFxcIiwgXFxcImNoaWxkIGNvbnRleHRcXFwiXFxuICogQHBhcmFtIHtzdHJpbmd9IGNvbXBvbmVudE5hbWUgTmFtZSBvZiB0aGUgY29tcG9uZW50IGZvciBlcnJvciBtZXNzYWdlcy5cXG4gKiBAcGFyYW0gez9GdW5jdGlvbn0gZ2V0U3RhY2sgUmV0dXJucyB0aGUgY29tcG9uZW50IHN0YWNrLlxcbiAqIEBwcml2YXRlXFxuICovXFxuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBnZXRTdGFjaykge1xcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcXG4gICAgZm9yICh2YXIgdHlwZVNwZWNOYW1lIGluIHR5cGVTcGVjcykge1xcbiAgICAgIGlmICh0eXBlU3BlY3MuaGFzT3duUHJvcGVydHkodHlwZVNwZWNOYW1lKSkge1xcbiAgICAgICAgdmFyIGVycm9yO1xcbiAgICAgICAgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRoZXkgZG8sIHdlIGRvbid0IHdhbnQgdG9cXG4gICAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cXG4gICAgICAgIC8vIEFmdGVyIHRoZXNlIGhhdmUgYmVlbiBjbGVhbmVkIHVwLCB3ZSdsbCBsZXQgdGhlbSB0aHJvdy5cXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxcbiAgICAgICAgICAvLyBiZWhhdmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3NhZ2UuXFxuICAgICAgICAgIGludmFyaWFudCh0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gPT09ICdmdW5jdGlvbicsICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tICcgKyAndGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLCBidXQgcmVjZWl2ZWQgYCVzYC4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIGxvY2F0aW9uLCB0eXBlU3BlY05hbWUsIHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSk7XFxuICAgICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XFxuICAgICAgICB9IGNhdGNoIChleCkge1xcbiAgICAgICAgICBlcnJvciA9IGV4O1xcbiAgICAgICAgfVxcbiAgICAgICAgd2FybmluZyghZXJyb3IgfHwgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciwgJyVzOiB0eXBlIHNwZWNpZmljYXRpb24gb2YgJXMgYCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVuY3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMuICcgKyAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwgYW5kICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgbG9jYXRpb24sIHR5cGVTcGVjTmFtZSwgdHlwZW9mIGVycm9yKTtcXG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7XFxuICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxcbiAgICAgICAgICAvLyBzYW1lIGVycm9yLlxcbiAgICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0cnVlO1xcblxcbiAgICAgICAgICB2YXIgc3RhY2sgPSBnZXRTdGFjayA/IGdldFN0YWNrKCkgOiAnJztcXG5cXG4gICAgICAgICAgd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCAlcyB0eXBlOiAlcyVzJywgbG9jYXRpb24sIGVycm9yLm1lc3NhZ2UsIHN0YWNrICE9IG51bGwgPyBzdGFjayA6ICcnKTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXFxubW9kdWxlLmV4cG9ydHMgPSBjaGVja1Byb3BUeXBlcztcXG5cXG4vKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi8uLi9wcm9jZXNzL2Jyb3dzZXIuanMgKi8gMCkpKS8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaU1qTXVhbk1pTENKemIzVnlZMlZ6SWpwYkluZGxZbkJoWTJzNkx5OHZMaTkrTDNCeWIzQXRkSGx3WlhNdlkyaGxZMnRRY205d1ZIbHdaWE11YW5NL1ptUTNOU0pkTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBb1l5a2dNakF4TXkxd2NtVnpaVzUwTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUUxSlZDQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExseHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWFXWWdLSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNwSUh0Y2JpQWdkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1SUNCMllYSWdkMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KMlppYW5NdmJHbGlMM2RoY201cGJtY25LVHRjYmlBZ2RtRnlJRkpsWVdOMFVISnZjRlI1Y0dWelUyVmpjbVYwSUQwZ2NtVnhkV2x5WlNnbkxpOXNhV0l2VW1WaFkzUlFjbTl3Vkhsd1pYTlRaV055WlhRbktUdGNiaUFnZG1GeUlHeHZaMmRsWkZSNWNHVkdZV2xzZFhKbGN5QTlJSHQ5TzF4dWZWeHVYRzR2S2lwY2JpQXFJRUZ6YzJWeWRDQjBhR0YwSUhSb1pTQjJZV3gxWlhNZ2JXRjBZMmdnZDJsMGFDQjBhR1VnZEhsd1pTQnpjR1ZqY3k1Y2JpQXFJRVZ5Y205eUlHMWxjM05oWjJWeklHRnlaU0J0WlcxdmNtbDZaV1FnWVc1a0lIZHBiR3dnYjI1c2VTQmlaU0J6YUc5M2JpQnZibU5sTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0IwZVhCbFUzQmxZM01nVFdGd0lHOW1JRzVoYldVZ2RHOGdZU0JTWldGamRGQnliM0JVZVhCbFhHNGdLaUJBY0dGeVlXMGdlMjlpYW1WamRIMGdkbUZzZFdWeklGSjFiblJwYldVZ2RtRnNkV1Z6SUhSb1lYUWdibVZsWkNCMGJ5QmlaU0IwZVhCbExXTm9aV05yWldSY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnNiMk5oZEdsdmJpQmxMbWN1SUZ3aWNISnZjRndpTENCY0ltTnZiblJsZUhSY0lpd2dYQ0pqYUdsc1pDQmpiMjUwWlhoMFhDSmNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JqYjIxd2IyNWxiblJPWVcxbElFNWhiV1VnYjJZZ2RHaGxJR052YlhCdmJtVnVkQ0JtYjNJZ1pYSnliM0lnYldWemMyRm5aWE11WEc0Z0tpQkFjR0Z5WVcwZ2V6OUdkVzVqZEdsdmJuMGdaMlYwVTNSaFkyc2dVbVYwZFhKdWN5QjBhR1VnWTI5dGNHOXVaVzUwSUhOMFlXTnJMbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1Wm5WdVkzUnBiMjRnWTJobFkydFFjbTl3Vkhsd1pYTW9kSGx3WlZOd1pXTnpMQ0IyWVd4MVpYTXNJR3h2WTJGMGFXOXVMQ0JqYjIxd2IyNWxiblJPWVcxbExDQm5aWFJUZEdGamF5a2dlMXh1SUNCcFppQW9jSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeWtnZTF4dUlDQWdJR1p2Y2lBb2RtRnlJSFI1Y0dWVGNHVmpUbUZ0WlNCcGJpQjBlWEJsVTNCbFkzTXBJSHRjYmlBZ0lDQWdJR2xtSUNoMGVYQmxVM0JsWTNNdWFHRnpUM2R1VUhKdmNHVnlkSGtvZEhsd1pWTndaV05PWVcxbEtTa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ1pYSnliM0k3WEc0Z0lDQWdJQ0FnSUM4dklGQnliM0FnZEhsd1pTQjJZV3hwWkdGMGFXOXVJRzFoZVNCMGFISnZkeTRnU1c0Z1kyRnpaU0IwYUdWNUlHUnZMQ0IzWlNCa2IyNG5kQ0IzWVc1MElIUnZYRzRnSUNBZ0lDQWdJQzh2SUdaaGFXd2dkR2hsSUhKbGJtUmxjaUJ3YUdGelpTQjNhR1Z5WlNCcGRDQmthV1J1SjNRZ1ptRnBiQ0JpWldadmNtVXVJRk52SUhkbElHeHZaeUJwZEM1Y2JpQWdJQ0FnSUNBZ0x5OGdRV1owWlhJZ2RHaGxjMlVnYUdGMlpTQmlaV1Z1SUdOc1pXRnVaV1FnZFhBc0lIZGxKMnhzSUd4bGRDQjBhR1Z0SUhSb2NtOTNMbHh1SUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJQzh2SUZSb2FYTWdhWE1nYVc1MFpXNTBhVzl1WVd4c2VTQmhiaUJwYm5aaGNtbGhiblFnZEdoaGRDQm5aWFJ6SUdOaGRXZG9kQzRnU1hRbmN5QjBhR1VnYzJGdFpWeHVJQ0FnSUNBZ0lDQWdJQzh2SUdKbGFHRjJhVzl5SUdGeklIZHBkR2h2ZFhRZ2RHaHBjeUJ6ZEdGMFpXMWxiblFnWlhoalpYQjBJSGRwZEdnZ1lTQmlaWFIwWlhJZ2JXVnpjMkZuWlM1Y2JpQWdJQ0FnSUNBZ0lDQnBiblpoY21saGJuUW9kSGx3Wlc5bUlIUjVjR1ZUY0dWamMxdDBlWEJsVTNCbFkwNWhiV1ZkSUQwOVBTQW5ablZ1WTNScGIyNG5MQ0FuSlhNNklDVnpJSFI1Y0dVZ1lDVnpZQ0JwY3lCcGJuWmhiR2xrT3lCcGRDQnRkWE4wSUdKbElHRWdablZ1WTNScGIyNHNJSFZ6ZFdGc2JIa2dabkp2YlNBbklDc2dKM1JvWlNCZ2NISnZjQzEwZVhCbGMyQWdjR0ZqYTJGblpTd2dZblYwSUhKbFkyVnBkbVZrSUdBbGMyQXVKeXdnWTI5dGNHOXVaVzUwVG1GdFpTQjhmQ0FuVW1WaFkzUWdZMnhoYzNNbkxDQnNiMk5oZEdsdmJpd2dkSGx3WlZOd1pXTk9ZVzFsTENCMGVYQmxiMllnZEhsd1pWTndaV056VzNSNWNHVlRjR1ZqVG1GdFpWMHBPMXh1SUNBZ0lDQWdJQ0FnSUdWeWNtOXlJRDBnZEhsd1pWTndaV056VzNSNWNHVlRjR1ZqVG1GdFpWMG9kbUZzZFdWekxDQjBlWEJsVTNCbFkwNWhiV1VzSUdOdmJYQnZibVZ1ZEU1aGJXVXNJR3h2WTJGMGFXOXVMQ0J1ZFd4c0xDQlNaV0ZqZEZCeWIzQlVlWEJsYzFObFkzSmxkQ2s3WEc0Z0lDQWdJQ0FnSUgwZ1kyRjBZMmdnS0dWNEtTQjdYRzRnSUNBZ0lDQWdJQ0FnWlhKeWIzSWdQU0JsZUR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjNZWEp1YVc1bktDRmxjbkp2Y2lCOGZDQmxjbkp2Y2lCcGJuTjBZVzVqWlc5bUlFVnljbTl5TENBbkpYTTZJSFI1Y0dVZ2MzQmxZMmxtYVdOaGRHbHZiaUJ2WmlBbGN5QmdKWE5nSUdseklHbHVkbUZzYVdRN0lIUm9aU0IwZVhCbElHTm9aV05yWlhJZ0p5QXJJQ2RtZFc1amRHbHZiaUJ0ZFhOMElISmxkSFZ5YmlCZ2JuVnNiR0FnYjNJZ1lXNGdZRVZ5Y205eVlDQmlkWFFnY21WMGRYSnVaV1FnWVNBbGN5NGdKeUFySUNkWmIzVWdiV0Y1SUdoaGRtVWdabTl5WjI5MGRHVnVJSFJ2SUhCaGMzTWdZVzRnWVhKbmRXMWxiblFnZEc4Z2RHaGxJSFI1Y0dVZ1kyaGxZMnRsY2lBbklDc2dKMk55WldGMGIzSWdLR0Z5Y21GNVQyWXNJR2x1YzNSaGJtTmxUMllzSUc5aWFtVmpkRTltTENCdmJtVlBaaXdnYjI1bFQyWlVlWEJsTENCaGJtUWdKeUFySUNkemFHRndaU0JoYkd3Z2NtVnhkV2x5WlNCaGJpQmhjbWQxYldWdWRDa3VKeXdnWTI5dGNHOXVaVzUwVG1GdFpTQjhmQ0FuVW1WaFkzUWdZMnhoYzNNbkxDQnNiMk5oZEdsdmJpd2dkSGx3WlZOd1pXTk9ZVzFsTENCMGVYQmxiMllnWlhKeWIzSXBPMXh1SUNBZ0lDQWdJQ0JwWmlBb1pYSnliM0lnYVc1emRHRnVZMlZ2WmlCRmNuSnZjaUFtSmlBaEtHVnljbTl5TG0xbGMzTmhaMlVnYVc0Z2JHOW5aMlZrVkhsd1pVWmhhV3gxY21WektTa2dlMXh1SUNBZ0lDQWdJQ0FnSUM4dklFOXViSGtnYlc5dWFYUnZjaUIwYUdseklHWmhhV3gxY21VZ2IyNWpaU0JpWldOaGRYTmxJSFJvWlhKbElIUmxibVJ6SUhSdklHSmxJR0VnYkc5MElHOW1JSFJvWlZ4dUlDQWdJQ0FnSUNBZ0lDOHZJSE5oYldVZ1pYSnliM0l1WEc0Z0lDQWdJQ0FnSUNBZ2JHOW5aMlZrVkhsd1pVWmhhV3gxY21WelcyVnljbTl5TG0xbGMzTmhaMlZkSUQwZ2RISjFaVHRjYmx4dUlDQWdJQ0FnSUNBZ0lIWmhjaUJ6ZEdGamF5QTlJR2RsZEZOMFlXTnJJRDhnWjJWMFUzUmhZMnNvS1NBNklDY25PMXh1WEc0Z0lDQWdJQ0FnSUNBZ2QyRnlibWx1WnlobVlXeHpaU3dnSjBaaGFXeGxaQ0FsY3lCMGVYQmxPaUFsY3lWekp5d2diRzlqWVhScGIyNHNJR1Z5Y205eUxtMWxjM05oWjJVc0lITjBZV05ySUNFOUlHNTFiR3dnUHlCemRHRmpheUE2SUNjbktUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR05vWldOclVISnZjRlI1Y0dWek8xeHVYRzVjYmx4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeUJYUlVKUVFVTkxJRVpQVDFSRlVseHVMeThnTGk5K0wzQnliM0F0ZEhsd1pYTXZZMmhsWTJ0UWNtOXdWSGx3WlhNdWFuTmNiaTh2SUcxdlpIVnNaU0JwWkNBOUlESXpYRzR2THlCdGIyUjFiR1VnWTJoMWJtdHpJRDBnTUNKZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRU0lzSW5OdmRYSmpaVkp2YjNRaU9pSWlmUT09XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzIzXFxuXCIpO1xuXG4vKioqLyB9KSxcbi8qIDI0ICovXG4vKiBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyogYWxsIGV4cG9ydHMgdXNlZCAqL1xuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vfi9wcm9wLXR5cGVzL2ZhY3RvcnkuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5ldmFsKFwiLyoqXFxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXFxuICpcXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuICovXFxuXFxuXFxuXFxuLy8gUmVhY3QgMTUuNSByZWZlcmVuY2VzIHRoaXMgbW9kdWxlLCBhbmQgYXNzdW1lcyBQcm9wVHlwZXMgYXJlIHN0aWxsIGNhbGxhYmxlIGluIHByb2R1Y3Rpb24uXFxuLy8gVGhlcmVmb3JlIHdlIHJlLWV4cG9ydCBkZXZlbG9wbWVudC1vbmx5IHZlcnNpb24gd2l0aCBhbGwgdGhlIFByb3BUeXBlcyBjaGVja3MgaGVyZS5cXG4vLyBIb3dldmVyIGlmIG9uZSBpcyBtaWdyYXRpbmcgdG8gdGhlIGBwcm9wLXR5cGVzYCBucG0gbGlicmFyeSwgdGhleSB3aWxsIGdvIHRocm91Z2ggdGhlXFxuLy8gYGluZGV4LmpzYCBlbnRyeSBwb2ludCwgYW5kIGl0IHdpbGwgYnJhbmNoIGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnQuXFxudmFyIGZhY3RvcnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzICovIDEzKTtcXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGlzVmFsaWRFbGVtZW50KSB7XFxuICAvLyBJdCBpcyBzdGlsbCBhbGxvd2VkIGluIDE1LjUuXFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IGZhbHNlO1xcbiAgcmV0dXJuIGZhY3RvcnkoaXNWYWxpZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xcbn07XFxuLy8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTWpRdWFuTWlMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOStMM0J5YjNBdGRIbHdaWE12Wm1GamRHOXllUzVxY3o4d01UTmtJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSUNoaktTQXlNREV6TFhCeVpYTmxiblFzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnVFVsVUlHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc0dkx5QlNaV0ZqZENBeE5TNDFJSEpsWm1WeVpXNWpaWE1nZEdocGN5QnRiMlIxYkdVc0lHRnVaQ0JoYzNOMWJXVnpJRkJ5YjNCVWVYQmxjeUJoY21VZ2MzUnBiR3dnWTJGc2JHRmliR1VnYVc0Z2NISnZaSFZqZEdsdmJpNWNiaTh2SUZSb1pYSmxabTl5WlNCM1pTQnlaUzFsZUhCdmNuUWdaR1YyWld4dmNHMWxiblF0YjI1c2VTQjJaWEp6YVc5dUlIZHBkR2dnWVd4c0lIUm9aU0JRY205d1ZIbHdaWE1nWTJobFkydHpJR2hsY21VdVhHNHZMeUJJYjNkbGRtVnlJR2xtSUc5dVpTQnBjeUJ0YVdkeVlYUnBibWNnZEc4Z2RHaGxJR0J3Y205d0xYUjVjR1Z6WUNCdWNHMGdiR2xpY21GeWVTd2dkR2hsZVNCM2FXeHNJR2R2SUhSb2NtOTFaMmdnZEdobFhHNHZMeUJnYVc1a1pYZ3Vhbk5nSUdWdWRISjVJSEJ2YVc1MExDQmhibVFnYVhRZ2QybHNiQ0JpY21GdVkyZ2daR1Z3Wlc1a2FXNW5JRzl1SUhSb1pTQmxiblpwY205dWJXVnVkQzVjYm5aaGNpQm1ZV04wYjNKNUlEMGdjbVZ4ZFdseVpTZ25MaTltWVdOMGIzSjVWMmwwYUZSNWNHVkRhR1ZqYTJWeWN5Y3BPMXh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JtZFc1amRHbHZiaWhwYzFaaGJHbGtSV3hsYldWdWRDa2dlMXh1SUNBdkx5QkpkQ0JwY3lCemRHbHNiQ0JoYkd4dmQyVmtJR2x1SURFMUxqVXVYRzRnSUhaaGNpQjBhSEp2ZDA5dVJHbHlaV04wUVdOalpYTnpJRDBnWm1Gc2MyVTdYRzRnSUhKbGRIVnliaUJtWVdOMGIzSjVLR2x6Vm1Gc2FXUkZiR1Z0Wlc1MExDQjBhSEp2ZDA5dVJHbHlaV04wUVdOalpYTnpLVHRjYm4wN1hHNWNibHh1WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZJRmRGUWxCQlEwc2dSazlQVkVWU1hHNHZMeUF1TDM0dmNISnZjQzEwZVhCbGN5OW1ZV04wYjNKNUxtcHpYRzR2THlCdGIyUjFiR1VnYVdRZ1BTQXlORnh1THk4Z2JXOWtkV3hsSUdOb2RXNXJjeUE5SURBaVhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk95SXNJbk52ZFhKalpWSnZiM1FpT2lJaWZRPT1cXG4vLyMgc291cmNlVVJMPXdlYnBhY2staW50ZXJuYWw6Ly8vMjRcXG5cIik7XG5cbi8qKiovIH0pLFxuLyogMjUgKi9cbi8qIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKiBhbGwgZXhwb3J0cyB1c2VkICovXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbmV2YWwoXCIvKipcXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cXG4gKlxcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4gKi9cXG5cXG5cXG5cXG52YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGZianMvbGliL2VtcHR5RnVuY3Rpb24gKi8gNik7XFxudmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGZianMvbGliL2ludmFyaWFudCAqLyAxKTtcXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCAqLyA5KTtcXG5cXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cXG4gICAgICByZXR1cm47XFxuICAgIH1cXG4gICAgaW52YXJpYW50KFxcbiAgICAgIGZhbHNlLFxcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXFxuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXFxuICAgICk7XFxuICB9O1xcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcXG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XFxuICAgIHJldHVybiBzaGltO1xcbiAgfTtcXG4gIC8vIEltcG9ydGFudCFcXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxcbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xcbiAgICBhcnJheTogc2hpbSxcXG4gICAgYm9vbDogc2hpbSxcXG4gICAgZnVuYzogc2hpbSxcXG4gICAgbnVtYmVyOiBzaGltLFxcbiAgICBvYmplY3Q6IHNoaW0sXFxuICAgIHN0cmluZzogc2hpbSxcXG4gICAgc3ltYm9sOiBzaGltLFxcblxcbiAgICBhbnk6IHNoaW0sXFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXFxuICAgIGVsZW1lbnQ6IHNoaW0sXFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXFxuICAgIG5vZGU6IHNoaW0sXFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxcbiAgICBvbmVPZjogZ2V0U2hpbSxcXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxcbiAgICBzaGFwZTogZ2V0U2hpbSxcXG4gICAgZXhhY3Q6IGdldFNoaW1cXG4gIH07XFxuXFxuICBSZWFjdFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyA9IGVtcHR5RnVuY3Rpb247XFxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcXG5cXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcXG59O1xcbi8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaU1qVXVhbk1pTENKemIzVnlZMlZ6SWpwYkluZGxZbkJoWTJzNkx5OHZMaTkrTDNCeWIzQXRkSGx3WlhNdlptRmpkRzl5ZVZkcGRHaFVhSEp2ZDJsdVoxTm9hVzF6TG1welB6TXpOamdpWFN3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaUx5b3FYRzRnS2lCRGIzQjVjbWxuYUhRZ0tHTXBJREl3TVRNdGNISmxjMlZ1ZEN3Z1JtRmpaV0p2YjJzc0lFbHVZeTVjYmlBcVhHNGdLaUJVYUdseklITnZkWEpqWlNCamIyUmxJR2x6SUd4cFkyVnVjMlZrSUhWdVpHVnlJSFJvWlNCTlNWUWdiR2xqWlc1elpTQm1iM1Z1WkNCcGJpQjBhR1ZjYmlBcUlFeEpRMFZPVTBVZ1ptbHNaU0JwYmlCMGFHVWdjbTl2ZENCa2FYSmxZM1J2Y25rZ2IyWWdkR2hwY3lCemIzVnlZMlVnZEhKbFpTNWNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJsYlhCMGVVWjFibU4wYVc5dUlEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZaVzF3ZEhsR2RXNWpkR2x2YmljcE8xeHVkbUZ5SUdsdWRtRnlhV0Z1ZENBOUlISmxjWFZwY21Vb0oyWmlhbk12YkdsaUwybHVkbUZ5YVdGdWRDY3BPMXh1ZG1GeUlGSmxZV04wVUhKdmNGUjVjR1Z6VTJWamNtVjBJRDBnY21WeGRXbHlaU2duTGk5c2FXSXZVbVZoWTNSUWNtOXdWSGx3WlhOVFpXTnlaWFFuS1R0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ1puVnVZM1JwYjI0Z2MyaHBiU2h3Y205d2N5d2djSEp2Y0U1aGJXVXNJR052YlhCdmJtVnVkRTVoYldVc0lHeHZZMkYwYVc5dUxDQndjbTl3Um5Wc2JFNWhiV1VzSUhObFkzSmxkQ2tnZTF4dUlDQWdJR2xtSUNoelpXTnlaWFFnUFQwOUlGSmxZV04wVUhKdmNGUjVjR1Z6VTJWamNtVjBLU0I3WEc0Z0lDQWdJQ0F2THlCSmRDQnBjeUJ6ZEdsc2JDQnpZV1psSUhkb1pXNGdZMkZzYkdWa0lHWnliMjBnVW1WaFkzUXVYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dUlDQWdJR2x1ZG1GeWFXRnVkQ2hjYmlBZ0lDQWdJR1poYkhObExGeHVJQ0FnSUNBZ0owTmhiR3hwYm1jZ1VISnZjRlI1Y0dWeklIWmhiR2xrWVhSdmNuTWdaR2x5WldOMGJIa2dhWE1nYm05MElITjFjSEJ2Y25SbFpDQmllU0IwYUdVZ1lIQnliM0F0ZEhsd1pYTmdJSEJoWTJ0aFoyVXVJQ2NnSzF4dUlDQWdJQ0FnSjFWelpTQlFjbTl3Vkhsd1pYTXVZMmhsWTJ0UWNtOXdWSGx3WlhNb0tTQjBieUJqWVd4c0lIUm9aVzB1SUNjZ0sxeHVJQ0FnSUNBZ0oxSmxZV1FnYlc5eVpTQmhkQ0JvZEhSd09pOHZabUl1YldVdmRYTmxMV05vWldOckxYQnliM0F0ZEhsd1pYTW5YRzRnSUNBZ0tUdGNiaUFnZlR0Y2JpQWdjMmhwYlM1cGMxSmxjWFZwY21Wa0lEMGdjMmhwYlR0Y2JpQWdablZ1WTNScGIyNGdaMlYwVTJocGJTZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2MyaHBiVHRjYmlBZ2ZUdGNiaUFnTHk4Z1NXMXdiM0owWVc1MElWeHVJQ0F2THlCTFpXVndJSFJvYVhNZ2JHbHpkQ0JwYmlCemVXNWpJSGRwZEdnZ2NISnZaSFZqZEdsdmJpQjJaWEp6YVc5dUlHbHVJR0F1TDJaaFkzUnZjbmxYYVhSb1ZIbHdaVU5vWldOclpYSnpMbXB6WUM1Y2JpQWdkbUZ5SUZKbFlXTjBVSEp2Y0ZSNWNHVnpJRDBnZTF4dUlDQWdJR0Z5Y21GNU9pQnphR2x0TEZ4dUlDQWdJR0p2YjJ3NklITm9hVzBzWEc0Z0lDQWdablZ1WXpvZ2MyaHBiU3hjYmlBZ0lDQnVkVzFpWlhJNklITm9hVzBzWEc0Z0lDQWdiMkpxWldOME9pQnphR2x0TEZ4dUlDQWdJSE4wY21sdVp6b2djMmhwYlN4Y2JpQWdJQ0J6ZVcxaWIydzZJSE5vYVcwc1hHNWNiaUFnSUNCaGJuazZJSE5vYVcwc1hHNGdJQ0FnWVhKeVlYbFBaam9nWjJWMFUyaHBiU3hjYmlBZ0lDQmxiR1Z0Wlc1ME9pQnphR2x0TEZ4dUlDQWdJR2x1YzNSaGJtTmxUMlk2SUdkbGRGTm9hVzBzWEc0Z0lDQWdibTlrWlRvZ2MyaHBiU3hjYmlBZ0lDQnZZbXBsWTNSUFpqb2daMlYwVTJocGJTeGNiaUFnSUNCdmJtVlBaam9nWjJWMFUyaHBiU3hjYmlBZ0lDQnZibVZQWmxSNWNHVTZJR2RsZEZOb2FXMHNYRzRnSUNBZ2MyaGhjR1U2SUdkbGRGTm9hVzBzWEc0Z0lDQWdaWGhoWTNRNklHZGxkRk5vYVcxY2JpQWdmVHRjYmx4dUlDQlNaV0ZqZEZCeWIzQlVlWEJsY3k1amFHVmphMUJ5YjNCVWVYQmxjeUE5SUdWdGNIUjVSblZ1WTNScGIyNDdYRzRnSUZKbFlXTjBVSEp2Y0ZSNWNHVnpMbEJ5YjNCVWVYQmxjeUE5SUZKbFlXTjBVSEp2Y0ZSNWNHVnpPMXh1WEc0Z0lISmxkSFZ5YmlCU1pXRmpkRkJ5YjNCVWVYQmxjenRjYm4wN1hHNWNibHh1WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZJRmRGUWxCQlEwc2dSazlQVkVWU1hHNHZMeUF1TDM0dmNISnZjQzEwZVhCbGN5OW1ZV04wYjNKNVYybDBhRlJvY205M2FXNW5VMmhwYlhNdWFuTmNiaTh2SUcxdlpIVnNaU0JwWkNBOUlESTFYRzR2THlCdGIyUjFiR1VnWTJoMWJtdHpJRDBnTUNKZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3SWl3aWMyOTFjbU5sVW05dmRDSTZJaUo5XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzI1XFxuXCIpO1xuXG4vKioqLyB9KSxcbi8qIDI2ICovXG4vKiBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyogYWxsIGV4cG9ydHMgdXNlZCAqL1xuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vfi9yZWFjdC9saWIvS2V5RXNjYXBlVXRpbHMuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5ldmFsKFwiLyoqXFxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXFxuICpcXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuICpcXG4gKiBcXG4gKi9cXG5cXG5cXG5cXG4vKipcXG4gKiBFc2NhcGUgYW5kIHdyYXAga2V5IHNvIGl0IGlzIHNhZmUgdG8gdXNlIGFzIGEgcmVhY3RpZFxcbiAqXFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSB0byBiZSBlc2NhcGVkLlxcbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIGVzY2FwZWQga2V5LlxcbiAqL1xcblxcbmZ1bmN0aW9uIGVzY2FwZShrZXkpIHtcXG4gIHZhciBlc2NhcGVSZWdleCA9IC9bPTpdL2c7XFxuICB2YXIgZXNjYXBlckxvb2t1cCA9IHtcXG4gICAgJz0nOiAnPTAnLFxcbiAgICAnOic6ICc9MidcXG4gIH07XFxuICB2YXIgZXNjYXBlZFN0cmluZyA9ICgnJyArIGtleSkucmVwbGFjZShlc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNoKSB7XFxuICAgIHJldHVybiBlc2NhcGVyTG9va3VwW21hdGNoXTtcXG4gIH0pO1xcblxcbiAgcmV0dXJuICckJyArIGVzY2FwZWRTdHJpbmc7XFxufVxcblxcbi8qKlxcbiAqIFVuZXNjYXBlIGFuZCB1bndyYXAga2V5IGZvciBodW1hbi1yZWFkYWJsZSBkaXNwbGF5XFxuICpcXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIHVuZXNjYXBlLlxcbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIHVuZXNjYXBlZCBrZXkuXFxuICovXFxuZnVuY3Rpb24gdW5lc2NhcGUoa2V5KSB7XFxuICB2YXIgdW5lc2NhcGVSZWdleCA9IC8oPTB8PTIpL2c7XFxuICB2YXIgdW5lc2NhcGVyTG9va3VwID0ge1xcbiAgICAnPTAnOiAnPScsXFxuICAgICc9Mic6ICc6J1xcbiAgfTtcXG4gIHZhciBrZXlTdWJzdHJpbmcgPSBrZXlbMF0gPT09ICcuJyAmJiBrZXlbMV0gPT09ICckJyA/IGtleS5zdWJzdHJpbmcoMikgOiBrZXkuc3Vic3RyaW5nKDEpO1xcblxcbiAgcmV0dXJuICgnJyArIGtleVN1YnN0cmluZykucmVwbGFjZSh1bmVzY2FwZVJlZ2V4LCBmdW5jdGlvbiAobWF0Y2gpIHtcXG4gICAgcmV0dXJuIHVuZXNjYXBlckxvb2t1cFttYXRjaF07XFxuICB9KTtcXG59XFxuXFxudmFyIEtleUVzY2FwZVV0aWxzID0ge1xcbiAgZXNjYXBlOiBlc2NhcGUsXFxuICB1bmVzY2FwZTogdW5lc2NhcGVcXG59O1xcblxcbm1vZHVsZS5leHBvcnRzID0gS2V5RXNjYXBlVXRpbHM7Ly8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTWpZdWFuTWlMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOStMM0psWVdOMEwyeHBZaTlMWlhsRmMyTmhjR1ZWZEdsc2N5NXFjejlrTkdNeUlsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJQ2hqS1NBeU1ERXpMWEJ5WlhObGJuUXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdUVWxVSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1WEc0Z0tseHVJQ29nWEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzR2S2lwY2JpQXFJRVZ6WTJGd1pTQmhibVFnZDNKaGNDQnJaWGtnYzI4Z2FYUWdhWE1nYzJGbVpTQjBieUIxYzJVZ1lYTWdZU0J5WldGamRHbGtYRzRnS2x4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHdGxlU0IwYnlCaVpTQmxjMk5oY0dWa0xseHVJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5mU0IwYUdVZ1pYTmpZWEJsWkNCclpYa3VYRzRnS2k5Y2JseHVablZ1WTNScGIyNGdaWE5qWVhCbEtHdGxlU2tnZTF4dUlDQjJZWElnWlhOallYQmxVbVZuWlhnZ1BTQXZXejA2WFM5bk8xeHVJQ0IyWVhJZ1pYTmpZWEJsY2t4dmIydDFjQ0E5SUh0Y2JpQWdJQ0FuUFNjNklDYzlNQ2NzWEc0Z0lDQWdKem9uT2lBblBUSW5YRzRnSUgwN1hHNGdJSFpoY2lCbGMyTmhjR1ZrVTNSeWFXNW5JRDBnS0NjbklDc2dhMlY1S1M1eVpYQnNZV05sS0dWelkyRndaVkpsWjJWNExDQm1kVzVqZEdsdmJpQW9iV0YwWTJncElIdGNiaUFnSUNCeVpYUjFjbTRnWlhOallYQmxja3h2YjJ0MWNGdHRZWFJqYUYwN1hHNGdJSDBwTzF4dVhHNGdJSEpsZEhWeWJpQW5KQ2NnS3lCbGMyTmhjR1ZrVTNSeWFXNW5PMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGVnVaWE5qWVhCbElHRnVaQ0IxYm5keVlYQWdhMlY1SUdadmNpQm9kVzFoYmkxeVpXRmtZV0pzWlNCa2FYTndiR0Y1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR3RsZVNCMGJ5QjFibVZ6WTJGd1pTNWNiaUFxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzBnZEdobElIVnVaWE5qWVhCbFpDQnJaWGt1WEc0Z0tpOWNibVoxYm1OMGFXOXVJSFZ1WlhOallYQmxLR3RsZVNrZ2UxeHVJQ0IyWVhJZ2RXNWxjMk5oY0dWU1pXZGxlQ0E5SUM4b1BUQjhQVElwTDJjN1hHNGdJSFpoY2lCMWJtVnpZMkZ3WlhKTWIyOXJkWEFnUFNCN1hHNGdJQ0FnSnowd0p6b2dKejBuTEZ4dUlDQWdJQ2M5TWljNklDYzZKMXh1SUNCOU8xeHVJQ0IyWVhJZ2EyVjVVM1ZpYzNSeWFXNW5JRDBnYTJWNVd6QmRJRDA5UFNBbkxpY2dKaVlnYTJWNVd6RmRJRDA5UFNBbkpDY2dQeUJyWlhrdWMzVmljM1J5YVc1bktESXBJRG9nYTJWNUxuTjFZbk4wY21sdVp5Z3hLVHRjYmx4dUlDQnlaWFIxY200Z0tDY25JQ3NnYTJWNVUzVmljM1J5YVc1bktTNXlaWEJzWVdObEtIVnVaWE5qWVhCbFVtVm5aWGdzSUdaMWJtTjBhVzl1SUNodFlYUmphQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjFibVZ6WTJGd1pYSk1iMjlyZFhCYmJXRjBZMmhkTzF4dUlDQjlLVHRjYm4xY2JseHVkbUZ5SUV0bGVVVnpZMkZ3WlZWMGFXeHpJRDBnZTF4dUlDQmxjMk5oY0dVNklHVnpZMkZ3WlN4Y2JpQWdkVzVsYzJOaGNHVTZJSFZ1WlhOallYQmxYRzU5TzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlFdGxlVVZ6WTJGd1pWVjBhV3h6TzF4dVhHNWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1THk4Z1YwVkNVRUZEU3lCR1QwOVVSVkpjYmk4dklDNHZmaTl5WldGamRDOXNhV0l2UzJWNVJYTmpZWEJsVlhScGJITXVhbk5jYmk4dklHMXZaSFZzWlNCcFpDQTlJREkyWEc0dkx5QnRiMlIxYkdVZ1kyaDFibXR6SUQwZ01DSmRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0luTnZkWEpqWlZKdmIzUWlPaUlpZlE9PVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8yNlxcblwiKTtcblxuLyoqKi8gfSksXG4vKiAyNyAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vcmVhY3QvbGliL1Bvb2xlZENsYXNzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihwcm9jZXNzKSB7LyoqXFxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXFxuICpcXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuICpcXG4gKiBcXG4gKi9cXG5cXG5cXG5cXG52YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3JlYWN0UHJvZEludmFyaWFudCAqLyA0KTtcXG5cXG52YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgZmJqcy9saWIvaW52YXJpYW50ICovIDEpO1xcblxcbi8qKlxcbiAqIFN0YXRpYyBwb29sZXJzLiBTZXZlcmFsIGN1c3RvbSB2ZXJzaW9ucyBmb3IgZWFjaCBwb3RlbnRpYWwgbnVtYmVyIG9mXFxuICogYXJndW1lbnRzLiBBIGNvbXBsZXRlbHkgZ2VuZXJpYyBwb29sZXIgaXMgZWFzeSB0byBpbXBsZW1lbnQsIGJ1dCB3b3VsZFxcbiAqIHJlcXVpcmUgYWNjZXNzaW5nIHRoZSBgYXJndW1lbnRzYCBvYmplY3QuIEluIGVhY2ggb2YgdGhlc2UsIGB0aGlzYCByZWZlcnMgdG9cXG4gKiB0aGUgQ2xhc3MgaXRzZWxmLCBub3QgYW4gaW5zdGFuY2UuIElmIGFueSBvdGhlcnMgYXJlIG5lZWRlZCwgc2ltcGx5IGFkZCB0aGVtXFxuICogaGVyZSwgb3IgaW4gdGhlaXIgb3duIGZpbGVzLlxcbiAqL1xcbnZhciBvbmVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChjb3B5RmllbGRzRnJvbSkge1xcbiAgdmFyIEtsYXNzID0gdGhpcztcXG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XFxuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcXG4gICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgY29weUZpZWxkc0Zyb20pO1xcbiAgICByZXR1cm4gaW5zdGFuY2U7XFxuICB9IGVsc2Uge1xcbiAgICByZXR1cm4gbmV3IEtsYXNzKGNvcHlGaWVsZHNGcm9tKTtcXG4gIH1cXG59O1xcblxcbnZhciB0d29Bcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIpIHtcXG4gIHZhciBLbGFzcyA9IHRoaXM7XFxuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xcbiAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XFxuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMik7XFxuICAgIHJldHVybiBpbnN0YW5jZTtcXG4gIH0gZWxzZSB7XFxuICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyKTtcXG4gIH1cXG59O1xcblxcbnZhciB0aHJlZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMpIHtcXG4gIHZhciBLbGFzcyA9IHRoaXM7XFxuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xcbiAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XFxuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMpO1xcbiAgICByZXR1cm4gaW5zdGFuY2U7XFxuICB9IGVsc2Uge1xcbiAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMpO1xcbiAgfVxcbn07XFxuXFxudmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIsIGEzLCBhNCkge1xcbiAgdmFyIEtsYXNzID0gdGhpcztcXG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XFxuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcXG4gICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyLCBhMywgYTQpO1xcbiAgICByZXR1cm4gaW5zdGFuY2U7XFxuICB9IGVsc2Uge1xcbiAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMsIGE0KTtcXG4gIH1cXG59O1xcblxcbnZhciBzdGFuZGFyZFJlbGVhc2VyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XFxuICB2YXIgS2xhc3MgPSB0aGlzO1xcbiAgIShpbnN0YW5jZSBpbnN0YW5jZW9mIEtsYXNzKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUcnlpbmcgdG8gcmVsZWFzZSBhbiBpbnN0YW5jZSBpbnRvIGEgcG9vbCBvZiBhIGRpZmZlcmVudCB0eXBlLicpIDogX3Byb2RJbnZhcmlhbnQoJzI1JykgOiB2b2lkIDA7XFxuICBpbnN0YW5jZS5kZXN0cnVjdG9yKCk7XFxuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCA8IEtsYXNzLnBvb2xTaXplKSB7XFxuICAgIEtsYXNzLmluc3RhbmNlUG9vbC5wdXNoKGluc3RhbmNlKTtcXG4gIH1cXG59O1xcblxcbnZhciBERUZBVUxUX1BPT0xfU0laRSA9IDEwO1xcbnZhciBERUZBVUxUX1BPT0xFUiA9IG9uZUFyZ3VtZW50UG9vbGVyO1xcblxcbi8qKlxcbiAqIEF1Z21lbnRzIGBDb3B5Q29uc3RydWN0b3JgIHRvIGJlIGEgcG9vbGFibGUgY2xhc3MsIGF1Z21lbnRpbmcgb25seSB0aGUgY2xhc3NcXG4gKiBpdHNlbGYgKHN0YXRpY2FsbHkpIG5vdCBhZGRpbmcgYW55IHByb3RvdHlwaWNhbCBmaWVsZHMuIEFueSBDb3B5Q29uc3RydWN0b3JcXG4gKiB5b3UgZ2l2ZSB0aGlzIG1heSBoYXZlIGEgYHBvb2xTaXplYCBwcm9wZXJ0eSwgYW5kIHdpbGwgbG9vayBmb3IgYVxcbiAqIHByb3RvdHlwaWNhbCBgZGVzdHJ1Y3RvcmAgb24gaW5zdGFuY2VzLlxcbiAqXFxuICogQHBhcmFtIHtGdW5jdGlvbn0gQ29weUNvbnN0cnVjdG9yIENvbnN0cnVjdG9yIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVzZXQuXFxuICogQHBhcmFtIHtGdW5jdGlvbn0gcG9vbGVyIEN1c3RvbWl6YWJsZSBwb29sZXIuXFxuICovXFxudmFyIGFkZFBvb2xpbmdUbyA9IGZ1bmN0aW9uIChDb3B5Q29uc3RydWN0b3IsIHBvb2xlcikge1xcbiAgLy8gQ2FzdGluZyBhcyBhbnkgc28gdGhhdCBmbG93IGlnbm9yZXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBhbmQgdHJ1c3RzXFxuICAvLyBpdCB0byBtYXRjaCB0aGUgdHlwZSB3ZSBkZWNsYXJlZFxcbiAgdmFyIE5ld0tsYXNzID0gQ29weUNvbnN0cnVjdG9yO1xcbiAgTmV3S2xhc3MuaW5zdGFuY2VQb29sID0gW107XFxuICBOZXdLbGFzcy5nZXRQb29sZWQgPSBwb29sZXIgfHwgREVGQVVMVF9QT09MRVI7XFxuICBpZiAoIU5ld0tsYXNzLnBvb2xTaXplKSB7XFxuICAgIE5ld0tsYXNzLnBvb2xTaXplID0gREVGQVVMVF9QT09MX1NJWkU7XFxuICB9XFxuICBOZXdLbGFzcy5yZWxlYXNlID0gc3RhbmRhcmRSZWxlYXNlcjtcXG4gIHJldHVybiBOZXdLbGFzcztcXG59O1xcblxcbnZhciBQb29sZWRDbGFzcyA9IHtcXG4gIGFkZFBvb2xpbmdUbzogYWRkUG9vbGluZ1RvLFxcbiAgb25lQXJndW1lbnRQb29sZXI6IG9uZUFyZ3VtZW50UG9vbGVyLFxcbiAgdHdvQXJndW1lbnRQb29sZXI6IHR3b0FyZ3VtZW50UG9vbGVyLFxcbiAgdGhyZWVBcmd1bWVudFBvb2xlcjogdGhyZWVBcmd1bWVudFBvb2xlcixcXG4gIGZvdXJBcmd1bWVudFBvb2xlcjogZm91ckFyZ3VtZW50UG9vbGVyXFxufTtcXG5cXG5tb2R1bGUuZXhwb3J0cyA9IFBvb2xlZENsYXNzO1xcbi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLy4uLy4uL3Byb2Nlc3MvYnJvd3Nlci5qcyAqLyAwKSkpLy8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTWpjdWFuTWlMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOStMM0psWVdOMEwyeHBZaTlRYjI5c1pXUkRiR0Z6Y3k1cWN6OWpNamxoSWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElDaGpLU0F5TURFekxYQnlaWE5sYm5Rc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1RVbFVJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVYRzRnS2x4dUlDb2dYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnWDNCeWIyUkpiblpoY21saGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDNKbFlXTjBVSEp2WkVsdWRtRnlhV0Z1ZENjcE8xeHVYRzUyWVhJZ2FXNTJZWEpwWVc1MElEMGdjbVZ4ZFdseVpTZ25abUpxY3k5c2FXSXZhVzUyWVhKcFlXNTBKeWs3WEc1Y2JpOHFLbHh1SUNvZ1UzUmhkR2xqSUhCdmIyeGxjbk11SUZObGRtVnlZV3dnWTNWemRHOXRJSFpsY25OcGIyNXpJR1p2Y2lCbFlXTm9JSEJ2ZEdWdWRHbGhiQ0J1ZFcxaVpYSWdiMlpjYmlBcUlHRnlaM1Z0Wlc1MGN5NGdRU0JqYjIxd2JHVjBaV3g1SUdkbGJtVnlhV01nY0c5dmJHVnlJR2x6SUdWaGMza2dkRzhnYVcxd2JHVnRaVzUwTENCaWRYUWdkMjkxYkdSY2JpQXFJSEpsY1hWcGNtVWdZV05qWlhOemFXNW5JSFJvWlNCZ1lYSm5kVzFsYm5SellDQnZZbXBsWTNRdUlFbHVJR1ZoWTJnZ2IyWWdkR2hsYzJVc0lHQjBhR2x6WUNCeVpXWmxjbk1nZEc5Y2JpQXFJSFJvWlNCRGJHRnpjeUJwZEhObGJHWXNJRzV2ZENCaGJpQnBibk4wWVc1alpTNGdTV1lnWVc1NUlHOTBhR1Z5Y3lCaGNtVWdibVZsWkdWa0xDQnphVzF3YkhrZ1lXUmtJSFJvWlcxY2JpQXFJR2hsY21Vc0lHOXlJR2x1SUhSb1pXbHlJRzkzYmlCbWFXeGxjeTVjYmlBcUwxeHVkbUZ5SUc5dVpVRnlaM1Z0Wlc1MFVHOXZiR1Z5SUQwZ1puVnVZM1JwYjI0Z0tHTnZjSGxHYVdWc1pITkdjbTl0S1NCN1hHNGdJSFpoY2lCTGJHRnpjeUE5SUhSb2FYTTdYRzRnSUdsbUlDaExiR0Z6Y3k1cGJuTjBZVzVqWlZCdmIyd3ViR1Z1WjNSb0tTQjdYRzRnSUNBZ2RtRnlJR2x1YzNSaGJtTmxJRDBnUzJ4aGMzTXVhVzV6ZEdGdVkyVlFiMjlzTG5CdmNDZ3BPMXh1SUNBZ0lFdHNZWE56TG1OaGJHd29hVzV6ZEdGdVkyVXNJR052Y0hsR2FXVnNaSE5HY205dEtUdGNiaUFnSUNCeVpYUjFjbTRnYVc1emRHRnVZMlU3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCTGJHRnpjeWhqYjNCNVJtbGxiR1J6Um5KdmJTazdYRzRnSUgxY2JuMDdYRzVjYm5aaGNpQjBkMjlCY21kMWJXVnVkRkJ2YjJ4bGNpQTlJR1oxYm1OMGFXOXVJQ2hoTVN3Z1lUSXBJSHRjYmlBZ2RtRnlJRXRzWVhOeklEMGdkR2hwY3p0Y2JpQWdhV1lnS0V0c1lYTnpMbWx1YzNSaGJtTmxVRzl2YkM1c1pXNW5kR2dwSUh0Y2JpQWdJQ0IyWVhJZ2FXNXpkR0Z1WTJVZ1BTQkxiR0Z6Y3k1cGJuTjBZVzVqWlZCdmIyd3VjRzl3S0NrN1hHNGdJQ0FnUzJ4aGMzTXVZMkZzYkNocGJuTjBZVzVqWlN3Z1lURXNJR0V5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdhVzV6ZEdGdVkyVTdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJMYkdGemN5aGhNU3dnWVRJcE8xeHVJQ0I5WEc1OU8xeHVYRzUyWVhJZ2RHaHlaV1ZCY21kMWJXVnVkRkJ2YjJ4bGNpQTlJR1oxYm1OMGFXOXVJQ2hoTVN3Z1lUSXNJR0V6S1NCN1hHNGdJSFpoY2lCTGJHRnpjeUE5SUhSb2FYTTdYRzRnSUdsbUlDaExiR0Z6Y3k1cGJuTjBZVzVqWlZCdmIyd3ViR1Z1WjNSb0tTQjdYRzRnSUNBZ2RtRnlJR2x1YzNSaGJtTmxJRDBnUzJ4aGMzTXVhVzV6ZEdGdVkyVlFiMjlzTG5CdmNDZ3BPMXh1SUNBZ0lFdHNZWE56TG1OaGJHd29hVzV6ZEdGdVkyVXNJR0V4TENCaE1pd2dZVE1wTzF4dUlDQWdJSEpsZEhWeWJpQnBibk4wWVc1alpUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRXRzWVhOektHRXhMQ0JoTWl3Z1lUTXBPMXh1SUNCOVhHNTlPMXh1WEc1MllYSWdabTkxY2tGeVozVnRaVzUwVUc5dmJHVnlJRDBnWm5WdVkzUnBiMjRnS0dFeExDQmhNaXdnWVRNc0lHRTBLU0I3WEc0Z0lIWmhjaUJMYkdGemN5QTlJSFJvYVhNN1hHNGdJR2xtSUNoTGJHRnpjeTVwYm5OMFlXNWpaVkJ2YjJ3dWJHVnVaM1JvS1NCN1hHNGdJQ0FnZG1GeUlHbHVjM1JoYm1ObElEMGdTMnhoYzNNdWFXNXpkR0Z1WTJWUWIyOXNMbkJ2Y0NncE8xeHVJQ0FnSUV0c1lYTnpMbU5oYkd3b2FXNXpkR0Z1WTJVc0lHRXhMQ0JoTWl3Z1lUTXNJR0UwS1R0Y2JpQWdJQ0J5WlhSMWNtNGdhVzV6ZEdGdVkyVTdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJMYkdGemN5aGhNU3dnWVRJc0lHRXpMQ0JoTkNrN1hHNGdJSDFjYm4wN1hHNWNiblpoY2lCemRHRnVaR0Z5WkZKbGJHVmhjMlZ5SUQwZ1puVnVZM1JwYjI0Z0tHbHVjM1JoYm1ObEtTQjdYRzRnSUhaaGNpQkxiR0Z6Y3lBOUlIUm9hWE03WEc0Z0lDRW9hVzV6ZEdGdVkyVWdhVzV6ZEdGdVkyVnZaaUJMYkdGemN5a2dQeUJ3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuSUQ4Z2FXNTJZWEpwWVc1MEtHWmhiSE5sTENBblZISjVhVzVuSUhSdklISmxiR1ZoYzJVZ1lXNGdhVzV6ZEdGdVkyVWdhVzUwYnlCaElIQnZiMndnYjJZZ1lTQmthV1ptWlhKbGJuUWdkSGx3WlM0bktTQTZJRjl3Y205a1NXNTJZWEpwWVc1MEtDY3lOU2NwSURvZ2RtOXBaQ0F3TzF4dUlDQnBibk4wWVc1alpTNWtaWE4wY25WamRHOXlLQ2s3WEc0Z0lHbG1JQ2hMYkdGemN5NXBibk4wWVc1alpWQnZiMnd1YkdWdVozUm9JRHdnUzJ4aGMzTXVjRzl2YkZOcGVtVXBJSHRjYmlBZ0lDQkxiR0Z6Y3k1cGJuTjBZVzVqWlZCdmIyd3VjSFZ6YUNocGJuTjBZVzVqWlNrN1hHNGdJSDFjYm4wN1hHNWNiblpoY2lCRVJVWkJWVXhVWDFCUFQweGZVMGxhUlNBOUlERXdPMXh1ZG1GeUlFUkZSa0ZWVEZSZlVFOVBURVZTSUQwZ2IyNWxRWEpuZFcxbGJuUlFiMjlzWlhJN1hHNWNiaThxS2x4dUlDb2dRWFZuYldWdWRITWdZRU52Y0hsRGIyNXpkSEoxWTNSdmNtQWdkRzhnWW1VZ1lTQndiMjlzWVdKc1pTQmpiR0Z6Y3l3Z1lYVm5iV1Z1ZEdsdVp5QnZibXg1SUhSb1pTQmpiR0Z6YzF4dUlDb2dhWFJ6Wld4bUlDaHpkR0YwYVdOaGJHeDVLU0J1YjNRZ1lXUmthVzVuSUdGdWVTQndjbTkwYjNSNWNHbGpZV3dnWm1sbGJHUnpMaUJCYm5rZ1EyOXdlVU52Ym5OMGNuVmpkRzl5WEc0Z0tpQjViM1VnWjJsMlpTQjBhR2x6SUcxaGVTQm9ZWFpsSUdFZ1lIQnZiMnhUYVhwbFlDQndjbTl3WlhKMGVTd2dZVzVrSUhkcGJHd2diRzl2YXlCbWIzSWdZVnh1SUNvZ2NISnZkRzkwZVhCcFkyRnNJR0JrWlhOMGNuVmpkRzl5WUNCdmJpQnBibk4wWVc1alpYTXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdEdkVzVqZEdsdmJuMGdRMjl3ZVVOdmJuTjBjblZqZEc5eUlFTnZibk4wY25WamRHOXlJSFJvWVhRZ1kyRnVJR0psSUhWelpXUWdkRzhnY21WelpYUXVYRzRnS2lCQWNHRnlZVzBnZTBaMWJtTjBhVzl1ZlNCd2IyOXNaWElnUTNWemRHOXRhWHBoWW14bElIQnZiMnhsY2k1Y2JpQXFMMXh1ZG1GeUlHRmtaRkJ2YjJ4cGJtZFVieUE5SUdaMWJtTjBhVzl1SUNoRGIzQjVRMjl1YzNSeWRXTjBiM0lzSUhCdmIyeGxjaWtnZTF4dUlDQXZMeUJEWVhOMGFXNW5JR0Z6SUdGdWVTQnpieUIwYUdGMElHWnNiM2NnYVdkdWIzSmxjeUIwYUdVZ1lXTjBkV0ZzSUdsdGNHeGxiV1Z1ZEdGMGFXOXVJR0Z1WkNCMGNuVnpkSE5jYmlBZ0x5OGdhWFFnZEc4Z2JXRjBZMmdnZEdobElIUjVjR1VnZDJVZ1pHVmpiR0Z5WldSY2JpQWdkbUZ5SUU1bGQwdHNZWE56SUQwZ1EyOXdlVU52Ym5OMGNuVmpkRzl5TzF4dUlDQk9aWGRMYkdGemN5NXBibk4wWVc1alpWQnZiMndnUFNCYlhUdGNiaUFnVG1WM1MyeGhjM011WjJWMFVHOXZiR1ZrSUQwZ2NHOXZiR1Z5SUh4OElFUkZSa0ZWVEZSZlVFOVBURVZTTzF4dUlDQnBaaUFvSVU1bGQwdHNZWE56TG5CdmIyeFRhWHBsS1NCN1hHNGdJQ0FnVG1WM1MyeGhjM011Y0c5dmJGTnBlbVVnUFNCRVJVWkJWVXhVWDFCUFQweGZVMGxhUlR0Y2JpQWdmVnh1SUNCT1pYZExiR0Z6Y3k1eVpXeGxZWE5sSUQwZ2MzUmhibVJoY21SU1pXeGxZWE5sY2p0Y2JpQWdjbVYwZFhKdUlFNWxkMHRzWVhOek8xeHVmVHRjYmx4dWRtRnlJRkJ2YjJ4bFpFTnNZWE56SUQwZ2UxeHVJQ0JoWkdSUWIyOXNhVzVuVkc4NklHRmtaRkJ2YjJ4cGJtZFVieXhjYmlBZ2IyNWxRWEpuZFcxbGJuUlFiMjlzWlhJNklHOXVaVUZ5WjNWdFpXNTBVRzl2YkdWeUxGeHVJQ0IwZDI5QmNtZDFiV1Z1ZEZCdmIyeGxjam9nZEhkdlFYSm5kVzFsYm5SUWIyOXNaWElzWEc0Z0lIUm9jbVZsUVhKbmRXMWxiblJRYjI5c1pYSTZJSFJvY21WbFFYSm5kVzFsYm5SUWIyOXNaWElzWEc0Z0lHWnZkWEpCY21kMWJXVnVkRkJ2YjJ4bGNqb2dabTkxY2tGeVozVnRaVzUwVUc5dmJHVnlYRzU5TzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGQnZiMnhsWkVOc1lYTnpPMXh1WEc1Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeThnVjBWQ1VFRkRTeUJHVDA5VVJWSmNiaTh2SUM0dmZpOXlaV0ZqZEM5c2FXSXZVRzl2YkdWa1EyeGhjM011YW5OY2JpOHZJRzF2WkhWc1pTQnBaQ0E5SURJM1hHNHZMeUJ0YjJSMWJHVWdZMmgxYm10eklEMGdNQ0pkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVNJc0luTnZkWEpqWlZKdmIzUWlPaUlpZlE9PVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8yN1xcblwiKTtcblxuLyoqKi8gfSksXG4vKiAyOCAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vcmVhY3QvbGliL1JlYWN0LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihwcm9jZXNzKSB7LyoqXFxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXFxuICpcXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuICpcXG4gKi9cXG5cXG5cXG5cXG52YXIgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIG9iamVjdC1hc3NpZ24gKi8gNSk7XFxuXFxudmFyIFJlYWN0QmFzZUNsYXNzZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL1JlYWN0QmFzZUNsYXNzZXMgKi8gMTQpO1xcbnZhciBSZWFjdENoaWxkcmVuID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9SZWFjdENoaWxkcmVuICovIDI5KTtcXG52YXIgUmVhY3RET01GYWN0b3JpZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL1JlYWN0RE9NRmFjdG9yaWVzICovIDMwKTtcXG52YXIgUmVhY3RFbGVtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9SZWFjdEVsZW1lbnQgKi8gMyk7XFxudmFyIFJlYWN0UHJvcFR5cGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9SZWFjdFByb3BUeXBlcyAqLyAzMik7XFxudmFyIFJlYWN0VmVyc2lvbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vUmVhY3RWZXJzaW9uICovIDM0KTtcXG5cXG52YXIgY3JlYXRlUmVhY3RDbGFzcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vY3JlYXRlQ2xhc3MgKi8gMzYpO1xcbnZhciBvbmx5Q2hpbGQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL29ubHlDaGlsZCAqLyAzNyk7XFxuXFxudmFyIGNyZWF0ZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVudDtcXG52YXIgY3JlYXRlRmFjdG9yeSA9IFJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5O1xcbnZhciBjbG9uZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnQuY2xvbmVFbGVtZW50O1xcblxcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XFxuICB2YXIgbG93UHJpb3JpdHlXYXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9sb3dQcmlvcml0eVdhcm5pbmcgKi8gMTEpO1xcbiAgdmFyIGNhbkRlZmluZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9jYW5EZWZpbmVQcm9wZXJ0eSAqLyA4KTtcXG4gIHZhciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL1JlYWN0RWxlbWVudFZhbGlkYXRvciAqLyAxNik7XFxuICB2YXIgZGlkV2FyblByb3BUeXBlc0RlcHJlY2F0ZWQgPSBmYWxzZTtcXG4gIGNyZWF0ZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRWxlbWVudDtcXG4gIGNyZWF0ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9yeTtcXG4gIGNsb25lRWxlbWVudCA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jbG9uZUVsZW1lbnQ7XFxufVxcblxcbnZhciBfX3NwcmVhZCA9IF9hc3NpZ247XFxudmFyIGNyZWF0ZU1peGluID0gZnVuY3Rpb24gKG1peGluKSB7XFxuICByZXR1cm4gbWl4aW47XFxufTtcXG5cXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xcbiAgdmFyIHdhcm5lZEZvclNwcmVhZCA9IGZhbHNlO1xcbiAgdmFyIHdhcm5lZEZvckNyZWF0ZU1peGluID0gZmFsc2U7XFxuICBfX3NwcmVhZCA9IGZ1bmN0aW9uICgpIHtcXG4gICAgbG93UHJpb3JpdHlXYXJuaW5nKHdhcm5lZEZvclNwcmVhZCwgJ1JlYWN0Ll9fc3ByZWFkIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlICcgKyAnT2JqZWN0LmFzc2lnbiBkaXJlY3RseSBvciBhbm90aGVyIGhlbHBlciBmdW5jdGlvbiB3aXRoIHNpbWlsYXIgJyArICdzZW1hbnRpY3MuIFlvdSBtYXkgYmUgc2VlaW5nIHRoaXMgd2FybmluZyBkdWUgdG8geW91ciBjb21waWxlci4gJyArICdTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcHJlYWQtZGVwcmVjYXRpb24gZm9yIG1vcmUgZGV0YWlscy4nKTtcXG4gICAgd2FybmVkRm9yU3ByZWFkID0gdHJ1ZTtcXG4gICAgcmV0dXJuIF9hc3NpZ24uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcXG4gIH07XFxuXFxuICBjcmVhdGVNaXhpbiA9IGZ1bmN0aW9uIChtaXhpbikge1xcbiAgICBsb3dQcmlvcml0eVdhcm5pbmcod2FybmVkRm9yQ3JlYXRlTWl4aW4sICdSZWFjdC5jcmVhdGVNaXhpbiBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuICcgKyAnSW4gUmVhY3QgdjE2LjAsIGl0IHdpbGwgYmUgcmVtb3ZlZC4gJyArICdZb3UgY2FuIHVzZSB0aGlzIG1peGluIGRpcmVjdGx5IGluc3RlYWQuICcgKyAnU2VlIGh0dHBzOi8vZmIubWUvY3JlYXRlbWl4aW4td2FzLW5ldmVyLWltcGxlbWVudGVkIGZvciBtb3JlIGluZm8uJyk7XFxuICAgIHdhcm5lZEZvckNyZWF0ZU1peGluID0gdHJ1ZTtcXG4gICAgcmV0dXJuIG1peGluO1xcbiAgfTtcXG59XFxuXFxudmFyIFJlYWN0ID0ge1xcbiAgLy8gTW9kZXJuXFxuXFxuICBDaGlsZHJlbjoge1xcbiAgICBtYXA6IFJlYWN0Q2hpbGRyZW4ubWFwLFxcbiAgICBmb3JFYWNoOiBSZWFjdENoaWxkcmVuLmZvckVhY2gsXFxuICAgIGNvdW50OiBSZWFjdENoaWxkcmVuLmNvdW50LFxcbiAgICB0b0FycmF5OiBSZWFjdENoaWxkcmVuLnRvQXJyYXksXFxuICAgIG9ubHk6IG9ubHlDaGlsZFxcbiAgfSxcXG5cXG4gIENvbXBvbmVudDogUmVhY3RCYXNlQ2xhc3Nlcy5Db21wb25lbnQsXFxuICBQdXJlQ29tcG9uZW50OiBSZWFjdEJhc2VDbGFzc2VzLlB1cmVDb21wb25lbnQsXFxuXFxuICBjcmVhdGVFbGVtZW50OiBjcmVhdGVFbGVtZW50LFxcbiAgY2xvbmVFbGVtZW50OiBjbG9uZUVsZW1lbnQsXFxuICBpc1ZhbGlkRWxlbWVudDogUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50LFxcblxcbiAgLy8gQ2xhc3NpY1xcblxcbiAgUHJvcFR5cGVzOiBSZWFjdFByb3BUeXBlcyxcXG4gIGNyZWF0ZUNsYXNzOiBjcmVhdGVSZWFjdENsYXNzLFxcbiAgY3JlYXRlRmFjdG9yeTogY3JlYXRlRmFjdG9yeSxcXG4gIGNyZWF0ZU1peGluOiBjcmVhdGVNaXhpbixcXG5cXG4gIC8vIFRoaXMgbG9va3MgRE9NIHNwZWNpZmljIGJ1dCB0aGVzZSBhcmUgYWN0dWFsbHkgaXNvbW9ycGhpYyBoZWxwZXJzXFxuICAvLyBzaW5jZSB0aGV5IGFyZSBqdXN0IGdlbmVyYXRpbmcgRE9NIHN0cmluZ3MuXFxuICBET006IFJlYWN0RE9NRmFjdG9yaWVzLFxcblxcbiAgdmVyc2lvbjogUmVhY3RWZXJzaW9uLFxcblxcbiAgLy8gRGVwcmVjYXRlZCBob29rIGZvciBKU1ggc3ByZWFkLCBkb24ndCB1c2UgdGhpcyBmb3IgYW55dGhpbmcuXFxuICBfX3NwcmVhZDogX19zcHJlYWRcXG59O1xcblxcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XFxuICB2YXIgd2FybmVkRm9yQ3JlYXRlQ2xhc3MgPSBmYWxzZTtcXG4gIGlmIChjYW5EZWZpbmVQcm9wZXJ0eSkge1xcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3QsICdQcm9wVHlwZXMnLCB7XFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XFxuICAgICAgICBsb3dQcmlvcml0eVdhcm5pbmcoZGlkV2FyblByb3BUeXBlc0RlcHJlY2F0ZWQsICdBY2Nlc3NpbmcgUHJvcFR5cGVzIHZpYSB0aGUgbWFpbiBSZWFjdCBwYWNrYWdlIGlzIGRlcHJlY2F0ZWQsJyArICcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAgUmVhY3QgdjE2LjAuJyArICcgVXNlIHRoZSBsYXRlc3QgYXZhaWxhYmxlIHYxNS4qIHByb3AtdHlwZXMgcGFja2FnZSBmcm9tIG5wbSBpbnN0ZWFkLicgKyAnIEZvciBpbmZvIG9uIHVzYWdlLCBjb21wYXRpYmlsaXR5LCBtaWdyYXRpb24gYW5kIG1vcmUsIHNlZSAnICsgJ2h0dHBzOi8vZmIubWUvcHJvcC10eXBlcy1kb2NzJyk7XFxuICAgICAgICBkaWRXYXJuUHJvcFR5cGVzRGVwcmVjYXRlZCA9IHRydWU7XFxuICAgICAgICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XFxuICAgICAgfVxcbiAgICB9KTtcXG5cXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0LCAnY3JlYXRlQ2xhc3MnLCB7XFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XFxuICAgICAgICBsb3dQcmlvcml0eVdhcm5pbmcod2FybmVkRm9yQ3JlYXRlQ2xhc3MsICdBY2Nlc3NpbmcgY3JlYXRlQ2xhc3MgdmlhIHRoZSBtYWluIFJlYWN0IHBhY2thZ2UgaXMgZGVwcmVjYXRlZCwnICsgJyBhbmQgd2lsbCBiZSByZW1vdmVkIGluIFJlYWN0IHYxNi4wLicgKyBcXFwiIFVzZSBhIHBsYWluIEphdmFTY3JpcHQgY2xhc3MgaW5zdGVhZC4gSWYgeW91J3JlIG5vdCB5ZXQgXFxcIiArICdyZWFkeSB0byBtaWdyYXRlLCBjcmVhdGUtcmVhY3QtY2xhc3MgdjE1LiogaXMgYXZhaWxhYmxlICcgKyAnb24gbnBtIGFzIGEgdGVtcG9yYXJ5LCBkcm9wLWluIHJlcGxhY2VtZW50LiAnICsgJ0ZvciBtb3JlIGluZm8gc2VlIGh0dHBzOi8vZmIubWUvcmVhY3QtY3JlYXRlLWNsYXNzJyk7XFxuICAgICAgICB3YXJuZWRGb3JDcmVhdGVDbGFzcyA9IHRydWU7XFxuICAgICAgICByZXR1cm4gY3JlYXRlUmVhY3RDbGFzcztcXG4gICAgICB9XFxuICAgIH0pO1xcbiAgfVxcblxcbiAgLy8gUmVhY3QuRE9NIGZhY3RvcmllcyBhcmUgZGVwcmVjYXRlZC4gV3JhcCB0aGVzZSBtZXRob2RzIHNvIHRoYXRcXG4gIC8vIGludm9jYXRpb25zIG9mIHRoZSBSZWFjdC5ET00gbmFtZXNwYWNlIGFuZCBhbGVydCB1c2VycyB0byBzd2l0Y2hcXG4gIC8vIHRvIHRoZSBgcmVhY3QtZG9tLWZhY3Rvcmllc2AgcGFja2FnZS5cXG4gIFJlYWN0LkRPTSA9IHt9O1xcbiAgdmFyIHdhcm5lZEZvckZhY3RvcmllcyA9IGZhbHNlO1xcbiAgT2JqZWN0LmtleXMoUmVhY3RET01GYWN0b3JpZXMpLmZvckVhY2goZnVuY3Rpb24gKGZhY3RvcnkpIHtcXG4gICAgUmVhY3QuRE9NW2ZhY3RvcnldID0gZnVuY3Rpb24gKCkge1xcbiAgICAgIGlmICghd2FybmVkRm9yRmFjdG9yaWVzKSB7XFxuICAgICAgICBsb3dQcmlvcml0eVdhcm5pbmcoZmFsc2UsICdBY2Nlc3NpbmcgZmFjdG9yaWVzIGxpa2UgUmVhY3QuRE9NLiVzIGhhcyBiZWVuIGRlcHJlY2F0ZWQgJyArICdhbmQgd2lsbCBiZSByZW1vdmVkIGluIHYxNi4wKy4gVXNlIHRoZSAnICsgJ3JlYWN0LWRvbS1mYWN0b3JpZXMgcGFja2FnZSBpbnN0ZWFkLiAnICsgJyBWZXJzaW9uIDEuMCBwcm92aWRlcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuJyArICcgRm9yIG1vcmUgaW5mbywgc2VlIGh0dHBzOi8vZmIubWUvcmVhY3QtZG9tLWZhY3RvcmllcycsIGZhY3RvcnkpO1xcbiAgICAgICAgd2FybmVkRm9yRmFjdG9yaWVzID0gdHJ1ZTtcXG4gICAgICB9XFxuICAgICAgcmV0dXJuIFJlYWN0RE9NRmFjdG9yaWVzW2ZhY3RvcnldLmFwcGx5KFJlYWN0RE9NRmFjdG9yaWVzLCBhcmd1bWVudHMpO1xcbiAgICB9O1xcbiAgfSk7XFxufVxcblxcbm1vZHVsZS5leHBvcnRzID0gUmVhY3Q7XFxuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vLi4vLi4vcHJvY2Vzcy9icm93c2VyLmpzICovIDApKSkvLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lNamd1YW5NaUxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5K0wzSmxZV04wTDJ4cFlpOVNaV0ZqZEM1cWN6OHlOR1ZtSWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElDaGpLU0F5TURFekxYQnlaWE5sYm5Rc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1RVbFVJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVYRzRnS2x4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlGOWhjM05wWjI0Z1BTQnlaWEYxYVhKbEtDZHZZbXBsWTNRdFlYTnphV2R1SnlrN1hHNWNiblpoY2lCU1pXRmpkRUpoYzJWRGJHRnpjMlZ6SUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVKaGMyVkRiR0Z6YzJWekp5azdYRzUyWVhJZ1VtVmhZM1JEYUdsc1pISmxiaUE5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JEYUdsc1pISmxiaWNwTzF4dWRtRnlJRkpsWVdOMFJFOU5SbUZqZEc5eWFXVnpJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVJQVFVaaFkzUnZjbWxsY3ljcE8xeHVkbUZ5SUZKbFlXTjBSV3hsYldWdWRDQTlJSEpsY1hWcGNtVW9KeTR2VW1WaFkzUkZiR1Z0Wlc1MEp5azdYRzUyWVhJZ1VtVmhZM1JRY205d1ZIbHdaWE1nUFNCeVpYRjFhWEpsS0NjdUwxSmxZV04wVUhKdmNGUjVjR1Z6SnlrN1hHNTJZWElnVW1WaFkzUldaWEp6YVc5dUlEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRGWmxjbk5wYjI0bktUdGNibHh1ZG1GeUlHTnlaV0YwWlZKbFlXTjBRMnhoYzNNZ1BTQnlaWEYxYVhKbEtDY3VMMk55WldGMFpVTnNZWE56SnlrN1hHNTJZWElnYjI1c2VVTm9hV3hrSUQwZ2NtVnhkV2x5WlNnbkxpOXZibXg1UTJocGJHUW5LVHRjYmx4dWRtRnlJR055WldGMFpVVnNaVzFsYm5RZ1BTQlNaV0ZqZEVWc1pXMWxiblF1WTNKbFlYUmxSV3hsYldWdWREdGNiblpoY2lCamNtVmhkR1ZHWVdOMGIzSjVJRDBnVW1WaFkzUkZiR1Z0Wlc1MExtTnlaV0YwWlVaaFkzUnZjbms3WEc1MllYSWdZMnh2Ym1WRmJHVnRaVzUwSUQwZ1VtVmhZM1JGYkdWdFpXNTBMbU5zYjI1bFJXeGxiV1Z1ZER0Y2JseHVhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnZG1GeUlHeHZkMUJ5YVc5eWFYUjVWMkZ5Ym1sdVp5QTlJSEpsY1hWcGNtVW9KeTR2Ykc5M1VISnBiM0pwZEhsWFlYSnVhVzVuSnlrN1hHNGdJSFpoY2lCallXNUVaV1pwYm1WUWNtOXdaWEowZVNBOUlISmxjWFZwY21Vb0p5NHZZMkZ1UkdWbWFXNWxVSEp2Y0dWeWRIa25LVHRjYmlBZ2RtRnlJRkpsWVdOMFJXeGxiV1Z1ZEZaaGJHbGtZWFJ2Y2lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSRmJHVnRaVzUwVm1Gc2FXUmhkRzl5SnlrN1hHNGdJSFpoY2lCa2FXUlhZWEp1VUhKdmNGUjVjR1Z6UkdWd2NtVmpZWFJsWkNBOUlHWmhiSE5sTzF4dUlDQmpjbVZoZEdWRmJHVnRaVzUwSUQwZ1VtVmhZM1JGYkdWdFpXNTBWbUZzYVdSaGRHOXlMbU55WldGMFpVVnNaVzFsYm5RN1hHNGdJR055WldGMFpVWmhZM1J2Y25rZ1BTQlNaV0ZqZEVWc1pXMWxiblJXWVd4cFpHRjBiM0l1WTNKbFlYUmxSbUZqZEc5eWVUdGNiaUFnWTJ4dmJtVkZiR1Z0Wlc1MElEMGdVbVZoWTNSRmJHVnRaVzUwVm1Gc2FXUmhkRzl5TG1Oc2IyNWxSV3hsYldWdWREdGNibjFjYmx4dWRtRnlJRjlmYzNCeVpXRmtJRDBnWDJGemMybG5ianRjYm5aaGNpQmpjbVZoZEdWTmFYaHBiaUE5SUdaMWJtTjBhVzl1SUNodGFYaHBiaWtnZTF4dUlDQnlaWFIxY200Z2JXbDRhVzQ3WEc1OU8xeHVYRzVwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNCMllYSWdkMkZ5Ym1Wa1JtOXlVM0J5WldGa0lEMGdabUZzYzJVN1hHNGdJSFpoY2lCM1lYSnVaV1JHYjNKRGNtVmhkR1ZOYVhocGJpQTlJR1poYkhObE8xeHVJQ0JmWDNOd2NtVmhaQ0E5SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCc2IzZFFjbWx2Y21sMGVWZGhjbTVwYm1jb2QyRnlibVZrUm05eVUzQnlaV0ZrTENBblVtVmhZM1F1WDE5emNISmxZV1FnYVhNZ1pHVndjbVZqWVhSbFpDQmhibVFnYzJodmRXeGtJRzV2ZENCaVpTQjFjMlZrTGlCVmMyVWdKeUFySUNkUFltcGxZM1F1WVhOemFXZHVJR1JwY21WamRHeDVJRzl5SUdGdWIzUm9aWElnYUdWc2NHVnlJR1oxYm1OMGFXOXVJSGRwZEdnZ2MybHRhV3hoY2lBbklDc2dKM05sYldGdWRHbGpjeTRnV1c5MUlHMWhlU0JpWlNCelpXVnBibWNnZEdocGN5QjNZWEp1YVc1bklHUjFaU0IwYnlCNWIzVnlJR052YlhCcGJHVnlMaUFuSUNzZ0oxTmxaU0JvZEhSd2N6b3ZMMlppTG0xbEwzSmxZV04wTFhOd2NtVmhaQzFrWlhCeVpXTmhkR2x2YmlCbWIzSWdiVzl5WlNCa1pYUmhhV3h6TGljcE8xeHVJQ0FnSUhkaGNtNWxaRVp2Y2xOd2NtVmhaQ0E5SUhSeWRXVTdYRzRnSUNBZ2NtVjBkWEp1SUY5aGMzTnBaMjR1WVhCd2JIa29iblZzYkN3Z1lYSm5kVzFsYm5SektUdGNiaUFnZlR0Y2JseHVJQ0JqY21WaGRHVk5hWGhwYmlBOUlHWjFibU4wYVc5dUlDaHRhWGhwYmlrZ2UxeHVJQ0FnSUd4dmQxQnlhVzl5YVhSNVYyRnlibWx1WnloM1lYSnVaV1JHYjNKRGNtVmhkR1ZOYVhocGJpd2dKMUpsWVdOMExtTnlaV0YwWlUxcGVHbHVJR2x6SUdSbGNISmxZMkYwWldRZ1lXNWtJSE5vYjNWc1pDQnViM1FnWW1VZ2RYTmxaQzRnSnlBcklDZEpiaUJTWldGamRDQjJNVFl1TUN3Z2FYUWdkMmxzYkNCaVpTQnlaVzF2ZG1Wa0xpQW5JQ3NnSjFsdmRTQmpZVzRnZFhObElIUm9hWE1nYldsNGFXNGdaR2x5WldOMGJIa2dhVzV6ZEdWaFpDNGdKeUFySUNkVFpXVWdhSFIwY0hNNkx5OW1ZaTV0WlM5amNtVmhkR1Z0YVhocGJpMTNZWE10Ym1WMlpYSXRhVzF3YkdWdFpXNTBaV1FnWm05eUlHMXZjbVVnYVc1bWJ5NG5LVHRjYmlBZ0lDQjNZWEp1WldSR2IzSkRjbVZoZEdWTmFYaHBiaUE5SUhSeWRXVTdYRzRnSUNBZ2NtVjBkWEp1SUcxcGVHbHVPMXh1SUNCOU8xeHVmVnh1WEc1MllYSWdVbVZoWTNRZ1BTQjdYRzRnSUM4dklFMXZaR1Z5Ymx4dVhHNGdJRU5vYVd4a2NtVnVPaUI3WEc0Z0lDQWdiV0Z3T2lCU1pXRmpkRU5vYVd4a2NtVnVMbTFoY0N4Y2JpQWdJQ0JtYjNKRllXTm9PaUJTWldGamRFTm9hV3hrY21WdUxtWnZja1ZoWTJnc1hHNGdJQ0FnWTI5MWJuUTZJRkpsWVdOMFEyaHBiR1J5Wlc0dVkyOTFiblFzWEc0Z0lDQWdkRzlCY25KaGVUb2dVbVZoWTNSRGFHbHNaSEpsYmk1MGIwRnljbUY1TEZ4dUlDQWdJRzl1YkhrNklHOXViSGxEYUdsc1pGeHVJQ0I5TEZ4dVhHNGdJRU52YlhCdmJtVnVkRG9nVW1WaFkzUkNZWE5sUTJ4aGMzTmxjeTVEYjIxd2IyNWxiblFzWEc0Z0lGQjFjbVZEYjIxd2IyNWxiblE2SUZKbFlXTjBRbUZ6WlVOc1lYTnpaWE11VUhWeVpVTnZiWEJ2Ym1WdWRDeGNibHh1SUNCamNtVmhkR1ZGYkdWdFpXNTBPaUJqY21WaGRHVkZiR1Z0Wlc1MExGeHVJQ0JqYkc5dVpVVnNaVzFsYm5RNklHTnNiMjVsUld4bGJXVnVkQ3hjYmlBZ2FYTldZV3hwWkVWc1pXMWxiblE2SUZKbFlXTjBSV3hsYldWdWRDNXBjMVpoYkdsa1JXeGxiV1Z1ZEN4Y2JseHVJQ0F2THlCRGJHRnpjMmxqWEc1Y2JpQWdVSEp2Y0ZSNWNHVnpPaUJTWldGamRGQnliM0JVZVhCbGN5eGNiaUFnWTNKbFlYUmxRMnhoYzNNNklHTnlaV0YwWlZKbFlXTjBRMnhoYzNNc1hHNGdJR055WldGMFpVWmhZM1J2Y25rNklHTnlaV0YwWlVaaFkzUnZjbmtzWEc0Z0lHTnlaV0YwWlUxcGVHbHVPaUJqY21WaGRHVk5hWGhwYml4Y2JseHVJQ0F2THlCVWFHbHpJR3h2YjJ0eklFUlBUU0J6Y0dWamFXWnBZeUJpZFhRZ2RHaGxjMlVnWVhKbElHRmpkSFZoYkd4NUlHbHpiMjF2Y25Cb2FXTWdhR1ZzY0dWeWMxeHVJQ0F2THlCemFXNWpaU0IwYUdWNUlHRnlaU0JxZFhOMElHZGxibVZ5WVhScGJtY2dSRTlOSUhOMGNtbHVaM011WEc0Z0lFUlBUVG9nVW1WaFkzUkVUMDFHWVdOMGIzSnBaWE1zWEc1Y2JpQWdkbVZ5YzJsdmJqb2dVbVZoWTNSV1pYSnphVzl1TEZ4dVhHNGdJQzh2SUVSbGNISmxZMkYwWldRZ2FHOXZheUJtYjNJZ1NsTllJSE53Y21WaFpDd2daRzl1SjNRZ2RYTmxJSFJvYVhNZ1ptOXlJR0Z1ZVhSb2FXNW5MbHh1SUNCZlgzTndjbVZoWkRvZ1gxOXpjSEpsWVdSY2JuMDdYRzVjYm1sbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lIWmhjaUIzWVhKdVpXUkdiM0pEY21WaGRHVkRiR0Z6Y3lBOUlHWmhiSE5sTzF4dUlDQnBaaUFvWTJGdVJHVm1hVzVsVUhKdmNHVnlkSGtwSUh0Y2JpQWdJQ0JQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb1VtVmhZM1FzSUNkUWNtOXdWSGx3WlhNbkxDQjdYRzRnSUNBZ0lDQm5aWFE2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdiRzkzVUhKcGIzSnBkSGxYWVhKdWFXNW5LR1JwWkZkaGNtNVFjbTl3Vkhsd1pYTkVaWEJ5WldOaGRHVmtMQ0FuUVdOalpYTnphVzVuSUZCeWIzQlVlWEJsY3lCMmFXRWdkR2hsSUcxaGFXNGdVbVZoWTNRZ2NHRmphMkZuWlNCcGN5QmtaWEJ5WldOaGRHVmtMQ2NnS3lBbklHRnVaQ0IzYVd4c0lHSmxJSEpsYlc5MlpXUWdhVzRnSUZKbFlXTjBJSFl4Tmk0d0xpY2dLeUFuSUZWelpTQjBhR1VnYkdGMFpYTjBJR0YyWVdsc1lXSnNaU0IyTVRVdUtpQndjbTl3TFhSNWNHVnpJSEJoWTJ0aFoyVWdabkp2YlNCdWNHMGdhVzV6ZEdWaFpDNG5JQ3NnSnlCR2IzSWdhVzVtYnlCdmJpQjFjMkZuWlN3Z1kyOXRjR0YwYVdKcGJHbDBlU3dnYldsbmNtRjBhVzl1SUdGdVpDQnRiM0psTENCelpXVWdKeUFySUNkb2RIUndjem92TDJaaUxtMWxMM0J5YjNBdGRIbHdaWE10Wkc5amN5Y3BPMXh1SUNBZ0lDQWdJQ0JrYVdSWFlYSnVVSEp2Y0ZSNWNHVnpSR1Z3Y21WallYUmxaQ0E5SUhSeWRXVTdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQlNaV0ZqZEZCeWIzQlVlWEJsY3p0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaFNaV0ZqZEN3Z0oyTnlaV0YwWlVOc1lYTnpKeXdnZTF4dUlDQWdJQ0FnWjJWME9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0FnSUd4dmQxQnlhVzl5YVhSNVYyRnlibWx1WnloM1lYSnVaV1JHYjNKRGNtVmhkR1ZEYkdGemN5d2dKMEZqWTJWemMybHVaeUJqY21WaGRHVkRiR0Z6Y3lCMmFXRWdkR2hsSUcxaGFXNGdVbVZoWTNRZ2NHRmphMkZuWlNCcGN5QmtaWEJ5WldOaGRHVmtMQ2NnS3lBbklHRnVaQ0IzYVd4c0lHSmxJSEpsYlc5MlpXUWdhVzRnVW1WaFkzUWdkakUyTGpBdUp5QXJJRndpSUZWelpTQmhJSEJzWVdsdUlFcGhkbUZUWTNKcGNIUWdZMnhoYzNNZ2FXNXpkR1ZoWkM0Z1NXWWdlVzkxSjNKbElHNXZkQ0I1WlhRZ1hDSWdLeUFuY21WaFpIa2dkRzhnYldsbmNtRjBaU3dnWTNKbFlYUmxMWEpsWVdOMExXTnNZWE56SUhZeE5TNHFJR2x6SUdGMllXbHNZV0pzWlNBbklDc2dKMjl1SUc1d2JTQmhjeUJoSUhSbGJYQnZjbUZ5ZVN3Z1pISnZjQzFwYmlCeVpYQnNZV05sYldWdWRDNGdKeUFySUNkR2IzSWdiVzl5WlNCcGJtWnZJSE5sWlNCb2RIUndjem92TDJaaUxtMWxMM0psWVdOMExXTnlaV0YwWlMxamJHRnpjeWNwTzF4dUlDQWdJQ0FnSUNCM1lYSnVaV1JHYjNKRGNtVmhkR1ZEYkdGemN5QTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCamNtVmhkR1ZTWldGamRFTnNZWE56TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBwTzF4dUlDQjlYRzVjYmlBZ0x5OGdVbVZoWTNRdVJFOU5JR1poWTNSdmNtbGxjeUJoY21VZ1pHVndjbVZqWVhSbFpDNGdWM0poY0NCMGFHVnpaU0J0WlhSb2IyUnpJSE52SUhSb1lYUmNiaUFnTHk4Z2FXNTJiMk5oZEdsdmJuTWdiMllnZEdobElGSmxZV04wTGtSUFRTQnVZVzFsYzNCaFkyVWdZVzVrSUdGc1pYSjBJSFZ6WlhKeklIUnZJSE4zYVhSamFGeHVJQ0F2THlCMGJ5QjBhR1VnWUhKbFlXTjBMV1J2YlMxbVlXTjBiM0pwWlhOZ0lIQmhZMnRoWjJVdVhHNGdJRkpsWVdOMExrUlBUU0E5SUh0OU8xeHVJQ0IyWVhJZ2QyRnlibVZrUm05eVJtRmpkRzl5YVdWeklEMGdabUZzYzJVN1hHNGdJRTlpYW1WamRDNXJaWGx6S0ZKbFlXTjBSRTlOUm1GamRHOXlhV1Z6S1M1bWIzSkZZV05vS0daMWJtTjBhVzl1SUNobVlXTjBiM0o1S1NCN1hHNGdJQ0FnVW1WaFkzUXVSRTlOVzJaaFkzUnZjbmxkSUQwZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdhV1lnS0NGM1lYSnVaV1JHYjNKR1lXTjBiM0pwWlhNcElIdGNiaUFnSUNBZ0lDQWdiRzkzVUhKcGIzSnBkSGxYWVhKdWFXNW5LR1poYkhObExDQW5RV05qWlhOemFXNW5JR1poWTNSdmNtbGxjeUJzYVd0bElGSmxZV04wTGtSUFRTNGxjeUJvWVhNZ1ltVmxiaUJrWlhCeVpXTmhkR1ZrSUNjZ0t5QW5ZVzVrSUhkcGJHd2dZbVVnY21WdGIzWmxaQ0JwYmlCMk1UWXVNQ3N1SUZWelpTQjBhR1VnSnlBcklDZHlaV0ZqZEMxa2IyMHRabUZqZEc5eWFXVnpJSEJoWTJ0aFoyVWdhVzV6ZEdWaFpDNGdKeUFySUNjZ1ZtVnljMmx2YmlBeExqQWdjSEp2ZG1sa1pYTWdZU0JrY205d0xXbHVJSEpsY0d4aFkyVnRaVzUwTGljZ0t5QW5JRVp2Y2lCdGIzSmxJR2x1Wm04c0lITmxaU0JvZEhSd2N6b3ZMMlppTG0xbEwzSmxZV04wTFdSdmJTMW1ZV04wYjNKcFpYTW5MQ0JtWVdOMGIzSjVLVHRjYmlBZ0lDQWdJQ0FnZDJGeWJtVmtSbTl5Um1GamRHOXlhV1Z6SUQwZ2RISjFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSEpsZEhWeWJpQlNaV0ZqZEVSUFRVWmhZM1J2Y21sbGMxdG1ZV04wYjNKNVhTNWhjSEJzZVNoU1pXRmpkRVJQVFVaaFkzUnZjbWxsY3l3Z1lYSm5kVzFsYm5SektUdGNiaUFnSUNCOU8xeHVJQ0I5S1R0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JTWldGamREdGNibHh1WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZJRmRGUWxCQlEwc2dSazlQVkVWU1hHNHZMeUF1TDM0dmNtVmhZM1F2YkdsaUwxSmxZV04wTG1welhHNHZMeUJ0YjJSMWJHVWdhV1FnUFNBeU9GeHVMeThnYlc5a2RXeGxJR05vZFc1cmN5QTlJREFpWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0Qklpd2ljMjkxY21ObFVtOXZkQ0k2SWlKOVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8yOFxcblwiKTtcblxuLyoqKi8gfSksXG4vKiAyOSAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vfi9yZWFjdC9saWIvUmVhY3RDaGlsZHJlbi5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qKlxcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxcbiAqXFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbiAqXFxuICovXFxuXFxuXFxuXFxudmFyIFBvb2xlZENsYXNzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9Qb29sZWRDbGFzcyAqLyAyNyk7XFxudmFyIFJlYWN0RWxlbWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vUmVhY3RFbGVtZW50ICovIDMpO1xcblxcbnZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgZmJqcy9saWIvZW1wdHlGdW5jdGlvbiAqLyA2KTtcXG52YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHJhdmVyc2VBbGxDaGlsZHJlbiAqLyAzOCk7XFxuXFxudmFyIHR3b0FyZ3VtZW50UG9vbGVyID0gUG9vbGVkQ2xhc3MudHdvQXJndW1lbnRQb29sZXI7XFxudmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IFBvb2xlZENsYXNzLmZvdXJBcmd1bWVudFBvb2xlcjtcXG5cXG52YXIgdXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXggPSAvXFxcXC8rL2c7XFxuZnVuY3Rpb24gZXNjYXBlVXNlclByb3ZpZGVkS2V5KHRleHQpIHtcXG4gIHJldHVybiAoJycgKyB0ZXh0KS5yZXBsYWNlKHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4LCAnJCYvJyk7XFxufVxcblxcbi8qKlxcbiAqIFBvb2xlZENsYXNzIHJlcHJlc2VudGluZyB0aGUgYm9va2tlZXBpbmcgYXNzb2NpYXRlZCB3aXRoIHBlcmZvcm1pbmcgYSBjaGlsZFxcbiAqIHRyYXZlcnNhbC4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tzLlxcbiAqXFxuICogQGNvbnN0cnVjdG9yIEZvckVhY2hCb29rS2VlcGluZ1xcbiAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBmb3JFYWNoRnVuY3Rpb24gRnVuY3Rpb24gdG8gcGVyZm9ybSB0cmF2ZXJzYWwgd2l0aC5cXG4gKiBAcGFyYW0gez8qfSBmb3JFYWNoQ29udGV4dCBDb250ZXh0IHRvIHBlcmZvcm0gY29udGV4dCB3aXRoLlxcbiAqL1xcbmZ1bmN0aW9uIEZvckVhY2hCb29rS2VlcGluZyhmb3JFYWNoRnVuY3Rpb24sIGZvckVhY2hDb250ZXh0KSB7XFxuICB0aGlzLmZ1bmMgPSBmb3JFYWNoRnVuY3Rpb247XFxuICB0aGlzLmNvbnRleHQgPSBmb3JFYWNoQ29udGV4dDtcXG4gIHRoaXMuY291bnQgPSAwO1xcbn1cXG5Gb3JFYWNoQm9va0tlZXBpbmcucHJvdG90eXBlLmRlc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7XFxuICB0aGlzLmZ1bmMgPSBudWxsO1xcbiAgdGhpcy5jb250ZXh0ID0gbnVsbDtcXG4gIHRoaXMuY291bnQgPSAwO1xcbn07XFxuUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKEZvckVhY2hCb29rS2VlcGluZywgdHdvQXJndW1lbnRQb29sZXIpO1xcblxcbmZ1bmN0aW9uIGZvckVhY2hTaW5nbGVDaGlsZChib29rS2VlcGluZywgY2hpbGQsIG5hbWUpIHtcXG4gIHZhciBmdW5jID0gYm9va0tlZXBpbmcuZnVuYyxcXG4gICAgICBjb250ZXh0ID0gYm9va0tlZXBpbmcuY29udGV4dDtcXG5cXG4gIGZ1bmMuY2FsbChjb250ZXh0LCBjaGlsZCwgYm9va0tlZXBpbmcuY291bnQrKyk7XFxufVxcblxcbi8qKlxcbiAqIEl0ZXJhdGVzIHRocm91Z2ggY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLlxcbiAqXFxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLmZvcmVhY2hcXG4gKlxcbiAqIFRoZSBwcm92aWRlZCBmb3JFYWNoRnVuYyhjaGlsZCwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoXFxuICogbGVhZiBjaGlsZC5cXG4gKlxcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxcbiAqIEBwYXJhbSB7ZnVuY3Rpb24oKiwgaW50KX0gZm9yRWFjaEZ1bmNcXG4gKiBAcGFyYW0geyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQgZm9yIGZvckVhY2hDb250ZXh0LlxcbiAqL1xcbmZ1bmN0aW9uIGZvckVhY2hDaGlsZHJlbihjaGlsZHJlbiwgZm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KSB7XFxuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xcbiAgICByZXR1cm4gY2hpbGRyZW47XFxuICB9XFxuICB2YXIgdHJhdmVyc2VDb250ZXh0ID0gRm9yRWFjaEJvb2tLZWVwaW5nLmdldFBvb2xlZChmb3JFYWNoRnVuYywgZm9yRWFjaENvbnRleHQpO1xcbiAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZm9yRWFjaFNpbmdsZUNoaWxkLCB0cmF2ZXJzZUNvbnRleHQpO1xcbiAgRm9yRWFjaEJvb2tLZWVwaW5nLnJlbGVhc2UodHJhdmVyc2VDb250ZXh0KTtcXG59XFxuXFxuLyoqXFxuICogUG9vbGVkQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBib29ra2VlcGluZyBhc3NvY2lhdGVkIHdpdGggcGVyZm9ybWluZyBhIGNoaWxkXFxuICogbWFwcGluZy4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tzLlxcbiAqXFxuICogQGNvbnN0cnVjdG9yIE1hcEJvb2tLZWVwaW5nXFxuICogQHBhcmFtIHshKn0gbWFwUmVzdWx0IE9iamVjdCBjb250YWluaW5nIHRoZSBvcmRlcmVkIG1hcCBvZiByZXN1bHRzLlxcbiAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBtYXBGdW5jdGlvbiBGdW5jdGlvbiB0byBwZXJmb3JtIG1hcHBpbmcgd2l0aC5cXG4gKiBAcGFyYW0gez8qfSBtYXBDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBtYXBwaW5nIHdpdGguXFxuICovXFxuZnVuY3Rpb24gTWFwQm9va0tlZXBpbmcobWFwUmVzdWx0LCBrZXlQcmVmaXgsIG1hcEZ1bmN0aW9uLCBtYXBDb250ZXh0KSB7XFxuICB0aGlzLnJlc3VsdCA9IG1hcFJlc3VsdDtcXG4gIHRoaXMua2V5UHJlZml4ID0ga2V5UHJlZml4O1xcbiAgdGhpcy5mdW5jID0gbWFwRnVuY3Rpb247XFxuICB0aGlzLmNvbnRleHQgPSBtYXBDb250ZXh0O1xcbiAgdGhpcy5jb3VudCA9IDA7XFxufVxcbk1hcEJvb2tLZWVwaW5nLnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkge1xcbiAgdGhpcy5yZXN1bHQgPSBudWxsO1xcbiAgdGhpcy5rZXlQcmVmaXggPSBudWxsO1xcbiAgdGhpcy5mdW5jID0gbnVsbDtcXG4gIHRoaXMuY29udGV4dCA9IG51bGw7XFxuICB0aGlzLmNvdW50ID0gMDtcXG59O1xcblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhNYXBCb29rS2VlcGluZywgZm91ckFyZ3VtZW50UG9vbGVyKTtcXG5cXG5mdW5jdGlvbiBtYXBTaW5nbGVDaGlsZEludG9Db250ZXh0KGJvb2tLZWVwaW5nLCBjaGlsZCwgY2hpbGRLZXkpIHtcXG4gIHZhciByZXN1bHQgPSBib29rS2VlcGluZy5yZXN1bHQsXFxuICAgICAga2V5UHJlZml4ID0gYm9va0tlZXBpbmcua2V5UHJlZml4LFxcbiAgICAgIGZ1bmMgPSBib29rS2VlcGluZy5mdW5jLFxcbiAgICAgIGNvbnRleHQgPSBib29rS2VlcGluZy5jb250ZXh0O1xcblxcblxcbiAgdmFyIG1hcHBlZENoaWxkID0gZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGluZy5jb3VudCsrKTtcXG4gIGlmIChBcnJheS5pc0FycmF5KG1hcHBlZENoaWxkKSkge1xcbiAgICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKG1hcHBlZENoaWxkLCByZXN1bHQsIGNoaWxkS2V5LCBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQpO1xcbiAgfSBlbHNlIGlmIChtYXBwZWRDaGlsZCAhPSBudWxsKSB7XFxuICAgIGlmIChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQobWFwcGVkQ2hpbGQpKSB7XFxuICAgICAgbWFwcGVkQ2hpbGQgPSBSZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlS2V5KG1hcHBlZENoaWxkLFxcbiAgICAgIC8vIEtlZXAgYm90aCB0aGUgKG1hcHBlZCkgYW5kIG9sZCBrZXlzIGlmIHRoZXkgZGlmZmVyLCBqdXN0IGFzXFxuICAgICAgLy8gdHJhdmVyc2VBbGxDaGlsZHJlbiB1c2VkIHRvIGRvIGZvciBvYmplY3RzIGFzIGNoaWxkcmVuXFxuICAgICAga2V5UHJlZml4ICsgKG1hcHBlZENoaWxkLmtleSAmJiAoIWNoaWxkIHx8IGNoaWxkLmtleSAhPT0gbWFwcGVkQ2hpbGQua2V5KSA/IGVzY2FwZVVzZXJQcm92aWRlZEtleShtYXBwZWRDaGlsZC5rZXkpICsgJy8nIDogJycpICsgY2hpbGRLZXkpO1xcbiAgICB9XFxuICAgIHJlc3VsdC5wdXNoKG1hcHBlZENoaWxkKTtcXG4gIH1cXG59XFxuXFxuZnVuY3Rpb24gbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgYXJyYXksIHByZWZpeCwgZnVuYywgY29udGV4dCkge1xcbiAgdmFyIGVzY2FwZWRQcmVmaXggPSAnJztcXG4gIGlmIChwcmVmaXggIT0gbnVsbCkge1xcbiAgICBlc2NhcGVkUHJlZml4ID0gZXNjYXBlVXNlclByb3ZpZGVkS2V5KHByZWZpeCkgKyAnLyc7XFxuICB9XFxuICB2YXIgdHJhdmVyc2VDb250ZXh0ID0gTWFwQm9va0tlZXBpbmcuZ2V0UG9vbGVkKGFycmF5LCBlc2NhcGVkUHJlZml4LCBmdW5jLCBjb250ZXh0KTtcXG4gIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIG1hcFNpbmdsZUNoaWxkSW50b0NvbnRleHQsIHRyYXZlcnNlQ29udGV4dCk7XFxuICBNYXBCb29rS2VlcGluZy5yZWxlYXNlKHRyYXZlcnNlQ29udGV4dCk7XFxufVxcblxcbi8qKlxcbiAqIE1hcHMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLlxcbiAqXFxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLm1hcFxcbiAqXFxuICogVGhlIHByb3ZpZGVkIG1hcEZ1bmN0aW9uKGNoaWxkLCBrZXksIGluZGV4KSB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaFxcbiAqIGxlYWYgY2hpbGQuXFxuICpcXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCosIGludCl9IGZ1bmMgVGhlIG1hcCBmdW5jdGlvbi5cXG4gKiBAcGFyYW0geyp9IGNvbnRleHQgQ29udGV4dCBmb3IgbWFwRnVuY3Rpb24uXFxuICogQHJldHVybiB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyB0aGUgb3JkZXJlZCBtYXAgb2YgcmVzdWx0cy5cXG4gKi9cXG5mdW5jdGlvbiBtYXBDaGlsZHJlbihjaGlsZHJlbiwgZnVuYywgY29udGV4dCkge1xcbiAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcXG4gICAgcmV0dXJuIGNoaWxkcmVuO1xcbiAgfVxcbiAgdmFyIHJlc3VsdCA9IFtdO1xcbiAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgcmVzdWx0LCBudWxsLCBmdW5jLCBjb250ZXh0KTtcXG4gIHJldHVybiByZXN1bHQ7XFxufVxcblxcbmZ1bmN0aW9uIGZvckVhY2hTaW5nbGVDaGlsZER1bW15KHRyYXZlcnNlQ29udGV4dCwgY2hpbGQsIG5hbWUpIHtcXG4gIHJldHVybiBudWxsO1xcbn1cXG5cXG4vKipcXG4gKiBDb3VudCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXNcXG4gKiBgcHJvcHMuY2hpbGRyZW5gLlxcbiAqXFxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLmNvdW50XFxuICpcXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4uXFxuICovXFxuZnVuY3Rpb24gY291bnRDaGlsZHJlbihjaGlsZHJlbiwgY29udGV4dCkge1xcbiAgcmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hTaW5nbGVDaGlsZER1bW15LCBudWxsKTtcXG59XFxuXFxuLyoqXFxuICogRmxhdHRlbiBhIGNoaWxkcmVuIG9iamVjdCAodHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gKSBhbmRcXG4gKiByZXR1cm4gYW4gYXJyYXkgd2l0aCBhcHByb3ByaWF0ZWx5IHJlLWtleWVkIGNoaWxkcmVuLlxcbiAqXFxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLnRvYXJyYXlcXG4gKi9cXG5mdW5jdGlvbiB0b0FycmF5KGNoaWxkcmVuKSB7XFxuICB2YXIgcmVzdWx0ID0gW107XFxuICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKGNoaWxkcmVuLCByZXN1bHQsIG51bGwsIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCk7XFxuICByZXR1cm4gcmVzdWx0O1xcbn1cXG5cXG52YXIgUmVhY3RDaGlsZHJlbiA9IHtcXG4gIGZvckVhY2g6IGZvckVhY2hDaGlsZHJlbixcXG4gIG1hcDogbWFwQ2hpbGRyZW4sXFxuICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsOiBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsLFxcbiAgY291bnQ6IGNvdW50Q2hpbGRyZW4sXFxuICB0b0FycmF5OiB0b0FycmF5XFxufTtcXG5cXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q2hpbGRyZW47Ly8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTWprdWFuTWlMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOStMM0psWVdOMEwyeHBZaTlTWldGamRFTm9hV3hrY21WdUxtcHpQelJtTURVaVhTd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkRiM0I1Y21sbmFIUWdLR01wSURJd01UTXRjSEpsYzJWdWRDd2dSbUZqWldKdmIyc3NJRWx1WXk1Y2JpQXFYRzRnS2lCVWFHbHpJSE52ZFhKalpTQmpiMlJsSUdseklHeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQk5TVlFnYkdsalpXNXpaU0JtYjNWdVpDQnBiaUIwYUdWY2JpQXFJRXhKUTBWT1UwVWdabWxzWlNCcGJpQjBhR1VnY205dmRDQmthWEpsWTNSdmNua2diMllnZEdocGN5QnpiM1Z5WTJVZ2RISmxaUzVjYmlBcVhHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVRzl2YkdWa1EyeGhjM01nUFNCeVpYRjFhWEpsS0NjdUwxQnZiMnhsWkVOc1lYTnpKeWs3WEc1MllYSWdVbVZoWTNSRmJHVnRaVzUwSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVWc1pXMWxiblFuS1R0Y2JseHVkbUZ5SUdWdGNIUjVSblZ1WTNScGIyNGdQU0J5WlhGMWFYSmxLQ2RtWW1wekwyeHBZaTlsYlhCMGVVWjFibU4wYVc5dUp5azdYRzUyWVhJZ2RISmhkbVZ5YzJWQmJHeERhR2xzWkhKbGJpQTlJSEpsY1hWcGNtVW9KeTR2ZEhKaGRtVnljMlZCYkd4RGFHbHNaSEpsYmljcE8xeHVYRzUyWVhJZ2RIZHZRWEpuZFcxbGJuUlFiMjlzWlhJZ1BTQlFiMjlzWldSRGJHRnpjeTUwZDI5QmNtZDFiV1Z1ZEZCdmIyeGxjanRjYm5aaGNpQm1iM1Z5UVhKbmRXMWxiblJRYjI5c1pYSWdQU0JRYjI5c1pXUkRiR0Z6Y3k1bWIzVnlRWEpuZFcxbGJuUlFiMjlzWlhJN1hHNWNiblpoY2lCMWMyVnlVSEp2ZG1sa1pXUkxaWGxGYzJOaGNHVlNaV2RsZUNBOUlDOWNYQzhyTDJjN1hHNW1kVzVqZEdsdmJpQmxjMk5oY0dWVmMyVnlVSEp2ZG1sa1pXUkxaWGtvZEdWNGRDa2dlMXh1SUNCeVpYUjFjbTRnS0NjbklDc2dkR1Y0ZENrdWNtVndiR0ZqWlNoMWMyVnlVSEp2ZG1sa1pXUkxaWGxGYzJOaGNHVlNaV2RsZUN3Z0p5UW1MeWNwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRkJ2YjJ4bFpFTnNZWE56SUhKbGNISmxjMlZ1ZEdsdVp5QjBhR1VnWW05dmEydGxaWEJwYm1jZ1lYTnpiMk5wWVhSbFpDQjNhWFJvSUhCbGNtWnZjbTFwYm1jZ1lTQmphR2xzWkZ4dUlDb2dkSEpoZG1WeWMyRnNMaUJCYkd4dmQzTWdZWFp2YVdScGJtY2dZbWx1WkdsdVp5QmpZV3hzWW1GamEzTXVYRzRnS2x4dUlDb2dRR052Ym5OMGNuVmpkRzl5SUVadmNrVmhZMmhDYjI5clMyVmxjR2x1WjF4dUlDb2dRSEJoY21GdElIc2hablZ1WTNScGIyNTlJR1p2Y2tWaFkyaEdkVzVqZEdsdmJpQkdkVzVqZEdsdmJpQjBieUJ3WlhKbWIzSnRJSFJ5WVhabGNuTmhiQ0IzYVhSb0xseHVJQ29nUUhCaGNtRnRJSHMvS24wZ1ptOXlSV0ZqYUVOdmJuUmxlSFFnUTI5dWRHVjRkQ0IwYnlCd1pYSm1iM0p0SUdOdmJuUmxlSFFnZDJsMGFDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1JtOXlSV0ZqYUVKdmIydExaV1Z3YVc1bktHWnZja1ZoWTJoR2RXNWpkR2x2Yml3Z1ptOXlSV0ZqYUVOdmJuUmxlSFFwSUh0Y2JpQWdkR2hwY3k1bWRXNWpJRDBnWm05eVJXRmphRVoxYm1OMGFXOXVPMXh1SUNCMGFHbHpMbU52Ym5SbGVIUWdQU0JtYjNKRllXTm9RMjl1ZEdWNGREdGNiaUFnZEdocGN5NWpiM1Z1ZENBOUlEQTdYRzU5WEc1R2IzSkZZV05vUW05dmEwdGxaWEJwYm1jdWNISnZkRzkwZVhCbExtUmxjM1J5ZFdOMGIzSWdQU0JtZFc1amRHbHZiaUFvS1NCN1hHNGdJSFJvYVhNdVpuVnVZeUE5SUc1MWJHdzdYRzRnSUhSb2FYTXVZMjl1ZEdWNGRDQTlJRzUxYkd3N1hHNGdJSFJvYVhNdVkyOTFiblFnUFNBd08xeHVmVHRjYmxCdmIyeGxaRU5zWVhOekxtRmtaRkJ2YjJ4cGJtZFVieWhHYjNKRllXTm9RbTl2YTB0bFpYQnBibWNzSUhSM2IwRnlaM1Z0Wlc1MFVHOXZiR1Z5S1R0Y2JseHVablZ1WTNScGIyNGdabTl5UldGamFGTnBibWRzWlVOb2FXeGtLR0p2YjJ0TFpXVndhVzVuTENCamFHbHNaQ3dnYm1GdFpTa2dlMXh1SUNCMllYSWdablZ1WXlBOUlHSnZiMnRMWldWd2FXNW5MbVoxYm1Nc1hHNGdJQ0FnSUNCamIyNTBaWGgwSUQwZ1ltOXZhMHRsWlhCcGJtY3VZMjl1ZEdWNGREdGNibHh1SUNCbWRXNWpMbU5oYkd3b1kyOXVkR1Y0ZEN3Z1kyaHBiR1FzSUdKdmIydExaV1Z3YVc1bkxtTnZkVzUwS3lzcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVsMFpYSmhkR1Z6SUhSb2NtOTFaMmdnWTJocGJHUnlaVzRnZEdoaGRDQmhjbVVnZEhsd2FXTmhiR3g1SUhOd1pXTnBabWxsWkNCaGN5QmdjSEp2Y0hNdVkyaHBiR1J5Wlc1Z0xseHVJQ3BjYmlBcUlGTmxaU0JvZEhSd2N6b3ZMMlpoWTJWaWIyOXJMbWRwZEdoMVlpNXBieTl5WldGamRDOWtiMk56TDNSdmNDMXNaWFpsYkMxaGNHa3VhSFJ0YkNOeVpXRmpkQzVqYUdsc1pISmxiaTVtYjNKbFlXTm9YRzRnS2x4dUlDb2dWR2hsSUhCeWIzWnBaR1ZrSUdadmNrVmhZMmhHZFc1aktHTm9hV3hrTENCcGJtUmxlQ2tnZDJsc2JDQmlaU0JqWVd4c1pXUWdabTl5SUdWaFkyaGNiaUFxSUd4bFlXWWdZMmhwYkdRdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUhzL0tuMGdZMmhwYkdSeVpXNGdRMmhwYkdSeVpXNGdkSEpsWlNCamIyNTBZV2x1WlhJdVhHNGdLaUJBY0dGeVlXMGdlMloxYm1OMGFXOXVLQ29zSUdsdWRDbDlJR1p2Y2tWaFkyaEdkVzVqWEc0Z0tpQkFjR0Z5WVcwZ2V5cDlJR1p2Y2tWaFkyaERiMjUwWlhoMElFTnZiblJsZUhRZ1ptOXlJR1p2Y2tWaFkyaERiMjUwWlhoMExseHVJQ292WEc1bWRXNWpkR2x2YmlCbWIzSkZZV05vUTJocGJHUnlaVzRvWTJocGJHUnlaVzRzSUdadmNrVmhZMmhHZFc1akxDQm1iM0pGWVdOb1EyOXVkR1Y0ZENrZ2UxeHVJQ0JwWmlBb1kyaHBiR1J5Wlc0Z1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJqYUdsc1pISmxianRjYmlBZ2ZWeHVJQ0IyWVhJZ2RISmhkbVZ5YzJWRGIyNTBaWGgwSUQwZ1JtOXlSV0ZqYUVKdmIydExaV1Z3YVc1bkxtZGxkRkJ2YjJ4bFpDaG1iM0pGWVdOb1JuVnVZeXdnWm05eVJXRmphRU52Ym5SbGVIUXBPMXh1SUNCMGNtRjJaWEp6WlVGc2JFTm9hV3hrY21WdUtHTm9hV3hrY21WdUxDQm1iM0pGWVdOb1UybHVaMnhsUTJocGJHUXNJSFJ5WVhabGNuTmxRMjl1ZEdWNGRDazdYRzRnSUVadmNrVmhZMmhDYjI5clMyVmxjR2x1Wnk1eVpXeGxZWE5sS0hSeVlYWmxjbk5sUTI5dWRHVjRkQ2s3WEc1OVhHNWNiaThxS2x4dUlDb2dVRzl2YkdWa1EyeGhjM01nY21Wd2NtVnpaVzUwYVc1bklIUm9aU0JpYjI5cmEyVmxjR2x1WnlCaGMzTnZZMmxoZEdWa0lIZHBkR2dnY0dWeVptOXliV2x1WnlCaElHTm9hV3hrWEc0Z0tpQnRZWEJ3YVc1bkxpQkJiR3h2ZDNNZ1lYWnZhV1JwYm1jZ1ltbHVaR2x1WnlCallXeHNZbUZqYTNNdVhHNGdLbHh1SUNvZ1FHTnZibk4wY25WamRHOXlJRTFoY0VKdmIydExaV1Z3YVc1blhHNGdLaUJBY0dGeVlXMGdleUVxZlNCdFlYQlNaWE4xYkhRZ1QySnFaV04wSUdOdmJuUmhhVzVwYm1jZ2RHaGxJRzl5WkdWeVpXUWdiV0Z3SUc5bUlISmxjM1ZzZEhNdVhHNGdLaUJBY0dGeVlXMGdleUZtZFc1amRHbHZibjBnYldGd1JuVnVZM1JwYjI0Z1JuVnVZM1JwYjI0Z2RHOGdjR1Z5Wm05eWJTQnRZWEJ3YVc1bklIZHBkR2d1WEc0Z0tpQkFjR0Z5WVcwZ2V6OHFmU0J0WVhCRGIyNTBaWGgwSUVOdmJuUmxlSFFnZEc4Z2NHVnlabTl5YlNCdFlYQndhVzVuSUhkcGRHZ3VYRzRnS2k5Y2JtWjFibU4wYVc5dUlFMWhjRUp2YjJ0TFpXVndhVzVuS0cxaGNGSmxjM1ZzZEN3Z2EyVjVVSEpsWm1sNExDQnRZWEJHZFc1amRHbHZiaXdnYldGd1EyOXVkR1Y0ZENrZ2UxeHVJQ0IwYUdsekxuSmxjM1ZzZENBOUlHMWhjRkpsYzNWc2REdGNiaUFnZEdocGN5NXJaWGxRY21WbWFYZ2dQU0JyWlhsUWNtVm1hWGc3WEc0Z0lIUm9hWE11Wm5WdVl5QTlJRzFoY0VaMWJtTjBhVzl1TzF4dUlDQjBhR2x6TG1OdmJuUmxlSFFnUFNCdFlYQkRiMjUwWlhoME8xeHVJQ0IwYUdsekxtTnZkVzUwSUQwZ01EdGNibjFjYmsxaGNFSnZiMnRMWldWd2FXNW5MbkJ5YjNSdmRIbHdaUzVrWlhOMGNuVmpkRzl5SUQwZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNCMGFHbHpMbkpsYzNWc2RDQTlJRzUxYkd3N1hHNGdJSFJvYVhNdWEyVjVVSEpsWm1sNElEMGdiblZzYkR0Y2JpQWdkR2hwY3k1bWRXNWpJRDBnYm5Wc2JEdGNiaUFnZEdocGN5NWpiMjUwWlhoMElEMGdiblZzYkR0Y2JpQWdkR2hwY3k1amIzVnVkQ0E5SURBN1hHNTlPMXh1VUc5dmJHVmtRMnhoYzNNdVlXUmtVRzl2YkdsdVoxUnZLRTFoY0VKdmIydExaV1Z3YVc1bkxDQm1iM1Z5UVhKbmRXMWxiblJRYjI5c1pYSXBPMXh1WEc1bWRXNWpkR2x2YmlCdFlYQlRhVzVuYkdWRGFHbHNaRWx1ZEc5RGIyNTBaWGgwS0dKdmIydExaV1Z3YVc1bkxDQmphR2xzWkN3Z1kyaHBiR1JMWlhrcElIdGNiaUFnZG1GeUlISmxjM1ZzZENBOUlHSnZiMnRMWldWd2FXNW5MbkpsYzNWc2RDeGNiaUFnSUNBZ0lHdGxlVkJ5WldacGVDQTlJR0p2YjJ0TFpXVndhVzVuTG10bGVWQnlaV1pwZUN4Y2JpQWdJQ0FnSUdaMWJtTWdQU0JpYjI5clMyVmxjR2x1Wnk1bWRXNWpMRnh1SUNBZ0lDQWdZMjl1ZEdWNGRDQTlJR0p2YjJ0TFpXVndhVzVuTG1OdmJuUmxlSFE3WEc1Y2JseHVJQ0IyWVhJZ2JXRndjR1ZrUTJocGJHUWdQU0JtZFc1akxtTmhiR3dvWTI5dWRHVjRkQ3dnWTJocGJHUXNJR0p2YjJ0TFpXVndhVzVuTG1OdmRXNTBLeXNwTzF4dUlDQnBaaUFvUVhKeVlYa3VhWE5CY25KaGVTaHRZWEJ3WldSRGFHbHNaQ2twSUh0Y2JpQWdJQ0J0WVhCSmJuUnZWMmwwYUV0bGVWQnlaV1pwZUVsdWRHVnlibUZzS0cxaGNIQmxaRU5vYVd4a0xDQnlaWE4xYkhRc0lHTm9hV3hrUzJWNUxDQmxiWEIwZVVaMWJtTjBhVzl1TG5Sb1lYUlNaWFIxY201elFYSm5kVzFsYm5RcE8xeHVJQ0I5SUdWc2MyVWdhV1lnS0cxaGNIQmxaRU5vYVd4a0lDRTlJRzUxYkd3cElIdGNiaUFnSUNCcFppQW9VbVZoWTNSRmJHVnRaVzUwTG1selZtRnNhV1JGYkdWdFpXNTBLRzFoY0hCbFpFTm9hV3hrS1NrZ2UxeHVJQ0FnSUNBZ2JXRndjR1ZrUTJocGJHUWdQU0JTWldGamRFVnNaVzFsYm5RdVkyeHZibVZCYm1SU1pYQnNZV05sUzJWNUtHMWhjSEJsWkVOb2FXeGtMRnh1SUNBZ0lDQWdMeThnUzJWbGNDQmliM1JvSUhSb1pTQW9iV0Z3Y0dWa0tTQmhibVFnYjJ4a0lHdGxlWE1nYVdZZ2RHaGxlU0JrYVdabVpYSXNJR3AxYzNRZ1lYTmNiaUFnSUNBZ0lDOHZJSFJ5WVhabGNuTmxRV3hzUTJocGJHUnlaVzRnZFhObFpDQjBieUJrYnlCbWIzSWdiMkpxWldOMGN5QmhjeUJqYUdsc1pISmxibHh1SUNBZ0lDQWdhMlY1VUhKbFptbDRJQ3NnS0cxaGNIQmxaRU5vYVd4a0xtdGxlU0FtSmlBb0lXTm9hV3hrSUh4OElHTm9hV3hrTG10bGVTQWhQVDBnYldGd2NHVmtRMmhwYkdRdWEyVjVLU0EvSUdWelkyRndaVlZ6WlhKUWNtOTJhV1JsWkV0bGVTaHRZWEJ3WldSRGFHbHNaQzVyWlhrcElDc2dKeThuSURvZ0p5Y3BJQ3NnWTJocGJHUkxaWGtwTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWE4xYkhRdWNIVnphQ2h0WVhCd1pXUkRhR2xzWkNrN1hHNGdJSDFjYm4xY2JseHVablZ1WTNScGIyNGdiV0Z3U1c1MGIxZHBkR2hMWlhsUWNtVm1hWGhKYm5SbGNtNWhiQ2hqYUdsc1pISmxiaXdnWVhKeVlYa3NJSEJ5WldacGVDd2dablZ1WXl3Z1kyOXVkR1Y0ZENrZ2UxeHVJQ0IyWVhJZ1pYTmpZWEJsWkZCeVpXWnBlQ0E5SUNjbk8xeHVJQ0JwWmlBb2NISmxabWw0SUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0JsYzJOaGNHVmtVSEpsWm1sNElEMGdaWE5qWVhCbFZYTmxjbEJ5YjNacFpHVmtTMlY1S0hCeVpXWnBlQ2tnS3lBbkx5YzdYRzRnSUgxY2JpQWdkbUZ5SUhSeVlYWmxjbk5sUTI5dWRHVjRkQ0E5SUUxaGNFSnZiMnRMWldWd2FXNW5MbWRsZEZCdmIyeGxaQ2hoY25KaGVTd2daWE5qWVhCbFpGQnlaV1pwZUN3Z1puVnVZeXdnWTI5dWRHVjRkQ2s3WEc0Z0lIUnlZWFpsY25ObFFXeHNRMmhwYkdSeVpXNG9ZMmhwYkdSeVpXNHNJRzFoY0ZOcGJtZHNaVU5vYVd4a1NXNTBiME52Ym5SbGVIUXNJSFJ5WVhabGNuTmxRMjl1ZEdWNGRDazdYRzRnSUUxaGNFSnZiMnRMWldWd2FXNW5MbkpsYkdWaGMyVW9kSEpoZG1WeWMyVkRiMjUwWlhoMEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCTllYQnpJR05vYVd4a2NtVnVJSFJvWVhRZ1lYSmxJSFI1Y0dsallXeHNlU0J6Y0dWamFXWnBaV1FnWVhNZ1lIQnliM0J6TG1Ob2FXeGtjbVZ1WUM1Y2JpQXFYRzRnS2lCVFpXVWdhSFIwY0hNNkx5OW1ZV05sWW05dmF5NW5hWFJvZFdJdWFXOHZjbVZoWTNRdlpHOWpjeTkwYjNBdGJHVjJaV3d0WVhCcExtaDBiV3dqY21WaFkzUXVZMmhwYkdSeVpXNHViV0Z3WEc0Z0tseHVJQ29nVkdobElIQnliM1pwWkdWa0lHMWhjRVoxYm1OMGFXOXVLR05vYVd4a0xDQnJaWGtzSUdsdVpHVjRLU0IzYVd4c0lHSmxJR05oYkd4bFpDQm1iM0lnWldGamFGeHVJQ29nYkdWaFppQmphR2xzWkM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZXo4cWZTQmphR2xzWkhKbGJpQkRhR2xzWkhKbGJpQjBjbVZsSUdOdmJuUmhhVzVsY2k1Y2JpQXFJRUJ3WVhKaGJTQjdablZ1WTNScGIyNG9LaXdnYVc1MEtYMGdablZ1WXlCVWFHVWdiV0Z3SUdaMWJtTjBhVzl1TGx4dUlDb2dRSEJoY21GdElIc3FmU0JqYjI1MFpYaDBJRU52Ym5SbGVIUWdabTl5SUcxaGNFWjFibU4wYVc5dUxseHVJQ29nUUhKbGRIVnliaUI3YjJKcVpXTjBmU0JQWW1wbFkzUWdZMjl1ZEdGcGJtbHVaeUIwYUdVZ2IzSmtaWEpsWkNCdFlYQWdiMllnY21WemRXeDBjeTVjYmlBcUwxeHVablZ1WTNScGIyNGdiV0Z3UTJocGJHUnlaVzRvWTJocGJHUnlaVzRzSUdaMWJtTXNJR052Ym5SbGVIUXBJSHRjYmlBZ2FXWWdLR05vYVd4a2NtVnVJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQnlaWFIxY200Z1kyaHBiR1J5Wlc0N1hHNGdJSDFjYmlBZ2RtRnlJSEpsYzNWc2RDQTlJRnRkTzF4dUlDQnRZWEJKYm5SdlYybDBhRXRsZVZCeVpXWnBlRWx1ZEdWeWJtRnNLR05vYVd4a2NtVnVMQ0J5WlhOMWJIUXNJRzUxYkd3c0lHWjFibU1zSUdOdmJuUmxlSFFwTzF4dUlDQnlaWFIxY200Z2NtVnpkV3gwTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJtYjNKRllXTm9VMmx1WjJ4bFEyaHBiR1JFZFcxdGVTaDBjbUYyWlhKelpVTnZiblJsZUhRc0lHTm9hV3hrTENCdVlXMWxLU0I3WEc0Z0lISmxkSFZ5YmlCdWRXeHNPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnZkVzUwSUhSb1pTQnVkVzFpWlhJZ2IyWWdZMmhwYkdSeVpXNGdkR2hoZENCaGNtVWdkSGx3YVdOaGJHeDVJSE53WldOcFptbGxaQ0JoYzF4dUlDb2dZSEJ5YjNCekxtTm9hV3hrY21WdVlDNWNiaUFxWEc0Z0tpQlRaV1VnYUhSMGNITTZMeTltWVdObFltOXZheTVuYVhSb2RXSXVhVzh2Y21WaFkzUXZaRzlqY3k5MGIzQXRiR1YyWld3dFlYQnBMbWgwYld3amNtVmhZM1F1WTJocGJHUnlaVzR1WTI5MWJuUmNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2V6OHFmU0JqYUdsc1pISmxiaUJEYUdsc1pISmxiaUIwY21WbElHTnZiblJoYVc1bGNpNWNiaUFxSUVCeVpYUjFjbTRnZTI1MWJXSmxjbjBnVkdobElHNTFiV0psY2lCdlppQmphR2xzWkhKbGJpNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1kyOTFiblJEYUdsc1pISmxiaWhqYUdsc1pISmxiaXdnWTI5dWRHVjRkQ2tnZTF4dUlDQnlaWFIxY200Z2RISmhkbVZ5YzJWQmJHeERhR2xzWkhKbGJpaGphR2xzWkhKbGJpd2dabTl5UldGamFGTnBibWRzWlVOb2FXeGtSSFZ0Ylhrc0lHNTFiR3dwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRVpzWVhSMFpXNGdZU0JqYUdsc1pISmxiaUJ2WW1wbFkzUWdLSFI1Y0dsallXeHNlU0J6Y0dWamFXWnBaV1FnWVhNZ1lIQnliM0J6TG1Ob2FXeGtjbVZ1WUNrZ1lXNWtYRzRnS2lCeVpYUjFjbTRnWVc0Z1lYSnlZWGtnZDJsMGFDQmhjSEJ5YjNCeWFXRjBaV3g1SUhKbExXdGxlV1ZrSUdOb2FXeGtjbVZ1TGx4dUlDcGNiaUFxSUZObFpTQm9kSFJ3Y3pvdkwyWmhZMlZpYjI5ckxtZHBkR2gxWWk1cGJ5OXlaV0ZqZEM5a2IyTnpMM1J2Y0Mxc1pYWmxiQzFoY0drdWFIUnRiQ055WldGamRDNWphR2xzWkhKbGJpNTBiMkZ5Y21GNVhHNGdLaTljYm1aMWJtTjBhVzl1SUhSdlFYSnlZWGtvWTJocGJHUnlaVzRwSUh0Y2JpQWdkbUZ5SUhKbGMzVnNkQ0E5SUZ0ZE8xeHVJQ0J0WVhCSmJuUnZWMmwwYUV0bGVWQnlaV1pwZUVsdWRHVnlibUZzS0dOb2FXeGtjbVZ1TENCeVpYTjFiSFFzSUc1MWJHd3NJR1Z0Y0hSNVJuVnVZM1JwYjI0dWRHaGhkRkpsZEhWeWJuTkJjbWQxYldWdWRDazdYRzRnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzU5WEc1Y2JuWmhjaUJTWldGamRFTm9hV3hrY21WdUlEMGdlMXh1SUNCbWIzSkZZV05vT2lCbWIzSkZZV05vUTJocGJHUnlaVzRzWEc0Z0lHMWhjRG9nYldGd1EyaHBiR1J5Wlc0c1hHNGdJRzFoY0VsdWRHOVhhWFJvUzJWNVVISmxabWw0U1c1MFpYSnVZV3c2SUcxaGNFbHVkRzlYYVhSb1MyVjVVSEpsWm1sNFNXNTBaWEp1WVd3c1hHNGdJR052ZFc1ME9pQmpiM1Z1ZEVOb2FXeGtjbVZ1TEZ4dUlDQjBiMEZ5Y21GNU9pQjBiMEZ5Y21GNVhHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUZKbFlXTjBRMmhwYkdSeVpXNDdYRzVjYmx4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeUJYUlVKUVFVTkxJRVpQVDFSRlVseHVMeThnTGk5K0wzSmxZV04wTDJ4cFlpOVNaV0ZqZEVOb2FXeGtjbVZ1TG1welhHNHZMeUJ0YjJSMWJHVWdhV1FnUFNBeU9WeHVMeThnYlc5a2RXeGxJR05vZFc1cmN5QTlJREFpWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEVpTENKemIzVnlZMlZTYjI5MElqb2lJbjA9XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzI5XFxuXCIpO1xuXG4vKioqLyB9KSxcbi8qIDMwICovXG4vKiBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyogYWxsIGV4cG9ydHMgdXNlZCAqL1xuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vfi9yZWFjdC9saWIvUmVhY3RET01GYWN0b3JpZXMuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5ldmFsKFwiLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKHByb2Nlc3MpIHsvKipcXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cXG4gKlxcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4gKlxcbiAqL1xcblxcblxcblxcbnZhciBSZWFjdEVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL1JlYWN0RWxlbWVudCAqLyAzKTtcXG5cXG4vKipcXG4gKiBDcmVhdGUgYSBmYWN0b3J5IHRoYXQgY3JlYXRlcyBIVE1MIHRhZyBlbGVtZW50cy5cXG4gKlxcbiAqIEBwcml2YXRlXFxuICovXFxudmFyIGNyZWF0ZURPTUZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeTtcXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xcbiAgdmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vUmVhY3RFbGVtZW50VmFsaWRhdG9yICovIDE2KTtcXG4gIGNyZWF0ZURPTUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9yeTtcXG59XFxuXFxuLyoqXFxuICogQ3JlYXRlcyBhIG1hcHBpbmcgZnJvbSBzdXBwb3J0ZWQgSFRNTCB0YWdzIHRvIGBSZWFjdERPTUNvbXBvbmVudGAgY2xhc3Nlcy5cXG4gKlxcbiAqIEBwdWJsaWNcXG4gKi9cXG52YXIgUmVhY3RET01GYWN0b3JpZXMgPSB7XFxuICBhOiBjcmVhdGVET01GYWN0b3J5KCdhJyksXFxuICBhYmJyOiBjcmVhdGVET01GYWN0b3J5KCdhYmJyJyksXFxuICBhZGRyZXNzOiBjcmVhdGVET01GYWN0b3J5KCdhZGRyZXNzJyksXFxuICBhcmVhOiBjcmVhdGVET01GYWN0b3J5KCdhcmVhJyksXFxuICBhcnRpY2xlOiBjcmVhdGVET01GYWN0b3J5KCdhcnRpY2xlJyksXFxuICBhc2lkZTogY3JlYXRlRE9NRmFjdG9yeSgnYXNpZGUnKSxcXG4gIGF1ZGlvOiBjcmVhdGVET01GYWN0b3J5KCdhdWRpbycpLFxcbiAgYjogY3JlYXRlRE9NRmFjdG9yeSgnYicpLFxcbiAgYmFzZTogY3JlYXRlRE9NRmFjdG9yeSgnYmFzZScpLFxcbiAgYmRpOiBjcmVhdGVET01GYWN0b3J5KCdiZGknKSxcXG4gIGJkbzogY3JlYXRlRE9NRmFjdG9yeSgnYmRvJyksXFxuICBiaWc6IGNyZWF0ZURPTUZhY3RvcnkoJ2JpZycpLFxcbiAgYmxvY2txdW90ZTogY3JlYXRlRE9NRmFjdG9yeSgnYmxvY2txdW90ZScpLFxcbiAgYm9keTogY3JlYXRlRE9NRmFjdG9yeSgnYm9keScpLFxcbiAgYnI6IGNyZWF0ZURPTUZhY3RvcnkoJ2JyJyksXFxuICBidXR0b246IGNyZWF0ZURPTUZhY3RvcnkoJ2J1dHRvbicpLFxcbiAgY2FudmFzOiBjcmVhdGVET01GYWN0b3J5KCdjYW52YXMnKSxcXG4gIGNhcHRpb246IGNyZWF0ZURPTUZhY3RvcnkoJ2NhcHRpb24nKSxcXG4gIGNpdGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2NpdGUnKSxcXG4gIGNvZGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2NvZGUnKSxcXG4gIGNvbDogY3JlYXRlRE9NRmFjdG9yeSgnY29sJyksXFxuICBjb2xncm91cDogY3JlYXRlRE9NRmFjdG9yeSgnY29sZ3JvdXAnKSxcXG4gIGRhdGE6IGNyZWF0ZURPTUZhY3RvcnkoJ2RhdGEnKSxcXG4gIGRhdGFsaXN0OiBjcmVhdGVET01GYWN0b3J5KCdkYXRhbGlzdCcpLFxcbiAgZGQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2RkJyksXFxuICBkZWw6IGNyZWF0ZURPTUZhY3RvcnkoJ2RlbCcpLFxcbiAgZGV0YWlsczogY3JlYXRlRE9NRmFjdG9yeSgnZGV0YWlscycpLFxcbiAgZGZuOiBjcmVhdGVET01GYWN0b3J5KCdkZm4nKSxcXG4gIGRpYWxvZzogY3JlYXRlRE9NRmFjdG9yeSgnZGlhbG9nJyksXFxuICBkaXY6IGNyZWF0ZURPTUZhY3RvcnkoJ2RpdicpLFxcbiAgZGw6IGNyZWF0ZURPTUZhY3RvcnkoJ2RsJyksXFxuICBkdDogY3JlYXRlRE9NRmFjdG9yeSgnZHQnKSxcXG4gIGVtOiBjcmVhdGVET01GYWN0b3J5KCdlbScpLFxcbiAgZW1iZWQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2VtYmVkJyksXFxuICBmaWVsZHNldDogY3JlYXRlRE9NRmFjdG9yeSgnZmllbGRzZXQnKSxcXG4gIGZpZ2NhcHRpb246IGNyZWF0ZURPTUZhY3RvcnkoJ2ZpZ2NhcHRpb24nKSxcXG4gIGZpZ3VyZTogY3JlYXRlRE9NRmFjdG9yeSgnZmlndXJlJyksXFxuICBmb290ZXI6IGNyZWF0ZURPTUZhY3RvcnkoJ2Zvb3RlcicpLFxcbiAgZm9ybTogY3JlYXRlRE9NRmFjdG9yeSgnZm9ybScpLFxcbiAgaDE6IGNyZWF0ZURPTUZhY3RvcnkoJ2gxJyksXFxuICBoMjogY3JlYXRlRE9NRmFjdG9yeSgnaDInKSxcXG4gIGgzOiBjcmVhdGVET01GYWN0b3J5KCdoMycpLFxcbiAgaDQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2g0JyksXFxuICBoNTogY3JlYXRlRE9NRmFjdG9yeSgnaDUnKSxcXG4gIGg2OiBjcmVhdGVET01GYWN0b3J5KCdoNicpLFxcbiAgaGVhZDogY3JlYXRlRE9NRmFjdG9yeSgnaGVhZCcpLFxcbiAgaGVhZGVyOiBjcmVhdGVET01GYWN0b3J5KCdoZWFkZXInKSxcXG4gIGhncm91cDogY3JlYXRlRE9NRmFjdG9yeSgnaGdyb3VwJyksXFxuICBocjogY3JlYXRlRE9NRmFjdG9yeSgnaHInKSxcXG4gIGh0bWw6IGNyZWF0ZURPTUZhY3RvcnkoJ2h0bWwnKSxcXG4gIGk6IGNyZWF0ZURPTUZhY3RvcnkoJ2knKSxcXG4gIGlmcmFtZTogY3JlYXRlRE9NRmFjdG9yeSgnaWZyYW1lJyksXFxuICBpbWc6IGNyZWF0ZURPTUZhY3RvcnkoJ2ltZycpLFxcbiAgaW5wdXQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2lucHV0JyksXFxuICBpbnM6IGNyZWF0ZURPTUZhY3RvcnkoJ2lucycpLFxcbiAga2JkOiBjcmVhdGVET01GYWN0b3J5KCdrYmQnKSxcXG4gIGtleWdlbjogY3JlYXRlRE9NRmFjdG9yeSgna2V5Z2VuJyksXFxuICBsYWJlbDogY3JlYXRlRE9NRmFjdG9yeSgnbGFiZWwnKSxcXG4gIGxlZ2VuZDogY3JlYXRlRE9NRmFjdG9yeSgnbGVnZW5kJyksXFxuICBsaTogY3JlYXRlRE9NRmFjdG9yeSgnbGknKSxcXG4gIGxpbms6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmsnKSxcXG4gIG1haW46IGNyZWF0ZURPTUZhY3RvcnkoJ21haW4nKSxcXG4gIG1hcDogY3JlYXRlRE9NRmFjdG9yeSgnbWFwJyksXFxuICBtYXJrOiBjcmVhdGVET01GYWN0b3J5KCdtYXJrJyksXFxuICBtZW51OiBjcmVhdGVET01GYWN0b3J5KCdtZW51JyksXFxuICBtZW51aXRlbTogY3JlYXRlRE9NRmFjdG9yeSgnbWVudWl0ZW0nKSxcXG4gIG1ldGE6IGNyZWF0ZURPTUZhY3RvcnkoJ21ldGEnKSxcXG4gIG1ldGVyOiBjcmVhdGVET01GYWN0b3J5KCdtZXRlcicpLFxcbiAgbmF2OiBjcmVhdGVET01GYWN0b3J5KCduYXYnKSxcXG4gIG5vc2NyaXB0OiBjcmVhdGVET01GYWN0b3J5KCdub3NjcmlwdCcpLFxcbiAgb2JqZWN0OiBjcmVhdGVET01GYWN0b3J5KCdvYmplY3QnKSxcXG4gIG9sOiBjcmVhdGVET01GYWN0b3J5KCdvbCcpLFxcbiAgb3B0Z3JvdXA6IGNyZWF0ZURPTUZhY3RvcnkoJ29wdGdyb3VwJyksXFxuICBvcHRpb246IGNyZWF0ZURPTUZhY3RvcnkoJ29wdGlvbicpLFxcbiAgb3V0cHV0OiBjcmVhdGVET01GYWN0b3J5KCdvdXRwdXQnKSxcXG4gIHA6IGNyZWF0ZURPTUZhY3RvcnkoJ3AnKSxcXG4gIHBhcmFtOiBjcmVhdGVET01GYWN0b3J5KCdwYXJhbScpLFxcbiAgcGljdHVyZTogY3JlYXRlRE9NRmFjdG9yeSgncGljdHVyZScpLFxcbiAgcHJlOiBjcmVhdGVET01GYWN0b3J5KCdwcmUnKSxcXG4gIHByb2dyZXNzOiBjcmVhdGVET01GYWN0b3J5KCdwcm9ncmVzcycpLFxcbiAgcTogY3JlYXRlRE9NRmFjdG9yeSgncScpLFxcbiAgcnA6IGNyZWF0ZURPTUZhY3RvcnkoJ3JwJyksXFxuICBydDogY3JlYXRlRE9NRmFjdG9yeSgncnQnKSxcXG4gIHJ1Ynk6IGNyZWF0ZURPTUZhY3RvcnkoJ3J1YnknKSxcXG4gIHM6IGNyZWF0ZURPTUZhY3RvcnkoJ3MnKSxcXG4gIHNhbXA6IGNyZWF0ZURPTUZhY3RvcnkoJ3NhbXAnKSxcXG4gIHNjcmlwdDogY3JlYXRlRE9NRmFjdG9yeSgnc2NyaXB0JyksXFxuICBzZWN0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdzZWN0aW9uJyksXFxuICBzZWxlY3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3NlbGVjdCcpLFxcbiAgc21hbGw6IGNyZWF0ZURPTUZhY3RvcnkoJ3NtYWxsJyksXFxuICBzb3VyY2U6IGNyZWF0ZURPTUZhY3RvcnkoJ3NvdXJjZScpLFxcbiAgc3BhbjogY3JlYXRlRE9NRmFjdG9yeSgnc3BhbicpLFxcbiAgc3Ryb25nOiBjcmVhdGVET01GYWN0b3J5KCdzdHJvbmcnKSxcXG4gIHN0eWxlOiBjcmVhdGVET01GYWN0b3J5KCdzdHlsZScpLFxcbiAgc3ViOiBjcmVhdGVET01GYWN0b3J5KCdzdWInKSxcXG4gIHN1bW1hcnk6IGNyZWF0ZURPTUZhY3RvcnkoJ3N1bW1hcnknKSxcXG4gIHN1cDogY3JlYXRlRE9NRmFjdG9yeSgnc3VwJyksXFxuICB0YWJsZTogY3JlYXRlRE9NRmFjdG9yeSgndGFibGUnKSxcXG4gIHRib2R5OiBjcmVhdGVET01GYWN0b3J5KCd0Ym9keScpLFxcbiAgdGQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RkJyksXFxuICB0ZXh0YXJlYTogY3JlYXRlRE9NRmFjdG9yeSgndGV4dGFyZWEnKSxcXG4gIHRmb290OiBjcmVhdGVET01GYWN0b3J5KCd0Zm9vdCcpLFxcbiAgdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ3RoJyksXFxuICB0aGVhZDogY3JlYXRlRE9NRmFjdG9yeSgndGhlYWQnKSxcXG4gIHRpbWU6IGNyZWF0ZURPTUZhY3RvcnkoJ3RpbWUnKSxcXG4gIHRpdGxlOiBjcmVhdGVET01GYWN0b3J5KCd0aXRsZScpLFxcbiAgdHI6IGNyZWF0ZURPTUZhY3RvcnkoJ3RyJyksXFxuICB0cmFjazogY3JlYXRlRE9NRmFjdG9yeSgndHJhY2snKSxcXG4gIHU6IGNyZWF0ZURPTUZhY3RvcnkoJ3UnKSxcXG4gIHVsOiBjcmVhdGVET01GYWN0b3J5KCd1bCcpLFxcbiAgJ3Zhcic6IGNyZWF0ZURPTUZhY3RvcnkoJ3ZhcicpLFxcbiAgdmlkZW86IGNyZWF0ZURPTUZhY3RvcnkoJ3ZpZGVvJyksXFxuICB3YnI6IGNyZWF0ZURPTUZhY3RvcnkoJ3dicicpLFxcblxcbiAgLy8gU1ZHXFxuICBjaXJjbGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2NpcmNsZScpLFxcbiAgY2xpcFBhdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ2NsaXBQYXRoJyksXFxuICBkZWZzOiBjcmVhdGVET01GYWN0b3J5KCdkZWZzJyksXFxuICBlbGxpcHNlOiBjcmVhdGVET01GYWN0b3J5KCdlbGxpcHNlJyksXFxuICBnOiBjcmVhdGVET01GYWN0b3J5KCdnJyksXFxuICBpbWFnZTogY3JlYXRlRE9NRmFjdG9yeSgnaW1hZ2UnKSxcXG4gIGxpbmU6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmUnKSxcXG4gIGxpbmVhckdyYWRpZW50OiBjcmVhdGVET01GYWN0b3J5KCdsaW5lYXJHcmFkaWVudCcpLFxcbiAgbWFzazogY3JlYXRlRE9NRmFjdG9yeSgnbWFzaycpLFxcbiAgcGF0aDogY3JlYXRlRE9NRmFjdG9yeSgncGF0aCcpLFxcbiAgcGF0dGVybjogY3JlYXRlRE9NRmFjdG9yeSgncGF0dGVybicpLFxcbiAgcG9seWdvbjogY3JlYXRlRE9NRmFjdG9yeSgncG9seWdvbicpLFxcbiAgcG9seWxpbmU6IGNyZWF0ZURPTUZhY3RvcnkoJ3BvbHlsaW5lJyksXFxuICByYWRpYWxHcmFkaWVudDogY3JlYXRlRE9NRmFjdG9yeSgncmFkaWFsR3JhZGllbnQnKSxcXG4gIHJlY3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3JlY3QnKSxcXG4gIHN0b3A6IGNyZWF0ZURPTUZhY3RvcnkoJ3N0b3AnKSxcXG4gIHN2ZzogY3JlYXRlRE9NRmFjdG9yeSgnc3ZnJyksXFxuICB0ZXh0OiBjcmVhdGVET01GYWN0b3J5KCd0ZXh0JyksXFxuICB0c3BhbjogY3JlYXRlRE9NRmFjdG9yeSgndHNwYW4nKVxcbn07XFxuXFxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUZhY3RvcmllcztcXG4vKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi8uLi8uLi9wcm9jZXNzL2Jyb3dzZXIuanMgKi8gMCkpKS8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaU16QXVhbk1pTENKemIzVnlZMlZ6SWpwYkluZGxZbkJoWTJzNkx5OHZMaTkrTDNKbFlXTjBMMnhwWWk5U1pXRmpkRVJQVFVaaFkzUnZjbWxsY3k1cWN6ODFZVGt5SWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1EyOXdlWEpwWjJoMElDaGpLU0F5TURFekxYQnlaWE5sYm5Rc0lFWmhZMlZpYjI5ckxDQkpibU11WEc0Z0tseHVJQ29nVkdocGN5QnpiM1Z5WTJVZ1kyOWtaU0JwY3lCc2FXTmxibk5sWkNCMWJtUmxjaUIwYUdVZ1RVbFVJR3hwWTJWdWMyVWdabTkxYm1RZ2FXNGdkR2hsWEc0Z0tpQk1TVU5GVGxORklHWnBiR1VnYVc0Z2RHaGxJSEp2YjNRZ1pHbHlaV04wYjNKNUlHOW1JSFJvYVhNZ2MyOTFjbU5sSUhSeVpXVXVYRzRnS2x4dUlDb3ZYRzVjYmlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlGSmxZV04wUld4bGJXVnVkQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JGYkdWdFpXNTBKeWs3WEc1Y2JpOHFLbHh1SUNvZ1EzSmxZWFJsSUdFZ1ptRmpkRzl5ZVNCMGFHRjBJR055WldGMFpYTWdTRlJOVENCMFlXY2daV3hsYldWdWRITXVYRzRnS2x4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxTDF4dWRtRnlJR055WldGMFpVUlBUVVpoWTNSdmNua2dQU0JTWldGamRFVnNaVzFsYm5RdVkzSmxZWFJsUm1GamRHOXllVHRjYm1sbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lIWmhjaUJTWldGamRFVnNaVzFsYm5SV1lXeHBaR0YwYjNJZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFJXeGxiV1Z1ZEZaaGJHbGtZWFJ2Y2ljcE8xeHVJQ0JqY21WaGRHVkVUMDFHWVdOMGIzSjVJRDBnVW1WaFkzUkZiR1Z0Wlc1MFZtRnNhV1JoZEc5eUxtTnlaV0YwWlVaaFkzUnZjbms3WEc1OVhHNWNiaThxS2x4dUlDb2dRM0psWVhSbGN5QmhJRzFoY0hCcGJtY2dabkp2YlNCemRYQndiM0owWldRZ1NGUk5UQ0IwWVdkeklIUnZJR0JTWldGamRFUlBUVU52YlhCdmJtVnVkR0FnWTJ4aGMzTmxjeTVjYmlBcVhHNGdLaUJBY0hWaWJHbGpYRzRnS2k5Y2JuWmhjaUJTWldGamRFUlBUVVpoWTNSdmNtbGxjeUE5SUh0Y2JpQWdZVG9nWTNKbFlYUmxSRTlOUm1GamRHOXllU2duWVNjcExGeHVJQ0JoWW1KeU9pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZGhZbUp5Snlrc1hHNGdJR0ZrWkhKbGMzTTZJR055WldGMFpVUlBUVVpoWTNSdmNua29KMkZrWkhKbGMzTW5LU3hjYmlBZ1lYSmxZVG9nWTNKbFlYUmxSRTlOUm1GamRHOXllU2duWVhKbFlTY3BMRnh1SUNCaGNuUnBZMnhsT2lCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0NkaGNuUnBZMnhsSnlrc1hHNGdJR0Z6YVdSbE9pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZGhjMmxrWlNjcExGeHVJQ0JoZFdScGJ6b2dZM0psWVhSbFJFOU5SbUZqZEc5eWVTZ25ZWFZrYVc4bktTeGNiaUFnWWpvZ1kzSmxZWFJsUkU5TlJtRmpkRzl5ZVNnbllpY3BMRnh1SUNCaVlYTmxPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2RpWVhObEp5a3NYRzRnSUdKa2FUb2dZM0psWVhSbFJFOU5SbUZqZEc5eWVTZ25ZbVJwSnlrc1hHNGdJR0prYnpvZ1kzSmxZWFJsUkU5TlJtRmpkRzl5ZVNnblltUnZKeWtzWEc0Z0lHSnBaem9nWTNKbFlYUmxSRTlOUm1GamRHOXllU2duWW1sbkp5a3NYRzRnSUdKc2IyTnJjWFZ2ZEdVNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0oySnNiMk5yY1hWdmRHVW5LU3hjYmlBZ1ltOWtlVG9nWTNKbFlYUmxSRTlOUm1GamRHOXllU2duWW05a2VTY3BMRnh1SUNCaWNqb2dZM0psWVhSbFJFOU5SbUZqZEc5eWVTZ25ZbkluS1N4Y2JpQWdZblYwZEc5dU9pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZGlkWFIwYjI0bktTeGNiaUFnWTJGdWRtRnpPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2RqWVc1MllYTW5LU3hjYmlBZ1kyRndkR2x2YmpvZ1kzSmxZWFJsUkU5TlJtRmpkRzl5ZVNnblkyRndkR2x2YmljcExGeHVJQ0JqYVhSbE9pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZGphWFJsSnlrc1hHNGdJR052WkdVNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0oyTnZaR1VuS1N4Y2JpQWdZMjlzT2lCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0NkamIyd25LU3hjYmlBZ1kyOXNaM0p2ZFhBNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0oyTnZiR2R5YjNWd0p5a3NYRzRnSUdSaGRHRTZJR055WldGMFpVUlBUVVpoWTNSdmNua29KMlJoZEdFbktTeGNiaUFnWkdGMFlXeHBjM1E2SUdOeVpXRjBaVVJQVFVaaFkzUnZjbmtvSjJSaGRHRnNhWE4wSnlrc1hHNGdJR1JrT2lCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0Nka1pDY3BMRnh1SUNCa1pXdzZJR055WldGMFpVUlBUVVpoWTNSdmNua29KMlJsYkNjcExGeHVJQ0JrWlhSaGFXeHpPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2RrWlhSaGFXeHpKeWtzWEc0Z0lHUm1iam9nWTNKbFlYUmxSRTlOUm1GamRHOXllU2duWkdadUp5a3NYRzRnSUdScFlXeHZaem9nWTNKbFlYUmxSRTlOUm1GamRHOXllU2duWkdsaGJHOW5KeWtzWEc0Z0lHUnBkam9nWTNKbFlYUmxSRTlOUm1GamRHOXllU2duWkdsMkp5a3NYRzRnSUdSc09pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZGtiQ2NwTEZ4dUlDQmtkRG9nWTNKbFlYUmxSRTlOUm1GamRHOXllU2duWkhRbktTeGNiaUFnWlcwNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0oyVnRKeWtzWEc0Z0lHVnRZbVZrT2lCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0NkbGJXSmxaQ2NwTEZ4dUlDQm1hV1ZzWkhObGREb2dZM0psWVhSbFJFOU5SbUZqZEc5eWVTZ25abWxsYkdSelpYUW5LU3hjYmlBZ1ptbG5ZMkZ3ZEdsdmJqb2dZM0psWVhSbFJFOU5SbUZqZEc5eWVTZ25abWxuWTJGd2RHbHZiaWNwTEZ4dUlDQm1hV2QxY21VNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0oyWnBaM1Z5WlNjcExGeHVJQ0JtYjI5MFpYSTZJR055WldGMFpVUlBUVVpoWTNSdmNua29KMlp2YjNSbGNpY3BMRnh1SUNCbWIzSnRPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2RtYjNKdEp5a3NYRzRnSUdneE9pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZG9NU2NwTEZ4dUlDQm9Nam9nWTNKbFlYUmxSRTlOUm1GamRHOXllU2duYURJbktTeGNiaUFnYURNNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0oyZ3pKeWtzWEc0Z0lHZzBPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2RvTkNjcExGeHVJQ0JvTlRvZ1kzSmxZWFJsUkU5TlJtRmpkRzl5ZVNnbmFEVW5LU3hjYmlBZ2FEWTZJR055WldGMFpVUlBUVVpoWTNSdmNua29KMmcySnlrc1hHNGdJR2hsWVdRNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0oyaGxZV1FuS1N4Y2JpQWdhR1ZoWkdWeU9pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZG9aV0ZrWlhJbktTeGNiaUFnYUdkeWIzVndPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2RvWjNKdmRYQW5LU3hjYmlBZ2FISTZJR055WldGMFpVUlBUVVpoWTNSdmNua29KMmh5Snlrc1hHNGdJR2gwYld3NklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0oyaDBiV3duS1N4Y2JpQWdhVG9nWTNKbFlYUmxSRTlOUm1GamRHOXllU2duYVNjcExGeHVJQ0JwWm5KaGJXVTZJR055WldGMFpVUlBUVVpoWTNSdmNua29KMmxtY21GdFpTY3BMRnh1SUNCcGJXYzZJR055WldGMFpVUlBUVVpoWTNSdmNua29KMmx0WnljcExGeHVJQ0JwYm5CMWREb2dZM0psWVhSbFJFOU5SbUZqZEc5eWVTZ25hVzV3ZFhRbktTeGNiaUFnYVc1ek9pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZHBibk1uS1N4Y2JpQWdhMkprT2lCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0NkclltUW5LU3hjYmlBZ2EyVjVaMlZ1T2lCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0NkclpYbG5aVzRuS1N4Y2JpQWdiR0ZpWld3NklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0oyeGhZbVZzSnlrc1hHNGdJR3hsWjJWdVpEb2dZM0psWVhSbFJFOU5SbUZqZEc5eWVTZ25iR1ZuWlc1a0p5a3NYRzRnSUd4cE9pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZHNhU2NwTEZ4dUlDQnNhVzVyT2lCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0Nkc2FXNXJKeWtzWEc0Z0lHMWhhVzQ2SUdOeVpXRjBaVVJQVFVaaFkzUnZjbmtvSjIxaGFXNG5LU3hjYmlBZ2JXRndPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2R0WVhBbktTeGNiaUFnYldGeWF6b2dZM0psWVhSbFJFOU5SbUZqZEc5eWVTZ25iV0Z5YXljcExGeHVJQ0J0Wlc1MU9pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZHRaVzUxSnlrc1hHNGdJRzFsYm5WcGRHVnRPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2R0Wlc1MWFYUmxiU2NwTEZ4dUlDQnRaWFJoT2lCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0NkdFpYUmhKeWtzWEc0Z0lHMWxkR1Z5T2lCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0NkdFpYUmxjaWNwTEZ4dUlDQnVZWFk2SUdOeVpXRjBaVVJQVFVaaFkzUnZjbmtvSjI1aGRpY3BMRnh1SUNCdWIzTmpjbWx3ZERvZ1kzSmxZWFJsUkU5TlJtRmpkRzl5ZVNnbmJtOXpZM0pwY0hRbktTeGNiaUFnYjJKcVpXTjBPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2R2WW1wbFkzUW5LU3hjYmlBZ2IydzZJR055WldGMFpVUlBUVVpoWTNSdmNua29KMjlzSnlrc1hHNGdJRzl3ZEdkeWIzVndPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2R2Y0hSbmNtOTFjQ2NwTEZ4dUlDQnZjSFJwYjI0NklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0oyOXdkR2x2YmljcExGeHVJQ0J2ZFhSd2RYUTZJR055WldGMFpVUlBUVVpoWTNSdmNua29KMjkxZEhCMWRDY3BMRnh1SUNCd09pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZHdKeWtzWEc0Z0lIQmhjbUZ0T2lCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0Nkd1lYSmhiU2NwTEZ4dUlDQndhV04wZFhKbE9pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZHdhV04wZFhKbEp5a3NYRzRnSUhCeVpUb2dZM0psWVhSbFJFOU5SbUZqZEc5eWVTZ25jSEpsSnlrc1hHNGdJSEJ5YjJkeVpYTnpPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2R3Y205bmNtVnpjeWNwTEZ4dUlDQnhPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2R4Snlrc1hHNGdJSEp3T2lCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0NkeWNDY3BMRnh1SUNCeWREb2dZM0psWVhSbFJFOU5SbUZqZEc5eWVTZ25jblFuS1N4Y2JpQWdjblZpZVRvZ1kzSmxZWFJsUkU5TlJtRmpkRzl5ZVNnbmNuVmllU2NwTEZ4dUlDQnpPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2R6Snlrc1hHNGdJSE5oYlhBNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0ozTmhiWEFuS1N4Y2JpQWdjMk55YVhCME9pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZHpZM0pwY0hRbktTeGNiaUFnYzJWamRHbHZiam9nWTNKbFlYUmxSRTlOUm1GamRHOXllU2duYzJWamRHbHZiaWNwTEZ4dUlDQnpaV3hsWTNRNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0ozTmxiR1ZqZENjcExGeHVJQ0J6YldGc2JEb2dZM0psWVhSbFJFOU5SbUZqZEc5eWVTZ25jMjFoYkd3bktTeGNiaUFnYzI5MWNtTmxPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2R6YjNWeVkyVW5LU3hjYmlBZ2MzQmhiam9nWTNKbFlYUmxSRTlOUm1GamRHOXllU2duYzNCaGJpY3BMRnh1SUNCemRISnZibWM2SUdOeVpXRjBaVVJQVFVaaFkzUnZjbmtvSjNOMGNtOXVaeWNwTEZ4dUlDQnpkSGxzWlRvZ1kzSmxZWFJsUkU5TlJtRmpkRzl5ZVNnbmMzUjViR1VuS1N4Y2JpQWdjM1ZpT2lCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0NkemRXSW5LU3hjYmlBZ2MzVnRiV0Z5ZVRvZ1kzSmxZWFJsUkU5TlJtRmpkRzl5ZVNnbmMzVnRiV0Z5ZVNjcExGeHVJQ0J6ZFhBNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0ozTjFjQ2NwTEZ4dUlDQjBZV0pzWlRvZ1kzSmxZWFJsUkU5TlJtRmpkRzl5ZVNnbmRHRmliR1VuS1N4Y2JpQWdkR0p2WkhrNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0ozUmliMlI1Snlrc1hHNGdJSFJrT2lCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0NkMFpDY3BMRnh1SUNCMFpYaDBZWEpsWVRvZ1kzSmxZWFJsUkU5TlJtRmpkRzl5ZVNnbmRHVjRkR0Z5WldFbktTeGNiaUFnZEdadmIzUTZJR055WldGMFpVUlBUVVpoWTNSdmNua29KM1JtYjI5MEp5a3NYRzRnSUhSb09pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZDBhQ2NwTEZ4dUlDQjBhR1ZoWkRvZ1kzSmxZWFJsUkU5TlJtRmpkRzl5ZVNnbmRHaGxZV1FuS1N4Y2JpQWdkR2x0WlRvZ1kzSmxZWFJsUkU5TlJtRmpkRzl5ZVNnbmRHbHRaU2NwTEZ4dUlDQjBhWFJzWlRvZ1kzSmxZWFJsUkU5TlJtRmpkRzl5ZVNnbmRHbDBiR1VuS1N4Y2JpQWdkSEk2SUdOeVpXRjBaVVJQVFVaaFkzUnZjbmtvSjNSeUp5a3NYRzRnSUhSeVlXTnJPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2QwY21GamF5Y3BMRnh1SUNCMU9pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZDFKeWtzWEc0Z0lIVnNPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2QxYkNjcExGeHVJQ0FuZG1GeUp6b2dZM0psWVhSbFJFOU5SbUZqZEc5eWVTZ25kbUZ5Snlrc1hHNGdJSFpwWkdWdk9pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZDJhV1JsYnljcExGeHVJQ0IzWW5JNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0ozZGljaWNwTEZ4dVhHNGdJQzh2SUZOV1IxeHVJQ0JqYVhKamJHVTZJR055WldGMFpVUlBUVVpoWTNSdmNua29KMk5wY21Oc1pTY3BMRnh1SUNCamJHbHdVR0YwYURvZ1kzSmxZWFJsUkU5TlJtRmpkRzl5ZVNnblkyeHBjRkJoZEdnbktTeGNiaUFnWkdWbWN6b2dZM0psWVhSbFJFOU5SbUZqZEc5eWVTZ25aR1ZtY3ljcExGeHVJQ0JsYkd4cGNITmxPaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2RsYkd4cGNITmxKeWtzWEc0Z0lHYzZJR055WldGMFpVUlBUVVpoWTNSdmNua29KMmNuS1N4Y2JpQWdhVzFoWjJVNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0oybHRZV2RsSnlrc1hHNGdJR3hwYm1VNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0oyeHBibVVuS1N4Y2JpQWdiR2x1WldGeVIzSmhaR2xsYm5RNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0oyeHBibVZoY2tkeVlXUnBaVzUwSnlrc1hHNGdJRzFoYzJzNklHTnlaV0YwWlVSUFRVWmhZM1J2Y25rb0oyMWhjMnNuS1N4Y2JpQWdjR0YwYURvZ1kzSmxZWFJsUkU5TlJtRmpkRzl5ZVNnbmNHRjBhQ2NwTEZ4dUlDQndZWFIwWlhKdU9pQmpjbVZoZEdWRVQwMUdZV04wYjNKNUtDZHdZWFIwWlhKdUp5a3NYRzRnSUhCdmJIbG5iMjQ2SUdOeVpXRjBaVVJQVFVaaFkzUnZjbmtvSjNCdmJIbG5iMjRuS1N4Y2JpQWdjRzlzZVd4cGJtVTZJR055WldGMFpVUlBUVVpoWTNSdmNua29KM0J2Ykhsc2FXNWxKeWtzWEc0Z0lISmhaR2xoYkVkeVlXUnBaVzUwT2lCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0NkeVlXUnBZV3hIY21Ga2FXVnVkQ2NwTEZ4dUlDQnlaV04wT2lCamNtVmhkR1ZFVDAxR1lXTjBiM0o1S0NkeVpXTjBKeWtzWEc0Z0lITjBiM0E2SUdOeVpXRjBaVVJQVFVaaFkzUnZjbmtvSjNOMGIzQW5LU3hjYmlBZ2MzWm5PaUJqY21WaGRHVkVUMDFHWVdOMGIzSjVLQ2R6ZG1jbktTeGNiaUFnZEdWNGREb2dZM0psWVhSbFJFOU5SbUZqZEc5eWVTZ25kR1Y0ZENjcExGeHVJQ0IwYzNCaGJqb2dZM0psWVhSbFJFOU5SbUZqZEc5eWVTZ25kSE53WVc0bktWeHVmVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCU1pXRmpkRVJQVFVaaFkzUnZjbWxsY3p0Y2JseHVYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dklGZEZRbEJCUTBzZ1JrOVBWRVZTWEc0dkx5QXVMMzR2Y21WaFkzUXZiR2xpTDFKbFlXTjBSRTlOUm1GamRHOXlhV1Z6TG1welhHNHZMeUJ0YjJSMWJHVWdhV1FnUFNBek1GeHVMeThnYlc5a2RXeGxJR05vZFc1cmN5QTlJREFpWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEVpTENKemIzVnlZMlZTYjI5MElqb2lJbjA9XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzMwXFxuXCIpO1xuXG4vKioqLyB9KSxcbi8qIDMxICovXG4vKiBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyogYWxsIGV4cG9ydHMgdXNlZCAqL1xuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vfi9yZWFjdC9saWIvUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5ldmFsKFwiLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKHByb2Nlc3MpIHsvKipcXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cXG4gKlxcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4gKlxcbiAqIFxcbiAqL1xcblxcblxcblxcbnZhciBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHt9O1xcblxcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XFxuICBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHtcXG4gICAgcHJvcDogJ3Byb3AnLFxcbiAgICBjb250ZXh0OiAnY29udGV4dCcsXFxuICAgIGNoaWxkQ29udGV4dDogJ2NoaWxkIGNvbnRleHQnXFxuICB9O1xcbn1cXG5cXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzO1xcbi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLy4uLy4uL3Byb2Nlc3MvYnJvd3Nlci5qcyAqLyAwKSkpLy8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTXpFdWFuTWlMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOStMM0psWVdOMEwyeHBZaTlTWldGamRGQnliM0JVZVhCbFRHOWpZWFJwYjI1T1lXMWxjeTVxY3o4M1pHUTVJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSUNoaktTQXlNREV6TFhCeVpYTmxiblFzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnVFVsVUlHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdVhHNGdLbHh1SUNvZ1hHNGdLaTljYmx4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1VG1GdFpYTWdQU0I3ZlR0Y2JseHVhV1lnS0hCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lDRTlQU0FuY0hKdlpIVmpkR2x2YmljcElIdGNiaUFnVW1WaFkzUlFjbTl3Vkhsd1pVeHZZMkYwYVc5dVRtRnRaWE1nUFNCN1hHNGdJQ0FnY0hKdmNEb2dKM0J5YjNBbkxGeHVJQ0FnSUdOdmJuUmxlSFE2SUNkamIyNTBaWGgwSnl4Y2JpQWdJQ0JqYUdsc1pFTnZiblJsZUhRNklDZGphR2xzWkNCamIyNTBaWGgwSjF4dUlDQjlPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wVUhKdmNGUjVjR1ZNYjJOaGRHbHZiazVoYldWek8xeHVYRzVjYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OGdWMFZDVUVGRFN5QkdUMDlVUlZKY2JpOHZJQzR2Zmk5eVpXRmpkQzlzYVdJdlVtVmhZM1JRY205d1ZIbHdaVXh2WTJGMGFXOXVUbUZ0WlhNdWFuTmNiaTh2SUcxdlpIVnNaU0JwWkNBOUlETXhYRzR2THlCdGIyUjFiR1VnWTJoMWJtdHpJRDBnTUNKZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVNJc0luTnZkWEpqWlZKdmIzUWlPaUlpZlE9PVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8zMVxcblwiKTtcblxuLyoqKi8gfSksXG4vKiAzMiAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vcmVhY3QvbGliL1JlYWN0UHJvcFR5cGVzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qKlxcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxcbiAqXFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbiAqXFxuICovXFxuXFxuXFxuXFxudmFyIF9yZXF1aXJlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9SZWFjdEVsZW1lbnQgKi8gMyksXFxuICAgIGlzVmFsaWRFbGVtZW50ID0gX3JlcXVpcmUuaXNWYWxpZEVsZW1lbnQ7XFxuXFxudmFyIGZhY3RvcnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBwcm9wLXR5cGVzL2ZhY3RvcnkgKi8gMjQpO1xcblxcbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShpc1ZhbGlkRWxlbWVudCk7Ly8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTXpJdWFuTWlMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOStMM0psWVdOMEwyeHBZaTlTWldGamRGQnliM0JVZVhCbGN5NXFjejh6WXpneklsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJQ2hqS1NBeU1ERXpMWEJ5WlhObGJuUXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdUVWxVSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1WEc0Z0tseHVJQ292WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRjl5WlhGMWFYSmxJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVZzWlcxbGJuUW5LU3hjYmlBZ0lDQnBjMVpoYkdsa1JXeGxiV1Z1ZENBOUlGOXlaWEYxYVhKbExtbHpWbUZzYVdSRmJHVnRaVzUwTzF4dVhHNTJZWElnWm1GamRHOXllU0E5SUhKbGNYVnBjbVVvSjNCeWIzQXRkSGx3WlhNdlptRmpkRzl5ZVNjcE8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR1poWTNSdmNua29hWE5XWVd4cFpFVnNaVzFsYm5RcE8xeHVYRzVjYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OGdWMFZDVUVGRFN5QkdUMDlVUlZKY2JpOHZJQzR2Zmk5eVpXRmpkQzlzYVdJdlVtVmhZM1JRY205d1ZIbHdaWE11YW5OY2JpOHZJRzF2WkhWc1pTQnBaQ0E5SURNeVhHNHZMeUJ0YjJSMWJHVWdZMmgxYm10eklEMGdNQ0pkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFaUxDSnpiM1Z5WTJWU2IyOTBJam9pSW4wPVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8zMlxcblwiKTtcblxuLyoqKi8gfSksXG4vKiAzMyAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vcmVhY3QvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qKlxcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxcbiAqXFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbiAqXFxuICogXFxuICovXFxuXFxuXFxuXFxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcXG5cXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0Oy8vIyBzb3VyY2VVUkw9W21vZHVsZV1cXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaU16TXVhbk1pTENKemIzVnlZMlZ6SWpwYkluZGxZbkJoWTJzNkx5OHZMaTkrTDNKbFlXTjBMMnhwWWk5U1pXRmpkRkJ5YjNCVWVYQmxjMU5sWTNKbGRDNXFjejh6T1RFeElsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dRMjl3ZVhKcFoyaDBJQ2hqS1NBeU1ERXpMWEJ5WlhObGJuUXNJRVpoWTJWaWIyOXJMQ0JKYm1NdVhHNGdLbHh1SUNvZ1ZHaHBjeUJ6YjNWeVkyVWdZMjlrWlNCcGN5QnNhV05sYm5ObFpDQjFibVJsY2lCMGFHVWdUVWxVSUd4cFkyVnVjMlVnWm05MWJtUWdhVzRnZEdobFhHNGdLaUJNU1VORlRsTkZJR1pwYkdVZ2FXNGdkR2hsSUhKdmIzUWdaR2x5WldOMGIzSjVJRzltSUhSb2FYTWdjMjkxY21ObElIUnlaV1V1WEc0Z0tseHVJQ29nWEc0Z0tpOWNibHh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1VtVmhZM1JRY205d1ZIbHdaWE5UWldOeVpYUWdQU0FuVTBWRFVrVlVYMFJQWDA1UFZGOVFRVk5UWDFSSVNWTmZUMUpmV1U5VlgxZEpURXhmUWtWZlJrbFNSVVFuTzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGSmxZV04wVUhKdmNGUjVjR1Z6VTJWamNtVjBPMXh1WEc1Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeThnVjBWQ1VFRkRTeUJHVDA5VVJWSmNiaTh2SUM0dmZpOXlaV0ZqZEM5c2FXSXZVbVZoWTNSUWNtOXdWSGx3WlhOVFpXTnlaWFF1YW5OY2JpOHZJRzF2WkhWc1pTQnBaQ0E5SURNelhHNHZMeUJ0YjJSMWJHVWdZMmgxYm10eklEMGdNQ0pkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVNJc0luTnZkWEpqWlZKdmIzUWlPaUlpZlE9PVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8zM1xcblwiKTtcblxuLyoqKi8gfSksXG4vKiAzNCAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9+L3JlYWN0L2xpYi9SZWFjdFZlcnNpb24uanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qKlxcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxcbiAqXFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbiAqXFxuICovXFxuXFxuXFxuXFxubW9kdWxlLmV4cG9ydHMgPSAnMTUuNi4yJzsvLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lNelF1YW5NaUxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5K0wzSmxZV04wTDJ4cFlpOVNaV0ZqZEZabGNuTnBiMjR1YW5NL1l6QTRNeUpkTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBb1l5a2dNakF4TXkxd2NtVnpaVzUwTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUUxSlZDQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExseHVJQ3BjYmlBcUwxeHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdKekUxTGpZdU1pYzdYRzVjYmx4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeUJYUlVKUVFVTkxJRVpQVDFSRlVseHVMeThnTGk5K0wzSmxZV04wTDJ4cFlpOVNaV0ZqZEZabGNuTnBiMjR1YW5OY2JpOHZJRzF2WkhWc1pTQnBaQ0E5SURNMFhHNHZMeUJ0YjJSMWJHVWdZMmgxYm10eklEMGdNQ0pkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFTSXNJbk52ZFhKalpWSnZiM1FpT2lJaWZRPT1cXG4vLyMgc291cmNlVVJMPXdlYnBhY2staW50ZXJuYWw6Ly8vMzRcXG5cIik7XG5cbi8qKiovIH0pLFxuLyogMzUgKi9cbi8qIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKiBhbGwgZXhwb3J0cyB1c2VkICovXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vfi9yZWFjdC9saWIvY2hlY2tSZWFjdFR5cGVTcGVjLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbmV2YWwoXCIvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJvY2Vzcykgey8qKlxcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxcbiAqXFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbiAqXFxuICovXFxuXFxuXFxuXFxudmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9yZWFjdFByb2RJbnZhcmlhbnQgKi8gNCk7XFxuXFxudmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9SZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyAqLyAzMSk7XFxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9SZWFjdFByb3BUeXBlc1NlY3JldCAqLyAzMyk7XFxuXFxudmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGZianMvbGliL2ludmFyaWFudCAqLyAxKTtcXG52YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGZianMvbGliL3dhcm5pbmcgKi8gMik7XFxuXFxudmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7XFxuXFxuaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnKSB7XFxuICAvLyBUZW1wb3JhcnkgaGFjay5cXG4gIC8vIElubGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdlbGwgd2l0aCBKZXN0OlxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy83MjQwXFxuICAvLyBSZW1vdmUgdGhlIGlubGluZSByZXF1aXJlcyB3aGVuIHdlIGRvbid0IG5lZWQgdGhlbSBhbnltb3JlOlxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzE3OFxcbiAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vUmVhY3RDb21wb25lbnRUcmVlSG9vayAqLyAxMCk7XFxufVxcblxcbnZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcXG5cXG4vKipcXG4gKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWVzIG1hdGNoIHdpdGggdGhlIHR5cGUgc3BlY3MuXFxuICogRXJyb3IgbWVzc2FnZXMgYXJlIG1lbW9yaXplZCBhbmQgd2lsbCBvbmx5IGJlIHNob3duIG9uY2UuXFxuICpcXG4gKiBAcGFyYW0ge29iamVjdH0gdHlwZVNwZWNzIE1hcCBvZiBuYW1lIHRvIGEgUmVhY3RQcm9wVHlwZVxcbiAqIEBwYXJhbSB7b2JqZWN0fSB2YWx1ZXMgUnVudGltZSB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHR5cGUtY2hlY2tlZFxcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuIFxcXCJwcm9wXFxcIiwgXFxcImNvbnRleHRcXFwiLCBcXFwiY2hpbGQgY29udGV4dFxcXCJcXG4gKiBAcGFyYW0ge3N0cmluZ30gY29tcG9uZW50TmFtZSBOYW1lIG9mIHRoZSBjb21wb25lbnQgZm9yIGVycm9yIG1lc3NhZ2VzLlxcbiAqIEBwYXJhbSB7P29iamVjdH0gZWxlbWVudCBUaGUgUmVhY3QgZWxlbWVudCB0aGF0IGlzIGJlaW5nIHR5cGUtY2hlY2tlZFxcbiAqIEBwYXJhbSB7P251bWJlcn0gZGVidWdJRCBUaGUgUmVhY3QgY29tcG9uZW50IGluc3RhbmNlIHRoYXQgaXMgYmVpbmcgdHlwZS1jaGVja2VkXFxuICogQHByaXZhdGVcXG4gKi9cXG5mdW5jdGlvbiBjaGVja1JlYWN0VHlwZVNwZWModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBlbGVtZW50LCBkZWJ1Z0lEKSB7XFxuICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7XFxuICAgIGlmICh0eXBlU3BlY3MuaGFzT3duUHJvcGVydHkodHlwZVNwZWNOYW1lKSkge1xcbiAgICAgIHZhciBlcnJvcjtcXG4gICAgICAvLyBQcm9wIHR5cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIEluIGNhc2UgdGhleSBkbywgd2UgZG9uJ3Qgd2FudCB0b1xcbiAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cXG4gICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXFxuICAgICAgdHJ5IHtcXG4gICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxcbiAgICAgICAgLy8gYmVoYXZpb3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNzYWdlLlxcbiAgICAgICAgISh0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gUmVhY3QuUHJvcFR5cGVzLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCB0eXBlU3BlY05hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzg0JywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sIHR5cGVTcGVjTmFtZSkgOiB2b2lkIDA7XFxuICAgICAgICBlcnJvciA9IHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdKHZhbHVlcywgdHlwZVNwZWNOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgbnVsbCwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xcbiAgICAgIH0gY2F0Y2ggKGV4KSB7XFxuICAgICAgICBlcnJvciA9IGV4O1xcbiAgICAgIH1cXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghZXJyb3IgfHwgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciwgJyVzOiB0eXBlIHNwZWNpZmljYXRpb24gb2YgJXMgYCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVuY3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMuICcgKyAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwgYW5kICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLCB0eXBlU3BlY05hbWUsIHR5cGVvZiBlcnJvcikgOiB2b2lkIDA7XFxuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHtcXG4gICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxcbiAgICAgICAgLy8gc2FtZSBlcnJvci5cXG4gICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9IHRydWU7XFxuXFxuICAgICAgICB2YXIgY29tcG9uZW50U3RhY2tJbmZvID0gJyc7XFxuXFxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xcbiAgICAgICAgICBpZiAoIVJlYWN0Q29tcG9uZW50VHJlZUhvb2spIHtcXG4gICAgICAgICAgICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9SZWFjdENvbXBvbmVudFRyZWVIb29rICovIDEwKTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgICBpZiAoZGVidWdJRCAhPT0gbnVsbCkge1xcbiAgICAgICAgICAgIGNvbXBvbmVudFN0YWNrSW5mbyA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoZGVidWdJRCk7XFxuICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudCAhPT0gbnVsbCkge1xcbiAgICAgICAgICAgIGNvbXBvbmVudFN0YWNrSW5mbyA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0Q3VycmVudFN0YWNrQWRkZW5kdW0oZWxlbWVudCk7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkICVzIHR5cGU6ICVzJXMnLCBsb2NhdGlvbiwgZXJyb3IubWVzc2FnZSwgY29tcG9uZW50U3RhY2tJbmZvKSA6IHZvaWQgMDtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXFxubW9kdWxlLmV4cG9ydHMgPSBjaGVja1JlYWN0VHlwZVNwZWM7XFxuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vLi4vLi4vcHJvY2Vzcy9icm93c2VyLmpzICovIDApKSkvLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lNelV1YW5NaUxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5K0wzSmxZV04wTDJ4cFlpOWphR1ZqYTFKbFlXTjBWSGx3WlZOd1pXTXVhbk0vWkRBNFl5SmRMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2S2lwY2JpQXFJRU52Y0hseWFXZG9kQ0FvWXlrZ01qQXhNeTF3Y21WelpXNTBMQ0JHWVdObFltOXZheXdnU1c1akxseHVJQ3BjYmlBcUlGUm9hWE1nYzI5MWNtTmxJR052WkdVZ2FYTWdiR2xqWlc1elpXUWdkVzVrWlhJZ2RHaGxJRTFKVkNCc2FXTmxibk5sSUdadmRXNWtJR2x1SUhSb1pWeHVJQ29nVEVsRFJVNVRSU0JtYVd4bElHbHVJSFJvWlNCeWIyOTBJR1JwY21WamRHOXllU0J2WmlCMGFHbHpJSE52ZFhKalpTQjBjbVZsTGx4dUlDcGNiaUFxTDF4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJmY0hKdlpFbHVkbUZ5YVdGdWRDQTlJSEpsY1hWcGNtVW9KeTR2Y21WaFkzUlFjbTlrU1c1MllYSnBZVzUwSnlrN1hHNWNiblpoY2lCU1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNU9ZVzFsY3lBOUlISmxjWFZwY21Vb0p5NHZVbVZoWTNSUWNtOXdWSGx3WlV4dlkyRjBhVzl1VG1GdFpYTW5LVHRjYm5aaGNpQlNaV0ZqZEZCeWIzQlVlWEJsYzFObFkzSmxkQ0E5SUhKbGNYVnBjbVVvSnk0dlVtVmhZM1JRY205d1ZIbHdaWE5UWldOeVpYUW5LVHRjYmx4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVkbUZ5SUhkaGNtNXBibWNnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5M1lYSnVhVzVuSnlrN1hHNWNiblpoY2lCU1pXRmpkRU52YlhCdmJtVnVkRlJ5WldWSWIyOXJPMXh1WEc1cFppQW9kSGx3Wlc5bUlIQnliMk5sYzNNZ0lUMDlJQ2QxYm1SbFptbHVaV1FuSUNZbUlIQnliMk5sYzNNdVpXNTJJQ1ltSUhCeWIyTmxjM011Wlc1MkxrNVBSRVZmUlU1V0lEMDlQU0FuZEdWemRDY3BJSHRjYmlBZ0x5OGdWR1Z0Y0c5eVlYSjVJR2hoWTJzdVhHNGdJQzh2SUVsdWJHbHVaU0J5WlhGMWFYSmxjeUJrYjI0bmRDQjNiM0pySUhkbGJHd2dkMmwwYUNCS1pYTjBPbHh1SUNBdkx5Qm9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZabUZqWldKdmIyc3ZjbVZoWTNRdmFYTnpkV1Z6THpjeU5EQmNiaUFnTHk4Z1VtVnRiM1psSUhSb1pTQnBibXhwYm1VZ2NtVnhkV2x5WlhNZ2QyaGxiaUIzWlNCa2IyNG5kQ0J1WldWa0lIUm9aVzBnWVc1NWJXOXlaVHBjYmlBZ0x5OGdhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMlpoWTJWaWIyOXJMM0psWVdOMEwzQjFiR3d2TnpFM09GeHVJQ0JTWldGamRFTnZiWEJ2Ym1WdWRGUnlaV1ZJYjI5cklEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFTnZiWEJ2Ym1WdWRGUnlaV1ZJYjI5ckp5azdYRzU5WEc1Y2JuWmhjaUJzYjJkblpXUlVlWEJsUm1GcGJIVnlaWE1nUFNCN2ZUdGNibHh1THlvcVhHNGdLaUJCYzNObGNuUWdkR2hoZENCMGFHVWdkbUZzZFdWeklHMWhkR05vSUhkcGRHZ2dkR2hsSUhSNWNHVWdjM0JsWTNNdVhHNGdLaUJGY25KdmNpQnRaWE56WVdkbGN5QmhjbVVnYldWdGIzSnBlbVZrSUdGdVpDQjNhV3hzSUc5dWJIa2dZbVVnYzJodmQyNGdiMjVqWlM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTI5aWFtVmpkSDBnZEhsd1pWTndaV056SUUxaGNDQnZaaUJ1WVcxbElIUnZJR0VnVW1WaFkzUlFjbTl3Vkhsd1pWeHVJQ29nUUhCaGNtRnRJSHR2WW1wbFkzUjlJSFpoYkhWbGN5QlNkVzUwYVcxbElIWmhiSFZsY3lCMGFHRjBJRzVsWldRZ2RHOGdZbVVnZEhsd1pTMWphR1ZqYTJWa1hHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdiRzlqWVhScGIyNGdaUzVuTGlCY0luQnliM0JjSWl3Z1hDSmpiMjUwWlhoMFhDSXNJRndpWTJocGJHUWdZMjl1ZEdWNGRGd2lYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWTI5dGNHOXVaVzUwVG1GdFpTQk9ZVzFsSUc5bUlIUm9aU0JqYjIxd2IyNWxiblFnWm05eUlHVnljbTl5SUcxbGMzTmhaMlZ6TGx4dUlDb2dRSEJoY21GdElIcy9iMkpxWldOMGZTQmxiR1Z0Wlc1MElGUm9aU0JTWldGamRDQmxiR1Z0Wlc1MElIUm9ZWFFnYVhNZ1ltVnBibWNnZEhsd1pTMWphR1ZqYTJWa1hHNGdLaUJBY0dGeVlXMGdlejl1ZFcxaVpYSjlJR1JsWW5WblNVUWdWR2hsSUZKbFlXTjBJR052YlhCdmJtVnVkQ0JwYm5OMFlXNWpaU0IwYUdGMElHbHpJR0psYVc1bklIUjVjR1V0WTJobFkydGxaRnh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1Wm5WdVkzUnBiMjRnWTJobFkydFNaV0ZqZEZSNWNHVlRjR1ZqS0hSNWNHVlRjR1ZqY3l3Z2RtRnNkV1Z6TENCc2IyTmhkR2x2Yml3Z1kyOXRjRzl1Wlc1MFRtRnRaU3dnWld4bGJXVnVkQ3dnWkdWaWRXZEpSQ2tnZTF4dUlDQm1iM0lnS0haaGNpQjBlWEJsVTNCbFkwNWhiV1VnYVc0Z2RIbHdaVk53WldOektTQjdYRzRnSUNBZ2FXWWdLSFI1Y0dWVGNHVmpjeTVvWVhOUGQyNVFjbTl3WlhKMGVTaDBlWEJsVTNCbFkwNWhiV1VwS1NCN1hHNGdJQ0FnSUNCMllYSWdaWEp5YjNJN1hHNGdJQ0FnSUNBdkx5QlFjbTl3SUhSNWNHVWdkbUZzYVdSaGRHbHZiaUJ0WVhrZ2RHaHliM2N1SUVsdUlHTmhjMlVnZEdobGVTQmtieXdnZDJVZ1pHOXVKM1FnZDJGdWRDQjBiMXh1SUNBZ0lDQWdMeThnWm1GcGJDQjBhR1VnY21WdVpHVnlJSEJvWVhObElIZG9aWEpsSUdsMElHUnBaRzRuZENCbVlXbHNJR0psWm05eVpTNGdVMjhnZDJVZ2JHOW5JR2wwTGx4dUlDQWdJQ0FnTHk4Z1FXWjBaWElnZEdobGMyVWdhR0YyWlNCaVpXVnVJR05zWldGdVpXUWdkWEFzSUhkbEoyeHNJR3hsZENCMGFHVnRJSFJvY205M0xseHVJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1ZHaHBjeUJwY3lCcGJuUmxiblJwYjI1aGJHeDVJR0Z1SUdsdWRtRnlhV0Z1ZENCMGFHRjBJR2RsZEhNZ1kyRjFaMmgwTGlCSmRDZHpJSFJvWlNCellXMWxYRzRnSUNBZ0lDQWdJQzh2SUdKbGFHRjJhVzl5SUdGeklIZHBkR2h2ZFhRZ2RHaHBjeUJ6ZEdGMFpXMWxiblFnWlhoalpYQjBJSGRwZEdnZ1lTQmlaWFIwWlhJZ2JXVnpjMkZuWlM1Y2JpQWdJQ0FnSUNBZ0lTaDBlWEJsYjJZZ2RIbHdaVk53WldOelczUjVjR1ZUY0dWalRtRnRaVjBnUFQwOUlDZG1kVzVqZEdsdmJpY3BJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0p5VnpPaUFsY3lCMGVYQmxJR0FsYzJBZ2FYTWdhVzUyWVd4cFpEc2dhWFFnYlhWemRDQmlaU0JoSUdaMWJtTjBhVzl1TENCMWMzVmhiR3g1SUdaeWIyMGdVbVZoWTNRdVVISnZjRlI1Y0dWekxpY3NJR052YlhCdmJtVnVkRTVoYldVZ2ZId2dKMUpsWVdOMElHTnNZWE56Snl3Z1VtVmhZM1JRY205d1ZIbHdaVXh2WTJGMGFXOXVUbUZ0WlhOYmJHOWpZWFJwYjI1ZExDQjBlWEJsVTNCbFkwNWhiV1VwSURvZ1gzQnliMlJKYm5aaGNtbGhiblFvSnpnMEp5d2dZMjl0Y0c5dVpXNTBUbUZ0WlNCOGZDQW5VbVZoWTNRZ1kyeGhjM01uTENCU1pXRmpkRkJ5YjNCVWVYQmxURzlqWVhScGIyNU9ZVzFsYzF0c2IyTmhkR2x2Ymwwc0lIUjVjR1ZUY0dWalRtRnRaU2tnT2lCMmIybGtJREE3WEc0Z0lDQWdJQ0FnSUdWeWNtOXlJRDBnZEhsd1pWTndaV056VzNSNWNHVlRjR1ZqVG1GdFpWMG9kbUZzZFdWekxDQjBlWEJsVTNCbFkwNWhiV1VzSUdOdmJYQnZibVZ1ZEU1aGJXVXNJR3h2WTJGMGFXOXVMQ0J1ZFd4c0xDQlNaV0ZqZEZCeWIzQlVlWEJsYzFObFkzSmxkQ2s3WEc0Z0lDQWdJQ0I5SUdOaGRHTm9JQ2hsZUNrZ2UxeHVJQ0FnSUNBZ0lDQmxjbkp2Y2lBOUlHVjRPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjSEp2WTJWemN5NWxibll1VGs5RVJWOUZUbFlnSVQwOUlDZHdjbTlrZFdOMGFXOXVKeUEvSUhkaGNtNXBibWNvSVdWeWNtOXlJSHg4SUdWeWNtOXlJR2x1YzNSaGJtTmxiMllnUlhKeWIzSXNJQ2NsY3pvZ2RIbHdaU0J6Y0dWamFXWnBZMkYwYVc5dUlHOW1JQ1Z6SUdBbGMyQWdhWE1nYVc1MllXeHBaRHNnZEdobElIUjVjR1VnWTJobFkydGxjaUFuSUNzZ0oyWjFibU4wYVc5dUlHMTFjM1FnY21WMGRYSnVJR0J1ZFd4c1lDQnZjaUJoYmlCZ1JYSnliM0pnSUdKMWRDQnlaWFIxY201bFpDQmhJQ1Z6TGlBbklDc2dKMWx2ZFNCdFlYa2dhR0YyWlNCbWIzSm5iM1IwWlc0Z2RHOGdjR0Z6Y3lCaGJpQmhjbWQxYldWdWRDQjBieUIwYUdVZ2RIbHdaU0JqYUdWamEyVnlJQ2NnS3lBblkzSmxZWFJ2Y2lBb1lYSnlZWGxQWml3Z2FXNXpkR0Z1WTJWUFppd2diMkpxWldOMFQyWXNJRzl1WlU5bUxDQnZibVZQWmxSNWNHVXNJR0Z1WkNBbklDc2dKM05vWVhCbElHRnNiQ0J5WlhGMWFYSmxJR0Z1SUdGeVozVnRaVzUwS1M0bkxDQmpiMjF3YjI1bGJuUk9ZVzFsSUh4OElDZFNaV0ZqZENCamJHRnpjeWNzSUZKbFlXTjBVSEp2Y0ZSNWNHVk1iMk5oZEdsdmJrNWhiV1Z6VzJ4dlkyRjBhVzl1WFN3Z2RIbHdaVk53WldOT1lXMWxMQ0IwZVhCbGIyWWdaWEp5YjNJcElEb2dkbTlwWkNBd08xeHVJQ0FnSUNBZ2FXWWdLR1Z5Y205eUlHbHVjM1JoYm1ObGIyWWdSWEp5YjNJZ0ppWWdJU2hsY25KdmNpNXRaWE56WVdkbElHbHVJR3h2WjJkbFpGUjVjR1ZHWVdsc2RYSmxjeWtwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdUMjVzZVNCdGIyNXBkRzl5SUhSb2FYTWdabUZwYkhWeVpTQnZibU5sSUdKbFkyRjFjMlVnZEdobGNtVWdkR1Z1WkhNZ2RHOGdZbVVnWVNCc2IzUWdiMllnZEdobFhHNGdJQ0FnSUNBZ0lDOHZJSE5oYldVZ1pYSnliM0l1WEc0Z0lDQWdJQ0FnSUd4dloyZGxaRlI1Y0dWR1lXbHNkWEpsYzF0bGNuSnZjaTV0WlhOellXZGxYU0E5SUhSeWRXVTdYRzVjYmlBZ0lDQWdJQ0FnZG1GeUlHTnZiWEJ2Ym1WdWRGTjBZV05yU1c1bWJ5QTlJQ2NuTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2h3Y205alpYTnpMbVZ1ZGk1T1QwUkZYMFZPVmlBaFBUMGdKM0J5YjJSMVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0NGU1pXRmpkRU52YlhCdmJtVnVkRlJ5WldWSWIyOXJLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQlNaV0ZqZEVOdmJYQnZibVZ1ZEZSeVpXVkliMjlySUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVOdmJYQnZibVZ1ZEZSeVpXVkliMjlySnlrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUdsbUlDaGtaV0oxWjBsRUlDRTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyMXdiMjVsYm5SVGRHRmphMGx1Wm04Z1BTQlNaV0ZqZEVOdmJYQnZibVZ1ZEZSeVpXVkliMjlyTG1kbGRGTjBZV05yUVdSa1pXNWtkVzFDZVVsRUtHUmxZblZuU1VRcE8xeHVJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvWld4bGJXVnVkQ0FoUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl0Y0c5dVpXNTBVM1JoWTJ0SmJtWnZJRDBnVW1WaFkzUkRiMjF3YjI1bGJuUlVjbVZsU0c5dmF5NW5aWFJEZFhKeVpXNTBVM1JoWTJ0QlpHUmxibVIxYlNobGJHVnRaVzUwS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCd2NtOWpaWE56TG1WdWRpNU9UMFJGWDBWT1ZpQWhQVDBnSjNCeWIyUjFZM1JwYjI0bklEOGdkMkZ5Ym1sdVp5aG1ZV3h6WlN3Z0owWmhhV3hsWkNBbGN5QjBlWEJsT2lBbGN5VnpKeXdnYkc5allYUnBiMjRzSUdWeWNtOXlMbTFsYzNOaFoyVXNJR052YlhCdmJtVnVkRk4wWVdOclNXNW1ieWtnT2lCMmIybGtJREE3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnWTJobFkydFNaV0ZqZEZSNWNHVlRjR1ZqTzF4dVhHNWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1THk4Z1YwVkNVRUZEU3lCR1QwOVVSVkpjYmk4dklDNHZmaTl5WldGamRDOXNhV0l2WTJobFkydFNaV0ZqZEZSNWNHVlRjR1ZqTG1welhHNHZMeUJ0YjJSMWJHVWdhV1FnUFNBek5WeHVMeThnYlc5a2RXeGxJR05vZFc1cmN5QTlJREFpWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0Qklpd2ljMjkxY21ObFVtOXZkQ0k2SWlKOVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8zNVxcblwiKTtcblxuLyoqKi8gfSksXG4vKiAzNiAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vcmVhY3QvbGliL2NyZWF0ZUNsYXNzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qKlxcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxcbiAqXFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbiAqXFxuICovXFxuXFxuXFxuXFxudmFyIF9yZXF1aXJlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9SZWFjdEJhc2VDbGFzc2VzICovIDE0KSxcXG4gICAgQ29tcG9uZW50ID0gX3JlcXVpcmUuQ29tcG9uZW50O1xcblxcbnZhciBfcmVxdWlyZTIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL1JlYWN0RWxlbWVudCAqLyAzKSxcXG4gICAgaXNWYWxpZEVsZW1lbnQgPSBfcmVxdWlyZTIuaXNWYWxpZEVsZW1lbnQ7XFxuXFxudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9SZWFjdE5vb3BVcGRhdGVRdWV1ZSAqLyAxNyk7XFxudmFyIGZhY3RvcnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjcmVhdGUtcmVhY3QtY2xhc3MvZmFjdG9yeSAqLyAyMik7XFxuXFxubW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KENvbXBvbmVudCwgaXNWYWxpZEVsZW1lbnQsIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlKTsvLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lNell1YW5NaUxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5K0wzSmxZV04wTDJ4cFlpOWpjbVZoZEdWRGJHRnpjeTVxY3o5aU1EYzJJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUTI5d2VYSnBaMmgwSUNoaktTQXlNREV6TFhCeVpYTmxiblFzSUVaaFkyVmliMjlyTENCSmJtTXVYRzRnS2x4dUlDb2dWR2hwY3lCemIzVnlZMlVnWTI5a1pTQnBjeUJzYVdObGJuTmxaQ0IxYm1SbGNpQjBhR1VnVFVsVUlHeHBZMlZ1YzJVZ1ptOTFibVFnYVc0Z2RHaGxYRzRnS2lCTVNVTkZUbE5GSUdacGJHVWdhVzRnZEdobElISnZiM1FnWkdseVpXTjBiM0o1SUc5bUlIUm9hWE1nYzI5MWNtTmxJSFJ5WldVdVhHNGdLbHh1SUNvdlhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUY5eVpYRjFhWEpsSUQwZ2NtVnhkV2x5WlNnbkxpOVNaV0ZqZEVKaGMyVkRiR0Z6YzJWekp5a3NYRzRnSUNBZ1EyOXRjRzl1Wlc1MElEMGdYM0psY1hWcGNtVXVRMjl0Y0c5dVpXNTBPMXh1WEc1MllYSWdYM0psY1hWcGNtVXlJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVZzWlcxbGJuUW5LU3hjYmlBZ0lDQnBjMVpoYkdsa1JXeGxiV1Z1ZENBOUlGOXlaWEYxYVhKbE1pNXBjMVpoYkdsa1JXeGxiV1Z1ZER0Y2JseHVkbUZ5SUZKbFlXTjBUbTl2Y0ZWd1pHRjBaVkYxWlhWbElEMGdjbVZ4ZFdseVpTZ25MaTlTWldGamRFNXZiM0JWY0dSaGRHVlJkV1YxWlNjcE8xeHVkbUZ5SUdaaFkzUnZjbmtnUFNCeVpYRjFhWEpsS0NkamNtVmhkR1V0Y21WaFkzUXRZMnhoYzNNdlptRmpkRzl5ZVNjcE8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR1poWTNSdmNua29RMjl0Y0c5dVpXNTBMQ0JwYzFaaGJHbGtSV3hsYldWdWRDd2dVbVZoWTNST2IyOXdWWEJrWVhSbFVYVmxkV1VwTzF4dVhHNWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1THk4Z1YwVkNVRUZEU3lCR1QwOVVSVkpjYmk4dklDNHZmaTl5WldGamRDOXNhV0l2WTNKbFlYUmxRMnhoYzNNdWFuTmNiaTh2SUcxdlpIVnNaU0JwWkNBOUlETTJYRzR2THlCdGIyUjFiR1VnWTJoMWJtdHpJRDBnTUNKZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRU0lzSW5OdmRYSmpaVkp2YjNRaU9pSWlmUT09XFxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrLWludGVybmFsOi8vLzM2XFxuXCIpO1xuXG4vKioqLyB9KSxcbi8qIDM3ICovXG4vKiBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyogYWxsIGV4cG9ydHMgdXNlZCAqL1xuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL34vcmVhY3QvbGliL29ubHlDaGlsZC5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5ldmFsKFwiLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKHByb2Nlc3MpIHsvKipcXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cXG4gKlxcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4gKlxcbiAqL1xcblxcblxcbnZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vcmVhY3RQcm9kSW52YXJpYW50ICovIDQpO1xcblxcbnZhciBSZWFjdEVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL1JlYWN0RWxlbWVudCAqLyAzKTtcXG5cXG52YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgZmJqcy9saWIvaW52YXJpYW50ICovIDEpO1xcblxcbi8qKlxcbiAqIFJldHVybnMgdGhlIGZpcnN0IGNoaWxkIGluIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiBhbmQgdmVyaWZpZXMgdGhhdCB0aGVyZVxcbiAqIGlzIG9ubHkgb25lIGNoaWxkIGluIHRoZSBjb2xsZWN0aW9uLlxcbiAqXFxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLm9ubHlcXG4gKlxcbiAqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IGEgc2luZ2xlIGNoaWxkIGdldHNcXG4gKiBwYXNzZWQgd2l0aG91dCBhIHdyYXBwZXIsIGJ1dCB0aGUgcHVycG9zZSBvZiB0aGlzIGhlbHBlciBmdW5jdGlvbiBpcyB0b1xcbiAqIGFic3RyYWN0IGF3YXkgdGhlIHBhcnRpY3VsYXIgc3RydWN0dXJlIG9mIGNoaWxkcmVuLlxcbiAqXFxuICogQHBhcmFtIHs/b2JqZWN0fSBjaGlsZHJlbiBDaGlsZCBjb2xsZWN0aW9uIHN0cnVjdHVyZS5cXG4gKiBAcmV0dXJuIHtSZWFjdEVsZW1lbnR9IFRoZSBmaXJzdCBhbmQgb25seSBgUmVhY3RFbGVtZW50YCBjb250YWluZWQgaW4gdGhlXFxuICogc3RydWN0dXJlLlxcbiAqL1xcbmZ1bmN0aW9uIG9ubHlDaGlsZChjaGlsZHJlbikge1xcbiAgIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuJykgOiBfcHJvZEludmFyaWFudCgnMTQzJykgOiB2b2lkIDA7XFxuICByZXR1cm4gY2hpbGRyZW47XFxufVxcblxcbm1vZHVsZS5leHBvcnRzID0gb25seUNoaWxkO1xcbi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLy4uLy4uL3Byb2Nlc3MvYnJvd3Nlci5qcyAqLyAwKSkpLy8jIHNvdXJjZVVSTD1bbW9kdWxlXVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTXpjdWFuTWlMQ0p6YjNWeVkyVnpJanBiSW5kbFluQmhZMnM2THk4dkxpOStMM0psWVdOMEwyeHBZaTl2Ym14NVEyaHBiR1F1YW5NL01qZGxNeUpkTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpcGNiaUFxSUVOdmNIbHlhV2RvZENBb1l5a2dNakF4TXkxd2NtVnpaVzUwTENCR1lXTmxZbTl2YXl3Z1NXNWpMbHh1SUNwY2JpQXFJRlJvYVhNZ2MyOTFjbU5sSUdOdlpHVWdhWE1nYkdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUUxSlZDQnNhV05sYm5ObElHWnZkVzVrSUdsdUlIUm9aVnh1SUNvZ1RFbERSVTVUUlNCbWFXeGxJR2x1SUhSb1pTQnliMjkwSUdScGNtVmpkRzl5ZVNCdlppQjBhR2x6SUhOdmRYSmpaU0IwY21WbExseHVJQ3BjYmlBcUwxeHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnWDNCeWIyUkpiblpoY21saGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDNKbFlXTjBVSEp2WkVsdWRtRnlhV0Z1ZENjcE8xeHVYRzUyWVhJZ1VtVmhZM1JGYkdWdFpXNTBJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVZzWlcxbGJuUW5LVHRjYmx4dWRtRnlJR2x1ZG1GeWFXRnVkQ0E5SUhKbGNYVnBjbVVvSjJaaWFuTXZiR2xpTDJsdWRtRnlhV0Z1ZENjcE8xeHVYRzR2S2lwY2JpQXFJRkpsZEhWeWJuTWdkR2hsSUdacGNuTjBJR05vYVd4a0lHbHVJR0VnWTI5c2JHVmpkR2x2YmlCdlppQmphR2xzWkhKbGJpQmhibVFnZG1WeWFXWnBaWE1nZEdoaGRDQjBhR1Z5WlZ4dUlDb2dhWE1nYjI1c2VTQnZibVVnWTJocGJHUWdhVzRnZEdobElHTnZiR3hsWTNScGIyNHVYRzRnS2x4dUlDb2dVMlZsSUdoMGRIQnpPaTh2Wm1GalpXSnZiMnN1WjJsMGFIVmlMbWx2TDNKbFlXTjBMMlJ2WTNNdmRHOXdMV3hsZG1Wc0xXRndhUzVvZEcxc0kzSmxZV04wTG1Ob2FXeGtjbVZ1TG05dWJIbGNiaUFxWEc0Z0tpQlVhR1VnWTNWeWNtVnVkQ0JwYlhCc1pXMWxiblJoZEdsdmJpQnZaaUIwYUdseklHWjFibU4wYVc5dUlHRnpjM1Z0WlhNZ2RHaGhkQ0JoSUhOcGJtZHNaU0JqYUdsc1pDQm5aWFJ6WEc0Z0tpQndZWE56WldRZ2QybDBhRzkxZENCaElIZHlZWEJ3WlhJc0lHSjFkQ0IwYUdVZ2NIVnljRzl6WlNCdlppQjBhR2x6SUdobGJIQmxjaUJtZFc1amRHbHZiaUJwY3lCMGIxeHVJQ29nWVdKemRISmhZM1FnWVhkaGVTQjBhR1VnY0dGeWRHbGpkV3hoY2lCemRISjFZM1IxY21VZ2IyWWdZMmhwYkdSeVpXNHVYRzRnS2x4dUlDb2dRSEJoY21GdElIcy9iMkpxWldOMGZTQmphR2xzWkhKbGJpQkRhR2xzWkNCamIyeHNaV04wYVc5dUlITjBjblZqZEhWeVpTNWNiaUFxSUVCeVpYUjFjbTRnZTFKbFlXTjBSV3hsYldWdWRIMGdWR2hsSUdacGNuTjBJR0Z1WkNCdmJteDVJR0JTWldGamRFVnNaVzFsYm5SZ0lHTnZiblJoYVc1bFpDQnBiaUIwYUdWY2JpQXFJSE4wY25WamRIVnlaUzVjYmlBcUwxeHVablZ1WTNScGIyNGdiMjVzZVVOb2FXeGtLR05vYVd4a2NtVnVLU0I3WEc0Z0lDRlNaV0ZqZEVWc1pXMWxiblF1YVhOV1lXeHBaRVZzWlcxbGJuUW9ZMmhwYkdSeVpXNHBJRDhnY0hKdlkyVnpjeTVsYm5ZdVRrOUVSVjlGVGxZZ0lUMDlJQ2R3Y205a2RXTjBhVzl1SnlBL0lHbHVkbUZ5YVdGdWRDaG1ZV3h6WlN3Z0oxSmxZV04wTGtOb2FXeGtjbVZ1TG05dWJIa2daWGh3WldOMFpXUWdkRzhnY21WalpXbDJaU0JoSUhOcGJtZHNaU0JTWldGamRDQmxiR1Z0Wlc1MElHTm9hV3hrTGljcElEb2dYM0J5YjJSSmJuWmhjbWxoYm5Rb0p6RTBNeWNwSURvZ2RtOXBaQ0F3TzF4dUlDQnlaWFIxY200Z1kyaHBiR1J5Wlc0N1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnYjI1c2VVTm9hV3hrTzF4dVhHNWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1THk4Z1YwVkNVRUZEU3lCR1QwOVVSVkpjYmk4dklDNHZmaTl5WldGamRDOXNhV0l2YjI1c2VVTm9hV3hrTG1welhHNHZMeUJ0YjJSMWJHVWdhV1FnUFNBek4xeHVMeThnYlc5a2RXeGxJR05vZFc1cmN5QTlJREFpWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVNJc0luTnZkWEpqWlZKdmIzUWlPaUlpZlE9PVxcbi8vIyBzb3VyY2VVUkw9d2VicGFjay1pbnRlcm5hbDovLy8zN1xcblwiKTtcblxuLyoqKi8gfSksXG4vKiAzOCAqL1xuLyogbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qIGFsbCBleHBvcnRzIHVzZWQgKi9cbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vfi9yZWFjdC9saWIvdHJhdmVyc2VBbGxDaGlsZHJlbi5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuZXZhbChcIi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihwcm9jZXNzKSB7LyoqXFxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXFxuICpcXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuICpcXG4gKi9cXG5cXG5cXG5cXG52YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3JlYWN0UHJvZEludmFyaWFudCAqLyA0KTtcXG5cXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL1JlYWN0Q3VycmVudE93bmVyICovIDcpO1xcbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL1JlYWN0RWxlbWVudFN5bWJvbCAqLyAxNSk7XFxuXFxudmFyIGdldEl0ZXJhdG9yRm4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2dldEl0ZXJhdG9yRm4gKi8gMTgpO1xcbnZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBmYmpzL2xpYi9pbnZhcmlhbnQgKi8gMSk7XFxudmFyIEtleUVzY2FwZVV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9LZXlFc2NhcGVVdGlscyAqLyAyNik7XFxudmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBmYmpzL2xpYi93YXJuaW5nICovIDIpO1xcblxcbnZhciBTRVBBUkFUT1IgPSAnLic7XFxudmFyIFNVQlNFUEFSQVRPUiA9ICc6JztcXG5cXG4vKipcXG4gKiBUaGlzIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQgc2luY2UgdGhpcyBmaWxlIGlzIHNoYXJlZCBiZXR3ZWVuXFxuICogaXNvbW9ycGhpYyBhbmQgcmVuZGVyZXJzLiBXZSBjb3VsZCBleHRyYWN0IHRoaXMgdG8gYVxcbiAqXFxuICovXFxuXFxuLyoqXFxuICogVE9ETzogVGVzdCB0aGF0IGEgc2luZ2xlIGNoaWxkIGFuZCBhbiBhcnJheSB3aXRoIG9uZSBpdGVtIGhhdmUgdGhlIHNhbWUga2V5XFxuICogcGF0dGVybi5cXG4gKi9cXG5cXG52YXIgZGlkV2FybkFib3V0TWFwcyA9IGZhbHNlO1xcblxcbi8qKlxcbiAqIEdlbmVyYXRlIGEga2V5IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgYSBjb21wb25lbnQgd2l0aGluIGEgc2V0LlxcbiAqXFxuICogQHBhcmFtIHsqfSBjb21wb25lbnQgQSBjb21wb25lbnQgdGhhdCBjb3VsZCBjb250YWluIGEgbWFudWFsIGtleS5cXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggdGhhdCBpcyB1c2VkIGlmIGEgbWFudWFsIGtleSBpcyBub3QgcHJvdmlkZWQuXFxuICogQHJldHVybiB7c3RyaW5nfVxcbiAqL1xcbmZ1bmN0aW9uIGdldENvbXBvbmVudEtleShjb21wb25lbnQsIGluZGV4KSB7XFxuICAvLyBEbyBzb21lIHR5cGVjaGVja2luZyBoZXJlIHNpbmNlIHdlIGNhbGwgdGhpcyBibGluZGx5LiBXZSB3YW50IHRvIGVuc3VyZVxcbiAgLy8gdGhhdCB3ZSBkb24ndCBibG9jayBwb3RlbnRpYWwgZnV0dXJlIEVTIEFQSXMuXFxuICBpZiAoY29tcG9uZW50ICYmIHR5cGVvZiBjb21wb25lbnQgPT09ICdvYmplY3QnICYmIGNvbXBvbmVudC5rZXkgIT0gbnVsbCkge1xcbiAgICAvLyBFeHBsaWNpdCBrZXlcXG4gICAgcmV0dXJuIEtleUVzY2FwZVV0aWxzLmVzY2FwZShjb21wb25lbnQua2V5KTtcXG4gIH1cXG4gIC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0XFxuICByZXR1cm4gaW5kZXgudG9TdHJpbmcoMzYpO1xcbn1cXG5cXG4vKipcXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cXG4gKiBAcGFyYW0geyFzdHJpbmd9IG5hbWVTb0ZhciBOYW1lIG9mIHRoZSBrZXkgcGF0aCBzbyBmYXIuXFxuICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIGVhY2ggY2hpbGQgZm91bmQuXFxuICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IFVzZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiB0aHJvdWdob3V0IHRoZSB0cmF2ZXJzYWxcXG4gKiBwcm9jZXNzLlxcbiAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxcbiAqL1xcbmZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCBuYW1lU29GYXIsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHtcXG4gIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuO1xcblxcbiAgaWYgKHR5cGUgPT09ICd1bmRlZmluZWQnIHx8IHR5cGUgPT09ICdib29sZWFuJykge1xcbiAgICAvLyBBbGwgb2YgdGhlIGFib3ZlIGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC5cXG4gICAgY2hpbGRyZW4gPSBudWxsO1xcbiAgfVxcblxcbiAgaWYgKGNoaWxkcmVuID09PSBudWxsIHx8IHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGUgPT09ICdudW1iZXInIHx8XFxuICAvLyBUaGUgZm9sbG93aW5nIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQuIFRoaXMgbWVhbnMgd2UgY2FuIG9wdGltaXplXFxuICAvLyBzb21lIGNoZWNrcy4gUmVhY3QgRmliZXIgYWxzbyBpbmxpbmVzIHRoaXMgbG9naWMgZm9yIHNpbWlsYXIgcHVycG9zZXMuXFxuICB0eXBlID09PSAnb2JqZWN0JyAmJiBjaGlsZHJlbi4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFKSB7XFxuICAgIGNhbGxiYWNrKHRyYXZlcnNlQ29udGV4dCwgY2hpbGRyZW4sXFxuICAgIC8vIElmIGl0J3MgdGhlIG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1lIGFzIGlmIGl0IHdhcyB3cmFwcGVkIGluIGFuIGFycmF5XFxuICAgIC8vIHNvIHRoYXQgaXQncyBjb25zaXN0ZW50IGlmIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gZ3Jvd3MuXFxuICAgIG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFyKTtcXG4gICAgcmV0dXJuIDE7XFxuICB9XFxuXFxuICB2YXIgY2hpbGQ7XFxuICB2YXIgbmV4dE5hbWU7XFxuICB2YXIgc3VidHJlZUNvdW50ID0gMDsgLy8gQ291bnQgb2YgY2hpbGRyZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc3VidHJlZS5cXG4gIHZhciBuZXh0TmFtZVByZWZpeCA9IG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgOiBuYW1lU29GYXIgKyBTVUJTRVBBUkFUT1I7XFxuXFxuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xcbiAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07XFxuICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaSk7XFxuICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XFxuICAgIH1cXG4gIH0gZWxzZSB7XFxuICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJlbik7XFxuICAgIGlmIChpdGVyYXRvckZuKSB7XFxuICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKGNoaWxkcmVuKTtcXG4gICAgICB2YXIgc3RlcDtcXG4gICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gY2hpbGRyZW4uZW50cmllcykge1xcbiAgICAgICAgdmFyIGlpID0gMDtcXG4gICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcXG4gICAgICAgICAgY2hpbGQgPSBzdGVwLnZhbHVlO1xcbiAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpaSsrKTtcXG4gICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XFxuICAgICAgICB9XFxuICAgICAgfSBlbHNlIHtcXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XFxuICAgICAgICAgIHZhciBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyc7XFxuICAgICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XFxuICAgICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XFxuICAgICAgICAgICAgaWYgKG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lKSB7XFxuICAgICAgICAgICAgICBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lICsgJ2AuJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZGlkV2FybkFib3V0TWFwcywgJ1VzaW5nIE1hcHMgYXMgY2hpbGRyZW4gaXMgbm90IHlldCBmdWxseSBzdXBwb3J0ZWQuIEl0IGlzIGFuICcgKyAnZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtaWdodCBiZSByZW1vdmVkLiBDb252ZXJ0IGl0IHRvIGEgJyArICdzZXF1ZW5jZSAvIGl0ZXJhYmxlIG9mIGtleWVkIFJlYWN0RWxlbWVudHMgaW5zdGVhZC4lcycsIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0pIDogdm9pZCAwO1xcbiAgICAgICAgICBkaWRXYXJuQWJvdXRNYXBzID0gdHJ1ZTtcXG4gICAgICAgIH1cXG4gICAgICAgIC8vIEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFsdWVzLlxcbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xcbiAgICAgICAgICB2YXIgZW50cnkgPSBzdGVwLnZhbHVlO1xcbiAgICAgICAgICBpZiAoZW50cnkpIHtcXG4gICAgICAgICAgICBjaGlsZCA9IGVudHJ5WzFdO1xcbiAgICAgICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBLZXlFc2NhcGVVdGlscy5lc2NhcGUoZW50cnlbMF0pICsgU1VCU0VQQVJBVE9SICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCAwKTtcXG4gICAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgIH1cXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xcbiAgICAgIHZhciBhZGRlbmR1bSA9ICcnO1xcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XFxuICAgICAgICBhZGRlbmR1bSA9ICcgSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSAnICsgJ2luc3RlYWQgb3Igd3JhcCB0aGUgb2JqZWN0IHVzaW5nIGNyZWF0ZUZyYWdtZW50KG9iamVjdCkgZnJvbSB0aGUgJyArICdSZWFjdCBhZGQtb25zLic7XFxuICAgICAgICBpZiAoY2hpbGRyZW4uX2lzUmVhY3RFbGVtZW50KSB7XFxuICAgICAgICAgIGFkZGVuZHVtID0gXFxcIiBJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyBhbiBlbGVtZW50IGNyZWF0ZWQgYnkgYSBkaWZmZXJlbnQgXFxcIiArICd2ZXJzaW9uIG9mIFJlYWN0LiBNYWtlIHN1cmUgdG8gdXNlIG9ubHkgb25lIGNvcHkgb2YgUmVhY3QuJztcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XFxuICAgICAgICAgIHZhciBuYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XFxuICAgICAgICAgIGlmIChuYW1lKSB7XFxuICAgICAgICAgICAgYWRkZW5kdW0gKz0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICAgIHZhciBjaGlsZHJlblN0cmluZyA9IFN0cmluZyhjaGlsZHJlbik7XFxuICAgICAgIHRydWUgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAlcykuJXMnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IF9wcm9kSW52YXJpYW50KCczMScsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogdm9pZCAwO1xcbiAgICB9XFxuICB9XFxuXFxuICByZXR1cm4gc3VidHJlZUNvdW50O1xcbn1cXG5cXG4vKipcXG4gKiBUcmF2ZXJzZXMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLCBidXRcXG4gKiBtaWdodCBhbHNvIGJlIHNwZWNpZmllZCB0aHJvdWdoIGF0dHJpYnV0ZXM6XFxuICpcXG4gKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMuY2hpbGRyZW4sIC4uLilgXFxuICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmxlZnRQYW5lbENoaWxkcmVuLCAuLi4pYFxcbiAqXFxuICogVGhlIGB0cmF2ZXJzZUNvbnRleHRgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRoYXQgaXMgcGFzc2VkIHRocm91Z2ggdGhlXFxuICogZW50aXJlIHRyYXZlcnNhbC4gSXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYWNjdW11bGF0aW9ucyBvciBhbnl0aGluZyBlbHNlIHRoYXRcXG4gKiB0aGUgY2FsbGJhY2sgbWlnaHQgZmluZCByZWxldmFudC5cXG4gKlxcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgb2JqZWN0LlxcbiAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBjYWxsYmFjayBUbyBpbnZva2UgdXBvbiB0cmF2ZXJzaW5nIGVhY2ggY2hpbGQuXFxuICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgZm9yIHRyYXZlcnNhbC5cXG4gKiBAcmV0dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoaXMgc3VidHJlZS5cXG4gKi9cXG5mdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XFxuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xcbiAgICByZXR1cm4gMDtcXG4gIH1cXG5cXG4gIHJldHVybiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwgJycsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xcbn1cXG5cXG5tb2R1bGUuZXhwb3J0cyA9IHRyYXZlcnNlQWxsQ2hpbGRyZW47XFxuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vLi4vLi4vcHJvY2Vzcy9icm93c2VyLmpzICovIDApKSkvLyMgc291cmNlVVJMPVttb2R1bGVdXFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lNemd1YW5NaUxDSnpiM1Z5WTJWeklqcGJJbmRsWW5CaFkyczZMeTh2TGk5K0wzSmxZV04wTDJ4cFlpOTBjbUYyWlhKelpVRnNiRU5vYVd4a2NtVnVMbXB6UHpVMlpHVWlYU3dpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvcVhHNGdLaUJEYjNCNWNtbG5hSFFnS0dNcElESXdNVE10Y0hKbGMyVnVkQ3dnUm1GalpXSnZiMnNzSUVsdVl5NWNiaUFxWEc0Z0tpQlVhR2x6SUhOdmRYSmpaU0JqYjJSbElHbHpJR3hwWTJWdWMyVmtJSFZ1WkdWeUlIUm9aU0JOU1ZRZ2JHbGpaVzV6WlNCbWIzVnVaQ0JwYmlCMGFHVmNiaUFxSUV4SlEwVk9VMFVnWm1sc1pTQnBiaUIwYUdVZ2NtOXZkQ0JrYVhKbFkzUnZjbmtnYjJZZ2RHaHBjeUJ6YjNWeVkyVWdkSEpsWlM1Y2JpQXFYRzRnS2k5Y2JseHVKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnWDNCeWIyUkpiblpoY21saGJuUWdQU0J5WlhGMWFYSmxLQ2N1TDNKbFlXTjBVSEp2WkVsdWRtRnlhV0Z1ZENjcE8xeHVYRzUyWVhJZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJZ1BTQnlaWEYxYVhKbEtDY3VMMUpsWVdOMFEzVnljbVZ1ZEU5M2JtVnlKeWs3WEc1MllYSWdVa1ZCUTFSZlJVeEZUVVZPVkY5VVdWQkZJRDBnY21WeGRXbHlaU2duTGk5U1pXRmpkRVZzWlcxbGJuUlRlVzFpYjJ3bktUdGNibHh1ZG1GeUlHZGxkRWwwWlhKaGRHOXlSbTRnUFNCeVpYRjFhWEpsS0NjdUwyZGxkRWwwWlhKaGRHOXlSbTRuS1R0Y2JuWmhjaUJwYm5aaGNtbGhiblFnUFNCeVpYRjFhWEpsS0NkbVltcHpMMnhwWWk5cGJuWmhjbWxoYm5RbktUdGNiblpoY2lCTFpYbEZjMk5oY0dWVmRHbHNjeUE5SUhKbGNYVnBjbVVvSnk0dlMyVjVSWE5qWVhCbFZYUnBiSE1uS1R0Y2JuWmhjaUIzWVhKdWFXNW5JRDBnY21WeGRXbHlaU2duWm1KcWN5OXNhV0l2ZDJGeWJtbHVaeWNwTzF4dVhHNTJZWElnVTBWUVFWSkJWRTlTSUQwZ0p5NG5PMXh1ZG1GeUlGTlZRbE5GVUVGU1FWUlBVaUE5SUNjNkp6dGNibHh1THlvcVhHNGdLaUJVYUdseklHbHpJR2x1YkdsdVpXUWdabkp2YlNCU1pXRmpkRVZzWlcxbGJuUWdjMmx1WTJVZ2RHaHBjeUJtYVd4bElHbHpJSE5vWVhKbFpDQmlaWFIzWldWdVhHNGdLaUJwYzI5dGIzSndhR2xqSUdGdVpDQnlaVzVrWlhKbGNuTXVJRmRsSUdOdmRXeGtJR1Y0ZEhKaFkzUWdkR2hwY3lCMGJ5QmhYRzRnS2x4dUlDb3ZYRzVjYmk4cUtseHVJQ29nVkU5RVR6b2dWR1Z6ZENCMGFHRjBJR0VnYzJsdVoyeGxJR05vYVd4a0lHRnVaQ0JoYmlCaGNuSmhlU0IzYVhSb0lHOXVaU0JwZEdWdElHaGhkbVVnZEdobElITmhiV1VnYTJWNVhHNGdLaUJ3WVhSMFpYSnVMbHh1SUNvdlhHNWNiblpoY2lCa2FXUlhZWEp1UVdKdmRYUk5ZWEJ6SUQwZ1ptRnNjMlU3WEc1Y2JpOHFLbHh1SUNvZ1IyVnVaWEpoZEdVZ1lTQnJaWGtnYzNSeWFXNW5JSFJvWVhRZ2FXUmxiblJwWm1sbGN5QmhJR052YlhCdmJtVnVkQ0IzYVhSb2FXNGdZU0J6WlhRdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUhzcWZTQmpiMjF3YjI1bGJuUWdRU0JqYjIxd2IyNWxiblFnZEdoaGRDQmpiM1ZzWkNCamIyNTBZV2x1SUdFZ2JXRnVkV0ZzSUd0bGVTNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JwYm1SbGVDQkpibVJsZUNCMGFHRjBJR2x6SUhWelpXUWdhV1lnWVNCdFlXNTFZV3dnYTJWNUlHbHpJRzV2ZENCd2NtOTJhV1JsWkM1Y2JpQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1oyVjBRMjl0Y0c5dVpXNTBTMlY1S0dOdmJYQnZibVZ1ZEN3Z2FXNWtaWGdwSUh0Y2JpQWdMeThnUkc4Z2MyOXRaU0IwZVhCbFkyaGxZMnRwYm1jZ2FHVnlaU0J6YVc1alpTQjNaU0JqWVd4c0lIUm9hWE1nWW14cGJtUnNlUzRnVjJVZ2QyRnVkQ0IwYnlCbGJuTjFjbVZjYmlBZ0x5OGdkR2hoZENCM1pTQmtiMjRuZENCaWJHOWpheUJ3YjNSbGJuUnBZV3dnWm5WMGRYSmxJRVZUSUVGUVNYTXVYRzRnSUdsbUlDaGpiMjF3YjI1bGJuUWdKaVlnZEhsd1pXOW1JR052YlhCdmJtVnVkQ0E5UFQwZ0oyOWlhbVZqZENjZ0ppWWdZMjl0Y0c5dVpXNTBMbXRsZVNBaFBTQnVkV3hzS1NCN1hHNGdJQ0FnTHk4Z1JYaHdiR2xqYVhRZ2EyVjVYRzRnSUNBZ2NtVjBkWEp1SUV0bGVVVnpZMkZ3WlZWMGFXeHpMbVZ6WTJGd1pTaGpiMjF3YjI1bGJuUXVhMlY1S1R0Y2JpQWdmVnh1SUNBdkx5QkpiWEJzYVdOcGRDQnJaWGtnWkdWMFpYSnRhVzVsWkNCaWVTQjBhR1VnYVc1a1pYZ2dhVzRnZEdobElITmxkRnh1SUNCeVpYUjFjbTRnYVc1a1pYZ3VkRzlUZEhKcGJtY29NellwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRUJ3WVhKaGJTQjdQeXA5SUdOb2FXeGtjbVZ1SUVOb2FXeGtjbVZ1SUhSeVpXVWdZMjl1ZEdGcGJtVnlMbHh1SUNvZ1FIQmhjbUZ0SUhzaGMzUnlhVzVuZlNCdVlXMWxVMjlHWVhJZ1RtRnRaU0J2WmlCMGFHVWdhMlY1SUhCaGRHZ2djMjhnWm1GeUxseHVJQ29nUUhCaGNtRnRJSHNoWm5WdVkzUnBiMjU5SUdOaGJHeGlZV05ySUVOaGJHeGlZV05ySUhSdklHbHVkbTlyWlNCM2FYUm9JR1ZoWTJnZ1kyaHBiR1FnWm05MWJtUXVYRzRnS2lCQWNHRnlZVzBnZXo4cWZTQjBjbUYyWlhKelpVTnZiblJsZUhRZ1ZYTmxaQ0IwYnlCd1lYTnpJR2x1Wm05eWJXRjBhVzl1SUhSb2NtOTFaMmh2ZFhRZ2RHaGxJSFJ5WVhabGNuTmhiRnh1SUNvZ2NISnZZMlZ6Y3k1Y2JpQXFJRUJ5WlhSMWNtNGdleUZ1ZFcxaVpYSjlJRlJvWlNCdWRXMWlaWElnYjJZZ1kyaHBiR1J5Wlc0Z2FXNGdkR2hwY3lCemRXSjBjbVZsTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUIwY21GMlpYSnpaVUZzYkVOb2FXeGtjbVZ1U1cxd2JDaGphR2xzWkhKbGJpd2dibUZ0WlZOdlJtRnlMQ0JqWVd4c1ltRmpheXdnZEhKaGRtVnljMlZEYjI1MFpYaDBLU0I3WEc0Z0lIWmhjaUIwZVhCbElEMGdkSGx3Wlc5bUlHTm9hV3hrY21WdU8xeHVYRzRnSUdsbUlDaDBlWEJsSUQwOVBTQW5kVzVrWldacGJtVmtKeUI4ZkNCMGVYQmxJRDA5UFNBblltOXZiR1ZoYmljcElIdGNiaUFnSUNBdkx5QkJiR3dnYjJZZ2RHaGxJR0ZpYjNabElHRnlaU0J3WlhKalpXbDJaV1FnWVhNZ2JuVnNiQzVjYmlBZ0lDQmphR2xzWkhKbGJpQTlJRzUxYkd3N1hHNGdJSDFjYmx4dUlDQnBaaUFvWTJocGJHUnlaVzRnUFQwOUlHNTFiR3dnZkh3Z2RIbHdaU0E5UFQwZ0ozTjBjbWx1WnljZ2ZId2dkSGx3WlNBOVBUMGdKMjUxYldKbGNpY2dmSHhjYmlBZ0x5OGdWR2hsSUdadmJHeHZkMmx1WnlCcGN5QnBibXhwYm1Wa0lHWnliMjBnVW1WaFkzUkZiR1Z0Wlc1MExpQlVhR2x6SUcxbFlXNXpJSGRsSUdOaGJpQnZjSFJwYldsNlpWeHVJQ0F2THlCemIyMWxJR05vWldOcmN5NGdVbVZoWTNRZ1JtbGlaWElnWVd4emJ5QnBibXhwYm1WeklIUm9hWE1nYkc5bmFXTWdabTl5SUhOcGJXbHNZWElnY0hWeWNHOXpaWE11WEc0Z0lIUjVjR1VnUFQwOUlDZHZZbXBsWTNRbklDWW1JR05vYVd4a2NtVnVMaVFrZEhsd1pXOW1JRDA5UFNCU1JVRkRWRjlGVEVWTlJVNVVYMVJaVUVVcElIdGNiaUFnSUNCallXeHNZbUZqYXloMGNtRjJaWEp6WlVOdmJuUmxlSFFzSUdOb2FXeGtjbVZ1TEZ4dUlDQWdJQzh2SUVsbUlHbDBKM01nZEdobElHOXViSGtnWTJocGJHUXNJSFJ5WldGMElIUm9aU0J1WVcxbElHRnpJR2xtSUdsMElIZGhjeUIzY21Gd2NHVmtJR2x1SUdGdUlHRnljbUY1WEc0Z0lDQWdMeThnYzI4Z2RHaGhkQ0JwZENkeklHTnZibk5wYzNSbGJuUWdhV1lnZEdobElHNTFiV0psY2lCdlppQmphR2xzWkhKbGJpQm5jbTkzY3k1Y2JpQWdJQ0J1WVcxbFUyOUdZWElnUFQwOUlDY25JRDhnVTBWUVFWSkJWRTlTSUNzZ1oyVjBRMjl0Y0c5dVpXNTBTMlY1S0dOb2FXeGtjbVZ1TENBd0tTQTZJRzVoYldWVGIwWmhjaWs3WEc0Z0lDQWdjbVYwZFhKdUlERTdYRzRnSUgxY2JseHVJQ0IyWVhJZ1kyaHBiR1E3WEc0Z0lIWmhjaUJ1WlhoMFRtRnRaVHRjYmlBZ2RtRnlJSE4xWW5SeVpXVkRiM1Z1ZENBOUlEQTdJQzh2SUVOdmRXNTBJRzltSUdOb2FXeGtjbVZ1SUdadmRXNWtJR2x1SUhSb1pTQmpkWEp5Wlc1MElITjFZblJ5WldVdVhHNGdJSFpoY2lCdVpYaDBUbUZ0WlZCeVpXWnBlQ0E5SUc1aGJXVlRiMFpoY2lBOVBUMGdKeWNnUHlCVFJWQkJVa0ZVVDFJZ09pQnVZVzFsVTI5R1lYSWdLeUJUVlVKVFJWQkJVa0ZVVDFJN1hHNWNiaUFnYVdZZ0tFRnljbUY1TG1selFYSnlZWGtvWTJocGJHUnlaVzRwS1NCN1hHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCamFHbHNaSEpsYmk1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMmhwYkdRZ1BTQmphR2xzWkhKbGJsdHBYVHRjYmlBZ0lDQWdJRzVsZUhST1lXMWxJRDBnYm1WNGRFNWhiV1ZRY21WbWFYZ2dLeUJuWlhSRGIyMXdiMjVsYm5STFpYa29ZMmhwYkdRc0lHa3BPMXh1SUNBZ0lDQWdjM1ZpZEhKbFpVTnZkVzUwSUNzOUlIUnlZWFpsY25ObFFXeHNRMmhwYkdSeVpXNUpiWEJzS0dOb2FXeGtMQ0J1WlhoMFRtRnRaU3dnWTJGc2JHSmhZMnNzSUhSeVlYWmxjbk5sUTI5dWRHVjRkQ2s3WEc0Z0lDQWdmVnh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJSFpoY2lCcGRHVnlZWFJ2Y2tadUlEMGdaMlYwU1hSbGNtRjBiM0pHYmloamFHbHNaSEpsYmlrN1hHNGdJQ0FnYVdZZ0tHbDBaWEpoZEc5eVJtNHBJSHRjYmlBZ0lDQWdJSFpoY2lCcGRHVnlZWFJ2Y2lBOUlHbDBaWEpoZEc5eVJtNHVZMkZzYkNoamFHbHNaSEpsYmlrN1hHNGdJQ0FnSUNCMllYSWdjM1JsY0R0Y2JpQWdJQ0FnSUdsbUlDaHBkR1Z5WVhSdmNrWnVJQ0U5UFNCamFHbHNaSEpsYmk1bGJuUnlhV1Z6S1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJwYVNBOUlEQTdYRzRnSUNBZ0lDQWdJSGRvYVd4bElDZ2hLSE4wWlhBZ1BTQnBkR1Z5WVhSdmNpNXVaWGgwS0NrcExtUnZibVVwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmphR2xzWkNBOUlITjBaWEF1ZG1Gc2RXVTdYRzRnSUNBZ0lDQWdJQ0FnYm1WNGRFNWhiV1VnUFNCdVpYaDBUbUZ0WlZCeVpXWnBlQ0FySUdkbGRFTnZiWEJ2Ym1WdWRFdGxlU2hqYUdsc1pDd2dhV2tyS3lrN1hHNGdJQ0FnSUNBZ0lDQWdjM1ZpZEhKbFpVTnZkVzUwSUNzOUlIUnlZWFpsY25ObFFXeHNRMmhwYkdSeVpXNUpiWEJzS0dOb2FXeGtMQ0J1WlhoMFRtRnRaU3dnWTJGc2JHSmhZMnNzSUhSeVlYWmxjbk5sUTI5dWRHVjRkQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHdjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RtRnlJRzFoY0hOQmMwTm9hV3hrY21WdVFXUmtaVzVrZFcwZ1BTQW5KenRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9VbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJRzFoY0hOQmMwTm9hV3hrY21WdVQzZHVaWEpPWVcxbElEMGdVbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWRDNW5aWFJPWVcxbEtDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iV0Z3YzBGelEyaHBiR1J5Wlc1UGQyNWxjazVoYldVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2JXRndjMEZ6UTJocGJHUnlaVzVCWkdSbGJtUjFiU0E5SUNjZ1EyaGxZMnNnZEdobElISmxibVJsY2lCdFpYUm9iMlFnYjJZZ1lDY2dLeUJ0WVhCelFYTkRhR2xzWkhKbGJrOTNibVZ5VG1GdFpTQXJJQ2RnTGljN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5jSEp2WkhWamRHbHZiaWNnUHlCM1lYSnVhVzVuS0dScFpGZGhjbTVCWW05MWRFMWhjSE1zSUNkVmMybHVaeUJOWVhCeklHRnpJR05vYVd4a2NtVnVJR2x6SUc1dmRDQjVaWFFnWm5Wc2JIa2djM1Z3Y0c5eWRHVmtMaUJKZENCcGN5QmhiaUFuSUNzZ0oyVjRjR1Z5YVcxbGJuUmhiQ0JtWldGMGRYSmxJSFJvWVhRZ2JXbG5hSFFnWW1VZ2NtVnRiM1psWkM0Z1EyOXVkbVZ5ZENCcGRDQjBieUJoSUNjZ0t5QW5jMlZ4ZFdWdVkyVWdMeUJwZEdWeVlXSnNaU0J2WmlCclpYbGxaQ0JTWldGamRFVnNaVzFsYm5SeklHbHVjM1JsWVdRdUpYTW5MQ0J0WVhCelFYTkRhR2xzWkhKbGJrRmtaR1Z1WkhWdEtTQTZJSFp2YVdRZ01EdGNiaUFnSUNBZ0lDQWdJQ0JrYVdSWFlYSnVRV0p2ZFhSTllYQnpJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0F2THlCSmRHVnlZWFJ2Y2lCM2FXeHNJSEJ5YjNacFpHVWdaVzUwY25rZ1cyc3NkbDBnZEhWd2JHVnpJSEpoZEdobGNpQjBhR0Z1SUhaaGJIVmxjeTVjYmlBZ0lDQWdJQ0FnZDJocGJHVWdLQ0VvYzNSbGNDQTlJR2wwWlhKaGRHOXlMbTVsZUhRb0tTa3VaRzl1WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFpoY2lCbGJuUnllU0E5SUhOMFpYQXVkbUZzZFdVN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0dWdWRISjVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmphR2xzWkNBOUlHVnVkSEo1V3pGZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYm1WNGRFNWhiV1VnUFNCdVpYaDBUbUZ0WlZCeVpXWnBlQ0FySUV0bGVVVnpZMkZ3WlZWMGFXeHpMbVZ6WTJGd1pTaGxiblJ5ZVZzd1hTa2dLeUJUVlVKVFJWQkJVa0ZVVDFJZ0t5Qm5aWFJEYjIxd2IyNWxiblJMWlhrb1kyaHBiR1FzSURBcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNWaWRISmxaVU52ZFc1MElDczlJSFJ5WVhabGNuTmxRV3hzUTJocGJHUnlaVzVKYlhCc0tHTm9hV3hrTENCdVpYaDBUbUZ0WlN3Z1kyRnNiR0poWTJzc0lIUnlZWFpsY25ObFEyOXVkR1Y0ZENrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2gwZVhCbElEMDlQU0FuYjJKcVpXTjBKeWtnZTF4dUlDQWdJQ0FnZG1GeUlHRmtaR1Z1WkhWdElEMGdKeWM3WEc0Z0lDQWdJQ0JwWmlBb2NISnZZMlZ6Y3k1bGJuWXVUazlFUlY5RlRsWWdJVDA5SUNkd2NtOWtkV04wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0JoWkdSbGJtUjFiU0E5SUNjZ1NXWWdlVzkxSUcxbFlXNTBJSFJ2SUhKbGJtUmxjaUJoSUdOdmJHeGxZM1JwYjI0Z2IyWWdZMmhwYkdSeVpXNHNJSFZ6WlNCaGJpQmhjbkpoZVNBbklDc2dKMmx1YzNSbFlXUWdiM0lnZDNKaGNDQjBhR1VnYjJKcVpXTjBJSFZ6YVc1bklHTnlaV0YwWlVaeVlXZHRaVzUwS0c5aWFtVmpkQ2tnWm5KdmJTQjBhR1VnSnlBcklDZFNaV0ZqZENCaFpHUXRiMjV6TGljN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hqYUdsc1pISmxiaTVmYVhOU1pXRmpkRVZzWlcxbGJuUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCaFpHUmxibVIxYlNBOUlGd2lJRWwwSUd4dmIydHpJR3hwYTJVZ2VXOTFKM0psSUhWemFXNW5JR0Z1SUdWc1pXMWxiblFnWTNKbFlYUmxaQ0JpZVNCaElHUnBabVpsY21WdWRDQmNJaUFySUNkMlpYSnphVzl1SUc5bUlGSmxZV04wTGlCTllXdGxJSE4xY21VZ2RHOGdkWE5sSUc5dWJIa2diMjVsSUdOdmNIa2diMllnVW1WaFkzUXVKenRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCcFppQW9VbVZoWTNSRGRYSnlaVzUwVDNkdVpYSXVZM1Z5Y21WdWRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUhaaGNpQnVZVzFsSUQwZ1VtVmhZM1JEZFhKeVpXNTBUM2R1WlhJdVkzVnljbVZ1ZEM1blpYUk9ZVzFsS0NrN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0c1aGJXVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHRmtaR1Z1WkhWdElDczlJQ2NnUTJobFkyc2dkR2hsSUhKbGJtUmxjaUJ0WlhSb2IyUWdiMllnWUNjZ0t5QnVZVzFsSUNzZ0oyQXVKenRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lIWmhjaUJqYUdsc1pISmxibE4wY21sdVp5QTlJRk4wY21sdVp5aGphR2xzWkhKbGJpazdYRzRnSUNBZ0lDQWhabUZzYzJVZ1B5QndjbTlqWlhOekxtVnVkaTVPVDBSRlgwVk9WaUFoUFQwZ0ozQnliMlIxWTNScGIyNG5JRDhnYVc1MllYSnBZVzUwS0daaGJITmxMQ0FuVDJKcVpXTjBjeUJoY21VZ2JtOTBJSFpoYkdsa0lHRnpJR0VnVW1WaFkzUWdZMmhwYkdRZ0tHWnZkVzVrT2lBbGN5a3VKWE1uTENCamFHbHNaSEpsYmxOMGNtbHVaeUE5UFQwZ0oxdHZZbXBsWTNRZ1QySnFaV04wWFNjZ1B5QW5iMkpxWldOMElIZHBkR2dnYTJWNWN5QjdKeUFySUU5aWFtVmpkQzVyWlhsektHTm9hV3hrY21WdUtTNXFiMmx1S0Njc0lDY3BJQ3NnSjMwbklEb2dZMmhwYkdSeVpXNVRkSEpwYm1jc0lHRmtaR1Z1WkhWdEtTQTZJRjl3Y205a1NXNTJZWEpwWVc1MEtDY3pNU2NzSUdOb2FXeGtjbVZ1VTNSeWFXNW5JRDA5UFNBblcyOWlhbVZqZENCUFltcGxZM1JkSnlBL0lDZHZZbXBsWTNRZ2QybDBhQ0JyWlhseklIc25JQ3NnVDJKcVpXTjBMbXRsZVhNb1kyaHBiR1J5Wlc0cExtcHZhVzRvSnl3Z0p5a2dLeUFuZlNjZ09pQmphR2xzWkhKbGJsTjBjbWx1Wnl3Z1lXUmtaVzVrZFcwcElEb2dkbTlwWkNBd08xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCemRXSjBjbVZsUTI5MWJuUTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1ZISmhkbVZ5YzJWeklHTm9hV3hrY21WdUlIUm9ZWFFnWVhKbElIUjVjR2xqWVd4c2VTQnpjR1ZqYVdacFpXUWdZWE1nWUhCeWIzQnpMbU5vYVd4a2NtVnVZQ3dnWW5WMFhHNGdLaUJ0YVdkb2RDQmhiSE52SUdKbElITndaV05wWm1sbFpDQjBhSEp2ZFdkb0lHRjBkSEpwWW5WMFpYTTZYRzRnS2x4dUlDb2dMU0JnZEhKaGRtVnljMlZCYkd4RGFHbHNaSEpsYmloMGFHbHpMbkJ5YjNCekxtTm9hV3hrY21WdUxDQXVMaTRwWUZ4dUlDb2dMU0JnZEhKaGRtVnljMlZCYkd4RGFHbHNaSEpsYmloMGFHbHpMbkJ5YjNCekxteGxablJRWVc1bGJFTm9hV3hrY21WdUxDQXVMaTRwWUZ4dUlDcGNiaUFxSUZSb1pTQmdkSEpoZG1WeWMyVkRiMjUwWlhoMFlDQnBjeUJoYmlCdmNIUnBiMjVoYkNCaGNtZDFiV1Z1ZENCMGFHRjBJR2x6SUhCaGMzTmxaQ0IwYUhKdmRXZG9JSFJvWlZ4dUlDb2daVzUwYVhKbElIUnlZWFpsY25OaGJDNGdTWFFnWTJGdUlHSmxJSFZ6WldRZ2RHOGdjM1J2Y21VZ1lXTmpkVzExYkdGMGFXOXVjeUJ2Y2lCaGJubDBhR2x1WnlCbGJITmxJSFJvWVhSY2JpQXFJSFJvWlNCallXeHNZbUZqYXlCdGFXZG9kQ0JtYVc1a0lISmxiR1YyWVc1MExseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1B5cDlJR05vYVd4a2NtVnVJRU5vYVd4a2NtVnVJSFJ5WldVZ2IySnFaV04wTGx4dUlDb2dRSEJoY21GdElIc2hablZ1WTNScGIyNTlJR05oYkd4aVlXTnJJRlJ2SUdsdWRtOXJaU0IxY0c5dUlIUnlZWFpsY25OcGJtY2daV0ZqYUNCamFHbHNaQzVjYmlBcUlFQndZWEpoYlNCN1B5cDlJSFJ5WVhabGNuTmxRMjl1ZEdWNGRDQkRiMjUwWlhoMElHWnZjaUIwY21GMlpYSnpZV3d1WEc0Z0tpQkFjbVYwZFhKdUlIc2hiblZ0WW1WeWZTQlVhR1VnYm5WdFltVnlJRzltSUdOb2FXeGtjbVZ1SUdsdUlIUm9hWE1nYzNWaWRISmxaUzVjYmlBcUwxeHVablZ1WTNScGIyNGdkSEpoZG1WeWMyVkJiR3hEYUdsc1pISmxiaWhqYUdsc1pISmxiaXdnWTJGc2JHSmhZMnNzSUhSeVlYWmxjbk5sUTI5dWRHVjRkQ2tnZTF4dUlDQnBaaUFvWTJocGJHUnlaVzRnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQXdPMXh1SUNCOVhHNWNiaUFnY21WMGRYSnVJSFJ5WVhabGNuTmxRV3hzUTJocGJHUnlaVzVKYlhCc0tHTm9hV3hrY21WdUxDQW5KeXdnWTJGc2JHSmhZMnNzSUhSeVlYWmxjbk5sUTI5dWRHVjRkQ2s3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdkSEpoZG1WeWMyVkJiR3hEYUdsc1pISmxianRjYmx4dVhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNiaTh2SUZkRlFsQkJRMHNnUms5UFZFVlNYRzR2THlBdUwzNHZjbVZoWTNRdmJHbGlMM1J5WVhabGNuTmxRV3hzUTJocGJHUnlaVzR1YW5OY2JpOHZJRzF2WkhWc1pTQnBaQ0E5SURNNFhHNHZMeUJ0YjJSMWJHVWdZMmgxYm10eklEMGdNQ0pkTENKdFlYQndhVzVuY3lJNklrRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJJaXdpYzI5MWNtTmxVbTl2ZENJNklpSjlcXG4vLyMgc291cmNlVVJMPXdlYnBhY2staW50ZXJuYWw6Ly8vMzhcXG5cIik7XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcbn0pOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsUUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../dist/index.js\n");
+
+/***/ }),
+
+/***/ "./node_modules/css-loader/dist/cjs.js!./src/style.css":
+/*!*************************************************************!*\
+ !*** ./node_modules/css-loader/dist/cjs.js!./src/style.css ***!
+ \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("exports = module.exports = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.i, \"h3 {\\n margin-top: 0.6em;\\n margin-bottom: 0.6em;\\n}\\n\\n.row {\\n margin-left: 20px;\\n margin-bottom: 30px;\\n}\\n\\n.utils-button {\\n background: white;\\n padding: 5px 10px;\\n border-color: black;\\n border-radius: 5px;\\n position: relative;\\n}\\n\\n.utils-button--active {\\n background: #6495ed;\\n}\\n\\n.utils-button--loading .utils-button-value {\\n visibility: hidden;\\n}\\n\\n.utils-button--loading:after {\\n position: absolute;\\n top: 5px;\\n left: 26px;\\n display: block;\\n content: '';\\n width: 10px;\\n height: 10px;\\n border: 2px solid rgba(0, 0, 0, .3);\\n border-radius: 50%;\\n border-top-color: black;\\n animation: spin 1s ease-in-out infinite;\\n -webkit-animation: spin 1s ease-in-out infinite;\\n}\\n\\n.my-custom-class {\\n background: black;\\n color: white;\\n font-weight: 500;\\n border-radius: 5px;\\n}\\n\\n@keyframes spin {\\n to {\\n -webkit-transform: rotate(360deg);\\n }\\n}\\n\", \"\"]);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9zdHlsZS5jc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3R5bGUuY3NzPzI3YTQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIikoZmFsc2UpO1xuLy8gTW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCJoMyB7XFxuICAgIG1hcmdpbi10b3A6IDAuNmVtO1xcbiAgICBtYXJnaW4tYm90dG9tOiAwLjZlbTtcXG59XFxuXFxuLnJvdyB7XFxuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xcbn1cXG5cXG4udXRpbHMtYnV0dG9uIHtcXG4gICAgYmFja2dyb3VuZDogd2hpdGU7XFxuICAgIHBhZGRpbmc6IDVweCAxMHB4O1xcbiAgICBib3JkZXItY29sb3I6IGJsYWNrO1xcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuXFxuLnV0aWxzLWJ1dHRvbi0tYWN0aXZlIHtcXG4gICAgYmFja2dyb3VuZDogIzY0OTVlZDtcXG59XFxuXFxuLnV0aWxzLWJ1dHRvbi0tbG9hZGluZyAudXRpbHMtYnV0dG9uLXZhbHVlIHtcXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbn1cXG5cXG4udXRpbHMtYnV0dG9uLS1sb2FkaW5nOmFmdGVyIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDVweDtcXG4gICAgbGVmdDogMjZweDtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICB3aWR0aDogMTBweDtcXG4gICAgaGVpZ2h0OiAxMHB4O1xcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDAsIDAsIDAsIC4zKTtcXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgICBib3JkZXItdG9wLWNvbG9yOiBibGFjaztcXG4gICAgYW5pbWF0aW9uOiBzcGluIDFzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc3BpbiAxcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcXG59XFxuXFxuLm15LWN1c3RvbS1jbGFzcyB7XFxuICAgIGJhY2tncm91bmQ6IGJsYWNrO1xcbiAgICBjb2xvcjogd2hpdGU7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcXG59XFxuXFxuQGtleWZyYW1lcyBzcGluIHtcXG4gICAgdG8ge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICB9XFxufVxcblwiLCBcIlwiXSk7XG5cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./src/style.css\n");
+
+/***/ }),
+
+/***/ "./node_modules/css-loader/dist/runtime/api.js":
+/*!*****************************************************!*\
+ !*** ./node_modules/css-loader/dist/runtime/api.js ***!
+ \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return '@media ' + item[2] + '{' + content + '}';\n } else {\n return content;\n }\n }).join('');\n }; // import a list of modules into the list\n\n\n list.i = function (modules, mediaQuery) {\n if (typeof modules === 'string') {\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n for (var i = 0; i < this.length; i++) {\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n\n for (i = 0; i < modules.length; i++) {\n var item = modules[i]; // skip already imported module\n // this implementation is not 100% perfect for weird media query combinations\n // when a module is imported multiple times with different media queries.\n // I hope this will never occur (Hey this way we have smaller bundles)\n\n if (item[0] == null || !alreadyImportedModules[item[0]]) {\n if (mediaQuery && !item[2]) {\n item[2] = mediaQuery;\n } else if (mediaQuery) {\n item[2] = '(' + item[2] + ') and (' + mediaQuery + ')';\n }\n\n list.push(item);\n }\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || '';\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */';\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n return '/*# ' + data + ' */';\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcz8yNGZiIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xuLy8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHVzZVNvdXJjZU1hcCkge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCk7XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIHJldHVybiAnQG1lZGlhICcgKyBpdGVtWzJdICsgJ3snICsgY29udGVudCArICd9JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfVxuICAgIH0pLmpvaW4oJycpO1xuICB9OyAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuXG5cbiAgbGlzdC5pID0gZnVuY3Rpb24gKG1vZHVsZXMsIG1lZGlhUXVlcnkpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCAnJ11dO1xuICAgIH1cblxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZCA9IHRoaXNbaV1bMF07XG5cbiAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGl0ZW0gPSBtb2R1bGVzW2ldOyAvLyBza2lwIGFscmVhZHkgaW1wb3J0ZWQgbW9kdWxlXG4gICAgICAvLyB0aGlzIGltcGxlbWVudGF0aW9uIGlzIG5vdCAxMDAlIHBlcmZlY3QgZm9yIHdlaXJkIG1lZGlhIHF1ZXJ5IGNvbWJpbmF0aW9uc1xuICAgICAgLy8gd2hlbiBhIG1vZHVsZSBpcyBpbXBvcnRlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBtZWRpYSBxdWVyaWVzLlxuICAgICAgLy8gSSBob3BlIHRoaXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRoaXMgd2F5IHdlIGhhdmUgc21hbGxlciBidW5kbGVzKVxuXG4gICAgICBpZiAoaXRlbVswXSA9PSBudWxsIHx8ICFhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGlmIChtZWRpYVF1ZXJ5ICYmICFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhUXVlcnk7XG4gICAgICAgIH0gZWxzZSBpZiAobWVkaWFRdWVyeSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSAnKCcgKyBpdGVtWzJdICsgJykgYW5kICgnICsgbWVkaWFRdWVyeSArICcpJztcbiAgICAgICAgfVxuXG4gICAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGxpc3Q7XG59O1xuXG5mdW5jdGlvbiBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV0gfHwgJyc7XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblxuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGlmICh1c2VTb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicpIHtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IHRvQ29tbWVudChjc3NNYXBwaW5nKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuICcvKiMgc291cmNlVVJMPScgKyBjc3NNYXBwaW5nLnNvdXJjZVJvb3QgKyBzb3VyY2UgKyAnICovJztcbiAgICB9KTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIHJldHVybiBbY29udGVudF0uam9pbignXFxuJyk7XG59IC8vIEFkYXB0ZWQgZnJvbSBjb252ZXJ0LXNvdXJjZS1tYXAgKE1JVClcblxuXG5mdW5jdGlvbiB0b0NvbW1lbnQoc291cmNlTWFwKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKTtcbiAgdmFyIGRhdGEgPSAnc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsJyArIGJhc2U2NDtcbiAgcmV0dXJuICcvKiMgJyArIGRhdGEgKyAnICovJztcbn0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/runtime/api.js\n");
+
+/***/ }),
+
+/***/ "./node_modules/style-loader/lib/addStyles.js":
+/*!****************************************************!*\
+ !*** ./node_modules/style-loader/lib/addStyles.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target, parent) {\n if (parent){\n return parent.querySelector(target);\n }\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target, parent) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target, parent);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = __webpack_require__(/*! ./urls */ \"./node_modules/style-loader/lib/urls.js\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of