UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

169 lines (168 loc) 30.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.StyledInputLabel = exports.StyleSharingUrl = exports.SharingUrl = void 0; exports["default"] = ShareMapUrlModalFactory; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/node_modules/react")); var _styledComponents = _interopRequireWildcard(require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/node_modules/styled-components")); var _reactCopyToClipboard = require("react-copy-to-clipboard"); var _src = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/styles/src"); var _imageModalContainer = _interopRequireDefault(require("./image-modal-container")); var _styledComponents2 = require("../common/styled-components"); var _statusPanel = _interopRequireDefault(require("./status-panel")); var _src2 = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/localization/src"); var _useCloudListProvider2 = require("../hooks/use-cloud-list-provider"); var _providerSelect = require("./cloud-components/provider-select"); var _src3 = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/constants/src"); var _templateObject, _templateObject2, _templateObject3, _templateObject4; // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(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; } var StyledInputLabel = exports.StyledInputLabel = _styledComponents["default"].label(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n font-size: 12px;\n color: ", ";\n letter-spacing: 0.2px;\n"])), function (props) { return props.theme.textColorLT; }); var StyleSharingUrl = exports.StyleSharingUrl = _styledComponents["default"].div.attrs({ className: 'sharing-url' })(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n display: flex;\n margin-bottom: 14px;\n flex-direction: column;\n\n input {\n border-right: 0;\n }\n\n .button {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n"]))); var SharingUrl = exports.SharingUrl = function SharingUrl(_ref) { var url = _ref.url, _ref$message = _ref.message, message = _ref$message === void 0 ? '' : _ref$message; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), copied = _useState2[0], setCopy = _useState2[1]; return /*#__PURE__*/_react["default"].createElement(StyleSharingUrl, null, /*#__PURE__*/_react["default"].createElement(StyledInputLabel, null, message), /*#__PURE__*/_react["default"].createElement("div", { style: { display: 'flex' } }, /*#__PURE__*/_react["default"].createElement(_styledComponents2.InputLight, { type: "text", value: url, readOnly: true }), /*#__PURE__*/_react["default"].createElement(_reactCopyToClipboard.CopyToClipboard, { text: url, onCopy: function onCopy() { return setCopy(true); } }, /*#__PURE__*/_react["default"].createElement(_styledComponents2.Button, { width: "80px" }, copied ? 'Copied!' : 'Copy')))); }; var nop = function nop() { return; }; var StyledShareMapModal = (0, _styledComponents["default"])(_styledComponents2.StyledModalContent)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 24px 72px 40px 72px;\n margin: 0 -72px -40px -72px;\n display: flex;\n flex-direction: column;\n"]))); var StyledInnerDiv = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 500px;\n"]))); var UNDERLINE_TEXT_DECORATION_STYLE = { textDecoration: 'underline' }; var ShareMapHeader = function ShareMapHeader(_ref2) { var cloudProviders = _ref2.cloudProviders; var shareableCloudProviders = (0, _react.useMemo)(function () { return cloudProviders.filter(function (cp) { return cp.hasSharingUrl(); }); }, [cloudProviders]); return /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledExportSection, null, /*#__PURE__*/_react["default"].createElement("div", { className: "description" }, /*#__PURE__*/_react["default"].createElement("div", { className: "title" }, /*#__PURE__*/_react["default"].createElement(_src2.FormattedMessage, { id: 'modal.shareMap.title' }))), /*#__PURE__*/_react["default"].createElement(_providerSelect.ProviderSelect, { cloudProviders: shareableCloudProviders })); }; function ShareMapUrlModalFactory() { var ShareMapUrlModal = function ShareMapUrlModal(_ref3) { var _ref3$isProviderLoadi = _ref3.isProviderLoading, isProviderLoading = _ref3$isProviderLoadi === void 0 ? false : _ref3$isProviderLoadi, _ref3$onExport = _ref3.onExport, onExport = _ref3$onExport === void 0 ? nop : _ref3$onExport, _ref3$providerError = _ref3.providerError, providerError = _ref3$providerError === void 0 ? null : _ref3$providerError, _ref3$successInfo = _ref3.successInfo, successInfo = _ref3$successInfo === void 0 ? {} : _ref3$successInfo, _ref3$onUpdateImageSe = _ref3.onUpdateImageSetting, onUpdateImageSetting = _ref3$onUpdateImageSe === void 0 ? nop : _ref3$onUpdateImageSe, cleanupExportImage = _ref3.cleanupExportImage; var _useCloudListProvider = (0, _useCloudListProvider2.useCloudListProvider)(), provider = _useCloudListProvider.provider, cloudProviders = _useCloudListProvider.cloudProviders; var shareUrl = successInfo.shareUrl, folderLink = successInfo.folderLink; (0, _react.useEffect)(function () { if (provider) { onExport(provider); } }, [onExport, provider]); return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, { theme: _src.themeLT }, /*#__PURE__*/_react["default"].createElement(_imageModalContainer["default"], { provider: provider, onUpdateImageSetting: onUpdateImageSetting, cleanupExportImage: cleanupExportImage }, /*#__PURE__*/_react["default"].createElement(StyledShareMapModal, { className: "export-cloud-modal" }, /*#__PURE__*/_react["default"].createElement(ShareMapHeader, { cloudProviders: cloudProviders }), provider !== null && provider !== void 0 && provider.hasSharingUrl() ? /*#__PURE__*/_react["default"].createElement(StyledInnerDiv, { "data-testid": _src3.dataTestIds.providerShareMap }, /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledExportSection, null, /*#__PURE__*/_react["default"].createElement("div", { className: "description" }, /*#__PURE__*/_react["default"].createElement("div", { className: "title" }, /*#__PURE__*/_react["default"].createElement(_src2.FormattedMessage, { id: 'modal.shareMap.shareUriTitle' })), /*#__PURE__*/_react["default"].createElement("div", { className: "subtitle" }, /*#__PURE__*/_react["default"].createElement(_src2.FormattedMessage, { id: 'modal.shareMap.shareUriSubtitle' }))), /*#__PURE__*/_react["default"].createElement("div", { className: "selection" }, /*#__PURE__*/_react["default"].createElement("div", { className: "title warning" }, /*#__PURE__*/_react["default"].createElement(_src2.FormattedMessage, { id: 'modal.shareMap.shareDisclaimer' })))), /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledExportSection, { disabled: isProviderLoading }, /*#__PURE__*/_react["default"].createElement("div", { className: "description" }, /*#__PURE__*/_react["default"].createElement("div", { className: "title" }, /*#__PURE__*/_react["default"].createElement(_src2.FormattedMessage, { id: 'modal.shareMap.cloudTitle' })), /*#__PURE__*/_react["default"].createElement("div", { className: "subtitle" }, /*#__PURE__*/_react["default"].createElement(_src2.FormattedMessage, { id: 'modal.shareMap.cloudSubtitle' })))), isProviderLoading || providerError ? /*#__PURE__*/_react["default"].createElement(_statusPanel["default"], { isLoading: isProviderLoading, error: providerError, providerIcon: provider.icon }) : null, shareUrl && /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledExportSection, null, /*#__PURE__*/_react["default"].createElement("div", { className: "description" }, /*#__PURE__*/_react["default"].createElement("div", { className: "title" }, "Share Url")), /*#__PURE__*/_react["default"].createElement("div", { className: "selection" }, /*#__PURE__*/_react["default"].createElement(SharingUrl, { key: 0, url: shareUrl }), provider && folderLink && /*#__PURE__*/_react["default"].createElement("a", { key: 1, href: folderLink, target: "_blank", rel: "noopener noreferrer", style: UNDERLINE_TEXT_DECORATION_STYLE }, provider.name)))) : null))); }; return ShareMapUrlModal; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZWFjdENvcHlUb0NsaXBib2FyZCIsIl9zcmMiLCJfaW1hZ2VNb2RhbENvbnRhaW5lciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfc3RhdHVzUGFuZWwiLCJfc3JjMiIsIl91c2VDbG91ZExpc3RQcm92aWRlcjIiLCJfcHJvdmlkZXJTZWxlY3QiLCJfc3JjMyIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlN0eWxlZElucHV0TGFiZWwiLCJleHBvcnRzIiwic3R5bGVkIiwibGFiZWwiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJ0ZXh0Q29sb3JMVCIsIlN0eWxlU2hhcmluZ1VybCIsImRpdiIsImF0dHJzIiwiY2xhc3NOYW1lIiwiU2hhcmluZ1VybCIsIl9yZWYiLCJ1cmwiLCJfcmVmJG1lc3NhZ2UiLCJtZXNzYWdlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiY29waWVkIiwic2V0Q29weSIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsImRpc3BsYXkiLCJJbnB1dExpZ2h0IiwidHlwZSIsInZhbHVlIiwicmVhZE9ubHkiLCJDb3B5VG9DbGlwYm9hcmQiLCJ0ZXh0Iiwib25Db3B5IiwiQnV0dG9uIiwid2lkdGgiLCJub3AiLCJTdHlsZWRTaGFyZU1hcE1vZGFsIiwiU3R5bGVkTW9kYWxDb250ZW50IiwiU3R5bGVkSW5uZXJEaXYiLCJVTkRFUkxJTkVfVEVYVF9ERUNPUkFUSU9OX1NUWUxFIiwidGV4dERlY29yYXRpb24iLCJTaGFyZU1hcEhlYWRlciIsIl9yZWYyIiwiY2xvdWRQcm92aWRlcnMiLCJzaGFyZWFibGVDbG91ZFByb3ZpZGVycyIsInVzZU1lbW8iLCJmaWx0ZXIiLCJjcCIsImhhc1NoYXJpbmdVcmwiLCJTdHlsZWRFeHBvcnRTZWN0aW9uIiwiRm9ybWF0dGVkTWVzc2FnZSIsImlkIiwiUHJvdmlkZXJTZWxlY3QiLCJTaGFyZU1hcFVybE1vZGFsRmFjdG9yeSIsIlNoYXJlTWFwVXJsTW9kYWwiLCJfcmVmMyIsIl9yZWYzJGlzUHJvdmlkZXJMb2FkaSIsImlzUHJvdmlkZXJMb2FkaW5nIiwiX3JlZjMkb25FeHBvcnQiLCJvbkV4cG9ydCIsIl9yZWYzJHByb3ZpZGVyRXJyb3IiLCJwcm92aWRlckVycm9yIiwiX3JlZjMkc3VjY2Vzc0luZm8iLCJzdWNjZXNzSW5mbyIsIl9yZWYzJG9uVXBkYXRlSW1hZ2VTZSIsIm9uVXBkYXRlSW1hZ2VTZXR0aW5nIiwiY2xlYW51cEV4cG9ydEltYWdlIiwiX3VzZUNsb3VkTGlzdFByb3ZpZGVyIiwidXNlQ2xvdWRMaXN0UHJvdmlkZXIiLCJwcm92aWRlciIsInNoYXJlVXJsIiwiZm9sZGVyTGluayIsInVzZUVmZmVjdCIsIlRoZW1lUHJvdmlkZXIiLCJ0aGVtZUxUIiwiZGF0YVRlc3RJZHMiLCJwcm92aWRlclNoYXJlTWFwIiwiZGlzYWJsZWQiLCJpc0xvYWRpbmciLCJlcnJvciIsInByb3ZpZGVySWNvbiIsImljb24iLCJrZXkiLCJocmVmIiwidGFyZ2V0IiwicmVsIiwibmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NyYy9tb2RhbHMvc2hhcmUtbWFwLW1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7VGhlbWVQcm92aWRlcn0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtDb3B5VG9DbGlwYm9hcmR9IGZyb20gJ3JlYWN0LWNvcHktdG8tY2xpcGJvYXJkJztcbmltcG9ydCB7dGhlbWVMVH0gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IEltYWdlTW9kYWxDb250YWluZXIsIHtJbWFnZU1vZGFsQ29udGFpbmVyUHJvcHN9IGZyb20gJy4vaW1hZ2UtbW9kYWwtY29udGFpbmVyJztcblxuaW1wb3J0IHtcbiAgU3R5bGVkTW9kYWxDb250ZW50LFxuICBTdHlsZWRFeHBvcnRTZWN0aW9uLFxuICBJbnB1dExpZ2h0LFxuICBCdXR0b25cbn0gZnJvbSAnLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBTdGF0dXNQYW5lbCBmcm9tICcuL3N0YXR1cy1wYW5lbCc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7dXNlQ2xvdWRMaXN0UHJvdmlkZXJ9IGZyb20gJy4uL2hvb2tzL3VzZS1jbG91ZC1saXN0LXByb3ZpZGVyJztcbmltcG9ydCB7UHJvdmlkZXJTZWxlY3R9IGZyb20gJy4vY2xvdWQtY29tcG9uZW50cy9wcm92aWRlci1zZWxlY3QnO1xuaW1wb3J0IHtQcm92aWRlcn0gZnJvbSAnQGtlcGxlci5nbC9jbG91ZC1wcm92aWRlcnMnO1xuaW1wb3J0IHtjbGVhbnVwRXhwb3J0SW1hZ2UgYXMgY2xlYW51cEV4cG9ydEltYWdlQWN0aW9ufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtkYXRhVGVzdElkc30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkSW5wdXRMYWJlbCA9IHN0eWxlZC5sYWJlbGBcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JMVH07XG4gIGxldHRlci1zcGFjaW5nOiAwLjJweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBTdHlsZVNoYXJpbmdVcmwgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnc2hhcmluZy11cmwnXG59KWBcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1hcmdpbi1ib3R0b206IDE0cHg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgaW5wdXQge1xuICAgIGJvcmRlci1yaWdodDogMDtcbiAgfVxuXG4gIC5idXR0b24ge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgfVxuYDtcblxuaW50ZXJmYWNlIFNoYXJpbmdVcmxQcm9wcyB7XG4gIHVybDogc3RyaW5nO1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgU2hhcmluZ1VybDogUmVhY3QuRkM8U2hhcmluZ1VybFByb3BzPiA9ICh7dXJsLCBtZXNzYWdlID0gJyd9KSA9PiB7XG4gIGNvbnN0IFtjb3BpZWQsIHNldENvcHldID0gdXNlU3RhdGUoZmFsc2UpO1xuICByZXR1cm4gKFxuICAgIDxTdHlsZVNoYXJpbmdVcmw+XG4gICAgICA8U3R5bGVkSW5wdXRMYWJlbD57bWVzc2FnZX08L1N0eWxlZElucHV0TGFiZWw+XG4gICAgICA8ZGl2IHN0eWxlPXt7ZGlzcGxheTogJ2ZsZXgnfX0+XG4gICAgICAgIDxJbnB1dExpZ2h0IHR5cGU9XCJ0ZXh0XCIgdmFsdWU9e3VybH0gcmVhZE9ubHkgLz5cbiAgICAgICAgPENvcHlUb0NsaXBib2FyZCB0ZXh0PXt1cmx9IG9uQ29weT17KCkgPT4gc2V0Q29weSh0cnVlKX0+XG4gICAgICAgICAgPEJ1dHRvbiB3aWR0aD1cIjgwcHhcIj57Y29waWVkID8gJ0NvcGllZCEnIDogJ0NvcHknfTwvQnV0dG9uPlxuICAgICAgICA8L0NvcHlUb0NsaXBib2FyZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvU3R5bGVTaGFyaW5nVXJsPlxuICApO1xufTtcbmNvbnN0IG5vcCA9ICgpID0+IHtcbiAgcmV0dXJuO1xufTtcblxuY29uc3QgU3R5bGVkU2hhcmVNYXBNb2RhbCA9IHN0eWxlZChTdHlsZWRNb2RhbENvbnRlbnQpYFxuICBwYWRkaW5nOiAyNHB4IDcycHggNDBweCA3MnB4O1xuICBtYXJnaW46IDAgLTcycHggLTQwcHggLTcycHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5gO1xuXG5jb25zdCBTdHlsZWRJbm5lckRpdiA9IHN0eWxlZC5kaXZgXG4gIG1pbi1oZWlnaHQ6IDUwMHB4O1xuYDtcblxuY29uc3QgVU5ERVJMSU5FX1RFWFRfREVDT1JBVElPTl9TVFlMRSA9IHt0ZXh0RGVjb3JhdGlvbjogJ3VuZGVybGluZSd9O1xuXG5jb25zdCBTaGFyZU1hcEhlYWRlciA9ICh7Y2xvdWRQcm92aWRlcnN9KSA9PiB7XG4gIGNvbnN0IHNoYXJlYWJsZUNsb3VkUHJvdmlkZXJzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBjbG91ZFByb3ZpZGVycy5maWx0ZXIoY3AgPT4gY3AuaGFzU2hhcmluZ1VybCgpKSxcbiAgICBbY2xvdWRQcm92aWRlcnNdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRXhwb3J0U2VjdGlvbj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aXRsZVwiPlxuICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbW9kYWwuc2hhcmVNYXAudGl0bGUnfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPFByb3ZpZGVyU2VsZWN0IGNsb3VkUHJvdmlkZXJzPXtzaGFyZWFibGVDbG91ZFByb3ZpZGVyc30gLz5cbiAgICA8L1N0eWxlZEV4cG9ydFNlY3Rpb24+XG4gICk7XG59O1xuXG5pbnRlcmZhY2UgU2hhcmVNYXBVcmxNb2RhbEZhY3RvcnlQcm9wcyB7XG4gIGlzUHJvdmlkZXJMb2FkaW5nPzogYm9vbGVhbjtcbiAgb25FeHBvcnQ/OiAocHJvdmlkZXI6IFByb3ZpZGVyKSA9PiB2b2lkO1xuICBwcm92aWRlckVycm9yPzogc3RyaW5nO1xuICBzdWNjZXNzSW5mbz86IHtzaGFyZVVybD86IHN0cmluZzsgZm9sZGVyTGluaz86IHN0cmluZ307XG4gIG9uVXBkYXRlSW1hZ2VTZXR0aW5nOiBJbWFnZU1vZGFsQ29udGFpbmVyUHJvcHNbJ29uVXBkYXRlSW1hZ2VTZXR0aW5nJ107XG4gIGNsZWFudXBFeHBvcnRJbWFnZTogdHlwZW9mIGNsZWFudXBFeHBvcnRJbWFnZUFjdGlvbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2hhcmVNYXBVcmxNb2RhbEZhY3RvcnkoKSB7XG4gIGNvbnN0IFNoYXJlTWFwVXJsTW9kYWw6IFJlYWN0LkZDPFNoYXJlTWFwVXJsTW9kYWxGYWN0b3J5UHJvcHM+ID0gKHtcbiAgICBpc1Byb3ZpZGVyTG9hZGluZyA9IGZhbHNlLFxuICAgIG9uRXhwb3J0ID0gbm9wLFxuICAgIHByb3ZpZGVyRXJyb3IgPSBudWxsLFxuICAgIHN1Y2Nlc3NJbmZvID0ge30sXG4gICAgb25VcGRhdGVJbWFnZVNldHRpbmcgPSBub3AsXG4gICAgY2xlYW51cEV4cG9ydEltYWdlXG4gIH0pID0+IHtcbiAgICBjb25zdCB7cHJvdmlkZXIsIGNsb3VkUHJvdmlkZXJzfSA9IHVzZUNsb3VkTGlzdFByb3ZpZGVyKCk7XG4gICAgY29uc3Qge3NoYXJlVXJsLCBmb2xkZXJMaW5rfSA9IHN1Y2Nlc3NJbmZvO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChwcm92aWRlcikge1xuICAgICAgICBvbkV4cG9ydChwcm92aWRlcik7XG4gICAgICB9XG4gICAgfSwgW29uRXhwb3J0LCBwcm92aWRlcl0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZUxUfT5cbiAgICAgICAgPEltYWdlTW9kYWxDb250YWluZXJcbiAgICAgICAgICBwcm92aWRlcj17cHJvdmlkZXJ9XG4gICAgICAgICAgb25VcGRhdGVJbWFnZVNldHRpbmc9e29uVXBkYXRlSW1hZ2VTZXR0aW5nfVxuICAgICAgICAgIGNsZWFudXBFeHBvcnRJbWFnZT17Y2xlYW51cEV4cG9ydEltYWdlfVxuICAgICAgICA+XG4gICAgICAgICAgPFN0eWxlZFNoYXJlTWFwTW9kYWwgY2xhc3NOYW1lPVwiZXhwb3J0LWNsb3VkLW1vZGFsXCI+XG4gICAgICAgICAgICA8U2hhcmVNYXBIZWFkZXIgY2xvdWRQcm92aWRlcnM9e2Nsb3VkUHJvdmlkZXJzfSAvPlxuICAgICAgICAgICAge3Byb3ZpZGVyPy5oYXNTaGFyaW5nVXJsKCkgPyAoXG4gICAgICAgICAgICAgIDxTdHlsZWRJbm5lckRpdiBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZHMucHJvdmlkZXJTaGFyZU1hcH0+XG4gICAgICAgICAgICAgICAgPFN0eWxlZEV4cG9ydFNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLnNoYXJlTWFwLnNoYXJlVXJpVGl0bGUnfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbW9kYWwuc2hhcmVNYXAuc2hhcmVVcmlTdWJ0aXRsZSd9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNlbGVjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlIHdhcm5pbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLnNoYXJlTWFwLnNoYXJlRGlzY2xhaW1lcid9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRFeHBvcnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRFeHBvcnRTZWN0aW9uIGRpc2FibGVkPXtpc1Byb3ZpZGVyTG9hZGluZ30+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLnNoYXJlTWFwLmNsb3VkVGl0bGUnfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbW9kYWwuc2hhcmVNYXAuY2xvdWRTdWJ0aXRsZSd9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRFeHBvcnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgIHtpc1Byb3ZpZGVyTG9hZGluZyB8fCBwcm92aWRlckVycm9yID8gKFxuICAgICAgICAgICAgICAgICAgPFN0YXR1c1BhbmVsXG4gICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZz17aXNQcm92aWRlckxvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgIGVycm9yPXtwcm92aWRlckVycm9yfVxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlckljb249e3Byb3ZpZGVyLmljb259XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIHtzaGFyZVVybCAmJiAoXG4gICAgICAgICAgICAgICAgICA8U3R5bGVkRXhwb3J0U2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj5TaGFyZSBVcmw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2VsZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFNoYXJpbmdVcmwga2V5PXswfSB1cmw9e3NoYXJlVXJsfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIHtwcm92aWRlciAmJiBmb2xkZXJMaW5rICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17Zm9sZGVyTGlua31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtVTkRFUkxJTkVfVEVYVF9ERUNPUkFUSU9OX1NUWUxFfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvdmlkZXIubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvU3R5bGVkRXhwb3J0U2VjdGlvbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L1N0eWxlZElubmVyRGl2PlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9TdHlsZWRTaGFyZU1hcE1vZGFsPlxuICAgICAgICA8L0ltYWdlTW9kYWxDb250YWluZXI+XG4gICAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gU2hhcmVNYXBVcmxNb2RhbDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUscUJBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLElBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLG9CQUFBLEdBQUFDLHNCQUFBLENBQUFMLE9BQUE7QUFFQSxJQUFBTSxrQkFBQSxHQUFBTixPQUFBO0FBTUEsSUFBQU8sWUFBQSxHQUFBRixzQkFBQSxDQUFBTCxPQUFBO0FBQ0EsSUFBQVEsS0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsc0JBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLGVBQUEsR0FBQVYsT0FBQTtBQUdBLElBQUFXLEtBQUEsR0FBQVgsT0FBQTtBQUFpRCxJQUFBWSxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBckJqRDtBQUNBO0FBQUEsU0FB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