UNPKG

adui

Version:

<div> <img src="https://wxa.wxs.qq.com/mpweb/delivery/legacy/wxadtouch/upload/t1/od834zef_52939fc6.png" style="margin:40px 0 0 -8px; background-color: #fcfcfc; box-shadow: none;" /> </div>

253 lines (201 loc) 29.2 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _warning = _interopRequireDefault(require("../_util/warning")); var _configProvider = require("../config-provider"); var _button = _interopRequireDefault(require("../button")); require("./style"); var _excluded = ["align", "className", "current", "defaultCurrent", "disabled", "hideWhenSinglePage", "onChange", "pageSize", "showButtonJumper", "showInputJumper", "size", "theme", "total"]; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } var noop = function noop() {}; var prefix = "adui-channels-pagination"; var Pagination = function Pagination(_ref) { var _classNames; var align = _ref.align, className = _ref.className, currentProp = _ref.current, defaultCurrent = _ref.defaultCurrent, disabled = _ref.disabled, hideWhenSinglePage = _ref.hideWhenSinglePage, onChange = _ref.onChange, pageSize = _ref.pageSize, showButtonJumper = _ref.showButtonJumper, showInputJumper = _ref.showInputJumper, sizeProp = _ref.size, theme = _ref.theme, total = _ref.total, otherProps = _objectWithoutProperties(_ref, _excluded); var _useState = (0, _react.useState)((currentProp !== null ? currentProp : defaultCurrent) || 1), _useState2 = _slicedToArray(_useState, 2), current = _useState2[0], setCurrent = _useState2[1]; var _useState3 = (0, _react.useState)(""), _useState4 = _slicedToArray(_useState3, 2), inputValue = _useState4[0], setInputValue = _useState4[1]; if (currentProp !== null && currentProp !== undefined && current !== currentProp) { setCurrent(currentProp); } var _useContext = (0, _react.useContext)(_configProvider.ConfigContext), sizeContext = _useContext.size; var size = (0, _configProvider.getComputedSize)(sizeProp, sizeContext); var classSet = (0, _classnames["default"])(className, "".concat(prefix, "-base"), "".concat(prefix, "-").concat(size), (_classNames = {}, _defineProperty(_classNames, "".concat(prefix, "-").concat(align), align), _defineProperty(_classNames, "".concat(prefix, "-disabled"), disabled), _classNames)); (0, _warning["default"])(Number.isInteger(current), "Pagination", "current 值需要是正整数"); (0, _warning["default"])(!(current < 1 || current > Math.ceil((total || 0) / (pageSize || 10)) && current !== 1), "Pagination", "current \u9700\u8981\u65F6\u5728\u6B63\u786E\u8303\u56F4\u5185\u7684\u6B63\u6574\u6570\uFF0Ctotal: ".concat(total, "\uFF0CpageSize\uFF1A").concat(pageSize)); var pageNumber = 1; if (total && pageSize) { pageNumber = Math.max(Math.ceil(total / pageSize), 1); } var prevDisabled = current === 1; var nextDisabled = current === pageNumber; if (pageNumber === 1 && hideWhenSinglePage) { return null; } var handleJump = function handleJump(type) { var newPage; switch (type) { case "first": newPage = 1; break; case "prev": newPage = current - 1; break; case "next": newPage = current + 1; break; case "last": if (total && pageSize) { newPage = Math.max(Math.ceil(total / pageSize), 1); } break; default: } if (newPage && pageSize) { if (currentProp === null) { setCurrent(newPage); } if (onChange) { onChange(newPage, pageSize); } } }; var handleInputJump = function handleInputJump() { var parsevalue = parseInt(inputValue, 10); if (isNaN(parsevalue)) { return; } var value = Math.max(parsevalue, 1); if (total && pageSize) { value = Math.min(value, Math.max(Math.ceil(total / pageSize), 1)); } if (currentProp === null) { setCurrent(value); } if (onChange) { onChange(value, pageSize); } }; return _react["default"].createElement("div", _extends({ className: classSet, "data-current": current }, otherProps), showButtonJumper && _react["default"].createElement(_button["default"], { disabled: disabled, style: { marginRight: "8px" }, leftIcon: "arrow-left-first", size: size, theme: theme, onClick: function onClick() { if (!prevDisabled) handleJump("first"); } }), _react["default"].createElement("div", { className: "".concat(prefix, "-btn ").concat(prefix, "-btn-left"), role: "none", onClick: function onClick() { if (!prevDisabled) handleJump("prev"); } }), _react["default"].createElement("span", { className: "".concat(prefix, "-text") }, current, " / ", pageNumber), _react["default"].createElement("div", { className: "".concat(prefix, "-btn ").concat(prefix, "-btn-right"), role: "none", onClick: function onClick() { if (!nextDisabled) handleJump("next"); } }), showButtonJumper && _react["default"].createElement(_button["default"], { disabled: disabled, style: { marginLeft: "8px" }, leftIcon: "arrow-right-last", size: size, theme: theme, onClick: function onClick() { if (!nextDisabled) handleJump("last"); } }), showInputJumper && [_react["default"].createElement("input", { key: 0, className: "".concat(prefix, "-input"), onChange: function onChange(e) { return setInputValue(e.target.value); } }), _react["default"].createElement("div", { role: "none", className: "".concat(prefix, "-input-btn"), key: 1, onClick: handleInputJump }, "\u8DF3\u8F6C")]); }; Pagination.displayName = "Pagination"; Pagination.propTypes = { align: _propTypes["default"].oneOf(["left", "center", "right"]), className: _propTypes["default"].string, current: _propTypes["default"].number, defaultCurrent: _propTypes["default"].number, disabled: _propTypes["default"].bool, hideWhenSinglePage: _propTypes["default"].bool, onChange: _propTypes["default"].func, pageSize: _propTypes["default"].number, showButtonJumper: _propTypes["default"].bool, showInputJumper: _propTypes["default"].bool, size: _propTypes["default"].oneOf(["mini", "small", "medium", "large"]), theme: _propTypes["default"].oneOf([null, "light"]), total: _propTypes["default"].number }; Pagination.defaultProps = { align: undefined, className: undefined, current: null, defaultCurrent: 1, disabled: false, hideWhenSinglePage: true, onChange: noop, pageSize: 10, showButtonJumper: false, showInputJumper: true, size: "small", theme: null, total: 0 }; var _default = Pagination; exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub29wIiwicHJlZml4IiwiUGFnaW5hdGlvbiIsImFsaWduIiwiY2xhc3NOYW1lIiwiY3VycmVudFByb3AiLCJjdXJyZW50IiwiZGVmYXVsdEN1cnJlbnQiLCJkaXNhYmxlZCIsImhpZGVXaGVuU2luZ2xlUGFnZSIsIm9uQ2hhbmdlIiwicGFnZVNpemUiLCJzaG93QnV0dG9uSnVtcGVyIiwic2hvd0lucHV0SnVtcGVyIiwic2l6ZVByb3AiLCJzaXplIiwidGhlbWUiLCJ0b3RhbCIsIm90aGVyUHJvcHMiLCJ1c2VTdGF0ZSIsInNldEN1cnJlbnQiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsInVuZGVmaW5lZCIsInVzZUNvbnRleHQiLCJDb25maWdDb250ZXh0Iiwic2l6ZUNvbnRleHQiLCJnZXRDb21wdXRlZFNpemUiLCJjbGFzc1NldCIsImNsYXNzTmFtZXMiLCJ3YXJuaW5nIiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwiTWF0aCIsImNlaWwiLCJwYWdlTnVtYmVyIiwibWF4IiwicHJldkRpc2FibGVkIiwibmV4dERpc2FibGVkIiwiaGFuZGxlSnVtcCIsInR5cGUiLCJuZXdQYWdlIiwiaGFuZGxlSW5wdXRKdW1wIiwicGFyc2V2YWx1ZSIsInBhcnNlSW50IiwiaXNOYU4iLCJ2YWx1ZSIsIm1pbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsImUiLCJ0YXJnZXQiLCJkaXNwbGF5TmFtZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm9uZU9mIiwic3RyaW5nIiwibnVtYmVyIiwiYm9vbCIsImZ1bmMiLCJkZWZhdWx0UHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi9jb21wb25lbnRzL2NoYW5uZWxzLXBhZ2luYXRpb24vUGFnaW5hdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IHdhcm5pbmcgZnJvbSBcIi4uL191dGlsL3dhcm5pbmdcIlxuaW1wb3J0IHsgQ29uZmlnQ29udGV4dCwgZ2V0Q29tcHV0ZWRTaXplIH0gZnJvbSBcIi4uL2NvbmZpZy1wcm92aWRlclwiXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi9idXR0b25cIlxuaW1wb3J0IFwiLi9zdHlsZVwiXG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fVxuY29uc3QgcHJlZml4ID0gXCJhZHVpLWNoYW5uZWxzLXBhZ2luYXRpb25cIlxuXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0aW9uUHJvcHMge1xuICBba2V5OiBzdHJpbmddOiBhbnlcbiAgLyoqXG4gICAqIOWvuem9kOaWueW8j1xuICAgKi9cbiAgYWxpZ24/OiBcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcInJpZ2h0XCJcbiAgLyoqXG4gICAqIOmZhOWKoOexu+WQjVxuICAgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiDlvZPliY3pobXmlbBcbiAgICovXG4gIGN1cnJlbnQ/OiBudW1iZXIgfCBudWxsXG4gIC8qKlxuICAgKiDpu5jorqTnmoTlvZPliY3pobXmlbBcbiAgICovXG4gIGRlZmF1bHRDdXJyZW50PzogbnVtYmVyXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICAvKipcbiAgICog5Y+q5pyJ5LiA6aG15pe2IHJldHVybiBudWxsXG4gICAqL1xuICBoaWRlV2hlblNpbmdsZVBhZ2U/OiBib29sZWFuXG4gIC8qKlxuICAgKiDlvZPliY3pobXlj5jljJbml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DaGFuZ2U/OiAobmV3UGFnZTogbnVtYmVyLCBwYWdlU2l6ZT86IG51bWJlcikgPT4gdm9pZFxuICAvKipcbiAgICog6K6+572u5q+P6aG15p2h5pWw77yM6buY6K6kIDEwIOadoVxuICAgKi9cbiAgcGFnZVNpemU/OiBudW1iZXJcbiAgLyoqXG4gICAqIOaYr+WQpuaYvuekuummlumhteWwvumhtei3s+i9rOaMiemSrlxuICAgKi9cbiAgc2hvd0J1dHRvbkp1bXBlcj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOaYr+WQpuaYvuekuui3s+i9rOi+k+WFpeahhlxuICAgKi9cbiAgc2hvd0lucHV0SnVtcGVyPzogYm9vbGVhblxuICAvKipcbiAgICog6K6+572u5bC65a+4XG4gICAqL1xuICBzaXplPzogXCJtaW5pXCIgfCBcInNtYWxsXCIgfCBcIm1lZGl1bVwiIHwgXCJsYXJnZVwiXG4gIC8qKlxuICAgKiDorr7nva7kuLvpophcbiAgICovXG4gIHRoZW1lPzogbnVsbCB8IFwibGlnaHRcIlxuICAvKipcbiAgICog5pWw5o2u5oC75pWwXG4gICAqL1xuICB0b3RhbD86IG51bWJlclxufVxuXG4vKipcbiAqIOWIhumhteWZqOeUqOS6juWwhuWkp+mHj+WGheWuueS7peWIhumhteW9ouW8j+mXtOmalO+8jOWIh+aNoumAieaLqeafpeeci+OAglxuICovXG5jb25zdCBQYWdpbmF0aW9uOiBSZWFjdC5GQzxJUGFnaW5hdGlvblByb3BzPiA9ICh7XG4gIGFsaWduLFxuICBjbGFzc05hbWUsXG4gIGN1cnJlbnQ6IGN1cnJlbnRQcm9wLFxuICBkZWZhdWx0Q3VycmVudCxcbiAgZGlzYWJsZWQsXG4gIGhpZGVXaGVuU2luZ2xlUGFnZSxcbiAgb25DaGFuZ2UsXG4gIHBhZ2VTaXplLFxuICBzaG93QnV0dG9uSnVtcGVyLFxuICBzaG93SW5wdXRKdW1wZXIsXG4gIHNpemU6IHNpemVQcm9wLFxuICB0aGVtZSxcbiAgdG90YWwsXG4gIC4uLm90aGVyUHJvcHNcbn06IElQYWdpbmF0aW9uUHJvcHMpID0+IHtcbiAgY29uc3QgW2N1cnJlbnQsIHNldEN1cnJlbnRdID0gdXNlU3RhdGU8bnVtYmVyPihcbiAgICAoY3VycmVudFByb3AgIT09IG51bGwgPyBjdXJyZW50UHJvcCA6IGRlZmF1bHRDdXJyZW50KSB8fCAxXG4gIClcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gdXNlU3RhdGUoXCJcIilcblxuICAvLyDnm7jlvZPkuo7nlJ/lkb3lkajmnJ8gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXG4gIGlmIChcbiAgICBjdXJyZW50UHJvcCAhPT0gbnVsbCAmJlxuICAgIGN1cnJlbnRQcm9wICE9PSB1bmRlZmluZWQgJiZcbiAgICBjdXJyZW50ICE9PSBjdXJyZW50UHJvcFxuICApIHtcbiAgICBzZXRDdXJyZW50KGN1cnJlbnRQcm9wKVxuICB9XG5cbiAgY29uc3QgeyBzaXplOiBzaXplQ29udGV4dCB9ID0gdXNlQ29udGV4dChDb25maWdDb250ZXh0KVxuICBjb25zdCBzaXplID0gZ2V0Q29tcHV0ZWRTaXplKHNpemVQcm9wLCBzaXplQ29udGV4dClcblxuICBjb25zdCBjbGFzc1NldCA9IGNsYXNzTmFtZXMoXG4gICAgY2xhc3NOYW1lLFxuICAgIGAke3ByZWZpeH0tYmFzZWAsXG4gICAgYCR7cHJlZml4fS0ke3NpemV9YCxcbiAgICB7XG4gICAgICBbYCR7cHJlZml4fS0ke2FsaWdufWBdOiBhbGlnbixcbiAgICAgIFtgJHtwcmVmaXh9LWRpc2FibGVkYF06IGRpc2FibGVkLFxuICAgIH1cbiAgKVxuXG4gIHdhcm5pbmcoTnVtYmVyLmlzSW50ZWdlcihjdXJyZW50KSwgXCJQYWdpbmF0aW9uXCIsIFwiY3VycmVudCDlgLzpnIDopoHmmK/mraPmlbTmlbBcIilcblxuICB3YXJuaW5nKFxuICAgICEoXG4gICAgICBjdXJyZW50IDwgMSB8fFxuICAgICAgKGN1cnJlbnQgPiBNYXRoLmNlaWwoKHRvdGFsIHx8IDApIC8gKHBhZ2VTaXplIHx8IDEwKSkgJiYgY3VycmVudCAhPT0gMSlcbiAgICApLFxuICAgIFwiUGFnaW5hdGlvblwiLFxuICAgIGBjdXJyZW50IOmcgOimgeaXtuWcqOato+ehruiMg+WbtOWGheeahOato+aVtOaVsO+8jHRvdGFsOiAke3RvdGFsfe+8jHBhZ2VTaXpl77yaJHtwYWdlU2l6ZX1gXG4gIClcblxuICBsZXQgcGFnZU51bWJlciA9IDFcbiAgaWYgKHRvdGFsICYmIHBhZ2VTaXplKSB7XG4gICAgcGFnZU51bWJlciA9IE1hdGgubWF4KE1hdGguY2VpbCh0b3RhbCAvIHBhZ2VTaXplKSwgMSlcbiAgfVxuICBjb25zdCBwcmV2RGlzYWJsZWQgPSBjdXJyZW50ID09PSAxXG4gIGNvbnN0IG5leHREaXNhYmxlZCA9IGN1cnJlbnQgPT09IHBhZ2VOdW1iZXJcblxuICBpZiAocGFnZU51bWJlciA9PT0gMSAmJiBoaWRlV2hlblNpbmdsZVBhZ2UpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgaGFuZGxlSnVtcCA9ICh0eXBlOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgbmV3UGFnZVxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBcImZpcnN0XCI6XG4gICAgICAgIG5ld1BhZ2UgPSAxXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwicHJldlwiOlxuICAgICAgICBuZXdQYWdlID0gY3VycmVudCAtIDFcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJuZXh0XCI6XG4gICAgICAgIG5ld1BhZ2UgPSBjdXJyZW50ICsgMVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcImxhc3RcIjpcbiAgICAgICAgaWYgKHRvdGFsICYmIHBhZ2VTaXplKSB7XG4gICAgICAgICAgbmV3UGFnZSA9IE1hdGgubWF4KE1hdGguY2VpbCh0b3RhbCAvIHBhZ2VTaXplKSwgMSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG5cbiAgICBpZiAobmV3UGFnZSAmJiBwYWdlU2l6ZSkge1xuICAgICAgaWYgKGN1cnJlbnRQcm9wID09PSBudWxsKSB7XG4gICAgICAgIHNldEN1cnJlbnQobmV3UGFnZSlcbiAgICAgIH1cbiAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShuZXdQYWdlLCBwYWdlU2l6ZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dEp1bXAgPSAoKSA9PiB7XG4gICAgY29uc3QgcGFyc2V2YWx1ZSA9IHBhcnNlSW50KGlucHV0VmFsdWUsIDEwKVxuICAgIGlmIChpc05hTihwYXJzZXZhbHVlKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGxldCB2YWx1ZSA9IE1hdGgubWF4KHBhcnNldmFsdWUsIDEpXG4gICAgaWYgKHRvdGFsICYmIHBhZ2VTaXplKSB7XG4gICAgICB2YWx1ZSA9IE1hdGgubWluKHZhbHVlLCBNYXRoLm1heChNYXRoLmNlaWwodG90YWwgLyBwYWdlU2l6ZSksIDEpKVxuICAgIH1cbiAgICBpZiAoY3VycmVudFByb3AgPT09IG51bGwpIHtcbiAgICAgIHNldEN1cnJlbnQodmFsdWUpXG4gICAgfVxuICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgb25DaGFuZ2UodmFsdWUsIHBhZ2VTaXplKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzU2V0fSBkYXRhLWN1cnJlbnQ9e2N1cnJlbnR9IHsuLi5vdGhlclByb3BzfT5cbiAgICAgIHtzaG93QnV0dG9uSnVtcGVyICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICBzdHlsZT17eyBtYXJnaW5SaWdodDogXCI4cHhcIiB9fVxuICAgICAgICAgIGxlZnRJY29uPVwiYXJyb3ctbGVmdC1maXJzdFwiXG4gICAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFwcmV2RGlzYWJsZWQpIGhhbmRsZUp1bXAoXCJmaXJzdFwiKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2Ake3ByZWZpeH0tYnRuICR7cHJlZml4fS1idG4tbGVmdGB9XG4gICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgIGlmICghcHJldkRpc2FibGVkKSBoYW5kbGVKdW1wKFwicHJldlwiKVxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17YCR7cHJlZml4fS10ZXh0YH0+XG4gICAgICAgIHtjdXJyZW50fSAvIHtwYWdlTnVtYmVyfVxuICAgICAgPC9zcGFuPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2Ake3ByZWZpeH0tYnRuICR7cHJlZml4fS1idG4tcmlnaHRgfVxuICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICBpZiAoIW5leHREaXNhYmxlZCkgaGFuZGxlSnVtcChcIm5leHRcIilcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgICB7c2hvd0J1dHRvbkp1bXBlciAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogXCI4cHhcIiB9fVxuICAgICAgICAgIGxlZnRJY29uPVwiYXJyb3ctcmlnaHQtbGFzdFwiXG4gICAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFuZXh0RGlzYWJsZWQpIGhhbmRsZUp1bXAoXCJsYXN0XCIpXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7c2hvd0lucHV0SnVtcGVyICYmIFtcbiAgICAgICAgPGlucHV0XG4gICAgICAgICAga2V5PXswfVxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7cHJlZml4fS1pbnB1dGB9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgICAgICAgICAgIHNldElucHV0VmFsdWUoZS50YXJnZXQudmFsdWUpXG4gICAgICAgICAgfVxuICAgICAgICAvPixcbiAgICAgICAgPGRpdlxuICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3ByZWZpeH0taW5wdXQtYnRuYH1cbiAgICAgICAgICBrZXk9ezF9XG4gICAgICAgICAgb25DbGljaz17aGFuZGxlSW5wdXRKdW1wfVxuICAgICAgICA+XG4gICAgICAgICAg6Lez6L2sXG4gICAgICAgIDwvZGl2PixcbiAgICAgIF19XG4gICAgPC9kaXY+XG4gIClcbn1cblxuUGFnaW5hdGlvbi5kaXNwbGF5TmFtZSA9IFwiUGFnaW5hdGlvblwiXG5cblBhZ2luYXRpb24ucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICog5a+56b2Q5pa55byPXG4gICAqL1xuICBhbGlnbjogUHJvcFR5cGVzLm9uZU9mKFtcImxlZnRcIiwgXCJjZW50ZXJcIiwgXCJyaWdodFwiXSksXG4gIC8qKlxuICAgKiDpmYTliqDnsbvlkI1cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIOW9k+WJjemhteaVsFxuICAgKi9cbiAgY3VycmVudDogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIOm7mOiupOeahOW9k+WJjemhteaVsFxuICAgKi9cbiAgZGVmYXVsdEN1cnJlbnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOWPquacieS4gOmhteaXtiByZXR1cm4gbnVsbFxuICAgKi9cbiAgaGlkZVdoZW5TaW5nbGVQYWdlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOW9k+WJjemhteWPmOWMluaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiDorr7nva7mr4/pobXmnaHmlbDvvIzpu5jorqQgMTAg5p2hXG4gICAqL1xuICBwYWdlU2l6ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIOaYr+WQpuaYvuekuummlumhteWwvumhtei3s+i9rOaMiemSrlxuICAgKi9cbiAgc2hvd0J1dHRvbkp1bXBlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDmmK/lkKbmmL7npLrot7PovazovpPlhaXmoYZcbiAgICovXG4gIHNob3dJbnB1dEp1bXBlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDorr7nva7lsLrlr7hcbiAgICovXG4gIHNpemU6IFByb3BUeXBlcy5vbmVPZihbXCJtaW5pXCIsIFwic21hbGxcIiwgXCJtZWRpdW1cIiwgXCJsYXJnZVwiXSksXG4gIC8qKlxuICAgKiDorr7nva7kuLvpophcbiAgICovXG4gIHRoZW1lOiBQcm9wVHlwZXMub25lT2YoW251bGwsIFwibGlnaHRcIl0pLFxuICAvKipcbiAgICog5pWw5o2u5oC75pWwXG4gICAqL1xuICB0b3RhbDogUHJvcFR5cGVzLm51bWJlcixcbn1cblxuUGFnaW5hdGlvbi5kZWZhdWx0UHJvcHMgPSB7XG4gIGFsaWduOiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICBjdXJyZW50OiBudWxsLFxuICBkZWZhdWx0Q3VycmVudDogMSxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBoaWRlV2hlblNpbmdsZVBhZ2U6IHRydWUsXG4gIG9uQ2hhbmdlOiBub29wLFxuICBwYWdlU2l6ZTogMTAsXG4gIHNob3dCdXR0b25KdW1wZXI6IGZhbHNlLFxuICBzaG93SW5wdXRKdW1wZXI6IHRydWUsXG4gIHNpemU6IFwic21hbGxcIixcbiAgdGhlbWU6IG51bGwsXG4gIHRvdGFsOiAwLFxufVxuXG5leHBvcnQgZGVmYXVsdCBQYWdpbmF0aW9uXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxJQUFJLEdBQUcsU0FBUEEsSUFBTyxHQUFNLENBQUUsQ0FBckI7O0FBQ0EsSUFBTUMsTUFBTSxHQUFHLDBCQUFmOztBQTZEQSxJQUFNQyxVQUFzQyxHQUFHLFNBQXpDQSxVQUF5QyxPQWV2QjtFQUFBOztFQUFBLElBZHRCQyxLQWNzQixRQWR0QkEsS0Fjc0I7RUFBQSxJQWJ0QkMsU0Fhc0IsUUFidEJBLFNBYXNCO0VBQUEsSUFaYkMsV0FZYSxRQVp0QkMsT0FZc0I7RUFBQSxJQVh0QkMsY0FXc0IsUUFYdEJBLGNBV3NCO0VBQUEsSUFWdEJDLFFBVXNCLFFBVnRCQSxRQVVzQjtFQUFBLElBVHRCQyxrQkFTc0IsUUFUdEJBLGtCQVNzQjtFQUFBLElBUnRCQyxRQVFzQixRQVJ0QkEsUUFRc0I7RUFBQSxJQVB0QkMsUUFPc0IsUUFQdEJBLFFBT3NCO0VBQUEsSUFOdEJDLGdCQU1zQixRQU50QkEsZ0JBTXNCO0VBQUEsSUFMdEJDLGVBS3NCLFFBTHRCQSxlQUtzQjtFQUFBLElBSmhCQyxRQUlnQixRQUp0QkMsSUFJc0I7RUFBQSxJQUh0QkMsS0FHc0IsUUFIdEJBLEtBR3NCO0VBQUEsSUFGdEJDLEtBRXNCLFFBRnRCQSxLQUVzQjtFQUFBLElBRG5CQyxVQUNtQjs7RUFDdEIsZ0JBQThCLElBQUFDLGVBQUEsRUFDNUIsQ0FBQ2QsV0FBVyxLQUFLLElBQWhCLEdBQXVCQSxXQUF2QixHQUFxQ0UsY0FBdEMsS0FBeUQsQ0FEN0IsQ0FBOUI7RUFBQTtFQUFBLElBQU9ELE9BQVA7RUFBQSxJQUFnQmMsVUFBaEI7O0VBR0EsaUJBQW9DLElBQUFELGVBQUEsRUFBUyxFQUFULENBQXBDO0VBQUE7RUFBQSxJQUFPRSxVQUFQO0VBQUEsSUFBbUJDLGFBQW5COztFQUdBLElBQ0VqQixXQUFXLEtBQUssSUFBaEIsSUFDQUEsV0FBVyxLQUFLa0IsU0FEaEIsSUFFQWpCLE9BQU8sS0FBS0QsV0FIZCxFQUlFO0lBQ0FlLFVBQVUsQ0FBQ2YsV0FBRCxDQUFWO0VBQ0Q7O0VBRUQsa0JBQThCLElBQUFtQixpQkFBQSxFQUFXQyw2QkFBWCxDQUE5QjtFQUFBLElBQWNDLFdBQWQsZUFBUVgsSUFBUjs7RUFDQSxJQUFNQSxJQUFJLEdBQUcsSUFBQVksK0JBQUEsRUFBZ0JiLFFBQWhCLEVBQTBCWSxXQUExQixDQUFiO0VBRUEsSUFBTUUsUUFBUSxHQUFHLElBQUFDLHNCQUFBLEVBQ2Z6QixTQURlLFlBRVpILE1BRlksc0JBR1pBLE1BSFksY0FHRmMsSUFIRSw2REFLVGQsTUFMUyxjQUtDRSxLQUxELEdBS1dBLEtBTFgsMENBTVRGLE1BTlMsZ0JBTVdPLFFBTlgsZ0JBQWpCO0VBVUEsSUFBQXNCLG1CQUFBLEVBQVFDLE1BQU0sQ0FBQ0MsU0FBUCxDQUFpQjFCLE9BQWpCLENBQVIsRUFBbUMsWUFBbkMsRUFBaUQsaUJBQWpEO0VBRUEsSUFBQXdCLG1CQUFBLEVBQ0UsRUFDRXhCLE9BQU8sR0FBRyxDQUFWLElBQ0NBLE9BQU8sR0FBRzJCLElBQUksQ0FBQ0MsSUFBTCxDQUFVLENBQUNqQixLQUFLLElBQUksQ0FBVixLQUFnQk4sUUFBUSxJQUFJLEVBQTVCLENBQVYsQ0FBVixJQUF3REwsT0FBTyxLQUFLLENBRnZFLENBREYsRUFLRSxZQUxGLCtHQU1rQ1csS0FObEMsaUNBTW9ETixRQU5wRDtFQVNBLElBQUl3QixVQUFVLEdBQUcsQ0FBakI7O0VBQ0EsSUFBSWxCLEtBQUssSUFBSU4sUUFBYixFQUF1QjtJQUNyQndCLFVBQVUsR0FBR0YsSUFBSSxDQUFDRyxHQUFMLENBQVNILElBQUksQ0FBQ0MsSUFBTCxDQUFVakIsS0FBSyxHQUFHTixRQUFsQixDQUFULEVBQXNDLENBQXRDLENBQWI7RUFDRDs7RUFDRCxJQUFNMEIsWUFBWSxHQUFHL0IsT0FBTyxLQUFLLENBQWpDO0VBQ0EsSUFBTWdDLFlBQVksR0FBR2hDLE9BQU8sS0FBSzZCLFVBQWpDOztFQUVBLElBQUlBLFVBQVUsS0FBSyxDQUFmLElBQW9CMUIsa0JBQXhCLEVBQTRDO0lBQzFDLE9BQU8sSUFBUDtFQUNEOztFQUVELElBQU04QixVQUFVLEdBQUcsU0FBYkEsVUFBYSxDQUFDQyxJQUFELEVBQWtCO0lBQ25DLElBQUlDLE9BQUo7O0lBQ0EsUUFBUUQsSUFBUjtNQUNFLEtBQUssT0FBTDtRQUNFQyxPQUFPLEdBQUcsQ0FBVjtRQUNBOztNQUNGLEtBQUssTUFBTDtRQUNFQSxPQUFPLEdBQUduQyxPQUFPLEdBQUcsQ0FBcEI7UUFDQTs7TUFDRixLQUFLLE1BQUw7UUFDRW1DLE9BQU8sR0FBR25DLE9BQU8sR0FBRyxDQUFwQjtRQUNBOztNQUNGLEtBQUssTUFBTDtRQUNFLElBQUlXLEtBQUssSUFBSU4sUUFBYixFQUF1QjtVQUNyQjhCLE9BQU8sR0FBR1IsSUFBSSxDQUFDRyxHQUFMLENBQVNILElBQUksQ0FBQ0MsSUFBTCxDQUFVakIsS0FBSyxHQUFHTixRQUFsQixDQUFULEVBQXNDLENBQXRDLENBQVY7UUFDRDs7UUFDRDs7TUFDRjtJQWZGOztJQWtCQSxJQUFJOEIsT0FBTyxJQUFJOUIsUUFBZixFQUF5QjtNQUN2QixJQUFJTixXQUFXLEtBQUssSUFBcEIsRUFBMEI7UUFDeEJlLFVBQVUsQ0FBQ3FCLE9BQUQsQ0FBVjtNQUNEOztNQUNELElBQUkvQixRQUFKLEVBQWM7UUFDWkEsUUFBUSxDQUFDK0IsT0FBRCxFQUFVOUIsUUFBVixDQUFSO01BQ0Q7SUFDRjtFQUNGLENBNUJEOztFQThCQSxJQUFNK0IsZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixHQUFNO0lBQzVCLElBQU1DLFVBQVUsR0FBR0MsUUFBUSxDQUFDdkIsVUFBRCxFQUFhLEVBQWIsQ0FBM0I7O0lBQ0EsSUFBSXdCLEtBQUssQ0FBQ0YsVUFBRCxDQUFULEVBQXVCO01BQ3JCO0lBQ0Q7O0lBQ0QsSUFBSUcsS0FBSyxHQUFHYixJQUFJLENBQUNHLEdBQUwsQ0FBU08sVUFBVCxFQUFxQixDQUFyQixDQUFaOztJQUNBLElBQUkxQixLQUFLLElBQUlOLFFBQWIsRUFBdUI7TUFDckJtQyxLQUFLLEdBQUdiLElBQUksQ0FBQ2MsR0FBTCxDQUFTRCxLQUFULEVBQWdCYixJQUFJLENBQUNHLEdBQUwsQ0FBU0gsSUFBSSxDQUFDQyxJQUFMLENBQVVqQixLQUFLLEdBQUdOLFFBQWxCLENBQVQsRUFBc0MsQ0FBdEMsQ0FBaEIsQ0FBUjtJQUNEOztJQUNELElBQUlOLFdBQVcsS0FBSyxJQUFwQixFQUEwQjtNQUN4QmUsVUFBVSxDQUFDMEIsS0FBRCxDQUFWO0lBQ0Q7O0lBQ0QsSUFBSXBDLFFBQUosRUFBYztNQUNaQSxRQUFRLENBQUNvQyxLQUFELEVBQVFuQyxRQUFSLENBQVI7SUFDRDtFQUNGLENBZkQ7O0VBaUJBLE9BQ0U7SUFBSyxTQUFTLEVBQUVpQixRQUFoQjtJQUEwQixnQkFBY3RCO0VBQXhDLEdBQXFEWSxVQUFyRCxHQUNHTixnQkFBZ0IsSUFDZixnQ0FBQyxrQkFBRDtJQUNFLFFBQVEsRUFBRUosUUFEWjtJQUVFLEtBQUssRUFBRTtNQUFFd0MsV0FBVyxFQUFFO0lBQWYsQ0FGVDtJQUdFLFFBQVEsRUFBQyxrQkFIWDtJQUlFLElBQUksRUFBRWpDLElBSlI7SUFLRSxLQUFLLEVBQUVDLEtBTFQ7SUFNRSxPQUFPLEVBQUUsbUJBQU07TUFDYixJQUFJLENBQUNxQixZQUFMLEVBQW1CRSxVQUFVLENBQUMsT0FBRCxDQUFWO0lBQ3BCO0VBUkgsRUFGSixFQWFFO0lBQ0UsU0FBUyxZQUFLdEMsTUFBTCxrQkFBbUJBLE1BQW5CLGNBRFg7SUFFRSxJQUFJLEVBQUMsTUFGUDtJQUdFLE9BQU8sRUFBRSxtQkFBTTtNQUNiLElBQUksQ0FBQ29DLFlBQUwsRUFBbUJFLFVBQVUsQ0FBQyxNQUFELENBQVY7SUFDcEI7RUFMSCxFQWJGLEVBb0JFO0lBQU0sU0FBUyxZQUFLdEMsTUFBTDtFQUFmLEdBQ0dLLE9BREgsU0FDZTZCLFVBRGYsQ0FwQkYsRUF1QkU7SUFDRSxTQUFTLFlBQUtsQyxNQUFMLGtCQUFtQkEsTUFBbkIsZUFEWDtJQUVFLElBQUksRUFBQyxNQUZQO0lBR0UsT0FBTyxFQUFFLG1CQUFNO01BQ2IsSUFBSSxDQUFDcUMsWUFBTCxFQUFtQkMsVUFBVSxDQUFDLE1BQUQsQ0FBVjtJQUNwQjtFQUxILEVBdkJGLEVBOEJHM0IsZ0JBQWdCLElBQ2YsZ0NBQUMsa0JBQUQ7SUFDRSxRQUFRLEVBQUVKLFFBRFo7SUFFRSxLQUFLLEVBQUU7TUFBRXlDLFVBQVUsRUFBRTtJQUFkLENBRlQ7SUFHRSxRQUFRLEVBQUMsa0JBSFg7SUFJRSxJQUFJLEVBQUVsQyxJQUpSO0lBS0UsS0FBSyxFQUFFQyxLQUxUO0lBTUUsT0FBTyxFQUFFLG1CQUFNO01BQ2IsSUFBSSxDQUFDc0IsWUFBTCxFQUFtQkMsVUFBVSxDQUFDLE1BQUQsQ0FBVjtJQUNwQjtFQVJILEVBL0JKLEVBMENHMUIsZUFBZSxJQUFJLENBQ2xCO0lBQ0UsR0FBRyxFQUFFLENBRFA7SUFFRSxTQUFTLFlBQUtaLE1BQUwsV0FGWDtJQUdFLFFBQVEsRUFBRSxrQkFBQ2lELENBQUQ7TUFBQSxPQUNSNUIsYUFBYSxDQUFDNEIsQ0FBQyxDQUFDQyxNQUFGLENBQVNMLEtBQVYsQ0FETDtJQUFBO0VBSFosRUFEa0IsRUFRbEI7SUFDRSxJQUFJLEVBQUMsTUFEUDtJQUVFLFNBQVMsWUFBSzdDLE1BQUwsZUFGWDtJQUdFLEdBQUcsRUFBRSxDQUhQO0lBSUUsT0FBTyxFQUFFeUM7RUFKWCxrQkFSa0IsQ0ExQ3RCLENBREY7QUE4REQsQ0E5S0Q7O0FBZ0xBeEMsVUFBVSxDQUFDa0QsV0FBWCxHQUF5QixZQUF6QjtBQUVBbEQsVUFBVSxDQUFDbUQsU0FBWCxHQUF1QjtFQUlyQmxELEtBQUssRUFBRW1ELHFCQUFBLENBQVVDLEtBQVYsQ0FBZ0IsQ0FBQyxNQUFELEVBQVMsUUFBVCxFQUFtQixPQUFuQixDQUFoQixDQUpjO0VBUXJCbkQsU0FBUyxFQUFFa0QscUJBQUEsQ0FBVUUsTUFSQTtFQVlyQmxELE9BQU8sRUFBRWdELHFCQUFBLENBQVVHLE1BWkU7RUFnQnJCbEQsY0FBYyxFQUFFK0MscUJBQUEsQ0FBVUcsTUFoQkw7RUFvQnJCakQsUUFBUSxFQUFFOEMscUJBQUEsQ0FBVUksSUFwQkM7RUF3QnJCakQsa0JBQWtCLEVBQUU2QyxxQkFBQSxDQUFVSSxJQXhCVDtFQTRCckJoRCxRQUFRLEVBQUU0QyxxQkFBQSxDQUFVSyxJQTVCQztFQWdDckJoRCxRQUFRLEVBQUUyQyxxQkFBQSxDQUFVRyxNQWhDQztFQW9DckI3QyxnQkFBZ0IsRUFBRTBDLHFCQUFBLENBQVVJLElBcENQO0VBd0NyQjdDLGVBQWUsRUFBRXlDLHFCQUFBLENBQVVJLElBeENOO0VBNENyQjNDLElBQUksRUFBRXVDLHFCQUFBLENBQVVDLEtBQVYsQ0FBZ0IsQ0FBQyxNQUFELEVBQVMsT0FBVCxFQUFrQixRQUFsQixFQUE0QixPQUE1QixDQUFoQixDQTVDZTtFQWdEckJ2QyxLQUFLLEVBQUVzQyxxQkFBQSxDQUFVQyxLQUFWLENBQWdCLENBQUMsSUFBRCxFQUFPLE9BQVAsQ0FBaEIsQ0FoRGM7RUFvRHJCdEMsS0FBSyxFQUFFcUMscUJBQUEsQ0FBVUc7QUFwREksQ0FBdkI7QUF1REF2RCxVQUFVLENBQUMwRCxZQUFYLEdBQTBCO0VBQ3hCekQsS0FBSyxFQUFFb0IsU0FEaUI7RUFFeEJuQixTQUFTLEVBQUVtQixTQUZhO0VBR3hCakIsT0FBTyxFQUFFLElBSGU7RUFJeEJDLGNBQWMsRUFBRSxDQUpRO0VBS3hCQyxRQUFRLEVBQUUsS0FMYztFQU14QkMsa0JBQWtCLEVBQUUsSUFOSTtFQU94QkMsUUFBUSxFQUFFVixJQVBjO0VBUXhCVyxRQUFRLEVBQUUsRUFSYztFQVN4QkMsZ0JBQWdCLEVBQUUsS0FUTTtFQVV4QkMsZUFBZSxFQUFFLElBVk87RUFXeEJFLElBQUksRUFBRSxPQVhrQjtFQVl4QkMsS0FBSyxFQUFFLElBWmlCO0VBYXhCQyxLQUFLLEVBQUU7QUFiaUIsQ0FBMUI7ZUFnQmVmLFUifQ==