UNPKG

matrix-react-sdk

Version:
145 lines (140 loc) 22.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.BetaPill = void 0; var _react = _interopRequireWildcard(require("react")); var _utils = require("matrix-js-sdk/src/utils"); var _languageHandler = require("../../../languageHandler"); var _AccessibleButton = _interopRequireDefault(require("../elements/AccessibleButton")); var _SettingsStore = _interopRequireDefault(require("../../../settings/SettingsStore")); var _SettingLevel = require("../../../settings/SettingLevel"); var _Modal = _interopRequireDefault(require("../../../Modal")); var _BetaFeedbackDialog = _interopRequireDefault(require("../dialogs/BetaFeedbackDialog")); var _SdkConfig = _interopRequireDefault(require("../../../SdkConfig")); var _SettingsFlag = _interopRequireDefault(require("../elements/SettingsFlag")); var _useSettings = require("../../../hooks/useSettings"); var _InlineSpinner = _interopRequireDefault(require("../elements/InlineSpinner")); var _Feedback = require("../../../utils/Feedback"); 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 2024 New Vector Ltd. Copyright 2021 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ // XXX: Keep this around for re-use in future Betas const BetaPill = ({ onClick, tooltipTitle = (0, _languageHandler._t)("labs|beta_feature"), tooltipCaption = (0, _languageHandler._t)("labs|click_for_info") }) => { if (onClick) { return /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { className: "mx_BetaCard_betaPill", "aria-label": `${tooltipTitle} ${tooltipCaption}`, title: tooltipTitle, caption: tooltipCaption, onClick: onClick }, (0, _languageHandler._t)("common|beta")); } return /*#__PURE__*/_react.default.createElement("span", { className: "mx_BetaCard_betaPill" }, (0, _languageHandler._t)("common|beta")); }; exports.BetaPill = BetaPill; const BetaCard = ({ title: titleOverride, featureId }) => { const info = _SettingsStore.default.getBetaInfo(featureId); const value = (0, _useSettings.useFeatureEnabled)(featureId); const [busy, setBusy] = (0, _react.useState)(false); if (!info) return null; // Beta is invalid/disabled const { title, caption, faq, image, feedbackLabel, feedbackSubheading, extraSettings, requiresRefresh } = info; let feedbackButton; if (value && feedbackLabel && feedbackSubheading && (0, _Feedback.shouldShowFeedback)()) { feedbackButton = /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { onClick: () => { _Modal.default.createDialog(_BetaFeedbackDialog.default, { featureId }); }, kind: "primary" }, (0, _languageHandler._t)("common|feedback")); } let refreshWarning; if (requiresRefresh) { const brand = _SdkConfig.default.get().brand; refreshWarning = value ? (0, _languageHandler._t)("labs|leave_beta_reload", { brand }) : (0, _languageHandler._t)("labs|join_beta_reload", { brand }); } let content; if (busy) { content = /*#__PURE__*/_react.default.createElement(_InlineSpinner.default, null); } else if (value) { content = (0, _languageHandler._t)("labs|leave_beta"); } else { content = (0, _languageHandler._t)("labs|join_beta"); } return /*#__PURE__*/_react.default.createElement("div", { className: "mx_BetaCard" }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_BetaCard_columns" }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_BetaCard_columns_description" }, /*#__PURE__*/_react.default.createElement("h3", { className: "mx_BetaCard_title" }, /*#__PURE__*/_react.default.createElement("span", null, titleOverride || (0, _languageHandler._t)(title)), /*#__PURE__*/_react.default.createElement(BetaPill, null)), /*#__PURE__*/_react.default.createElement("div", { className: "mx_BetaCard_caption" }, caption()), /*#__PURE__*/_react.default.createElement("div", { className: "mx_BetaCard_buttons" }, feedbackButton, /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { onClick: async () => { setBusy(true); // make it look like we're doing something for two seconds, // otherwise users think clicking did nothing if (!requiresRefresh) { await (0, _utils.sleep)(2000); } await _SettingsStore.default.setValue(featureId, null, _SettingLevel.SettingLevel.DEVICE, !value); if (!requiresRefresh) { setBusy(false); } }, kind: feedbackButton ? "primary_outline" : "primary", disabled: busy }, content)), refreshWarning && /*#__PURE__*/_react.default.createElement("div", { className: "mx_BetaCard_refreshWarning" }, refreshWarning), faq && /*#__PURE__*/_react.default.createElement("div", { className: "mx_BetaCard_faq" }, faq(value))), /*#__PURE__*/_react.default.createElement("div", { className: "mx_BetaCard_columns_image_wrapper" }, /*#__PURE__*/_react.default.createElement("img", { className: "mx_BetaCard_columns_image", src: image, alt: "" }))), extraSettings && value && /*#__PURE__*/_react.default.createElement("div", { className: "mx_BetaCard_relatedSettings" }, extraSettings.map(key => /*#__PURE__*/_react.default.createElement(_SettingsFlag.default, { key: key, name: key, level: _SettingLevel.SettingLevel.DEVICE })))); }; var _default = exports.default = BetaCard; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfdXRpbHMiLCJfbGFuZ3VhZ2VIYW5kbGVyIiwiX0FjY2Vzc2libGVCdXR0b24iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX1NldHRpbmdzU3RvcmUiLCJfU2V0dGluZ0xldmVsIiwiX01vZGFsIiwiX0JldGFGZWVkYmFja0RpYWxvZyIsIl9TZGtDb25maWciLCJfU2V0dGluZ3NGbGFnIiwiX3VzZVNldHRpbmdzIiwiX0lubGluZVNwaW5uZXIiLCJfRmVlZGJhY2siLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJCZXRhUGlsbCIsIm9uQ2xpY2siLCJ0b29sdGlwVGl0bGUiLCJfdCIsInRvb2x0aXBDYXB0aW9uIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInRpdGxlIiwiY2FwdGlvbiIsImV4cG9ydHMiLCJCZXRhQ2FyZCIsInRpdGxlT3ZlcnJpZGUiLCJmZWF0dXJlSWQiLCJpbmZvIiwiU2V0dGluZ3NTdG9yZSIsImdldEJldGFJbmZvIiwidmFsdWUiLCJ1c2VGZWF0dXJlRW5hYmxlZCIsImJ1c3kiLCJzZXRCdXN5IiwidXNlU3RhdGUiLCJmYXEiLCJpbWFnZSIsImZlZWRiYWNrTGFiZWwiLCJmZWVkYmFja1N1YmhlYWRpbmciLCJleHRyYVNldHRpbmdzIiwicmVxdWlyZXNSZWZyZXNoIiwiZmVlZGJhY2tCdXR0b24iLCJzaG91bGRTaG93RmVlZGJhY2siLCJNb2RhbCIsImNyZWF0ZURpYWxvZyIsIkJldGFGZWVkYmFja0RpYWxvZyIsImtpbmQiLCJyZWZyZXNoV2FybmluZyIsImJyYW5kIiwiU2RrQ29uZmlnIiwiY29udGVudCIsInNsZWVwIiwic2V0VmFsdWUiLCJTZXR0aW5nTGV2ZWwiLCJERVZJQ0UiLCJkaXNhYmxlZCIsInNyYyIsImFsdCIsIm1hcCIsImtleSIsIm5hbWUiLCJsZXZlbCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3MvYmV0YS9CZXRhQ2FyZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNsZWVwIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL3V0aWxzXCI7XG5cbmltcG9ydCB7IF90IH0gZnJvbSBcIi4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IEFjY2Vzc2libGVCdXR0b24gZnJvbSBcIi4uL2VsZW1lbnRzL0FjY2Vzc2libGVCdXR0b25cIjtcbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gXCIuLi8uLi8uLi9zZXR0aW5ncy9TZXR0aW5nc1N0b3JlXCI7XG5pbXBvcnQgeyBTZXR0aW5nTGV2ZWwgfSBmcm9tIFwiLi4vLi4vLi4vc2V0dGluZ3MvU2V0dGluZ0xldmVsXCI7XG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uLy4uL01vZGFsXCI7XG5pbXBvcnQgQmV0YUZlZWRiYWNrRGlhbG9nIGZyb20gXCIuLi9kaWFsb2dzL0JldGFGZWVkYmFja0RpYWxvZ1wiO1xuaW1wb3J0IFNka0NvbmZpZyBmcm9tIFwiLi4vLi4vLi4vU2RrQ29uZmlnXCI7XG5pbXBvcnQgU2V0dGluZ3NGbGFnIGZyb20gXCIuLi9lbGVtZW50cy9TZXR0aW5nc0ZsYWdcIjtcbmltcG9ydCB7IHVzZUZlYXR1cmVFbmFibGVkIH0gZnJvbSBcIi4uLy4uLy4uL2hvb2tzL3VzZVNldHRpbmdzXCI7XG5pbXBvcnQgSW5saW5lU3Bpbm5lciBmcm9tIFwiLi4vZWxlbWVudHMvSW5saW5lU3Bpbm5lclwiO1xuaW1wb3J0IHsgc2hvdWxkU2hvd0ZlZWRiYWNrIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL0ZlZWRiYWNrXCI7XG5cbi8vIFhYWDogS2VlcCB0aGlzIGFyb3VuZCBmb3IgcmUtdXNlIGluIGZ1dHVyZSBCZXRhc1xuXG5pbnRlcmZhY2UgSVByb3BzIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBmZWF0dXJlSWQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElCZXRhUGlsbFByb3BzIHtcbiAgICBvbkNsaWNrPzogKCkgPT4gdm9pZDtcbiAgICB0b29sdGlwVGl0bGU/OiBzdHJpbmc7XG4gICAgdG9vbHRpcENhcHRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBCZXRhUGlsbDogUmVhY3QuRkM8SUJldGFQaWxsUHJvcHM+ID0gKHtcbiAgICBvbkNsaWNrLFxuICAgIHRvb2x0aXBUaXRsZSA9IF90KFwibGFic3xiZXRhX2ZlYXR1cmVcIiksXG4gICAgdG9vbHRpcENhcHRpb24gPSBfdChcImxhYnN8Y2xpY2tfZm9yX2luZm9cIiksXG59KSA9PiB7XG4gICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBY2Nlc3NpYmxlQnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXhfQmV0YUNhcmRfYmV0YVBpbGxcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2Ake3Rvb2x0aXBUaXRsZX0gJHt0b29sdGlwQ2FwdGlvbn1gfVxuICAgICAgICAgICAgICAgIHRpdGxlPXt0b29sdGlwVGl0bGV9XG4gICAgICAgICAgICAgICAgY2FwdGlvbj17dG9vbHRpcENhcHRpb259XG4gICAgICAgICAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7X3QoXCJjb21tb258YmV0YVwiKX1cbiAgICAgICAgICAgIDwvQWNjZXNzaWJsZUJ1dHRvbj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gPHNwYW4gY2xhc3NOYW1lPVwibXhfQmV0YUNhcmRfYmV0YVBpbGxcIj57X3QoXCJjb21tb258YmV0YVwiKX08L3NwYW4+O1xufTtcblxuY29uc3QgQmV0YUNhcmQ6IFJlYWN0LkZDPElQcm9wcz4gPSAoeyB0aXRsZTogdGl0bGVPdmVycmlkZSwgZmVhdHVyZUlkIH0pID0+IHtcbiAgICBjb25zdCBpbmZvID0gU2V0dGluZ3NTdG9yZS5nZXRCZXRhSW5mbyhmZWF0dXJlSWQpO1xuICAgIGNvbnN0IHZhbHVlID0gdXNlRmVhdHVyZUVuYWJsZWQoZmVhdHVyZUlkKTtcbiAgICBjb25zdCBbYnVzeSwgc2V0QnVzeV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgaWYgKCFpbmZvKSByZXR1cm4gbnVsbDsgLy8gQmV0YSBpcyBpbnZhbGlkL2Rpc2FibGVkXG5cbiAgICBjb25zdCB7IHRpdGxlLCBjYXB0aW9uLCBmYXEsIGltYWdlLCBmZWVkYmFja0xhYmVsLCBmZWVkYmFja1N1YmhlYWRpbmcsIGV4dHJhU2V0dGluZ3MsIHJlcXVpcmVzUmVmcmVzaCB9ID0gaW5mbztcblxuICAgIGxldCBmZWVkYmFja0J1dHRvbjtcbiAgICBpZiAodmFsdWUgJiYgZmVlZGJhY2tMYWJlbCAmJiBmZWVkYmFja1N1YmhlYWRpbmcgJiYgc2hvdWxkU2hvd0ZlZWRiYWNrKCkpIHtcbiAgICAgICAgZmVlZGJhY2tCdXR0b24gPSAoXG4gICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgTW9kYWwuY3JlYXRlRGlhbG9nKEJldGFGZWVkYmFja0RpYWxvZywgeyBmZWF0dXJlSWQgfSk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBraW5kPVwicHJpbWFyeVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge190KFwiY29tbW9ufGZlZWRiYWNrXCIpfVxuICAgICAgICAgICAgPC9BY2Nlc3NpYmxlQnV0dG9uPlxuICAgICAgICApO1xuICAgIH1cblxuICAgIGxldCByZWZyZXNoV2FybmluZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmIChyZXF1aXJlc1JlZnJlc2gpIHtcbiAgICAgICAgY29uc3QgYnJhbmQgPSBTZGtDb25maWcuZ2V0KCkuYnJhbmQ7XG4gICAgICAgIHJlZnJlc2hXYXJuaW5nID0gdmFsdWUgPyBfdChcImxhYnN8bGVhdmVfYmV0YV9yZWxvYWRcIiwgeyBicmFuZCB9KSA6IF90KFwibGFic3xqb2luX2JldGFfcmVsb2FkXCIsIHsgYnJhbmQgfSk7XG4gICAgfVxuXG4gICAgbGV0IGNvbnRlbnQ6IFJlYWN0Tm9kZTtcbiAgICBpZiAoYnVzeSkge1xuICAgICAgICBjb250ZW50ID0gPElubGluZVNwaW5uZXIgLz47XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgICBjb250ZW50ID0gX3QoXCJsYWJzfGxlYXZlX2JldGFcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29udGVudCA9IF90KFwibGFic3xqb2luX2JldGFcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9CZXRhQ2FyZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9CZXRhQ2FyZF9jb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9CZXRhQ2FyZF9jb2x1bW5zX2Rlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJteF9CZXRhQ2FyZF90aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3RpdGxlT3ZlcnJpZGUgfHwgX3QodGl0bGUpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCZXRhUGlsbCAvPlxuICAgICAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X0JldGFDYXJkX2NhcHRpb25cIj57Y2FwdGlvbigpfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X0JldGFDYXJkX2J1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmZWVkYmFja0J1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NpYmxlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17YXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCdXN5KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIGl0IGxvb2sgbGlrZSB3ZSdyZSBkb2luZyBzb21ldGhpbmcgZm9yIHR3byBzZWNvbmRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgdXNlcnMgdGhpbmsgY2xpY2tpbmcgZGlkIG5vdGhpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXF1aXJlc1JlZnJlc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHNsZWVwKDIwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IFNldHRpbmdzU3RvcmUuc2V0VmFsdWUoZmVhdHVyZUlkLCBudWxsLCBTZXR0aW5nTGV2ZWwuREVWSUNFLCAhdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcXVpcmVzUmVmcmVzaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QnVzeShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9e2ZlZWRiYWNrQnV0dG9uID8gXCJwcmltYXJ5X291dGxpbmVcIiA6IFwicHJpbWFyeVwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtidXN5fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9BY2Nlc3NpYmxlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAge3JlZnJlc2hXYXJuaW5nICYmIDxkaXYgY2xhc3NOYW1lPVwibXhfQmV0YUNhcmRfcmVmcmVzaFdhcm5pbmdcIj57cmVmcmVzaFdhcm5pbmd9PC9kaXY+fVxuICAgICAgICAgICAgICAgICAgICB7ZmFxICYmIDxkaXYgY2xhc3NOYW1lPVwibXhfQmV0YUNhcmRfZmFxXCI+e2ZhcSh2YWx1ZSl9PC9kaXY+fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfQmV0YUNhcmRfY29sdW1uc19pbWFnZV93cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwibXhfQmV0YUNhcmRfY29sdW1uc19pbWFnZVwiIHNyYz17aW1hZ2V9IGFsdD1cIlwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHtleHRyYVNldHRpbmdzICYmIHZhbHVlICYmIChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X0JldGFDYXJkX3JlbGF0ZWRTZXR0aW5nc1wiPlxuICAgICAgICAgICAgICAgICAgICB7ZXh0cmFTZXR0aW5ncy5tYXAoKGtleSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFNldHRpbmdzRmxhZyBrZXk9e2tleX0gbmFtZT17a2V5fSBsZXZlbD17U2V0dGluZ0xldmVsLkRFVklDRX0gLz5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmV0YUNhcmQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFRQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxnQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLGNBQUEsR0FBQUQsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFNLGFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLE1BQUEsR0FBQUgsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFRLG1CQUFBLEdBQUFKLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBUyxVQUFBLEdBQUFMLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBVSxhQUFBLEdBQUFOLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBVyxZQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxjQUFBLEdBQUFSLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBYSxTQUFBLEdBQUFiLE9BQUE7QUFBNkQsU0FBQWMseUJBQUFDLENB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