matrix-react-sdk
Version:
SDK for matrix.org using React
121 lines (117 loc) • 19.1 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PollHistoryList = void 0;
var _react = _interopRequireDefault(require("react"));
var _classnames = _interopRequireDefault(require("classnames"));
var _languageHandler = require("../../../../languageHandler");
var _FilterTabGroup = require("../../elements/FilterTabGroup");
var _InlineSpinner = _interopRequireDefault(require("../../elements/InlineSpinner"));
var _PollListItem = require("./PollListItem");
var _PollListItemEnded = require("./PollListItemEnded");
var _AccessibleButton = _interopRequireDefault(require("../../elements/AccessibleButton"));
/*
Copyright 2024 New Vector Ltd.
Copyright 2023 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.
*/
const LoadingPolls = ({
noResultsYet
}) => /*#__PURE__*/_react.default.createElement("div", {
className: (0, _classnames.default)("mx_PollHistoryList_loading", {
mx_PollHistoryList_noResultsYet: noResultsYet
})
}, /*#__PURE__*/_react.default.createElement(_InlineSpinner.default, null), (0, _languageHandler._t)("right_panel|poll|loading"));
const LoadMorePolls = ({
isLoading,
loadMorePolls
}) => loadMorePolls ? /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, {
className: "mx_PollHistoryList_loadMorePolls",
kind: "link_inline",
onClick: () => loadMorePolls()
}, (0, _languageHandler._t)("right_panel|poll|load_more"), isLoading && /*#__PURE__*/_react.default.createElement(_InlineSpinner.default, null)) : null;
const ONE_DAY_MS = 60000 * 60 * 24;
const getNoResultsMessage = (filter, oldestEventTimestamp, loadMorePolls) => {
if (!loadMorePolls) {
return filter === "ACTIVE" ? (0, _languageHandler._t)("right_panel|poll|empty_active") : (0, _languageHandler._t)("right_panel|poll|empty_past");
}
// we don't know how much history has been fetched
if (!oldestEventTimestamp) {
return filter === "ACTIVE" ? (0, _languageHandler._t)("right_panel|poll|empty_active_load_more") : (0, _languageHandler._t)("right_panel|poll|empty_past_load_more");
}
const fetchedHistoryDaysCount = Math.ceil((Date.now() - oldestEventTimestamp) / ONE_DAY_MS);
return filter === "ACTIVE" ? (0, _languageHandler._t)("right_panel|poll|empty_active_load_more_n_days", {
count: fetchedHistoryDaysCount
}) : (0, _languageHandler._t)("right_panel|poll|empty_past_load_more_n_days", {
count: fetchedHistoryDaysCount
});
};
const NoResults = ({
filter,
isLoading,
oldestFetchedEventTimestamp,
loadMorePolls
}) => {
// we can't page the timeline anymore
// just use plain loader
if (!loadMorePolls && isLoading) {
return /*#__PURE__*/_react.default.createElement(LoadingPolls, {
noResultsYet: true
});
}
return /*#__PURE__*/_react.default.createElement("span", {
className: "mx_PollHistoryList_noResults"
}, getNoResultsMessage(filter, oldestFetchedEventTimestamp, loadMorePolls), !!loadMorePolls && /*#__PURE__*/_react.default.createElement(LoadMorePolls, {
loadMorePolls: loadMorePolls,
isLoading: isLoading
}));
};
const PollHistoryList = ({
pollStartEvents,
polls,
filter,
isLoading,
oldestFetchedEventTimestamp,
onFilterChange,
loadMorePolls,
onItemClick
}) => {
return /*#__PURE__*/_react.default.createElement("div", {
className: "mx_PollHistoryList"
}, /*#__PURE__*/_react.default.createElement(_FilterTabGroup.FilterTabGroup, {
name: "PollHistory_filter",
value: filter,
onFilterChange: onFilterChange,
tabs: [{
id: "ACTIVE",
label: "Active polls"
}, {
id: "ENDED",
label: "Past polls"
}]
}), !!pollStartEvents.length && /*#__PURE__*/_react.default.createElement("ol", {
className: (0, _classnames.default)("mx_PollHistoryList_list", `mx_PollHistoryList_list_${filter}`)
}, pollStartEvents.map(pollStartEvent => filter === "ACTIVE" ? /*#__PURE__*/_react.default.createElement(_PollListItem.PollListItem, {
key: pollStartEvent.getId(),
event: pollStartEvent,
onClick: () => onItemClick(pollStartEvent.getId())
}) : /*#__PURE__*/_react.default.createElement(_PollListItemEnded.PollListItemEnded, {
key: pollStartEvent.getId(),
event: pollStartEvent,
poll: polls.get(pollStartEvent.getId()),
onClick: () => onItemClick(pollStartEvent.getId())
})), isLoading && !loadMorePolls && /*#__PURE__*/_react.default.createElement(LoadingPolls, null), !!loadMorePolls && /*#__PURE__*/_react.default.createElement(LoadMorePolls, {
loadMorePolls: loadMorePolls,
isLoading: isLoading
})), !pollStartEvents.length && /*#__PURE__*/_react.default.createElement(NoResults, {
oldestFetchedEventTimestamp: oldestFetchedEventTimestamp,
isLoading: isLoading,
filter: filter,
loadMorePolls: loadMorePolls
}));
};
exports.PollHistoryList = PollHistoryList;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jbGFzc25hbWVzIiwiX2xhbmd1YWdlSGFuZGxlciIsIl9GaWx0ZXJUYWJHcm91cCIsIl9JbmxpbmVTcGlubmVyIiwiX1BvbGxMaXN0SXRlbSIsIl9Qb2xsTGlzdEl0ZW1FbmRlZCIsIl9BY2Nlc3NpYmxlQnV0dG9uIiwiTG9hZGluZ1BvbGxzIiwibm9SZXN1bHRzWWV0IiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJjbGFzc05hbWVzIiwibXhfUG9sbEhpc3RvcnlMaXN0X25vUmVzdWx0c1lldCIsIl90IiwiTG9hZE1vcmVQb2xscyIsImlzTG9hZGluZyIsImxvYWRNb3JlUG9sbHMiLCJraW5kIiwib25DbGljayIsIk9ORV9EQVlfTVMiLCJnZXROb1Jlc3VsdHNNZXNzYWdlIiwiZmlsdGVyIiwib2xkZXN0RXZlbnRUaW1lc3RhbXAiLCJmZXRjaGVkSGlzdG9yeURheXNDb3VudCIsIk1hdGgiLCJjZWlsIiwiRGF0ZSIsIm5vdyIsImNvdW50IiwiTm9SZXN1bHRzIiwib2xkZXN0RmV0Y2hlZEV2ZW50VGltZXN0YW1wIiwiUG9sbEhpc3RvcnlMaXN0IiwicG9sbFN0YXJ0RXZlbnRzIiwicG9sbHMiLCJvbkZpbHRlckNoYW5nZSIsIm9uSXRlbUNsaWNrIiwiRmlsdGVyVGFiR3JvdXAiLCJuYW1lIiwidmFsdWUiLCJ0YWJzIiwiaWQiLCJsYWJlbCIsImxlbmd0aCIsIm1hcCIsInBvbGxTdGFydEV2ZW50IiwiUG9sbExpc3RJdGVtIiwia2V5IiwiZ2V0SWQiLCJldmVudCIsIlBvbGxMaXN0SXRlbUVuZGVkIiwicG9sbCIsImdldCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy92aWV3cy9wb2xscy9wb2xsSGlzdG9yeS9Qb2xsSGlzdG9yeUxpc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIzIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCI7XG5pbXBvcnQgeyBNYXRyaXhFdmVudCwgUG9sbCB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcblxuaW1wb3J0IHsgX3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgeyBGaWx0ZXJUYWJHcm91cCB9IGZyb20gXCIuLi8uLi9lbGVtZW50cy9GaWx0ZXJUYWJHcm91cFwiO1xuaW1wb3J0IElubGluZVNwaW5uZXIgZnJvbSBcIi4uLy4uL2VsZW1lbnRzL0lubGluZVNwaW5uZXJcIjtcbmltcG9ydCB7IFBvbGxIaXN0b3J5RmlsdGVyIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IFBvbGxMaXN0SXRlbSB9IGZyb20gXCIuL1BvbGxMaXN0SXRlbVwiO1xuaW1wb3J0IHsgUG9sbExpc3RJdGVtRW5kZWQgfSBmcm9tIFwiLi9Qb2xsTGlzdEl0ZW1FbmRlZFwiO1xuaW1wb3J0IEFjY2Vzc2libGVCdXR0b24gZnJvbSBcIi4uLy4uL2VsZW1lbnRzL0FjY2Vzc2libGVCdXR0b25cIjtcblxuY29uc3QgTG9hZGluZ1BvbGxzOiBSZWFjdC5GQzx7IG5vUmVzdWx0c1lldD86IGJvb2xlYW4gfT4gPSAoeyBub1Jlc3VsdHNZZXQgfSkgPT4gKFxuICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFwibXhfUG9sbEhpc3RvcnlMaXN0X2xvYWRpbmdcIiwge1xuICAgICAgICAgICAgbXhfUG9sbEhpc3RvcnlMaXN0X25vUmVzdWx0c1lldDogbm9SZXN1bHRzWWV0LFxuICAgICAgICB9KX1cbiAgICA+XG4gICAgICAgIDxJbmxpbmVTcGlubmVyIC8+XG4gICAgICAgIHtfdChcInJpZ2h0X3BhbmVsfHBvbGx8bG9hZGluZ1wiKX1cbiAgICA8L2Rpdj5cbik7XG5cbmNvbnN0IExvYWRNb3JlUG9sbHM6IFJlYWN0LkZDPHsgbG9hZE1vcmVQb2xscz86ICgpID0+IHZvaWQ7IGlzTG9hZGluZz86IGJvb2xlYW4gfT4gPSAoeyBpc0xvYWRpbmcsIGxvYWRNb3JlUG9sbHMgfSkgPT5cbiAgICBsb2FkTW9yZVBvbGxzID8gKFxuICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPVwibXhfUG9sbEhpc3RvcnlMaXN0X2xvYWRNb3JlUG9sbHNcIlxuICAgICAgICAgICAga2luZD1cImxpbmtfaW5saW5lXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGxvYWRNb3JlUG9sbHMoKX1cbiAgICAgICAgPlxuICAgICAgICAgICAge190KFwicmlnaHRfcGFuZWx8cG9sbHxsb2FkX21vcmVcIil9XG4gICAgICAgICAgICB7aXNMb2FkaW5nICYmIDxJbmxpbmVTcGlubmVyIC8+fVxuICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgKSA6IG51bGw7XG5cbmNvbnN0IE9ORV9EQVlfTVMgPSA2MDAwMCAqIDYwICogMjQ7XG5jb25zdCBnZXROb1Jlc3VsdHNNZXNzYWdlID0gKFxuICAgIGZpbHRlcjogUG9sbEhpc3RvcnlGaWx0ZXIsXG4gICAgb2xkZXN0RXZlbnRUaW1lc3RhbXA/OiBudW1iZXIsXG4gICAgbG9hZE1vcmVQb2xscz86ICgpID0+IHZvaWQsXG4pOiBzdHJpbmcgPT4ge1xuICAgIGlmICghbG9hZE1vcmVQb2xscykge1xuICAgICAgICByZXR1cm4gZmlsdGVyID09PSBcIkFDVElWRVwiID8gX3QoXCJyaWdodF9wYW5lbHxwb2xsfGVtcHR5X2FjdGl2ZVwiKSA6IF90KFwicmlnaHRfcGFuZWx8cG9sbHxlbXB0eV9wYXN0XCIpO1xuICAgIH1cblxuICAgIC8vIHdlIGRvbid0IGtub3cgaG93IG11Y2ggaGlzdG9yeSBoYXMgYmVlbiBmZXRjaGVkXG4gICAgaWYgKCFvbGRlc3RFdmVudFRpbWVzdGFtcCkge1xuICAgICAgICByZXR1cm4gZmlsdGVyID09PSBcIkFDVElWRVwiXG4gICAgICAgICAgICA/IF90KFwicmlnaHRfcGFuZWx8cG9sbHxlbXB0eV9hY3RpdmVfbG9hZF9tb3JlXCIpXG4gICAgICAgICAgICA6IF90KFwicmlnaHRfcGFuZWx8cG9sbHxlbXB0eV9wYXN0X2xvYWRfbW9yZVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBmZXRjaGVkSGlzdG9yeURheXNDb3VudCA9IE1hdGguY2VpbCgoRGF0ZS5ub3coKSAtIG9sZGVzdEV2ZW50VGltZXN0YW1wKSAvIE9ORV9EQVlfTVMpO1xuICAgIHJldHVybiBmaWx0ZXIgPT09IFwiQUNUSVZFXCJcbiAgICAgICAgPyBfdChcInJpZ2h0X3BhbmVsfHBvbGx8ZW1wdHlfYWN0aXZlX2xvYWRfbW9yZV9uX2RheXNcIiwgeyBjb3VudDogZmV0Y2hlZEhpc3RvcnlEYXlzQ291bnQgfSlcbiAgICAgICAgOiBfdChcInJpZ2h0X3BhbmVsfHBvbGx8ZW1wdHlfcGFzdF9sb2FkX21vcmVfbl9kYXlzXCIsIHtcbiAgICAgICAgICAgICAgY291bnQ6IGZldGNoZWRIaXN0b3J5RGF5c0NvdW50LFxuICAgICAgICAgIH0pO1xufTtcblxuY29uc3QgTm9SZXN1bHRzOiBSZWFjdC5GQzx7XG4gICAgZmlsdGVyOiBQb2xsSGlzdG9yeUZpbHRlcjtcbiAgICBvbGRlc3RGZXRjaGVkRXZlbnRUaW1lc3RhbXA/OiBudW1iZXI7XG4gICAgbG9hZE1vcmVQb2xscz86ICgpID0+IHZvaWQ7XG4gICAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbn0+ID0gKHsgZmlsdGVyLCBpc0xvYWRpbmcsIG9sZGVzdEZldGNoZWRFdmVudFRpbWVzdGFtcCwgbG9hZE1vcmVQb2xscyB9KSA9PiB7XG4gICAgLy8gd2UgY2FuJ3QgcGFnZSB0aGUgdGltZWxpbmUgYW55bW9yZVxuICAgIC8vIGp1c3QgdXNlIHBsYWluIGxvYWRlclxuICAgIGlmICghbG9hZE1vcmVQb2xscyAmJiBpc0xvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuIDxMb2FkaW5nUG9sbHMgbm9SZXN1bHRzWWV0IC8+O1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm14X1BvbGxIaXN0b3J5TGlzdF9ub1Jlc3VsdHNcIj5cbiAgICAgICAgICAgIHtnZXROb1Jlc3VsdHNNZXNzYWdlKGZpbHRlciwgb2xkZXN0RmV0Y2hlZEV2ZW50VGltZXN0YW1wLCBsb2FkTW9yZVBvbGxzKX1cblxuICAgICAgICAgICAgeyEhbG9hZE1vcmVQb2xscyAmJiA8TG9hZE1vcmVQb2xscyBsb2FkTW9yZVBvbGxzPXtsb2FkTW9yZVBvbGxzfSBpc0xvYWRpbmc9e2lzTG9hZGluZ30gLz59XG4gICAgICAgIDwvc3Bhbj5cbiAgICApO1xufTtcblxudHlwZSBQb2xsSGlzdG9yeUxpc3RQcm9wcyA9IHtcbiAgICBwb2xsU3RhcnRFdmVudHM6IE1hdHJpeEV2ZW50W107XG4gICAgcG9sbHM6IE1hcDxzdHJpbmcsIFBvbGw+O1xuICAgIGZpbHRlcjogUG9sbEhpc3RvcnlGaWx0ZXI7XG4gICAgLyoqXG4gICAgICogc2VydmVyIHRzIG9mIHRoZSBvbGRlc3QgZmV0Y2hlZCBwb2xsXG4gICAgICogaWdub3JpbmcgZmlsdGVyXG4gICAgICogdXNlZCB0byByZW5kZXIgbm8gcmVzdWx0cyBpbiBsYXN0IHggZGF5cyBtZXNzYWdlXG4gICAgICogdW5kZWZpbmVkIHdoZW4gbm8gcG9sbHMgYXJlIGZvdW5kXG4gICAgICovXG4gICAgb2xkZXN0RmV0Y2hlZEV2ZW50VGltZXN0YW1wPzogbnVtYmVyO1xuICAgIG9uRmlsdGVyQ2hhbmdlOiAoZmlsdGVyOiBQb2xsSGlzdG9yeUZpbHRlcikgPT4gdm9pZDtcbiAgICBvbkl0ZW1DbGljazogKHBvbGxJZDogc3RyaW5nKSA9PiB2b2lkO1xuICAgIGxvYWRNb3JlUG9sbHM/OiAoKSA9PiB2b2lkO1xuICAgIGlzTG9hZGluZz86IGJvb2xlYW47XG59O1xuZXhwb3J0IGNvbnN0IFBvbGxIaXN0b3J5TGlzdDogUmVhY3QuRkM8UG9sbEhpc3RvcnlMaXN0UHJvcHM+ID0gKHtcbiAgICBwb2xsU3RhcnRFdmVudHMsXG4gICAgcG9sbHMsXG4gICAgZmlsdGVyLFxuICAgIGlzTG9hZGluZyxcbiAgICBvbGRlc3RGZXRjaGVkRXZlbnRUaW1lc3RhbXAsXG4gICAgb25GaWx0ZXJDaGFuZ2UsXG4gICAgbG9hZE1vcmVQb2xscyxcbiAgICBvbkl0ZW1DbGljayxcbn0pID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14X1BvbGxIaXN0b3J5TGlzdFwiPlxuICAgICAgICAgICAgPEZpbHRlclRhYkdyb3VwPFBvbGxIaXN0b3J5RmlsdGVyPlxuICAgICAgICAgICAgICAgIG5hbWU9XCJQb2xsSGlzdG9yeV9maWx0ZXJcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXtmaWx0ZXJ9XG4gICAgICAgICAgICAgICAgb25GaWx0ZXJDaGFuZ2U9e29uRmlsdGVyQ2hhbmdlfVxuICAgICAgICAgICAgICAgIHRhYnM9e1tcbiAgICAgICAgICAgICAgICAgICAgeyBpZDogXCJBQ1RJVkVcIiwgbGFiZWw6IFwiQWN0aXZlIHBvbGxzXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBpZDogXCJFTkRFRFwiLCBsYWJlbDogXCJQYXN0IHBvbGxzXCIgfSxcbiAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHshIXBvbGxTdGFydEV2ZW50cy5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICAgIDxvbCBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJteF9Qb2xsSGlzdG9yeUxpc3RfbGlzdFwiLCBgbXhfUG9sbEhpc3RvcnlMaXN0X2xpc3RfJHtmaWx0ZXJ9YCl9PlxuICAgICAgICAgICAgICAgICAgICB7cG9sbFN0YXJ0RXZlbnRzLm1hcCgocG9sbFN0YXJ0RXZlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPT09IFwiQUNUSVZFXCIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvbGxMaXN0SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3BvbGxTdGFydEV2ZW50LmdldElkKCkhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudD17cG9sbFN0YXJ0RXZlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uSXRlbUNsaWNrKHBvbGxTdGFydEV2ZW50LmdldElkKCkhKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9sbExpc3RJdGVtRW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtwb2xsU3RhcnRFdmVudC5nZXRJZCgpIX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ9e3BvbGxTdGFydEV2ZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xsPXtwb2xscy5nZXQocG9sbFN0YXJ0RXZlbnQuZ2V0SWQoKSEpIX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25JdGVtQ2xpY2socG9sbFN0YXJ0RXZlbnQuZ2V0SWQoKSEpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nICYmICFsb2FkTW9yZVBvbGxzICYmIDxMb2FkaW5nUG9sbHMgLz59XG4gICAgICAgICAgICAgICAgICAgIHshIWxvYWRNb3JlUG9sbHMgJiYgPExvYWRNb3JlUG9sbHMgbG9hZE1vcmVQb2xscz17bG9hZE1vcmVQb2xsc30gaXNMb2FkaW5nPXtpc0xvYWRpbmd9IC8+fVxuICAgICAgICAgICAgICAgIDwvb2w+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgeyFwb2xsU3RhcnRFdmVudHMubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgICA8Tm9SZXN1bHRzXG4gICAgICAgICAgICAgICAgICAgIG9sZGVzdEZldGNoZWRFdmVudFRpbWVzdGFtcD17b2xkZXN0RmV0Y2hlZEV2ZW50VGltZXN0YW1wfVxuICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyPXtmaWx0ZXJ9XG4gICAgICAgICAgICAgICAgICAgIGxvYWRNb3JlUG9sbHM9e2xvYWRNb3JlUG9sbHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQUUsZ0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGVBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGNBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFLLGFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGtCQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxpQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBbEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQWNBLE1BQU1RLFlBQWtE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