UNPKG

matrix-react-sdk

Version:
98 lines (95 loc) 15.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _reactFocusLock = _interopRequireDefault(require("react-focus-lock")); var _MatrixClientPeg = require("../../../MatrixClientPeg"); var _MatrixClientContext = _interopRequireDefault(require("../../../contexts/MatrixClientContext")); var _languageHandler = require("../../../languageHandler"); var _AccessibleButton = _interopRequireDefault(require("../elements/AccessibleButton")); var _KeyboardShortcuts = require("../../../accessibility/KeyboardShortcuts"); var _KeyBindingsManager = require("../../../KeyBindingsManager"); /* 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. */ /** * Scrollable dialog base from Compound (Web Components). */ class ScrollableBaseModal extends _react.default.PureComponent { constructor(props) { super(props); (0, _defineProperty2.default)(this, "onKeyDown", e => { const action = (0, _KeyBindingsManager.getKeyBindingsManager)().getAccessibilityAction(e); switch (action) { case _KeyboardShortcuts.KeyBindingAction.Escape: e.stopPropagation(); e.preventDefault(); this.cancel(); break; } }); (0, _defineProperty2.default)(this, "onCancel", () => { this.cancel(); }); (0, _defineProperty2.default)(this, "onSubmit", e => { e.stopPropagation(); e.preventDefault(); if (!this.state.canSubmit) return; // pretend the submit button was disabled this.submit(); }); } get matrixClient() { // XXX: The contract on MatrixClientContext says it is only available within a LoggedInView subtree, // given that modals function outside the MatrixChat React tree this simulates that. We don't want to // use safeGet as it throwing would mean we cannot use modals whilst the user isn't logged in. // The longer term solution is to move our ModalManager into the React tree to inherit contexts properly. return _MatrixClientPeg.MatrixClientPeg.get(); } render() { return /*#__PURE__*/_react.default.createElement(_MatrixClientContext.default.Provider, { value: this.matrixClient }, /*#__PURE__*/_react.default.createElement(_reactFocusLock.default, { returnFocus: true, lockProps: { onKeyDown: this.onKeyDown, role: "dialog", ["aria-labelledby"]: "mx_CompoundDialog_title", // Like BaseDialog, we'll just point this at the whole content ["aria-describedby"]: "mx_CompoundDialog_content" }, className: "mx_CompoundDialog mx_ScrollableBaseDialog" }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_CompoundDialog_header" }, /*#__PURE__*/_react.default.createElement("h1", null, this.state.title)), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { onClick: this.onCancel, className: "mx_CompoundDialog_cancelButton", "aria-label": (0, _languageHandler._t)("dialog_close_label") }), /*#__PURE__*/_react.default.createElement("form", { onSubmit: this.onSubmit, className: "mx_CompoundDialog_form" }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_CompoundDialog_content" }, this.renderContent()), /*#__PURE__*/_react.default.createElement("div", { className: "mx_CompoundDialog_footer" }, /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { onClick: this.onCancel, kind: "primary_outline" }, this.state.cancelLabel ?? (0, _languageHandler._t)("action|cancel")), /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { onClick: this.onSubmit, kind: "primary", disabled: !this.state.canSubmit, type: "submit", element: "button", className: "mx_Dialog_nonDialogButton" }, this.state.actionLabel))))); } } exports.default = ScrollableBaseModal; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdEZvY3VzTG9jayIsIl9NYXRyaXhDbGllbnRQZWciLCJfTWF0cml4Q2xpZW50Q29udGV4dCIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfQWNjZXNzaWJsZUJ1dHRvbiIsIl9LZXlib2FyZFNob3J0Y3V0cyIsIl9LZXlCaW5kaW5nc01hbmFnZXIiLCJTY3JvbGxhYmxlQmFzZU1vZGFsIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkZWZhdWx0IiwiZSIsImFjdGlvbiIsImdldEtleUJpbmRpbmdzTWFuYWdlciIsImdldEFjY2Vzc2liaWxpdHlBY3Rpb24iLCJLZXlCaW5kaW5nQWN0aW9uIiwiRXNjYXBlIiwic3RvcFByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJjYW5jZWwiLCJzdGF0ZSIsImNhblN1Ym1pdCIsInN1Ym1pdCIsIm1hdHJpeENsaWVudCIsIk1hdHJpeENsaWVudFBlZyIsImdldCIsInJlbmRlciIsImNyZWF0ZUVsZW1lbnQiLCJQcm92aWRlciIsInZhbHVlIiwicmV0dXJuRm9jdXMiLCJsb2NrUHJvcHMiLCJvbktleURvd24iLCJyb2xlIiwiY2xhc3NOYW1lIiwidGl0bGUiLCJvbkNsaWNrIiwib25DYW5jZWwiLCJfdCIsIm9uU3VibWl0IiwicmVuZGVyQ29udGVudCIsImtpbmQiLCJjYW5jZWxMYWJlbCIsImRpc2FibGVkIiwidHlwZSIsImVsZW1lbnQiLCJhY3Rpb25MYWJlbCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy92aWV3cy9kaWFsb2dzL1Njcm9sbGFibGVCYXNlTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCBSZWFjdCwgeyBGb3JtRXZlbnQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IE1hdHJpeENsaWVudCB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcbmltcG9ydCBGb2N1c0xvY2sgZnJvbSBcInJlYWN0LWZvY3VzLWxvY2tcIjtcblxuaW1wb3J0IHsgTWF0cml4Q2xpZW50UGVnIH0gZnJvbSBcIi4uLy4uLy4uL01hdHJpeENsaWVudFBlZ1wiO1xuaW1wb3J0IE1hdHJpeENsaWVudENvbnRleHQgZnJvbSBcIi4uLy4uLy4uL2NvbnRleHRzL01hdHJpeENsaWVudENvbnRleHRcIjtcbmltcG9ydCB7IF90IH0gZnJvbSBcIi4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IEFjY2Vzc2libGVCdXR0b24gZnJvbSBcIi4uL2VsZW1lbnRzL0FjY2Vzc2libGVCdXR0b25cIjtcbmltcG9ydCB7IEtleUJpbmRpbmdBY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vYWNjZXNzaWJpbGl0eS9LZXlib2FyZFNob3J0Y3V0c1wiO1xuaW1wb3J0IHsgZ2V0S2V5QmluZGluZ3NNYW5hZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL0tleUJpbmRpbmdzTWFuYWdlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTY3JvbGxhYmxlQmFzZVN0YXRlIHtcbiAgICBjYW5TdWJtaXQ6IGJvb2xlYW47XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBhY3Rpb25MYWJlbDogc3RyaW5nO1xuICAgIGNhbmNlbExhYmVsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNjcm9sbGFibGUgZGlhbG9nIGJhc2UgZnJvbSBDb21wb3VuZCAoV2ViIENvbXBvbmVudHMpLlxuICovXG5leHBvcnQgZGVmYXVsdCBhYnN0cmFjdCBjbGFzcyBTY3JvbGxhYmxlQmFzZU1vZGFsPFxuICAgIFRQcm9wcyBleHRlbmRzIHsgb25GaW5pc2hlZD86ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCB9LFxuICAgIFRTdGF0ZSBleHRlbmRzIElTY3JvbGxhYmxlQmFzZVN0YXRlLFxuPiBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8VFByb3BzLCBUU3RhdGU+IHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvcHM6IFRQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBtYXRyaXhDbGllbnQoKTogTWF0cml4Q2xpZW50IHtcbiAgICAgICAgLy8gWFhYOiBUaGUgY29udHJhY3Qgb24gTWF0cml4Q2xpZW50Q29udGV4dCBzYXlzIGl0IGlzIG9ubHkgYXZhaWxhYmxlIHdpdGhpbiBhIExvZ2dlZEluVmlldyBzdWJ0cmVlLFxuICAgICAgICAvLyBnaXZlbiB0aGF0IG1vZGFscyBmdW5jdGlvbiBvdXRzaWRlIHRoZSBNYXRyaXhDaGF0IFJlYWN0IHRyZWUgdGhpcyBzaW11bGF0ZXMgdGhhdC4gV2UgZG9uJ3Qgd2FudCB0b1xuICAgICAgICAvLyB1c2Ugc2FmZUdldCBhcyBpdCB0aHJvd2luZyB3b3VsZCBtZWFuIHdlIGNhbm5vdCB1c2UgbW9kYWxzIHdoaWxzdCB0aGUgdXNlciBpc24ndCBsb2dnZWQgaW4uXG4gICAgICAgIC8vIFRoZSBsb25nZXIgdGVybSBzb2x1dGlvbiBpcyB0byBtb3ZlIG91ciBNb2RhbE1hbmFnZXIgaW50byB0aGUgUmVhY3QgdHJlZSB0byBpbmhlcml0IGNvbnRleHRzIHByb3Blcmx5LlxuICAgICAgICByZXR1cm4gTWF0cml4Q2xpZW50UGVnLmdldCgpITtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uS2V5RG93biA9IChlOiBLZXlib2FyZEV2ZW50IHwgUmVhY3QuS2V5Ym9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBnZXRLZXlCaW5kaW5nc01hbmFnZXIoKS5nZXRBY2Nlc3NpYmlsaXR5QWN0aW9uKGUpO1xuICAgICAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgICAgICAgY2FzZSBLZXlCaW5kaW5nQWN0aW9uLkVzY2FwZTpcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgb25DYW5jZWwgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY2FuY2VsKCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgb25TdWJtaXQgPSAoZTogTW91c2VFdmVudCB8IEZvcm1FdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS5jYW5TdWJtaXQpIHJldHVybjsgLy8gcHJldGVuZCB0aGUgc3VibWl0IGJ1dHRvbiB3YXMgZGlzYWJsZWRcbiAgICAgICAgdGhpcy5zdWJtaXQoKTtcbiAgICB9O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGNhbmNlbCgpOiB2b2lkO1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzdWJtaXQoKTogdm9pZDtcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVuZGVyQ29udGVudCgpOiBSZWFjdC5SZWFjdE5vZGU7XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8TWF0cml4Q2xpZW50Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17dGhpcy5tYXRyaXhDbGllbnR9PlxuICAgICAgICAgICAgICAgIDxGb2N1c0xvY2tcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuRm9jdXM9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgIGxvY2tQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duOiB0aGlzLm9uS2V5RG93bixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU6IFwiZGlhbG9nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXCJhcmlhLWxhYmVsbGVkYnlcIl06IFwibXhfQ29tcG91bmREaWFsb2dfdGl0bGVcIixcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGlrZSBCYXNlRGlhbG9nLCB3ZSdsbCBqdXN0IHBvaW50IHRoaXMgYXQgdGhlIHdob2xlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcImFyaWEtZGVzY3JpYmVkYnlcIl06IFwibXhfQ29tcG91bmREaWFsb2dfY29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9Db21wb3VuZERpYWxvZyBteF9TY3JvbGxhYmxlQmFzZURpYWxvZ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X0NvbXBvdW5kRGlhbG9nX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgxPnt0aGlzLnN0YXRlLnRpdGxlfTwvaDE+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5vbkNhbmNlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm14X0NvbXBvdW5kRGlhbG9nX2NhbmNlbEJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtfdChcImRpYWxvZ19jbG9zZV9sYWJlbFwiKX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGZvcm0gb25TdWJtaXQ9e3RoaXMub25TdWJtaXR9IGNsYXNzTmFtZT1cIm14X0NvbXBvdW5kRGlhbG9nX2Zvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfQ29tcG91bmREaWFsb2dfY29udGVudFwiPnt0aGlzLnJlbmRlckNvbnRlbnQoKX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfQ29tcG91bmREaWFsb2dfZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc2libGVCdXR0b24gb25DbGljaz17dGhpcy5vbkNhbmNlbH0ga2luZD1cInByaW1hcnlfb3V0bGluZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5zdGF0ZS5jYW5jZWxMYWJlbCA/PyBfdChcImFjdGlvbnxjYW5jZWxcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BY2Nlc3NpYmxlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NpYmxlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25TdWJtaXR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0aGlzLnN0YXRlLmNhblN1Ym1pdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9EaWFsb2dfbm9uRGlhbG9nQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLmFjdGlvbkxhYmVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWNjZXNzaWJsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgICAgPC9Gb2N1c0xvY2s+XG4gICAgICAgICAgICA8L01hdHJpeENsaWVudENvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLGVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLGdCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxvQkFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksZ0JBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGlCQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxrQkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sbUJBQUEsR0FBQVAsT0FBQTtBQWpCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFvQkE7QUFDQTtBQUNBO0FBQ2UsTUFBZVEsbUJBQW1CLFNBR3ZDQyxjQUFLLENBQUNDLGFBQWEsQ0FBaUI7RUFDaENDLFdBQVdBLENBQUNDLEtBQWEsRUFBRTtJQUNqQyxLQUFLLENBQUNBLEtBQUssQ0FBQztJQUFDLElBQUFDLGdCQUFBLENBQUFDLE9BQUEscUJBV0lDLENBQXNDLElBQVc7TUFDbEUsTUFBTUMsTUFBTSxHQUFHLElBQUFDLHlDQUFxQixFQUFDLENBQUMsQ0FBQ0Msc0JBQXNCLENBQUNILENBQUMsQ0FBQztNQUNoRSxRQUFRQyxNQUFNO1FBQ1YsS0FBS0csbUNBQWdCLENBQUNDLE1BQU07VUFDeEJMLENBQUMsQ0FBQ00sZUFBZSxDQUFDLENBQUM7VUFDbkJOLENBQUMsQ0FBQ08sY0FBYyxDQUFDLENBQUM7VUFDbEIsSUFBSSxDQUFDQyxNQUFNLENBQUMsQ0FBQztVQUNiO01BQ1I7SUFDSixDQUFDO0lBQUEsSUFBQVYsZ0JBQUEsQ0FBQUMsT0FBQSxvQkFFa0IsTUFBWTtNQUMzQixJQUFJLENBQUNTLE1BQU0sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFBQSxJQUFBVixnQkFBQSxDQUFBQyxPQUFBLG9CQUVtQkMsQ0FBeUIsSUFBVztNQUNwREEsQ0FBQyxDQUFDTSxlQUFlLENBQUMsQ0FBQztNQUNuQk4sQ0FBQyxDQUFDTyxjQUFjLENBQUMsQ0FBQztNQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDRSxLQUFLLENBQUNDLFNBQVMsRUFBRSxPQUFPLENBQUM7TUFDbkMsSUFBSSxDQUFDQyxNQUFNLENBQUMsQ0FBQztJQUNqQixDQUFDO0VBOUJEO0VBRUEsSUFBY0MsWUFBWUEsQ0FBQSxFQUFpQjtJQUN2QztJQUNBO0lBQ0E7SUFDQTtJQUNBLE9BQU9DLGdDQUFlLENBQUNDLEdBQUcsQ0FBQyxDQUFDO0VBQ2hDO0VBNEJPQyxNQUFNQSxDQUFBLEVBQW9CO0lBQzdCLG9CQUNJaEMsTUFBQSxDQUFBZ0IsT0FBQSxDQUFBaUIsYUFBQSxDQUFDNUIsb0JBQUEsQ0FBQVcsT0FBbUIsQ0FBQ2tCLFFBQVE7TUFBQ0MsS0FBSyxFQUFFLElBQUksQ0FBQ047SUFBYSxnQkFDbkQ3QixNQUFBLENBQUFnQixPQUFBLENBQUFpQixhQUFBLENBQUM5QixlQUFBLENBQUFhLE9BQVM7TUFDTm9CLFdBQVcsRUFBRSxJQUFLO01BQ2xCQyxTQUFTLEVBQUU7UUFDUEMsU0FBUyxFQUFFLElBQUksQ0FBQ0EsU0FBUztRQUN6QkMsSUFBSSxFQUFFLFFBQVE7UUFDZCxDQUFDLGlCQUFpQixHQUFHLHlCQUF5QjtRQUU5QztRQUNBLENBQUMsa0JBQWtCLEdBQUc7TUFDMUIsQ0FBRTtNQUNGQyxTQUFTLEVBQUM7SUFBMkMsZ0JBRXJEeEMsTUFBQSxDQUFBZ0IsT0FBQSxDQUFBaUIsYUFBQTtNQUFLTyxTQUFTLEVBQUM7SUFBMEIsZ0JBQ3JDeEMsTUFBQSxDQUFBZ0IsT0FBQSxDQUFBaUIsYUFBQSxhQUFLLElBQUksQ0FBQ1AsS0FBSyxDQUFDZSxLQUFVLENBQ3pCLENBQUMsZUFDTnpDLE1BQUEsQ0FBQWdCLE9BQUEsQ0FBQWlCLGFBQUEsQ0FBQzFCLGlCQUFBLENBQUFTLE9BQWdCO01BQ2IwQixPQUFPLEVBQUUsSUFBSSxDQUFDQyxRQUFTO01BQ3ZCSCxTQUFTLEVBQUMsZ0NBQWdDO01BQzFDLGNBQVksSUFBQUksbUJBQUUsRUFBQyxvQkFBb0I7SUFBRSxDQUN4QyxDQUFDLGVBQ0Y1QyxNQUFBLENBQUFnQixPQUFBLENBQUFpQixhQUFBO01BQU1ZLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVM7TUFBQ0wsU0FBUyxFQUFDO0lBQXdCLGdCQUM3RHhDLE1BQUEsQ0FBQWdCLE9BQUEsQ0FBQWlCLGFBQUE7TUFBS08sU0FBUyxFQUFDO0lBQTJCLEdBQUUsSUFBSSxDQUFDTSxhQUFhLENBQUMsQ0FBTyxDQUFDLGVBQ3ZFOUMsTUFBQSxDQUFBZ0IsT0FBQSxDQUFBaUIsYUFBQTtNQUFLTyxTQUFTLEVBQUM7SUFBMEIsZ0JBQ3JDeEMsTUFBQSxDQUFBZ0IsT0FBQSxDQUFBaUIsYUFBQSxDQUFDMUIsaUJBQUEsQ0FBQVMsT0FBZ0I7TUFBQzBCLE9BQU8sRUFBRSxJQUFJLENBQUNDLFFBQVM7TUFBQ0ksSUFBSSxFQUFDO0lBQWlCLEdBQzNELElBQUksQ0FBQ3JCLEtBQUssQ0FBQ3NCLFdBQVcsSUFBSSxJQUFBSixtQkFBRSxFQUFDLGVBQWUsQ0FDL0IsQ0FBQyxlQUNuQjVDLE1BQUEsQ0FBQWdCLE9BQUEsQ0FBQWlCLGFBQUEsQ0FBQzFCLGlCQUFBLENBQUFTLE9BQWdCO01BQ2IwQixPQUFPLEVBQUUsSUFBSSxDQUFDRyxRQUFTO01BQ3ZCRSxJQUFJLEVBQUMsU0FBUztNQUNkRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUN2QixLQUFLLENBQUNDLFNBQVU7TUFDaEN1QixJQUFJLEVBQUMsUUFBUTtNQUNiQyxPQUFPLEVBQUMsUUFBUTtNQUNoQlgsU0FBUyxFQUFDO0lBQTJCLEdBRXBDLElBQUksQ0FBQ2QsS0FBSyxDQUFDMEIsV0FDRSxDQUNqQixDQUNILENBQ0MsQ0FDZSxDQUFDO0VBRXZDO0FBQ0o7QUFBQ0MsT0FBQSxDQUFBckMsT0FBQSxHQUFBTixtQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==