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>
144 lines (143 loc) • 29.2 kB
JavaScript
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
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 _configProvider = require("../config-provider");
var _Tab = _interopRequireDefault(require("./Tab"));
var _Context = require("./Context");
require("./style");
var _excluded = ["banner", "className", "children", "defaultValue", "disabled", "gutter", "onChange", "size", "value"];
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _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(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
var prefix = "adui-channels-tabs";
var Tabs = (0, _react.forwardRef)(function (_ref, ref) {
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 _useState = (0, _react.useState)({}),
_useState2 = _slicedToArray(_useState, 2),
indicatorStyle = _useState2[0],
setIndicatorStyle = _useState2[1];
var _useState3 = (0, _react.useState)(function () {
var val;
if (valueProp !== null && valueProp !== undefined) {
val = valueProp;
} else if (defaultValue !== null && defaultValue !== undefined) {
val = defaultValue;
}
return val;
}),
_useState4 = _slicedToArray(_useState3, 2),
value = _useState4[0],
setValue = _useState4[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 updateIndicatorStyle = function updateIndicatorStyle() {
setTimeout(function () {
if (tabsRef && tabsRef.current) {
var theActiveTab = tabsRef.current.querySelector('[aria-selected="true"]');
if (theActiveTab) {
var clientWidth = theActiveTab.clientWidth,
offsetLeft = theActiveTab.offsetLeft;
setIndicatorStyle({
transform: "translateX(".concat(Math.floor(offsetLeft), "px)"),
width: clientWidth
});
} 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();
}, [value]);
var classSet = (0, _classnames["default"])(className, "".concat(prefix, "-base"), "".concat(prefix, "-").concat((0, _configProvider.getComputedSize)(size, sizeContext)), _defineProperty(_defineProperty({}, "".concat(prefix, "-banner"), banner), "".concat(prefix, "-base_disabled"), disabled));
return _react["default"].createElement(_Context.TabsContext.Provider, {
value: {
disabled: disabled,
gutter: gutter,
handleTabsValueChange: handleTabsValueChange,
value: value
}
}, _react["default"].createElement("div", _extends({
className: classSet,
"data-value": value,
ref: tabsRef
}, otherProps), _react["default"].createElement("div", {
className: "".concat(prefix, "-indicator"),
style: indicatorStyle
}), 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: "large",
value: null
};
var _default = exports["default"] = Tabs;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX2NvbmZpZ1Byb3ZpZGVyIiwiX1RhYiIsIl9Db250ZXh0IiwiX2V4Y2x1ZGVkIiwiZSIsIl9fZXNNb2R1bGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJXZWFrTWFwIiwiciIsInQiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXBwbHkiLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibCIsIml0ZXJhdG9yIiwiZiIsIm8iLCJuZXh0IiwiZG9uZSIsInB1c2giLCJpc0FycmF5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzIiwiaW5jbHVkZXMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInByZWZpeCIsIlRhYnMiLCJmb3J3YXJkUmVmIiwiX3JlZiIsInJlZiIsImJhbm5lciIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwiZGVmYXVsdFZhbHVlIiwiZGlzYWJsZWQiLCJndXR0ZXIiLCJvbkNoYW5nZSIsInNpemUiLCJ2YWx1ZVByb3AiLCJvdGhlclByb3BzIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiaW5kaWNhdG9yU3R5bGUiLCJzZXRJbmRpY2F0b3JTdHlsZSIsIl91c2VTdGF0ZTMiLCJ2YWwiLCJ1bmRlZmluZWQiLCJfdXNlU3RhdGU0Iiwic2V0VmFsdWUiLCJ0YWJzUmVmIiwidXNlUmVmIiwiX3VzZUNvbnRleHQiLCJ1c2VDb250ZXh0IiwiQ29uZmlnQ29udGV4dCIsInNpemVDb250ZXh0IiwidXBkYXRlSW5kaWNhdG9yU3R5bGUiLCJzZXRUaW1lb3V0IiwiY3VycmVudCIsInRoZUFjdGl2ZVRhYiIsInF1ZXJ5U2VsZWN0b3IiLCJjbGllbnRXaWR0aCIsIm9mZnNldExlZnQiLCJ0cmFuc2Zvcm0iLCJjb25jYXQiLCJNYXRoIiwiZmxvb3IiLCJ3aWR0aCIsIm9wYWNpdHkiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwiZ2V0RG9tTm9kZSIsImhhbmRsZVRhYnNWYWx1ZUNoYW5nZSIsInVzZUVmZmVjdCIsImNsYXNzU2V0IiwiY2xhc3NOYW1lcyIsImdldENvbXB1dGVkU2l6ZSIsImNyZWF0ZUVsZW1lbnQiLCJUYWJzQ29udGV4dCIsIlByb3ZpZGVyIiwic3R5bGUiLCJUYWIiLCJkaXNwbGF5TmFtZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImJvb2wiLCJub2RlIiwiaXNSZXF1aXJlZCIsInN0cmluZyIsIm9uZU9mVHlwZSIsIm51bWJlciIsImZ1bmMiLCJvbmVPZiIsImRlZmF1bHRQcm9wcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvY2hhbm5lbHMtdGFicy9UYWJzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgZm9yd2FyZFJlZixcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VJbXBlcmF0aXZlSGFuZGxlLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgeyBDb25maWdDb250ZXh0LCBnZXRDb21wdXRlZFNpemUgfSBmcm9tIFwiLi4vY29uZmlnLXByb3ZpZGVyXCJcbmltcG9ydCBUYWIgZnJvbSBcIi4vVGFiXCJcbmltcG9ydCB7IFRhYnNDb250ZXh0IH0gZnJvbSBcIi4vQ29udGV4dFwiXG5pbXBvcnQgXCIuL3N0eWxlXCJcblxuY29uc3QgcHJlZml4ID0gXCJhZHVpLWNoYW5uZWxzLXRhYnNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJzUHJvcHMge1xuICBba2V5OiBzdHJpbmddOiBhbnlcbiAgLyoqXG4gICAqIOaYr+WQpumAmuagj+WIhumFjeWuveW6pu+8iGZsZXg6IDE777yJXG4gICAqL1xuICBiYW5uZXI/OiBib29sZWFuXG4gIC8qKlxuICAgKiDlrZDoioLngrlcbiAgICovXG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbiAgLyoqXG4gICAqIOmZhOWKoOexu+WQjVxuICAgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiDpu5jorqTnmoTlt7LpgInkuK3poblcbiAgICovXG4gIGRlZmF1bHRWYWx1ZT86IFJlYWN0LlJlYWN0VGV4dCB8IG51bGxcbiAgLyoqXG4gICAqIOaYr+WQpuemgeeUqFxuICAgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIC8qKlxuICAgKiB0YWIg55qE6Ze06LedIG1hcmdpblxuICAgKi9cbiAgZ3V0dGVyPzogbnVtYmVyXG4gIC8qKlxuICAgKiDlgLzlj5jljJbml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DaGFuZ2U/OiAodmFsdWU6IFJlYWN0LlJlYWN0VGV4dCkgPT4gdm9pZFxuICAvKipcbiAgICog6K6+572u5bC65a+4XG4gICAqL1xuICBzaXplPzogXCJtaW5pXCIgfCBcInNtYWxsXCIgfCBcIm1lZGl1bVwiIHwgXCJsYXJnZVwiXG4gIC8qKlxuICAgKiDlt7LpgInkuK3poblcbiAgICovXG4gIHZhbHVlPzogUmVhY3QuUmVhY3RUZXh0IHwgbnVsbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJzXG4gIGV4dGVuZHMgUmVhY3QuRm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudDxcbiAgICBJVGFic1Byb3BzICYgUmVhY3QuUmVmQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD5cbiAgPiB7XG4gIFRhYjogdHlwZW9mIFRhYlxufVxuXG4vKipcbiAqIOWvvOiIqumhteetvu+8jOmhtumDqOaoquWQkeWvvOiIqueahOWGheWuue+8jOeUqOS6juWIh+aNoumhtemdouS4reWQjOS4gOWxgue6p+eahOWGheWuueOAglxuICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBUYWJzOiBJVGFicyA9IGZvcndhcmRSZWYoXG4gIChcbiAgICB7XG4gICAgICBiYW5uZXIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgZ3V0dGVyLFxuICAgICAgb25DaGFuZ2UsXG4gICAgICBzaXplLFxuICAgICAgdmFsdWU6IHZhbHVlUHJvcCxcbiAgICAgIC4uLm90aGVyUHJvcHNcbiAgICB9OiBJVGFic1Byb3BzLFxuICAgIHJlZjogYW55XG4gICkgPT4ge1xuICAgIGNvbnN0IFtpbmRpY2F0b3JTdHlsZSwgc2V0SW5kaWNhdG9yU3R5bGVdID0gdXNlU3RhdGU8UmVhY3QuQ1NTUHJvcGVydGllcz4oXG4gICAgICB7fVxuICAgIClcblxuICAgIC8qKlxuICAgICAqIOWIneWni+WMliB2YWx1ZSBzdGF0ZVxuICAgICAqIDEuIOS8mOWFiOWIpOaWrSBQcm9wIHZhbHVl77yM5aaC5p6c5a2Y5ZyoIFByb3AgdmFsdWXvvIzliJkgVGFicyDlrozlhajkuqTnlLHlpJbpg6jmjqfliLbvvIzlhoXpg6jnirbmgIHml6DmlYjvvJtcbiAgICAgKiAyLiDlho3liKTmlq0gUHJvcCBkZWZhdWx0VmFsdWXvvIzlpoLmnpzlrZjlnKjpu5jorqTlgLzvvIzliJkgVGFicyDnirbmgIHkuLrmraTpu5jorqTlgLzvvJtcbiAgICAgKiAzLiDlpoLmnpzpg73msqHmnInvvIzliJnlj5YgVGFiIGNoaWxkcmVuIOesrCAwIOmhueeahCB2YWx1Ze+8jOWwhuesrCAwIOmhueiuvue9ruS4uuW9k+WJjemhueOAglxuICAgICAqXG4gICAgICog5Lul5LiK5LiJ5Liq5Yik5pat5Y+v6IO95a2Y5Zyo5Yay56qB77yM5omA5Lul5Zyo5q2k6K+05piO5p2h5Lu25Yik5pat55qE5LyY5YWI57qn44CCXG4gICAgICovXG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgoKSA9PiB7XG4gICAgICBsZXQgdmFsXG4gICAgICBpZiAodmFsdWVQcm9wICE9PSBudWxsICYmIHZhbHVlUHJvcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhbCA9IHZhbHVlUHJvcFxuICAgICAgfSBlbHNlIGlmIChkZWZhdWx0VmFsdWUgIT09IG51bGwgJiYgZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFsID0gZGVmYXVsdFZhbHVlXG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsXG4gICAgfSlcblxuICAgIC8vIOebuOW9k+S6jueUn+WRveWRqOacnyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcbiAgICBpZiAodmFsdWVQcm9wICE9PSBudWxsICYmIHZhbHVlICE9PSB2YWx1ZVByb3ApIHtcbiAgICAgIHNldFZhbHVlKHZhbHVlUHJvcClcbiAgICB9XG5cbiAgICBjb25zdCB0YWJzUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gICAgY29uc3QgeyBzaXplOiBzaXplQ29udGV4dCB9ID0gdXNlQ29udGV4dChDb25maWdDb250ZXh0KVxuXG4gICAgY29uc3QgdXBkYXRlSW5kaWNhdG9yU3R5bGUgPSAoKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRhYnNSZWYgJiYgdGFic1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgY29uc3QgdGhlQWN0aXZlVGFiID0gdGFic1JlZi5jdXJyZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAnW2FyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCJdJ1xuICAgICAgICAgICkgYXMgSFRNTERpdkVsZW1lbnRcbiAgICAgICAgICBpZiAodGhlQWN0aXZlVGFiKSB7XG4gICAgICAgICAgICBjb25zdCB7IGNsaWVudFdpZHRoLCBvZmZzZXRMZWZ0IH0gPSB0aGVBY3RpdmVUYWJcbiAgICAgICAgICAgIHNldEluZGljYXRvclN0eWxlKHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgke01hdGguZmxvb3Iob2Zmc2V0TGVmdCl9cHgpYCxcbiAgICAgICAgICAgICAgd2lkdGg6IGNsaWVudFdpZHRoLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0SW5kaWNhdG9yU3R5bGUoeyBvcGFjaXR5OiAwIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgdXBkYXRlSW5kaWNhdG9yU3R5bGUsXG4gICAgICBnZXREb21Ob2RlOiAoKSA9PiB0YWJzUmVmLmN1cnJlbnQsXG4gICAgfSkpXG5cbiAgICBjb25zdCBoYW5kbGVUYWJzVmFsdWVDaGFuZ2UgPSAodmFsOiBSZWFjdC5SZWFjdFRleHQpID0+IHtcbiAgICAgIGlmICh2YWx1ZVByb3AgPT09IG51bGwpIHtcbiAgICAgICAgc2V0VmFsdWUodmFsKVxuICAgICAgfVxuICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgIG9uQ2hhbmdlKHZhbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgdXBkYXRlSW5kaWNhdG9yU3R5bGUoKVxuICAgIH0sIFt2YWx1ZV0pXG5cbiAgICBjb25zdCBjbGFzc1NldCA9IGNsYXNzTmFtZXMoXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBgJHtwcmVmaXh9LWJhc2VgLFxuICAgICAgYCR7cHJlZml4fS0ke2dldENvbXB1dGVkU2l6ZShzaXplLCBzaXplQ29udGV4dCl9YCxcbiAgICAgIHtcbiAgICAgICAgW2Ake3ByZWZpeH0tYmFubmVyYF06IGJhbm5lcixcbiAgICAgICAgW2Ake3ByZWZpeH0tYmFzZV9kaXNhYmxlZGBdOiBkaXNhYmxlZCxcbiAgICAgIH1cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFRhYnNDb250ZXh0LlByb3ZpZGVyXG4gICAgICAgIHZhbHVlPXt7IGRpc2FibGVkLCBndXR0ZXIsIGhhbmRsZVRhYnNWYWx1ZUNoYW5nZSwgdmFsdWUgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NTZXR9XG4gICAgICAgICAgZGF0YS12YWx1ZT17dmFsdWV9XG4gICAgICAgICAgcmVmPXt0YWJzUmVmfVxuICAgICAgICAgIHsuLi5vdGhlclByb3BzfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3ByZWZpeH0taW5kaWNhdG9yYH0gc3R5bGU9e2luZGljYXRvclN0eWxlfSAvPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1RhYnNDb250ZXh0LlByb3ZpZGVyPlxuICAgIClcbiAgfVxuKVxuXG5UYWJzLlRhYiA9IFRhYlxuXG5UYWJzLmRpc3BsYXlOYW1lID0gXCJUYWJzXCJcblxuVGFicy5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiDmmK/lkKbpgJrmoI/liIbphY3lrr3luqbvvIhmbGV4OiAxO++8iVxuICAgKi9cbiAgYmFubmVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOWtkOiKgueCuVxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiDpmYTliqDnsbvlkI1cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIOm7mOiupOeahOW3sumAieS4remhuVxuICAgKi9cbiAgZGVmYXVsdFZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSksXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIHRhYiDnmoTpl7Tot50gbWFyZ2luXG4gICAqL1xuICBndXR0ZXI6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiDlgLzlj5jljJbml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICog6K6+572u5bC65a+4XG4gICAqL1xuICBzaXplOiBQcm9wVHlwZXMub25lT2YoW1wibWluaVwiLCBcInNtYWxsXCIsIFwibWVkaXVtXCIsIFwibGFyZ2VcIl0pLFxuICAvKipcbiAgICog5bey6YCJ5Lit6aG5XG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLFxufVxuXG5UYWJzLmRlZmF1bHRQcm9wcyA9IHtcbiAgYmFubmVyOiBmYWxzZSxcbiAgY2xhc3NOYW1lOiB1bmRlZmluZWQsXG4gIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBndXR0ZXI6IHVuZGVmaW5lZCxcbiAgb25DaGFuZ2U6ICgpID0+IHt9LFxuICBzaXplOiBcImxhcmdlXCIsXG4gIHZhbHVlOiBudWxsLFxufVxuXG5leHBvcnQgZGVmYXVsdCBUYWJzXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFRQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxlQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxJQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTSxRQUFBLEdBQUFOLE9BQUE7QUFDQUEsT0FBQTtBQUFnQixJQUFBTyxTQUFBO0FBQUEsU0FBQUwsdUJBQUFNLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLHlCQUFBRixDQUFBLDZCQUFBRyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFELHdCQUFBLFlBQUFBLHlCQUFBRixDQUFBLFdBQUFBLENBQUEsR0FBQUssQ0FBQSxHQUFBRCxDQUFBLEtBQUFKLENBQUE7QUFBQSxTQUFBVCx3QkFBQVMsQ0FBQSxFQUFBSSxDQUFBLFNBQUFBLENBQUEsSUFBQUosQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsU0FBQUQsQ0FBQSxlQUFBQSxDQUFBLGdCQUFBTSxPQUFBLENBQUFOLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUssQ0FBQSxHQUFBSCx3QkFBQSxDQUFBRSxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRSxHQUFBLENBQUFQLENBQUEsVUFBQUssQ0FBQSxDQUFBRyxHQUFBLENBQUFSLENBQUEsT0FBQVMsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxj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
;