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>
255 lines (254 loc) • 45.7 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 _rcMotion = _interopRequireDefault(require("rc-motion"));
var _getScrollBarSize = _interopRequireDefault(require("rc-util/lib/getScrollBarSize"));
var _button = _interopRequireDefault(require("../button"));
var _portal = _interopRequireDefault(require("../portal"));
require("./style");
var _excluded = ["afterClose", "bodyScrollable", "children", "className", "destroyAfterClose", "escapeKeyClosable", "headerContent", "headerElement", "headerStyle", "maskClassName", "maskClosable", "maskStyle", "maskVisible", "maskMotionName", "getMotionName", "onClose", "placement", "size", "style", "visible", "zIndex"];
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 ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
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-drawer";
var Drawer = function Drawer(_ref) {
var afterClose = _ref.afterClose,
bodyScrollable = _ref.bodyScrollable,
children = _ref.children,
className = _ref.className,
destroyAfterClose = _ref.destroyAfterClose,
escapeKeyClosable = _ref.escapeKeyClosable,
headerContent = _ref.headerContent,
headerElement = _ref.headerElement,
headerStyle = _ref.headerStyle,
maskClassName = _ref.maskClassName,
maskClosable = _ref.maskClosable,
maskStyle = _ref.maskStyle,
maskVisible = _ref.maskVisible,
maskMotionName = _ref.maskMotionName,
_ref$getMotionName = _ref.getMotionName,
getMotionName = _ref$getMotionName === void 0 ? function () {
return "";
} : _ref$getMotionName,
onClose = _ref.onClose,
_ref$placement = _ref.placement,
placement = _ref$placement === void 0 ? "right" : _ref$placement,
size = _ref.size,
style = _ref.style,
visible = _ref.visible,
zIndexProp = _ref.zIndex,
otherProps = _objectWithoutProperties(_ref, _excluded);
var zIndex = zIndexProp;
var _useState = (0, _react.useState)(visible),
_useState2 = _slicedToArray(_useState, 2),
hasEverOpened = _useState2[0],
setHasEverOpened = _useState2[1];
var wrapperRef = (0, _react.useRef)(null);
var scrollbarWidth = (0, _react.useMemo)(_getScrollBarSize["default"], []);
var bodyIsOverflowing = false;
var setScrollbarPadding = function setScrollbarPadding(_ref2) {
var bodyScrollableParam = _ref2.bodyScrollable;
var _window = window,
innerWidth = _window.innerWidth;
bodyIsOverflowing = document.body.clientWidth < innerWidth;
if (bodyIsOverflowing && !document.body.style.paddingRight) {
if (scrollbarWidth !== undefined) {
document.body.style.paddingRight = "".concat(scrollbarWidth, "px");
}
}
if (bodyScrollableParam) {
document.body.classList.add("adui-scrollbar-hidden");
} else {
document.body.style.overflow = "hidden";
}
};
var resetScrollbarPadding = function resetScrollbarPadding() {
document.body.classList.remove("adui-scrollbar-hidden");
document.body.style.overflow = "";
document.body.style.paddingRight = "";
};
(0, _react.useEffect)(function () {
if (visible && wrapperRef.current) {
setScrollbarPadding({
bodyScrollable: bodyScrollable
});
}
}, [visible]);
(0, _react.useEffect)(function () {
return resetScrollbarPadding;
}, []);
if (visible && !hasEverOpened) {
setHasEverOpened(true);
}
var handleChildrenMount = function handleChildrenMount() {
if (visible) {
setScrollbarPadding({
bodyScrollable: bodyScrollable
});
}
};
var handleClose = function handleClose() {
if (onClose) {
onClose();
}
};
var handleKeyDown = function handleKeyDown(e) {
if (escapeKeyClosable && e.key === "Escape") {
e.stopPropagation();
handleClose();
}
};
var handleEnter = function handleEnter() {
if (escapeKeyClosable && wrapperRef.current) {
wrapperRef.current.focus();
}
};
var handleLeave = function handleLeave() {
if (wrapperRef.current) {
wrapperRef.current.style.display = "none";
}
resetScrollbarPadding();
if (afterClose) {
afterClose();
}
if (destroyAfterClose) {
setHasEverOpened(false);
}
};
var classSet = (0, _classnames["default"])(className, "".concat(prefix, "-").concat(placement), "".concat(prefix, "-").concat(size), "".concat(prefix, "-inner"));
var getComponent = function getComponent() {
return _react["default"].createElement("div", {
className: "".concat(prefix, "-wrapper"),
ref: wrapperRef,
style: {
display: visible ? "block" : "",
zIndex: zIndex
},
tabIndex: 0,
role: "none",
onKeyDown: handleKeyDown
}, _react["default"].createElement(_rcMotion["default"], {
motionName: maskMotionName || "".concat(prefix, "-mask"),
visible: visible && maskVisible
}, function (_ref3, ref) {
var cls = _ref3.className;
return _react["default"].createElement("div", {
ref: ref,
className: (0, _classnames["default"])("".concat(prefix, "-mask"), maskClassName, cls),
role: "none",
style: maskStyle,
onClick: function onClick() {
if (maskClosable) {
handleClose();
}
}
});
}), _react["default"].createElement(_rcMotion["default"], {
onAppearStart: handleEnter,
onEnterStart: handleEnter,
onLeaveEnd: handleLeave,
motionName: getMotionName(placement) || "".concat(prefix, "-").concat(placement),
visible: visible
}, function (_ref4, ref) {
var cls = _ref4.className;
return _react["default"].createElement("div", _extends({
ref: ref,
className: (0, _classnames["default"])(classSet, cls),
style: _objectSpread({
margin: "auto",
zIndex: 1
}, style)
}, otherProps), headerElement === null ? null : headerElement || _react["default"].createElement("div", {
className: "".concat(prefix, "-header"),
style: headerStyle
}, _react["default"].createElement(_button["default"], {
theme: "light",
size: "medium",
leftIcon: "cancel",
className: "".concat(prefix, "-header-close"),
onClick: function onClick() {
return handleClose();
}
}), _react["default"].createElement("i", {
className: "".concat(prefix, "-header-divider")
}), headerContent && _react["default"].createElement("div", {
className: "".concat(prefix, "-header-content")
}, headerContent)), _react["default"].createElement("div", {
className: "".concat(prefix, "-body")
}, children));
}));
};
if (!hasEverOpened) {
return null;
}
return _react["default"].createElement(_portal["default"], {
onChildrenMount: handleChildrenMount
}, getComponent());
};
Drawer.displayName = "Drawer";
Drawer.propTypes = {
afterClose: _propTypes["default"].func,
bodyScrollable: _propTypes["default"].bool,
children: _propTypes["default"].node,
className: _propTypes["default"].string,
destroyAfterClose: _propTypes["default"].bool,
escapeKeyClosable: _propTypes["default"].bool,
headerContent: _propTypes["default"].node,
headerElement: _propTypes["default"].node,
headerStyle: _propTypes["default"].object,
maskClassName: _propTypes["default"].string,
maskClosable: _propTypes["default"].bool,
maskStyle: _propTypes["default"].object,
maskVisible: _propTypes["default"].bool,
onClose: _propTypes["default"].func,
placement: _propTypes["default"].oneOf(["top", "right", "bottom", "left"]),
size: _propTypes["default"].oneOf(["mini", "small", "medium", "large"]),
visible: _propTypes["default"].bool,
zIndex: _propTypes["default"].any
};
Drawer.defaultProps = {
afterClose: null,
bodyScrollable: true,
children: null,
className: undefined,
destroyAfterClose: false,
escapeKeyClosable: true,
headerContent: null,
headerElement: undefined,
headerStyle: {},
maskClassName: undefined,
maskClosable: false,
maskStyle: {},
maskVisible: false,
maskMotionName: "",
getMotionName: function getMotionName() {
return "";
},
onClose: null,
placement: "right",
size: "medium",
visible: false,
zIndex: "var(--z-index-dialog)"
};
var _default = exports["default"] = Drawer;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX3JjTW90aW9uIiwiX2dldFNjcm9sbEJhclNpemUiLCJfYnV0dG9uIiwiX3BvcnRhbCIsIl9leGNsdWRlZCIsImUiLCJfX2VzTW9kdWxlIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiV2Vha01hcCIsInIiLCJ0IiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFwcGx5Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibCIsIml0ZXJhdG9yIiwiZiIsIm5leHQiLCJkb25lIiwiaXNBcnJheSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwicyIsImluY2x1ZGVzIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJwcmVmaXgiLCJEcmF3ZXIiLCJfcmVmIiwiYWZ0ZXJDbG9zZSIsImJvZHlTY3JvbGxhYmxlIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJkZXN0cm95QWZ0ZXJDbG9zZSIsImVzY2FwZUtleUNsb3NhYmxlIiwiaGVhZGVyQ29udGVudCIsImhlYWRlckVsZW1lbnQiLCJoZWFkZXJTdHlsZSIsIm1hc2tDbGFzc05hbWUiLCJtYXNrQ2xvc2FibGUiLCJtYXNrU3R5bGUiLCJtYXNrVmlzaWJsZSIsIm1hc2tNb3Rpb25OYW1lIiwiX3JlZiRnZXRNb3Rpb25OYW1lIiwiZ2V0TW90aW9uTmFtZSIsIm9uQ2xvc2UiLCJfcmVmJHBsYWNlbWVudCIsInBsYWNlbWVudCIsInNpemUiLCJzdHlsZSIsInZpc2libGUiLCJ6SW5kZXhQcm9wIiwiekluZGV4Iiwib3RoZXJQcm9wcyIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImhhc0V2ZXJPcGVuZWQiLCJzZXRIYXNFdmVyT3BlbmVkIiwid3JhcHBlclJlZiIsInVzZVJlZiIsInNjcm9sbGJhcldpZHRoIiwidXNlTWVtbyIsImdldFNjcm9sbEJhclNpemUiLCJib2R5SXNPdmVyZmxvd2luZyIsInNldFNjcm9sbGJhclBhZGRpbmciLCJfcmVmMiIsImJvZHlTY3JvbGxhYmxlUGFyYW0iLCJfd2luZG93Iiwid2luZG93IiwiaW5uZXJXaWR0aCIsImRvY3VtZW50IiwiYm9keSIsImNsaWVudFdpZHRoIiwicGFkZGluZ1JpZ2h0IiwidW5kZWZpbmVkIiwiY29uY2F0IiwiY2xhc3NMaXN0IiwiYWRkIiwib3ZlcmZsb3ciLCJyZXNldFNjcm9sbGJhclBhZGRpbmciLCJyZW1vdmUiLCJ1c2VFZmZlY3QiLCJjdXJyZW50IiwiaGFuZGxlQ2hpbGRyZW5Nb3VudCIsImhhbmRsZUNsb3NlIiwiaGFuZGxlS2V5RG93biIsImtleSIsInN0b3BQcm9wYWdhdGlvbiIsImhhbmRsZUVudGVyIiwiZm9jdXMiLCJoYW5kbGVMZWF2ZSIsImRpc3BsYXkiLCJjbGFzc1NldCIsImNsYXNzTmFtZXMiLCJnZXRDb21wb25lbnQiLCJjcmVhdGVFbGVtZW50IiwicmVmIiwidGFiSW5kZXgiLCJyb2xlIiwib25LZXlEb3duIiwibW90aW9uTmFtZSIsIl9yZWYzIiwiY2xzIiwib25DbGljayIsIm9uQXBwZWFyU3RhcnQiLCJvbkVudGVyU3RhcnQiLCJvbkxlYXZlRW5kIiwiX3JlZjQiLCJtYXJnaW4iLCJ0aGVtZSIsImxlZnRJY29uIiwib25DaGlsZHJlbk1vdW50IiwiZGlzcGxheU5hbWUiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJmdW5jIiwiYm9vbCIsIm5vZGUiLCJzdHJpbmciLCJvYmplY3QiLCJvbmVPZiIsImFueSIsImRlZmF1bHRQcm9wcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvZHJhd2VyL0RyYXdlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcbmltcG9ydCBDU1NNb3Rpb24gZnJvbSBcInJjLW1vdGlvblwiXG5pbXBvcnQgZ2V0U2Nyb2xsQmFyU2l6ZSBmcm9tIFwicmMtdXRpbC9saWIvZ2V0U2Nyb2xsQmFyU2l6ZVwiXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi9idXR0b25cIlxuaW1wb3J0IFBvcnRhbCBmcm9tIFwiLi4vcG9ydGFsXCJcbmltcG9ydCBcIi4vc3R5bGVcIlxuXG5jb25zdCBwcmVmaXggPSBcImFkdWktZHJhd2VyXCJcblxudHlwZSBUUGxhY2VtZW50ID0gXCJ0b3BcIiB8IFwicmlnaHRcIiB8IFwiYm90dG9tXCIgfCBcImxlZnRcIlxuXG5leHBvcnQgaW50ZXJmYWNlIElEcmF3ZXJQcm9wcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICAvKipcbiAgICog5YWz6Zet5ZCO77yIdHJhbnNpdGlvbiDnu5PmnZ/lkI7vvInnmoQgaGFuZGxlclxuICAgKi9cbiAgYWZ0ZXJDbG9zZT86ICgoKSA9PiB2b2lkKSB8IG51bGxcbiAgLyoqXG4gICAqIHZpc2libGUg5pe26aG16Z2i6IO95ZCm5rua5YqoXG4gICAqL1xuICBib2R5U2Nyb2xsYWJsZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOWtkOiKgueCuVxuICAgKi9cbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbiAgLyoqXG4gICAqIOmZhOWKoOexu+WQje+8jOazqOaEjyBEcmF3ZXIg5omA5pyJ55qE5bGe5oCn5Lya6ZmE5Yqg5Yiw5YaF6YOo55qE5YaF5a655YWD57Sg5LiK77yM6ICM5LiN5piv5YyF5ZCrIG1hc2sg55qE5pyA5aSW5bGC5YWD57SgXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIOaYr+WQpuavj+asoSB2aXNpYmxlOiBmYWxzZSDpg73plIDmr4EgZG9tXG4gICAqL1xuICBkZXN0cm95QWZ0ZXJDbG9zZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOaYr+WQpuaUr+aMgSBFU0Mg5YWz6ZetXG4gICAqL1xuICBlc2NhcGVLZXlDbG9zYWJsZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIGhlYWRlciDmoIfpopjmoI/lhoXpg6jnmoTlhoXlrrlcbiAgICovXG4gIGhlYWRlckNvbnRlbnQ/OiBSZWFjdC5SZWFjdE5vZGVcbiAgLyoqXG4gICAqIOWujOWFqOiHquWumuS5iSBoZWFkZXIg55qE5YaF5a65XG4gICAqL1xuICBoZWFkZXJFbGVtZW50PzogUmVhY3QuUmVhY3ROb2RlXG4gIC8qKlxuICAgKiDorr7nva4gaGVhZGVyIOagt+W8j1xuICAgKi9cbiAgaGVhZGVyU3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIC8qKlxuICAgKiBtYXNrIOeahOexu+WQjVxuICAgKi9cbiAgbWFza0NsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICog54K55Ye7IG1hc2sg5piv5ZCm6Kem5Y+RIGNhbmNlbCDkuovku7ZcbiAgICovXG4gIG1hc2tDbG9zYWJsZT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIG1hc2sg55qE5qC35byPXG4gICAqL1xuICBtYXNrU3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIC8qKlxuICAgKiDmmK/lkKbmmL7npLogbWFza1xuICAgKi9cbiAgbWFza1Zpc2libGU/OiBib29sZWFuXG4gIC8qKlxuICAgKiDorr7nva4gbWFzayDnmoQgQ1NTIE1vdGlvbiBuYW1lXG4gICAqL1xuICBtYXNrTW90aW9uTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICog6K6+572uIGRpYWxvZyDnmoQgQ1NTIE1vdGlvbiBuYW1lXG4gICAqL1xuICBnZXRNb3Rpb25OYW1lPzogKHBsYWNlbWVudDogVFBsYWNlbWVudCkgPT4gc3RyaW5nXG4gIC8qKlxuICAgKiDlhbPpl63ml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DbG9zZT86ICgoKSA9PiB2b2lkKSB8IG51bGxcbiAgLyoqXG4gICAqIOS9jee9rlxuICAgKi9cbiAgcGxhY2VtZW50PzogVFBsYWNlbWVudFxuICAvKipcbiAgICog5bC65a+4XG4gICAqL1xuICBzaXplPzogXCJtaW5pXCIgfCBcInNtYWxsXCIgfCBcIm1lZGl1bVwiIHwgXCJsYXJnZVwiXG4gIC8qKlxuICAgKiDlpJbpg6jmjqfliLbvvJrmmK/lkKbmmL7npLpcbiAgICovXG4gIHZpc2libGU/OiBib29sZWFuXG4gIC8qKlxuICAgKiDorr7nva4gei1pbmRleCDlsYLnuqfvvIzpu5jorqTkuLogdmFyKC0tei1pbmRleC1kaWFsb2cpXG4gICAqL1xuICB6SW5kZXg/OiBSZWFjdC5SZWFjdE5vZGVcbn1cblxuLyoqXG4gKiDmta7lsYLopobnm5blnKjpobXpnaLlhoXlrrnkuIrvvIzlubblm7rlrprlnKjlsY/luZXnmoTovrnnvJjjgIJcbiAqL1xuY29uc3QgRHJhd2VyOiBSZWFjdC5GQzxJRHJhd2VyUHJvcHM+ID0gKHtcbiAgYWZ0ZXJDbG9zZSxcbiAgYm9keVNjcm9sbGFibGUsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGRlc3Ryb3lBZnRlckNsb3NlLFxuICBlc2NhcGVLZXlDbG9zYWJsZSxcbiAgaGVhZGVyQ29udGVudCxcbiAgaGVhZGVyRWxlbWVudCxcbiAgaGVhZGVyU3R5bGUsXG4gIG1hc2tDbGFzc05hbWUsXG4gIG1hc2tDbG9zYWJsZSxcbiAgbWFza1N0eWxlLFxuICBtYXNrVmlzaWJsZSxcbiAgbWFza01vdGlvbk5hbWUsXG4gIGdldE1vdGlvbk5hbWUgPSAoKSA9PiBcIlwiLFxuICBvbkNsb3NlLFxuICBwbGFjZW1lbnQgPSBcInJpZ2h0XCIsXG4gIHNpemUsXG4gIHN0eWxlLFxuICB2aXNpYmxlLFxuICB6SW5kZXg6IHpJbmRleFByb3AsXG4gIC4uLm90aGVyUHJvcHNcbn06IElEcmF3ZXJQcm9wcykgPT4ge1xuICBjb25zdCB6SW5kZXggPSB6SW5kZXhQcm9wIGFzIFJlYWN0LkNTU1Byb3BlcnRpZXNbXCJ6SW5kZXhcIl1cbiAgY29uc3QgW2hhc0V2ZXJPcGVuZWQsIHNldEhhc0V2ZXJPcGVuZWRdID0gdXNlU3RhdGUodmlzaWJsZSlcbiAgY29uc3Qgd3JhcHBlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICBjb25zdCBzY3JvbGxiYXJXaWR0aCA9IHVzZU1lbW8oZ2V0U2Nyb2xsQmFyU2l6ZSwgW10pXG4gIGxldCBib2R5SXNPdmVyZmxvd2luZyA9IGZhbHNlXG5cbiAgY29uc3Qgc2V0U2Nyb2xsYmFyUGFkZGluZyA9ICh7XG4gICAgYm9keVNjcm9sbGFibGU6IGJvZHlTY3JvbGxhYmxlUGFyYW0sXG4gIH06IHtcbiAgICBib2R5U2Nyb2xsYWJsZT86IGJvb2xlYW5cbiAgfSkgPT4ge1xuICAgIGNvbnN0IHsgaW5uZXJXaWR0aCB9ID0gd2luZG93XG4gICAgYm9keUlzT3ZlcmZsb3dpbmcgPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDwgaW5uZXJXaWR0aFxuICAgIGlmIChib2R5SXNPdmVyZmxvd2luZyAmJiAhZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQpIHtcbiAgICAgIGlmIChzY3JvbGxiYXJXaWR0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0ID0gYCR7c2Nyb2xsYmFyV2lkdGh9cHhgXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGJvZHlTY3JvbGxhYmxlUGFyYW0pIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcImFkdWktc2Nyb2xsYmFyLWhpZGRlblwiKVxuICAgIH0gZWxzZSB7XG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIlxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlc2V0U2Nyb2xsYmFyUGFkZGluZyA9ICgpID0+IHtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJhZHVpLXNjcm9sbGJhci1oaWRkZW5cIilcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gXCJcIlxuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0ID0gXCJcIlxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodmlzaWJsZSAmJiB3cmFwcGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIHNldFNjcm9sbGJhclBhZGRpbmcoeyBib2R5U2Nyb2xsYWJsZSB9KVxuICAgIH1cbiAgfSwgW3Zpc2libGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiByZXNldFNjcm9sbGJhclBhZGRpbmcsIFtdKVxuXG4gIC8vIOebuOW9k+S6jueUn+WRveWRqOacnyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcbiAgaWYgKHZpc2libGUgJiYgIWhhc0V2ZXJPcGVuZWQpIHtcbiAgICBzZXRIYXNFdmVyT3BlbmVkKHRydWUpXG4gIH1cblxuICBjb25zdCBoYW5kbGVDaGlsZHJlbk1vdW50ID0gKCkgPT4ge1xuICAgIGlmICh2aXNpYmxlKSB7XG4gICAgICBzZXRTY3JvbGxiYXJQYWRkaW5nKHsgYm9keVNjcm9sbGFibGUgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHtcbiAgICBpZiAob25DbG9zZSkge1xuICAgICAgb25DbG9zZSgpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGVzY2FwZUtleUNsb3NhYmxlICYmIGUua2V5ID09PSBcIkVzY2FwZVwiKSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRW50ZXIgPSAoKSA9PiB7XG4gICAgaWYgKGVzY2FwZUtleUNsb3NhYmxlICYmIHdyYXBwZXJSZWYuY3VycmVudCkge1xuICAgICAgd3JhcHBlclJlZi5jdXJyZW50LmZvY3VzKClcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVMZWF2ZSA9ICgpID0+IHtcbiAgICBpZiAod3JhcHBlclJlZi5jdXJyZW50KSB7XG4gICAgICB3cmFwcGVyUmVmLmN1cnJlbnQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiXG4gICAgfVxuICAgIHJlc2V0U2Nyb2xsYmFyUGFkZGluZygpXG5cbiAgICBpZiAoYWZ0ZXJDbG9zZSkge1xuICAgICAgYWZ0ZXJDbG9zZSgpXG4gICAgfVxuXG4gICAgaWYgKGRlc3Ryb3lBZnRlckNsb3NlKSB7XG4gICAgICBzZXRIYXNFdmVyT3BlbmVkKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNsYXNzU2V0ID0gY2xhc3NOYW1lcyhcbiAgICBjbGFzc05hbWUsXG4gICAgYCR7cHJlZml4fS0ke3BsYWNlbWVudH1gLFxuICAgIGAke3ByZWZpeH0tJHtzaXplfWAsXG4gICAgYCR7cHJlZml4fS1pbm5lcmBcbiAgKVxuXG4gIGNvbnN0IGdldENvbXBvbmVudCA9ICgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2Ake3ByZWZpeH0td3JhcHBlcmB9XG4gICAgICAgIHJlZj17d3JhcHBlclJlZn1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBkaXNwbGF5OiB2aXNpYmxlID8gXCJibG9ja1wiIDogXCJcIixcbiAgICAgICAgICB6SW5kZXgsXG4gICAgICAgIH19XG4gICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgID5cbiAgICAgICAgPENTU01vdGlvblxuICAgICAgICAgIG1vdGlvbk5hbWU9e21hc2tNb3Rpb25OYW1lIHx8IGAke3ByZWZpeH0tbWFza2B9XG4gICAgICAgICAgdmlzaWJsZT17dmlzaWJsZSAmJiBtYXNrVmlzaWJsZX1cbiAgICAgICAgPlxuICAgICAgICAgIHsoeyBjbGFzc05hbWU6IGNscyB9LCByZWYpID0+IChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhgJHtwcmVmaXh9LW1hc2tgLCBtYXNrQ2xhc3NOYW1lLCBjbHMpfVxuICAgICAgICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgICAgICAgIHN0eWxlPXttYXNrU3R5bGV9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobWFza0Nsb3NhYmxlKSB7XG4gICAgICAgICAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0NTU01vdGlvbj5cbiAgICAgICAgPENTU01vdGlvblxuICAgICAgICAgIG9uQXBwZWFyU3RhcnQ9e2hhbmRsZUVudGVyfVxuICAgICAgICAgIG9uRW50ZXJTdGFydD17aGFuZGxlRW50ZXJ9XG4gICAgICAgICAgb25MZWF2ZUVuZD17aGFuZGxlTGVhdmV9XG4gICAgICAgICAgbW90aW9uTmFtZT17Z2V0TW90aW9uTmFtZShwbGFjZW1lbnQpIHx8IGAke3ByZWZpeH0tJHtwbGFjZW1lbnR9YH1cbiAgICAgICAgICB2aXNpYmxlPXt2aXNpYmxlfVxuICAgICAgICA+XG4gICAgICAgICAgeyh7IGNsYXNzTmFtZTogY2xzIH0sIHJlZikgPT4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzU2V0LCBjbHMpfVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIG1hcmdpbjogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgekluZGV4OiAxLFxuICAgICAgICAgICAgICAgIC4uLnN0eWxlLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB7Li4ub3RoZXJQcm9wc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2hlYWRlckVsZW1lbnQgPT09IG51bGxcbiAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICA6IGhlYWRlckVsZW1lbnQgfHwgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7cHJlZml4fS1oZWFkZXJgfSBzdHlsZT17aGVhZGVyU3R5bGV9PlxuICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lPVwibGlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0SWNvbj1cImNhbmNlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3ByZWZpeH0taGVhZGVyLWNsb3NlYH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUNsb3NlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9e2Ake3ByZWZpeH0taGVhZGVyLWRpdmlkZXJgfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXJDb250ZW50ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWhlYWRlci1jb250ZW50YH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXJDb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7cHJlZml4fS1ib2R5YH0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9DU1NNb3Rpb24+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cblxuICBpZiAoIWhhc0V2ZXJPcGVuZWQpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIDxQb3J0YWwgb25DaGlsZHJlbk1vdW50PXtoYW5kbGVDaGlsZHJlbk1vdW50fT57Z2V0Q29tcG9uZW50KCl9PC9Qb3J0YWw+XG59XG5cbkRyYXdlci5kaXNwbGF5TmFtZSA9IFwiRHJhd2VyXCJcblxuRHJhd2VyLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIOWFs+mXreWQju+8iHRyYW5zaXRpb24g57uT5p2f5ZCO77yJ55qEIGhhbmRsZXJcbiAgICovXG4gIGFmdGVyQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogdmlzaWJsZSDml7bpobXpnaLog73lkKbmu5rliqhcbiAgICovXG4gIGJvZHlTY3JvbGxhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOWtkOiKgueCuVxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICog6ZmE5Yqg57G75ZCN77yM5rOo5oSPIERpYWxvZyDmiYDmnInnmoTlsZ7mgKfkvJrpmYTliqDliLDlhoXpg6jnmoTlhoXlrrnlhYPntKDkuIrvvIzogIzkuI3mmK/ljIXlkKsgbWFzayDnmoTmnIDlpJblsYLlhYPntKBcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIOaYr+WQpuavj+asoSB2aXNpYmxlOiBmYWxzZSDpg73plIDmr4EgZG9tXG4gICAqL1xuICBkZXN0cm95QWZ0ZXJDbG9zZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDmmK/lkKbmlK/mjIEgRVNDIOWFs+mXrVxuICAgKi9cbiAgZXNjYXBlS2V5Q2xvc2FibGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogaGVhZGVyIOagh+mimOagj+WGhemDqOeahOWGheWuuVxuICAgKi9cbiAgaGVhZGVyQ29udGVudDogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiDlrozlhajoh6rlrprkuYkgaGVhZGVyIOeahOWGheWuuVxuICAgKi9cbiAgaGVhZGVyRWxlbWVudDogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiDorr7nva4gaGVhZGVyIOagt+W8j1xuICAgKi9cbiAgaGVhZGVyU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBtYXNrIOeahOexu+WQjVxuICAgKi9cbiAgbWFza0NsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIOeCueWHuyBtYXNrIOaYr+WQpuinpuWPkSBjYW5jZWwg5LqL5Lu2XG4gICAqL1xuICBtYXNrQ2xvc2FibGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogbWFzayDnmoTmoLflvI9cbiAgICovXG4gIG1hc2tTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIOaYr+WQpuaYvuekuiBtYXNrXG4gICAqL1xuICBtYXNrVmlzaWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDlhbPpl63ml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiDkvY3nva5cbiAgICovXG4gIHBsYWNlbWVudDogUHJvcFR5cGVzLm9uZU9mKFtcInRvcFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwibGVmdFwiXSksXG4gIC8qKlxuICAgKiDlsLrlr7hcbiAgICovXG4gIHNpemU6IFByb3BUeXBlcy5vbmVPZihbXCJtaW5pXCIsIFwic21hbGxcIiwgXCJtZWRpdW1cIiwgXCJsYXJnZVwiXSksXG4gIC8qKlxuICAgKiDlpJbpg6jmjqfliLbvvJrmmK/lkKbmmL7npLpcbiAgICovXG4gIHZpc2libGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICog6K6+572uIHotaW5kZXgg5bGC57qn77yM6buY6K6k5Li6IHZhcigtLXotaW5kZXgtZGlhbG9nKVxuICAgKi9cbiAgekluZGV4OiBQcm9wVHlwZXMuYW55LFxufVxuXG5EcmF3ZXIuZGVmYXVsdFByb3BzID0ge1xuICBhZnRlckNsb3NlOiBudWxsLFxuICBib2R5U2Nyb2xsYWJsZTogdHJ1ZSxcbiAgY2hpbGRyZW46IG51bGwsXG4gIGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICBkZXN0cm95QWZ0ZXJDbG9zZTogZmFsc2UsXG4gIGVzY2FwZUtleUNsb3NhYmxlOiB0cnVlLFxuICBoZWFkZXJDb250ZW50OiBudWxsLFxuICBoZWFkZXJFbGVtZW50OiB1bmRlZmluZWQsXG4gIGhlYWRlclN0eWxlOiB7fSxcbiAgbWFza0NsYXNzTmFtZTogdW5kZWZpbmVkLFxuICBtYXNrQ2xvc2FibGU6IGZhbHNlLFxuICBtYXNrU3R5bGU6IHt9LFxuICBtYXNrVmlzaWJsZTogZmFsc2UsXG4gIG1hc2tNb3Rpb25OYW1lOiBcIlwiLFxuICBnZXRNb3Rpb25OYW1lOiAoKSA9PiBcIlwiLFxuICBvbkNsb3NlOiBudWxsLFxuICBwbGFjZW1lbnQ6IFwicmlnaHRcIixcbiAgc2l6ZTogXCJtZWRpdW1cIixcbiAgdmlzaWJsZTogZmFsc2UsXG4gIHpJbmRleDogXCJ2YXIoLS16LWluZGV4LWRpYWxvZylcIixcbn1cblxuZXhwb3J0IGRlZmF1bHQgRHJhd2VyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxTQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxpQkFBQSxHQUFBSCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU0sT0FBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBTCxzQkFBQSxDQUFBRixPQUFBO0FBQ0FBLE9BQUE7QUFBZ0IsSUFBQVEsU0FBQTtBQUFBLFNBQUFOLHVCQUFBTyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsZ0JBQUFBLENBQUE7QUFBQSxTQUFBRSx5QkFBQUYsQ0FBQSw2QkFBQUcsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRCx3QkFBQSxZQUFBQSx5QkFBQUYsQ0FBQSxXQUFBQSxDQUFBLEdBQUFLLENBQUEs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
;