UNPKG

matrix-react-sdk

Version:
140 lines (134 loc) 22.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.LayoutSwitcher = LayoutSwitcher; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireWildcard(require("react")); var _compoundWeb = require("@vector-im/compound-web"); var _SettingsSubsection = _interopRequireDefault(require("./shared/SettingsSubsection")); var _languageHandler = require("../../../languageHandler"); var _SettingsStore = _interopRequireDefault(require("../../../settings/SettingsStore")); var _SettingLevel = require("../../../settings/SettingLevel"); var _useSettings = require("../../../hooks/useSettings"); var _Layout = require("../../../settings/enums/Layout"); var _EventTilePreview = _interopRequireDefault(require("../elements/EventTilePreview")); var _MatrixClientContext = require("../../../contexts/MatrixClientContext"); 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 2024 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. */ /** * A section to switch between different message layouts. */ function LayoutSwitcher() { return /*#__PURE__*/_react.default.createElement(_SettingsSubsection.default, { heading: (0, _languageHandler._t)("common|message_layout"), legacy: false, "data-testid": "layoutPanel" }, /*#__PURE__*/_react.default.createElement(LayoutSelector, null), /*#__PURE__*/_react.default.createElement(ToggleCompactLayout, null)); } /** * A selector to choose the layout of the messages. */ function LayoutSelector() { return /*#__PURE__*/_react.default.createElement(_compoundWeb.Root, { className: "mx_LayoutSwitcher_LayoutSelector", onChange: async evt => { // We don't have any file in the form, we can cast it as string safely const newLayout = new FormData(evt.currentTarget).get("layout"); await _SettingsStore.default.setValue("layout", null, _SettingLevel.SettingLevel.DEVICE, newLayout); } }, /*#__PURE__*/_react.default.createElement(LayoutRadio, { layout: _Layout.Layout.Group, label: (0, _languageHandler._t)("common|modern") }), /*#__PURE__*/_react.default.createElement(LayoutRadio, { layout: _Layout.Layout.Bubble, label: (0, _languageHandler._t)("settings|appearance|layout_bubbles") }), /*#__PURE__*/_react.default.createElement(LayoutRadio, { layout: _Layout.Layout.IRC, label: (0, _languageHandler._t)("settings|appearance|layout_irc") })); } /** * A radio button to select a layout. */ /** * A radio button to select a layout. * @param layout * @param label */ function LayoutRadio({ layout, label }) { const currentLayout = (0, _useSettings.useSettingValue)("layout"); const eventTileInfo = useEventTileInfo(); return /*#__PURE__*/_react.default.createElement(_compoundWeb.Field, { name: "layout", className: "mxLayoutSwitcher_LayoutSelector_LayoutRadio" }, /*#__PURE__*/_react.default.createElement(_compoundWeb.Label, { "aria-label": label }, /*#__PURE__*/_react.default.createElement("div", { className: "mxLayoutSwitcher_LayoutSelector_LayoutRadio_inline" }, /*#__PURE__*/_react.default.createElement(_compoundWeb.RadioControl, { name: "layout", value: layout, defaultChecked: currentLayout === layout }), /*#__PURE__*/_react.default.createElement("span", null, label)), /*#__PURE__*/_react.default.createElement("hr", { className: "mxLayoutSwitcher_LayoutSelector_LayoutRadio_separator" }), /*#__PURE__*/_react.default.createElement(_EventTilePreview.default, (0, _extends2.default)({ message: (0, _languageHandler._t)("common|preview_message"), layout: layout, className: "mxLayoutSwitcher_LayoutSelector_LayoutRadio_EventTilePreview" }, eventTileInfo)))); } /** * Fetch the information to display in the event tile preview. */ function useEventTileInfo() { const matrixClient = (0, _MatrixClientContext.useMatrixClientContext)(); const userId = matrixClient.getSafeUserId(); const [eventTileInfo, setEventTileInfo] = (0, _react.useState)({ userId }); (0, _react.useEffect)(() => { const run = async () => { const profileInfo = await matrixClient.getProfileInfo(userId); setEventTileInfo({ userId, displayName: profileInfo.displayname, avatarUrl: profileInfo.avatar_url }); }; run(); }, [userId, matrixClient, setEventTileInfo]); return eventTileInfo; } /** * A toggleable setting to enable or disable the compact layout. */ function ToggleCompactLayout() { const compactLayoutEnabled = (0, _useSettings.useSettingValue)("useCompactLayout"); const layout = (0, _useSettings.useSettingValue)("layout"); return /*#__PURE__*/_react.default.createElement(_compoundWeb.Root, { onChange: async evt => { const checked = new FormData(evt.currentTarget).get("compactLayout") === "on"; await _SettingsStore.default.setValue("useCompactLayout", null, _SettingLevel.SettingLevel.DEVICE, checked); } }, /*#__PURE__*/_react.default.createElement(_compoundWeb.InlineField, { name: "compactLayout", control: /*#__PURE__*/_react.default.createElement(_compoundWeb.ToggleControl, { disabled: layout !== _Layout.Layout.Group, name: "compactLayout", defaultChecked: compactLayoutEnabled }) }, /*#__PURE__*/_react.default.createElement(_compoundWeb.Label, null, (0, _languageHandler._t)("settings|appearance|compact_layout")), /*#__PURE__*/_react.default.createElement(_compoundWeb.HelpMessage, null, (0, _languageHandler._t)("settings|appearance|compact_layout_description")))); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29tcG91bmRXZWIiLCJfU2V0dGluZ3NTdWJzZWN0aW9uIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfU2V0dGluZ3NTdG9yZSIsIl9TZXR0aW5nTGV2ZWwiLCJfdXNlU2V0dGluZ3MiLCJfTGF5b3V0IiwiX0V2ZW50VGlsZVByZXZpZXciLCJfTWF0cml4Q2xpZW50Q29udGV4dCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkxheW91dFN3aXRjaGVyIiwiY3JlYXRlRWxlbWVudCIsImhlYWRpbmciLCJfdCIsImxlZ2FjeSIsIkxheW91dFNlbGVjdG9yIiwiVG9nZ2xlQ29tcGFjdExheW91dCIsIlJvb3QiLCJjbGFzc05hbWUiLCJvbkNoYW5nZSIsImV2dCIsIm5ld0xheW91dCIsIkZvcm1EYXRhIiwiY3VycmVudFRhcmdldCIsIlNldHRpbmdzU3RvcmUiLCJzZXRWYWx1ZSIsIlNldHRpbmdMZXZlbCIsIkRFVklDRSIsIkxheW91dFJhZGlvIiwibGF5b3V0IiwiTGF5b3V0IiwiR3JvdXAiLCJsYWJlbCIsIkJ1YmJsZSIsIklSQyIsImN1cnJlbnRMYXlvdXQiLCJ1c2VTZXR0aW5nVmFsdWUiLCJldmVudFRpbGVJbmZvIiwidXNlRXZlbnRUaWxlSW5mbyIsIkZpZWxkIiwibmFtZSIsIkxhYmVsIiwiUmFkaW9Db250cm9sIiwidmFsdWUiLCJkZWZhdWx0Q2hlY2tlZCIsIl9leHRlbmRzMiIsIm1lc3NhZ2UiLCJtYXRyaXhDbGllbnQiLCJ1c2VNYXRyaXhDbGllbnRDb250ZXh0IiwidXNlcklkIiwiZ2V0U2FmZVVzZXJJZCIsInNldEV2ZW50VGlsZUluZm8iLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInJ1biIsInByb2ZpbGVJbmZvIiwiZ2V0UHJvZmlsZUluZm8iLCJkaXNwbGF5TmFtZSIsImRpc3BsYXluYW1lIiwiYXZhdGFyVXJsIiwiYXZhdGFyX3VybCIsImNvbXBhY3RMYXlvdXRFbmFibGVkIiwiY2hlY2tlZCIsIklubGluZUZpZWxkIiwiY29udHJvbCIsIlRvZ2dsZUNvbnRyb2wiLCJkaXNhYmxlZCIsIkhlbHBNZXNzYWdlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3Mvc2V0dGluZ3MvTGF5b3V0U3dpdGNoZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbiAqIENvcHlyaWdodCAyMDI0IFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG4gKiBQbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuICovXG5cbmltcG9ydCBSZWFjdCwgeyBKU1gsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZpZWxkLCBIZWxwTWVzc2FnZSwgSW5saW5lRmllbGQsIExhYmVsLCBSYWRpb0NvbnRyb2wsIFJvb3QsIFRvZ2dsZUNvbnRyb2wgfSBmcm9tIFwiQHZlY3Rvci1pbS9jb21wb3VuZC13ZWJcIjtcblxuaW1wb3J0IFNldHRpbmdzU3Vic2VjdGlvbiBmcm9tIFwiLi9zaGFyZWQvU2V0dGluZ3NTdWJzZWN0aW9uXCI7XG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gXCIuLi8uLi8uLi9zZXR0aW5ncy9TZXR0aW5nc1N0b3JlXCI7XG5pbXBvcnQgeyBTZXR0aW5nTGV2ZWwgfSBmcm9tIFwiLi4vLi4vLi4vc2V0dGluZ3MvU2V0dGluZ0xldmVsXCI7XG5pbXBvcnQgeyB1c2VTZXR0aW5nVmFsdWUgfSBmcm9tIFwiLi4vLi4vLi4vaG9va3MvdXNlU2V0dGluZ3NcIjtcbmltcG9ydCB7IExheW91dCB9IGZyb20gXCIuLi8uLi8uLi9zZXR0aW5ncy9lbnVtcy9MYXlvdXRcIjtcbmltcG9ydCBFdmVudFRpbGVQcmV2aWV3IGZyb20gXCIuLi9lbGVtZW50cy9FdmVudFRpbGVQcmV2aWV3XCI7XG5pbXBvcnQgeyB1c2VNYXRyaXhDbGllbnRDb250ZXh0IH0gZnJvbSBcIi4uLy4uLy4uL2NvbnRleHRzL01hdHJpeENsaWVudENvbnRleHRcIjtcblxuLyoqXG4gKiBBIHNlY3Rpb24gdG8gc3dpdGNoIGJldHdlZW4gZGlmZmVyZW50IG1lc3NhZ2UgbGF5b3V0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIExheW91dFN3aXRjaGVyKCk6IEpTWC5FbGVtZW50IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8U2V0dGluZ3NTdWJzZWN0aW9uIGhlYWRpbmc9e190KFwiY29tbW9ufG1lc3NhZ2VfbGF5b3V0XCIpfSBsZWdhY3k9e2ZhbHNlfSBkYXRhLXRlc3RpZD1cImxheW91dFBhbmVsXCI+XG4gICAgICAgICAgICA8TGF5b3V0U2VsZWN0b3IgLz5cbiAgICAgICAgICAgIDxUb2dnbGVDb21wYWN0TGF5b3V0IC8+XG4gICAgICAgIDwvU2V0dGluZ3NTdWJzZWN0aW9uPlxuICAgICk7XG59XG5cbi8qKlxuICogQSBzZWxlY3RvciB0byBjaG9vc2UgdGhlIGxheW91dCBvZiB0aGUgbWVzc2FnZXMuXG4gKi9cbmZ1bmN0aW9uIExheW91dFNlbGVjdG9yKCk6IEpTWC5FbGVtZW50IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8Um9vdFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwibXhfTGF5b3V0U3dpdGNoZXJfTGF5b3V0U2VsZWN0b3JcIlxuICAgICAgICAgICAgb25DaGFuZ2U9e2FzeW5jIChldnQpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGFueSBmaWxlIGluIHRoZSBmb3JtLCB3ZSBjYW4gY2FzdCBpdCBhcyBzdHJpbmcgc2FmZWx5XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3TGF5b3V0ID0gbmV3IEZvcm1EYXRhKGV2dC5jdXJyZW50VGFyZ2V0KS5nZXQoXCJsYXlvdXRcIikgYXMgc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgICAgICBhd2FpdCBTZXR0aW5nc1N0b3JlLnNldFZhbHVlKFwibGF5b3V0XCIsIG51bGwsIFNldHRpbmdMZXZlbC5ERVZJQ0UsIG5ld0xheW91dCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgICA8TGF5b3V0UmFkaW8gbGF5b3V0PXtMYXlvdXQuR3JvdXB9IGxhYmVsPXtfdChcImNvbW1vbnxtb2Rlcm5cIil9IC8+XG4gICAgICAgICAgICA8TGF5b3V0UmFkaW8gbGF5b3V0PXtMYXlvdXQuQnViYmxlfSBsYWJlbD17X3QoXCJzZXR0aW5nc3xhcHBlYXJhbmNlfGxheW91dF9idWJibGVzXCIpfSAvPlxuICAgICAgICAgICAgPExheW91dFJhZGlvIGxheW91dD17TGF5b3V0LklSQ30gbGFiZWw9e190KFwic2V0dGluZ3N8YXBwZWFyYW5jZXxsYXlvdXRfaXJjXCIpfSAvPlxuICAgICAgICA8L1Jvb3Q+XG4gICAgKTtcbn1cblxuLyoqXG4gKiBBIHJhZGlvIGJ1dHRvbiB0byBzZWxlY3QgYSBsYXlvdXQuXG4gKi9cbmludGVyZmFjZSBMYXlvdXRSYWRpb1Byb3BzIHtcbiAgICAvKipcbiAgICAgKiBUaGUgdmFsdWUgb2YgdGhlIGxheW91dC5cbiAgICAgKi9cbiAgICBsYXlvdXQ6IExheW91dDtcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgdG8gZGlzcGxheSBmb3IgdGhlIGxheW91dC5cbiAgICAgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgcmFkaW8gYnV0dG9uIHRvIHNlbGVjdCBhIGxheW91dC5cbiAqIEBwYXJhbSBsYXlvdXRcbiAqIEBwYXJhbSBsYWJlbFxuICovXG5mdW5jdGlvbiBMYXlvdXRSYWRpbyh7IGxheW91dCwgbGFiZWwgfTogTGF5b3V0UmFkaW9Qcm9wcyk6IEpTWC5FbGVtZW50IHtcbiAgICBjb25zdCBjdXJyZW50TGF5b3V0ID0gdXNlU2V0dGluZ1ZhbHVlPExheW91dD4oXCJsYXlvdXRcIik7XG4gICAgY29uc3QgZXZlbnRUaWxlSW5mbyA9IHVzZUV2ZW50VGlsZUluZm8oKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxGaWVsZCBuYW1lPVwibGF5b3V0XCIgY2xhc3NOYW1lPVwibXhMYXlvdXRTd2l0Y2hlcl9MYXlvdXRTZWxlY3Rvcl9MYXlvdXRSYWRpb1wiPlxuICAgICAgICAgICAgPExhYmVsIGFyaWEtbGFiZWw9e2xhYmVsfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14TGF5b3V0U3dpdGNoZXJfTGF5b3V0U2VsZWN0b3JfTGF5b3V0UmFkaW9faW5saW5lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb0NvbnRyb2wgbmFtZT1cImxheW91dFwiIHZhbHVlPXtsYXlvdXR9IGRlZmF1bHRDaGVja2VkPXtjdXJyZW50TGF5b3V0ID09PSBsYXlvdXR9IC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPntsYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGhyIGNsYXNzTmFtZT1cIm14TGF5b3V0U3dpdGNoZXJfTGF5b3V0U2VsZWN0b3JfTGF5b3V0UmFkaW9fc2VwYXJhdG9yXCIgLz5cbiAgICAgICAgICAgICAgICA8RXZlbnRUaWxlUHJldmlld1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPXtfdChcImNvbW1vbnxwcmV2aWV3X21lc3NhZ2VcIil9XG4gICAgICAgICAgICAgICAgICAgIGxheW91dD17bGF5b3V0fVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteExheW91dFN3aXRjaGVyX0xheW91dFNlbGVjdG9yX0xheW91dFJhZGlvX0V2ZW50VGlsZVByZXZpZXdcIlxuICAgICAgICAgICAgICAgICAgICB7Li4uZXZlbnRUaWxlSW5mb31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9MYWJlbD5cbiAgICAgICAgPC9GaWVsZD5cbiAgICApO1xufVxuXG50eXBlIEV2ZW50VGlsZUluZm8gPSB7XG4gICAgLyoqXG4gICAgICogVGhlIElEIG9mIHRoZSB1c2VyIHRvIGRpc3BsYXkuXG4gICAgICovXG4gICAgdXNlcklkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgdXNlciB0byBkaXNwbGF5LlxuICAgICAqL1xuICAgIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBhdmF0YXIgVVJMIG9mIHRoZSB1c2VyIHRvIGRpc3BsYXkuXG4gICAgICovXG4gICAgYXZhdGFyVXJsPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBGZXRjaCB0aGUgaW5mb3JtYXRpb24gdG8gZGlzcGxheSBpbiB0aGUgZXZlbnQgdGlsZSBwcmV2aWV3LlxuICovXG5mdW5jdGlvbiB1c2VFdmVudFRpbGVJbmZvKCk6IEV2ZW50VGlsZUluZm8ge1xuICAgIGNvbnN0IG1hdHJpeENsaWVudCA9IHVzZU1hdHJpeENsaWVudENvbnRleHQoKTtcbiAgICBjb25zdCB1c2VySWQgPSBtYXRyaXhDbGllbnQuZ2V0U2FmZVVzZXJJZCgpO1xuICAgIGNvbnN0IFtldmVudFRpbGVJbmZvLCBzZXRFdmVudFRpbGVJbmZvXSA9IHVzZVN0YXRlPEV2ZW50VGlsZUluZm8+KHsgdXNlcklkIH0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgcnVuID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJvZmlsZUluZm8gPSBhd2FpdCBtYXRyaXhDbGllbnQuZ2V0UHJvZmlsZUluZm8odXNlcklkKTtcbiAgICAgICAgICAgIHNldEV2ZW50VGlsZUluZm8oe1xuICAgICAgICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogcHJvZmlsZUluZm8uZGlzcGxheW5hbWUsXG4gICAgICAgICAgICAgICAgYXZhdGFyVXJsOiBwcm9maWxlSW5mby5hdmF0YXJfdXJsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcnVuKCk7XG4gICAgfSwgW3VzZXJJZCwgbWF0cml4Q2xpZW50LCBzZXRFdmVudFRpbGVJbmZvXSk7XG4gICAgcmV0dXJuIGV2ZW50VGlsZUluZm87XG59XG5cbi8qKlxuICogQSB0b2dnbGVhYmxlIHNldHRpbmcgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGNvbXBhY3QgbGF5b3V0LlxuICovXG5mdW5jdGlvbiBUb2dnbGVDb21wYWN0TGF5b3V0KCk6IEpTWC5FbGVtZW50IHtcbiAgICBjb25zdCBjb21wYWN0TGF5b3V0RW5hYmxlZCA9IHVzZVNldHRpbmdWYWx1ZTxib29sZWFuPihcInVzZUNvbXBhY3RMYXlvdXRcIik7XG4gICAgY29uc3QgbGF5b3V0ID0gdXNlU2V0dGluZ1ZhbHVlPExheW91dD4oXCJsYXlvdXRcIik7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8Um9vdFxuICAgICAgICAgICAgb25DaGFuZ2U9e2FzeW5jIChldnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGVja2VkID0gbmV3IEZvcm1EYXRhKGV2dC5jdXJyZW50VGFyZ2V0KS5nZXQoXCJjb21wYWN0TGF5b3V0XCIpID09PSBcIm9uXCI7XG4gICAgICAgICAgICAgICAgYXdhaXQgU2V0dGluZ3NTdG9yZS5zZXRWYWx1ZShcInVzZUNvbXBhY3RMYXlvdXRcIiwgbnVsbCwgU2V0dGluZ0xldmVsLkRFVklDRSwgY2hlY2tlZCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgICA8SW5saW5lRmllbGRcbiAgICAgICAgICAgICAgICBuYW1lPVwiY29tcGFjdExheW91dFwiXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxUb2dnbGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17bGF5b3V0ICE9PSBMYXlvdXQuR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29tcGFjdExheW91dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Q2hlY2tlZD17Y29tcGFjdExheW91dEVuYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxMYWJlbD57X3QoXCJzZXR0aW5nc3xhcHBlYXJhbmNlfGNvbXBhY3RfbGF5b3V0XCIpfTwvTGFiZWw+XG4gICAgICAgICAgICAgICAgPEhlbHBNZXNzYWdlPntfdChcInNldHRpbmdzfGFwcGVhcmFuY2V8Y29tcGFjdF9sYXlvdXRfZGVzY3JpcHRpb25cIil9PC9IZWxwTWVzc2FnZT5cbiAgICAgICAgICAgIDwvSW5saW5lRmllbGQ+XG4gICAgICAgIDwvUm9vdD5cbiAgICApO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFlBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLG1CQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxnQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssY0FBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FB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