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>

205 lines (162 loc) 26.5 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 _useIsInitialRender = require("../_util/hooks/use-is-initial-render"); var _configProvider = require("../config-provider"); var _resizeObserver = _interopRequireDefault(require("../resize-observer")); var _Tab = _interopRequireDefault(require("./Tab")); var _Context = require("./Context"); require("./style"); var _motion = require("../_util/motion"); var _excluded = ["banner", "className", "children", "defaultValue", "disabled", "gutter", "onChange", "size", "value"]; 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 prefix = "adui-tabs"; var Tabs = (0, _react.forwardRef)(function (_ref, ref) { var _classNames; var banner = _ref.banner, className = _ref.className, children = _ref.children, defaultValue = _ref.defaultValue, disabled = _ref.disabled, gutter = _ref.gutter, onChange = _ref.onChange, size = _ref.size, valueProp = _ref.value, otherProps = _objectWithoutProperties(_ref, _excluded); var initial = (0, _useIsInitialRender.useIsInitialRender)(); var indicatorRef = (0, _react.useRef)(null); var _useState = (0, _react.useState)(function () { var val; if (valueProp !== null && valueProp !== undefined) { val = valueProp; } else if (defaultValue !== null && defaultValue !== undefined) { val = defaultValue; } return val; }), _useState2 = _slicedToArray(_useState, 2), value = _useState2[0], setValue = _useState2[1]; if (valueProp !== null && value !== valueProp) { setValue(valueProp); } var tabsRef = (0, _react.useRef)(null); var _useContext = (0, _react.useContext)(_configProvider.ConfigContext), sizeContext = _useContext.size; var setIndicatorStyle = function setIndicatorStyle(styles) { Object.keys(styles).forEach(function (key) { if (indicatorRef.current) { indicatorRef.current.style[key] = styles[key]; } }); }; var updateIndicatorStyle = function updateIndicatorStyle() { setTimeout(function () { if (tabsRef && tabsRef.current) { var theActiveTab = tabsRef.current.querySelector('[aria-selected="true"]'); if (theActiveTab) { var _indicatorRef$current, _indicatorRef$current2; var lastOffsetLeft = ((_indicatorRef$current = indicatorRef.current) === null || _indicatorRef$current === void 0 ? void 0 : (_indicatorRef$current2 = _indicatorRef$current.style.transform.match(/translate3d\((\d+)px/)) === null || _indicatorRef$current2 === void 0 ? void 0 : _indicatorRef$current2[1]) || 0; var clientWidth = theActiveTab.clientWidth, offsetLeft = theActiveTab.offsetLeft; var delta = Math.abs(offsetLeft - Number(lastOffsetLeft)); var transition = delta < _motion.BOUNCE_DISTANCE ? "all var(--adui-motion-duration-base) var(--adui-motion-ease-base)" : "all 0.35s linear(0,0.002,0.006,0.014,0.025 2.5%,0.056 3.8%,0.1,0.144,0.198 8%,0.436 13.9%,0.544,0.645 19.6%,0.69,0.731,0.769,0.803,0.834,0.862,0.888,0.911,0.931,0.949,0.964,0.976,0.987,0.996,1.003,1.009,1.013 47.3%,1.015 49.7%,1.017 53%,1.016 56.9%,1.006 72.6%,1.002 81.4%,1.001 89.7%,1)"; setIndicatorStyle({ transform: "translate3d(".concat(Math.floor(offsetLeft), "px, 0, 0)"), transition: initial ? "" : transition, width: "".concat(clientWidth, "px") }); } else { setIndicatorStyle({ opacity: 0 }); } } }, 0); }; (0, _react.useImperativeHandle)(ref, function () { return { updateIndicatorStyle: updateIndicatorStyle, getDomNode: function getDomNode() { return tabsRef.current; } }; }); var handleTabsValueChange = function handleTabsValueChange(val) { if (valueProp === null) { setValue(val); } if (onChange) { onChange(val); } }; (0, _react.useEffect)(function () { updateIndicatorStyle(); }); var classSet = (0, _classnames["default"])(className, "".concat(prefix, "-base"), "".concat(prefix, "-").concat((0, _configProvider.getComputedSize)(size, sizeContext)), (_classNames = {}, _defineProperty(_classNames, "".concat(prefix, "-banner"), banner), _defineProperty(_classNames, "".concat(prefix, "-base_disabled"), disabled), _classNames)); return _react["default"].createElement(_Context.TabsContext.Provider, { value: { disabled: disabled, gutter: gutter, handleTabsValueChange: handleTabsValueChange, value: value } }, _react["default"].createElement(_resizeObserver["default"], { onResize: function onResize() { if (!initial) { updateIndicatorStyle(); } } }, _react["default"].createElement("div", _extends({ className: classSet, "data-value": value, ref: tabsRef }, otherProps), _react["default"].createElement("div", { ref: indicatorRef, className: "".concat(prefix, "-indicator") }), children))); }); Tabs.Tab = _Tab["default"]; Tabs.displayName = "Tabs"; Tabs.propTypes = { banner: _propTypes["default"].bool, children: _propTypes["default"].node.isRequired, className: _propTypes["default"].string, defaultValue: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]), disabled: _propTypes["default"].bool, gutter: _propTypes["default"].number, onChange: _propTypes["default"].func, size: _propTypes["default"].oneOf(["mini", "small", "medium", "large"]), value: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]) }; Tabs.defaultProps = { banner: false, className: undefined, defaultValue: null, disabled: false, gutter: undefined, onChange: function onChange() {}, size: "small", value: null }; var _default = Tabs; exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcmVmaXgiLCJUYWJzIiwiZm9yd2FyZFJlZiIsInJlZiIsImJhbm5lciIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwiZGVmYXVsdFZhbHVlIiwiZGlzYWJsZWQiLCJndXR0ZXIiLCJvbkNoYW5nZSIsInNpemUiLCJ2YWx1ZVByb3AiLCJ2YWx1ZSIsIm90aGVyUHJvcHMiLCJpbml0aWFsIiwidXNlSXNJbml0aWFsUmVuZGVyIiwiaW5kaWNhdG9yUmVmIiwidXNlUmVmIiwidXNlU3RhdGUiLCJ2YWwiLCJ1bmRlZmluZWQiLCJzZXRWYWx1ZSIsInRhYnNSZWYiLCJ1c2VDb250ZXh0IiwiQ29uZmlnQ29udGV4dCIsInNpemVDb250ZXh0Iiwic2V0SW5kaWNhdG9yU3R5bGUiLCJzdHlsZXMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImN1cnJlbnQiLCJzdHlsZSIsInVwZGF0ZUluZGljYXRvclN0eWxlIiwic2V0VGltZW91dCIsInRoZUFjdGl2ZVRhYiIsInF1ZXJ5U2VsZWN0b3IiLCJsYXN0T2Zmc2V0TGVmdCIsInRyYW5zZm9ybSIsIm1hdGNoIiwiY2xpZW50V2lkdGgiLCJvZmZzZXRMZWZ0IiwiZGVsdGEiLCJNYXRoIiwiYWJzIiwiTnVtYmVyIiwidHJhbnNpdGlvbiIsIkJPVU5DRV9ESVNUQU5DRSIsImZsb29yIiwid2lkdGgiLCJvcGFjaXR5IiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsImdldERvbU5vZGUiLCJoYW5kbGVUYWJzVmFsdWVDaGFuZ2UiLCJ1c2VFZmZlY3QiLCJjbGFzc1NldCIsImNsYXNzTmFtZXMiLCJnZXRDb21wdXRlZFNpemUiLCJUYWIiLCJkaXNwbGF5TmFtZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImJvb2wiLCJub2RlIiwiaXNSZXF1aXJlZCIsInN0cmluZyIsIm9uZU9mVHlwZSIsIm51bWJlciIsImZ1bmMiLCJvbmVPZiIsImRlZmF1bHRQcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvdGFicy9UYWJzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgUmVhY3QsIHtcbiAgZm9yd2FyZFJlZixcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VJbXBlcmF0aXZlSGFuZGxlLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgeyB1c2VJc0luaXRpYWxSZW5kZXIgfSBmcm9tIFwiLi4vX3V0aWwvaG9va3MvdXNlLWlzLWluaXRpYWwtcmVuZGVyXCJcbmltcG9ydCB7IENvbmZpZ0NvbnRleHQsIGdldENvbXB1dGVkU2l6ZSB9IGZyb20gXCIuLi9jb25maWctcHJvdmlkZXJcIlxuaW1wb3J0IFJlc2l6ZU9ic2VydmVyIGZyb20gXCIuLi9yZXNpemUtb2JzZXJ2ZXJcIlxuaW1wb3J0IFRhYiBmcm9tIFwiLi9UYWJcIlxuaW1wb3J0IHsgVGFic0NvbnRleHQgfSBmcm9tIFwiLi9Db250ZXh0XCJcbmltcG9ydCBcIi4vc3R5bGVcIlxuaW1wb3J0IHsgQk9VTkNFX0RJU1RBTkNFIH0gZnJvbSBcIi4uL191dGlsL21vdGlvblwiXG5cbmNvbnN0IHByZWZpeCA9IFwiYWR1aS10YWJzXCJcblxuZXhwb3J0IGludGVyZmFjZSBJVGFic1Byb3BzIHtcbiAgW2tleTogc3RyaW5nXTogYW55XG4gIC8qKlxuICAgKiDmmK/lkKbpgJrmoI/liIbphY3lrr3luqbvvIhmbGV4OiAxO++8iVxuICAgKi9cbiAgYmFubmVyPzogYm9vbGVhblxuICAvKipcbiAgICog5a2Q6IqC54K5XG4gICAqL1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG4gIC8qKlxuICAgKiDpmYTliqDnsbvlkI1cbiAgICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICog6buY6K6k55qE5bey6YCJ5Lit6aG5XG4gICAqL1xuICBkZWZhdWx0VmFsdWU/OiBSZWFjdC5SZWFjdFRleHQgfCBudWxsXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICAvKipcbiAgICogdGFiIOeahOmXtOi3nSBtYXJnaW5cbiAgICovXG4gIGd1dHRlcj86IG51bWJlclxuICAvKipcbiAgICog5YC85Y+Y5YyW5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBSZWFjdC5SZWFjdFRleHQpID0+IHZvaWRcbiAgLyoqXG4gICAqIOiuvue9ruWwuuWvuFxuICAgKi9cbiAgc2l6ZT86IFwibWluaVwiIHwgXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIlxuICAvKipcbiAgICog5bey6YCJ5Lit6aG5XG4gICAqL1xuICB2YWx1ZT86IFJlYWN0LlJlYWN0VGV4dCB8IG51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFic1xuICBleHRlbmRzIFJlYWN0LkZvcndhcmRSZWZFeG90aWNDb21wb25lbnQ8XG4gICAgSVRhYnNQcm9wcyAmIFJlYWN0LlJlZkF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+XG4gID4ge1xuICBUYWI6IHR5cGVvZiBUYWJcbn1cblxuLyoqXG4gKiDlr7zoiKrpobXnrb7vvIzpobbpg6jmqKrlkJHlr7zoiKrnmoTlhoXlrrnvvIznlKjkuo7liIfmjaLpobXpnaLkuK3lkIzkuIDlsYLnuqfnmoTlhoXlrrnjgIJcbiAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgVGFiczogSVRhYnMgPSBmb3J3YXJkUmVmKFxuICAoXG4gICAge1xuICAgICAgYmFubmVyLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBkZWZhdWx0VmFsdWUsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGd1dHRlcixcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgc2l6ZSxcbiAgICAgIHZhbHVlOiB2YWx1ZVByb3AsXG4gICAgICAuLi5vdGhlclByb3BzXG4gICAgfTogSVRhYnNQcm9wcyxcbiAgICByZWY6IGFueVxuICApID0+IHtcbiAgICBjb25zdCBpbml0aWFsID0gdXNlSXNJbml0aWFsUmVuZGVyKClcbiAgICBjb25zdCBpbmRpY2F0b3JSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG5cbiAgICAvKipcbiAgICAgKiDliJ3lp4vljJYgdmFsdWUgc3RhdGVcbiAgICAgKiAxLiDkvJjlhYjliKTmlq0gUHJvcCB2YWx1Ze+8jOWmguaenOWtmOWcqCBQcm9wIHZhbHVl77yM5YiZIFRhYnMg5a6M5YWo5Lqk55Sx5aSW6YOo5o6n5Yi277yM5YaF6YOo54q25oCB5peg5pWI77ybXG4gICAgICogMi4g5YaN5Yik5patIFByb3AgZGVmYXVsdFZhbHVl77yM5aaC5p6c5a2Y5Zyo6buY6K6k5YC877yM5YiZIFRhYnMg54q25oCB5Li65q2k6buY6K6k5YC877ybXG4gICAgICogMy4g5aaC5p6c6YO95rKh5pyJ77yM5YiZ5Y+WIFRhYiBjaGlsZHJlbiDnrKwgMCDpobnnmoQgdmFsdWXvvIzlsIbnrKwgMCDpobnorr7nva7kuLrlvZPliY3pobnjgIJcbiAgICAgKlxuICAgICAqIOS7peS4iuS4ieS4quWIpOaWreWPr+iDveWtmOWcqOWGsueqge+8jOaJgOS7peWcqOatpOivtOaYjuadoeS7tuWIpOaWreeahOS8mOWFiOe6p+OAglxuICAgICAqL1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoKCkgPT4ge1xuICAgICAgbGV0IHZhbFxuICAgICAgaWYgKHZhbHVlUHJvcCAhPT0gbnVsbCAmJiB2YWx1ZVByb3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YWwgPSB2YWx1ZVByb3BcbiAgICAgIH0gZWxzZSBpZiAoZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhbCA9IGRlZmF1bHRWYWx1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbFxuICAgIH0pXG5cbiAgICAvLyDnm7jlvZPkuo7nlJ/lkb3lkajmnJ8gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXG4gICAgaWYgKHZhbHVlUHJvcCAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdmFsdWVQcm9wKSB7XG4gICAgICBzZXRWYWx1ZSh2YWx1ZVByb3ApXG4gICAgfVxuXG4gICAgY29uc3QgdGFic1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICAgIGNvbnN0IHsgc2l6ZTogc2l6ZUNvbnRleHQgfSA9IHVzZUNvbnRleHQoQ29uZmlnQ29udGV4dClcblxuICAgIGNvbnN0IHNldEluZGljYXRvclN0eWxlID0gKHN0eWxlczogUmVhY3QuQ1NTUHJvcGVydGllcykgPT4ge1xuICAgICAgT2JqZWN0LmtleXMoc3R5bGVzKS5mb3JFYWNoKChrZXk6IGtleW9mIFJlYWN0LkNTU1Byb3BlcnRpZXMpID0+IHtcbiAgICAgICAgaWYgKGluZGljYXRvclJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGluZGljYXRvclJlZi5jdXJyZW50LnN0eWxlW2tleV0gPSBzdHlsZXNba2V5XVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZUluZGljYXRvclN0eWxlID0gKCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0YWJzUmVmICYmIHRhYnNSZWYuY3VycmVudCkge1xuICAgICAgICAgIGNvbnN0IHRoZUFjdGl2ZVRhYiA9IHRhYnNSZWYuY3VycmVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgJ1thcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXSdcbiAgICAgICAgICApIGFzIEhUTUxEaXZFbGVtZW50XG4gICAgICAgICAgaWYgKHRoZUFjdGl2ZVRhYikge1xuICAgICAgICAgICAgY29uc3QgbGFzdE9mZnNldExlZnQgPVxuICAgICAgICAgICAgICBpbmRpY2F0b3JSZWYuY3VycmVudD8uc3R5bGUudHJhbnNmb3JtLm1hdGNoKFxuICAgICAgICAgICAgICAgIC90cmFuc2xhdGUzZFxcKChcXGQrKXB4L1xuICAgICAgICAgICAgICApPy5bMV0gfHwgMFxuICAgICAgICAgICAgY29uc3QgeyBjbGllbnRXaWR0aCwgb2Zmc2V0TGVmdCB9ID0gdGhlQWN0aXZlVGFiXG4gICAgICAgICAgICBjb25zdCBkZWx0YSA9IE1hdGguYWJzKG9mZnNldExlZnQgLSBOdW1iZXIobGFzdE9mZnNldExlZnQpKVxuICAgICAgICAgICAgY29uc3QgdHJhbnNpdGlvbiA9XG4gICAgICAgICAgICAgIGRlbHRhIDwgQk9VTkNFX0RJU1RBTkNFXG4gICAgICAgICAgICAgICAgPyBcImFsbCB2YXIoLS1hZHVpLW1vdGlvbi1kdXJhdGlvbi1iYXNlKSB2YXIoLS1hZHVpLW1vdGlvbi1lYXNlLWJhc2UpXCJcbiAgICAgICAgICAgICAgICA6IFwiYWxsIDAuMzVzIGxpbmVhcigwLDAuMDAyLDAuMDA2LDAuMDE0LDAuMDI1IDIuNSUsMC4wNTYgMy44JSwwLjEsMC4xNDQsMC4xOTggOCUsMC40MzYgMTMuOSUsMC41NDQsMC42NDUgMTkuNiUsMC42OSwwLjczMSwwLjc2OSwwLjgwMywwLjgzNCwwLjg2MiwwLjg4OCwwLjkxMSwwLjkzMSwwLjk0OSwwLjk2NCwwLjk3NiwwLjk4NywwLjk5NiwxLjAwMywxLjAwOSwxLjAxMyA0Ny4zJSwxLjAxNSA0OS43JSwxLjAxNyA1MyUsMS4wMTYgNTYuOSUsMS4wMDYgNzIuNiUsMS4wMDIgODEuNCUsMS4wMDEgODkuNyUsMSlcIlxuXG4gICAgICAgICAgICBzZXRJbmRpY2F0b3JTdHlsZSh7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZTNkKCR7TWF0aC5mbG9vcihvZmZzZXRMZWZ0KX1weCwgMCwgMClgLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBpbml0aWFsID8gXCJcIiA6IHRyYW5zaXRpb24sXG4gICAgICAgICAgICAgIHdpZHRoOiBgJHtjbGllbnRXaWR0aH1weGAsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRJbmRpY2F0b3JTdHlsZSh7IG9wYWNpdHk6IDAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+ICh7XG4gICAgICB1cGRhdGVJbmRpY2F0b3JTdHlsZSxcbiAgICAgIGdldERvbU5vZGU6ICgpID0+IHRhYnNSZWYuY3VycmVudCxcbiAgICB9KSlcblxuICAgIGNvbnN0IGhhbmRsZVRhYnNWYWx1ZUNoYW5nZSA9ICh2YWw6IFJlYWN0LlJlYWN0VGV4dCkgPT4ge1xuICAgICAgaWYgKHZhbHVlUHJvcCA9PT0gbnVsbCkge1xuICAgICAgICBzZXRWYWx1ZSh2YWwpXG4gICAgICB9XG4gICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UodmFsKVxuICAgICAgfVxuICAgIH1cblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICB1cGRhdGVJbmRpY2F0b3JTdHlsZSgpXG4gICAgfSlcblxuICAgIGNvbnN0IGNsYXNzU2V0ID0gY2xhc3NOYW1lcyhcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGAke3ByZWZpeH0tYmFzZWAsXG4gICAgICBgJHtwcmVmaXh9LSR7Z2V0Q29tcHV0ZWRTaXplKHNpemUsIHNpemVDb250ZXh0KX1gLFxuICAgICAge1xuICAgICAgICBbYCR7cHJlZml4fS1iYW5uZXJgXTogYmFubmVyLFxuICAgICAgICBbYCR7cHJlZml4fS1iYXNlX2Rpc2FibGVkYF06IGRpc2FibGVkLFxuICAgICAgfVxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICA8VGFic0NvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgdmFsdWU9e3sgZGlzYWJsZWQsIGd1dHRlciwgaGFuZGxlVGFic1ZhbHVlQ2hhbmdlLCB2YWx1ZSB9fVxuICAgICAgPlxuICAgICAgICA8UmVzaXplT2JzZXJ2ZXJcbiAgICAgICAgICBvblJlc2l6ZT17KCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpbml0aWFsKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZUluZGljYXRvclN0eWxlKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc1NldH1cbiAgICAgICAgICAgIGRhdGEtdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgcmVmPXt0YWJzUmVmfVxuICAgICAgICAgICAgey4uLm90aGVyUHJvcHN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiByZWY9e2luZGljYXRvclJlZn0gY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWluZGljYXRvcmB9IC8+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvUmVzaXplT2JzZXJ2ZXI+XG4gICAgICA8L1RhYnNDb250ZXh0LlByb3ZpZGVyPlxuICAgIClcbiAgfVxuKVxuXG5UYWJzLlRhYiA9IFRhYlxuXG5UYWJzLmRpc3BsYXlOYW1lID0gXCJUYWJzXCJcblxuVGFicy5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiDmmK/lkKbpgJrmoI/liIbphY3lrr3luqbvvIhmbGV4OiAxO++8iVxuICAgKi9cbiAgYmFubmVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOWtkOiKgueCuVxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiDpmYTliqDnsbvlkI1cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIOm7mOiupOeahOW3sumAieS4remhuVxuICAgKi9cbiAgZGVmYXVsdFZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSksXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIHRhYiDnmoTpl7Tot50gbWFyZ2luXG4gICAqL1xuICBndXR0ZXI6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiDlgLzlj5jljJbml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICog6K6+572u5bC65a+4XG4gICAqL1xuICBzaXplOiBQcm9wVHlwZXMub25lT2YoW1wibWluaVwiLCBcInNtYWxsXCIsIFwibWVkaXVtXCIsIFwibGFyZ2VcIl0pLFxuICAvKipcbiAgICog5bey6YCJ5Lit6aG5XG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLFxufVxuXG5UYWJzLmRlZmF1bHRQcm9wcyA9IHtcbiAgYmFubmVyOiBmYWxzZSxcbiAgY2xhc3NOYW1lOiB1bmRlZmluZWQsXG4gIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBndXR0ZXI6IHVuZGVmaW5lZCxcbiAgb25DaGFuZ2U6ICgpID0+IHt9LFxuICBzaXplOiBcInNtYWxsXCIsXG4gIHZhbHVlOiBudWxsLFxufVxuXG5leHBvcnQgZGVmYXVsdCBUYWJzXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBOztBQVFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxNQUFNLEdBQUcsV0FBZjtBQXFEQSxJQUFNQyxJQUFXLEdBQUcsSUFBQUMsaUJBQUEsRUFDbEIsZ0JBYUVDLEdBYkYsRUFjSztFQUFBOztFQUFBLElBWkRDLE1BWUMsUUFaREEsTUFZQztFQUFBLElBWERDLFNBV0Ms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