UNPKG

kepler.gl.geoiq

Version:

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

163 lines (138 loc) 18.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _baseWidget = _interopRequireDefault(require("../base-widget")); var _categoryWidgetIcon = _interopRequireDefault(require("./category-widget-icon")); var _geoViewport = _interopRequireDefault(require("@mapbox/geo-viewport")); var _viewportMercatorProject = _interopRequireDefault(require("viewport-mercator-project")); var _axios = _interopRequireDefault(require("axios")); var _defaultSettings = require("../../constants/default-settings"); function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var FunctionWidget = exports["default"] = /*#__PURE__*/function (_Widget) { (0, _inherits2["default"])(FunctionWidget, _Widget); var _super = _createSuper(FunctionWidget); function FunctionWidget(props) { (0, _classCallCheck2["default"])(this, FunctionWidget); return _super.call(this, props); } (0, _createClass2["default"])(FunctionWidget, [{ key: "type", get: function get() { return 'Category'; } }, { key: "isAggregated", get: function get() { return false; } }, { key: "widgetIcon", get: function get() { return _categoryWidgetIcon["default"]; } }, { key: "widgetAggregatedData", get: function get() { return null; } }, { key: "calculateAggregationData", value: function calculateAggregationData(newWidget, filters, datasets, mapState, auth, project) { var _newWidget$config = newWidget.config, dataId = _newWidget$config.dataId, aggregationType = _newWidget$config.aggregationType, bounds = _newWidget$config.bounds; var _datasets$dataId = datasets[dataId], fields = _datasets$dataId.fields, indexName = _datasets$dataId.indexName; var sortableCategories = []; var categoryField = newWidget.config.categoryField; var fieldName = newWidget.config.fieldName; var fieldIdx = fields.findIndex(function (f) { return f.name === fieldName; }); var uid = auth.uid; var isEdit = project.isEdit; var boundingBox; var boundingPolygon; var cLL; var cLR; var cUL; var cUR; if (!aggregationType || aggregationType !== 'count' && fieldIdx <= 0) return null; if (mapState && bounds) { var longitude = mapState.longitude, latitude = mapState.latitude, height = mapState.height, width = mapState.width, zoom = mapState.zoom, pitch = mapState.pitch, bearing = mapState.bearing; boundingBox = _geoViewport["default"].bounds([longitude, latitude], zoom, [width, height]); var viewport = new _viewportMercatorProject["default"]({ width: width, height: height, longitude: longitude, latitude: latitude, zoom: zoom, pitch: pitch, bearing: bearing }); cUL = viewport.unproject([0, 0]); cUR = viewport.unproject([width, 0]); cLR = viewport.unproject([width, height]); cLL = viewport.unproject([0, height]); boundingPolygon = { type: 'Polygon', coordinates: [[cUL, cUR, cLR, cLL, cUL]] }; } // newWidget.config.fieldName || var apiCallData = { aggregationType: aggregationType, filters: JSON.stringify(filters.filter(function (f) { return f.dataId.includes(dataId); })), viewport: JSON.stringify(boundingPolygon), fieldName: fieldName, dynamic: Boolean(bounds), categoryField: categoryField, userId: uid, fieldType: fieldName ? fields[fieldIdx].type === 'string' ? 'string' : 'numeric' : null, indexName: indexName, permissionType: isEdit }; var config = { headers: { 'Content-Type': 'application/json' } }; var response = _axios["default"].post("".concat(_defaultSettings.ON_PREMESIS_URL, "/geoiqutilities/widget/v1.0/fetch"), apiCallData, config).then(function (result) { sortableCategories = result.data.aggregatedData; sortableCategories = sortableCategories.sort(function (a, b) { return b[1] - a[1]; }); sortableCategories.length = 5; sortableCategories = sortableCategories.map(function (sc) { return { y: sc[0], x: sc[1] }; }); // this.updateWidgetConfig({aggregatedData: sortableCategories}); // newWidget.config.aggregatedData = sortableCategories; return sortableCategories; }); return response; } }]); return FunctionWidget; }(_baseWidget["default"]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93aWRnZXRzL2NhdGVnb3J5LXdpZGdldC9jYXRlZ29yeS13aWRnZXQuanMiXSwibmFtZXMiOlsiRnVuY3Rpb25XaWRnZXQiLCJwcm9wcyIsIkNhdGVnb3J5V2lkZ2V0SWNvbiIsIm5ld1dpZGdldCIsImZpbHRlcnMiLCJkYXRhc2V0cyIsIm1hcFN0YXRlIiwiYXV0aCIsInByb2plY3QiLCJjb25maWciLCJkYXRhSWQiLCJhZ2dyZWdhdGlvblR5cGUiLCJib3VuZHMiLCJmaWVsZHMiLCJpbmRleE5hbWUiLCJzb3J0YWJsZUNhdGVnb3JpZXMiLCJjYXRlZ29yeUZpZWxkIiwiZmllbGROYW1lIiwiZmllbGRJZHgiLCJmaW5kSW5kZXgiLCJmIiwibmFtZSIsInVpZCIsImlzRWRpdCIsImJvdW5kaW5nQm94IiwiYm91bmRpbmdQb2x5Z29uIiwiY0xMIiwiY0xSIiwiY1VMIiwiY1VSIiwibG9uZ2l0dWRlIiwibGF0aXR1ZGUiLCJoZWlnaHQiLCJ3aWR0aCIsInpvb20iLCJwaXRjaCIsImJlYXJpbmciLCJnZW9WaWV3cG9ydCIsInZpZXdwb3J0IiwiV2ViTWVyY2F0b3JWaWV3cG9ydCIsInVucHJvamVjdCIsInR5cGUiLCJjb29yZGluYXRlcyIsImFwaUNhbGxEYXRhIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbHRlciIsImluY2x1ZGVzIiwiZHluYW1pYyIsIkJvb2xlYW4iLCJ1c2VySWQiLCJmaWVsZFR5cGUiLCJwZXJtaXNzaW9uVHlwZSIsImhlYWRlcnMiLCJyZXNwb25zZSIsImF4aW9zIiwicG9zdCIsIk9OX1BSRU1FU0lTX1VSTCIsInRoZW4iLCJyZXN1bHQiLCJkYXRhIiwiYWdncmVnYXRlZERhdGEiLCJzb3J0IiwiYSIsImIiLCJsZW5ndGgiLCJtYXAiLCJzYyIsInkiLCJ4IiwiV2lkZ2V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7SUFFcUJB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QjNCLFFBQUFBLFNBQVMsRUFBVEEsU0Fia0I7QUFjbEJzQyxRQUFBQSxjQUFjLEVBQUU3QjtBQWRFLE9BQXBCO0FBaUJBLFVBQU1kLE1BQU0sR0FBRztBQUNiNEMsUUFBQUEsT0FBTyxFQUFFO0FBQ1AsMEJBQWdCO0FBRFQ7QUFESSxPQUFmOztBQUtBLFVBQU1DLFFBQVEsR0FBR0Msa0JBQ2RDLElBRGMsV0FFVkMsZ0NBRlUsd0NBR2JkLFdBSGEsRUFJYmxDLE1BSmEsRUFNZGlELElBTmMsQ0FNVCxVQUFBQyxNQUFNLEVBQUk7QUFDZDVDLFFBQUFBLGtCQUFrQixHQUFHNEMsTUFBTSxDQUFDQyxJQUFQLENBQVlDLGNBQWpDO0FBQ0E5QyxRQUFBQSxrQkFBa0IsR0FBR0Esa0JBQWtCLENBQUMrQyxJQUFuQixDQUF3QixVQUFTQyxDQUFULEVBQVlDLENBQVosRUFBZTtBQUMxRCxpQkFBT0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFPRCxDQUFDLENBQUMsQ0FBRCxDQUFmO0FBQ0QsU0FGb0IsQ0FBckI7QUFHQWhELFFBQUFBLGtCQUFrQixDQUFDa0QsTUFBbkIsR0FBNEIsQ0FBNUI7QUFDQWxELFFBQUFBLGtCQUFrQixHQUFHQSxrQkFBa0IsQ0FBQ21ELEdBQW5CLENBQXVCLFVBQUFDLEVBQUUsRUFBSTtBQUNoRCxpQkFBTztBQUFDQyxZQUFBQSxDQUFDLEVBQUVELEVBQUUsQ0FBQyxDQUFELENBQU47QUFBV0UsWUFBQUEsQ0FBQyxFQUFFRixFQUFFLENBQUMsQ0FBRDtBQUFoQixXQUFQO0FBQ0QsU0FGb0IsQ0FBckIsQ0FOYyxDQVNkO0FBQ0E7O0FBQ0EsZUFBT3BELGtCQUFQO0FBQ0QsT0FsQmMsQ0FBakI7O0FBb0JBLGFBQU91QyxRQUFQO0FBQ0Q7OztFQXZIeUNnQixzQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMyBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBXaWRnZXQgZnJvbSAnLi4vYmFzZS13aWRnZXQnO1xuaW1wb3J0IENhdGVnb3J5V2lkZ2V0SWNvbiBmcm9tICcuL2NhdGVnb3J5LXdpZGdldC1pY29uJztcbmltcG9ydCBnZW9WaWV3cG9ydCBmcm9tICdAbWFwYm94L2dlby12aWV3cG9ydCc7XG5pbXBvcnQgV2ViTWVyY2F0b3JWaWV3cG9ydCBmcm9tICd2aWV3cG9ydC1tZXJjYXRvci1wcm9qZWN0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQge09OX1BSRU1FU0lTX1VSTH0gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGdW5jdGlvbldpZGdldCBleHRlbmRzIFdpZGdldCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICB9XG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAnQ2F0ZWdvcnknO1xuICB9XG4gIGdldCBpc0FnZ3JlZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGdldCB3aWRnZXRJY29uKCkge1xuICAgIHJldHVybiBDYXRlZ29yeVdpZGdldEljb247XG4gIH1cbiAgZ2V0IHdpZGdldEFnZ3JlZ2F0ZWREYXRhKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY2FsY3VsYXRlQWdncmVnYXRpb25EYXRhKFxuICAgIG5ld1dpZGdldCxcbiAgICBmaWx0ZXJzLFxuICAgIGRhdGFzZXRzLFxuICAgIG1hcFN0YXRlLFxuICAgIGF1dGgsXG4gICAgcHJvamVjdFxuICApIHtcbiAgICBjb25zdCB7ZGF0YUlkLCBhZ2dyZWdhdGlvblR5cGUsIGJvdW5kc30gPSBuZXdXaWRnZXQuY29uZmlnO1xuICAgIHZhciB7ZmllbGRzLCBpbmRleE5hbWV9ID0gZGF0YXNldHNbZGF0YUlkXTtcbiAgICBsZXQgc29ydGFibGVDYXRlZ29yaWVzID0gW107XG4gICAgY29uc3QgY2F0ZWdvcnlGaWVsZCA9IG5ld1dpZGdldC5jb25maWcuY2F0ZWdvcnlGaWVsZDtcbiAgICBjb25zdCBmaWVsZE5hbWUgPSBuZXdXaWRnZXQuY29uZmlnLmZpZWxkTmFtZTtcbiAgICBjb25zdCBmaWVsZElkeCA9IGZpZWxkcy5maW5kSW5kZXgoZiA9PiBmLm5hbWUgPT09IGZpZWxkTmFtZSk7XG4gICAgY29uc3Qge3VpZH0gPSBhdXRoO1xuICAgIGNvbnN0IHtpc0VkaXR9ID0gcHJvamVjdDtcbiAgICBsZXQgYm91bmRpbmdCb3g7IGxldCBib3VuZGluZ1BvbHlnb247XG4gICAgbGV0IGNMTDsgbGV0IGNMUjsgbGV0IGNVTDsgbGV0IGNVUjtcblxuICAgIGlmICghYWdncmVnYXRpb25UeXBlIHx8IChhZ2dyZWdhdGlvblR5cGUgIT09ICdjb3VudCcgJiYgZmllbGRJZHggPD0gMCkpXG4gICAgICByZXR1cm4gbnVsbDtcblxuICAgIGlmIChtYXBTdGF0ZSAmJiBib3VuZHMpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbG9uZ2l0dWRlLFxuICAgICAgICBsYXRpdHVkZSxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgem9vbSxcbiAgICAgICAgcGl0Y2gsXG4gICAgICAgIGJlYXJpbmdcbiAgICAgIH0gPSBtYXBTdGF0ZTtcblxuICAgICAgYm91bmRpbmdCb3ggPSBnZW9WaWV3cG9ydC5ib3VuZHMoW2xvbmdpdHVkZSwgbGF0aXR1ZGVdLCB6b29tLCBbXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICAgIF0pO1xuXG4gICAgICBjb25zdCB2aWV3cG9ydCA9IG5ldyBXZWJNZXJjYXRvclZpZXdwb3J0KHtcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgbG9uZ2l0dWRlLFxuICAgICAgICBsYXRpdHVkZSxcbiAgICAgICAgem9vbSxcbiAgICAgICAgcGl0Y2gsXG4gICAgICAgIGJlYXJpbmdcbiAgICAgIH0pO1xuICAgICAgY1VMID0gdmlld3BvcnQudW5wcm9qZWN0KFswLCAwXSk7XG4gICAgICBjVVIgPSB2aWV3cG9ydC51bnByb2plY3QoW3dpZHRoLCAwXSk7XG4gICAgICBjTFIgPSB2aWV3cG9ydC51bnByb2plY3QoW3dpZHRoLCBoZWlnaHRdKTtcbiAgICAgIGNMTCA9IHZpZXdwb3J0LnVucHJvamVjdChbMCwgaGVpZ2h0XSk7XG5cbiAgICAgIGJvdW5kaW5nUG9seWdvbiA9IHtcbiAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICBjb29yZGluYXRlczogW1tjVUwsIGNVUiwgY0xSLCBjTEwsIGNVTF1dXG4gICAgICB9O1xuICAgIH1cbiAgICAvLyBuZXdXaWRnZXQuY29uZmlnLmZpZWxkTmFtZSB8fFxuXG4gICAgY29uc3QgYXBpQ2FsbERhdGEgPSB7XG4gICAgICBhZ2dyZWdhdGlvblR5cGUsXG4gICAgICBmaWx0ZXJzOiBKU09OLnN0cmluZ2lmeShmaWx0ZXJzLmZpbHRlcihmID0+IGYuZGF0YUlkLmluY2x1ZGVzKGRhdGFJZCkpKSxcbiAgICAgIHZpZXdwb3J0OiBKU09OLnN0cmluZ2lmeShib3VuZGluZ1BvbHlnb24pLFxuICAgICAgZmllbGROYW1lLFxuICAgICAgZHluYW1pYzogQm9vbGVhbihib3VuZHMpLFxuICAgICAgY2F0ZWdvcnlGaWVsZCxcbiAgICAgIHVzZXJJZDogdWlkLFxuICAgICAgZmllbGRUeXBlOiBmaWVsZE5hbWVcbiAgICAgICAgPyBmaWVsZHNbZmllbGRJZHhdLnR5cGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyAnc3RyaW5nJ1xuICAgICAgICAgIDogJ251bWVyaWMnXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGluZGV4TmFtZSxcbiAgICAgIHBlcm1pc3Npb25UeXBlOiBpc0VkaXRcbiAgICB9O1xuXG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF4aW9zXG4gICAgICAucG9zdChcbiAgICAgICAgYCR7T05fUFJFTUVTSVNfVVJMICB9L2dlb2lxdXRpbGl0aWVzL3dpZGdldC92MS4wL2ZldGNoYCxcbiAgICAgICAgYXBpQ2FsbERhdGEsXG4gICAgICAgIGNvbmZpZ1xuICAgICAgKVxuICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgc29ydGFibGVDYXRlZ29yaWVzID0gcmVzdWx0LmRhdGEuYWdncmVnYXRlZERhdGE7XG4gICAgICAgIHNvcnRhYmxlQ2F0ZWdvcmllcyA9IHNvcnRhYmxlQ2F0ZWdvcmllcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgICAgICByZXR1cm4gYlsxXSAtIGFbMV07XG4gICAgICAgIH0pO1xuICAgICAgICBzb3J0YWJsZUNhdGVnb3JpZXMubGVuZ3RoID0gNTtcbiAgICAgICAgc29ydGFibGVDYXRlZ29yaWVzID0gc29ydGFibGVDYXRlZ29yaWVzLm1hcChzYyA9PiB7XG4gICAgICAgICAgcmV0dXJuIHt5OiBzY1swXSwgeDogc2NbMV19O1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gdGhpcy51cGRhdGVXaWRnZXRDb25maWcoe2FnZ3JlZ2F0ZWREYXRhOiBzb3J0YWJsZUNhdGVnb3JpZXN9KTtcbiAgICAgICAgLy8gbmV3V2lkZ2V0LmNvbmZpZy5hZ2dyZWdhdGVkRGF0YSA9IHNvcnRhYmxlQ2F0ZWdvcmllcztcbiAgICAgICAgcmV0dXJuIHNvcnRhYmxlQ2F0ZWdvcmllcztcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG59XG4iXX0=