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>
227 lines (190 loc) • 28 kB
JavaScript
;
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 _getScrollBarSize = _interopRequireDefault(require("rc-util/lib/getScrollBarSize"));
var _icon = _interopRequireDefault(require("../icon"));
require("./style");
var _excluded = ["className", "disabled", "hoverOperations", "icon", "onIconClick", "onUpload", "previewDisabled", "progress", "src"],
_excluded2 = ["text"];
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-upload-img";
var Img = (0, _react.forwardRef)(function (_ref, ref) {
var _classNames;
var className = _ref.className,
disabled = _ref.disabled,
hoverOperations = _ref.hoverOperations,
icon = _ref.icon,
onIconClick = _ref.onIconClick,
onUpload = _ref.onUpload,
previewDisabled = _ref.previewDisabled,
progress = _ref.progress,
src = _ref.src,
otherProps = _objectWithoutProperties(_ref, _excluded);
var _useState = (0, _react.useState)(false),
_useState2 = _slicedToArray(_useState, 2),
previewing = _useState2[0],
setPreviewing = _useState2[1];
var uploadElementRef = (0, _react.useRef)(null);
var scrollbarWidth = (0, _react.useMemo)(_getScrollBarSize["default"], []);
var hasOperation = hoverOperations === null || hoverOperations === void 0 ? void 0 : hoverOperations.length;
var classSet = (0, _classnames["default"])(className, "".concat(prefix), (_classNames = {}, _defineProperty(_classNames, "".concat(prefix, "-hasOperation"), hasOperation), _defineProperty(_classNames, "".concat(prefix, "-uploaded"), src), _defineProperty(_classNames, "".concat(prefix, "-progressing"), progress !== null), _defineProperty(_classNames, "".concat(prefix, "-noIcon"), icon === null), _defineProperty(_classNames, "".concat(prefix, "-disabled"), disabled), _classNames));
var handleClick = function handleClick() {
if (!src && onUpload && !disabled) {
onUpload();
}
};
var resetScrollbarPadding = function resetScrollbarPadding() {
document.body.style.overflow = "";
document.body.style.paddingRight = "";
};
var setScrollbarPadding = function setScrollbarPadding() {
var _window = window,
innerWidth = _window.innerWidth;
var bodyIsOverflowing = document.body.clientWidth < innerWidth;
if (bodyIsOverflowing && !document.body.style.paddingRight && scrollbarWidth !== undefined) {
document.body.style.paddingRight = "".concat(scrollbarWidth, "px");
}
document.body.style.overflow = "hidden";
};
var handleCancelPreview = function handleCancelPreview() {
setPreviewing(false);
resetScrollbarPadding();
};
var handleKeyDown = function handleKeyDown(_ref2) {
var key = _ref2.key;
if (key === "Escape") {
handleCancelPreview();
window.removeEventListener("keydown", handleKeyDown);
}
};
var handlePreview = function handlePreview() {
setPreviewing(true);
setScrollbarPadding();
window.addEventListener("keydown", handleKeyDown);
};
(0, _react.useImperativeHandle)(ref, function () {
return {
uploadElement: uploadElementRef.current,
handlePreview: handlePreview,
handleCancelPreview: handleCancelPreview
};
});
return _react["default"].createElement("div", _extends({
role: "none",
className: classSet
}, otherProps), _react["default"].createElement("div", {
className: "".concat(prefix, "-uploaded-inner")
}, _react["default"].createElement("img", {
className: "".concat(prefix, "-file"),
src: src,
alt: "img"
}), _react["default"].createElement("div", {
role: "none",
className: "".concat(prefix, "-cover"),
onClick: function onClick() {
if (!previewDisabled) {
handlePreview();
}
}
}), hoverOperations !== null && hoverOperations !== void 0 && hoverOperations.length ? _react["default"].createElement("div", {
className: "".concat(prefix, "-operations")
}, hoverOperations.map(function (_ref3, i) {
var text = _ref3.text,
others = _objectWithoutProperties(_ref3, _excluded2);
return _react["default"].createElement(_react["default"].Fragment, {
key: i
}, _react["default"].createElement("div", _extends({
className: "".concat(prefix, "-operations-item")
}, others), text), i !== hoverOperations.length - 1 && _react["default"].createElement("i", {
className: "".concat(prefix, "-operations-divider")
}));
})) : _react["default"].createElement("div", {
className: "".concat(prefix, "-remove")
}, _react["default"].createElement(_icon["default"], {
icon: icon || "delete-outlined",
onClick: function onClick(e) {
if (onIconClick) {
onIconClick(e);
}
}
}))), _react["default"].createElement("div", {
className: "".concat(prefix, "-unuploaded-inner")
}, _react["default"].createElement("div", {
role: "none",
className: "".concat(prefix, "-upload-element"),
onClick: handleClick,
ref: uploadElementRef
}, _react["default"].createElement(_icon["default"], {
icon: "add",
className: "".concat(prefix, "-icon")
})), _react["default"].createElement("div", {
className: "".concat(prefix, "-progress")
}, _react["default"].createElement("i", {
style: {
width: "".concat(progress, "%")
}
}))), _react["default"].createElement("div", {
className: (0, _classnames["default"])("".concat(prefix, "-preview"), _defineProperty({}, "".concat(prefix, "-preview-show"), previewing)),
onClick: handleCancelPreview,
role: "none"
}, _react["default"].createElement("div", {
className: "".concat(prefix, "-preview-inner")
}, _react["default"].createElement("img", {
alt: "img",
className: "".concat(prefix, "-preview-file"),
src: src,
onClick: function onClick(e) {
return e.stopPropagation();
},
role: "none"
}), _react["default"].createElement(_icon["default"], {
size: 36,
icon: "cancel",
color: "#fff",
interactive: true
}))));
});
Img.displayName = "Img";
Img.propTypes = {
className: _propTypes["default"].string,
disabled: _propTypes["default"].bool,
hoverOperations: _propTypes["default"].any,
icon: _propTypes["default"].any,
onIconClick: _propTypes["default"].func,
onUpload: _propTypes["default"].func,
previewDisabled: _propTypes["default"].bool,
progress: _propTypes["default"].number,
src: _propTypes["default"].string
};
Img.defaultProps = {
className: "",
disabled: false,
hoverOperations: undefined,
icon: "delete-outlined",
onIconClick: function onIconClick() {},
onUpload: function onUpload() {},
previewDisabled: false,
progress: null,
src: ""
};
var _default = Img;
exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcmVmaXgiLCJJbWciLCJmb3J3YXJkUmVmIiwicmVmIiwiY2xhc3NOYW1lIiwiZGlzYWJsZWQiLCJob3Zlck9wZXJhdGlvbnMiLCJpY29uIiwib25JY29uQ2xpY2siLCJvblVwbG9hZCIsInByZXZpZXdEaXNhYmxlZCIsInByb2dyZXNzIiwic3JjIiwib3RoZXJQcm9wcyIsInVzZVN0YXRlIiwicHJldmlld2luZyIsInNldFByZXZpZXdpbmciLCJ1cGxvYWRFbGVtZW50UmVmIiwidXNlUmVmIiwic2Nyb2xsYmFyV2lkdGgiLCJ1c2VNZW1vIiwiZ2V0U2Nyb2xsQmFyU2l6ZSIsImhhc09wZXJhdGlvbiIsImxlbmd0aCIsImNsYXNzU2V0IiwiY2xhc3NOYW1lcyIsImhhbmRsZUNsaWNrIiwicmVzZXRTY3JvbGxiYXJQYWRkaW5nIiwiZG9jdW1lbnQiLCJib2R5Iiwic3R5bGUiLCJvdmVyZmxvdyIsInBhZGRpbmdSaWdodCIsInNldFNjcm9sbGJhclBhZGRpbmciLCJ3aW5kb3ciLCJpbm5lcldpZHRoIiwiYm9keUlzT3ZlcmZsb3dpbmciLCJjbGllbnRXaWR0aCIsInVuZGVmaW5lZCIsImhhbmRsZUNhbmNlbFByZXZpZXciLCJoYW5kbGVLZXlEb3duIiwia2V5IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVByZXZpZXciLCJhZGRFdmVudExpc3RlbmVyIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsInVwbG9hZEVsZW1lbnQiLCJjdXJyZW50IiwibWFwIiwiaSIsInRleHQiLCJvdGhlcnMiLCJlIiwid2lkdGgiLCJzdG9wUHJvcGFnYXRpb24iLCJkaXNwbGF5TmFtZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsImJvb2wiLCJhbnkiLCJmdW5jIiwibnVtYmVyIiwiZGVmYXVsdFByb3BzIl0sInNvdXJjZXMiOlsiLi4vLi4vY29tcG9uZW50cy91cGxvYWQvSW1nLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbmltcG9ydCBSZWFjdCwge1xuICBmb3J3YXJkUmVmLFxuICB1c2VJbXBlcmF0aXZlSGFuZGxlLFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgZ2V0U2Nyb2xsQmFyU2l6ZSBmcm9tIFwicmMtdXRpbC9saWIvZ2V0U2Nyb2xsQmFyU2l6ZVwiXG5pbXBvcnQgSWNvbiwgeyBJY29uTmFtZXMgfSBmcm9tIFwiLi4vaWNvblwiXG5pbXBvcnQgXCIuL3N0eWxlXCJcblxuY29uc3QgcHJlZml4ID0gXCJhZHVpLXVwbG9hZC1pbWdcIlxuXG5leHBvcnQgaW50ZXJmYWNlIElJbWdQcm9wcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICAvKipcbiAgICog6ZmE5Yqg57G75ZCNXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIOm8oOaghyBob3ZlciDml7bnmoTmk43kvZzmmL7npLpcbiAgICovXG4gIGhvdmVyT3BlcmF0aW9ucz86IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnlcbiAgICB0ZXh0OiBzdHJpbmdcbiAgICBvbkNsaWNrOiAoZTogUmVhY3QuTW91c2VFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHZvaWRcbiAgfVtdXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICAvKipcbiAgICog5oyH5a6a5Y+z5LiK6KeS5Zu+5qCHXG4gICAqL1xuICBpY29uPzogSWNvbk5hbWVzIHwgbnVsbFxuICAvKipcbiAgICog5Y+z5LiK6KeS5Zu+5qCH54K55Ye75pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uSWNvbkNsaWNrPzogKGU6IFJlYWN0Lk1vdXNlRXZlbnQ8U1ZHU1ZHRWxlbWVudD4pID0+IHZvaWRcbiAgLyoqXG4gICAqIOinpuWPkeS4iuS8oFxuICAgKi9cbiAgb25VcGxvYWQ/OiAoKSA9PiB2b2lkXG4gIC8qKlxuICAgKiDnpoHmraLngrnlh7vlm77niYfpooTop4hcbiAgICovXG4gIHByZXZpZXdEaXNhYmxlZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOi/m+W6pu+8jOS8oOWFpSBudWxsIOaXtuihqOekuuS4jeaYvuekuui/m+W6puadoVxuICAgKi9cbiAgcHJvZ3Jlc3M/OiBudW1iZXIgfCBudWxsXG4gIC8qKlxuICAgKiDkuIrkvKDmiJDlip/lkI7nmoTlm77niYflnLDlnYBcbiAgICovXG4gIHNyYz86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElJbWdTdGF0ZSB7XG4gIHByZXZpZXdpbmc6IGJvb2xlYW5cbn1cblxuLyoqXG4gKiDml4vovazliqDovb3nlKjkuo7lkYrnn6XnlKjmiLfkv6Hmga/lhoXlrrnnmoTliqDovb3nirbmgIHvvIzpgJrluLjmmK/ljbPml7bjgIHnn63ml7bnmoTjgIJcbiAqL1xuY29uc3QgSW1nOiBSZWFjdC5Gb3J3YXJkUmVmRXhvdGljQ29tcG9uZW50PFxuICBJSW1nUHJvcHMgJiBSZWFjdC5SZWZBdHRyaWJ1dGVzPGFueT5cbj4gPSBmb3J3YXJkUmVmKFxuICAoXG4gICAge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBob3Zlck9wZXJhdGlvbnMsXG4gICAgICBpY29uLFxuICAgICAgb25JY29uQ2xpY2ssXG4gICAgICBvblVwbG9hZCxcbiAgICAgIHByZXZpZXdEaXNhYmxlZCxcbiAgICAgIHByb2dyZXNzLFxuICAgICAgc3JjLFxuICAgICAgLi4ub3RoZXJQcm9wc1xuICAgIH06IElJbWdQcm9wcyxcbiAgICByZWZcbiAgKSA9PiB7XG4gICAgY29uc3QgW3ByZXZpZXdpbmcsIHNldFByZXZpZXdpbmddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgICBjb25zdCB1cGxvYWRFbGVtZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSB1c2VNZW1vKGdldFNjcm9sbEJhclNpemUsIFtdKVxuXG4gICAgY29uc3QgaGFzT3BlcmF0aW9uID0gaG92ZXJPcGVyYXRpb25zPy5sZW5ndGhcblxuICAgIGNvbnN0IGNsYXNzU2V0ID0gY2xhc3NOYW1lcyhjbGFzc05hbWUsIGAke3ByZWZpeH1gLCB7XG4gICAgICBbYCR7cHJlZml4fS1oYXNPcGVyYXRpb25gXTogaGFzT3BlcmF0aW9uLFxuICAgICAgW2Ake3ByZWZpeH0tdXBsb2FkZWRgXTogc3JjLFxuICAgICAgW2Ake3ByZWZpeH0tcHJvZ3Jlc3NpbmdgXTogcHJvZ3Jlc3MgIT09IG51bGwsXG4gICAgICBbYCR7cHJlZml4fS1ub0ljb25gXTogaWNvbiA9PT0gbnVsbCxcbiAgICAgIFtgJHtwcmVmaXh9LWRpc2FibGVkYF06IGRpc2FibGVkLFxuICAgIH0pXG5cbiAgICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmICghc3JjICYmIG9uVXBsb2FkICYmICFkaXNhYmxlZCkge1xuICAgICAgICBvblVwbG9hZCgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcmVzZXRTY3JvbGxiYXJQYWRkaW5nID0gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IFwiXCJcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0ID0gXCJcIlxuICAgIH1cblxuICAgIGNvbnN0IHNldFNjcm9sbGJhclBhZGRpbmcgPSAoKSA9PiB7XG4gICAgICBjb25zdCB7IGlubmVyV2lkdGggfSA9IHdpbmRvd1xuICAgICAgY29uc3QgYm9keUlzT3ZlcmZsb3dpbmcgPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDwgaW5uZXJXaWR0aFxuICAgICAgaWYgKFxuICAgICAgICBib2R5SXNPdmVyZmxvd2luZyAmJlxuICAgICAgICAhZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgJiZcbiAgICAgICAgc2Nyb2xsYmFyV2lkdGggIT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0ID0gYCR7c2Nyb2xsYmFyV2lkdGh9cHhgXG4gICAgICB9XG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIlxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUNhbmNlbFByZXZpZXcgPSAoKSA9PiB7XG4gICAgICBzZXRQcmV2aWV3aW5nKGZhbHNlKVxuICAgICAgcmVzZXRTY3JvbGxiYXJQYWRkaW5nKClcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKHsga2V5IH06IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmIChrZXkgPT09IFwiRXNjYXBlXCIpIHtcbiAgICAgICAgaGFuZGxlQ2FuY2VsUHJldmlldygpXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZVByZXZpZXcgPSAoKSA9PiB7XG4gICAgICBzZXRQcmV2aWV3aW5nKHRydWUpXG4gICAgICBzZXRTY3JvbGxiYXJQYWRkaW5nKClcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKVxuICAgIH1cblxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgdXBsb2FkRWxlbWVudDogdXBsb2FkRWxlbWVudFJlZi5jdXJyZW50LFxuICAgICAgaGFuZGxlUHJldmlldyxcbiAgICAgIGhhbmRsZUNhbmNlbFByZXZpZXcsXG4gICAgfSkpXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiByb2xlPVwibm9uZVwiIGNsYXNzTmFtZT17Y2xhc3NTZXR9IHsuLi5vdGhlclByb3BzfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3ByZWZpeH0tdXBsb2FkZWQtaW5uZXJgfT5cbiAgICAgICAgICA8aW1nIGNsYXNzTmFtZT17YCR7cHJlZml4fS1maWxlYH0gc3JjPXtzcmN9IGFsdD1cImltZ1wiIC8+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgcm9sZT1cIm5vbmVcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWNvdmVyYH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFwcmV2aWV3RGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVQcmV2aWV3KClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtob3Zlck9wZXJhdGlvbnM/Lmxlbmd0aCA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LW9wZXJhdGlvbnNgfT5cbiAgICAgICAgICAgICAge2hvdmVyT3BlcmF0aW9ucy5tYXAoKHsgdGV4dCwgLi4ub3RoZXJzIH0sIGkpID0+IChcbiAgICAgICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQga2V5PXtpfT5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LW9wZXJhdGlvbnMtaXRlbWB9IHsuLi5vdGhlcnN9PlxuICAgICAgICAgICAgICAgICAgICB7dGV4dH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAge2kgIT09IGhvdmVyT3BlcmF0aW9ucy5sZW5ndGggLSAxICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LW9wZXJhdGlvbnMtZGl2aWRlcmB9IC8+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LXJlbW92ZWB9PlxuICAgICAgICAgICAgICA8SWNvblxuICAgICAgICAgICAgICAgIGljb249e2ljb24gfHwgXCJkZWxldGUtb3V0bGluZWRcIn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKG9uSWNvbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uSWNvbkNsaWNrKGUpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7cHJlZml4fS11bnVwbG9hZGVkLWlubmVyYH0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgcm9sZT1cIm5vbmVcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LXVwbG9hZC1lbGVtZW50YH1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgICAgICAgcmVmPXt1cGxvYWRFbGVtZW50UmVmfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxJY29uIGljb249XCJhZGRcIiBjbGFzc05hbWU9e2Ake3ByZWZpeH0taWNvbmB9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3ByZWZpeH0tcHJvZ3Jlc3NgfT5cbiAgICAgICAgICAgIDxpIHN0eWxlPXt7IHdpZHRoOiBgJHtwcm9ncmVzc30lYCB9fSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhgJHtwcmVmaXh9LXByZXZpZXdgLCB7XG4gICAgICAgICAgICBbYCR7cHJlZml4fS1wcmV2aWV3LXNob3dgXTogcHJldmlld2luZyxcbiAgICAgICAgICB9KX1cbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDYW5jZWxQcmV2aWV3fVxuICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LXByZXZpZXctaW5uZXJgfT5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgYWx0PVwiaW1nXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LXByZXZpZXctZmlsZWB9XG4gICAgICAgICAgICAgIHNyYz17c3JjfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICAgICAgcm9sZT1cIm5vbmVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxJY29uIHNpemU9ezM2fSBpY29uPVwiY2FuY2VsXCIgY29sb3I9XCIjZmZmXCIgaW50ZXJhY3RpdmUgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cbilcblxuSW1nLmRpc3BsYXlOYW1lID0gXCJJbWdcIlxuXG5JbWcucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICog6ZmE5Yqg57G75ZCNXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOm8oOaghyBob3ZlciDml7bnmoTmk43kvZzmmL7npLpcbiAgICovXG4gIGhvdmVyT3BlcmF0aW9uczogUHJvcFR5cGVzLmFueSxcbiAgLyoqXG4gICAqIOaMh+WumuWPs+S4iuinkuWbvuagh1xuICAgKi9cbiAgaWNvbjogUHJvcFR5cGVzLmFueSxcbiAgLyoqXG4gICAqIOWPs+S4iuinkuWbvuagh+eCueWHu+aXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkljb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiDop6blj5HkuIrkvKBcbiAgICovXG4gIG9uVXBsb2FkOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIOemgeatoueCueWHu+WbvueJh+mihOiniFxuICAgKi9cbiAgcHJldmlld0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOi/m+W6pu+8jOS8oOWFpSBudWxsIOaXtuihqOekuuS4jeaYvuekuui/m+W6puadoVxuICAgKi9cbiAgcHJvZ3Jlc3M6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiDkuIrkvKDmiJDlip/lkI7nmoTlm77niYflnLDlnYBcbiAgICovXG4gIHNyYzogUHJvcFR5cGVzLnN0cmluZyxcbn1cblxuSW1nLmRlZmF1bHRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lOiBcIlwiLFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIGhvdmVyT3BlcmF0aW9uczogdW5kZWZpbmVkLFxuICBpY29uOiBcImRlbGV0ZS1vdXRsaW5lZFwiLFxuICBvbkljb25DbGljazogKCkgPT4ge30sXG4gIG9uVXBsb2FkOiAoKSA9PiB7fSxcbiAgcHJldmlld0Rpc2FibGVkOiBmYWxzZSxcbiAgcHJvZ3Jlc3M6IG51bGwsXG4gIHNyYzogXCJcIixcbn1cblxuZXhwb3J0IGRlZmF1bHQgSW1nXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBOztBQU9BOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsTUFBTSxHQUFHLGlCQUFmO0FBcURBLElBQU1DLEdBRUwsR0FBRyxJQUFBQyxpQkFBQSxFQUNGLGdCQWFFQyxHQWJGLEVBY0s7RUFBQTs7RUFBQSxJQVpEQyxTQVlDLFFBWkRBLFNBWUM7RUFBQSxJQVhEQyxRQVdDLFFBWERBLFFBV0M7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