UNPKG

kepler.gl

Version:

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

94 lines (92 loc) 17.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.gridVisConfigs = exports["default"] = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _layers = require("@deck.gl/layers"); var _deckglLayers = require("@kepler.gl/deckgl-layers"); var _aggregationLayer = _interopRequireDefault(require("../aggregation-layer")); var _gridLayerIcon = _interopRequireDefault(require("./grid-layer-icon")); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project var gridVisConfigs = exports.gridVisConfigs = { opacity: 'opacity', worldUnitSize: 'worldUnitSize', colorRange: 'colorRange', coverage: 'coverage', sizeRange: 'elevationRange', percentile: 'percentile', elevationPercentile: 'elevationPercentile', elevationScale: 'elevationScale', enableElevationZoomFactor: 'enableElevationZoomFactor', fixedHeight: 'fixedHeight', colorAggregation: 'colorAggregation', sizeAggregation: 'sizeAggregation', enable3d: 'enable3d' }; var GridLayer = exports["default"] = /*#__PURE__*/function (_AggregationLayer) { function GridLayer(props) { var _this; (0, _classCallCheck2["default"])(this, GridLayer); _this = _callSuper(this, GridLayer, [props]); _this.registerVisConfig(gridVisConfigs); _this.visConfigSettings.worldUnitSize.label = 'columns.grid.worldUnitSize'; return _this; } (0, _inherits2["default"])(GridLayer, _AggregationLayer); return (0, _createClass2["default"])(GridLayer, [{ key: "type", get: function get() { return 'grid'; } }, { key: "layerIcon", get: function get() { return _gridLayerIcon["default"]; } }, { key: "renderLayer", value: function renderLayer(opts) { var data = opts.data, objectHovered = opts.objectHovered, mapState = opts.mapState; var defaultAggregationLayerProps = this.getDefaultAggregationLayerProp(opts); var zoomFactor = this.getZoomFactor(mapState); var visConfig = this.config.visConfig; var cellSize = visConfig.worldUnitSize * 1000; var hoveredObject = this.hasHoveredObject(objectHovered); // Use cellOutline computed in common space by ScaleEnhancedGridLayer.getPickingInfo // so the outline aligns with rendered cells at all latitudes. var outlineCoords = hoveredObject === null || hoveredObject === void 0 ? void 0 : hoveredObject.cellOutline; return [new _deckglLayers.EnhancedGridLayer(_objectSpread(_objectSpread(_objectSpread({}, defaultAggregationLayerProps), data), {}, { wrapLongitude: false, cellSize: cellSize }))].concat((0, _toConsumableArray2["default"])(outlineCoords && !visConfig.enable3d ? [new _layers.GeoJsonLayer(_objectSpread(_objectSpread({}, this.getDefaultHoverLayerProps()), {}, { visible: defaultAggregationLayerProps.visible, wrapLongitude: false, data: [{ type: 'Feature', properties: {}, geometry: { coordinates: outlineCoords, type: 'LineString' } }], getLineColor: this.config.highlightColor, lineWidthScale: 8 * zoomFactor }))] : [])); } }]); }(_aggregationLayer["default"]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGF5ZXJzIiwicmVxdWlyZSIsIl9kZWNrZ2xMYXllcnMiLCJfYWdncmVnYXRpb25MYXllciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZ3JpZExheWVySWNvbiIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiZ3JpZFZpc0NvbmZpZ3MiLCJleHBvcnRzIiwib3BhY2l0eSIsIndvcmxkVW5pdFNpemUiLCJjb2xvclJhbmdlIiwiY292ZXJhZ2UiLCJzaXplUmFuZ2UiLCJwZXJjZW50aWxlIiwiZWxldmF0aW9uUGVyY2VudGlsZSIsImVsZXZhdGlvblNjYWxlIiwiZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvciIsImZpeGVkSGVpZ2h0IiwiY29sb3JBZ2dyZWdhdGlvbiIsInNpemVBZ2dyZWdhdGlvbiIsImVuYWJsZTNkIiwiR3JpZExheWVyIiwiX0FnZ3JlZ2F0aW9uTGF5ZXIiLCJwcm9wcyIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsInJlZ2lzdGVyVmlzQ29uZmlnIiwidmlzQ29uZmlnU2V0dGluZ3MiLCJsYWJlbCIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwiZ2V0IiwiR3JpZExheWVySWNvbiIsInZhbHVlIiwicmVuZGVyTGF5ZXIiLCJvcHRzIiwiZGF0YSIsIm9iamVjdEhvdmVyZWQiLCJtYXBTdGF0ZSIsImRlZmF1bHRBZ2dyZWdhdGlvbkxheWVyUHJvcHMiLCJnZXREZWZhdWx0QWdncmVnYXRpb25MYXllclByb3AiLCJ6b29tRmFjdG9yIiwiZ2V0Wm9vbUZhY3RvciIsInZpc0NvbmZpZyIsImNvbmZpZyIsImNlbGxTaXplIiwiaG92ZXJlZE9iamVjdCIsImhhc0hvdmVyZWRPYmplY3QiLCJvdXRsaW5lQ29vcmRzIiwiY2VsbE91dGxpbmUiLCJFbmhhbmNlZEdyaWRMYXllciIsIndyYXBMb25naXR1ZGUiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiR2VvSnNvbkxheWVyIiwiZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcyIsInZpc2libGUiLCJ0eXBlIiwicHJvcGVydGllcyIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJnZXRMaW5lQ29sb3IiLCJoaWdobGlnaHRDb2xvciIsImxpbmVXaWR0aFNjYWxlIiwiQWdncmVnYXRpb25MYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ncmlkLWxheWVyL2dyaWQtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtHZW9Kc29uTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge0VuaGFuY2VkR3JpZExheWVyfSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMnO1xuaW1wb3J0IEFnZ3JlZ2F0aW9uTGF5ZXIsIHtBZ2dyZWdhdGlvbkxheWVyQ29uZmlnfSBmcm9tICcuLi9hZ2dyZWdhdGlvbi1sYXllcic7XG5pbXBvcnQgR3JpZExheWVySWNvbiBmcm9tICcuL2dyaWQtbGF5ZXItaWNvbic7XG5pbXBvcnQge1xuICBDb2xvclJhbmdlLFxuICBWaXNDb25maWdCb29sZWFuLFxuICBWaXNDb25maWdDb2xvclJhbmdlLFxuICBWaXNDb25maWdOdW1iZXIsXG4gIFZpc0NvbmZpZ1JhbmdlLFxuICBWaXNDb25maWdTZWxlY3Rpb24sXG4gIE1lcmdlXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtBZ2dyZWdhdGlvblR5cGVzfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmV4cG9ydCB0eXBlIEdyaWRMYXllclZpc0NvbmZpZ1NldHRpbmdzID0ge1xuICBvcGFjaXR5OiBWaXNDb25maWdOdW1iZXI7XG4gIHdvcmxkVW5pdFNpemU6IFZpc0NvbmZpZ051bWJlcjtcbiAgY29sb3JSYW5nZTogVmlzQ29uZmlnQ29sb3JSYW5nZTtcbiAgY292ZXJhZ2U6IFZpc0NvbmZpZ051bWJlcjtcbiAgc2l6ZVJhbmdlOiBWaXNDb25maWdSYW5nZTtcbiAgcGVyY2VudGlsZTogVmlzQ29uZmlnUmFuZ2U7XG4gIGVsZXZhdGlvblBlcmNlbnRpbGU6IFZpc0NvbmZpZ1JhbmdlO1xuICBlbGV2YXRpb25TY2FsZTogVmlzQ29uZmlnTnVtYmVyO1xuICBlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yOiBWaXNDb25maWdCb29sZWFuO1xuICBjb2xvckFnZ3JlZ2F0aW9uOiBWaXNDb25maWdTZWxlY3Rpb247XG4gIHNpemVBZ2dyZWdhdGlvbjogVmlzQ29uZmlnU2VsZWN0aW9uO1xuICBlbmFibGUzZDogVmlzQ29uZmlnQm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEdyaWRMYXllclZpc0NvbmZpZyA9IHtcbiAgb3BhY2l0eTogbnVtYmVyO1xuICB3b3JsZFVuaXRTaXplOiBudW1iZXI7XG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIGNvdmVyYWdlOiBudW1iZXI7XG4gIHNpemVSYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgcGVyY2VudGlsZTogW251bWJlciwgbnVtYmVyXTtcbiAgZWxldmF0aW9uUGVyY2VudGlsZTogW251bWJlciwgbnVtYmVyXTtcbiAgZWxldmF0aW9uU2NhbGU6IG51bWJlcjtcbiAgZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcjogYm9vbGVhbjtcbiAgY29sb3JBZ2dyZWdhdGlvbjogQWdncmVnYXRpb25UeXBlcztcbiAgc2l6ZUFnZ3JlZ2F0aW9uOiBBZ2dyZWdhdGlvblR5cGVzO1xuICBlbmFibGUzZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEdyaWRMYXllckNvbmZpZyA9IE1lcmdlPEFnZ3JlZ2F0aW9uTGF5ZXJDb25maWcsIHt2aXNDb25maWc6IEdyaWRMYXllclZpc0NvbmZpZ30+O1xuXG5leHBvcnQgY29uc3QgZ3JpZFZpc0NvbmZpZ3M6IHtcbiAgb3BhY2l0eTogJ29wYWNpdHknO1xuICB3b3JsZFVuaXRTaXplOiAnd29ybGRVbml0U2l6ZSc7XG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJztcbiAgY292ZXJhZ2U6ICdjb3ZlcmFnZSc7XG4gIHNpemVSYW5nZTogJ2VsZXZhdGlvblJhbmdlJztcbiAgcGVyY2VudGlsZTogJ3BlcmNlbnRpbGUnO1xuICBlbGV2YXRpb25QZXJjZW50aWxlOiAnZWxldmF0aW9uUGVyY2VudGlsZSc7XG4gIGVsZXZhdGlvblNjYWxlOiAnZWxldmF0aW9uU2NhbGUnO1xuICBlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yOiAnZW5hYmxlRWxldmF0aW9uWm9vbUZhY3Rvcic7XG4gIGZpeGVkSGVpZ2h0OiAnZml4ZWRIZWlnaHQnO1xuICBjb2xvckFnZ3JlZ2F0aW9uOiAnY29sb3JBZ2dyZWdhdGlvbic7XG4gIHNpemVBZ2dyZWdhdGlvbjogJ3NpemVBZ2dyZWdhdGlvbic7XG4gIGVuYWJsZTNkOiAnZW5hYmxlM2QnO1xufSA9IHtcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICB3b3JsZFVuaXRTaXplOiAnd29ybGRVbml0U2l6ZScsXG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJyxcbiAgY292ZXJhZ2U6ICdjb3ZlcmFnZScsXG4gIHNpemVSYW5nZTogJ2VsZXZhdGlvblJhbmdlJyxcbiAgcGVyY2VudGlsZTogJ3BlcmNlbnRpbGUnLFxuICBlbGV2YXRpb25QZXJjZW50aWxlOiAnZWxldmF0aW9uUGVyY2VudGlsZScsXG4gIGVsZXZhdGlvblNjYWxlOiAnZWxldmF0aW9uU2NhbGUnLFxuICBlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yOiAnZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcicsXG4gIGZpeGVkSGVpZ2h0OiAnZml4ZWRIZWlnaHQnLFxuICBjb2xvckFnZ3JlZ2F0aW9uOiAnY29sb3JBZ2dyZWdhdGlvbicsXG4gIHNpemVBZ2dyZWdhdGlvbjogJ3NpemVBZ2dyZWdhdGlvbicsXG4gIGVuYWJsZTNkOiAnZW5hYmxlM2QnXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHcmlkTGF5ZXIgZXh0ZW5kcyBBZ2dyZWdhdGlvbkxheWVyIHtcbiAgZGVjbGFyZSB2aXNDb25maWdTZXR0aW5nczogR3JpZExheWVyVmlzQ29uZmlnU2V0dGluZ3M7XG4gIGRlY2xhcmUgY29uZmlnOiBHcmlkTGF5ZXJDb25maWc7XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyVmlzQ29uZmlnKGdyaWRWaXNDb25maWdzKTtcbiAgICB0aGlzLnZpc0NvbmZpZ1NldHRpbmdzLndvcmxkVW5pdFNpemUubGFiZWwgPSAnY29sdW1ucy5ncmlkLndvcmxkVW5pdFNpemUnO1xuICB9XG5cbiAgZ2V0IHR5cGUoKTogJ2dyaWQnIHtcbiAgICByZXR1cm4gJ2dyaWQnO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpIHtcbiAgICByZXR1cm4gR3JpZExheWVySWNvbjtcbiAgfVxuXG4gIHJlbmRlckxheWVyKG9wdHMpIHtcbiAgICBjb25zdCB7ZGF0YSwgb2JqZWN0SG92ZXJlZCwgbWFwU3RhdGV9ID0gb3B0cztcblxuICAgIGNvbnN0IGRlZmF1bHRBZ2dyZWdhdGlvbkxheWVyUHJvcHMgPSB0aGlzLmdldERlZmF1bHRBZ2dyZWdhdGlvbkxheWVyUHJvcChvcHRzKTtcbiAgICBjb25zdCB6b29tRmFjdG9yID0gdGhpcy5nZXRab29tRmFjdG9yKG1hcFN0YXRlKTtcbiAgICBjb25zdCB7dmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IGNlbGxTaXplID0gdmlzQ29uZmlnLndvcmxkVW5pdFNpemUgKiAxMDAwO1xuICAgIGNvbnN0IGhvdmVyZWRPYmplY3QgPSB0aGlzLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SG92ZXJlZCk7XG5cbiAgICAvLyBVc2UgY2VsbE91dGxpbmUgY29tcHV0ZWQgaW4gY29tbW9uIHNwYWNlIGJ5IFNjYWxlRW5oYW5jZWRHcmlkTGF5ZXIuZ2V0UGlja2luZ0luZm9cbiAgICAvLyBzbyB0aGUgb3V0bGluZSBhbGlnbnMgd2l0aCByZW5kZXJlZCBjZWxscyBhdCBhbGwgbGF0aXR1ZGVzLlxuICAgIGNvbnN0IG91dGxpbmVDb29yZHMgPSBob3ZlcmVkT2JqZWN0Py5jZWxsT3V0bGluZTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgRW5oYW5jZWRHcmlkTGF5ZXIoe1xuICAgICAgICAuLi5kZWZhdWx0QWdncmVnYXRpb25MYXllclByb3BzLFxuICAgICAgICAuLi5kYXRhLFxuICAgICAgICB3cmFwTG9uZ2l0dWRlOiBmYWxzZSxcbiAgICAgICAgY2VsbFNpemVcbiAgICAgIH0pLFxuXG4gICAgICAvLyByZW5kZXIgYW4gb3V0bGluZSBvZiBlYWNoIGNlbGwgaWYgbm90IGV4dHJ1ZGVkXG4gICAgICAuLi4ob3V0bGluZUNvb3JkcyAmJiAhdmlzQ29uZmlnLmVuYWJsZTNkXG4gICAgICAgID8gW1xuICAgICAgICAgICAgbmV3IEdlb0pzb25MYXllcih7XG4gICAgICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcygpLFxuICAgICAgICAgICAgICB2aXNpYmxlOiBkZWZhdWx0QWdncmVnYXRpb25MYXllclByb3BzLnZpc2libGUsXG4gICAgICAgICAgICAgIHdyYXBMb25naXR1ZGU6IGZhbHNlLFxuICAgICAgICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnIGFzIGNvbnN0LFxuICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgICAgICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogb3V0bGluZUNvb3JkcyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnIGFzIGNvbnN0XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBnZXRMaW5lQ29sb3I6IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yLFxuICAgICAgICAgICAgICBsaW5lV2lkdGhTY2FsZTogOCAqIHpvb21GYWN0b3JcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKVxuICAgIF07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQThDLFNBQUFLLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFB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