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>

182 lines 27.9 kB
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); } var _excluded = ["className", "disabled", "hoverOperations", "icon", "onIconClick", "onUpload", "previewDisabled", "progress", "src"], _excluded2 = ["text"]; 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; } import React, { forwardRef, useImperativeHandle, useMemo, useRef, useState } from "react"; import PropTypes from "prop-types"; import classNames from "classnames"; import getScrollBarSize from "rc-util/lib/getScrollBarSize"; import Icon from "../icon"; import "./style"; var prefix = "adui-upload-img"; var Img = forwardRef(function (_ref, ref) { 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 = useState(false), _useState2 = _slicedToArray(_useState, 2), previewing = _useState2[0], setPreviewing = _useState2[1]; var uploadElementRef = useRef(null); var scrollbarWidth = useMemo(getScrollBarSize, []); var hasOperation = hoverOperations === null || hoverOperations === void 0 ? void 0 : hoverOperations.length; var classSet = classNames(className, "".concat(prefix), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(prefix, "-hasOperation"), hasOperation), "".concat(prefix, "-uploaded"), src), "".concat(prefix, "-progressing"), progress !== null), "".concat(prefix, "-noIcon"), icon === null), "".concat(prefix, "-disabled"), disabled)); 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); }; useImperativeHandle(ref, function () { return { uploadElement: uploadElementRef.current, handlePreview: handlePreview, handleCancelPreview: handleCancelPreview }; }); return React.createElement("div", _extends({ role: "none", className: classSet }, otherProps), React.createElement("div", { className: "".concat(prefix, "-uploaded-inner") }, React.createElement("img", { className: "".concat(prefix, "-file"), src: src, alt: "img" }), React.createElement("div", { role: "none", className: "".concat(prefix, "-cover"), onClick: function onClick() { if (!previewDisabled) { handlePreview(); } } }), hoverOperations !== null && hoverOperations !== void 0 && hoverOperations.length ? React.createElement("div", { className: "".concat(prefix, "-operations") }, hoverOperations.map(function (_ref3, i) { var text = _ref3.text, others = _objectWithoutProperties(_ref3, _excluded2); return React.createElement(React.Fragment, { key: i }, React.createElement("div", _extends({ className: "".concat(prefix, "-operations-item") }, others), text), i !== hoverOperations.length - 1 && React.createElement("i", { className: "".concat(prefix, "-operations-divider") })); })) : React.createElement("div", { className: "".concat(prefix, "-remove") }, React.createElement(Icon, { icon: icon || "delete-outlined", onClick: function onClick(e) { if (onIconClick) { onIconClick(e); } } }))), React.createElement("div", { className: "".concat(prefix, "-unuploaded-inner") }, React.createElement("div", { role: "none", className: "".concat(prefix, "-upload-element"), onClick: handleClick, ref: uploadElementRef }, React.createElement(Icon, { icon: "add", className: "".concat(prefix, "-icon") })), React.createElement("div", { className: "".concat(prefix, "-progress") }, React.createElement("i", { style: { width: "".concat(progress, "%") } }))), React.createElement("div", { className: classNames("".concat(prefix, "-preview"), _defineProperty({}, "".concat(prefix, "-preview-show"), previewing)), onClick: handleCancelPreview, role: "none" }, React.createElement("div", { className: "".concat(prefix, "-preview-inner") }, React.createElement("img", { alt: "img", className: "".concat(prefix, "-preview-file"), src: src, onClick: function onClick(e) { return e.stopPropagation(); }, role: "none" }), React.createElement(Icon, { size: 36, icon: "cancel", color: "#fff", interactive: true })))); }); Img.displayName = "Img"; Img.propTypes = { className: PropTypes.string, disabled: PropTypes.bool, hoverOperations: PropTypes.any, icon: PropTypes.any, onIconClick: PropTypes.func, onUpload: PropTypes.func, previewDisabled: PropTypes.bool, progress: PropTypes.number, src: PropTypes.string }; Img.defaultProps = { className: "", disabled: false, hoverOperations: undefined, icon: "delete-outlined", onIconClick: function onIconClick() {}, onUpload: function onUpload() {}, previewDisabled: false, progress: null, src: "" }; export default Img; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZvcndhcmRSZWYiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwiUHJvcFR5cGVzIiwiY2xhc3NOYW1lcyIsImdldFNjcm9sbEJhclNpemUiLCJJY29uIiwicHJlZml4IiwiSW1nIiwiX3JlZiIsInJlZiIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwiaG92ZXJPcGVyYXRpb25zIiwiaWNvbiIsIm9uSWNvbkNsaWNrIiwib25VcGxvYWQiLCJwcmV2aWV3RGlzYWJsZWQiLCJwcm9ncmVzcyIsInNyYyIsIm90aGVyUHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJwcmV2aWV3aW5nIiwic2V0UHJldmlld2luZyIsInVwbG9hZEVsZW1lbnRSZWYiLCJzY3JvbGxiYXJXaWR0aCIsImhhc09wZXJhdGlvbiIsImxlbmd0aCIsImNsYXNzU2V0IiwiY29uY2F0IiwiX2RlZmluZVByb3BlcnR5IiwiaGFuZGxlQ2xpY2siLCJyZXNldFNjcm9sbGJhclBhZGRpbmciLCJkb2N1bWVudCIsImJvZHkiLCJzdHlsZSIsIm92ZXJmbG93IiwicGFkZGluZ1JpZ2h0Iiwic2V0U2Nyb2xsYmFyUGFkZGluZyIsIl93aW5kb3ciLCJ3aW5kb3ciLCJpbm5lcldpZHRoIiwiYm9keUlzT3ZlcmZsb3dpbmciLCJjbGllbnRXaWR0aCIsInVuZGVmaW5lZCIsImhhbmRsZUNhbmNlbFByZXZpZXciLCJoYW5kbGVLZXlEb3duIiwiX3JlZjIiLCJrZXkiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlUHJldmlldyIsImFkZEV2ZW50TGlzdGVuZXIiLCJ1cGxvYWRFbGVtZW50IiwiY3VycmVudCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsInJvbGUiLCJhbHQiLCJvbkNsaWNrIiwibWFwIiwiX3JlZjMiLCJpIiwidGV4dCIsIm90aGVycyIsIl9leGNsdWRlZDIiLCJGcmFnbWVudCIsImUiLCJ3aWR0aCIsInN0b3BQcm9wYWdhdGlvbiIsInNpemUiLCJjb2xvciIsImludGVyYWN0aXZlIiwiZGlzcGxheU5hbWUiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJib29sIiwiYW55IiwiZnVuYyIsIm51bWJlciIsImRlZmF1bHRQcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvdXBsb2FkL0ltZy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG5pbXBvcnQgUmVhY3QsIHtcbiAgZm9yd2FyZFJlZixcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IGdldFNjcm9sbEJhclNpemUgZnJvbSBcInJjLXV0aWwvbGliL2dldFNjcm9sbEJhclNpemVcIlxuaW1wb3J0IEljb24sIHsgSWNvbk5hbWVzIH0gZnJvbSBcIi4uL2ljb25cIlxuaW1wb3J0IFwiLi9zdHlsZVwiXG5cbmNvbnN0IHByZWZpeCA9IFwiYWR1aS11cGxvYWQtaW1nXCJcblxuZXhwb3J0IGludGVyZmFjZSBJSW1nUHJvcHMge1xuICBba2V5OiBzdHJpbmddOiBhbnlcbiAgLyoqXG4gICAqIOmZhOWKoOexu+WQjVxuICAgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiDpvKDmoIcgaG92ZXIg5pe255qE5pON5L2c5pi+56S6XG4gICAqL1xuICBob3Zlck9wZXJhdGlvbnM/OiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55XG4gICAgdGV4dDogc3RyaW5nXG4gICAgb25DbGljazogKGU6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIH1bXVxuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOaMh+WumuWPs+S4iuinkuWbvuagh1xuICAgKi9cbiAgaWNvbj86IEljb25OYW1lcyB8IG51bGxcbiAgLyoqXG4gICAqIOWPs+S4iuinkuWbvuagh+eCueWHu+aXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkljb25DbGljaz86IChlOiBSZWFjdC5Nb3VzZUV2ZW50PFNWR1NWR0VsZW1lbnQ+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiDop6blj5HkuIrkvKBcbiAgICovXG4gIG9uVXBsb2FkPzogKCkgPT4gdm9pZFxuICAvKipcbiAgICog56aB5q2i54K55Ye75Zu+54mH6aKE6KeIXG4gICAqL1xuICBwcmV2aWV3RGlzYWJsZWQ/OiBib29sZWFuXG4gIC8qKlxuICAgKiDov5vluqbvvIzkvKDlhaUgbnVsbCDml7booajnpLrkuI3mmL7npLrov5vluqbmnaFcbiAgICovXG4gIHByb2dyZXNzPzogbnVtYmVyIHwgbnVsbFxuICAvKipcbiAgICog5LiK5Lyg5oiQ5Yqf5ZCO55qE5Zu+54mH5Zyw5Z2AXG4gICAqL1xuICBzcmM/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSW1nU3RhdGUge1xuICBwcmV2aWV3aW5nOiBib29sZWFuXG59XG5cbi8qKlxuICog5peL6L2s5Yqg6L2955So5LqO5ZGK55+l55So5oi35L+h5oGv5YaF5a6555qE5Yqg6L2954q25oCB77yM6YCa5bi45piv5Y2z5pe244CB55+t5pe255qE44CCXG4gKi9cbmNvbnN0IEltZzogUmVhY3QuRm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudDxcbiAgSUltZ1Byb3BzICYgUmVhY3QuUmVmQXR0cmlidXRlczxhbnk+XG4+ID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaG92ZXJPcGVyYXRpb25zLFxuICAgICAgaWNvbixcbiAgICAgIG9uSWNvbkNsaWNrLFxuICAgICAgb25VcGxvYWQsXG4gICAgICBwcmV2aWV3RGlzYWJsZWQsXG4gICAgICBwcm9ncmVzcyxcbiAgICAgIHNyYyxcbiAgICAgIC4uLm90aGVyUHJvcHNcbiAgICB9OiBJSW1nUHJvcHMsXG4gICAgcmVmXG4gICkgPT4ge1xuICAgIGNvbnN0IFtwcmV2aWV3aW5nLCBzZXRQcmV2aWV3aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gICAgY29uc3QgdXBsb2FkRWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gdXNlTWVtbyhnZXRTY3JvbGxCYXJTaXplLCBbXSlcblxuICAgIGNvbnN0IGhhc09wZXJhdGlvbiA9IGhvdmVyT3BlcmF0aW9ucz8ubGVuZ3RoXG5cbiAgICBjb25zdCBjbGFzc1NldCA9IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBgJHtwcmVmaXh9YCwge1xuICAgICAgW2Ake3ByZWZpeH0taGFzT3BlcmF0aW9uYF06IGhhc09wZXJhdGlvbixcbiAgICAgIFtgJHtwcmVmaXh9LXVwbG9hZGVkYF06IHNyYyxcbiAgICAgIFtgJHtwcmVmaXh9LXByb2dyZXNzaW5nYF06IHByb2dyZXNzICE9PSBudWxsLFxuICAgICAgW2Ake3ByZWZpeH0tbm9JY29uYF06IGljb24gPT09IG51bGwsXG4gICAgICBbYCR7cHJlZml4fS1kaXNhYmxlZGBdOiBkaXNhYmxlZCxcbiAgICB9KVxuXG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoIXNyYyAmJiBvblVwbG9hZCAmJiAhZGlzYWJsZWQpIHtcbiAgICAgICAgb25VcGxvYWQoKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJlc2V0U2Nyb2xsYmFyUGFkZGluZyA9ICgpID0+IHtcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSBcIlwiXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IFwiXCJcbiAgICB9XG5cbiAgICBjb25zdCBzZXRTY3JvbGxiYXJQYWRkaW5nID0gKCkgPT4ge1xuICAgICAgY29uc3QgeyBpbm5lcldpZHRoIH0gPSB3aW5kb3dcbiAgICAgIGNvbnN0IGJvZHlJc092ZXJmbG93aW5nID0gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCA8IGlubmVyV2lkdGhcbiAgICAgIGlmIChcbiAgICAgICAgYm9keUlzT3ZlcmZsb3dpbmcgJiZcbiAgICAgICAgIWRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0ICYmXG4gICAgICAgIHNjcm9sbGJhcldpZHRoICE9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IGAke3Njcm9sbGJhcldpZHRofXB4YFxuICAgICAgfVxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCJcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVDYW5jZWxQcmV2aWV3ID0gKCkgPT4ge1xuICAgICAgc2V0UHJldmlld2luZyhmYWxzZSlcbiAgICAgIHJlc2V0U2Nyb2xsYmFyUGFkZGluZygpXG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9ICh7IGtleSB9OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoa2V5ID09PSBcIkVzY2FwZVwiKSB7XG4gICAgICAgIGhhbmRsZUNhbmNlbFByZXZpZXcoKVxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVQcmV2aWV3ID0gKCkgPT4ge1xuICAgICAgc2V0UHJldmlld2luZyh0cnVlKVxuICAgICAgc2V0U2Nyb2xsYmFyUGFkZGluZygpXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bilcbiAgICB9XG5cbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gKHtcbiAgICAgIHVwbG9hZEVsZW1lbnQ6IHVwbG9hZEVsZW1lbnRSZWYuY3VycmVudCxcbiAgICAgIGhhbmRsZVByZXZpZXcsXG4gICAgICBoYW5kbGVDYW5jZWxQcmV2aWV3LFxuICAgIH0pKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgcm9sZT1cIm5vbmVcIiBjbGFzc05hbWU9e2NsYXNzU2V0fSB7Li4ub3RoZXJQcm9wc30+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LXVwbG9hZGVkLWlubmVyYH0+XG4gICAgICAgICAgPGltZyBjbGFzc05hbWU9e2Ake3ByZWZpeH0tZmlsZWB9IHNyYz17c3JjfSBhbHQ9XCJpbWdcIiAvPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7cHJlZml4fS1jb3ZlcmB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghcHJldmlld0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlUHJldmlldygpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7aG92ZXJPcGVyYXRpb25zPy5sZW5ndGggPyAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7cHJlZml4fS1vcGVyYXRpb25zYH0+XG4gICAgICAgICAgICAgIHtob3Zlck9wZXJhdGlvbnMubWFwKCh7IHRleHQsIC4uLm90aGVycyB9LCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50IGtleT17aX0+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7cHJlZml4fS1vcGVyYXRpb25zLWl0ZW1gfSB7Li4ub3RoZXJzfT5cbiAgICAgICAgICAgICAgICAgICAge3RleHR9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIHtpICE9PSBob3Zlck9wZXJhdGlvbnMubGVuZ3RoIC0gMSAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT17YCR7cHJlZml4fS1vcGVyYXRpb25zLWRpdmlkZXJgfSAvPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7cHJlZml4fS1yZW1vdmVgfT5cbiAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICBpY29uPXtpY29uIHx8IFwiZGVsZXRlLW91dGxpbmVkXCJ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChvbkljb25DbGljaykge1xuICAgICAgICAgICAgICAgICAgICBvbkljb25DbGljayhlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3ByZWZpeH0tdW51cGxvYWRlZC1pbm5lcmB9PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7cHJlZml4fS11cGxvYWQtZWxlbWVudGB9XG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgICAgICAgIHJlZj17dXBsb2FkRWxlbWVudFJlZn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbiBpY29uPVwiYWRkXCIgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWljb25gfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LXByb2dyZXNzYH0+XG4gICAgICAgICAgICA8aSBzdHlsZT17eyB3aWR0aDogYCR7cHJvZ3Jlc3N9JWAgfX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoYCR7cHJlZml4fS1wcmV2aWV3YCwge1xuICAgICAgICAgICAgW2Ake3ByZWZpeH0tcHJldmlldy1zaG93YF06IHByZXZpZXdpbmcsXG4gICAgICAgICAgfSl9XG4gICAgICAgICAgb25DbGljaz17aGFuZGxlQ2FuY2VsUHJldmlld31cbiAgICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7cHJlZml4fS1wcmV2aWV3LWlubmVyYH0+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGFsdD1cImltZ1wiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7cHJlZml4fS1wcmV2aWV3LWZpbGVgfVxuICAgICAgICAgICAgICBzcmM9e3NyY31cbiAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8SWNvbiBzaXplPXszNn0gaWNvbj1cImNhbmNlbFwiIGNvbG9yPVwiI2ZmZlwiIGludGVyYWN0aXZlIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG4pXG5cbkltZy5kaXNwbGF5TmFtZSA9IFwiSW1nXCJcblxuSW1nLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIOmZhOWKoOexu+WQjVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDpvKDmoIcgaG92ZXIg5pe255qE5pON5L2c5pi+56S6XG4gICAqL1xuICBob3Zlck9wZXJhdGlvbnM6IFByb3BUeXBlcy5hbnksXG4gIC8qKlxuICAgKiDmjIflrprlj7PkuIrop5Llm77moIdcbiAgICovXG4gIGljb246IFByb3BUeXBlcy5hbnksXG4gIC8qKlxuICAgKiDlj7PkuIrop5Llm77moIfngrnlh7vml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25JY29uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICog6Kem5Y+R5LiK5LygXG4gICAqL1xuICBvblVwbG9hZDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiDnpoHmraLngrnlh7vlm77niYfpooTop4hcbiAgICovXG4gIHByZXZpZXdEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDov5vluqbvvIzkvKDlhaUgbnVsbCDml7booajnpLrkuI3mmL7npLrov5vluqbmnaFcbiAgICovXG4gIHByb2dyZXNzOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICog5LiK5Lyg5oiQ5Yqf5ZCO55qE5Zu+54mH5Zyw5Z2AXG4gICAqL1xuICBzcmM6IFByb3BUeXBlcy5zdHJpbmcsXG59XG5cbkltZy5kZWZhdWx0UHJvcHMgPSB7XG4gIGNsYXNzTmFtZTogXCJcIixcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBob3Zlck9wZXJhdGlvbnM6IHVuZGVmaW5lZCxcbiAgaWNvbjogXCJkZWxldGUtb3V0bGluZWRcIixcbiAgb25JY29uQ2xpY2s6ICgpID0+IHt9LFxuICBvblVwbG9hZDogKCkgPT4ge30sXG4gIHByZXZpZXdEaXNhYmxlZDogZmFsc2UsXG4gIHByb2dyZXNzOiBudWxsLFxuICBzcmM6IFwiXCIs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