@kepler.gl/deckgl-layers 3.3.0-alpha.4 → 3.3.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/globe/atmosphere-layer.d.ts +13 -2
- package/dist/globe/atmosphere-layer.js +48 -12
- package/dist/globe/globe-depth-disk-layer.d.ts +1 -0
- package/dist/globe/globe-depth-disk-layer.js +3 -3
- package/dist/globe/globe-layers.d.ts +8 -2
- package/dist/globe/globe-layers.js +9 -5
- package/dist/globe/globe-view.js +129 -41
- package/dist/raster/images.d.ts +10 -1
- package/dist/raster/images.js +18 -6
- package/dist/raster/raster-layer/raster-layer.d.ts +4 -0
- package/dist/raster/raster-layer/raster-layer.js +58 -8
- package/dist/raster/raster-mesh-layer/raster-mesh-layer.d.ts +4 -0
- package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +58 -8
- package/package.json +5 -7
|
@@ -56,6 +56,9 @@ var RasterLayer = exports["default"] = /*#__PURE__*/function (_BitmapLayer) {
|
|
|
56
56
|
}
|
|
57
57
|
_this = _callSuper(this, RasterLayer, [].concat(args));
|
|
58
58
|
(0, _defineProperty2["default"])(_this, "_redrawScheduled", false);
|
|
59
|
+
(0, _defineProperty2["default"])(_this, "_pendingImageRetry", null);
|
|
60
|
+
/** How many consecutive frames have retried a failed texture upload. */
|
|
61
|
+
(0, _defineProperty2["default"])(_this, "_imageRetryCount", 0);
|
|
59
62
|
return _this;
|
|
60
63
|
}
|
|
61
64
|
(0, _inherits2["default"])(RasterLayer, _BitmapLayer);
|
|
@@ -73,6 +76,42 @@ var RasterLayer = exports["default"] = /*#__PURE__*/function (_BitmapLayer) {
|
|
|
73
76
|
key: "draw",
|
|
74
77
|
value: function draw(_opts) {
|
|
75
78
|
var _this$props$opacity;
|
|
79
|
+
// If a previous frame had failed texture uploads, retry them now before
|
|
80
|
+
// checking whether the images state is complete. Pass oldImagesData: {} so
|
|
81
|
+
// all keys are treated as new and bypass the isEqual skip-check.
|
|
82
|
+
// Retries are bounded to MAX_IMAGE_RETRY_ATTEMPTS to avoid an infinite
|
|
83
|
+
// redraw loop when image data is permanently invalid.
|
|
84
|
+
if (this._pendingImageRetry) {
|
|
85
|
+
var _this$context$device;
|
|
86
|
+
var retry = this._pendingImageRetry;
|
|
87
|
+
this._pendingImageRetry = null;
|
|
88
|
+
var _loadImages = (0, _images.loadImages)({
|
|
89
|
+
gl: ((_this$context$device = this.context.device) === null || _this$context$device === void 0 ? void 0 : _this$context$device.gl) || this.context.gl,
|
|
90
|
+
device: this.context.device,
|
|
91
|
+
images: this.state.images,
|
|
92
|
+
imagesData: retry,
|
|
93
|
+
oldImagesData: {}
|
|
94
|
+
}),
|
|
95
|
+
newImages = _loadImages.images,
|
|
96
|
+
hasPendingUploads = _loadImages.hasPendingUploads;
|
|
97
|
+
if (newImages) {
|
|
98
|
+
this.setState({
|
|
99
|
+
images: newImages
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
if (hasPendingUploads) {
|
|
103
|
+
this._imageRetryCount++;
|
|
104
|
+
if (this._imageRetryCount < RasterLayer.MAX_IMAGE_RETRY_ATTEMPTS) {
|
|
105
|
+
this._pendingImageRetry = retry;
|
|
106
|
+
this._scheduleRedraw();
|
|
107
|
+
} else {
|
|
108
|
+
console.warn("RasterLayer: texture upload failed after ".concat(RasterLayer.MAX_IMAGE_RETRY_ATTEMPTS, " attempts, giving up."));
|
|
109
|
+
this._imageRetryCount = 0;
|
|
110
|
+
}
|
|
111
|
+
} else {
|
|
112
|
+
this._imageRetryCount = 0;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
76
115
|
var _this$state = this.state,
|
|
77
116
|
model = _this$state.model,
|
|
78
117
|
images = _this$state.images,
|
|
@@ -198,18 +237,28 @@ var RasterLayer = exports["default"] = /*#__PURE__*/function (_BitmapLayer) {
|
|
|
198
237
|
var images = this.state.images;
|
|
199
238
|
var device = this.context.device;
|
|
200
239
|
var gl = (device === null || device === void 0 ? void 0 : device.gl) || this.context.gl;
|
|
201
|
-
var
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
240
|
+
var _loadImages2 = (0, _images.loadImages)({
|
|
241
|
+
gl: gl,
|
|
242
|
+
device: device,
|
|
243
|
+
images: images,
|
|
244
|
+
imagesData: props.images,
|
|
245
|
+
oldImagesData: oldProps.images
|
|
246
|
+
}),
|
|
247
|
+
newImages = _loadImages2.images,
|
|
248
|
+
hasPendingUploads = _loadImages2.hasPendingUploads;
|
|
208
249
|
if (newImages) {
|
|
209
250
|
this.setState({
|
|
210
251
|
images: newImages
|
|
211
252
|
});
|
|
212
253
|
}
|
|
254
|
+
// If any texture upload failed (device not ready / createTexture threw),
|
|
255
|
+
// stash the imagesData and schedule a retry next frame. The retry passes
|
|
256
|
+
// oldImagesData: {} so all keys bypass the isEqual skip-check.
|
|
257
|
+
if (hasPendingUploads) {
|
|
258
|
+
this._pendingImageRetry = props.images;
|
|
259
|
+
this._imageRetryCount = 0;
|
|
260
|
+
this._scheduleRedraw();
|
|
261
|
+
}
|
|
213
262
|
}
|
|
214
263
|
}, {
|
|
215
264
|
key: "finalizeState",
|
|
@@ -232,6 +281,7 @@ var RasterLayer = exports["default"] = /*#__PURE__*/function (_BitmapLayer) {
|
|
|
232
281
|
}
|
|
233
282
|
}]);
|
|
234
283
|
}(_layers.BitmapLayer);
|
|
284
|
+
(0, _defineProperty2["default"])(RasterLayer, "MAX_IMAGE_RETRY_ATTEMPTS", 3);
|
|
235
285
|
RasterLayer.defaultProps = defaultProps;
|
|
236
286
|
RasterLayer.layerName = 'RasterLayer';
|
|
237
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGF5ZXJzIiwicmVxdWlyZSIsIl9yYXN0ZXJMYXllclNoYWRlcnMiLCJfaW1hZ2VzIiwiX3V0aWwiLCJfcGlwZWxpbmVWYWxpZGF0aW9uUGF0Y2giLCJfcmFzdGVyUHJvY2Vzc2luZ1VuaWZvcm1zIiwiX2NhbGxTdXBlciIsInQiLCJvIiwiZSIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImNhbGwiLCJfc3VwZXJQcm9wR2V0IiwiciIsInAiLCJfZ2V0MiIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiZGVmYXVsdFByb3BzIiwiQml0bWFwTGF5ZXIiLCJtb2R1bGVzIiwidHlwZSIsInZhbHVlIiwiY29tcGFyZSIsImltYWdlcyIsIm1vZHVsZVByb3BzIiwib25SZWRyYXdOZWVkZWQiLCJSYXN0ZXJMYXllciIsImV4cG9ydHMiLCJfQml0bWFwTGF5ZXIiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJfbGVuIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNvbmNhdCIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwiaW5pdGlhbGl6ZVN0YXRlIiwicGF0Y2hQaXBlbGluZVZhbGlkYXRpb24iLCJlbnN1cmVSYXN0ZXJIb29rc1JlZ2lzdGVyZWQiLCJzZXRTdGF0ZSIsImRyYXciLCJfb3B0cyIsIl90aGlzJHByb3BzJG9wYWNpdHkiLCJfdGhpcyRzdGF0ZSIsInN0YXRlIiwibW9kZWwiLCJjb29yZGluYXRlQ29udmVyc2lvbiIsImJvdW5kcyIsIl90aGlzJHByb3BzIiwicHJvcHMiLCJkZXNhdHVyYXRlIiwidHJhbnNwYXJlbnRDb2xvciIsInRpbnRDb2xvciIsInZhbHVlcyIsImV2ZXJ5IiwiaXRlbSIsInNoYWRlcklucHV0cyIsInNldFByb3BzIiwicmFzdGVyIiwibWFwIiwieCIsInNsaWNlIiwib3BhY2l0eSIsImFsbE1vZHVsZVByb3BzIiwiYXBwbHlNb2R1bGVVbmlmb3JtcyIsImRyYXdTdWNjZXNzIiwiY29udGV4dCIsInJlbmRlclBhc3MiLCJfc2NoZWR1bGVSZWRyYXciLCJfdGhpczIiLCJfcmVkcmF3U2NoZWR1bGVkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiX3RoaXMyJGNvbnRleHQkbGF5ZXJNIiwiZGVjayIsIl9uZWVkc1JlZHJhdyIsImxheWVyTWFuYWdlciIsInNldE5lZWRzUmVkcmF3IiwiZ2V0U2hhZGVycyIsIl90aGlzJHByb3BzJG1vZHVsZXMiLCJsdW1hTW9kdWxlcyIsInByZXBhcmVMdW1hTW9kdWxlcyIsInBhcmVudFNoYWRlcnMiLCJ2cyIsImJ1aWxkUmFzdGVyVmVydGV4U2hhZGVyIiwiZnMiLCJidWlsZFJhc3RlckZyYWdtZW50U2hhZGVyIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsInJhc3RlclVuaWZvcm1zIiwicmFzdGVyUHJvY2Vzc2luZ1VuaWZvcm1zIiwidXBkYXRlU3RhdGUiLCJwYXJhbXMiLCJvbGRQcm9wcyIsImNoYW5nZUZsYWdzIiwib2xkTW9kdWxlcyIsImV4dGVuc2lvbnNDaGFuZ2VkIiwibW9kdWxlc0VxdWFsIiwiX3RoaXMkc3RhdGUkbW9kZWwiLCJfdGhpcyRzdGF0ZSRtb2RlbCRkZXMiLCJfdGhpcyRnZXRBdHRyaWJ1dGVNYW4iLCJkZXN0cm95IiwiX2dldE1vZGVsIiwiZGV2aWNlIiwiZ2wiLCJnZXRBdHRyaWJ1dGVNYW5hZ2VyIiwiaW52YWxpZGF0ZUFsbCIsInVwZGF0ZUltYWdlcyIsImF0dHJpYnV0ZU1hbmFnZXIiLCJfdGhpcyRzdGF0ZSRtb2RlbDIiLCJvbGRNZXNoIiwibWVzaCIsIl9jcmVhdGVNZXNoIiwic2V0VmVydGV4Q291bnQiLCJ2ZXJ0ZXhDb3VudCIsImludmFsaWRhdGUiLCJfZ2V0Q29vcmRpbmF0ZVVuaWZvcm1zIiwiX2ltYWdlQ29vcmRpbmF0ZVN5c3RlbSIsIl9yZWYiLCJuZXdJbWFnZXMiLCJsb2FkSW1hZ2VzIiwiaW1hZ2VzRGF0YSIsIm9sZEltYWdlc0RhdGEiLCJmaW5hbGl6ZVN0YXRlIiwiX2kiLCJfT2JqZWN0JHZhbHVlcyIsImltYWdlIiwiaXNBcnJheSIsIl94JGRlbGV0ZSIsIl9pbWFnZSRkZWxldGUiLCJsYXllck5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmFzdGVyL3Jhc3Rlci1sYXllci9yYXN0ZXItbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtVcGRhdGVQYXJhbWV0ZXJzfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7Qml0bWFwTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5cbmltcG9ydCB7XG4gIGJ1aWxkUmFzdGVyRnJhZ21lbnRTaGFkZXIsXG4gIGJ1aWxkUmFzdGVyVmVydGV4U2hhZGVyLFxuICByYXN0ZXJVbmlmb3JtcyxcbiAgZW5zdXJlUmFzdGVySG9va3NSZWdpc3RlcmVkLFxuICBwcmVwYXJlTHVtYU1vZHVsZXNcbn0gZnJvbSAnLi9yYXN0ZXItbGF5ZXItc2hhZGVycyc7XG5pbXBvcnQge2xvYWRJbWFnZXN9IGZyb20gJy4uL2ltYWdlcyc7XG5pbXBvcnQgdHlwZSB7UmFzdGVyTGF5ZXJBZGRlZFByb3BzLCBJbWFnZVN0YXRlfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge21vZHVsZXNFcXVhbCwgYXBwbHlNb2R1bGVVbmlmb3Jtc30gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQge3BhdGNoUGlwZWxpbmVWYWxpZGF0aW9ufSBmcm9tICcuLi9waXBlbGluZS12YWxpZGF0aW9uLXBhdGNoJztcbmltcG9ydCB7cmFzdGVyUHJvY2Vzc2luZ1VuaWZvcm1zfSBmcm9tICcuLi9yYXN0ZXItcHJvY2Vzc2luZy11bmlmb3Jtcyc7XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgLi4uQml0bWFwTGF5ZXIuZGVmYXVsdFByb3BzLFxuICBtb2R1bGVzOiB7dHlwZTogJ2FycmF5JywgdmFsdWU6IFtdLCBjb21wYXJlOiB0cnVlfSxcbiAgaW1hZ2VzOiB7dHlwZTogJ29iamVjdCcsIHZhbHVlOiB7fSwgY29tcGFyZTogdHJ1ZX0sXG4gIG1vZHVsZVByb3BzOiB7dHlwZTogJ29iamVjdCcsIHZhbHVlOiB7fSwgY29tcGFyZTogdHJ1ZX0sXG4gIG9uUmVkcmF3TmVlZGVkOiB7dHlwZTogJ2Z1bmN0aW9uJywgdmFsdWU6IG51bGwsIGNvbXBhcmU6IGZhbHNlfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFzdGVyTGF5ZXIgZXh0ZW5kcyBCaXRtYXBMYXllcjxSYXN0ZXJMYXllckFkZGVkUHJvcHM+IHtcbiAgZGVjbGFyZSBzdGF0ZTogQml0bWFwTGF5ZXI8UmFzdGVyTGF5ZXJBZGRlZFByb3BzPlsnc3RhdGUnXSAmIHtcbiAgICBpbWFnZXM6IEltYWdlU3RhdGU7XG4gIH07XG5cbiAgX3JlZHJhd1NjaGVkdWxlZCA9IGZhbHNlO1xuXG4gIGluaXRpYWxpemVTdGF0ZSgpOiB2b2lkIHtcbiAgICBwYXRjaFBpcGVsaW5lVmFsaWRhdGlvbigpO1xuICAgIGVuc3VyZVJhc3Rlckhvb2tzUmVnaXN0ZXJlZCgpO1xuICAgIHRoaXMuc2V0U3RhdGUoe2ltYWdlczoge319KTtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoKTtcbiAgfVxuXG4gIGRyYXcoX29wdHM6IHtzaGFkZXJNb2R1bGVQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj59KTogdm9pZCB7XG4gICAgY29uc3Qge21vZGVsLCBpbWFnZXMsIGNvb3JkaW5hdGVDb252ZXJzaW9uLCBib3VuZHN9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB7ZGVzYXR1cmF0ZSwgdHJhbnNwYXJlbnRDb2xvciwgdGludENvbG9yLCBtb2R1bGVQcm9wc30gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKFxuICAgICAgIW1vZGVsIHx8XG4gICAgICAhaW1hZ2VzIHx8XG4gICAgICBPYmplY3Qua2V5cyhpbWFnZXMpLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgIU9iamVjdC52YWx1ZXMoaW1hZ2VzKS5ldmVyeShpdGVtID0+IGl0ZW0pXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2V0IFVCTyB1bmlmb3JtcyBmb3IgdGhlIHJhc3RlciBtb2R1bGVcbiAgICBtb2RlbC5zaGFkZXJJbnB1dHMuc2V0UHJvcHMoe1xuICAgICAgcmFzdGVyOiB7XG4gICAgICAgIGRlc2F0dXJhdGU6IGRlc2F0dXJhdGUgfHwgMCxcbiAgICAgICAgdHJhbnNwYXJlbnRDb2xvcjogKHRyYW5zcGFyZW50Q29sb3IgfHwgWzAsIDAsIDAsIDBdKS5tYXAoeCA9PiAoeCA/IHggLyAyNTUgOiAwKSksXG4gICAgICAgIHRpbnRDb2xvcjogKHRpbnRDb2xvciB8fCBbMjU1LCAyNTUsIDI1NV0pLnNsaWNlKDAsIDMpLm1hcCh4ID0+IHggLyAyNTUpLFxuICAgICAgICBjb29yZGluYXRlQ29udmVyc2lvbjogY29vcmRpbmF0ZUNvbnZlcnNpb24gfHwgMCxcbiAgICAgICAgYm91bmRzOiBib3VuZHMgfHwgWzAsIDAsIDAsIDBdLFxuICAgICAgICBvcGFjaXR5OiB0aGlzLnByb3BzLm9wYWNpdHkgPz8gMVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gQXBwbHkgZWFjaCBjdXN0b20gbW9kdWxlJ3MgdW5pZm9ybXMvYmluZGluZ3MgdG8gc2hhZGVySW5wdXRzIGRpcmVjdGx5LlxuICAgIC8vIFdlIGNhbGwgZ2V0VW5pZm9ybXMgb25jZSBwZXIgbW9kdWxlIGFuZCB3cml0ZSB0aGUgcmVzdWx0cyBpbnRvXG4gICAgLy8gc2hhZGVySW5wdXRzLm1vZHVsZVVuaWZvcm1zL21vZHVsZUJpbmRpbmdzLCBieXBhc3Npbmcgc2V0UHJvcHMoKSB3aGljaFxuICAgIC8vIHdvdWxkIGNhbGwgZ2V0VW5pZm9ybXMgYSBzZWNvbmQgdGltZSBvbiBhbHJlYWR5LXRyYW5zZm9ybWVkIHZhbHVlcy5cbiAgICBjb25zdCBhbGxNb2R1bGVQcm9wcyA9IHsuLi5tb2R1bGVQcm9wcywgLi4uaW1hZ2VzfTtcbiAgICBjb25zdCBtb2R1bGVzID0gdGhpcy5wcm9wcy5tb2R1bGVzIHx8IFtdO1xuICAgIGFwcGx5TW9kdWxlVW5pZm9ybXMobW9kZWwuc2hhZGVySW5wdXRzLCBtb2R1bGVzLCBhbGxNb2R1bGVQcm9wcyk7XG5cbiAgICBjb25zdCBkcmF3U3VjY2VzcyA9IG1vZGVsLmRyYXcodGhpcy5jb250ZXh0LnJlbmRlclBhc3MpO1xuICAgIGlmICghZHJhd1N1Y2Nlc3MpIHtcbiAgICAgIHRoaXMuX3NjaGVkdWxlUmVkcmF3KCk7XG4gICAgfVxuICB9XG5cbiAgX3NjaGVkdWxlUmVkcmF3KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZWRyYXdTY2hlZHVsZWQpIHJldHVybjtcbiAgICB0aGlzLl9yZWRyYXdTY2hlZHVsZWQgPSB0cnVlO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLl9yZWRyYXdTY2hlZHVsZWQgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmNvbnRleHQuZGVjaykge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGFjY2Vzc2luZyBwcml2YXRlIGRlY2suZ2wgcHJvcGVydHlcbiAgICAgICAgdGhpcy5jb250ZXh0LmRlY2suX25lZWRzUmVkcmF3ID0gJ1Jhc3RlckxheWVyIHBpcGVsaW5lIHBlbmRpbmcnO1xuICAgICAgfVxuICAgICAgdGhpcy5jb250ZXh0LmxheWVyTWFuYWdlcj8uc2V0TmVlZHNSZWRyYXcoJ1Jhc3RlckxheWVyIHBpcGVsaW5lIHBlbmRpbmcnKTtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vblJlZHJhd05lZWRlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uUmVkcmF3TmVlZGVkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRTaGFkZXJzKCk6IGFueSB7XG4gICAgY29uc3Qge21vZHVsZXMgPSBbXX0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgbHVtYU1vZHVsZXMgPSBwcmVwYXJlTHVtYU1vZHVsZXMobW9kdWxlcyk7XG4gICAgY29uc3QgcGFyZW50U2hhZGVycyA9IHN1cGVyLmdldFNoYWRlcnMoKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5wYXJlbnRTaGFkZXJzLFxuICAgICAgdnM6IGJ1aWxkUmFzdGVyVmVydGV4U2hhZGVyKCksXG4gICAgICBmczogYnVpbGRSYXN0ZXJGcmFnbWVudFNoYWRlcigpLFxuICAgICAgbW9kdWxlczogW1xuICAgICAgICAuLi4ocGFyZW50U2hhZGVycy5tb2R1bGVzIHx8IFtdKSxcbiAgICAgICAgcmFzdGVyVW5pZm9ybXMsXG4gICAgICAgIHJhc3RlclByb2Nlc3NpbmdVbmlmb3JtcyxcbiAgICAgICAgLi4ubHVtYU1vZHVsZXNcbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgdXBkYXRlU3RhdGUocGFyYW1zOiBVcGRhdGVQYXJhbWV0ZXJzPEJpdG1hcExheWVyPFJhc3RlckxheWVyQWRkZWRQcm9wcz4+KTogdm9pZCB7XG4gICAgY29uc3Qge3Byb3BzLCBvbGRQcm9wcywgY2hhbmdlRmxhZ3N9ID0gcGFyYW1zO1xuICAgIGNvbnN0IG1vZHVsZXMgPSBwcm9wcyAmJiBwcm9wcy5tb2R1bGVzO1xuICAgIGNvbnN0IG9sZE1vZHVsZXMgPSBvbGRQcm9wcyAmJiBvbGRQcm9wcy5tb2R1bGVzO1xuXG4gICAgaWYgKGNoYW5nZUZsYWdzLmV4dGVuc2lvbnNDaGFuZ2VkIHx8ICFtb2R1bGVzRXF1YWwobW9kdWxlcywgb2xkTW9kdWxlcykpIHtcbiAgICAgIHRoaXMuc3RhdGUubW9kZWw/LmRlc3Ryb3k/LigpO1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBfZ2V0TW9kZWwgaXMgaW50ZXJuYWwgdG8gQml0bWFwTGF5ZXJcbiAgICAgIHRoaXMuc3RhdGUubW9kZWwgPSB0aGlzLl9nZXRNb2RlbCh0aGlzLmNvbnRleHQuZGV2aWNlIHx8IHRoaXMuY29udGV4dC5nbCk7XG4gICAgICB0aGlzLmdldEF0dHJpYnV0ZU1hbmFnZXIoKT8uaW52YWxpZGF0ZUFsbCgpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcyAmJiBwcm9wcy5pbWFnZXMpIHtcbiAgICAgIHRoaXMudXBkYXRlSW1hZ2VzKHtwcm9wcywgb2xkUHJvcHN9KTtcbiAgICB9XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVNYW5hZ2VyID0gdGhpcy5nZXRBdHRyaWJ1dGVNYW5hZ2VyKCk7XG5cbiAgICBpZiAocHJvcHMuYm91bmRzICE9PSBvbGRQcm9wcy5ib3VuZHMpIHtcbiAgICAgIGNvbnN0IG9sZE1lc2ggPSB0aGlzLnN0YXRlLm1lc2g7XG4gICAgICBjb25zdCBtZXNoID0gdGhpcy5fY3JlYXRlTWVzaCgpO1xuICAgICAgdGhpcy5zdGF0ZS5tb2RlbD8uc2V0VmVydGV4Q291bnQobWVzaC52ZXJ0ZXhDb3VudCk7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBtZXNoKSB7XG4gICAgICAgIGlmIChvbGRNZXNoICYmIG9sZE1lc2hba2V5XSAhPT0gbWVzaFtrZXldKSB7XG4gICAgICAgICAgYXR0cmlidXRlTWFuYWdlcj8uaW52YWxpZGF0ZShrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKHttZXNoLCAuLi50aGlzLl9nZXRDb29yZGluYXRlVW5pZm9ybXMoKX0pO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuX2ltYWdlQ29vcmRpbmF0ZVN5c3RlbSAhPT0gb2xkUHJvcHMuX2ltYWdlQ29vcmRpbmF0ZVN5c3RlbSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh0aGlzLl9nZXRDb29yZGluYXRlVW5pZm9ybXMoKSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlSW1hZ2VzKHtcbiAgICBwcm9wcyxcbiAgICBvbGRQcm9wc1xuICB9OiB7XG4gICAgcHJvcHM6IFJhc3RlckxheWVyQWRkZWRQcm9wcztcbiAgICBvbGRQcm9wczogUmFzdGVyTGF5ZXJBZGRlZFByb3BzO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3Qge2ltYWdlc30gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IGRldmljZSA9IHRoaXMuY29udGV4dC5kZXZpY2U7XG4gICAgY29uc3QgZ2wgPSBkZXZpY2U/LmdsIHx8IHRoaXMuY29udGV4dC5nbDtcblxuICAgIGNvbnN0IG5ld0ltYWdlcyA9IGxvYWRJbWFnZXMoe1xuICAgICAgZ2wsXG4gICAgICBkZXZpY2UsXG4gICAgICBpbWFnZXMsXG4gICAgICBpbWFnZXNEYXRhOiBwcm9wcy5pbWFnZXMsXG4gICAgICBvbGRJbWFnZXNEYXRhOiBvbGRQcm9wcy5pbWFnZXNcbiAgICB9KTtcbiAgICBpZiAobmV3SW1hZ2VzKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtpbWFnZXM6IG5ld0ltYWdlc30pO1xuICAgIH1cbiAgfVxuXG4gIGZpbmFsaXplU3RhdGUoKTogdm9pZCB7XG4gICAgc3VwZXIuZmluYWxpemVTdGF0ZSh0aGlzLmNvbnRleHQpO1xuXG4gICAgaWYgKHRoaXMuc3RhdGUuaW1hZ2VzKSB7XG4gICAgICBmb3IgKGNvbnN0IGltYWdlIG9mIE9iamVjdC52YWx1ZXModGhpcy5zdGF0ZS5pbWFnZXMpKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGltYWdlKSkge1xuICAgICAgICAgIGltYWdlLm1hcCh4ID0+IHggJiYgKHguZGVzdHJveSA/IHguZGVzdHJveSgpIDogeC5kZWxldGU/LigpKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW1hZ2UpIHtcbiAgICAgICAgICBpbWFnZS5kZXN0cm95ID8gaW1hZ2UuZGVzdHJveSgpIDogaW1hZ2UuZGVsZXRlPy4oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5SYXN0ZXJMYXllci5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5SYXN0ZXJMYXllci5sYXllck5hbWUgPSAnUmFzdGVyTGF5ZXInO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxtQkFBQSxHQUFBRCxPQUFBO0FBT0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsS0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksd0JBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLHlCQUFBLEdBQUFMLE9BQUE7QUFBdUUsU0FBQU0sV0FBQUMsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsV0FBQUQsQ0FBQSxPQUFBRSxnQkFBQSxhQUFBRixDQUFBLE9BQUFHLDJCQUFBLGFBQUFKLENBQUEsRUFBQUsseUJBQUEsS0FBQUMsT0FBQSxDQUFBQyxTQUFBLENBQUFOLENBQUEsRUFBQUMsQ0FBQSxZQUFBQyxnQkFBQSxhQUFBSCxDQUFBLEVBQUFRLFdBQUEsSUFBQVAsQ0FBQSxDQUFBUSxLQUFBLENBQUFULENBQUEsRUFBQUUsQ0FBQTtBQUFBLFNBQUFHLDBCQUFBLGNBQUFMLENBQUEsSUFBQVUsT0FBQSxDQUFBQyxTQUFBLENBQUFDLE9BQUEsQ0FBQUMsSUFBQSxDQUFBUCxPQUFBLENBQUFDLFNBQUEsQ0FBQUcsT0FBQSxpQ0FBQVYsQ0FBQSxhQUFBSyx5QkFBQSxZQUFBQSwwQkFBQSxhQUFBTCxDQUFBO0FBQUEsU0FBQWMsY0FBQWQsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQWEsQ0FBQSxRQUFBQyxDQUFBLE9BQUFDLEtBQUEsaUJBQUFkLGdCQUFBLGlCQUFBWSxDQUFBLEdBQUFmLENBQUEsQ0FBQVcsU0FBQSxHQUFBWCxDQUFBLEdBQUFDLENBQUEsRUFBQUMsQ0FBQSxjQUFBYSxDQUFBLHlCQUFBQyxDQUFBLGFBQUFoQixDQUFBLFdBQUFnQixDQUFBLENBQUFQLEtBQUEsQ0FBQVAsQ0FBQSxFQUFBRixDQUFBLE9BQUFnQixDQUFBO0FBQUEsU0FBQUUsUUFBQWhCLENBQUEsRUFBQWEsQ0FBQSxRQUFBZixDQUFBLEdBQUFtQixNQUFBLENBQUFDLElBQUEsQ0FBQWxCLENBQUEsT0FBQWlCLE1BQUEsQ0FBQUUscUJBQUEsUUFBQXBCLENBQUEsR0FBQWtCLE1BQUEsQ0FBQUUscUJBQUEsQ0FBQW5CLENBQUEsR0FBQWEsQ0FBQSxLQUFBZCxDQUFBLEdBQUFBLENBQUEsQ0FBQXFCLE1BQUEsV0FBQVAsQ0FBQSxXQUFBSSxNQUFBLENBQUFJLHdCQUFBLENBQUFyQixDQUFBLEVBQUFhLENBQUEsRUFBQVMsVUFBQSxPQUFBeEIsQ0FBQSxDQUFBeUIsSUFBQSxDQUFBaEIsS0FBQSxDQUFBVCxDQUFBLEVBQUFDLENBQUEsWUFBQUQsQ0FBQTtBQUFBLFNBQUEwQixjQUFBeEIsQ0FBQSxhQUFBYSxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQWYsQ0FBQSxXQUFBMkIsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFHLE9BQUEsQ0FBQUMsTUFBQSxDQUFBbkIsQ0FBQSxPQUFBNkIsT0FBQSxXQUFBZCxDQUFBLFFBQUFlLGdCQUFBLGFBQUE1QixDQUFBLEVBQUFhLENBQUEsRUFBQWYsQ0FBQSxDQUFBZSxDQUFBLFNBQUFJLE1BQUEsQ0FBQVkseUJBQUEsR0FBQVosTUFBQSxDQUFBYSxnQkFBQSxDQUFBOUIsQ0FBQSxFQUFBaUIsTUFBQSxDQUFBWSx5QkFBQSxDQUFBL0IsQ0FBQSxLQUFBa0IsT0FBQSxDQUFBQyxNQUFBLENBQUFuQixDQUFBLEdBQUE2QixPQUFBLFdBQUFkLENBQUEsSUFBQUksTUFBQSxDQUFBYyxjQUFBLENBQUEvQixDQUFBLEVBQUFhLENBQUEsRUFBQUksTUFBQSxDQUFBSSx3QkFBQSxDQUFBdkIsQ0FBQSxFQUFBZSxDQUFBLGlCQUFBYixDQUFBLElBakJ2RTtBQUNBO0FBa0JBLElBQU1nQyxZQUFZLEdBQUFSLGFBQUEsQ0FBQUEsYUFBQSxLQUNiUyxtQkFBVyxDQUFDRCxZQUFZO0VBQzNCRSxPQUFPLEVBQUU7SUFBQ0MsSUFBSSxFQUFFLE9BQU87SUFBRUMsS0FBSyxFQUFFLEVBQUU7SUFBRUMsT0FBTyxFQUFFO0VBQUksQ0FBQztFQUNsREMsTUFBTSxFQUFFO0lBQUNILElBQUksRUFBRSxRQUFRO0lBQUVDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFBRUMsT0FBTyxFQUFFO0VBQUksQ0FBQztFQUNsREUsV0FBVyxFQUFFO0lBQUNKLElBQUksRUFBRSxRQUFRO0lBQUVDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFBRUMsT0FBTyxFQUFFO0VBQUksQ0FBQztFQUN2REcsY0FBYyxFQUFFO0lBQUNMLElBQUksRUFBRSxVQUFVO0lBQUVDLEtBQUssRUFBRSxJQUFJO0lBQUVDLE9BQU8sRUFBRTtFQUFLO0FBQUMsRUFDaEU7QUFBQyxJQUVtQkksV0FBVyxHQUFBQyxPQUFBLHFDQUFBQyxZQUFBO0VBQUEsU0FBQUYsWUFBQTtJQUFBLElBQUFHLEtBQUE7SUFBQSxJQUFBQyxnQkFBQSxtQkFBQUosV0FBQTtJQUFBLFNBQUFLLElBQUEsR0FBQXJCLFNBQUEsQ0FBQUMsTUFBQSxFQUFBcUIsSUFBQSxPQUFBQyxLQUFBLENBQUFGLElBQUEsR0FBQUcsSUFBQSxNQUFBQSxJQUFBLEdBQUFILElBQUEsRUFBQUcsSUFBQTtNQUFBRixJQUFBLENBQUFFLElBQUEsSUFBQXhCLFNBQUEsQ0FBQXdCLElBQUE7SUFBQTtJQUFBTCxLQUFBLEdBQUEvQyxVQUFBLE9BQUE0QyxXQUFBLEtBQUFTLE1BQUEsQ0FBQUgsSUFBQTtJQUFBLElBQUFuQixnQkFBQSxhQUFBZ0IsS0FBQSxzQkFLWCxLQUFLO0lBQUEsT0FBQUEsS0FBQTtFQUFBO0VBQUEsSUFBQU8sVUFBQSxhQUFBVixXQUFBLEVBQUFFLFlBQUE7RUFBQSxXQUFBUyxhQUFBLGFBQUFYLFdBQUE7SUFBQVksR0FBQTtJQUFBakIsS0FBQSxFQUV4QixTQUFBa0IsZUFBZUEsQ0FBQSxFQUFTO01BQ3RCLElBQUFDLGdEQUF1QixFQUFDLENBQUM7TUFDekIsSUFBQUMsK0NBQTJCLEVBQUMsQ0FBQztNQUM3QixJQUFJLENBQUNDLFFBQVEsQ0FBQztRQUFDbkIsTUFBTSxFQUFFLENBQUM7TUFBQyxDQUFDLENBQUM7TUFDM0IxQixhQUFBLENBQUE2QixXQUFBO0lBQ0Y7RUFBQztJQUFBWSxHQUFBO0lBQUFqQixLQUFBLEVBRUQsU0FBQXNCLElBQUlBLENBQUNDLEtBQW1ELEVBQVE7TUFBQSxJQUFBQyxtQkFBQTtNQUM5RCxJQUFBQyxXQUFBLEdBQXNELElBQUksQ0FBQ0MsS0FBSztRQUF6REMsS0FBSyxHQUFBRixXQUFBLENBQUxFLEtBQUs7UUFBRXpCLE1BQU0sR0FBQXVCLFdBQUEsQ0FBTnZCLE1BQU07UUFBRTBCLG9CQUFvQixHQUFBSCxXQUFBLENBQXBCRyxvQkFBb0I7UUFBRUMsTUFBTSxHQUFBSixXQUFBLENBQU5JLE1BQU07TUFDbEQsSUFBQUMsV0FBQSxHQUErRCxJQUFJLENBQUNDLEtBQUs7UUFBbEVDLFVBQVUsR0FBQUYsV0FBQSxDQUFWRSxVQUFVO1FBQUVDLGdCQUFnQixHQUFBSCxXQUFBLENBQWhCRyxnQkFBZ0I7UUFBRUMsU0FBUyxHQUFBSixXQUFBLENBQVRJLFNBQVM7UUFBRS9CLFdBQVcsR0FBQTJCLFdBQUEsQ0FBWDNCLFdBQVc7TUFFM0QsSUFDRSxDQUFDd0IsS0FBSyxJQUNOLENBQUN6QixNQUFNLElBQ1ByQixNQUFNLENBQUNDLElBQUksQ0FBQ29CLE1BQU0sQ0FBQyxDQUFDWixNQUFNLEtBQUssQ0FBQyxJQUNoQyxDQUFDVCxNQUFNLENBQUNzRCxNQUFNLENBQUNqQyxNQUFNLENBQUMsQ0FBQ2tDLEtBQUssQ0FBQyxVQUFBQyxJQUFJO1FBQUEsT0FBSUEsSUFBSTtNQUFBLEVBQUMsRUFDMUM7UUFDQTtNQUNGOztNQUVBO01BQ0FWLEtBQUssQ0FBQ1csWUFBWSxDQUFDQyxRQUFRLENBQUM7UUFDMUJDLE1BQU0sRUFBRTtVQUNOUixVQUFVLEVBQUVBLFVBQVUsSUFBSSxDQUFDO1VBQzNCQyxnQkFBZ0IsRUFBRSxDQUFDQSxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFUSxHQUFHLENBQUMsVUFBQUMsQ0FBQztZQUFBLE9BQUtBLENBQUMsR0FBR0EsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1VBQUEsQ0FBQyxDQUFDO1VBQ2hGUixTQUFTLEVBQUUsQ0FBQ0EsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRVMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQ0YsR0FBRyxDQUFDLFVBQUFDLENBQUM7WUFBQSxPQUFJQSxDQUFDLEdBQUcsR0FBRztVQUFBLEVBQUM7VUFDdkVkLG9CQUFvQixFQUFFQSxvQkFBb0IsSUFBSSxDQUFDO1VBQy9DQyxNQUFNLEVBQUVBLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztVQUM5QmUsT0FBTyxHQUFBcEIsbUJBQUEsR0FBRSxJQUFJLENBQUNPLEtBQUssQ0FBQ2EsT0FBTyxjQUFBcEIsbUJBQUEsY0FBQUEsbUJBQUEsR0FBSTtRQUNqQztNQUNGLENBQUMsQ0FBQzs7TUFFRjtNQUNBO01BQ0E7TUFDQTtNQUNBLElBQU1xQixjQUFjLEdBQUF6RCxhQUFBLENBQUFBLGFBQUEsS0FBT2UsV0FBVyxHQUFLRCxNQUFNLENBQUM7TUFDbEQsSUFBTUosT0FBTyxHQUFHLElBQUksQ0FBQ2lDLEtBQUssQ0FBQ2pDLE9BQU8sSUFBSSxFQUFFO01BQ3hDLElBQUFnRCx5QkFBbUIsRUFBQ25CLEtBQUssQ0FBQ1csWUFBWSxFQUFFeEMsT0FBTyxFQUFFK0MsY0FBYyxDQUFDO01BRWhFLElBQU1FLFdBQVcsR0FBR3BCLEtBQUssQ0FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQzBCLE9BQU8sQ0FBQ0MsVUFBVSxDQUFDO01BQ3ZELElBQUksQ0FBQ0YsV0FBVyxFQUFFO1FBQ2hCLElBQUksQ0FBQ0csZUFBZSxDQUFDLENBQUM7TUFDeEI7SUFDRjtFQUFDO0lBQUFqQyxHQUFBO0lBQUFqQixLQUFBLEVBRUQsU0FBQWtELGVBQWVBLENBQUEsRUFBUztNQUFBLElBQUFDLE1BQUE7TUFDdEIsSUFBSSxJQUFJLENBQUNDLGdCQUFnQixFQUFFO01BQzNCLElBQUksQ0FBQ0EsZ0JBQWdCLEdBQUcsSUFBSTtNQUM1QkMscUJBQXFCLENBQUMsWUFBTTtRQUFBLElBQUFDLHFCQUFBO1FBQzFCSCxNQUFJLENBQUNDLGdCQUFnQixHQUFHLEtBQUs7UUFDN0IsSUFBSUQsTUFBSSxDQUFDSCxPQUFPLENBQUNPLElBQUksRUFBRTtVQUNyQjtVQUNBSixNQUFJLENBQUNILE9BQU8sQ0FBQ08sSUFBSSxDQUFDQyxZQUFZLEdBQUcsOEJBQThCO1FBQ2pFO1FBQ0EsQ0FBQUYscUJBQUEsR0FBQUgsTUFBSSxDQUFDSCxPQUFPLENBQUNTLFlBQVksY0FBQUgscUJBQUEsZUFBekJBLHFCQUFBLENBQTJCSSxjQUFjLENBQUMsOEJBQThCLENBQUM7UUFDekUsSUFBSSxPQUFPUCxNQUFJLENBQUNwQixLQUFLLENBQUMzQixjQUFjLEtBQUssVUFBVSxFQUFFO1VBQ25EK0MsTUFBSSxDQUFDcEIsS0FBSyxDQUFDM0IsY0FBYyxDQUFDLENBQUM7UUFDN0I7TUFDRixDQUFDLENBQUM7SUFDSjtFQUFDO0lBQUFhLEdBQUE7SUFBQWpCLEtBQUEsRUFFRCxTQUFBMkQsVUFBVUEsQ0FBQSxFQUFRO01BQ2hCLElBQUFDLG1CQUFBLEdBQXVCLElBQUksQ0FBQzdCLEtBQUssQ0FBMUJqQyxPQUFPO1FBQVBBLE9BQU8sR0FBQThELG1CQUFBLGNBQUcsRUFBRSxHQUFBQSxtQkFBQTtNQUVuQixJQUFNQyxXQUFXLEdBQUcsSUFBQUMsc0NBQWtCLEVBQUNoRSxPQUFPLENBQUM7TUFDL0MsSUFBTWlFLGFBQWEsR0FBQXZGLGFBQUEsQ0FBQTZCLFdBQUEsNEJBQXFCO01BRXhDLE9BQUFqQixhQUFBLENBQUFBLGFBQUEsS0FDSzJFLGFBQWE7UUFDaEJDLEVBQUUsRUFBRSxJQUFBQywyQ0FBdUIsRUFBQyxDQUFDO1FBQzdCQyxFQUFFLEVBQUUsSUFBQUMsNkNBQXlCLEVBQUMsQ0FBQztRQUMvQnJFLE9BQU8sS0FBQWdCLE1BQUEsS0FBQXNELG1CQUFBLGFBQ0RMLGFBQWEsQ0FBQ2pFLE9BQU8sSUFBSSxFQUFFLElBQy9CdUUsa0NBQWMsRUFDZEMsa0RBQXdCLE9BQUFGLG1CQUFBLGFBQ3JCUCxXQUFXO01BQ2Y7SUFFTDs7SUFFQTtFQUFBO0lBQUE1QyxHQUFBO0lBQUFqQixLQUFBLEVBQ0EsU0FBQXVFLFdBQVdBLENBQUNDLE1BQTRELEVBQVE7TUFDOUUsSUFBT3pDLEtBQUssR0FBMkJ5QyxNQUFNLENBQXRDekMsS0FBSztRQUFFMEMsUUFBUSxHQUFpQkQsTUFBTSxDQUEvQkMsUUFBUTtRQUFFQyxXQUFXLEdBQUlGLE1BQU0sQ0FBckJFLFdBQVc7TUFDbkMsSUFBTTVFLE9BQU8sR0FBR2lDLEtBQUssSUFBSUEsS0FBSyxDQUFDakMsT0FBTztNQUN0QyxJQUFNNkUsVUFBVSxHQUFHRixRQUFRLElBQUlBLFFBQVEsQ0FBQzNFLE9BQU87TUFFL0MsSUFBSTRFLFdBQVcsQ0FBQ0UsaUJBQWlCLElBQUksQ0FBQyxJQUFBQyxrQkFBWSxFQUFDL0UsT0FBTyxFQUFFNkUsVUFBVSxDQUFDLEVBQUU7UUFBQSxJQUFBRyxpQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxxQkFBQTtRQUN2RSxDQUFBRixpQkFBQSxPQUFJLENBQUNwRCxLQUFLLENBQUNDLEtBQUssY0FBQW1ELGlCQUFBLGdCQUFBQyxxQkFBQSxHQUFoQkQsaUJBQUEsQ0FBa0JHLE9BQU8sY0FBQUYscUJBQUEsZUFBekJBLHFCQUFBLENBQUF4RyxJQUFBLENBQUF1RyxpQkFBNEIsQ0FBQztRQUM3QjtRQUNBLElBQUksQ0FBQ3BELEtBQUssQ0FBQ0MsS0FBSyxHQUFHLElBQUksQ0FBQ3VELFNBQVMsQ0FBQyxJQUFJLENBQUNsQyxPQUFPLENBQUNtQyxNQUFNLElBQUksSUFBSSxDQUFDbkMsT0FBTyxDQUFDb0MsRUFBRSxDQUFDO1FBQ3pFLENBQUFKLHFCQUFBLE9BQUksQ0FBQ0ssbUJBQW1CLENBQUMsQ0FBQyxjQUFBTCxxQkFBQSxlQUExQkEscUJBQUEsQ0FBNEJNLGFBQWEsQ0FBQyxDQUFDO01BQzdDO01BRUEsSUFBSXZELEtBQUssSUFBSUEsS0FBSyxDQUFDN0IsTUFBTSxFQUFFO1FBQ3pCLElBQUksQ0FBQ3FGLFlBQVksQ0FBQztVQUFDeEQsS0FBSyxFQUFMQSxLQUFLO1VBQUUwQyxRQUFRLEVBQVJBO1FBQVEsQ0FBQyxDQUFDO01BQ3RDO01BRUEsSUFBTWUsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDSCxtQkFBbUIsQ0FBQyxDQUFDO01BRW5ELElBQUl0RCxLQUFLLENBQUNGLE1BQU0sS0FBSzRDLFFBQVEsQ0FBQzVDLE1BQU0sRUFBRTtRQUFBLElBQUE0RCxrQkFBQTtRQUNwQyxJQUFNQyxPQUFPLEdBQUcsSUFBSSxDQUFDaEUsS0FBSyxDQUFDaUUsSUFBSTtRQUMvQixJQUFNQSxJQUFJLEdBQUcsSUFBSSxDQUFDQyxXQUFXLENBQUMsQ0FBQztRQUMvQixDQUFBSCxrQkFBQSxPQUFJLENBQUMvRCxLQUFLLENBQUNDLEtBQUssY0FBQThELGtCQUFBLGVBQWhCQSxrQkFBQSxDQUFrQkksY0FBYyxDQUFDRixJQUFJLENBQUNHLFdBQVcsQ0FBQztRQUNsRCxLQUFLLElBQU03RSxHQUFHLElBQUkwRSxJQUFJLEVBQUU7VUFDdEIsSUFBSUQsT0FBTyxJQUFJQSxPQUFPLENBQUN6RSxHQUFHLENBQUMsS0FBSzBFLElBQUksQ0FBQzFFLEdBQUcsQ0FBQyxFQUFFO1lBQ3pDdUUsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsZUFBaEJBLGdCQUFnQixDQUFFTyxVQUFVLENBQUM5RSxHQUFHLENBQUM7VUFDbkM7UUFDRjtRQUNBLElBQUksQ0FBQ0ksUUFBUSxDQUFBakMsYUFBQTtVQUFFdUcsSUFBSSxFQUFKQTtRQUFJLEdBQUssSUFBSSxDQUFDSyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUN6RCxDQUFDLE1BQU0sSUFBSWpFLEtBQUssQ0FBQ2tFLHNCQUFzQixLQUFLeEIsUUFBUSxDQUFDd0Isc0JBQXNCLEVBQUU7UUFDM0UsSUFBSSxDQUFDNUUsUUFBUSxDQUFDLElBQUksQ0FBQzJFLHNCQUFzQixDQUFDLENBQUMsQ0FBQztNQUM5QztJQUNGO0VBQUM7SUFBQS9FLEdBQUE7SUFBQWpCLEtBQUEsRUFFRCxTQUFBdUYsWUFBWUEsQ0FBQVcsSUFBQSxFQU1IO01BQUEsSUFMUG5FLEtBQUssR0FBQW1FLElBQUEsQ0FBTG5FLEtBQUs7UUFDTDBDLFFBQVEsR0FBQXlCLElBQUEsQ0FBUnpCLFFBQVE7TUFLUixJQUFPdkUsTUFBTSxHQUFJLElBQUksQ0FBQ3dCLEtBQUssQ0FBcEJ4QixNQUFNO01BQ2IsSUFBTWlGLE1BQU0sR0FBRyxJQUFJLENBQUNuQyxPQUFPLENBQUNtQyxNQUFNO01BQ2xDLElBQU1DLEVBQUUsR0FBRyxDQUFBRCxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRUMsRUFBRSxLQUFJLElBQUksQ0FBQ3BDLE9BQU8sQ0FBQ29DLEVBQUU7TUFFeEMsSUFBTWUsU0FBUyxHQUFHLElBQUFDLGtCQUFVLEVBQUM7UUFDM0JoQixFQUFFLEVBQUZBLEVBQUU7UUFDRkQsTUFBTSxFQUFOQSxNQUFNO1FBQ05qRixNQUFNLEVBQU5BLE1BQU07UUFDTm1HLFVBQVUsRUFBRXRFLEtBQUssQ0FBQzdCLE1BQU07UUFDeEJvRyxhQUFhLEVBQUU3QixRQUFRLENBQUN2RTtNQUMxQixDQUFDLENBQUM7TUFDRixJQUFJaUcsU0FBUyxFQUFFO1FBQ2IsSUFBSSxDQUFDOUUsUUFBUSxDQUFDO1VBQUNuQixNQUFNLEVBQUVpRztRQUFTLENBQUMsQ0FBQztNQUNwQztJQUNGO0VBQUM7SUFBQWxGLEdBQUE7SUFBQWpCLEtBQUEsRUFFRCxTQUFBdUcsYUFBYUEsQ0FBQSxFQUFTO01BQ3BCL0gsYUFBQSxDQUFBNkIsV0FBQSw2QkFBb0IsSUFBSSxDQUFDMkMsT0FBTztNQUVoQyxJQUFJLElBQUksQ0FBQ3RCLEtBQUssQ0FBQ3hCLE1BQU0sRUFBRTtRQUNyQixTQUFBc0csRUFBQSxNQUFBQyxjQUFBLEdBQW9CNUgsTUFBTSxDQUFDc0QsTUFBTSxDQUFDLElBQUksQ0FBQ1QsS0FBSyxDQUFDeEIsTUFBTSxDQUFDLEVBQUFzRyxFQUFBLEdBQUFDLGNBQUEsQ0FBQW5ILE1BQUEsRUFBQWtILEVBQUEsSUFBRTtVQUFqRCxJQUFNRSxLQUFLLEdBQUFELGNBQUEsQ0FBQUQsRUFBQTtVQUNkLElBQUk1RixLQUFLLENBQUMrRixPQUFPLENBQUNELEtBQUssQ0FBQyxFQUFFO1lBQ3hCQSxLQUFLLENBQUNqRSxHQUFHLENBQUMsVUFBQUMsQ0FBQztjQUFBLElBQUFrRSxTQUFBO2NBQUEsT0FBSWxFLENBQUMsS0FBS0EsQ0FBQyxDQUFDdUMsT0FBTyxHQUFHdkMsQ0FBQyxDQUFDdUMsT0FBTyxDQUFDLENBQUMsSUFBQTJCLFNBQUEsR0FBR2xFLENBQUMsVUFBTyxjQUFBa0UsU0FBQSx1QkFBUkEsU0FBQSxDQUFBckksSUFBQSxDQUFBbUUsQ0FBVyxDQUFDLENBQUM7WUFBQSxFQUFDO1VBQy9ELENBQUMsTUFBTSxJQUFJZ0UsS0FBSyxFQUFFO1lBQUEsSUFBQUcsYUFBQTtZQUNoQkgsS0FBSyxDQUFDekIsT0FBTyxHQUFHeUIsS0FBSyxDQUFDekIsT0FBTyxDQUFDLENBQUMsSUFBQTRCLGFBQUEsR0FBR0gsS0FBSyxVQUFPLGNBQUFHLGFBQUEsdUJBQVpBLGFBQUEsQ0FBQXRJLElBQUEsQ0FBQW1JLEtBQWUsQ0FBQztVQUNwRDtRQUNGO01BQ0Y7SUFDRjtFQUFDO0FBQUEsRUE3SnNDN0csbUJBQVc7QUFnS3BEUSxXQUFXLENBQUNULFlBQVksR0FBR0EsWUFBWTtBQUN2Q1MsV0FBVyxDQUFDeUcsU0FBUyxHQUFHLGFBQWEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
287
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGF5ZXJzIiwicmVxdWlyZSIsIl9yYXN0ZXJMYXllclNoYWRlcnMiLCJfaW1hZ2VzIiwiX3V0aWwiLCJfcGlwZWxpbmVWYWxpZGF0aW9uUGF0Y2giLCJfcmFzdGVyUHJvY2Vzc2luZ1VuaWZvcm1zIiwiX2NhbGxTdXBlciIsInQiLCJvIiwiZSIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImNhbGwiLCJfc3VwZXJQcm9wR2V0IiwiciIsInAiLCJfZ2V0MiIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiZGVmYXVsdFByb3BzIiwiQml0bWFwTGF5ZXIiLCJtb2R1bGVzIiwidHlwZSIsInZhbHVlIiwiY29tcGFyZSIsImltYWdlcyIsIm1vZHVsZVByb3BzIiwib25SZWRyYXdOZWVkZWQiLCJSYXN0ZXJMYXllciIsImV4cG9ydHMiLCJfQml0bWFwTGF5ZXIiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJfbGVuIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNvbmNhdCIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwiaW5pdGlhbGl6ZVN0YXRlIiwicGF0Y2hQaXBlbGluZVZhbGlkYXRpb24iLCJlbnN1cmVSYXN0ZXJIb29rc1JlZ2lzdGVyZWQiLCJzZXRTdGF0ZSIsImRyYXciLCJfb3B0cyIsIl90aGlzJHByb3BzJG9wYWNpdHkiLCJfcGVuZGluZ0ltYWdlUmV0cnkiLCJfdGhpcyRjb250ZXh0JGRldmljZSIsInJldHJ5IiwiX2xvYWRJbWFnZXMiLCJsb2FkSW1hZ2VzIiwiZ2wiLCJjb250ZXh0IiwiZGV2aWNlIiwic3RhdGUiLCJpbWFnZXNEYXRhIiwib2xkSW1hZ2VzRGF0YSIsIm5ld0ltYWdlcyIsImhhc1BlbmRpbmdVcGxvYWRzIiwiX2ltYWdlUmV0cnlDb3VudCIsIk1BWF9JTUFHRV9SRVRSWV9BVFRFTVBUUyIsIl9zY2hlZHVsZVJlZHJhdyIsImNvbnNvbGUiLCJ3YXJuIiwiX3RoaXMkc3RhdGUiLCJtb2RlbCIsImNvb3JkaW5hdGVDb252ZXJzaW9uIiwiYm91bmRzIiwiX3RoaXMkcHJvcHMiLCJwcm9wcyIsImRlc2F0dXJhdGUiLCJ0cmFuc3BhcmVudENvbG9yIiwidGludENvbG9yIiwidmFsdWVzIiwiZXZlcnkiLCJpdGVtIiwic2hhZGVySW5wdXRzIiwic2V0UHJvcHMiLCJyYXN0ZXIiLCJtYXAiLCJ4Iiwic2xpY2UiLCJvcGFjaXR5IiwiYWxsTW9kdWxlUHJvcHMiLCJhcHBseU1vZHVsZVVuaWZvcm1zIiwiZHJhd1N1Y2Nlc3MiLCJyZW5kZXJQYXNzIiwiX3RoaXMyIiwiX3JlZHJhd1NjaGVkdWxlZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIl90aGlzMiRjb250ZXh0JGxheWVyTSIsImRlY2siLCJfbmVlZHNSZWRyYXciLCJsYXllck1hbmFnZXIiLCJzZXROZWVkc1JlZHJhdyIsImdldFNoYWRlcnMiLCJfdGhpcyRwcm9wcyRtb2R1bGVzIiwibHVtYU1vZHVsZXMiLCJwcmVwYXJlTHVtYU1vZHVsZXMiLCJwYXJlbnRTaGFkZXJzIiwidnMiLCJidWlsZFJhc3RlclZlcnRleFNoYWRlciIsImZzIiwiYnVpbGRSYXN0ZXJGcmFnbWVudFNoYWRlciIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyYXN0ZXJVbmlmb3JtcyIsInJhc3RlclByb2Nlc3NpbmdVbmlmb3JtcyIsInVwZGF0ZVN0YXRlIiwicGFyYW1zIiwib2xkUHJvcHMiLCJjaGFuZ2VGbGFncyIsIm9sZE1vZHVsZXMiLCJleHRlbnNpb25zQ2hhbmdlZCIsIm1vZHVsZXNFcXVhbCIsIl90aGlzJHN0YXRlJG1vZGVsIiwiX3RoaXMkc3RhdGUkbW9kZWwkZGVzIiwiX3RoaXMkZ2V0QXR0cmlidXRlTWFuIiwiZGVzdHJveSIsIl9nZXRNb2RlbCIsImdldEF0dHJpYnV0ZU1hbmFnZXIiLCJpbnZhbGlkYXRlQWxsIiwidXBkYXRlSW1hZ2VzIiwiYXR0cmlidXRlTWFuYWdlciIsIl90aGlzJHN0YXRlJG1vZGVsMiIsIm9sZE1lc2giLCJtZXNoIiwiX2NyZWF0ZU1lc2giLCJzZXRWZXJ0ZXhDb3VudCIsInZlcnRleENvdW50IiwiaW52YWxpZGF0ZSIsIl9nZXRDb29yZGluYXRlVW5pZm9ybXMiLCJfaW1hZ2VDb29yZGluYXRlU3lzdGVtIiwiX3JlZiIsIl9sb2FkSW1hZ2VzMiIsImZpbmFsaXplU3RhdGUiLCJfaSIsIl9PYmplY3QkdmFsdWVzIiwiaW1hZ2UiLCJpc0FycmF5IiwiX3gkZGVsZXRlIiwiX2ltYWdlJGRlbGV0ZSIsImxheWVyTmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yYXN0ZXIvcmFzdGVyLWxheWVyL3Jhc3Rlci1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1VwZGF0ZVBhcmFtZXRlcnN9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtCaXRtYXBMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuaW1wb3J0IHtcbiAgYnVpbGRSYXN0ZXJGcmFnbWVudFNoYWRlcixcbiAgYnVpbGRSYXN0ZXJWZXJ0ZXhTaGFkZXIsXG4gIHJhc3RlclVuaWZvcm1zLFxuICBlbnN1cmVSYXN0ZXJIb29rc1JlZ2lzdGVyZWQsXG4gIHByZXBhcmVMdW1hTW9kdWxlc1xufSBmcm9tICcuL3Jhc3Rlci1sYXllci1zaGFkZXJzJztcbmltcG9ydCB7bG9hZEltYWdlc30gZnJvbSAnLi4vaW1hZ2VzJztcbmltcG9ydCB0eXBlIHtSYXN0ZXJMYXllckFkZGVkUHJvcHMsIEltYWdlU3RhdGV9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7bW9kdWxlc0VxdWFsLCBhcHBseU1vZHVsZVVuaWZvcm1zfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7cGF0Y2hQaXBlbGluZVZhbGlkYXRpb259IGZyb20gJy4uL3BpcGVsaW5lLXZhbGlkYXRpb24tcGF0Y2gnO1xuaW1wb3J0IHtyYXN0ZXJQcm9jZXNzaW5nVW5pZm9ybXN9IGZyb20gJy4uL3Jhc3Rlci1wcm9jZXNzaW5nLXVuaWZvcm1zJztcblxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAuLi5CaXRtYXBMYXllci5kZWZhdWx0UHJvcHMsXG4gIG1vZHVsZXM6IHt0eXBlOiAnYXJyYXknLCB2YWx1ZTogW10sIGNvbXBhcmU6IHRydWV9LFxuICBpbWFnZXM6IHt0eXBlOiAnb2JqZWN0JywgdmFsdWU6IHt9LCBjb21wYXJlOiB0cnVlfSxcbiAgbW9kdWxlUHJvcHM6IHt0eXBlOiAnb2JqZWN0JywgdmFsdWU6IHt9LCBjb21wYXJlOiB0cnVlfSxcbiAgb25SZWRyYXdOZWVkZWQ6IHt0eXBlOiAnZnVuY3Rpb24nLCB2YWx1ZTogbnVsbCwgY29tcGFyZTogZmFsc2V9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSYXN0ZXJMYXllciBleHRlbmRzIEJpdG1hcExheWVyPFJhc3RlckxheWVyQWRkZWRQcm9wcz4ge1xuICBkZWNsYXJlIHN0YXRlOiBCaXRtYXBMYXllcjxSYXN0ZXJMYXllckFkZGVkUHJvcHM+WydzdGF0ZSddICYge1xuICAgIGltYWdlczogSW1hZ2VTdGF0ZTtcbiAgfTtcblxuICBfcmVkcmF3U2NoZWR1bGVkID0gZmFsc2U7XG4gIF9wZW5kaW5nSW1hZ2VSZXRyeTogUmFzdGVyTGF5ZXJBZGRlZFByb3BzWydpbWFnZXMnXSB8IG51bGwgPSBudWxsO1xuICAvKiogSG93IG1hbnkgY29uc2VjdXRpdmUgZnJhbWVzIGhhdmUgcmV0cmllZCBhIGZhaWxlZCB0ZXh0dXJlIHVwbG9hZC4gKi9cbiAgX2ltYWdlUmV0cnlDb3VudCA9IDA7XG4gIHN0YXRpYyByZWFkb25seSBNQVhfSU1BR0VfUkVUUllfQVRURU1QVFMgPSAzO1xuXG4gIGluaXRpYWxpemVTdGF0ZSgpOiB2b2lkIHtcbiAgICBwYXRjaFBpcGVsaW5lVmFsaWRhdGlvbigpO1xuICAgIGVuc3VyZVJhc3Rlckhvb2tzUmVnaXN0ZXJlZCgpO1xuICAgIHRoaXMuc2V0U3RhdGUoe2ltYWdlczoge319KTtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoKTtcbiAgfVxuXG4gIGRyYXcoX29wdHM6IHtzaGFkZXJNb2R1bGVQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj59KTogdm9pZCB7XG4gICAgLy8gSWYgYSBwcmV2aW91cyBmcmFtZSBoYWQgZmFpbGVkIHRleHR1cmUgdXBsb2FkcywgcmV0cnkgdGhlbSBub3cgYmVmb3JlXG4gICAgLy8gY2hlY2tpbmcgd2hldGhlciB0aGUgaW1hZ2VzIHN0YXRlIGlzIGNvbXBsZXRlLiBQYXNzIG9sZEltYWdlc0RhdGE6IHt9IHNvXG4gICAgLy8gYWxsIGtleXMgYXJlIHRyZWF0ZWQgYXMgbmV3IGFuZCBieXBhc3MgdGhlIGlzRXF1YWwgc2tpcC1jaGVjay5cbiAgICAvLyBSZXRyaWVzIGFyZSBib3VuZGVkIHRvIE1BWF9JTUFHRV9SRVRSWV9BVFRFTVBUUyB0byBhdm9pZCBhbiBpbmZpbml0ZVxuICAgIC8vIHJlZHJhdyBsb29wIHdoZW4gaW1hZ2UgZGF0YSBpcyBwZXJtYW5lbnRseSBpbnZhbGlkLlxuICAgIGlmICh0aGlzLl9wZW5kaW5nSW1hZ2VSZXRyeSkge1xuICAgICAgY29uc3QgcmV0cnkgPSB0aGlzLl9wZW5kaW5nSW1hZ2VSZXRyeTtcbiAgICAgIHRoaXMuX3BlbmRpbmdJbWFnZVJldHJ5ID0gbnVsbDtcbiAgICAgIGNvbnN0IHtpbWFnZXM6IG5ld0ltYWdlcywgaGFzUGVuZGluZ1VwbG9hZHN9ID0gbG9hZEltYWdlcyh7XG4gICAgICAgIGdsOiB0aGlzLmNvbnRleHQuZGV2aWNlPy5nbCB8fCB0aGlzLmNvbnRleHQuZ2wsXG4gICAgICAgIGRldmljZTogdGhpcy5jb250ZXh0LmRldmljZSxcbiAgICAgICAgaW1hZ2VzOiB0aGlzLnN0YXRlLmltYWdlcyxcbiAgICAgICAgaW1hZ2VzRGF0YTogcmV0cnksXG4gICAgICAgIG9sZEltYWdlc0RhdGE6IHt9XG4gICAgICB9KTtcbiAgICAgIGlmIChuZXdJbWFnZXMpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aW1hZ2VzOiBuZXdJbWFnZXN9KTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNQZW5kaW5nVXBsb2Fkcykge1xuICAgICAgICB0aGlzLl9pbWFnZVJldHJ5Q291bnQrKztcbiAgICAgICAgaWYgKHRoaXMuX2ltYWdlUmV0cnlDb3VudCA8IFJhc3RlckxheWVyLk1BWF9JTUFHRV9SRVRSWV9BVFRFTVBUUykge1xuICAgICAgICAgIHRoaXMuX3BlbmRpbmdJbWFnZVJldHJ5ID0gcmV0cnk7XG4gICAgICAgICAgdGhpcy5fc2NoZWR1bGVSZWRyYXcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgUmFzdGVyTGF5ZXI6IHRleHR1cmUgdXBsb2FkIGZhaWxlZCBhZnRlciAke1Jhc3RlckxheWVyLk1BWF9JTUFHRV9SRVRSWV9BVFRFTVBUU30gYXR0ZW1wdHMsIGdpdmluZyB1cC5gXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLl9pbWFnZVJldHJ5Q291bnQgPSAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pbWFnZVJldHJ5Q291bnQgPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHttb2RlbCwgaW1hZ2VzLCBjb29yZGluYXRlQ29udmVyc2lvbiwgYm91bmRzfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qge2Rlc2F0dXJhdGUsIHRyYW5zcGFyZW50Q29sb3IsIHRpbnRDb2xvciwgbW9kdWxlUHJvcHN9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmIChcbiAgICAgICFtb2RlbCB8fFxuICAgICAgIWltYWdlcyB8fFxuICAgICAgT2JqZWN0LmtleXMoaW1hZ2VzKS5sZW5ndGggPT09IDAgfHxcbiAgICAgICFPYmplY3QudmFsdWVzKGltYWdlcykuZXZlcnkoaXRlbSA9PiBpdGVtKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNldCBVQk8gdW5pZm9ybXMgZm9yIHRoZSByYXN0ZXIgbW9kdWxlXG4gICAgbW9kZWwuc2hhZGVySW5wdXRzLnNldFByb3BzKHtcbiAgICAgIHJhc3Rlcjoge1xuICAgICAgICBkZXNhdHVyYXRlOiBkZXNhdHVyYXRlIHx8IDAsXG4gICAgICAgIHRyYW5zcGFyZW50Q29sb3I6ICh0cmFuc3BhcmVudENvbG9yIHx8IFswLCAwLCAwLCAwXSkubWFwKHggPT4gKHggPyB4IC8gMjU1IDogMCkpLFxuICAgICAgICB0aW50Q29sb3I6ICh0aW50Q29sb3IgfHwgWzI1NSwgMjU1LCAyNTVdKS5zbGljZSgwLCAzKS5tYXAoeCA9PiB4IC8gMjU1KSxcbiAgICAgICAgY29vcmRpbmF0ZUNvbnZlcnNpb246IGNvb3JkaW5hdGVDb252ZXJzaW9uIHx8IDAsXG4gICAgICAgIGJvdW5kczogYm91bmRzIHx8IFswLCAwLCAwLCAwXSxcbiAgICAgICAgb3BhY2l0eTogdGhpcy5wcm9wcy5vcGFjaXR5ID8/IDFcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEFwcGx5IGVhY2ggY3VzdG9tIG1vZHVsZSdzIHVuaWZvcm1zL2JpbmRpbmdzIHRvIHNoYWRlcklucHV0cyBkaXJlY3RseS5cbiAgICAvLyBXZSBjYWxsIGdldFVuaWZvcm1zIG9uY2UgcGVyIG1vZHVsZSBhbmQgd3JpdGUgdGhlIHJlc3VsdHMgaW50b1xuICAgIC8vIHNoYWRlcklucHV0cy5tb2R1bGVVbmlmb3Jtcy9tb2R1bGVCaW5kaW5ncywgYnlwYXNzaW5nIHNldFByb3BzKCkgd2hpY2hcbiAgICAvLyB3b3VsZCBjYWxsIGdldFVuaWZvcm1zIGEgc2Vjb25kIHRpbWUgb24gYWxyZWFkeS10cmFuc2Zvcm1lZCB2YWx1ZXMuXG4gICAgY29uc3QgYWxsTW9kdWxlUHJvcHMgPSB7Li4ubW9kdWxlUHJvcHMsIC4uLmltYWdlc307XG4gICAgY29uc3QgbW9kdWxlcyA9IHRoaXMucHJvcHMubW9kdWxlcyB8fCBbXTtcbiAgICBhcHBseU1vZHVsZVVuaWZvcm1zKG1vZGVsLnNoYWRlcklucHV0cywgbW9kdWxlcywgYWxsTW9kdWxlUHJvcHMpO1xuXG4gICAgY29uc3QgZHJhd1N1Y2Nlc3MgPSBtb2RlbC5kcmF3KHRoaXMuY29udGV4dC5yZW5kZXJQYXNzKTtcbiAgICBpZiAoIWRyYXdTdWNjZXNzKSB7XG4gICAgICB0aGlzLl9zY2hlZHVsZVJlZHJhdygpO1xuICAgIH1cbiAgfVxuXG4gIF9zY2hlZHVsZVJlZHJhdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmVkcmF3U2NoZWR1bGVkKSByZXR1cm47XG4gICAgdGhpcy5fcmVkcmF3U2NoZWR1bGVkID0gdHJ1ZTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5fcmVkcmF3U2NoZWR1bGVkID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5jb250ZXh0LmRlY2spIHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBhY2Nlc3NpbmcgcHJpdmF0ZSBkZWNrLmdsIHByb3BlcnR5XG4gICAgICAgIHRoaXMuY29udGV4dC5kZWNrLl9uZWVkc1JlZHJhdyA9ICdSYXN0ZXJMYXllciBwaXBlbGluZSBwZW5kaW5nJztcbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGV4dC5sYXllck1hbmFnZXI/LnNldE5lZWRzUmVkcmF3KCdSYXN0ZXJMYXllciBwaXBlbGluZSBwZW5kaW5nJyk7XG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25SZWRyYXdOZWVkZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblJlZHJhd05lZWRlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U2hhZGVycygpOiBhbnkge1xuICAgIGNvbnN0IHttb2R1bGVzID0gW119ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IGx1bWFNb2R1bGVzID0gcHJlcGFyZUx1bWFNb2R1bGVzKG1vZHVsZXMpO1xuICAgIGNvbnN0IHBhcmVudFNoYWRlcnMgPSBzdXBlci5nZXRTaGFkZXJzKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucGFyZW50U2hhZGVycyxcbiAgICAgIHZzOiBidWlsZFJhc3RlclZlcnRleFNoYWRlcigpLFxuICAgICAgZnM6IGJ1aWxkUmFzdGVyRnJhZ21lbnRTaGFkZXIoKSxcbiAgICAgIG1vZHVsZXM6IFtcbiAgICAgICAgLi4uKHBhcmVudFNoYWRlcnMubW9kdWxlcyB8fCBbXSksXG4gICAgICAgIHJhc3RlclVuaWZvcm1zLFxuICAgICAgICByYXN0ZXJQcm9jZXNzaW5nVW5pZm9ybXMsXG4gICAgICAgIC4uLmx1bWFNb2R1bGVzXG4gICAgICBdXG4gICAgfTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG4gIHVwZGF0ZVN0YXRlKHBhcmFtczogVXBkYXRlUGFyYW1ldGVyczxCaXRtYXBMYXllcjxSYXN0ZXJMYXllckFkZGVkUHJvcHM+Pik6IHZvaWQge1xuICAgIGNvbnN0IHtwcm9wcywgb2xkUHJvcHMsIGNoYW5nZUZsYWdzfSA9IHBhcmFtcztcbiAgICBjb25zdCBtb2R1bGVzID0gcHJvcHMgJiYgcHJvcHMubW9kdWxlcztcbiAgICBjb25zdCBvbGRNb2R1bGVzID0gb2xkUHJvcHMgJiYgb2xkUHJvcHMubW9kdWxlcztcblxuICAgIGlmIChjaGFuZ2VGbGFncy5leHRlbnNpb25zQ2hhbmdlZCB8fCAhbW9kdWxlc0VxdWFsKG1vZHVsZXMsIG9sZE1vZHVsZXMpKSB7XG4gICAgICB0aGlzLnN0YXRlLm1vZGVsPy5kZXN0cm95Py4oKTtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgX2dldE1vZGVsIGlzIGludGVybmFsIHRvIEJpdG1hcExheWVyXG4gICAgICB0aGlzLnN0YXRlLm1vZGVsID0gdGhpcy5fZ2V0TW9kZWwodGhpcy5jb250ZXh0LmRldmljZSB8fCB0aGlzLmNvbnRleHQuZ2wpO1xuICAgICAgdGhpcy5nZXRBdHRyaWJ1dGVNYW5hZ2VyKCk/LmludmFsaWRhdGVBbGwoKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMgJiYgcHJvcHMuaW1hZ2VzKSB7XG4gICAgICB0aGlzLnVwZGF0ZUltYWdlcyh7cHJvcHMsIG9sZFByb3BzfSk7XG4gICAgfVxuXG4gICAgY29uc3QgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZ2V0QXR0cmlidXRlTWFuYWdlcigpO1xuXG4gICAgaWYgKHByb3BzLmJvdW5kcyAhPT0gb2xkUHJvcHMuYm91bmRzKSB7XG4gICAgICBjb25zdCBvbGRNZXNoID0gdGhpcy5zdGF0ZS5tZXNoO1xuICAgICAgY29uc3QgbWVzaCA9IHRoaXMuX2NyZWF0ZU1lc2goKTtcbiAgICAgIHRoaXMuc3RhdGUubW9kZWw/LnNldFZlcnRleENvdW50KG1lc2gudmVydGV4Q291bnQpO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWVzaCkge1xuICAgICAgICBpZiAob2xkTWVzaCAmJiBvbGRNZXNoW2tleV0gIT09IG1lc2hba2V5XSkge1xuICAgICAgICAgIGF0dHJpYnV0ZU1hbmFnZXI/LmludmFsaWRhdGUoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7bWVzaCwgLi4udGhpcy5fZ2V0Q29vcmRpbmF0ZVVuaWZvcm1zKCl9KTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLl9pbWFnZUNvb3JkaW5hdGVTeXN0ZW0gIT09IG9sZFByb3BzLl9pbWFnZUNvb3JkaW5hdGVTeXN0ZW0pIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUodGhpcy5fZ2V0Q29vcmRpbmF0ZVVuaWZvcm1zKCkpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUltYWdlcyh7XG4gICAgcHJvcHMsXG4gICAgb2xkUHJvcHNcbiAgfToge1xuICAgIHByb3BzOiBSYXN0ZXJMYXllckFkZGVkUHJvcHM7XG4gICAgb2xkUHJvcHM6IFJhc3RlckxheWVyQWRkZWRQcm9wcztcbiAgfSk6IHZvaWQge1xuICAgIGNvbnN0IHtpbWFnZXN9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBkZXZpY2UgPSB0aGlzLmNvbnRleHQuZGV2aWNlO1xuICAgIGNvbnN0IGdsID0gZGV2aWNlPy5nbCB8fCB0aGlzLmNvbnRleHQuZ2w7XG5cbiAgICBjb25zdCB7aW1hZ2VzOiBuZXdJbWFnZXMsIGhhc1BlbmRpbmdVcGxvYWRzfSA9IGxvYWRJbWFnZXMoe1xuICAgICAgZ2wsXG4gICAgICBkZXZpY2UsXG4gICAgICBpbWFnZXMsXG4gICAgICBpbWFnZXNEYXRhOiBwcm9wcy5pbWFnZXMsXG4gICAgICBvbGRJbWFnZXNEYXRhOiBvbGRQcm9wcy5pbWFnZXNcbiAgICB9KTtcbiAgICBpZiAobmV3SW1hZ2VzKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtpbWFnZXM6IG5ld0ltYWdlc30pO1xuICAgIH1cbiAgICAvLyBJZiBhbnkgdGV4dHVyZSB1cGxvYWQgZmFpbGVkIChkZXZpY2Ugbm90IHJlYWR5IC8gY3JlYXRlVGV4dHVyZSB0aHJldyksXG4gICAgLy8gc3Rhc2ggdGhlIGltYWdlc0RhdGEgYW5kIHNjaGVkdWxlIGEgcmV0cnkgbmV4dCBmcmFtZS4gVGhlIHJldHJ5IHBhc3Nlc1xuICAgIC8vIG9sZEltYWdlc0RhdGE6IHt9IHNvIGFsbCBrZXlzIGJ5cGFzcyB0aGUgaXNFcXVhbCBza2lwLWNoZWNrLlxuICAgIGlmIChoYXNQZW5kaW5nVXBsb2Fkcykge1xuICAgICAgdGhpcy5fcGVuZGluZ0ltYWdlUmV0cnkgPSBwcm9wcy5pbWFnZXM7XG4gICAgICB0aGlzLl9pbWFnZVJldHJ5Q291bnQgPSAwO1xuICAgICAgdGhpcy5fc2NoZWR1bGVSZWRyYXcoKTtcbiAgICB9XG4gIH1cblxuICBmaW5hbGl6ZVN0YXRlKCk6IHZvaWQge1xuICAgIHN1cGVyLmZpbmFsaXplU3RhdGUodGhpcy5jb250ZXh0KTtcblxuICAgIGlmICh0aGlzLnN0YXRlLmltYWdlcykge1xuICAgICAgZm9yIChjb25zdCBpbWFnZSBvZiBPYmplY3QudmFsdWVzKHRoaXMuc3RhdGUuaW1hZ2VzKSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbWFnZSkpIHtcbiAgICAgICAgICBpbWFnZS5tYXAoeCA9PiB4ICYmICh4LmRlc3Ryb3kgPyB4LmRlc3Ryb3koKSA6IHguZGVsZXRlPy4oKSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGltYWdlKSB7XG4gICAgICAgICAgaW1hZ2UuZGVzdHJveSA/IGltYWdlLmRlc3Ryb3koKSA6IGltYWdlLmRlbGV0ZT8uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUmFzdGVyTGF5ZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuUmFzdGVyTGF5ZXIubGF5ZXJOYW1lID0gJ1Jhc3RlckxheWVyJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsbUJBQUEsR0FBQUQsT0FBQTtBQU9BLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLEtBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLHdCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyx5QkFBQSxHQUFBTCxPQUFBO0FBQXVFLFNBQUFNLFdBQUFDLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFdBQUFELENBQUEsT0FBQUUsZ0JBQUEsYUFBQUYs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
|
|
@@ -8,6 +8,10 @@ export default class RasterMeshLayer extends SimpleMeshLayer<any, RasterLayerAdd
|
|
|
8
8
|
images: ImageState;
|
|
9
9
|
};
|
|
10
10
|
_redrawScheduled: boolean;
|
|
11
|
+
_pendingImageRetry: RasterLayerAddedProps['images'] | null;
|
|
12
|
+
/** How many consecutive frames have retried a failed texture upload. */
|
|
13
|
+
_imageRetryCount: number;
|
|
14
|
+
static readonly MAX_IMAGE_RETRY_ATTEMPTS = 3;
|
|
11
15
|
initializeState(): void;
|
|
12
16
|
getShaders(): any;
|
|
13
17
|
updateState(params: UpdateParameters<SimpleMeshLayer<any, RasterLayerAddedProps>>): void;
|
|
@@ -84,6 +84,9 @@ var RasterMeshLayer = exports["default"] = /*#__PURE__*/function (_SimpleMeshLay
|
|
|
84
84
|
}
|
|
85
85
|
_this = _callSuper(this, RasterMeshLayer, [].concat(args));
|
|
86
86
|
(0, _defineProperty2["default"])(_this, "_redrawScheduled", false);
|
|
87
|
+
(0, _defineProperty2["default"])(_this, "_pendingImageRetry", null);
|
|
88
|
+
/** How many consecutive frames have retried a failed texture upload. */
|
|
89
|
+
(0, _defineProperty2["default"])(_this, "_imageRetryCount", 0);
|
|
87
90
|
return _this;
|
|
88
91
|
}
|
|
89
92
|
(0, _inherits2["default"])(RasterMeshLayer, _SimpleMeshLayer);
|
|
@@ -168,23 +171,69 @@ var RasterMeshLayer = exports["default"] = /*#__PURE__*/function (_SimpleMeshLay
|
|
|
168
171
|
var images = this.state.images;
|
|
169
172
|
var device = this.context.device;
|
|
170
173
|
var gl = (device === null || device === void 0 ? void 0 : device.gl) || this.context.gl;
|
|
171
|
-
var
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
174
|
+
var _loadImages = (0, _images.loadImages)({
|
|
175
|
+
gl: gl,
|
|
176
|
+
device: device,
|
|
177
|
+
images: images,
|
|
178
|
+
imagesData: props.images,
|
|
179
|
+
oldImagesData: oldProps.images
|
|
180
|
+
}),
|
|
181
|
+
newImages = _loadImages.images,
|
|
182
|
+
hasPendingUploads = _loadImages.hasPendingUploads;
|
|
178
183
|
if (newImages) {
|
|
179
184
|
this.setState({
|
|
180
185
|
images: newImages
|
|
181
186
|
});
|
|
182
187
|
}
|
|
188
|
+
// If any texture upload failed, stash the imagesData and schedule a retry
|
|
189
|
+
// next frame. The retry passes oldImagesData: {} so all keys bypass the
|
|
190
|
+
// isEqual skip-check.
|
|
191
|
+
if (hasPendingUploads) {
|
|
192
|
+
this._pendingImageRetry = props.images;
|
|
193
|
+
this._imageRetryCount = 0;
|
|
194
|
+
this._scheduleRedraw();
|
|
195
|
+
}
|
|
183
196
|
}
|
|
184
197
|
}, {
|
|
185
198
|
key: "draw",
|
|
186
199
|
value: function draw(_opts) {
|
|
187
200
|
var _this$props$opacity;
|
|
201
|
+
// If a previous frame had failed texture uploads, retry them now before
|
|
202
|
+
// checking whether the images state is complete. Pass oldImagesData: {} so
|
|
203
|
+
// all keys are treated as new and bypass the isEqual skip-check.
|
|
204
|
+
// Retries are bounded to MAX_IMAGE_RETRY_ATTEMPTS to avoid an infinite
|
|
205
|
+
// redraw loop when image data is permanently invalid.
|
|
206
|
+
if (this._pendingImageRetry) {
|
|
207
|
+
var _this$context$device;
|
|
208
|
+
var retry = this._pendingImageRetry;
|
|
209
|
+
this._pendingImageRetry = null;
|
|
210
|
+
var _loadImages2 = (0, _images.loadImages)({
|
|
211
|
+
gl: ((_this$context$device = this.context.device) === null || _this$context$device === void 0 ? void 0 : _this$context$device.gl) || this.context.gl,
|
|
212
|
+
device: this.context.device,
|
|
213
|
+
images: this.state.images,
|
|
214
|
+
imagesData: retry,
|
|
215
|
+
oldImagesData: {}
|
|
216
|
+
}),
|
|
217
|
+
newImages = _loadImages2.images,
|
|
218
|
+
hasPendingUploads = _loadImages2.hasPendingUploads;
|
|
219
|
+
if (newImages) {
|
|
220
|
+
this.setState({
|
|
221
|
+
images: newImages
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
if (hasPendingUploads) {
|
|
225
|
+
this._imageRetryCount++;
|
|
226
|
+
if (this._imageRetryCount < RasterMeshLayer.MAX_IMAGE_RETRY_ATTEMPTS) {
|
|
227
|
+
this._pendingImageRetry = retry;
|
|
228
|
+
this._scheduleRedraw();
|
|
229
|
+
} else {
|
|
230
|
+
console.warn("RasterMeshLayer: texture upload failed after ".concat(RasterMeshLayer.MAX_IMAGE_RETRY_ATTEMPTS, " attempts, giving up."));
|
|
231
|
+
this._imageRetryCount = 0;
|
|
232
|
+
}
|
|
233
|
+
} else {
|
|
234
|
+
this._imageRetryCount = 0;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
188
237
|
var _this$state = this.state,
|
|
189
238
|
model = _this$state.model,
|
|
190
239
|
images = _this$state.images;
|
|
@@ -266,6 +315,7 @@ var RasterMeshLayer = exports["default"] = /*#__PURE__*/function (_SimpleMeshLay
|
|
|
266
315
|
}
|
|
267
316
|
}]);
|
|
268
317
|
}(_meshLayers.SimpleMeshLayer);
|
|
318
|
+
(0, _defineProperty2["default"])(RasterMeshLayer, "MAX_IMAGE_RETRY_ATTEMPTS", 3);
|
|
269
319
|
RasterMeshLayer.layerName = 'RasterMeshLayer';
|
|
270
320
|
RasterMeshLayer.defaultProps = defaultProps;
|
|
271
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWVzaExheWVycyIsInJlcXVpcmUiLCJfZW5naW5lIiwiX3Jhc3Rlck1lc2hMYXllclNoYWRlcnMiLCJfcmFzdGVyTGF5ZXJTaGFkZXJzIiwiX2ltYWdlcyIsIl91dGlsIiwiX3BpcGVsaW5lVmFsaWRhdGlvblBhdGNoIiwiX3Jhc3RlclByb2Nlc3NpbmdVbmlmb3JtcyIsIl9jb25zdGFudHMiLCJfY2FsbFN1cGVyIiwidCIsIm8iLCJlIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsIl9zdXBlclByb3BHZXQiLCJyIiwicCIsIl9nZXQyIiwib3duS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJ2YWxpZGF0ZUdlb21ldHJ5QXR0cmlidXRlcyIsImF0dHJpYnV0ZXMiLCJwb3NpdGlvbnMiLCJQT1NJVElPTiIsIkVycm9yIiwiZ2V0R2VvbWV0cnkiLCJkYXRhIiwiR2VvbWV0cnkiLCJkZWZhdWx0UHJvcHMiLCJTaW1wbGVNZXNoTGF5ZXIiLCJtb2R1bGVzIiwidHlwZSIsInZhbHVlIiwiY29tcGFyZSIsImltYWdlcyIsIm1vZHVsZVByb3BzIiwib25SZWRyYXdOZWVkZWQiLCJSYXN0ZXJNZXNoTGF5ZXIiLCJleHBvcnRzIiwiX1NpbXBsZU1lc2hMYXllciIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0IiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJpbml0aWFsaXplU3RhdGUiLCJwYXRjaFBpcGVsaW5lVmFsaWRhdGlvbiIsImVuc3VyZVJhc3Rlckhvb2tzUmVnaXN0ZXJlZCIsInNldFN0YXRlIiwiZ2V0U2hhZGVycyIsIl90aGlzJHByb3BzJG1vZHVsZXMiLCJwcm9wcyIsImx1bWFNb2R1bGVzIiwicHJlcGFyZUx1bWFNb2R1bGVzIiwicGFyZW50U2hhZGVycyIsInBhcmVudE1vZHVsZXMiLCJtIiwibmFtZSIsInZzIiwiYnVpbGRSYXN0ZXJNZXNoVmVydGV4U2hhZGVyIiwiZnMiLCJidWlsZFJhc3Rlck1lc2hGcmFnbWVudFNoYWRlciIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyYXN0ZXJNZXNoVW5pZm9ybXMiLCJyYXN0ZXJQcm9jZXNzaW5nVW5pZm9ybXMiLCJ1cGRhdGVTdGF0ZSIsInBhcmFtcyIsIm9sZFByb3BzIiwiY2hhbmdlRmxhZ3MiLCJjb250ZXh0Iiwib2xkTW9kdWxlcyIsIm1lc2giLCJleHRlbnNpb25zQ2hhbmdlZCIsIm1vZHVsZXNFcXVhbCIsIl90aGlzJGdldEF0dHJpYnV0ZU1hbiIsInN0YXRlIiwibW9kZWwiLCJfdGhpcyRzdGF0ZSRtb2RlbCRkZXMiLCJfdGhpcyRzdGF0ZSRtb2RlbCIsImRlc3Ryb3kiLCJnZXRNb2RlbCIsImhhc05vcm1hbHMiLCJOT1JNQUwiLCJub3JtYWxzIiwiZ2V0QXR0cmlidXRlTWFuYWdlciIsImludmFsaWRhdGVBbGwiLCJ1cGRhdGVJbWFnZXMiLCJfdGhpcyRzdGF0ZSRtb2RlbCRzZXQiLCJfdGhpcyRzdGF0ZSRtb2RlbDIiLCJzZXRUb3BvbG9neSIsIndpcmVmcmFtZSIsIlRPUE9MT0dZIiwiTElORV9TVFJJUCIsIlRSSUFOR0xFX0xJU1QiLCJfcmVmIiwiZGV2aWNlIiwiZ2wiLCJuZXdJbWFnZXMiLCJsb2FkSW1hZ2VzIiwiaW1hZ2VzRGF0YSIsIm9sZEltYWdlc0RhdGEiLCJkcmF3IiwiX29wdHMiLCJfdGhpcyRwcm9wcyRvcGFjaXR5IiwiX3RoaXMkc3RhdGUiLCJ2YWx1ZXMiLCJldmVyeSIsIml0ZW0iLCJzaGFkZXJJbnB1dHMiLCJzZXRQcm9wcyIsInJhc3Rlck1lc2giLCJtZXNoT3BhY2l0eSIsIm9wYWNpdHkiLCJtZXNoRmxhdFNoYWRpbmciLCJhbGxNb2R1bGVQcm9wcyIsImFwcGx5TW9kdWxlVW5pZm9ybXMiLCJkcmF3U3VjY2VzcyIsInJlbmRlclBhc3MiLCJfc2NoZWR1bGVSZWRyYXciLCJfdGhpczIiLCJfcmVkcmF3U2NoZWR1bGVkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiX3RoaXMyJGNvbnRleHQkbGF5ZXJNIiwiZGVjayIsIl9uZWVkc1JlZHJhdyIsImxheWVyTWFuYWdlciIsInNldE5lZWRzUmVkcmF3IiwiZmluYWxpemVTdGF0ZSIsIl9pIiwiX09iamVjdCR2YWx1ZXMiLCJpbWFnZSIsImlzQXJyYXkiLCJtYXAiLCJ4IiwiX3gkZGVsZXRlIiwiX2ltYWdlJGRlbGV0ZSIsIk1vZGVsIiwiYXNzaWduIiwiaWQiLCJnZW9tZXRyeSIsImlzSW5zdGFuY2VkIiwibGF5ZXJOYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jhc3Rlci9yYXN0ZXItbWVzaC1sYXllci9yYXN0ZXItbWVzaC1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1VwZGF0ZVBhcmFtZXRlcnN9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtTaW1wbGVNZXNoTGF5ZXIsIFNpbXBsZU1lc2hMYXllclByb3BzfSBmcm9tICdAZGVjay5nbC9tZXNoLWxheWVycyc7XG5pbXBvcnQge0dlb21ldHJ5fSBmcm9tICdAbHVtYS5nbC9lbmdpbmUnO1xuaW1wb3J0IHtNb2RlbH0gZnJvbSAnQGx1bWEuZ2wvZW5naW5lJztcblxuaW1wb3J0IHtcbiAgYnVpbGRSYXN0ZXJNZXNoRnJhZ21lbnRTaGFkZXIsXG4gIGJ1aWxkUmFzdGVyTWVzaFZlcnRleFNoYWRlcixcbiAgcmFzdGVyTWVzaFVuaWZvcm1zXG59IGZyb20gJy4vcmFzdGVyLW1lc2gtbGF5ZXItc2hhZGVycyc7XG5pbXBvcnQge1xuICBlbnN1cmVSYXN0ZXJIb29rc1JlZ2lzdGVyZWQsXG4gIHByZXBhcmVMdW1hTW9kdWxlc1xufSBmcm9tICcuLi9yYXN0ZXItbGF5ZXIvcmFzdGVyLWxheWVyLXNoYWRlcnMnO1xuaW1wb3J0IHtsb2FkSW1hZ2VzfSBmcm9tICcuLi9pbWFnZXMnO1xuaW1wb3J0IHR5cGUge1Jhc3RlckxheWVyQWRkZWRQcm9wcywgSW1hZ2VTdGF0ZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHttb2R1bGVzRXF1YWwsIGFwcGx5TW9kdWxlVW5pZm9ybXN9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHtwYXRjaFBpcGVsaW5lVmFsaWRhdGlvbn0gZnJvbSAnLi4vcGlwZWxpbmUtdmFsaWRhdGlvbi1wYXRjaCc7XG5pbXBvcnQge3Jhc3RlclByb2Nlc3NpbmdVbmlmb3Jtc30gZnJvbSAnLi4vcmFzdGVyLXByb2Nlc3NpbmctdW5pZm9ybXMnO1xuaW1wb3J0IHtUT1BPTE9HWX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG50eXBlIE1lc2ggPSBTaW1wbGVNZXNoTGF5ZXJQcm9wc1snbWVzaCddO1xuXG5pbnRlcmZhY2UgTWVzaERhdGEge1xuICBhdHRyaWJ1dGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHBvc2l0aW9ucz86IHVua25vd247XG4gIFBPU0lUSU9OPzogdW5rbm93bjtcbiAgTk9STUFMPzogdW5rbm93bjtcbiAgbm9ybWFscz86IHVua25vd247XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlR2VvbWV0cnlBdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gIGlmICghKGF0dHJpYnV0ZXMucG9zaXRpb25zIHx8IGF0dHJpYnV0ZXMuUE9TSVRJT04pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1Jhc3Rlck1lc2hMYXllciByZXF1aXJlcyBcInBvc2l0aW9uc1wiIG9yIFwiUE9TSVRJT05cIiBhdHRyaWJ1dGUgaW4gbWVzaCBwcm9wZXJ0eS4nXG4gICAgKTtcbiAgfVxufVxuXG4vKlxuICogQ29udmVydCBtZXNoIGRhdGEgaW50byBnZW9tZXRyeVxuICogQHJldHVybnMgZ2VvbWV0cnlcbiAqL1xuZnVuY3Rpb24gZ2V0R2VvbWV0cnkoZGF0YTogTWVzaERhdGEgfCBHZW9tZXRyeSk6IEdlb21ldHJ5IHtcbiAgaWYgKCdhdHRyaWJ1dGVzJyBpbiBkYXRhICYmIGRhdGEuYXR0cmlidXRlcykge1xuICAgIHZhbGlkYXRlR2VvbWV0cnlBdHRyaWJ1dGVzKGRhdGEuYXR0cmlidXRlcyk7XG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBHZW9tZXRyeSkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHJldHVybiBuZXcgR2VvbWV0cnkoZGF0YSBhcyBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIEdlb21ldHJ5PlswXSk7XG4gIH0gZWxzZSBpZiAoJ3Bvc2l0aW9ucycgaW4gZGF0YSB8fCAnUE9TSVRJT04nIGluIGRhdGEpIHtcbiAgICB2YWxpZGF0ZUdlb21ldHJ5QXR0cmlidXRlcyhkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICByZXR1cm4gbmV3IEdlb21ldHJ5KHtcbiAgICAgIGF0dHJpYnV0ZXM6IGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICB9IGFzIENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgR2VvbWV0cnk+WzBdKTtcbiAgfVxuICB0aHJvdyBFcnJvcignSW52YWxpZCBtZXNoJyk7XG59XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgLi4uU2ltcGxlTWVzaExheWVyLmRlZmF1bHRQcm9wcyxcbiAgbW9kdWxlczoge3R5cGU6ICdhcnJheScsIHZhbHVlOiBbXSwgY29tcGFyZTogdHJ1ZX0sXG4gIGltYWdlczoge3R5cGU6ICdvYmplY3QnLCB2YWx1ZToge30sIGNvbXBhcmU6IHRydWV9LFxuICBtb2R1bGVQcm9wczoge3R5cGU6ICdvYmplY3QnLCB2YWx1ZToge30sIGNvbXBhcmU6IHRydWV9LFxuICBvblJlZHJhd05lZWRlZDoge3R5cGU6ICdmdW5jdGlvbicsIHZhbHVlOiBudWxsLCBjb21wYXJlOiBmYWxzZX1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhc3Rlck1lc2hMYXllciBleHRlbmRzIFNpbXBsZU1lc2hMYXllcjxhbnksIFJhc3RlckxheWVyQWRkZWRQcm9wcz4ge1xuICBkZWNsYXJlIHN0YXRlOiBTaW1wbGVNZXNoTGF5ZXI8UmFzdGVyTGF5ZXJBZGRlZFByb3BzPlsnc3RhdGUnXSAmIHtcbiAgICBpbWFnZXM6IEltYWdlU3RhdGU7XG4gIH07XG5cbiAgX3JlZHJhd1NjaGVkdWxlZCA9IGZhbHNlO1xuXG4gIGluaXRpYWxpemVTdGF0ZSgpOiB2b2lkIHtcbiAgICBwYXRjaFBpcGVsaW5lVmFsaWRhdGlvbigpO1xuICAgIGVuc3VyZVJhc3Rlckhvb2tzUmVnaXN0ZXJlZCgpO1xuICAgIHRoaXMuc2V0U3RhdGUoe2ltYWdlczoge319KTtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoKTtcbiAgfVxuXG4gIGdldFNoYWRlcnMoKTogYW55IHtcbiAgICBjb25zdCB7bW9kdWxlcyA9IFtdfSA9IHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBsdW1hTW9kdWxlcyA9IHByZXBhcmVMdW1hTW9kdWxlcyhtb2R1bGVzKTtcbiAgICBjb25zdCBwYXJlbnRTaGFkZXJzID0gc3VwZXIuZ2V0U2hhZGVycygpO1xuXG4gICAgLy8gRmlsdGVyIG91dCBzaW1wbGVNZXNoVW5pZm9ybXMgZnJvbSBwYXJlbnQg4oCUIFJhc3Rlck1lc2hMYXllciB1c2VzIGl0cyBvd25cbiAgICAvLyBzaGFkZXJzIHRoYXQgZG9uJ3QgcmVmZXJlbmNlIFNpbXBsZU1lc2ggdW5pZm9ybXMsIGFuZCBldmVyeSBVQk8gY291bnRzXG4gICAgLy8gYWdhaW5zdCB0aGUgV2ViR0wyIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JVRkZFUlMgbGltaXQgKHR5cGljYWxseSAxMikuXG4gICAgY29uc3QgcGFyZW50TW9kdWxlcyA9IChwYXJlbnRTaGFkZXJzLm1vZHVsZXMgfHwgW10pLmZpbHRlcihcbiAgICAgIChtOiB7bmFtZT86IHN0cmluZ30pID0+IG0ubmFtZSAhPT0gJ3NpbXBsZU1lc2gnXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5wYXJlbnRTaGFkZXJzLFxuICAgICAgdnM6IGJ1aWxkUmFzdGVyTWVzaFZlcnRleFNoYWRlcigpLFxuICAgICAgZnM6IGJ1aWxkUmFzdGVyTWVzaEZyYWdtZW50U2hhZGVyKCksXG4gICAgICBtb2R1bGVzOiBbLi4ucGFyZW50TW9kdWxlcywgcmFzdGVyTWVzaFVuaWZvcm1zLCByYXN0ZXJQcm9jZXNzaW5nVW5pZm9ybXMsIC4uLmx1bWFNb2R1bGVzXVxuICAgIH07XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICB1cGRhdGVTdGF0ZShwYXJhbXM6IFVwZGF0ZVBhcmFtZXRlcnM8U2ltcGxlTWVzaExheWVyPGFueSwgUmFzdGVyTGF5ZXJBZGRlZFByb3BzPj4pOiB2b2lkIHtcbiAgICBjb25zdCB7cHJvcHMsIG9sZFByb3BzLCBjaGFuZ2VGbGFncywgY29udGV4dH0gPSBwYXJhbXM7XG4gICAgc3VwZXIudXBkYXRlU3RhdGUoe3Byb3BzLCBvbGRQcm9wcywgY2hhbmdlRmxhZ3MsIGNvbnRleHR9KTtcblxuICAgIGNvbnN0IG1vZHVsZXMgPSBwcm9wcyAmJiBwcm9wcy5tb2R1bGVzO1xuICAgIGNvbnN0IG9sZE1vZHVsZXMgPSBvbGRQcm9wcyAmJiBvbGRQcm9wcy5tb2R1bGVzO1xuXG4gICAgaWYgKFxuICAgICAgcHJvcHMubWVzaCAhPT0gb2xkUHJvcHMubWVzaCB8fFxuICAgICAgY2hhbmdlRmxhZ3MuZXh0ZW5zaW9uc0NoYW5nZWQgfHxcbiAgICAgICFtb2R1bGVzRXF1YWwobW9kdWxlcywgb2xkTW9kdWxlcylcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnN0YXRlLm1vZGVsKSB7XG4gICAgICAgIHRoaXMuc3RhdGUubW9kZWwuZGVzdHJveT8uKCk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMubWVzaCkge1xuICAgICAgICB0aGlzLnN0YXRlLm1vZGVsID0gdGhpcy5nZXRNb2RlbChwcm9wcy5tZXNoIGFzIE1lc2gpO1xuXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSAoKHByb3BzLm1lc2ggYXMgTWVzaERhdGEpLmF0dHJpYnV0ZXMgfHwgcHJvcHMubWVzaCkgYXMgTWVzaERhdGE7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGhhc05vcm1hbHM6IEJvb2xlYW4oYXR0cmlidXRlcy5OT1JNQUwgfHwgYXR0cmlidXRlcy5ub3JtYWxzKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZ2V0QXR0cmlidXRlTWFuYWdlcigpPy5pbnZhbGlkYXRlQWxsKCk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzICYmIHByb3BzLmltYWdlcykge1xuICAgICAgdGhpcy51cGRhdGVJbWFnZXMoe3Byb3BzLCBvbGRQcm9wc30pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YXRlLm1vZGVsKSB7XG4gICAgICB0aGlzLnN0YXRlLm1vZGVsLnNldFRvcG9sb2d5Py4oXG4gICAgICAgIHRoaXMucHJvcHMud2lyZWZyYW1lID8gVE9QT0xPR1kuTElORV9TVFJJUCA6IFRPUE9MT0dZLlRSSUFOR0xFX0xJU1RcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlSW1hZ2VzKHtcbiAgICBwcm9wcyxcbiAgICBvbGRQcm9wc1xuICB9OiB7XG4gICAgcHJvcHM6IFJhc3RlckxheWVyQWRkZWRQcm9wcztcbiAgICBvbGRQcm9wczogUmFzdGVyTGF5ZXJBZGRlZFByb3BzO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3Qge2ltYWdlc30gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IGRldmljZSA9IHRoaXMuY29udGV4dC5kZXZpY2U7XG4gICAgY29uc3QgZ2wgPSBkZXZpY2U/LmdsIHx8IHRoaXMuY29udGV4dC5nbDtcblxuICAgIGNvbnN0IG5ld0ltYWdlcyA9IGxvYWRJbWFnZXMoe1xuICAgICAgZ2wsXG4gICAgICBkZXZpY2UsXG4gICAgICBpbWFnZXMsXG4gICAgICBpbWFnZXNEYXRhOiBwcm9wcy5pbWFnZXMsXG4gICAgICBvbGRJbWFnZXNEYXRhOiBvbGRQcm9wcy5pbWFnZXNcbiAgICB9KTtcblxuICAgIGlmIChuZXdJbWFnZXMpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2ltYWdlczogbmV3SW1hZ2VzfSk7XG4gICAgfVxuICB9XG5cbiAgZHJhdyhfb3B0czogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICBjb25zdCB7bW9kZWwsIGltYWdlc30gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHttb2R1bGVQcm9wc30gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKFxuICAgICAgIW1vZGVsIHx8XG4gICAgICAhaW1hZ2VzIHx8XG4gICAgICBPYmplY3Qua2V5cyhpbWFnZXMpLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgIU9iamVjdC52YWx1ZXMoaW1hZ2VzKS5ldmVyeShpdGVtID0+IGl0ZW0pXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2V0IG1lc2gtc3BlY2lmaWMgVUJPIHVuaWZvcm1zXG4gICAgbW9kZWwuc2hhZGVySW5wdXRzLnNldFByb3BzKHtcbiAgICAgIHJhc3Rlck1lc2g6IHtcbiAgICAgICAgbWVzaE9wYWNpdHk6IHRoaXMucHJvcHMub3BhY2l0eSA/PyAxLFxuICAgICAgICBtZXNoRmxhdFNoYWRpbmc6ICF0aGlzLnN0YXRlLmhhc05vcm1hbHMgPyAxLjAgOiAwLjBcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEFwcGx5IGVhY2ggY3VzdG9tIG1vZHVsZSdzIHVuaWZvcm1zL2JpbmRpbmdzIHRvIHNoYWRlcklucHV0cyBkaXJlY3RseS5cbiAgICAvLyBXZSBjYWxsIGdldFVuaWZvcm1zIG9uY2UgcGVyIG1vZHVsZSBhbmQgd3JpdGUgdGhlIHJlc3VsdHMgaW50b1xuICAgIC8vIHNoYWRlcklucHV0cy5tb2R1bGVVbmlmb3Jtcy9tb2R1bGVCaW5kaW5ncywgYnlwYXNzaW5nIHNldFByb3BzKCkgd2hpY2hcbiAgICAvLyB3b3VsZCBjYWxsIGdldFVuaWZvcm1zIGEgc2Vjb25kIHRpbWUgb24gYWxyZWFkeS10cmFuc2Zvcm1lZCB2YWx1ZXMuXG4gICAgY29uc3QgYWxsTW9kdWxlUHJvcHMgPSB7Li4ubW9kdWxlUHJvcHMsIC4uLmltYWdlc307XG4gICAgY29uc3QgbW9kdWxlcyA9IHRoaXMucHJvcHMubW9kdWxlcyB8fCBbXTtcbiAgICBhcHBseU1vZHVsZVVuaWZvcm1zKG1vZGVsLnNoYWRlcklucHV0cywgbW9kdWxlcywgYWxsTW9kdWxlUHJvcHMpO1xuXG4gICAgY29uc3QgZHJhd1N1Y2Nlc3MgPSBtb2RlbC5kcmF3KHRoaXMuY29udGV4dC5yZW5kZXJQYXNzKTtcbiAgICBpZiAoIWRyYXdTdWNjZXNzKSB7XG4gICAgICB0aGlzLl9zY2hlZHVsZVJlZHJhdygpO1xuICAgIH1cbiAgfVxuXG4gIF9zY2hlZHVsZVJlZHJhdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmVkcmF3U2NoZWR1bGVkKSByZXR1cm47XG4gICAgdGhpcy5fcmVkcmF3U2NoZWR1bGVkID0gdHJ1ZTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5fcmVkcmF3U2NoZWR1bGVkID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5jb250ZXh0LmRlY2spIHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBhY2Nlc3NpbmcgcHJpdmF0ZSBkZWNrLmdsIHByb3BlcnR5XG4gICAgICAgIHRoaXMuY29udGV4dC5kZWNrLl9uZWVkc1JlZHJhdyA9ICdSYXN0ZXJNZXNoTGF5ZXIgcGlwZWxpbmUgcGVuZGluZyc7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRleHQubGF5ZXJNYW5hZ2VyPy5zZXROZWVkc1JlZHJhdygnUmFzdGVyTWVzaExheWVyIHBpcGVsaW5lIHBlbmRpbmcnKTtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vblJlZHJhd05lZWRlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uUmVkcmF3TmVlZGVkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmaW5hbGl6ZVN0YXRlKCk6IHZvaWQge1xuICAgIHN1cGVyLmZpbmFsaXplU3RhdGUodGhpcy5jb250ZXh0KTtcblxuICAgIGlmICh0aGlzLnN0YXRlLmltYWdlcykge1xuICAgICAgZm9yIChjb25zdCBpbWFnZSBvZiBPYmplY3QudmFsdWVzKHRoaXMuc3RhdGUuaW1hZ2VzKSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbWFnZSkpIHtcbiAgICAgICAgICBpbWFnZS5tYXAoeCA9PiB4ICYmICh4LmRlc3Ryb3kgPyB4LmRlc3Ryb3koKSA6IHguZGVsZXRlPy4oKSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGltYWdlKSB7XG4gICAgICAgICAgaW1hZ2UuZGVzdHJveSA/IGltYWdlLmRlc3Ryb3koKSA6IGltYWdlLmRlbGV0ZT8uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TW9kZWwobWVzaDogTWVzaCk6IE1vZGVsIHtcbiAgICBjb25zdCBkZXZpY2UgPSB0aGlzLmNvbnRleHQuZGV2aWNlIHx8IHRoaXMuY29udGV4dC5nbDtcblxuICAgIGNvbnN0IG1vZGVsID0gbmV3IE1vZGVsKFxuICAgICAgZGV2aWNlLFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5nZXRTaGFkZXJzKCksIHtcbiAgICAgICAgaWQ6IHRoaXMucHJvcHMuaWQsXG4gICAgICAgIGdlb21ldHJ5OiBnZXRHZW9tZXRyeShtZXNoIGFzIE1lc2hEYXRhIHwgR2VvbWV0cnkpLFxuICAgICAgICBpc0luc3RhbmNlZDogZmFsc2VcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBtb2RlbDtcbiAgfVxufVxuXG5SYXN0ZXJNZXNoTGF5ZXIubGF5ZXJOYW1lID0gJ1Jhc3Rlck1lc2hMYXllcic7XG5SYXN0ZXJNZXNoTGF5ZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFHQSxJQUFBRSx1QkFBQSxHQUFBRixPQUFBO0FBS0EsSUFBQUcsbUJBQUEsR0FBQUgsT0FBQTtBQUlBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLEtBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLHdCQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyx5QkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBQThDLFNBQUFTLFdBQUFDLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFdBQUFELENBQUEsT0FBQUUsZ0JBQUEsYUFBQUYsQ0FBQSxPQUFBRywyQkFBQSxhQUFBSixDQUFBLEVBQUFLLHlCQUFBLEtBQUFDLE9BQUEsQ0FBQUMsU0FBQSxDQUFBTixDQUFBLEVBQUFDLENBQUEsWUFBQUMsZ0JBQUEsYUFBQUgsQ0FBQSxFQUFBUSxXQUFBLElBQUFQLENBQUEsQ0FBQVEsS0FBQSxDQUFBVCxDQUFBLEVBQUFFLENBQUE7QUFBQSxTQUFBRywwQkFBQSxj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
|
|
321
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWVzaExheWVycyIsInJlcXVpcmUiLCJfZW5naW5lIiwiX3Jhc3Rlck1lc2hMYXllclNoYWRlcnMiLCJfcmFzdGVyTGF5ZXJTaGFkZXJzIiwiX2ltYWdlcyIsIl91dGlsIiwiX3BpcGVsaW5lVmFsaWRhdGlvblBhdGNoIiwiX3Jhc3RlclByb2Nlc3NpbmdVbmlmb3JtcyIsIl9jb25zdGFudHMiLCJfY2FsbFN1cGVyIiwidCIsIm8iLCJlIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsIl9zdXBlclByb3BHZXQiLCJyIiwicCIsIl9nZXQyIiwib3duS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJ2YWxpZGF0ZUdlb21ldHJ5QXR0cmlidXRlcyIsImF0dHJpYnV0ZXMiLCJwb3NpdGlvbnMiLCJQT1NJVElPTiIsIkVycm9yIiwiZ2V0R2VvbWV0cnkiLCJkYXRhIiwiR2VvbWV0cnkiLCJkZWZhdWx0UHJvcHMiLCJTaW1wbGVNZXNoTGF5ZXIiLCJtb2R1bGVzIiwidHlwZSIsInZhbHVlIiwiY29tcGFyZSIsImltYWdlcyIsIm1vZHVsZVByb3BzIiwib25SZWRyYXdOZWVkZWQiLCJSYXN0ZXJNZXNoTGF5ZXIiLCJleHBvcnRzIiwiX1NpbXBsZU1lc2hMYXllciIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0IiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJpbml0aWFsaXplU3RhdGUiLCJwYXRjaFBpcGVsaW5lVmFsaWRhdGlvbiIsImVuc3VyZVJhc3Rlckhvb2tzUmVnaXN0ZXJlZCIsInNldFN0YXRlIiwiZ2V0U2hhZGVycyIsIl90aGlzJHByb3BzJG1vZHVsZXMiLCJwcm9wcyIsImx1bWFNb2R1bGVzIiwicHJlcGFyZUx1bWFNb2R1bGVzIiwicGFyZW50U2hhZGVycyIsInBhcmVudE1vZHVsZXMiLCJtIiwibmFtZSIsInZzIiwiYnVpbGRSYXN0ZXJNZXNoVmVydGV4U2hhZGVyIiwiZnMiLCJidWlsZFJhc3Rlck1lc2hGcmFnbWVudFNoYWRlciIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyYXN0ZXJNZXNoVW5pZm9ybXMiLCJyYXN0ZXJQcm9jZXNzaW5nVW5pZm9ybXMiLCJ1cGRhdGVTdGF0ZSIsInBhcmFtcyIsIm9sZFByb3BzIiwiY2hhbmdlRmxhZ3MiLCJjb250ZXh0Iiwib2xkTW9kdWxlcyIsIm1lc2giLCJleHRlbnNpb25zQ2hhbmdlZCIsIm1vZHVsZXNFcXVhbCIsIl90aGlzJGdldEF0dHJpYnV0ZU1hbiIsInN0YXRlIiwibW9kZWwiLCJfdGhpcyRzdGF0ZSRtb2RlbCRkZXMiLCJfdGhpcyRzdGF0ZSRtb2RlbCIsImRlc3Ryb3kiLCJnZXRNb2RlbCIsImhhc05vcm1hbHMiLCJOT1JNQUwiLCJub3JtYWxzIiwiZ2V0QXR0cmlidXRlTWFuYWdlciIsImludmFsaWRhdGVBbGwiLCJ1cGRhdGVJbWFnZXMiLCJfdGhpcyRzdGF0ZSRtb2RlbCRzZXQiLCJfdGhpcyRzdGF0ZSRtb2RlbDIiLCJzZXRUb3BvbG9neSIsIndpcmVmcmFtZSIsIlRPUE9MT0dZIiwiTElORV9TVFJJUCIsIlRSSUFOR0xFX0xJU1QiLCJfcmVmIiwiZGV2aWNlIiwiZ2wiLCJfbG9hZEltYWdlcyIsImxvYWRJbWFnZXMiLCJpbWFnZXNEYXRhIiwib2xkSW1hZ2VzRGF0YSIsIm5ld0ltYWdlcyIsImhhc1BlbmRpbmdVcGxvYWRzIiwiX3BlbmRpbmdJbWFnZVJldHJ5IiwiX2ltYWdlUmV0cnlDb3VudCIsIl9zY2hlZHVsZVJlZHJhdyIsImRyYXciLCJfb3B0cyIsIl90aGlzJHByb3BzJG9wYWNpdHkiLCJfdGhpcyRjb250ZXh0JGRldmljZSIsInJldHJ5IiwiX2xvYWRJbWFnZXMyIiwiTUFYX0lNQUdFX1JFVFJZX0FUVEVNUFRTIiwiY29uc29sZSIsIndhcm4iLCJfdGhpcyRzdGF0ZSIsInZhbHVlcyIsImV2ZXJ5IiwiaXRlbSIsInNoYWRlcklucHV0cyIsInNldFByb3BzIiwicmFzdGVyTWVzaCIsIm1lc2hPcGFjaXR5Iiwib3BhY2l0eSIsIm1lc2hGbGF0U2hhZGluZyIsImFsbE1vZHVsZVByb3BzIiwiYXBwbHlNb2R1bGVVbmlmb3JtcyIsImRyYXdTdWNjZXNzIiwicmVuZGVyUGFzcyIsIl90aGlzMiIsIl9yZWRyYXdTY2hlZHVsZWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJfdGhpczIkY29udGV4dCRsYXllck0iLCJkZWNrIiwiX25lZWRzUmVkcmF3IiwibGF5ZXJNYW5hZ2VyIiwic2V0TmVlZHNSZWRyYXciLCJmaW5hbGl6ZVN0YXRlIiwiX2kiLCJfT2JqZWN0JHZhbHVlcyIsImltYWdlIiwiaXNBcnJheSIsIm1hcCIsIngiLCJfeCRkZWxldGUiLCJfaW1hZ2UkZGVsZXRlIiwiTW9kZWwiLCJhc3NpZ24iLCJpZCIsImdlb21ldHJ5IiwiaXNJbnN0YW5jZWQiLCJsYXllck5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmFzdGVyL3Jhc3Rlci1tZXNoLWxheWVyL3Jhc3Rlci1tZXNoLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7VXBkYXRlUGFyYW1ldGVyc30gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge1NpbXBsZU1lc2hMYXllciwgU2ltcGxlTWVzaExheWVyUHJvcHN9IGZyb20gJ0BkZWNrLmdsL21lc2gtbGF5ZXJzJztcbmltcG9ydCB7R2VvbWV0cnl9IGZyb20gJ0BsdW1hLmdsL2VuZ2luZSc7XG5pbXBvcnQge01vZGVsfSBmcm9tICdAbHVtYS5nbC9lbmdpbmUnO1xuXG5pbXBvcnQge1xuICBidWlsZFJhc3Rlck1lc2hGcmFnbWVudFNoYWRlcixcbiAgYnVpbGRSYXN0ZXJNZXNoVmVydGV4U2hhZGVyLFxuICByYXN0ZXJNZXNoVW5pZm9ybXNcbn0gZnJvbSAnLi9yYXN0ZXItbWVzaC1sYXllci1zaGFkZXJzJztcbmltcG9ydCB7XG4gIGVuc3VyZVJhc3Rlckhvb2tzUmVnaXN0ZXJlZCxcbiAgcHJlcGFyZUx1bWFNb2R1bGVzXG59IGZyb20gJy4uL3Jhc3Rlci1sYXllci9yYXN0ZXItbGF5ZXItc2hhZGVycyc7XG5pbXBvcnQge2xvYWRJbWFnZXN9IGZyb20gJy4uL2ltYWdlcyc7XG5pbXBvcnQgdHlwZSB7UmFzdGVyTGF5ZXJBZGRlZFByb3BzLCBJbWFnZVN0YXRlfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge21vZHVsZXNFcXVhbCwgYXBwbHlNb2R1bGVVbmlmb3Jtc30gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQge3BhdGNoUGlwZWxpbmVWYWxpZGF0aW9ufSBmcm9tICcuLi9waXBlbGluZS12YWxpZGF0aW9uLXBhdGNoJztcbmltcG9ydCB7cmFzdGVyUHJvY2Vzc2luZ1VuaWZvcm1zfSBmcm9tICcuLi9yYXN0ZXItcHJvY2Vzc2luZy11bmlmb3Jtcyc7XG5pbXBvcnQge1RPUE9MT0dZfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbnR5cGUgTWVzaCA9IFNpbXBsZU1lc2hMYXllclByb3BzWydtZXNoJ107XG5cbmludGVyZmFjZSBNZXNoRGF0YSB7XG4gIGF0dHJpYnV0ZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcG9zaXRpb25zPzogdW5rbm93bjtcbiAgUE9TSVRJT04/OiB1bmtub3duO1xuICBOT1JNQUw/OiB1bmtub3duO1xuICBub3JtYWxzPzogdW5rbm93bjtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVHZW9tZXRyeUF0dHJpYnV0ZXMoYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgaWYgKCEoYXR0cmlidXRlcy5wb3NpdGlvbnMgfHwgYXR0cmlidXRlcy5QT1NJVElPTikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnUmFzdGVyTWVzaExheWVyIHJlcXVpcmVzIFwicG9zaXRpb25zXCIgb3IgXCJQT1NJVElPTlwiIGF0dHJpYnV0ZSBpbiBtZXNoIHByb3BlcnR5LidcbiAgICApO1xuICB9XG59XG5cbi8qXG4gKiBDb252ZXJ0IG1lc2ggZGF0YSBpbnRvIGdlb21ldHJ5XG4gKiBAcmV0dXJucyBnZW9tZXRyeVxuICovXG5mdW5jdGlvbiBnZXRHZW9tZXRyeShkYXRhOiBNZXNoRGF0YSB8IEdlb21ldHJ5KTogR2VvbWV0cnkge1xuICBpZiAoJ2F0dHJpYnV0ZXMnIGluIGRhdGEgJiYgZGF0YS5hdHRyaWJ1dGVzKSB7XG4gICAgdmFsaWRhdGVHZW9tZXRyeUF0dHJpYnV0ZXMoZGF0YS5hdHRyaWJ1dGVzKTtcbiAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIEdlb21ldHJ5KSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBHZW9tZXRyeShkYXRhIGFzIENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgR2VvbWV0cnk+WzBdKTtcbiAgfSBlbHNlIGlmICgncG9zaXRpb25zJyBpbiBkYXRhIHx8ICdQT1NJVElPTicgaW4gZGF0YSkge1xuICAgIHZhbGlkYXRlR2VvbWV0cnlBdHRyaWJ1dGVzKGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgIHJldHVybiBuZXcgR2VvbWV0cnkoe1xuICAgICAgYXR0cmlidXRlczogZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIH0gYXMgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBHZW9tZXRyeT5bMF0pO1xuICB9XG4gIHRocm93IEVycm9yKCdJbnZhbGlkIG1lc2gnKTtcbn1cblxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAuLi5TaW1wbGVNZXNoTGF5ZXIuZGVmYXVsdFByb3BzLFxuICBtb2R1bGVzOiB7dHlwZTogJ2FycmF5JywgdmFsdWU6IFtdLCBjb21wYXJlOiB0cnVlfSxcbiAgaW1hZ2VzOiB7dHlwZTogJ29iamVjdCcsIHZhbHVlOiB7fSwgY29tcGFyZTogdHJ1ZX0sXG4gIG1vZHVsZVByb3BzOiB7dHlwZTogJ29iamVjdCcsIHZhbHVlOiB7fSwgY29tcGFyZTogdHJ1ZX0sXG4gIG9uUmVkcmF3TmVlZGVkOiB7dHlwZTogJ2Z1bmN0aW9uJywgdmFsdWU6IG51bGwsIGNvbXBhcmU6IGZhbHNlfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFzdGVyTWVzaExheWVyIGV4dGVuZHMgU2ltcGxlTWVzaExheWVyPGFueSwgUmFzdGVyTGF5ZXJBZGRlZFByb3BzPiB7XG4gIGRlY2xhcmUgc3RhdGU6IFNpbXBsZU1lc2hMYXllcjxSYXN0ZXJMYXllckFkZGVkUHJvcHM+WydzdGF0ZSddICYge1xuICAgIGltYWdlczogSW1hZ2VTdGF0ZTtcbiAgfTtcblxuICBfcmVkcmF3U2NoZWR1bGVkID0gZmFsc2U7XG4gIF9wZW5kaW5nSW1hZ2VSZXRyeTogUmFzdGVyTGF5ZXJBZGRlZFByb3BzWydpbWFnZXMnXSB8IG51bGwgPSBudWxsO1xuICAvKiogSG93IG1hbnkgY29uc2VjdXRpdmUgZnJhbWVzIGhhdmUgcmV0cmllZCBhIGZhaWxlZCB0ZXh0dXJlIHVwbG9hZC4gKi9cbiAgX2ltYWdlUmV0cnlDb3VudCA9IDA7XG4gIHN0YXRpYyByZWFkb25seSBNQVhfSU1BR0VfUkVUUllfQVRURU1QVFMgPSAzO1xuXG4gIGluaXRpYWxpemVTdGF0ZSgpOiB2b2lkIHtcbiAgICBwYXRjaFBpcGVsaW5lVmFsaWRhdGlvbigpO1xuICAgIGVuc3VyZVJhc3Rlckhvb2tzUmVnaXN0ZXJlZCgpO1xuICAgIHRoaXMuc2V0U3RhdGUoe2ltYWdlczoge319KTtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoKTtcbiAgfVxuXG4gIGdldFNoYWRlcnMoKTogYW55IHtcbiAgICBjb25zdCB7bW9kdWxlcyA9IFtdfSA9IHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBsdW1hTW9kdWxlcyA9IHByZXBhcmVMdW1hTW9kdWxlcyhtb2R1bGVzKTtcbiAgICBjb25zdCBwYXJlbnRTaGFkZXJzID0gc3VwZXIuZ2V0U2hhZGVycygpO1xuXG4gICAgLy8gRmlsdGVyIG91dCBzaW1wbGVNZXNoVW5pZm9ybXMgZnJvbSBwYXJlbnQg4oCUIFJhc3Rlck1lc2hMYXllciB1c2VzIGl0cyBvd25cbiAgICAvLyBzaGFkZXJzIHRoYXQgZG9uJ3QgcmVmZXJlbmNlIFNpbXBsZU1lc2ggdW5pZm9ybXMsIGFuZCBldmVyeSBVQk8gY291bnRzXG4gICAgLy8gYWdhaW5zdCB0aGUgV2ViR0wyIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JVRkZFUlMgbGltaXQgKHR5cGljYWxseSAxMikuXG4gICAgY29uc3QgcGFyZW50TW9kdWxlcyA9IChwYXJlbnRTaGFkZXJzLm1vZHVsZXMgfHwgW10pLmZpbHRlcihcbiAgICAgIChtOiB7bmFtZT86IHN0cmluZ30pID0+IG0ubmFtZSAhPT0gJ3NpbXBsZU1lc2gnXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5wYXJlbnRTaGFkZXJzLFxuICAgICAgdnM6IGJ1aWxkUmFzdGVyTWVzaFZlcnRleFNoYWRlcigpLFxuICAgICAgZnM6IGJ1aWxkUmFzdGVyTWVzaEZyYWdtZW50U2hhZGVyKCksXG4gICAgICBtb2R1bGVzOiBbLi4ucGFyZW50TW9kdWxlcywgcmFzdGVyTWVzaFVuaWZvcm1zLCByYXN0ZXJQcm9jZXNzaW5nVW5pZm9ybXMsIC4uLmx1bWFNb2R1bGVzXVxuICAgIH07XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICB1cGRhdGVTdGF0ZShwYXJhbXM6IFVwZGF0ZVBhcmFtZXRlcnM8U2ltcGxlTWVzaExheWVyPGFueSwgUmFzdGVyTGF5ZXJBZGRlZFByb3BzPj4pOiB2b2lkIHtcbiAgICBjb25zdCB7cHJvcHMsIG9sZFByb3BzLCBjaGFuZ2VGbGFncywgY29udGV4dH0gPSBwYXJhbXM7XG4gICAgc3VwZXIudXBkYXRlU3RhdGUoe3Byb3BzLCBvbGRQcm9wcywgY2hhbmdlRmxhZ3MsIGNvbnRleHR9KTtcblxuICAgIGNvbnN0IG1vZHVsZXMgPSBwcm9wcyAmJiBwcm9wcy5tb2R1bGVzO1xuICAgIGNvbnN0IG9sZE1vZHVsZXMgPSBvbGRQcm9wcyAmJiBvbGRQcm9wcy5tb2R1bGVzO1xuXG4gICAgaWYgKFxuICAgICAgcHJvcHMubWVzaCAhPT0gb2xkUHJvcHMubWVzaCB8fFxuICAgICAgY2hhbmdlRmxhZ3MuZXh0ZW5zaW9uc0NoYW5nZWQgfHxcbiAgICAgICFtb2R1bGVzRXF1YWwobW9kdWxlcywgb2xkTW9kdWxlcylcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnN0YXRlLm1vZGVsKSB7XG4gICAgICAgIHRoaXMuc3RhdGUubW9kZWwuZGVzdHJveT8uKCk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMubWVzaCkge1xuICAgICAgICB0aGlzLnN0YXRlLm1vZGVsID0gdGhpcy5nZXRNb2RlbChwcm9wcy5tZXNoIGFzIE1lc2gpO1xuXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSAoKHByb3BzLm1lc2ggYXMgTWVzaERhdGEpLmF0dHJpYnV0ZXMgfHwgcHJvcHMubWVzaCkgYXMgTWVzaERhdGE7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGhhc05vcm1hbHM6IEJvb2xlYW4oYXR0cmlidXRlcy5OT1JNQUwgfHwgYXR0cmlidXRlcy5ub3JtYWxzKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZ2V0QXR0cmlidXRlTWFuYWdlcigpPy5pbnZhbGlkYXRlQWxsKCk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzICYmIHByb3BzLmltYWdlcykge1xuICAgICAgdGhpcy51cGRhdGVJbWFnZXMoe3Byb3BzLCBvbGRQcm9wc30pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YXRlLm1vZGVsKSB7XG4gICAgICB0aGlzLnN0YXRlLm1vZGVsLnNldFRvcG9sb2d5Py4oXG4gICAgICAgIHRoaXMucHJvcHMud2lyZWZyYW1lID8gVE9QT0xPR1kuTElORV9TVFJJUCA6IFRPUE9MT0dZLlRSSUFOR0xFX0xJU1RcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlSW1hZ2VzKHtcbiAgICBwcm9wcyxcbiAgICBvbGRQcm9wc1xuICB9OiB7XG4gICAgcHJvcHM6IFJhc3RlckxheWVyQWRkZWRQcm9wcztcbiAgICBvbGRQcm9wczogUmFzdGVyTGF5ZXJBZGRlZFByb3BzO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3Qge2ltYWdlc30gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IGRldmljZSA9IHRoaXMuY29udGV4dC5kZXZpY2U7XG4gICAgY29uc3QgZ2wgPSBkZXZpY2U/LmdsIHx8IHRoaXMuY29udGV4dC5nbDtcblxuICAgIGNvbnN0IHtpbWFnZXM6IG5ld0ltYWdlcywgaGFzUGVuZGluZ1VwbG9hZHN9ID0gbG9hZEltYWdlcyh7XG4gICAgICBnbCxcbiAgICAgIGRldmljZSxcbiAgICAgIGltYWdlcyxcbiAgICAgIGltYWdlc0RhdGE6IHByb3BzLmltYWdlcyxcbiAgICAgIG9sZEltYWdlc0RhdGE6IG9sZFByb3BzLmltYWdlc1xuICAgIH0pO1xuXG4gICAgaWYgKG5ld0ltYWdlcykge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7aW1hZ2VzOiBuZXdJbWFnZXN9KTtcbiAgICB9XG4gICAgLy8gSWYgYW55IHRleHR1cmUgdXBsb2FkIGZhaWxlZCwgc3Rhc2ggdGhlIGltYWdlc0RhdGEgYW5kIHNjaGVkdWxlIGEgcmV0cnlcbiAgICAvLyBuZXh0IGZyYW1lLiBUaGUgcmV0cnkgcGFzc2VzIG9sZEltYWdlc0RhdGE6IHt9IHNvIGFsbCBrZXlzIGJ5cGFzcyB0aGVcbiAgICAvLyBpc0VxdWFsIHNraXAtY2hlY2suXG4gICAgaWYgKGhhc1BlbmRpbmdVcGxvYWRzKSB7XG4gICAgICB0aGlzLl9wZW5kaW5nSW1hZ2VSZXRyeSA9IHByb3BzLmltYWdlcztcbiAgICAgIHRoaXMuX2ltYWdlUmV0cnlDb3VudCA9IDA7XG4gICAgICB0aGlzLl9zY2hlZHVsZVJlZHJhdygpO1xuICAgIH1cbiAgfVxuXG4gIGRyYXcoX29wdHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgLy8gSWYgYSBwcmV2aW91cyBmcmFtZSBoYWQgZmFpbGVkIHRleHR1cmUgdXBsb2FkcywgcmV0cnkgdGhlbSBub3cgYmVmb3JlXG4gICAgLy8gY2hlY2tpbmcgd2hldGhlciB0aGUgaW1hZ2VzIHN0YXRlIGlzIGNvbXBsZXRlLiBQYXNzIG9sZEltYWdlc0RhdGE6IHt9IHNvXG4gICAgLy8gYWxsIGtleXMgYXJlIHRyZWF0ZWQgYXMgbmV3IGFuZCBieXBhc3MgdGhlIGlzRXF1YWwgc2tpcC1jaGVjay5cbiAgICAvLyBSZXRyaWVzIGFyZSBib3VuZGVkIHRvIE1BWF9JTUFHRV9SRVRSWV9BVFRFTVBUUyB0byBhdm9pZCBhbiBpbmZpbml0ZVxuICAgIC8vIHJlZHJhdyBsb29wIHdoZW4gaW1hZ2UgZGF0YSBpcyBwZXJtYW5lbnRseSBpbnZhbGlkLlxuICAgIGlmICh0aGlzLl9wZW5kaW5nSW1hZ2VSZXRyeSkge1xuICAgICAgY29uc3QgcmV0cnkgPSB0aGlzLl9wZW5kaW5nSW1hZ2VSZXRyeTtcbiAgICAgIHRoaXMuX3BlbmRpbmdJbWFnZVJldHJ5ID0gbnVsbDtcbiAgICAgIGNvbnN0IHtpbWFnZXM6IG5ld0ltYWdlcywgaGFzUGVuZGluZ1VwbG9hZHN9ID0gbG9hZEltYWdlcyh7XG4gICAgICAgIGdsOiB0aGlzLmNvbnRleHQuZGV2aWNlPy5nbCB8fCB0aGlzLmNvbnRleHQuZ2wsXG4gICAgICAgIGRldmljZTogdGhpcy5jb250ZXh0LmRldmljZSxcbiAgICAgICAgaW1hZ2VzOiB0aGlzLnN0YXRlLmltYWdlcyxcbiAgICAgICAgaW1hZ2VzRGF0YTogcmV0cnksXG4gICAgICAgIG9sZEltYWdlc0RhdGE6IHt9XG4gICAgICB9KTtcbiAgICAgIGlmIChuZXdJbWFnZXMpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aW1hZ2VzOiBuZXdJbWFnZXN9KTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNQZW5kaW5nVXBsb2Fkcykge1xuICAgICAgICB0aGlzLl9pbWFnZVJldHJ5Q291bnQrKztcbiAgICAgICAgaWYgKHRoaXMuX2ltYWdlUmV0cnlDb3VudCA8IFJhc3Rlck1lc2hMYXllci5NQVhfSU1BR0VfUkVUUllfQVRURU1QVFMpIHtcbiAgICAgICAgICB0aGlzLl9wZW5kaW5nSW1hZ2VSZXRyeSA9IHJldHJ5O1xuICAgICAgICAgIHRoaXMuX3NjaGVkdWxlUmVkcmF3KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFJhc3Rlck1lc2hMYXllcjogdGV4dHVyZSB1cGxvYWQgZmFpbGVkIGFmdGVyICR7UmFzdGVyTWVzaExheWVyLk1BWF9JTUFHRV9SRVRSWV9BVFRFTVBUU30gYXR0ZW1wdHMsIGdpdmluZyB1cC5gXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLl9pbWFnZVJldHJ5Q291bnQgPSAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pbWFnZVJldHJ5Q291bnQgPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHttb2RlbCwgaW1hZ2VzfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qge21vZHVsZVByb3BzfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAoXG4gICAgICAhbW9kZWwgfHxcbiAgICAgICFpbWFnZXMgfHxcbiAgICAgIE9iamVjdC5rZXlzKGltYWdlcykubGVuZ3RoID09PSAwIHx8XG4gICAgICAhT2JqZWN0LnZhbHVlcyhpbWFnZXMpLmV2ZXJ5KGl0ZW0gPT4gaXRlbSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTZXQgbWVzaC1zcGVjaWZpYyBVQk8gdW5pZm9ybXNcbiAgICBtb2RlbC5zaGFkZXJJbnB1dHMuc2V0UHJvcHMoe1xuICAgICAgcmFzdGVyTWVzaDoge1xuICAgICAgICBtZXNoT3BhY2l0eTogdGhpcy5wcm9wcy5vcGFjaXR5ID8/IDEsXG4gICAgICAgIG1lc2hGbGF0U2hhZGluZzogIXRoaXMuc3RhdGUuaGFzTm9ybWFscyA/IDEuMCA6IDAuMFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gQXBwbHkgZWFjaCBjdXN0b20gbW9kdWxlJ3MgdW5pZm9ybXMvYmluZGluZ3MgdG8gc2hhZGVySW5wdXRzIGRpcmVjdGx5LlxuICAgIC8vIFdlIGNhbGwgZ2V0VW5pZm9ybXMgb25jZSBwZXIgbW9kdWxlIGFuZCB3cml0ZSB0aGUgcmVzdWx0cyBpbnRvXG4gICAgLy8gc2hhZGVySW5wdXRzLm1vZHVsZVVuaWZvcm1zL21vZHVsZUJpbmRpbmdzLCBieXBhc3Npbmcgc2V0UHJvcHMoKSB3aGljaFxuICAgIC8vIHdvdWxkIGNhbGwgZ2V0VW5pZm9ybXMgYSBzZWNvbmQgdGltZSBvbiBhbHJlYWR5LXRyYW5zZm9ybWVkIHZhbHVlcy5cbiAgICBjb25zdCBhbGxNb2R1bGVQcm9wcyA9IHsuLi5tb2R1bGVQcm9wcywgLi4uaW1hZ2VzfTtcbiAgICBjb25zdCBtb2R1bGVzID0gdGhpcy5wcm9wcy5tb2R1bGVzIHx8IFtdO1xuICAgIGFwcGx5TW9kdWxlVW5pZm9ybXMobW9kZWwuc2hhZGVySW5wdXRzLCBtb2R1bGVzLCBhbGxNb2R1bGVQcm9wcyk7XG5cbiAgICBjb25zdCBkcmF3U3VjY2VzcyA9IG1vZGVsLmRyYXcodGhpcy5jb250ZXh0LnJlbmRlclBhc3MpO1xuICAgIGlmICghZHJhd1N1Y2Nlc3MpIHtcbiAgICAgIHRoaXMuX3NjaGVkdWxlUmVkcmF3KCk7XG4gICAgfVxuICB9XG5cbiAgX3NjaGVkdWxlUmVkcmF3KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZWRyYXdTY2hlZHVsZWQpIHJldHVybjtcbiAgICB0aGlzLl9yZWRyYXdTY2hlZHVsZWQgPSB0cnVlO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLl9yZWRyYXdTY2hlZHVsZWQgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmNvbnRleHQuZGVjaykge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGFjY2Vzc2luZyBwcml2YXRlIGRlY2suZ2wgcHJvcGVydHlcbiAgICAgICAgdGhpcy5jb250ZXh0LmRlY2suX25lZWRzUmVkcmF3ID0gJ1Jhc3Rlck1lc2hMYXllciBwaXBlbGluZSBwZW5kaW5nJztcbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGV4dC5sYXllck1hbmFnZXI/LnNldE5lZWRzUmVkcmF3KCdSYXN0ZXJNZXNoTGF5ZXIgcGlwZWxpbmUgcGVuZGluZycpO1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uUmVkcmF3TmVlZGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25SZWRyYXdOZWVkZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZpbmFsaXplU3RhdGUoKTogdm9pZCB7XG4gICAgc3VwZXIuZmluYWxpemVTdGF0ZSh0aGlzLmNvbnRleHQpO1xuXG4gICAgaWYgKHRoaXMuc3RhdGUuaW1hZ2VzKSB7XG4gICAgICBmb3IgKGNvbnN0IGltYWdlIG9mIE9iamVjdC52YWx1ZXModGhpcy5zdGF0ZS5pbWFnZXMpKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGltYWdlKSkge1xuICAgICAgICAgIGltYWdlLm1hcCh4ID0+IHggJiYgKHguZGVzdHJveSA/IHguZGVzdHJveSgpIDogeC5kZWxldGU/LigpKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW1hZ2UpIHtcbiAgICAgICAgICBpbWFnZS5kZXN0cm95ID8gaW1hZ2UuZGVzdHJveSgpIDogaW1hZ2UuZGVsZXRlPy4oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRNb2RlbChtZXNoOiBNZXNoKTogTW9kZWwge1xuICAgIGNvbnN0IGRldmljZSA9IHRoaXMuY29udGV4dC5kZXZpY2UgfHwgdGhpcy5jb250ZXh0LmdsO1xuXG4gICAgY29uc3QgbW9kZWwgPSBuZXcgTW9kZWwoXG4gICAgICBkZXZpY2UsXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmdldFNoYWRlcnMoKSwge1xuICAgICAgICBpZDogdGhpcy5wcm9wcy5pZCxcbiAgICAgICAgZ2VvbWV0cnk6IGdldEdlb21ldHJ5KG1lc2ggYXMgTWVzaERhdGEgfCBHZW9tZXRyeSksXG4gICAgICAgIGlzSW5zdGFuY2VkOiBmYWxzZVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG59XG5cblJhc3Rlck1lc2hMYXllci5sYXllck5hbWUgPSAnUmFzdGVyTWVzaExheWVyJztcblJhc3Rlck1lc2hMYXllci5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUlBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLHVCQUFBLEdBQUFGLE9BQUE7QUFLQSxJQUFBRyxtQkFBQSxHQUFBSCxPQUFBO0FBSUEsSUFBQUksT0FBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssS0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sd0JBQUEsR0FBQU4sT0FBQTtBQUNB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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/deckgl-layers",
|
|
3
3
|
"author": "Shan He <shan@uber.com>",
|
|
4
|
-
"version": "3.3.0-alpha.
|
|
4
|
+
"version": "3.3.0-alpha.5",
|
|
5
5
|
"description": "kepler.gl constants used by kepler.gl components, actions and reducers",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -20,14 +20,12 @@
|
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"build": "rm -fr dist && babel src --out-dir dist --source-maps inline --extensions '.ts,.tsx,.js,.jsx' --ignore '**/*.d.ts'",
|
|
23
|
-
"build:umd": "webpack --config ./webpack/umd.js --progress --env prod",
|
|
24
23
|
"build:types": "tsc --project ./tsconfig.production.json",
|
|
25
24
|
"prepublishOnly": "babel-node ../../scripts/license-header/bin --license ../../FILE-HEADER && yarn build && yarn build:types",
|
|
26
25
|
"stab": "mkdir -p dist && touch dist/index.js"
|
|
27
26
|
},
|
|
28
27
|
"files": [
|
|
29
|
-
"dist"
|
|
30
|
-
"umd"
|
|
28
|
+
"dist"
|
|
31
29
|
],
|
|
32
30
|
"dependencies": {
|
|
33
31
|
"@deck.gl/aggregation-layers": "^9.3.1",
|
|
@@ -35,9 +33,9 @@
|
|
|
35
33
|
"@deck.gl/geo-layers": "^9.3.1",
|
|
36
34
|
"@deck.gl/layers": "^9.3.1",
|
|
37
35
|
"@deck.gl/mesh-layers": "^9.3.1",
|
|
38
|
-
"@kepler.gl/constants": "3.3.0-alpha.
|
|
39
|
-
"@kepler.gl/types": "3.3.0-alpha.
|
|
40
|
-
"@kepler.gl/utils": "3.3.0-alpha.
|
|
36
|
+
"@kepler.gl/constants": "3.3.0-alpha.5",
|
|
37
|
+
"@kepler.gl/types": "3.3.0-alpha.5",
|
|
38
|
+
"@kepler.gl/utils": "3.3.0-alpha.5",
|
|
41
39
|
"@loaders.gl/wms": "4.4.1",
|
|
42
40
|
"@luma.gl/constants": "^9.3.2",
|
|
43
41
|
"@luma.gl/core": "^9.3.2",
|