kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
135 lines (133 loc) • 21.5 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _react = _interopRequireDefault(require("@tippyjs/react"));
var _react2 = _interopRequireWildcard(require("react"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _context = require("../context");
var _excluded = ["children", "arrow", "isLightTheme"],
_excluded2 = ["children", "render", "duration", "arrow", "isLightTheme", "className"];
var _templateObject, _templateObject2; // 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 TippyArrow = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n width: 15px;\n height: 15px;\n fill: ", ";\n text-align: initial;\n\n > svg {\n position: absolute;\n }\n"])), function (props) {
return props.theme.tooltipBg;
});
// eslint-disable-next-line @typescript-eslint/no-unused-vars
var TippyTooltipContent = (0, _styledComponents["default"])(function (_ref) {
var children = _ref.children,
arrow = _ref.arrow,
isLightTheme = _ref.isLightTheme,
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
return /*#__PURE__*/_react2["default"].createElement("div", props, children, arrow ? /*#__PURE__*/_react2["default"].createElement(TippyArrow, {
className: "svg-arrow",
"data-popper-arrow": ""
}, /*#__PURE__*/_react2["default"].createElement("svg", {
width: 15,
height: 15
}, /*#__PURE__*/_react2["default"].createElement("path", {
d: "M2,7.5 7.5,2 13,7.5Z"
}))) : null);
})(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-weight: 400;\n padding: 7px 18px;\n box-shadow: ", ";\n background-color: ", ";\n color: ", ";\n border-radius: ", ";\n ", "\n"])), function (props) {
return props.theme.fontFamily;
}, function (props) {
return props.theme.tooltipFontSize;
}, function (props) {
return props.isLightTheme ? props.theme.panelBoxShadow : props.theme.tooltipBoxShadow;
}, function (props) {
return props.isLightTheme ? props.theme.tooltipBgLT : props.theme.tooltipBg;
}, function (props) {
return props.isLightTheme ? props.theme.tooltipColorLT : props.theme.tooltipColor;
}, function (props) {
return props.theme.primaryBtnRadius;
}, function (props) {
return props.arrow ? "\n &[data-placement^='top'] > .svg-arrow {\n bottom: 0;\n &::after,\n > svg {\n top: 7px;\n transform: rotate(180deg);\n }\n }\n\n &[data-placement^='bottom'] > .svg-arrow {\n top: 0;\n > svg {\n bottom: 7px;\n }\n }\n\n &[data-placement^='left'] > .svg-arrow {\n right: 0;\n &::after,\n > svg {\n transform: rotate(90deg);\n left: 7px;\n }\n }\n\n &[data-placement^='right'] > .svg-arrow {\n left: 0;\n &::after,\n > svg {\n transform: rotate(-90deg);\n right: 7px;\n }\n }\n " : '';
});
var TippyTooltip = function TippyTooltip(_ref2) {
var children = _ref2.children,
_render = _ref2.render,
_ref2$duration = _ref2.duration,
duration = _ref2$duration === void 0 ? 200 : _ref2$duration,
_ref2$arrow = _ref2.arrow,
arrow = _ref2$arrow === void 0 ? true : _ref2$arrow,
_ref2$isLightTheme = _ref2.isLightTheme,
isLightTheme = _ref2$isLightTheme === void 0 ? false : _ref2$isLightTheme,
className = _ref2.className,
rest = (0, _objectWithoutProperties2["default"])(_ref2, _excluded2);
var _useState = (0, _react2.useState)(0),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
opacity = _useState2[0],
setOpacity = _useState2[1];
var _useState3 = (0, _react2.useState)(null),
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
timer = _useState4[0],
setTimer = _useState4[1];
function onMount() {
setOpacity(1);
if (timer) {
// @ts-ignore
clearTimeout(timer);
}
}
function onHide(instance) {
var unmount = instance.unmount;
var timeout = setTimeout(function () {
var _instance$state;
if (!((_instance$state = instance.state) !== null && _instance$state !== void 0 && _instance$state.isDestroyed)) {
unmount();
}
}, duration[0] || duration);
// @ts-ignore
setTimer(timeout);
setOpacity(0);
}
var skipNextShow = (0, _react2.useRef)(false);
var onTrigger = (0, _react2.useCallback)(function (instance, event) {
if (event instanceof MouseEvent && event.buttons > 0) {
// if the user is holding down the mouse button, e.g. while dragging, we won't show the tooltip
skipNextShow.current = true;
} else {
skipNextShow.current = false;
}
}, []);
var onShow = (0, _react2.useCallback)(function () {
if (skipNextShow.current) {
return false;
}
return;
}, []);
return /*#__PURE__*/_react2["default"].createElement(_context.RootContext.Consumer, null, function (context) {
return /*#__PURE__*/_react2["default"].createElement(_react["default"], (0, _extends2["default"])({}, rest, {
// Using document.body would result in the CSS styles not being applied
// to the tooltip content when embedding the map widget as a Shadow DOM element.
appendTo: (context === null || context === void 0 ? void 0 : context.current) || 'parent',
animation: true,
render: function render(attrs) {
return /*#__PURE__*/_react2["default"].createElement(TippyTooltipContent, (0, _extends2["default"])({}, attrs, {
className: className,
style: {
opacity: opacity,
transition: "opacity ".concat(duration, "ms")
},
arrow: arrow,
isLightTheme: isLightTheme
}), _render === null || _render === void 0 ? void 0 : _render(attrs));
},
onMount: onMount,
onHide: onHide,
onTrigger: onTrigger,
onShow: onShow
}), children);
});
};
var _default = exports["default"] = TippyTooltip;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2NvbnRleHQiLCJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlRpcHB5QXJyb3ciLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJ0b29sdGlwQmciLCJUaXBweVRvb2x0aXBDb250ZW50IiwiX3JlZiIsImNoaWxkcmVuIiwiYXJyb3ciLCJpc0xpZ2h0VGhlbWUiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIndpZHRoIiwiaGVpZ2h0IiwiZCIsImZvbnRGYW1pbHkiLCJ0b29sdGlwRm9udFNpemUiLCJwYW5lbEJveFNoYWRvdyIsInRvb2x0aXBCb3hTaGFkb3ciLCJ0b29sdGlwQmdMVCIsInRvb2x0aXBDb2xvckxUIiwidG9vbHRpcENvbG9yIiwicHJpbWFyeUJ0blJhZGl1cyIsIlRpcHB5VG9vbHRpcCIsIl9yZWYyIiwicmVuZGVyIiwiX3JlZjIkZHVyYXRpb24iLCJkdXJhdGlvbiIsIl9yZWYyJGFycm93IiwiX3JlZjIkaXNMaWdodFRoZW1lIiwicmVzdCIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsIm9wYWNpdHkiLCJzZXRPcGFjaXR5IiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJ0aW1lciIsInNldFRpbWVyIiwib25Nb3VudCIsImNsZWFyVGltZW91dCIsIm9uSGlkZSIsImluc3RhbmNlIiwidW5tb3VudCIsInRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiX2luc3RhbmNlJHN0YXRlIiwic3RhdGUiLCJpc0Rlc3Ryb3llZCIsInNraXBOZXh0U2hvdyIsInVzZVJlZiIsIm9uVHJpZ2dlciIsInVzZUNhbGxiYWNrIiwiZXZlbnQiLCJNb3VzZUV2ZW50IiwiYnV0dG9ucyIsImN1cnJlbnQiLCJvblNob3ciLCJSb290Q29udGV4dCIsIkNvbnN1bWVyIiwiY29udGV4dCIsIl9leHRlbmRzMiIsImFwcGVuZFRvIiwiYW5pbWF0aW9uIiwiYXR0cnMiLCJzdHlsZSIsInRyYW5zaXRpb24iLCJjb25jYXQiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL3RpcHB5LXRvb2x0aXAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBUaXBweSwge1RpcHB5UHJvcHN9IGZyb20gJ0B0aXBweWpzL3JlYWN0JztcbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtSb290Q29udGV4dH0gZnJvbSAnLi4vY29udGV4dCc7XG5cbmNvbnN0IFRpcHB5QXJyb3cgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxNXB4O1xuICBoZWlnaHQ6IDE1cHg7XG4gIGZpbGw6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudG9vbHRpcEJnfTtcbiAgdGV4dC1hbGlnbjogaW5pdGlhbDtcblxuICA+IHN2ZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG5gO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5jb25zdCBUaXBweVRvb2x0aXBDb250ZW50ID0gc3R5bGVkKCh7Y2hpbGRyZW4sIGFycm93LCBpc0xpZ2h0VGhlbWUsIC4uLnByb3BzfSkgPT4gKFxuICA8ZGl2IHsuLi5wcm9wc30+XG4gICAge2NoaWxkcmVufVxuICAgIHthcnJvdyA/IChcbiAgICAgIDxUaXBweUFycm93IGNsYXNzTmFtZT1cInN2Zy1hcnJvd1wiIGRhdGEtcG9wcGVyLWFycm93PVwiXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9ezE1fSBoZWlnaHQ9ezE1fT5cbiAgICAgICAgICA8cGF0aCBkPVwiTTIsNy41IDcuNSwyIDEzLDcuNVpcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvVGlwcHlBcnJvdz5cbiAgICApIDogbnVsbH1cbiAgPC9kaXY+XG4pKWBcbiAgZm9udC1mYW1pbHk6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udEZhbWlseX07XG4gIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50b29sdGlwRm9udFNpemV9O1xuICBmb250LXdlaWdodDogNDAwO1xuICBwYWRkaW5nOiA3cHggMThweDtcbiAgYm94LXNoYWRvdzogJHtwcm9wcyA9PlxuICAgIHByb3BzLmlzTGlnaHRUaGVtZSA/IHByb3BzLnRoZW1lLnBhbmVsQm94U2hhZG93IDogcHJvcHMudGhlbWUudG9vbHRpcEJveFNoYWRvd307XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5pc0xpZ2h0VGhlbWUgPyBwcm9wcy50aGVtZS50b29sdGlwQmdMVCA6IHByb3BzLnRoZW1lLnRvb2x0aXBCZ307XG4gIGNvbG9yOiAke3Byb3BzID0+IChwcm9wcy5pc0xpZ2h0VGhlbWUgPyBwcm9wcy50aGVtZS50b29sdGlwQ29sb3JMVCA6IHByb3BzLnRoZW1lLnRvb2x0aXBDb2xvcil9O1xuICBib3JkZXItcmFkaXVzOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnByaW1hcnlCdG5SYWRpdXN9O1xuICAke3Byb3BzID0+XG4gICAgcHJvcHMuYXJyb3dcbiAgICAgID8gYFxuICAgICZbZGF0YS1wbGFjZW1lbnRePSd0b3AnXSA+IC5zdmctYXJyb3cge1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgJjo6YWZ0ZXIsXG4gICAgICA+IHN2ZyB7XG4gICAgICAgIHRvcDogN3B4O1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgfVxuICAgIH1cblxuICAgICZbZGF0YS1wbGFjZW1lbnRePSdib3R0b20nXSA+IC5zdmctYXJyb3cge1xuICAgICAgdG9wOiAwO1xuICAgICAgPiBzdmcge1xuICAgICAgICBib3R0b206IDdweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmW2RhdGEtcGxhY2VtZW50Xj0nbGVmdCddID4gLnN2Zy1hcnJvdyB7XG4gICAgICByaWdodDogMDtcbiAgICAgICY6OmFmdGVyLFxuICAgICAgPiBzdmcge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gICAgICAgIGxlZnQ6IDdweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmW2RhdGEtcGxhY2VtZW50Xj0ncmlnaHQnXSA+IC5zdmctYXJyb3cge1xuICAgICAgbGVmdDogMDtcbiAgICAgICY6OmFmdGVyLFxuICAgICAgPiBzdmcge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuICAgICAgICByaWdodDogN3B4O1xuICAgICAgfVxuICAgIH1cbiAgYFxuICAgICAgOiAnJ31cbmA7XG5cbmNvbnN0IFRpcHB5VG9vbHRpcCA9ICh7XG4gIGNoaWxkcmVuLFxuICByZW5kZXIsXG4gIGR1cmF0aW9uID0gMjAwLFxuICBhcnJvdyA9IHRydWUsXG4gIGlzTGlnaHRUaGVtZSA9IGZhbHNlLFxuICBjbGFzc05hbWUsXG4gIC4uLnJlc3Rcbn06IFRpcHB5UHJvcHMgJiB7aXNMaWdodFRoZW1lPzogYm9vbGVhbn0pID0+IHtcbiAgY29uc3QgW29wYWNpdHksIHNldE9wYWNpdHldID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IFt0aW1lciwgc2V0VGltZXJdID0gdXNlU3RhdGUobnVsbCk7XG4gIGZ1bmN0aW9uIG9uTW91bnQoKSB7XG4gICAgc2V0T3BhY2l0eSgxKTtcbiAgICBpZiAodGltZXIpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25IaWRlKGluc3RhbmNlKSB7XG4gICAgY29uc3Qge3VubW91bnR9ID0gaW5zdGFuY2U7XG4gICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCFpbnN0YW5jZS5zdGF0ZT8uaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgdW5tb3VudCgpO1xuICAgICAgfVxuICAgIH0sIGR1cmF0aW9uWzBdIHx8IGR1cmF0aW9uKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc2V0VGltZXIodGltZW91dCk7XG4gICAgc2V0T3BhY2l0eSgwKTtcbiAgfVxuXG4gIGNvbnN0IHNraXBOZXh0U2hvdyA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IG9uVHJpZ2dlciA9IHVzZUNhbGxiYWNrKChpbnN0YW5jZSwgZXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50ICYmIGV2ZW50LmJ1dHRvbnMgPiAwKSB7XG4gICAgICAvLyBpZiB0aGUgdXNlciBpcyBob2xkaW5nIGRvd24gdGhlIG1vdXNlIGJ1dHRvbiwgZS5nLiB3aGlsZSBkcmFnZ2luZywgd2Ugd29uJ3Qgc2hvdyB0aGUgdG9vbHRpcFxuICAgICAgc2tpcE5leHRTaG93LmN1cnJlbnQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBza2lwTmV4dFNob3cuY3VycmVudCA9IGZhbHNlO1xuICAgIH1cbiAgfSwgW10pO1xuICBjb25zdCBvblNob3cgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNraXBOZXh0U2hvdy5jdXJyZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPFJvb3RDb250ZXh0LkNvbnN1bWVyPlxuICAgICAge2NvbnRleHQgPT4gKFxuICAgICAgICA8VGlwcHlcbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAvLyBVc2luZyBkb2N1bWVudC5ib2R5IHdvdWxkIHJlc3VsdCBpbiB0aGUgQ1NTIHN0eWxlcyBub3QgYmVpbmcgYXBwbGllZFxuICAgICAgICAgIC8vIHRvIHRoZSB0b29sdGlwIGNvbnRlbnQgd2hlbiBlbWJlZGRpbmcgdGhlIG1hcCB3aWRnZXQgYXMgYSBTaGFkb3cgRE9NIGVsZW1lbnQuXG4gICAgICAgICAgYXBwZW5kVG89e2NvbnRleHQ/LmN1cnJlbnQgfHwgJ3BhcmVudCd9XG4gICAgICAgICAgYW5pbWF0aW9uPXt0cnVlfVxuICAgICAgICAgIHJlbmRlcj17YXR0cnMgPT4gKFxuICAgICAgICAgICAgPFRpcHB5VG9vbHRpcENvbnRlbnRcbiAgICAgICAgICAgICAgey4uLmF0dHJzfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgc3R5bGU9e3tvcGFjaXR5LCB0cmFuc2l0aW9uOiBgb3BhY2l0eSAke2R1cmF0aW9ufW1zYH19XG4gICAgICAgICAgICAgIGFycm93PXthcnJvd31cbiAgICAgICAgICAgICAgaXNMaWdodFRoZW1lPXtpc0xpZ2h0VGhlbWV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtyZW5kZXI/LihhdHRycyl9XG4gICAgICAgICAgICA8L1RpcHB5VG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgICBvbk1vdW50PXtvbk1vdW50fVxuICAgICAgICAgIG9uSGlkZT17b25IaWRlfVxuICAgICAgICAgIG9uVHJpZ2dlcj17b25UcmlnZ2VyfVxuICAgICAgICAgIG9uU2hvdz17b25TaG93fVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1RpcHB5PlxuICAgICAgKX1cbiAgICA8L1Jvb3RDb250ZXh0LkNvbnN1bWVyPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlwcHlUb29sdGlwO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxpQkFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUksUUFBQSxHQUFBSixPQUFBO0FBQXVDLElBQUFLLFNBQUE7RUFBQUMsVUFBQTtBQUFBLElBQUFDLGVBQUEsRUFBQUMsZ0JBQUEsRUFQdkM7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBUix3QkFBQVEsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FB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
;