UNPKG

matrix-react-sdk

Version:
115 lines (112 loc) 22.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.getIncomingLegacyCallToastKey = exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _call = require("matrix-js-sdk/src/webrtc/call"); var _classnames = _interopRequireDefault(require("classnames")); var _LegacyCallHandler = _interopRequireWildcard(require("../LegacyCallHandler")); var _MatrixClientPeg = require("../MatrixClientPeg"); var _languageHandler = require("../languageHandler"); var _RoomAvatar = _interopRequireDefault(require("../components/views/avatars/RoomAvatar")); var _AccessibleButton = _interopRequireDefault(require("../components/views/elements/AccessibleButton")); 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 Šimon Brandner <simon.bra.ag@gmail.com> Copyright 2019, 2020 The Matrix.org Foundation C.I.C. Copyright 2018 New Vector Ltd Copyright 2015, 2016 OpenMarket 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 getIncomingLegacyCallToastKey = callId => `call_${callId}`; exports.getIncomingLegacyCallToastKey = getIncomingLegacyCallToastKey; class IncomingLegacyCallToast extends _react.default.Component { constructor(props) { super(props); (0, _defineProperty2.default)(this, "roomId", void 0); (0, _defineProperty2.default)(this, "componentDidMount", () => { _LegacyCallHandler.default.instance.addListener(_LegacyCallHandler.LegacyCallHandlerEvent.SilencedCallsChanged, this.onSilencedCallsChanged); }); (0, _defineProperty2.default)(this, "onSilencedCallsChanged", () => { this.setState({ silenced: _LegacyCallHandler.default.instance.isCallSilenced(this.props.call.callId) }); }); (0, _defineProperty2.default)(this, "onAnswerClick", e => { e.stopPropagation(); _LegacyCallHandler.default.instance.answerCall(this.roomId); }); (0, _defineProperty2.default)(this, "onRejectClick", e => { e.stopPropagation(); _LegacyCallHandler.default.instance.hangupOrReject(this.roomId, true); }); (0, _defineProperty2.default)(this, "onSilenceClick", e => { e.stopPropagation(); const callId = this.props.call.callId; this.state.silenced ? _LegacyCallHandler.default.instance.unSilenceCall(callId) : _LegacyCallHandler.default.instance.silenceCall(callId); }); const roomId = _LegacyCallHandler.default.instance.roomIdForCall(this.props.call); if (!roomId) { throw new Error("Unable to find room for incoming call"); } this.roomId = roomId; this.state = { silenced: _LegacyCallHandler.default.instance.isCallSilenced(this.props.call.callId) }; } componentWillUnmount() { _LegacyCallHandler.default.instance.removeListener(_LegacyCallHandler.LegacyCallHandlerEvent.SilencedCallsChanged, this.onSilencedCallsChanged); } render() { const room = _MatrixClientPeg.MatrixClientPeg.safeGet().getRoom(this.roomId); const isVoice = this.props.call.type === _call.CallType.Voice; const callForcedSilent = _LegacyCallHandler.default.instance.isForcedSilent(); let silenceButtonTooltip = this.state.silenced ? (0, _languageHandler._t)("voip|unsilence") : (0, _languageHandler._t)("voip|silence"); if (callForcedSilent) { silenceButtonTooltip = (0, _languageHandler._t)("voip|silenced"); } const contentClass = (0, _classnames.default)("mx_IncomingLegacyCallToast_content", { mx_IncomingLegacyCallToast_content_voice: isVoice, mx_IncomingLegacyCallToast_content_video: !isVoice }); const silenceClass = (0, _classnames.default)("mx_IncomingLegacyCallToast_iconButton", { mx_IncomingLegacyCallToast_unSilence: this.state.silenced, mx_IncomingLegacyCallToast_silence: !this.state.silenced }); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_RoomAvatar.default, { room: room ?? undefined, size: "32px" }), /*#__PURE__*/_react.default.createElement("div", { className: contentClass }, /*#__PURE__*/_react.default.createElement("span", { className: "mx_LegacyCallEvent_caller" }, room ? room.name : (0, _languageHandler._t)("voip|unknown_caller")), /*#__PURE__*/_react.default.createElement("div", { className: "mx_LegacyCallEvent_type" }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_LegacyCallEvent_type_icon" }), isVoice ? (0, _languageHandler._t)("voip|voice_call") : (0, _languageHandler._t)("voip|video_call")), /*#__PURE__*/_react.default.createElement("div", { className: "mx_IncomingLegacyCallToast_buttons" }, /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { className: "mx_IncomingLegacyCallToast_button mx_IncomingLegacyCallToast_button_decline", onClick: this.onRejectClick, kind: "danger" }, /*#__PURE__*/_react.default.createElement("span", null, " ", (0, _languageHandler._t)("action|decline"), " ")), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { className: "mx_IncomingLegacyCallToast_button mx_IncomingLegacyCallToast_button_accept", onClick: this.onAnswerClick, kind: "primary" }, /*#__PURE__*/_react.default.createElement("span", null, " ", (0, _languageHandler._t)("action|accept"), " ")))), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { className: silenceClass, disabled: callForcedSilent, onClick: this.onSilenceClick, title: silenceButtonTooltip })); } } exports.default = IncomingLegacyCallToast; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jYWxsIiwiX2NsYXNzbmFtZXMiLCJfTGVnYWN5Q2FsbEhhbmRsZXIiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9NYXRyaXhDbGllbnRQZWciLCJfbGFuZ3VhZ2VIYW5kbGVyIiwiX1Jvb21BdmF0YXIiLCJfQWNjZXNzaWJsZUJ1dHRvbiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsImdldEluY29taW5nTGVnYWN5Q2FsbFRvYXN0S2V5IiwiY2FsbElkIiwiZXhwb3J0cyIsIkluY29taW5nTGVnYWN5Q2FsbFRvYXN0IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5MiIsIkxlZ2FjeUNhbGxIYW5kbGVyIiwiaW5zdGFuY2UiLCJhZGRMaXN0ZW5lciIsIkxlZ2FjeUNhbGxIYW5kbGVyRXZlbnQiLCJTaWxlbmNlZENhbGxzQ2hhbmdlZCIsIm9uU2lsZW5jZWRDYWxsc0NoYW5nZWQiLCJzZXRTdGF0ZSIsInNpbGVuY2VkIiwiaXNDYWxsU2lsZW5jZWQiLCJzdG9wUHJvcGFnYXRpb24iLCJhbnN3ZXJDYWxsIiwicm9vbUlkIiwiaGFuZ3VwT3JSZWplY3QiLCJzdGF0ZSIsInVuU2lsZW5jZUNhbGwiLCJzaWxlbmNlQ2FsbCIsInJvb21JZEZvckNhbGwiLCJFcnJvciIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlTGlzdGVuZXIiLCJyZW5kZXIiLCJyb29tIiwiTWF0cml4Q2xpZW50UGVnIiwic2FmZUdldCIsImdldFJvb20iLCJpc1ZvaWNlIiwidHlwZSIsIkNhbGxUeXBlIiwiVm9pY2UiLCJjYWxsRm9yY2VkU2lsZW50IiwiaXNGb3JjZWRTaWxlbnQiLCJzaWxlbmNlQnV0dG9uVG9vbHRpcCIsIl90IiwiY29udGVudENsYXNzIiwiY2xhc3NOYW1lcyIsIm14X0luY29taW5nTGVnYWN5Q2FsbFRvYXN0X2NvbnRlbnRfdm9pY2UiLCJteF9JbmNvbWluZ0xlZ2FjeUNhbGxUb2FzdF9jb250ZW50X3ZpZGVvIiwic2lsZW5jZUNsYXNzIiwibXhfSW5jb21pbmdMZWdhY3lDYWxsVG9hc3RfdW5TaWxlbmNlIiwibXhfSW5jb21pbmdMZWdhY3lDYWxsVG9hc3Rfc2lsZW5jZSIsImNyZWF0ZUVsZW1lbnQiLCJGcmFnbWVudCIsInVuZGVmaW5lZCIsInNpemUiLCJjbGFzc05hbWUiLCJuYW1lIiwib25DbGljayIsIm9uUmVqZWN0Q2xpY2siLCJraW5kIiwib25BbnN3ZXJDbGljayIsImRpc2FibGVkIiwib25TaWxlbmNlQ2xpY2siLCJ0aXRsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2FzdHMvSW5jb21pbmdMZWdhY3lDYWxsVG9hc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIxIMWgaW1vbiBCcmFuZG5lciA8c2ltb24uYnJhLmFnQGdtYWlsLmNvbT5cbkNvcHlyaWdodCAyMDE5LCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5Db3B5cmlnaHQgMjAxOCBOZXcgVmVjdG9yIEx0ZFxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ2FsbFR5cGUsIE1hdHJpeENhbGwgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvd2VicnRjL2NhbGxcIjtcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5cbmltcG9ydCBMZWdhY3lDYWxsSGFuZGxlciwgeyBMZWdhY3lDYWxsSGFuZGxlckV2ZW50IH0gZnJvbSBcIi4uL0xlZ2FjeUNhbGxIYW5kbGVyXCI7XG5pbXBvcnQgeyBNYXRyaXhDbGllbnRQZWcgfSBmcm9tIFwiLi4vTWF0cml4Q2xpZW50UGVnXCI7XG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBSb29tQXZhdGFyIGZyb20gXCIuLi9jb21wb25lbnRzL3ZpZXdzL2F2YXRhcnMvUm9vbUF2YXRhclwiO1xuaW1wb3J0IEFjY2Vzc2libGVCdXR0b24sIHsgQnV0dG9uRXZlbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50cy92aWV3cy9lbGVtZW50cy9BY2Nlc3NpYmxlQnV0dG9uXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRJbmNvbWluZ0xlZ2FjeUNhbGxUb2FzdEtleSA9IChjYWxsSWQ6IHN0cmluZyk6IHN0cmluZyA9PiBgY2FsbF8ke2NhbGxJZH1gO1xuXG5pbnRlcmZhY2UgSVByb3BzIHtcbiAgICBjYWxsOiBNYXRyaXhDYWxsO1xufVxuXG5pbnRlcmZhY2UgSVN0YXRlIHtcbiAgICBzaWxlbmNlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5jb21pbmdMZWdhY3lDYWxsVG9hc3QgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvb21JZDogc3RyaW5nO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByb3BzOiBJUHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIGNvbnN0IHJvb21JZCA9IExlZ2FjeUNhbGxIYW5kbGVyLmluc3RhbmNlLnJvb21JZEZvckNhbGwodGhpcy5wcm9wcy5jYWxsKTtcbiAgICAgICAgaWYgKCFyb29tSWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBmaW5kIHJvb20gZm9yIGluY29taW5nIGNhbGxcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb29tSWQgPSByb29tSWQ7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHNpbGVuY2VkOiBMZWdhY3lDYWxsSGFuZGxlci5pbnN0YW5jZS5pc0NhbGxTaWxlbmNlZCh0aGlzLnByb3BzLmNhbGwuY2FsbElkKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tcG9uZW50RGlkTW91bnQgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIExlZ2FjeUNhbGxIYW5kbGVyLmluc3RhbmNlLmFkZExpc3RlbmVyKFxuICAgICAgICAgICAgTGVnYWN5Q2FsbEhhbmRsZXJFdmVudC5TaWxlbmNlZENhbGxzQ2hhbmdlZCxcbiAgICAgICAgICAgIHRoaXMub25TaWxlbmNlZENhbGxzQ2hhbmdlZCxcbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgcHVibGljIGNvbXBvbmVudFdpbGxVbm1vdW50KCk6IHZvaWQge1xuICAgICAgICBMZWdhY3lDYWxsSGFuZGxlci5pbnN0YW5jZS5yZW1vdmVMaXN0ZW5lcihcbiAgICAgICAgICAgIExlZ2FjeUNhbGxIYW5kbGVyRXZlbnQuU2lsZW5jZWRDYWxsc0NoYW5nZWQsXG4gICAgICAgICAgICB0aGlzLm9uU2lsZW5jZWRDYWxsc0NoYW5nZWQsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblNpbGVuY2VkQ2FsbHNDaGFuZ2VkID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc2lsZW5jZWQ6IExlZ2FjeUNhbGxIYW5kbGVyLmluc3RhbmNlLmlzQ2FsbFNpbGVuY2VkKHRoaXMucHJvcHMuY2FsbC5jYWxsSWQpIH0pO1xuICAgIH07XG5cbiAgICBwcml2YXRlIG9uQW5zd2VyQ2xpY2sgPSAoZTogQnV0dG9uRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgTGVnYWN5Q2FsbEhhbmRsZXIuaW5zdGFuY2UuYW5zd2VyQ2FsbCh0aGlzLnJvb21JZCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgb25SZWplY3RDbGljayA9IChlOiBCdXR0b25FdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBMZWdhY3lDYWxsSGFuZGxlci5pbnN0YW5jZS5oYW5ndXBPclJlamVjdCh0aGlzLnJvb21JZCwgdHJ1ZSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgb25TaWxlbmNlQ2xpY2sgPSAoZTogQnV0dG9uRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29uc3QgY2FsbElkID0gdGhpcy5wcm9wcy5jYWxsLmNhbGxJZDtcbiAgICAgICAgdGhpcy5zdGF0ZS5zaWxlbmNlZFxuICAgICAgICAgICAgPyBMZWdhY3lDYWxsSGFuZGxlci5pbnN0YW5jZS51blNpbGVuY2VDYWxsKGNhbGxJZClcbiAgICAgICAgICAgIDogTGVnYWN5Q2FsbEhhbmRsZXIuaW5zdGFuY2Uuc2lsZW5jZUNhbGwoY2FsbElkKTtcbiAgICB9O1xuXG4gICAgcHVibGljIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xuICAgICAgICBjb25zdCByb29tID0gTWF0cml4Q2xpZW50UGVnLnNhZmVHZXQoKS5nZXRSb29tKHRoaXMucm9vbUlkKTtcbiAgICAgICAgY29uc3QgaXNWb2ljZSA9IHRoaXMucHJvcHMuY2FsbC50eXBlID09PSBDYWxsVHlwZS5Wb2ljZTtcbiAgICAgICAgY29uc3QgY2FsbEZvcmNlZFNpbGVudCA9IExlZ2FjeUNhbGxIYW5kbGVyLmluc3RhbmNlLmlzRm9yY2VkU2lsZW50KCk7XG5cbiAgICAgICAgbGV0IHNpbGVuY2VCdXR0b25Ub29sdGlwID0gdGhpcy5zdGF0ZS5zaWxlbmNlZCA/IF90KFwidm9pcHx1bnNpbGVuY2VcIikgOiBfdChcInZvaXB8c2lsZW5jZVwiKTtcbiAgICAgICAgaWYgKGNhbGxGb3JjZWRTaWxlbnQpIHtcbiAgICAgICAgICAgIHNpbGVuY2VCdXR0b25Ub29sdGlwID0gX3QoXCJ2b2lwfHNpbGVuY2VkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29udGVudENsYXNzID0gY2xhc3NOYW1lcyhcIm14X0luY29taW5nTGVnYWN5Q2FsbFRvYXN0X2NvbnRlbnRcIiwge1xuICAgICAgICAgICAgbXhfSW5jb21pbmdMZWdhY3lDYWxsVG9hc3RfY29udGVudF92b2ljZTogaXNWb2ljZSxcbiAgICAgICAgICAgIG14X0luY29taW5nTGVnYWN5Q2FsbFRvYXN0X2NvbnRlbnRfdmlkZW86ICFpc1ZvaWNlLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc2lsZW5jZUNsYXNzID0gY2xhc3NOYW1lcyhcIm14X0luY29taW5nTGVnYWN5Q2FsbFRvYXN0X2ljb25CdXR0b25cIiwge1xuICAgICAgICAgICAgbXhfSW5jb21pbmdMZWdhY3lDYWxsVG9hc3RfdW5TaWxlbmNlOiB0aGlzLnN0YXRlLnNpbGVuY2VkLFxuICAgICAgICAgICAgbXhfSW5jb21pbmdMZWdhY3lDYWxsVG9hc3Rfc2lsZW5jZTogIXRoaXMuc3RhdGUuc2lsZW5jZWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPFJvb21BdmF0YXIgcm9vbT17cm9vbSA/PyB1bmRlZmluZWR9IHNpemU9XCIzMnB4XCIgLz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y29udGVudENsYXNzfT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXhfTGVnYWN5Q2FsbEV2ZW50X2NhbGxlclwiPntyb29tID8gcm9vbS5uYW1lIDogX3QoXCJ2b2lwfHVua25vd25fY2FsbGVyXCIpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9MZWdhY3lDYWxsRXZlbnRfdHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9MZWdhY3lDYWxsRXZlbnRfdHlwZV9pY29uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc1ZvaWNlID8gX3QoXCJ2b2lwfHZvaWNlX2NhbGxcIikgOiBfdChcInZvaXB8dmlkZW9fY2FsbFwiKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfSW5jb21pbmdMZWdhY3lDYWxsVG9hc3RfYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9JbmNvbWluZ0xlZ2FjeUNhbGxUb2FzdF9idXR0b24gbXhfSW5jb21pbmdMZWdhY3lDYWxsVG9hc3RfYnV0dG9uX2RlY2xpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25SZWplY3RDbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ge190KFwiYWN0aW9ufGRlY2xpbmVcIil9IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQWNjZXNzaWJsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NpYmxlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXhfSW5jb21pbmdMZWdhY3lDYWxsVG9hc3RfYnV0dG9uIG14X0luY29taW5nTGVnYWN5Q2FsbFRvYXN0X2J1dHRvbl9hY2NlcHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25BbnN3ZXJDbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IHtfdChcImFjdGlvbnxhY2NlcHRcIil9IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQWNjZXNzaWJsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzaWxlbmNlQ2xhc3N9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtjYWxsRm9yY2VkU2lsZW50fVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uU2lsZW5jZUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17c2lsZW5jZUJ1dHRvblRvb2x0aXB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVdBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFHLGtCQUFBLEdBQUFDLHVCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxnQkFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sZ0JBQUEs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