matrix-react-sdk
Version:
SDK for matrix.org using React
115 lines (112 loc) • 22.2 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _QuestionDialog = _interopRequireDefault(require("./QuestionDialog"));
var _languageHandler = require("../../../languageHandler");
var _Field = _interopRequireDefault(require("../elements/Field"));
var _AccessibleButton = _interopRequireDefault(require("../elements/AccessibleButton"));
var _SdkConfig = _interopRequireDefault(require("../../../SdkConfig"));
var _Modal = _interopRequireDefault(require("../../../Modal"));
var _BugReportDialog = _interopRequireDefault(require("./BugReportDialog"));
var _InfoDialog = _interopRequireDefault(require("./InfoDialog"));
var _submitRageshake = require("../../../rageshake/submit-rageshake");
var _useStateToggle = require("../../../hooks/useStateToggle");
var _StyledCheckbox = _interopRequireDefault(require("../elements/StyledCheckbox"));
var _ExternalLink = _interopRequireDefault(require("../elements/ExternalLink"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (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; }
/*
Copyright 2018-2024 New Vector Ltd.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
const FeedbackDialog = props => {
const feedbackRef = (0, _react.useRef)(null);
const [comment, setComment] = (0, _react.useState)("");
const [canContact, toggleCanContact] = (0, _useStateToggle.useStateToggle)(false);
(0, _react.useEffect)(() => {
// autofocus doesn't work on textareas
feedbackRef.current?.focus();
}, []);
const onDebugLogsLinkClick = () => {
props.onFinished();
_Modal.default.createDialog(_BugReportDialog.default, {});
};
const hasFeedback = !!_SdkConfig.default.get().bug_report_endpoint_url;
const onFinished = sendFeedback => {
if (hasFeedback && sendFeedback) {
const label = props.feature ? `${props.feature}-feedback` : "feedback";
(0, _submitRageshake.submitFeedback)(label, comment, canContact);
_Modal.default.createDialog(_InfoDialog.default, {
title: (0, _languageHandler._t)("feedback|sent"),
description: (0, _languageHandler._t)("bug_reporting|thank_you")
});
}
props.onFinished();
};
let feedbackSection;
if (hasFeedback) {
feedbackSection = /*#__PURE__*/_react.default.createElement("div", {
className: "mx_FeedbackDialog_section mx_FeedbackDialog_rateApp"
}, /*#__PURE__*/_react.default.createElement("h3", null, (0, _languageHandler._t)("feedback|comment_label")), /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("feedback|platform_username")), /*#__PURE__*/_react.default.createElement(_Field.default, {
id: "feedbackComment",
label: (0, _languageHandler._t)("common|feedback"),
type: "text",
autoComplete: "off",
value: comment,
element: "textarea",
onChange: ev => {
setComment(ev.target.value);
},
ref: feedbackRef
}), /*#__PURE__*/_react.default.createElement(_StyledCheckbox.default, {
checked: canContact,
onChange: toggleCanContact
}, (0, _languageHandler._t)("feedback|may_contact_label")));
}
let bugReports;
if (hasFeedback) {
bugReports = /*#__PURE__*/_react.default.createElement("p", {
className: "mx_FeedbackDialog_section_microcopy"
}, (0, _languageHandler._t)("feedback|pro_type", {}, {
debugLogsLink: sub => /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
kind: "link_inline",
onClick: onDebugLogsLinkClick
}, sub)
}));
}
const existingIssuesUrl = _SdkConfig.default.getObject("feedback").get("existing_issues_url");
const newIssueUrl = _SdkConfig.default.getObject("feedback").get("new_issue_url");
return /*#__PURE__*/_react.default.createElement(_QuestionDialog.default, {
className: "mx_FeedbackDialog",
hasCancelButton: hasFeedback,
title: (0, _languageHandler._t)("common|feedback"),
description: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
className: "mx_FeedbackDialog_section mx_FeedbackDialog_reportBug"
}, /*#__PURE__*/_react.default.createElement("h3", null, (0, _languageHandler._t)("common|report_a_bug")), /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("feedback|existing_issue_link", {}, {
existingIssuesLink: sub => {
return /*#__PURE__*/_react.default.createElement(_ExternalLink.default, {
target: "_blank",
rel: "noreferrer noopener",
href: existingIssuesUrl
}, sub);
},
newIssueLink: sub => {
return /*#__PURE__*/_react.default.createElement(_ExternalLink.default, {
target: "_blank",
rel: "noreferrer noopener",
href: newIssueUrl
}, sub);
}
})), bugReports), feedbackSection),
button: hasFeedback ? (0, _languageHandler._t)("feedback|send_feedback_action") : (0, _languageHandler._t)("action|go_back"),
buttonDisabled: hasFeedback && !comment,
onFinished: onFinished
});
};
var _default = exports.default = FeedbackDialog;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfUXVlc3Rpb25EaWFsb2ciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2xhbmd1YWdlSGFuZGxlciIsIl9GaWVsZCIsIl9BY2Nlc3NpYmxlQnV0dG9uIiwiX1Nka0NvbmZpZyIsIl9Nb2RhbCIsIl9CdWdSZXBvcnREaWFsb2ciLCJfSW5mb0RpYWxvZyIsIl9zdWJtaXRSYWdlc2hha2UiLCJfdXNlU3RhdGVUb2dnbGUiLCJfU3R5bGVkQ2hlY2tib3giLCJfRXh0ZXJuYWxMaW5rIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiRmVlZGJhY2tEaWFsb2ciLCJwcm9wcyIsImZlZWRiYWNrUmVmIiwidXNlUmVmIiwiY29tbWVudCIsInNldENvbW1lbnQiLCJ1c2VTdGF0ZSIsImNhbkNvbnRhY3QiLCJ0b2dnbGVDYW5Db250YWN0IiwidXNlU3RhdGVUb2dnbGUiLCJ1c2VFZmZlY3QiLCJjdXJyZW50IiwiZm9jdXMiLCJvbkRlYnVnTG9nc0xpbmtDbGljayIsIm9uRmluaXNoZWQiLCJNb2RhbCIsImNyZWF0ZURpYWxvZyIsIkJ1Z1JlcG9ydERpYWxvZyIsImhhc0ZlZWRiYWNrIiwiU2RrQ29uZmlnIiwiYnVnX3JlcG9ydF9lbmRwb2ludF91cmwiLCJzZW5kRmVlZGJhY2siLCJsYWJlbCIsImZlYXR1cmUiLCJzdWJtaXRGZWVkYmFjayIsIkluZm9EaWFsb2ciLCJ0aXRsZSIsIl90IiwiZGVzY3JpcHRpb24iLCJmZWVkYmFja1NlY3Rpb24iLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiaWQiLCJ0eXBlIiwiYXV0b0NvbXBsZXRlIiwidmFsdWUiLCJlbGVtZW50Iiwib25DaGFuZ2UiLCJldiIsInRhcmdldCIsInJlZiIsImNoZWNrZWQiLCJidWdSZXBvcnRzIiwiZGVidWdMb2dzTGluayIsInN1YiIsImtpbmQiLCJvbkNsaWNrIiwiZXhpc3RpbmdJc3N1ZXNVcmwiLCJnZXRPYmplY3QiLCJuZXdJc3N1ZVVybCIsImhhc0NhbmNlbEJ1dHRvbiIsIkZyYWdtZW50IiwiZXhpc3RpbmdJc3N1ZXNMaW5rIiwicmVsIiwiaHJlZiIsIm5ld0lzc3VlTGluayIsImJ1dHRvbiIsImJ1dHRvbkRpc2FibGVkIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3MvZGlhbG9ncy9GZWVkYmFja0RpYWxvZy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDE4LTIwMjQgTmV3IFZlY3RvciBMdGQuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IFF1ZXN0aW9uRGlhbG9nIGZyb20gXCIuL1F1ZXN0aW9uRGlhbG9nXCI7XG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBGaWVsZCBmcm9tIFwiLi4vZWxlbWVudHMvRmllbGRcIjtcbmltcG9ydCBBY2Nlc3NpYmxlQnV0dG9uIGZyb20gXCIuLi9lbGVtZW50cy9BY2Nlc3NpYmxlQnV0dG9uXCI7XG5pbXBvcnQgU2RrQ29uZmlnIGZyb20gXCIuLi8uLi8uLi9TZGtDb25maWdcIjtcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vLi4vLi4vTW9kYWxcIjtcbmltcG9ydCBCdWdSZXBvcnREaWFsb2cgZnJvbSBcIi4vQnVnUmVwb3J0RGlhbG9nXCI7XG5pbXBvcnQgSW5mb0RpYWxvZyBmcm9tIFwiLi9JbmZvRGlhbG9nXCI7XG5pbXBvcnQgeyBzdWJtaXRGZWVkYmFjayB9IGZyb20gXCIuLi8uLi8uLi9yYWdlc2hha2Uvc3VibWl0LXJhZ2VzaGFrZVwiO1xuaW1wb3J0IHsgdXNlU3RhdGVUb2dnbGUgfSBmcm9tIFwiLi4vLi4vLi4vaG9va3MvdXNlU3RhdGVUb2dnbGVcIjtcbmltcG9ydCBTdHlsZWRDaGVja2JveCBmcm9tIFwiLi4vZWxlbWVudHMvU3R5bGVkQ2hlY2tib3hcIjtcbmltcG9ydCBFeHRlcm5hbExpbmsgZnJvbSBcIi4uL2VsZW1lbnRzL0V4dGVybmFsTGlua1wiO1xuXG5pbnRlcmZhY2UgSVByb3BzIHtcbiAgICBmZWF0dXJlPzogc3RyaW5nO1xuICAgIG9uRmluaXNoZWQoKTogdm9pZDtcbn1cblxuY29uc3QgRmVlZGJhY2tEaWFsb2c6IFJlYWN0LkZDPElQcm9wcz4gPSAocHJvcHM6IElQcm9wcykgPT4ge1xuICAgIGNvbnN0IGZlZWRiYWNrUmVmID0gdXNlUmVmPEZpZWxkPihudWxsKTtcbiAgICBjb25zdCBbY29tbWVudCwgc2V0Q29tbWVudF0gPSB1c2VTdGF0ZTxzdHJpbmc+KFwiXCIpO1xuICAgIGNvbnN0IFtjYW5Db250YWN0LCB0b2dnbGVDYW5Db250YWN0XSA9IHVzZVN0YXRlVG9nZ2xlKGZhbHNlKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIGF1dG9mb2N1cyBkb2Vzbid0IHdvcmsgb24gdGV4dGFyZWFzXG4gICAgICAgIGZlZWRiYWNrUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3Qgb25EZWJ1Z0xvZ3NMaW5rQ2xpY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHByb3BzLm9uRmluaXNoZWQoKTtcbiAgICAgICAgTW9kYWwuY3JlYXRlRGlhbG9nKEJ1Z1JlcG9ydERpYWxvZywge30pO1xuICAgIH07XG5cbiAgICBjb25zdCBoYXNGZWVkYmFjayA9ICEhU2RrQ29uZmlnLmdldCgpLmJ1Z19yZXBvcnRfZW5kcG9pbnRfdXJsO1xuICAgIGNvbnN0IG9uRmluaXNoZWQgPSAoc2VuZEZlZWRiYWNrOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIGlmIChoYXNGZWVkYmFjayAmJiBzZW5kRmVlZGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gcHJvcHMuZmVhdHVyZSA/IGAke3Byb3BzLmZlYXR1cmV9LWZlZWRiYWNrYCA6IFwiZmVlZGJhY2tcIjtcbiAgICAgICAgICAgIHN1Ym1pdEZlZWRiYWNrKGxhYmVsLCBjb21tZW50LCBjYW5Db250YWN0KTtcblxuICAgICAgICAgICAgTW9kYWwuY3JlYXRlRGlhbG9nKEluZm9EaWFsb2csIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogX3QoXCJmZWVkYmFja3xzZW50XCIpLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBfdChcImJ1Z19yZXBvcnRpbmd8dGhhbmtfeW91XCIpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcHJvcHMub25GaW5pc2hlZCgpO1xuICAgIH07XG5cbiAgICBsZXQgZmVlZGJhY2tTZWN0aW9uOiBKU1guRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoaGFzRmVlZGJhY2spIHtcbiAgICAgICAgZmVlZGJhY2tTZWN0aW9uID0gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9GZWVkYmFja0RpYWxvZ19zZWN0aW9uIG14X0ZlZWRiYWNrRGlhbG9nX3JhdGVBcHBcIj5cbiAgICAgICAgICAgICAgICA8aDM+e190KFwiZmVlZGJhY2t8Y29tbWVudF9sYWJlbFwiKX08L2gzPlxuXG4gICAgICAgICAgICAgICAgPHA+e190KFwiZmVlZGJhY2t8cGxhdGZvcm1fdXNlcm5hbWVcIil9PC9wPlxuXG4gICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiZmVlZGJhY2tDb21tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9e190KFwiY29tbW9ufGZlZWRiYWNrXCIpfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtjb21tZW50fVxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50PVwidGV4dGFyZWFcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRDb21tZW50KGV2LnRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIHJlZj17ZmVlZGJhY2tSZWZ9XG4gICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveCBjaGVja2VkPXtjYW5Db250YWN0fSBvbkNoYW5nZT17dG9nZ2xlQ2FuQ29udGFjdH0+XG4gICAgICAgICAgICAgICAgICAgIHtfdChcImZlZWRiYWNrfG1heV9jb250YWN0X2xhYmVsXCIpfVxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgYnVnUmVwb3J0czogSlNYLkVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgaWYgKGhhc0ZlZWRiYWNrKSB7XG4gICAgICAgIGJ1Z1JlcG9ydHMgPSAoXG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJteF9GZWVkYmFja0RpYWxvZ19zZWN0aW9uX21pY3JvY29weVwiPlxuICAgICAgICAgICAgICAgIHtfdChcbiAgICAgICAgICAgICAgICAgICAgXCJmZWVkYmFja3xwcm9fdHlwZVwiLFxuICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdMb2dzTGluazogKHN1YikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NpYmxlQnV0dG9uIGtpbmQ9XCJsaW5rX2lubGluZVwiIG9uQ2xpY2s9e29uRGVidWdMb2dzTGlua0NsaWNrfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N1Yn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZXhpc3RpbmdJc3N1ZXNVcmwgPSBTZGtDb25maWcuZ2V0T2JqZWN0KFwiZmVlZGJhY2tcIikuZ2V0KFwiZXhpc3RpbmdfaXNzdWVzX3VybFwiKTtcbiAgICBjb25zdCBuZXdJc3N1ZVVybCA9IFNka0NvbmZpZy5nZXRPYmplY3QoXCJmZWVkYmFja1wiKS5nZXQoXCJuZXdfaXNzdWVfdXJsXCIpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFF1ZXN0aW9uRGlhbG9nXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJteF9GZWVkYmFja0RpYWxvZ1wiXG4gICAgICAgICAgICBoYXNDYW5jZWxCdXR0b249e2hhc0ZlZWRiYWNrfVxuICAgICAgICAgICAgdGl0bGU9e190KFwiY29tbW9ufGZlZWRiYWNrXCIpfVxuICAgICAgICAgICAgZGVzY3JpcHRpb249e1xuICAgICAgICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9GZWVkYmFja0RpYWxvZ19zZWN0aW9uIG14X0ZlZWRiYWNrRGlhbG9nX3JlcG9ydEJ1Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzPntfdChcImNvbW1vbnxyZXBvcnRfYV9idWdcIil9PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtfdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmZWVkYmFja3xleGlzdGluZ19pc3N1ZV9saW5rXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0lzc3Vlc0xpbms6IChzdWIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXh0ZXJuYWxMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9yZWZlcnJlciBub29wZW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtleGlzdGluZ0lzc3Vlc1VybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N1Yn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9FeHRlcm5hbExpbms+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdJc3N1ZUxpbms6IChzdWIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXh0ZXJuYWxMaW5rIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vcmVmZXJyZXIgbm9vcGVuZXJcIiBocmVmPXtuZXdJc3N1ZVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3VifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0V4dGVybmFsTGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAge2J1Z1JlcG9ydHN9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB7ZmVlZGJhY2tTZWN0aW9ufVxuICAgICAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidXR0b249e2hhc0ZlZWRiYWNrID8gX3QoXCJmZWVkYmFja3xzZW5kX2ZlZWRiYWNrX2FjdGlvblwiKSA6IF90KFwiYWN0aW9ufGdvX2JhY2tcIil9XG4gICAgICAgICAgICBidXR0b25EaXNhYmxlZD17aGFzRmVlZGJhY2sgJiYgIWNvbW1lbnR9XG4gICAgICAgICAgICBvbkZpbmlzaGVkPXtvbkZpbmlzaGVkfVxuICAgICAgICAvPlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBGZWVkYmFja0RpYWxvZztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQU9BLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLGVBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLGdCQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxpQkFBQSxHQUFBSCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU0sVUFBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU8sTUFBQSxHQUFBTCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVEsZ0JBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLFdBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLGdCQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxlQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxlQUFBLEdBQUFWLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBYSxhQUFBLEdBQUFYLHNCQUFBLENBQUFGLE9BQUE7QUFBb0QsU0FBQWMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWhCLHdCQUFBZ0IsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFdBQUFLLE9BQUEsRUFBQUwsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEs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