@kepler.gl/deckgl-layers 3.1.4 → 3.1.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/index.d.ts +3 -0
- package/dist/index.js +25 -2
- package/dist/raster/images.d.ts +9 -0
- package/dist/raster/images.js +165 -0
- package/dist/raster/raster-layer/raster-layer-webgl1.fs.d.ts +2 -0
- package/dist/raster/raster-layer/raster-layer-webgl1.fs.js +10 -0
- package/dist/raster/raster-layer/raster-layer-webgl1.vs.d.ts +2 -0
- package/dist/raster/raster-layer/raster-layer-webgl1.vs.js +10 -0
- package/dist/raster/raster-layer/raster-layer-webgl2.fs.d.ts +2 -0
- package/dist/raster/raster-layer/raster-layer-webgl2.fs.js +10 -0
- package/dist/raster/raster-layer/raster-layer-webgl2.vs.d.ts +2 -0
- package/dist/raster/raster-layer/raster-layer-webgl2.vs.js +10 -0
- package/dist/raster/raster-layer/raster-layer.d.ts +21 -0
- package/dist/raster/raster-layer/raster-layer.js +235 -0
- package/dist/raster/raster-mesh-layer/matrix.d.ts +2 -0
- package/dist/raster/raster-mesh-layer/matrix.js +18 -0
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.d.ts +2 -0
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +10 -0
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.d.ts +2 -0
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +10 -0
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.d.ts +2 -0
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +10 -0
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.d.ts +2 -0
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +10 -0
- package/dist/raster/raster-mesh-layer/raster-mesh-layer.d.ts +22 -0
- package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +263 -0
- package/dist/raster/types.d.ts +17 -0
- package/dist/raster/types.js +6 -0
- package/dist/raster/util.d.ts +10 -0
- package/dist/raster/util.js +29 -0
- package/dist/raster/webgl/color/colormap.d.ts +2 -0
- package/dist/raster/webgl/color/colormap.js +39 -0
- package/dist/raster/webgl/color/filter.d.ts +2 -0
- package/dist/raster/webgl/color/filter.js +48 -0
- package/dist/raster/webgl/color/gamma-contrast.d.ts +2 -0
- package/dist/raster/webgl/color/gamma-contrast.js +62 -0
- package/dist/raster/webgl/color/linear-rescale.d.ts +2 -0
- package/dist/raster/webgl/color/linear-rescale.js +31 -0
- package/dist/raster/webgl/color/saturation.d.ts +2 -0
- package/dist/raster/webgl/color/saturation.js +39 -0
- package/dist/raster/webgl/color/sigmoidal-contrast.d.ts +2 -0
- package/dist/raster/webgl/color/sigmoidal-contrast.js +64 -0
- package/dist/raster/webgl/index.d.ts +16 -0
- package/dist/raster/webgl/index.js +135 -0
- package/dist/raster/webgl/pansharpen/pansharpen-brovey.d.ts +2 -0
- package/dist/raster/webgl/pansharpen/pansharpen-brovey.js +43 -0
- package/dist/raster/webgl/spectral-indices/evi.d.ts +2 -0
- package/dist/raster/webgl/spectral-indices/evi.js +26 -0
- package/dist/raster/webgl/spectral-indices/msavi.d.ts +2 -0
- package/dist/raster/webgl/spectral-indices/msavi.js +25 -0
- package/dist/raster/webgl/spectral-indices/normalized-difference.d.ts +2 -0
- package/dist/raster/webgl/spectral-indices/normalized-difference.js +19 -0
- package/dist/raster/webgl/spectral-indices/savi.d.ts +2 -0
- package/dist/raster/webgl/spectral-indices/savi.js +21 -0
- package/dist/raster/webgl/texture/combine-bands.d.ts +4 -0
- package/dist/raster/webgl/texture/combine-bands.js +65 -0
- package/dist/raster/webgl/texture/mask.d.ts +4 -0
- package/dist/raster/webgl/texture/mask.js +58 -0
- package/dist/raster/webgl/texture/reorder-bands.d.ts +10 -0
- package/dist/raster/webgl/texture/reorder-bands.js +69 -0
- package/dist/raster/webgl/texture/rgba-image.d.ts +2 -0
- package/dist/raster/webgl/texture/rgba-image.js +34 -0
- package/dist/raster/webgl/types.d.ts +23 -0
- package/dist/raster/webgl/types.js +6 -0
- package/package.json +4 -4
@@ -0,0 +1,235 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports["default"] = void 0;
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
11
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
12
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
13
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
16
|
+
var _typed = require("@deck.gl/core/typed");
|
17
|
+
var _typed2 = require("@deck.gl/layers/typed");
|
18
|
+
var _core = require("@luma.gl/core");
|
19
|
+
var _engine = require("@luma.gl/engine");
|
20
|
+
var _rasterLayerWebgl = _interopRequireDefault(require("./raster-layer-webgl1.fs"));
|
21
|
+
var _rasterLayerWebgl2 = _interopRequireDefault(require("./raster-layer-webgl1.vs"));
|
22
|
+
var _rasterLayerWebgl3 = _interopRequireDefault(require("./raster-layer-webgl2.fs"));
|
23
|
+
var _rasterLayerWebgl4 = _interopRequireDefault(require("./raster-layer-webgl2.vs"));
|
24
|
+
var _images = require("../images");
|
25
|
+
var _util = require("../util");
|
26
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
27
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
28
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
29
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
30
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
31
|
+
function _superPropGet(t, e, r, o) { var p = (0, _get2["default"])((0, _getPrototypeOf2["default"])(1 & o ? t.prototype : t), e, r); return 2 & o ? function (t) { return p.apply(r, t); } : p; }
|
32
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
33
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT
|
34
|
+
// Copyright contributors to the kepler.gl project
|
35
|
+
var defaultProps = _objectSpread(_objectSpread({}, _typed2.BitmapLayer.defaultProps), {}, {
|
36
|
+
modules: {
|
37
|
+
type: 'array',
|
38
|
+
value: [],
|
39
|
+
compare: true
|
40
|
+
},
|
41
|
+
images: {
|
42
|
+
type: 'object',
|
43
|
+
value: {},
|
44
|
+
compare: true
|
45
|
+
},
|
46
|
+
moduleProps: {
|
47
|
+
type: 'object',
|
48
|
+
value: {},
|
49
|
+
compare: true
|
50
|
+
}
|
51
|
+
});
|
52
|
+
var RasterLayer = exports["default"] = /*#__PURE__*/function (_BitmapLayer) {
|
53
|
+
function RasterLayer() {
|
54
|
+
(0, _classCallCheck2["default"])(this, RasterLayer);
|
55
|
+
return _callSuper(this, RasterLayer, arguments);
|
56
|
+
}
|
57
|
+
(0, _inherits2["default"])(RasterLayer, _BitmapLayer);
|
58
|
+
return (0, _createClass2["default"])(RasterLayer, [{
|
59
|
+
key: "initializeState",
|
60
|
+
value: function initializeState() {
|
61
|
+
var gl = this.context.gl;
|
62
|
+
var programManager = _engine.ProgramManager.getDefaultProgramManager(gl);
|
63
|
+
var fsStr1 = 'fs:DECKGL_MUTATE_COLOR(inout vec4 image, in vec2 coord)';
|
64
|
+
var fsStr2 = 'fs:DECKGL_CREATE_COLOR(inout vec4 image, in vec2 coord)';
|
65
|
+
|
66
|
+
// Only initialize shader hook functions _once globally_
|
67
|
+
// Since the program manager is shared across all layers, but many layers
|
68
|
+
// might be created, this solves the performance issue of always adding new
|
69
|
+
// hook functions.
|
70
|
+
if (!programManager._hookFunctions.includes(fsStr1)) {
|
71
|
+
programManager.addShaderHook(fsStr1);
|
72
|
+
}
|
73
|
+
if (!programManager._hookFunctions.includes(fsStr2)) {
|
74
|
+
programManager.addShaderHook(fsStr2);
|
75
|
+
}
|
76
|
+
|
77
|
+
// images is a mapping from keys to Texture2D objects. The keys should match
|
78
|
+
// names of uniforms in shader modules
|
79
|
+
this.setState({
|
80
|
+
images: {}
|
81
|
+
});
|
82
|
+
_superPropGet(RasterLayer, "initializeState", this, 3)([]);
|
83
|
+
}
|
84
|
+
}, {
|
85
|
+
key: "draw",
|
86
|
+
value: function draw(_ref) {
|
87
|
+
var uniforms = _ref.uniforms;
|
88
|
+
var _this$state = this.state,
|
89
|
+
model = _this$state.model,
|
90
|
+
images = _this$state.images,
|
91
|
+
coordinateConversion = _this$state.coordinateConversion,
|
92
|
+
bounds = _this$state.bounds;
|
93
|
+
var _this$props = this.props,
|
94
|
+
desaturate = _this$props.desaturate,
|
95
|
+
transparentColor = _this$props.transparentColor,
|
96
|
+
tintColor = _this$props.tintColor,
|
97
|
+
moduleProps = _this$props.moduleProps;
|
98
|
+
|
99
|
+
// Render the image
|
100
|
+
if (!model || !images || Object.keys(images).length === 0 || !Object.values(images).every(function (item) {
|
101
|
+
return item;
|
102
|
+
})) {
|
103
|
+
return;
|
104
|
+
}
|
105
|
+
model.setUniforms(_objectSpread(_objectSpread({}, uniforms), {}, {
|
106
|
+
desaturate: desaturate,
|
107
|
+
transparentColor: transparentColor === null || transparentColor === void 0 ? void 0 : transparentColor.map(function (x) {
|
108
|
+
return x ? x / 255 : 0;
|
109
|
+
}),
|
110
|
+
tintColor: tintColor === null || tintColor === void 0 ? void 0 : tintColor.slice(0, 3).map(function (x) {
|
111
|
+
return x / 255;
|
112
|
+
}),
|
113
|
+
coordinateConversion: coordinateConversion,
|
114
|
+
bounds: bounds
|
115
|
+
})).updateModuleSettings(_objectSpread(_objectSpread({}, moduleProps), images)).draw();
|
116
|
+
}
|
117
|
+
}, {
|
118
|
+
key: "getShaders",
|
119
|
+
value: function getShaders() {
|
120
|
+
var gl = this.context.gl;
|
121
|
+
var _this$props$modules = this.props.modules,
|
122
|
+
modules = _this$props$modules === void 0 ? [] : _this$props$modules;
|
123
|
+
var webgl2 = (0, _core.isWebGL2)(gl);
|
124
|
+
|
125
|
+
// Choose webgl version for module
|
126
|
+
// If fs2 or fs1 keys exist, prefer them, but fall back to fs, so that
|
127
|
+
// version-independent modules don't need to care
|
128
|
+
var _iterator = _createForOfIteratorHelper(modules),
|
129
|
+
_step;
|
130
|
+
try {
|
131
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
132
|
+
var module = _step.value;
|
133
|
+
module.fs = webgl2 ? module.fs2 || module.fs : module.fs1 || module.fs;
|
134
|
+
|
135
|
+
// Sampler type is always float for WebGL1
|
136
|
+
if (!webgl2 && module.defines) {
|
137
|
+
module.defines.SAMPLER_TYPE = 'sampler2D';
|
138
|
+
}
|
139
|
+
}
|
140
|
+
} catch (err) {
|
141
|
+
_iterator.e(err);
|
142
|
+
} finally {
|
143
|
+
_iterator.f();
|
144
|
+
}
|
145
|
+
return _objectSpread(_objectSpread({}, _superPropGet(RasterLayer, "getShaders", this, 3)([])), {}, {
|
146
|
+
vs: webgl2 ? _rasterLayerWebgl4["default"] : _rasterLayerWebgl2["default"],
|
147
|
+
fs: webgl2 ? _rasterLayerWebgl3["default"] : _rasterLayerWebgl["default"],
|
148
|
+
modules: [_typed.project32].concat((0, _toConsumableArray2["default"])(modules))
|
149
|
+
});
|
150
|
+
}
|
151
|
+
|
152
|
+
// eslint-disable-next-line complexity
|
153
|
+
}, {
|
154
|
+
key: "updateState",
|
155
|
+
value: function updateState(params) {
|
156
|
+
var props = params.props,
|
157
|
+
oldProps = params.oldProps,
|
158
|
+
changeFlags = params.changeFlags;
|
159
|
+
var modules = props && props.modules;
|
160
|
+
var oldModules = oldProps && oldProps.modules;
|
161
|
+
|
162
|
+
// setup model first
|
163
|
+
// If the list of modules changed, need to recompile the shaders
|
164
|
+
if (changeFlags.extensionsChanged || !(0, _util.modulesEqual)(modules, oldModules)) {
|
165
|
+
var _this$state$model, _this$getAttributeMan;
|
166
|
+
var gl = this.context.gl;
|
167
|
+
(_this$state$model = this.state.model) === null || _this$state$model === void 0 || _this$state$model["delete"]();
|
168
|
+
this.state.model = this._getModel(gl);
|
169
|
+
(_this$getAttributeMan = this.getAttributeManager()) === null || _this$getAttributeMan === void 0 || _this$getAttributeMan.invalidateAll();
|
170
|
+
}
|
171
|
+
if (props && props.images) {
|
172
|
+
this.updateImages({
|
173
|
+
props: props,
|
174
|
+
oldProps: oldProps
|
175
|
+
});
|
176
|
+
}
|
177
|
+
var attributeManager = this.getAttributeManager();
|
178
|
+
if (props.bounds !== oldProps.bounds) {
|
179
|
+
var _this$state$model2;
|
180
|
+
var oldMesh = this.state.mesh;
|
181
|
+
var mesh = this._createMesh();
|
182
|
+
(_this$state$model2 = this.state.model) === null || _this$state$model2 === void 0 || _this$state$model2.setVertexCount(mesh.vertexCount);
|
183
|
+
for (var key in mesh) {
|
184
|
+
if (oldMesh && oldMesh[key] !== mesh[key]) {
|
185
|
+
attributeManager === null || attributeManager === void 0 || attributeManager.invalidate(key);
|
186
|
+
}
|
187
|
+
}
|
188
|
+
this.setState(_objectSpread({
|
189
|
+
mesh: mesh
|
190
|
+
}, this._getCoordinateUniforms()));
|
191
|
+
} else if (props._imageCoordinateSystem !== oldProps._imageCoordinateSystem) {
|
192
|
+
this.setState(this._getCoordinateUniforms());
|
193
|
+
}
|
194
|
+
}
|
195
|
+
}, {
|
196
|
+
key: "updateImages",
|
197
|
+
value: function updateImages(_ref2) {
|
198
|
+
var props = _ref2.props,
|
199
|
+
oldProps = _ref2.oldProps;
|
200
|
+
var images = this.state.images;
|
201
|
+
var gl = this.context.gl;
|
202
|
+
var newImages = (0, _images.loadImages)({
|
203
|
+
gl: gl,
|
204
|
+
images: images,
|
205
|
+
imagesData: props.images,
|
206
|
+
oldImagesData: oldProps.images
|
207
|
+
});
|
208
|
+
if (newImages) {
|
209
|
+
this.setState({
|
210
|
+
images: newImages
|
211
|
+
});
|
212
|
+
}
|
213
|
+
}
|
214
|
+
}, {
|
215
|
+
key: "finalizeState",
|
216
|
+
value: function finalizeState() {
|
217
|
+
_superPropGet(RasterLayer, "finalizeState", this, 3)([this.context]);
|
218
|
+
if (this.state.images) {
|
219
|
+
for (var _i = 0, _Object$values = Object.values(this.state.images); _i < _Object$values.length; _i++) {
|
220
|
+
var image = _Object$values[_i];
|
221
|
+
if (Array.isArray(image)) {
|
222
|
+
image.map(function (x) {
|
223
|
+
return x && x["delete"]();
|
224
|
+
});
|
225
|
+
} else if (image) {
|
226
|
+
image["delete"]();
|
227
|
+
}
|
228
|
+
}
|
229
|
+
}
|
230
|
+
}
|
231
|
+
}]);
|
232
|
+
}(_typed2.BitmapLayer);
|
233
|
+
RasterLayer.defaultProps = defaultProps;
|
234
|
+
RasterLayer.layerName = 'RasterLayer';
|
235
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiX3R5cGVkMiIsIl9jb3JlIiwiX2VuZ2luZSIsIl9yYXN0ZXJMYXllcldlYmdsIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yYXN0ZXJMYXllcldlYmdsMiIsIl9yYXN0ZXJMYXllcldlYmdsMyIsIl9yYXN0ZXJMYXllcldlYmdsNCIsIl9pbWFnZXMiLCJfdXRpbCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiciIsImUiLCJ0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsImYiLCJUeXBlRXJyb3IiLCJvIiwiYSIsInUiLCJjYWxsIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJfc3VwZXJQcm9wR2V0IiwicCIsIl9nZXQyIiwib3duS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJkZWZhdWx0UHJvcHMiLCJCaXRtYXBMYXllciIsIm1vZHVsZXMiLCJ0eXBlIiwiY29tcGFyZSIsImltYWdlcyIsIm1vZHVsZVByb3BzIiwiUmFzdGVyTGF5ZXIiLCJleHBvcnRzIiwiX0JpdG1hcExheWVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwiaW5pdGlhbGl6ZVN0YXRlIiwiZ2wiLCJjb250ZXh0IiwicHJvZ3JhbU1hbmFnZXIiLCJQcm9ncmFtTWFuYWdlciIsImdldERlZmF1bHRQcm9ncmFtTWFuYWdlciIsImZzU3RyMSIsImZzU3RyMiIsIl9ob29rRnVuY3Rpb25zIiwiaW5jbHVkZXMiLCJhZGRTaGFkZXJIb29rIiwic2V0U3RhdGUiLCJkcmF3IiwiX3JlZiIsInVuaWZvcm1zIiwiX3RoaXMkc3RhdGUiLCJzdGF0ZSIsIm1vZGVsIiwiY29vcmRpbmF0ZUNvbnZlcnNpb24iLCJib3VuZHMiLCJfdGhpcyRwcm9wcyIsInByb3BzIiwiZGVzYXR1cmF0ZSIsInRyYW5zcGFyZW50Q29sb3IiLCJ0aW50Q29sb3IiLCJ2YWx1ZXMiLCJldmVyeSIsIml0ZW0iLCJzZXRVbmlmb3JtcyIsIm1hcCIsIngiLCJ1cGRhdGVNb2R1bGVTZXR0aW5ncyIsImdldFNoYWRlcnMiLCJfdGhpcyRwcm9wcyRtb2R1bGVzIiwid2ViZ2wyIiwiaXNXZWJHTDIiLCJfaXRlcmF0b3IiLCJfc3RlcCIsIm1vZHVsZSIsImZzIiwiZnMyIiwiZnMxIiwiZGVmaW5lcyIsIlNBTVBMRVJfVFlQRSIsImVyciIsInZzIiwidnNXZWJHTDIiLCJ2c1dlYkdMMSIsImZzV2ViR0wyIiwiZnNXZWJHTDEiLCJwcm9qZWN0MzIiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwidXBkYXRlU3RhdGUiLCJwYXJhbXMiLCJvbGRQcm9wcyIsImNoYW5nZUZsYWdzIiwib2xkTW9kdWxlcyIsImV4dGVuc2lvbnNDaGFuZ2VkIiwibW9kdWxlc0VxdWFsIiwiX3RoaXMkc3RhdGUkbW9kZWwiLCJfdGhpcyRnZXRBdHRyaWJ1dGVNYW4iLCJfZ2V0TW9kZWwiLCJnZXRBdHRyaWJ1dGVNYW5hZ2VyIiwiaW52YWxpZGF0ZUFsbCIsInVwZGF0ZUltYWdlcyIsImF0dHJpYnV0ZU1hbmFnZXIiLCJfdGhpcyRzdGF0ZSRtb2RlbDIiLCJvbGRNZXNoIiwibWVzaCIsIl9jcmVhdGVNZXNoIiwic2V0VmVydGV4Q291bnQiLCJ2ZXJ0ZXhDb3VudCIsImludmFsaWRhdGUiLCJfZ2V0Q29vcmRpbmF0ZVVuaWZvcm1zIiwiX2ltYWdlQ29vcmRpbmF0ZVN5c3RlbSIsIl9yZWYyIiwibmV3SW1hZ2VzIiwibG9hZEltYWdlcyIsImltYWdlc0RhdGEiLCJvbGRJbWFnZXNEYXRhIiwiZmluYWxpemVTdGF0ZSIsIl9pIiwiX09iamVjdCR2YWx1ZXMiLCJpbWFnZSIsImxheWVyTmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yYXN0ZXIvcmFzdGVyLWxheWVyL3Jhc3Rlci1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge3Byb2plY3QzMiwgVXBkYXRlUGFyYW1ldGVyc30gZnJvbSAnQGRlY2suZ2wvY29yZS90eXBlZCc7XG5pbXBvcnQge0JpdG1hcExheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMvdHlwZWQnO1xuaW1wb3J0IHtpc1dlYkdMMn0gZnJvbSAnQGx1bWEuZ2wvY29yZSc7XG5pbXBvcnQge1Byb2dyYW1NYW5hZ2VyfSBmcm9tICdAbHVtYS5nbC9lbmdpbmUnO1xuXG5pbXBvcnQgZnNXZWJHTDEgZnJvbSAnLi9yYXN0ZXItbGF5ZXItd2ViZ2wxLmZzJztcbmltcG9ydCB2c1dlYkdMMSBmcm9tICcuL3Jhc3Rlci1sYXllci13ZWJnbDEudnMnO1xuaW1wb3J0IGZzV2ViR0wyIGZyb20gJy4vcmFzdGVyLWxheWVyLXdlYmdsMi5mcyc7XG5pbXBvcnQgdnNXZWJHTDIgZnJvbSAnLi9yYXN0ZXItbGF5ZXItd2ViZ2wyLnZzJztcbmltcG9ydCB7bG9hZEltYWdlc30gZnJvbSAnLi4vaW1hZ2VzJztcbmltcG9ydCB0eXBlIHtSYXN0ZXJMYXllckFkZGVkUHJvcHMsIEltYWdlU3RhdGV9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7bW9kdWxlc0VxdWFsfSBmcm9tICcuLi91dGlsJztcblxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAuLi5CaXRtYXBMYXllci5kZWZhdWx0UHJvcHMsXG4gIG1vZHVsZXM6IHt0eXBlOiAnYXJyYXknLCB2YWx1ZTogW10sIGNvbXBhcmU6IHRydWV9LFxuICBpbWFnZXM6IHt0eXBlOiAnb2JqZWN0JywgdmFsdWU6IHt9LCBjb21wYXJlOiB0cnVlfSxcbiAgbW9kdWxlUHJvcHM6IHt0eXBlOiAnb2JqZWN0JywgdmFsdWU6IHt9LCBjb21wYXJlOiB0cnVlfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFzdGVyTGF5ZXIgZXh0ZW5kcyBCaXRtYXBMYXllcjxSYXN0ZXJMYXllckFkZGVkUHJvcHM+IHtcbiAgZGVjbGFyZSBzdGF0ZTogQml0bWFwTGF5ZXI8UmFzdGVyTGF5ZXJBZGRlZFByb3BzPlsnc3RhdGUnXSAmIHtcbiAgICBpbWFnZXM6IEltYWdlU3RhdGU7XG4gIH07XG5cbiAgaW5pdGlhbGl6ZVN0YXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHtnbH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgY29uc3QgcHJvZ3JhbU1hbmFnZXIgPSBQcm9ncmFtTWFuYWdlci5nZXREZWZhdWx0UHJvZ3JhbU1hbmFnZXIoZ2wpO1xuXG4gICAgY29uc3QgZnNTdHIxID0gJ2ZzOkRFQ0tHTF9NVVRBVEVfQ09MT1IoaW5vdXQgdmVjNCBpbWFnZSwgaW4gdmVjMiBjb29yZCknO1xuICAgIGNvbnN0IGZzU3RyMiA9ICdmczpERUNLR0xfQ1JFQVRFX0NPTE9SKGlub3V0IHZlYzQgaW1hZ2UsIGluIHZlYzIgY29vcmQpJztcblxuICAgIC8vIE9ubHkgaW5pdGlhbGl6ZSBzaGFkZXIgaG9vayBmdW5jdGlvbnMgX29uY2UgZ2xvYmFsbHlfXG4gICAgLy8gU2luY2UgdGhlIHByb2dyYW0gbWFuYWdlciBpcyBzaGFyZWQgYWNyb3NzIGFsbCBsYXllcnMsIGJ1dCBtYW55IGxheWVyc1xuICAgIC8vIG1pZ2h0IGJlIGNyZWF0ZWQsIHRoaXMgc29sdmVzIHRoZSBwZXJmb3JtYW5jZSBpc3N1ZSBvZiBhbHdheXMgYWRkaW5nIG5ld1xuICAgIC8vIGhvb2sgZnVuY3Rpb25zLlxuICAgIGlmICghcHJvZ3JhbU1hbmFnZXIuX2hvb2tGdW5jdGlvbnMuaW5jbHVkZXMoZnNTdHIxKSkge1xuICAgICAgcHJvZ3JhbU1hbmFnZXIuYWRkU2hhZGVySG9vayhmc1N0cjEpO1xuICAgIH1cbiAgICBpZiAoIXByb2dyYW1NYW5hZ2VyLl9ob29rRnVuY3Rpb25zLmluY2x1ZGVzKGZzU3RyMikpIHtcbiAgICAgIHByb2dyYW1NYW5hZ2VyLmFkZFNoYWRlckhvb2soZnNTdHIyKTtcbiAgICB9XG5cbiAgICAvLyBpbWFnZXMgaXMgYSBtYXBwaW5nIGZyb20ga2V5cyB0byBUZXh0dXJlMkQgb2JqZWN0cy4gVGhlIGtleXMgc2hvdWxkIG1hdGNoXG4gICAgLy8gbmFtZXMgb2YgdW5pZm9ybXMgaW4gc2hhZGVyIG1vZHVsZXNcbiAgICB0aGlzLnNldFN0YXRlKHtpbWFnZXM6IHt9fSk7XG5cbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoKTtcbiAgfVxuXG4gIGRyYXcoe3VuaWZvcm1zfToge3VuaWZvcm1zOiB7W2tleTogc3RyaW5nXTogYW55fX0pOiB2b2lkIHtcbiAgICBjb25zdCB7bW9kZWwsIGltYWdlcywgY29vcmRpbmF0ZUNvbnZlcnNpb24sIGJvdW5kc30gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHtkZXNhdHVyYXRlLCB0cmFuc3BhcmVudENvbG9yLCB0aW50Q29sb3IsIG1vZHVsZVByb3BzfSA9IHRoaXMucHJvcHM7XG5cbiAgICAvLyBSZW5kZXIgdGhlIGltYWdlXG4gICAgaWYgKFxuICAgICAgIW1vZGVsIHx8XG4gICAgICAhaW1hZ2VzIHx8XG4gICAgICBPYmplY3Qua2V5cyhpbWFnZXMpLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgIU9iamVjdC52YWx1ZXMoaW1hZ2VzKS5ldmVyeShpdGVtID0+IGl0ZW0pXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbW9kZWxcbiAgICAgIC5zZXRVbmlmb3Jtcyh7XG4gICAgICAgIC4uLnVuaWZvcm1zLFxuICAgICAgICBkZXNhdHVyYXRlLFxuICAgICAgICB0cmFuc3BhcmVudENvbG9yOiB0cmFuc3BhcmVudENvbG9yPy5tYXAoeCA9PiAoeCA/IHggLyAyNTUgOiAwKSksXG4gICAgICAgIHRpbnRDb2xvcjogdGludENvbG9yPy5zbGljZSgwLCAzKS5tYXAoeCA9PiB4IC8gMjU1KSxcbiAgICAgICAgY29vcmRpbmF0ZUNvbnZlcnNpb24sXG4gICAgICAgIGJvdW5kc1xuICAgICAgfSlcbiAgICAgIC51cGRhdGVNb2R1bGVTZXR0aW5ncyh7XG4gICAgICAgIC4uLm1vZHVsZVByb3BzLFxuICAgICAgICAuLi5pbWFnZXNcbiAgICAgIH0pXG4gICAgICAuZHJhdygpO1xuICB9XG5cbiAgZ2V0U2hhZGVycygpOiBhbnkge1xuICAgIGNvbnN0IHtnbH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgY29uc3Qge21vZHVsZXMgPSBbXX0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHdlYmdsMiA9IGlzV2ViR0wyKGdsKTtcblxuICAgIC8vIENob29zZSB3ZWJnbCB2ZXJzaW9uIGZvciBtb2R1bGVcbiAgICAvLyBJZiBmczIgb3IgZnMxIGtleXMgZXhpc3QsIHByZWZlciB0aGVtLCBidXQgZmFsbCBiYWNrIHRvIGZzLCBzbyB0aGF0XG4gICAgLy8gdmVyc2lvbi1pbmRlcGVuZGVudCBtb2R1bGVzIGRvbid0IG5lZWQgdG8gY2FyZVxuICAgIGZvciAoY29uc3QgbW9kdWxlIG9mIG1vZHVsZXMpIHtcbiAgICAgIG1vZHVsZS5mcyA9IHdlYmdsMiA/IG1vZHVsZS5mczIgfHwgbW9kdWxlLmZzIDogbW9kdWxlLmZzMSB8fCBtb2R1bGUuZnM7XG5cbiAgICAgIC8vIFNhbXBsZXIgdHlwZSBpcyBhbHdheXMgZmxvYXQgZm9yIFdlYkdMMVxuICAgICAgaWYgKCF3ZWJnbDIgJiYgbW9kdWxlLmRlZmluZXMpIHtcbiAgICAgICAgbW9kdWxlLmRlZmluZXMuU0FNUExFUl9UWVBFID0gJ3NhbXBsZXIyRCc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmdldFNoYWRlcnMoKSxcbiAgICAgIHZzOiB3ZWJnbDIgPyB2c1dlYkdMMiA6IHZzV2ViR0wxLFxuICAgICAgZnM6IHdlYmdsMiA/IGZzV2ViR0wyIDogZnNXZWJHTDEsXG4gICAgICBtb2R1bGVzOiBbcHJvamVjdDMyLCAuLi5tb2R1bGVzXVxuICAgIH07XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICB1cGRhdGVTdGF0ZShwYXJhbXM6IFVwZGF0ZVBhcmFtZXRlcnM8Qml0bWFwTGF5ZXI8UmFzdGVyTGF5ZXJBZGRlZFByb3BzPj4pOiB2b2lkIHtcbiAgICBjb25zdCB7cHJvcHMsIG9sZFByb3BzLCBjaGFuZ2VGbGFnc30gPSBwYXJhbXM7XG4gICAgY29uc3QgbW9kdWxlcyA9IHByb3BzICYmIHByb3BzLm1vZHVsZXM7XG4gICAgY29uc3Qgb2xkTW9kdWxlcyA9IG9sZFByb3BzICYmIG9sZFByb3BzLm1vZHVsZXM7XG5cbiAgICAvLyBzZXR1cCBtb2RlbCBmaXJzdFxuICAgIC8vIElmIHRoZSBsaXN0IG9mIG1vZHVsZXMgY2hhbmdlZCwgbmVlZCB0byByZWNvbXBpbGUgdGhlIHNoYWRlcnNcbiAgICBpZiAoY2hhbmdlRmxhZ3MuZXh0ZW5zaW9uc0NoYW5nZWQgfHwgIW1vZHVsZXNFcXVhbChtb2R1bGVzLCBvbGRNb2R1bGVzKSkge1xuICAgICAgY29uc3Qge2dsfSA9IHRoaXMuY29udGV4dDtcbiAgICAgIHRoaXMuc3RhdGUubW9kZWw/LmRlbGV0ZSgpO1xuICAgICAgdGhpcy5zdGF0ZS5tb2RlbCA9IHRoaXMuX2dldE1vZGVsKGdsKTtcbiAgICAgIHRoaXMuZ2V0QXR0cmlidXRlTWFuYWdlcigpPy5pbnZhbGlkYXRlQWxsKCk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzICYmIHByb3BzLmltYWdlcykge1xuICAgICAgdGhpcy51cGRhdGVJbWFnZXMoe3Byb3BzLCBvbGRQcm9wc30pO1xuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZU1hbmFnZXIgPSB0aGlzLmdldEF0dHJpYnV0ZU1hbmFnZXIoKTtcblxuICAgIGlmIChwcm9wcy5ib3VuZHMgIT09IG9sZFByb3BzLmJvdW5kcykge1xuICAgICAgY29uc3Qgb2xkTWVzaCA9IHRoaXMuc3RhdGUubWVzaDtcbiAgICAgIGNvbnN0IG1lc2ggPSB0aGlzLl9jcmVhdGVNZXNoKCk7XG4gICAgICB0aGlzLnN0YXRlLm1vZGVsPy5zZXRWZXJ0ZXhDb3VudChtZXNoLnZlcnRleENvdW50KTtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIG1lc2gpIHtcbiAgICAgICAgaWYgKG9sZE1lc2ggJiYgb2xkTWVzaFtrZXldICE9PSBtZXNoW2tleV0pIHtcbiAgICAgICAgICBhdHRyaWJ1dGVNYW5hZ2VyPy5pbnZhbGlkYXRlKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0U3RhdGUoe21lc2gsIC4uLnRoaXMuX2dldENvb3JkaW5hdGVVbmlmb3JtcygpfSk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5faW1hZ2VDb29yZGluYXRlU3lzdGVtICE9PSBvbGRQcm9wcy5faW1hZ2VDb29yZGluYXRlU3lzdGVtKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHRoaXMuX2dldENvb3JkaW5hdGVVbmlmb3JtcygpKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVJbWFnZXMoe1xuICAgIHByb3BzLFxuICAgIG9sZFByb3BzXG4gIH06IHtcbiAgICBwcm9wczogUmFzdGVyTGF5ZXJBZGRlZFByb3BzO1xuICAgIG9sZFByb3BzOiBSYXN0ZXJMYXllckFkZGVkUHJvcHM7XG4gIH0pOiB2b2lkIHtcbiAgICBjb25zdCB7aW1hZ2VzfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qge2dsfSA9IHRoaXMuY29udGV4dDtcblxuICAgIGNvbnN0IG5ld0ltYWdlcyA9IGxvYWRJbWFnZXMoe1xuICAgICAgZ2wsXG4gICAgICBpbWFnZXMsXG4gICAgICBpbWFnZXNEYXRhOiBwcm9wcy5pbWFnZXMsXG4gICAgICBvbGRJbWFnZXNEYXRhOiBvbGRQcm9wcy5pbWFnZXNcbiAgICB9KTtcbiAgICBpZiAobmV3SW1hZ2VzKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtpbWFnZXM6IG5ld0ltYWdlc30pO1xuICAgIH1cbiAgfVxuXG4gIGZpbmFsaXplU3RhdGUoKTogdm9pZCB7XG4gICAgc3VwZXIuZmluYWxpemVTdGF0ZSh0aGlzLmNvbnRleHQpO1xuXG4gICAgaWYgKHRoaXMuc3RhdGUuaW1hZ2VzKSB7XG4gICAgICBmb3IgKGNvbnN0IGltYWdlIG9mIE9iamVjdC52YWx1ZXModGhpcy5zdGF0ZS5pbWFnZXMpKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGltYWdlKSkge1xuICAgICAgICAgIGltYWdlLm1hcCh4ID0+IHggJiYgeC5kZWxldGUoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW1hZ2UpIHtcbiAgICAgICAgICBpbWFnZS5kZWxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5SYXN0ZXJMYXllci5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5SYXN0ZXJMYXllci5sYXllck5hbWUgPSAnUmFzdGVyTGF5ZXInO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBTCxPQUFBO0FBQ0EsSUFBQU0sa0JBQUEsR0FBQUQsc0JBQUEsQ0FBQUwsT0FBQTtBQUNBLElBQUFPLGtCQUFBLEdBQUFGLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBUSxrQkFBQSxHQUFBSCxzQkFBQSxDQUFBTCxPQUFBO0FBQ0EsSUFBQVMsT0FBQSxHQUFBVCxPQUFBO0FBRUEsSUFBQVUsS0FBQSxHQUFBVixPQUFBO0FBQXFDLFNBQUFXLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLHFCQUFBRSxDQUFBLFFBQUFHLEtBQUEsQ0FBQUMsT0FBQSxDQUFBTixDQUFBLE1BQUFFLENBQUEsR0FBQUssMkJBQUEsQ0FBQVAsQ0FBQSxNQUFBQyxDQUFBLElBQUFELENBQUEsdUJBQUFBLENBQUEsQ0FBQVEsTUFBQSxJQUFBTixDQUFBLEtBQUFGLENBQUEsR0FBQUUsQ0FBQSxPQUFBTyxFQUFBLE1BQUFDLENBQUEsWUFBQUEsRUFBQSxlQUFBQyxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQSxFQUFBLFdBQUFILEVBQUEsSUFBQVQsQ0FBQSxDQUFBUSxNQUFBLEtBQUFLLElBQUEsV0FBQUEsSUFBQSxNQUFBQyxLQUFBLEVBQUFkLENBQUEsQ0FBQVMsRUFBQSxVQUFBUixDQUFBLFdBQUFBLEVBQUFELENBQUEsVUFBQUEsQ0FBQSxLQUFBZSxDQUFBLEVBQUFMLENBQUEsZ0JBQUFNLFNBQUEsaUpBQUFDLENBQUEsRUFBQUMsQ0FBQSxPQUFBQyxDQUFBLGdCQUFBUixDQUFBLFdBQUFBLEVBQUEsSUFBQVQsQ0FBQSxHQUFBQSxDQUFBLENBQUFrQixJQUFBLENBQUFwQixDQUFBLE1BQUFZLENBQUEsV0FBQUEsRUFBQSxRQUFBWixDQUFBLEdBQUFFLENBQUEsQ0FBQW1CLElBQUEsV0FBQUgsQ0FBQSxHQUFBbEIsQ0FBQSxDQUFBYSxJQUFBLEVBQUFiLENBQUEsS0FBQUMsQ0FBQSxXQUFBQSxFQUFBRCxDQUFBLElBQUFtQixDQUFBLE9BQUFGLENBQUEsR0FBQWpCLENBQUEsS0FBQWUsQ0FBQSxXQUFBQSxFQUFBLFVBQUFHLENBQUEsWUFBQWhCLENBQUEsY0FBQUEsQ0FBQSw4QkFBQWlCLENBQUEsUUFBQUYsQ0FBQTtBQUFBLFNBQUFWLDRCQUFBUCxDQUFBLEVBQUFrQixDQUFBLFFBQUFsQixDQUFBLDJCQUFBQSxDQUFBLFNBQUFzQixpQkFBQSxDQUFBdEIsQ0FBQSxFQUFBa0IsQ0FBQSxPQUFBaEIsQ0FBQSxNQUFBcUIsUUFBQSxDQUFBSCxJQUFBLENBQUFwQixDQUFBLEVBQUF3QixLQUFBLDZCQUFBdEIsQ0FBQSxJQUFBRixDQUFBLENBQUF5QixXQUFBLEtBQUF2QixDQUFBLEdBQUFGLENBQUEsQ0FBQXlCLFdBQUEsQ0FBQUMsSUFBQSxhQUFBeEIsQ0FBQSxjQUFBQSxDQUFBLEdBQUFHLEtBQUEsQ0FBQXNCLElBQUEsQ0FBQTNCLENBQUEsb0JBQUFFLENBQUEsK0NBQUEwQixJQUFBLENBQUExQixDQUFBLElBQUFvQixpQkFBQSxDQUFBdEIsQ0FBQSxFQUFBa0IsQ0FBQTtBQUFBLFNBQUFJLGtCQUFBdEIsQ0FBQSxFQUFBa0IsQ0FBQSxhQUFBQSxDQUFBLElBQUFBLENBQUEsR0FBQWxCLENBQUEsQ0FBQVEsTUFBQSxNQUFBVSxDQUFBLEdBQUFsQixDQUFBLENBQUFRLE1BQUEsWUFBQVAsQ0FBQSxNQUFBVyxDQUFBLEdBQUFQLEtBQUEsQ0FBQWEsQ0FBQSxHQUFBakIsQ0FBQSxHQUFBaUIsQ0FBQSxFQUFBakIsQ0FBQSxJQUFBVyxDQUFBLENBQUFYLENBQUEsSUFBQUQsQ0FBQSxDQUFBQyxDQUFBLFVBQUFXLENBQUE7QUFBQSxTQUFBaUIsV0FBQTNCLENBQUEsRUFBQWUsQ0FBQSxFQUFBaEIsQ0FBQSxXQUFBZ0IsQ0FBQSxPQUFBYSxnQkFBQSxhQUFBYixDQUFBLE9BQUFjLDJCQUFBLGFBQUE3QixDQUFBLEVBQUE4Qix5QkFBQSxLQUFBQyxPQUFBLENBQUFDLFNBQUEsQ0FBQWpCLENBQUEsRUFBQWhCLENBQUEsWUFBQTZCLGdCQUFBLGFBQUE1QixDQUFBLEVBQUF1QixXQUFBLElBQUFSLENBQUEsQ0FBQWtCLEtBQUEsQ0FBQWpDLENBQUEsRUFBQUQsQ0FBQTtBQUFBLFNBQUErQiwwQkFBQSxjQUFBOUIsQ0FBQSxJQUFBa0MsT0FBQSxDQUFBQyxTQUFBLENBQUFDLE9BQUEsQ0FBQWxCLElBQUEsQ0FBQWEsT0FBQSxDQUFBQyxTQUFBLENBQUFFLE9BQUEsaUNBQUFsQyxDQUFBLGFBQUE4Qix5QkFBQSxZQUFBQSwwQkFBQSxhQUFBOUIsQ0FBQTtBQUFBLFNBQUFxQyxjQUFBckMsQ0FBQSxFQUFBRCxDQUFBLEVBQUFELENBQUEsRUFBQWlCLENBQUEsUUFBQXVCLENBQUEsT0FBQUMsS0FBQSxpQkFBQVgsZ0JBQUEsaUJBQUFiLENBQUEsR0FBQWYsQ0FBQSxDQUFBbUMsU0FBQSxHQUFBbkMsQ0FBQSxHQUFBRCxDQUFBLEVBQUFELENBQUEsY0FBQWlCLENBQUEsYUFBQWYsQ0FBQSxXQUFBc0MsQ0FBQSxDQUFBTCxLQUFBLENBQUFuQyxDQUFBLEVBQUFFLENBQUEsT0FBQXNDLENBQUE7QUFBQSxTQUFBRSxRQUFBekMsQ0FBQSxFQUFBRCxDQUFBLFFBQUFFLENBQUEsR0FBQXlDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBM0MsQ0FBQSxPQUFBMEMsTUFBQSxDQUFBRSxxQkFBQSxRQUFBNUIsQ0FBQSxHQUFBMEIsTUFBQSxDQUFBRSxxQkFBQSxDQUFBNUMsQ0FBQSxHQUFBRCxDQUFBLEtBQUFpQixDQUFBLEdBQUFBLENBQUEsQ0FBQTZCLE1BQUEsV0FBQTlDLENBQUEsV0FBQTJDLE1BQUEsQ0FBQUksd0JBQUEsQ0FBQTlDLENBQUEsRUFBQUQsQ0FBQSxFQUFBZ0QsVUFBQSxPQUFBOUMsQ0FBQSxDQUFBK0MsSUFBQSxDQUFBZCxLQUFBLENBQUFqQyxDQUFBLEVBQUFlLENBQUEsWUFBQWYsQ0FBQTtBQUFBLFNBQUFnRCxjQUFBakQsQ0FBQSxhQUFBRCxDQUFBLE1BQUFBLENBQUEsR0FBQW1ELFNBQUEsQ0FBQTNDLE1BQUEsRUFBQVIsQ0FBQSxVQUFBRSxDQUFBLFdBQUFpRCxTQUFBLENBQUFuRCxDQUFBLElBQUFtRCxTQUFBLENBQUFuRCxDQUFBLFFBQUFBLENBQUEsT0FBQTBDLE9BQUEsQ0FBQUMsTUFBQSxDQUFBekMsQ0FBQSxPQUFBa0QsT0FBQSxXQUFBcEQsQ0FBQSxRQUFBcUQsZ0JBQUEsYUFBQXBELENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLENBQUFGLENBQUEsU0FBQTJDLE1BQUEsQ0FBQVcseUJBQUEsR0FBQVgsTUFBQSxDQUFBWSxnQkFBQSxDQUFBdEQsQ0FBQSxFQUFBMEMsTUFBQSxDQUFBVyx5QkFBQSxDQUFBcEQsQ0FBQSxLQUFBd0MsT0FBQSxDQUFBQyxNQUFBLENBQUF6QyxDQUFBLEdBQUFrRCxPQUFBLFdBQUFwRCxDQUFBLElBQUEyQyxNQUFBLENBQUFhLGNBQUEsQ0FBQXZELENBQUEsRUFBQUQsQ0FBQSxFQUFBMkMsTUFBQSxDQUFBSSx3QkFBQSxDQUFBN0MsQ0FBQSxFQUFBRixDQUFBLGlCQUFBQyxDQUFBLElBZHJDO0FBQ0E7QUFlQSxJQUFNd0QsWUFBWSxHQUFBUCxhQUFBLENBQUFBLGFBQUEsS0FDYlEsbUJBQVcsQ0FBQ0QsWUFBWTtFQUMzQkUsT0FBTyxFQUFFO0lBQUNDLElBQUksRUFBRSxPQUFPO0lBQUU5QyxLQUFLLEVBQUUsRUFBRTtJQUFFK0MsT0FBTyxFQUFFO0VBQUksQ0FBQztFQUNsREMsTUFBTSxFQUFFO0lBQUNGLElBQUksRUFBRSxRQUFRO0lBQUU5QyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQUUrQyxPQUFPLEVBQUU7RUFBSSxDQUFDO0VBQ2xERSxXQUFXLEVBQUU7SUFBQ0gsSUFBSSxFQUFFLFFBQVE7SUFBRTlDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFBRStDLE9BQU8sRUFBRTtFQUFJO0FBQUMsRUFDeEQ7QUFBQyxJQUVtQkcsV0FBVyxHQUFBQyxPQUFBLHFDQUFBQyxZQUFBO0VBQUEsU0FBQUYsWUFBQTtJQUFBLElBQUFHLGdCQUFBLG1CQUFBSCxXQUFBO0lBQUEsT0FBQW5DLFVBQUEsT0FBQW1DLFdBQUEsRUFBQWIsU0FBQTtFQUFBO0VBQUEsSUFBQWlCLFVBQUEsYUFBQUosV0FBQSxFQUFBRSxZQUFBO0VBQUEsV0FBQUcsYUFBQSxhQUFBTCxXQUFBO0lBQUFNLEdBQUE7SUFBQXhELEtBQUEsRUFLOUIsU0FBQXlELGVBQWVBLENBQUEsRUFBUztNQUN0QixJQUFPQyxFQUFFLEdBQUksSUFBSSxDQUFDQyxPQUFPLENBQWxCRCxFQUFFO01BQ1QsSUFBTUUsY0FBYyxHQUFHQyxzQkFBYyxDQUFDQyx3QkFBd0IsQ0FBQ0osRUFBRSxDQUFDO01BRWxFLElBQU1LLE1BQU0sR0FBRyx5REFBeUQ7TUFDeEUsSUFBTUMsTUFBTSxHQUFHLHlEQUF5RDs7TUFFeEU7TUFDQTtNQUNBO01BQ0E7TUFDQSxJQUFJLENBQUNKLGNBQWMsQ0FBQ0ssY0FBYyxDQUFDQyxRQUFRLENBQUNILE1BQU0sQ0FBQyxFQUFFO1FBQ25ESCxjQUFjLENBQUNPLGFBQWEsQ0FBQ0osTUFBTSxDQUFDO01BQ3RDO01BQ0EsSUFBSSxDQUFDSCxjQUFjLENBQUNLLGNBQWMsQ0FBQ0MsUUFBUSxDQUFDRixNQUFNLENBQUMsRUFBRTtRQUNuREosY0FBYyxDQUFDTyxhQUFhLENBQUNILE1BQU0sQ0FBQztNQUN0Qzs7TUFFQTtNQUNBO01BQ0EsSUFBSSxDQUFDSSxRQUFRLENBQUM7UUFBQ3BCLE1BQU0sRUFBRSxDQUFDO01BQUMsQ0FBQyxDQUFDO01BRTNCdkIsYUFBQSxDQUFBeUIsV0FBQTtJQUNGO0VBQUM7SUFBQU0sR0FBQTtJQUFBeEQsS0FBQSxFQUVELFNBQUFxRSxJQUFJQSxDQUFBQyxJQUFBLEVBQXFEO01BQUEsSUFBbkRDLFFBQVEsR0FBQUQsSUFBQSxDQUFSQyxRQUFRO01BQ1osSUFBQUMsV0FBQSxHQUFzRCxJQUFJLENBQUNDLEtBQUs7UUFBekRDLEtBQUssR0FBQUYsV0FBQSxDQUFMRSxLQUFLO1FBQUUxQixNQUFNLEdBQUF3QixXQUFBLENBQU54QixNQUFNO1FBQUUyQixvQkFBb0IsR0FBQUgsV0FBQSxDQUFwQkcsb0JBQW9CO1FBQUVDLE1BQU0sR0FBQUosV0FBQSxDQUFOSSxNQUFNO01BQ2xELElBQUFDLFdBQUEsR0FBK0QsSUFBSSxDQUFDQyxLQUFLO1FBQWxFQyxVQUFVLEdBQUFGLFdBQUEsQ0FBVkUsVUFBVTtRQUFFQyxnQkFBZ0IsR0FBQUgsV0FBQSxDQUFoQkcsZ0JBQWdCO1FBQUVDLFNBQVMsR0FBQUosV0FBQSxDQUFUSSxTQUFTO1FBQUVoQyxXQUFXLEdBQUE0QixXQUFBLENBQVg1QixXQUFXOztNQUUzRDtNQUNBLElBQ0UsQ0FBQ3lCLEtBQUssSUFDTixDQUFDMUIsTUFBTSxJQUNQbkIsTUFBTSxDQUFDQyxJQUFJLENBQUNrQixNQUFNLENBQUMsQ0FBQ3RELE1BQU0sS0FBSyxDQUFDLElBQ2hDLENBQUNtQyxNQUFNLENBQUNxRCxNQUFNLENBQUNsQyxNQUFNLENBQUMsQ0FBQ21DLEtBQUssQ0FBQyxVQUFBQyxJQUFJO1FBQUEsT0FBSUEsSUFBSTtNQUFBLEVBQUMsRUFDMUM7UUFDQTtNQUNGO01BRUFWLEtBQUssQ0FDRlcsV0FBVyxDQUFBakQsYUFBQSxDQUFBQSxhQUFBLEtBQ1BtQyxRQUFRO1FBQ1hRLFVBQVUsRUFBVkEsVUFBVTtRQUNWQyxnQkFBZ0IsRUFBRUEsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsdUJBQWhCQSxnQkFBZ0IsQ0FBRU0sR0FBRyxDQUFDLFVBQUFDLENBQUM7VUFBQSxPQUFLQSxDQUFDLEdBQUdBLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUFBLENBQUMsQ0FBQztRQUMvRE4sU0FBUyxFQUFFQSxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRXZFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM0RSxHQUFHLENBQUMsVUFBQUMsQ0FBQztVQUFBLE9BQUlBLENBQUMsR0FBRyxHQUFHO1FBQUEsRUFBQztRQUNuRFosb0JBQW9CLEVBQXBCQSxvQkFBb0I7UUFDcEJDLE1BQU0sRUFBTkE7TUFBTSxFQUNQLENBQUMsQ0FDRFksb0JBQW9CLENBQUFwRCxhQUFBLENBQUFBLGFBQUEsS0FDaEJhLFdBQVcsR0FDWEQsTUFBTSxDQUNWLENBQUMsQ0FDRHFCLElBQUksQ0FBQyxDQUFDO0lBQ1g7RUFBQztJQUFBYixHQUFBO0lBQUF4RCxLQUFBLEVBRUQsU0FBQXlGLFVBQVVBLENBQUEsRUFBUTtNQUNoQixJQUFPL0IsRUFBRSxHQUFJLElBQUksQ0FBQ0MsT0FBTyxDQUFsQkQsRUFBRTtNQUNULElBQUFnQyxtQkFBQSxHQUF1QixJQUFJLENBQUNaLEtBQUssQ0FBMUJqQyxPQUFPO1FBQVBBLE9BQU8sR0FBQTZDLG1CQUFBLGNBQUcsRUFBRSxHQUFBQSxtQkFBQTtNQUNuQixJQUFNQyxNQUFNLEdBQUcsSUFBQUMsY0FBUSxFQUFDbEMsRUFBRSxDQUFDOztNQUUzQjtNQUNBO01BQ0E7TUFBQSxJQUFBbUMsU0FBQSxHQUFBNUcsMEJBQUEsQ0FDcUI0RCxPQUFPO1FBQUFpRCxLQUFBO01BQUE7UUFBNUIsS0FBQUQsU0FBQSxDQUFBaEcsQ0FBQSxNQUFBaUcsS0FBQSxHQUFBRCxTQUFBLENBQUEvRixDQUFBLElBQUFDLElBQUEsR0FBOEI7VUFBQSxJQUFuQmdHLE1BQU0sR0FBQUQsS0FBQSxDQUFBOUYsS0FBQTtVQUNmK0YsTUFBTSxDQUFDQyxFQUFFLEdBQUdMLE1BQU0sR0FBR0ksTUFBTSxDQUFDRSxHQUFHLElBQUlGLE1BQU0sQ0FBQ0MsRUFBRSxHQUFHRCxNQUFNLENBQUNHLEdBQUcsSUFBSUgsTUFBTSxDQUFDQyxFQUFFOztVQUV0RTtVQUNBLElBQUksQ0FBQ0wsTUFBTSxJQUFJSSxNQUFNLENBQUNJLE9BQU8sRUFBRTtZQUM3QkosTUFBTSxDQUFDSSxPQUFPLENBQUNDLFlBQVksR0FBRyxXQUFXO1VBQzNDO1FBQ0Y7TUFBQyxTQUFBQyxHQUFBO1FBQUFSLFNBQUEsQ0FBQTFHLENBQUEsQ0FBQWtILEdBQUE7TUFBQTtRQUFBUixTQUFBLENBQUE1RixDQUFBO01BQUE7TUFFRCxPQUFBbUMsYUFBQSxDQUFBQSxhQUFBLEtBQUFYLGFBQUEsQ0FBQXlCLFdBQUE7UUFFRW9ELEVBQUUsRUFBRVgsTUFBTSxHQUFHWSw2QkFBUSxHQUFHQyw2QkFBUTtRQUNoQ1IsRUFBRSxFQUFFTCxNQUFNLEdBQUdjLDZCQUFRLEdBQUdDLDRCQUFRO1FBQ2hDN0QsT0FBTyxHQUFHOEQsZ0JBQVMsRUFBQUMsTUFBQSxLQUFBQyxtQkFBQSxhQUFLaEUsT0FBTztNQUFDO0lBRXBDOztJQUVBO0VBQUE7SUFBQVcsR0FBQTtJQUFBeEQsS0FBQSxFQUNBLFNBQUE4RyxXQUFXQSxDQUFDQyxNQUE0RCxFQUFRO01BQzlFLElBQU9qQyxLQUFLLEdBQTJCaUMsTUFBTSxDQUF0Q2pDLEtBQUs7UUFBRWtDLFFBQVEsR0FBaUJELE1BQU0sQ0FBL0JDLFFBQVE7UUFBRUMsV0FBVyxHQUFJRixNQUFNLENBQXJCRSxXQUFXO01BQ25DLElBQU1wRSxPQUFPLEdBQUdpQyxLQUFLLElBQUlBLEtBQUssQ0FBQ2pDLE9BQU87TUFDdEMsSUFBTXFFLFVBQVUsR0FBR0YsUUFBUSxJQUFJQSxRQUFRLENBQUNuRSxPQUFPOztNQUUvQztNQUNBO01BQ0EsSUFBSW9FLFdBQVcsQ0FBQ0UsaUJBQWlCLElBQUksQ0FBQyxJQUFBQyxrQkFBWSxFQUFDdkUsT0FBTyxFQUFFcUUsVUFBVSxDQUFDLEVBQUU7UUFBQSxJQUFBRyxpQkFBQSxFQUFBQyxxQkFBQTtRQUN2RSxJQUFPNUQsRUFBRSxHQUFJLElBQUksQ0FBQ0MsT0FBTyxDQUFsQkQsRUFBRTtRQUNULENBQUEyRCxpQkFBQSxPQUFJLENBQUM1QyxLQUFLLENBQUNDLEtBQUssY0FBQTJDLGlCQUFBLGVBQWhCQSxpQkFBQSxVQUF3QixDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDNUMsS0FBSyxDQUFDQyxLQUFLLEdBQUcsSUFBSSxDQUFDNkMsU0FBUyxDQUFDN0QsRUFBRSxDQUFDO1FBQ3JDLENBQUE0RCxxQkFBQSxPQUFJLENBQUNFLG1CQUFtQixDQUFDLENBQUMsY0FBQUYscUJBQUEsZUFBMUJBLHFCQUFBLENBQTRCRyxhQUFhLENBQUMsQ0FBQztNQUM3QztNQUVBLElBQUkzQyxLQUFLLElBQUlBLEtBQUssQ0FBQzlCLE1BQU0sRUFBRTtRQUN6QixJQUFJLENBQUMwRSxZQUFZLENBQUM7VUFBQzVDLEtBQUssRUFBTEEsS0FBSztVQUFFa0MsUUFBUSxFQUFSQTtRQUFRLENBQUMsQ0FBQztNQUN0QztNQUVBLElBQU1XLGdCQUFnQixHQUFHLElBQUksQ0FBQ0gsbUJBQW1CLENBQUMsQ0FBQztNQUVuRCxJQUFJMUMsS0FBSyxDQUFDRixNQUFNLEtBQUtvQyxRQUFRLENBQUNwQyxNQUFNLEVBQUU7UUFBQSxJQUFBZ0Qsa0JBQUE7UUFDcEMsSUFBTUMsT0FBTyxHQUFHLElBQUksQ0FBQ3BELEtBQUssQ0FBQ3FELElBQUk7UUFDL0IsSUFBTUEsSUFBSSxHQUFHLElBQUksQ0FBQ0MsV0FBVyxDQUFDLENBQUM7UUFDL0IsQ0FBQUgsa0JBQUEsT0FBSSxDQUFDbkQsS0FBSyxDQUFDQyxLQUFLLGNBQUFrRCxrQkFBQSxlQUFoQkEsa0JBQUEsQ0FBa0JJLGNBQWMsQ0FBQ0YsSUFBSSxDQUFDRyxXQUFXLENBQUM7UUFDbEQsS0FBSyxJQUFNekUsR0FBRyxJQUFJc0UsSUFBSSxFQUFFO1VBQ3RCLElBQUlELE9BQU8sSUFBSUEsT0FBTyxDQUFDckUsR0FBRyxDQUFDLEtBQUtzRSxJQUFJLENBQUN0RSxHQUFHLENBQUMsRUFBRTtZQUN6Q21FLGdCQUFnQixhQUFoQkEsZ0JBQWdCLGVBQWhCQSxnQkFBZ0IsQ0FBRU8sVUFBVSxDQUFDMUUsR0FBRyxDQUFDO1VBQ25DO1FBQ0Y7UUFDQSxJQUFJLENBQUNZLFFBQVEsQ0FBQWhDLGFBQUE7VUFBRTBGLElBQUksRUFBSkE7UUFBSSxHQUFLLElBQUksQ0FBQ0ssc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDekQsQ0FBQyxNQUFNLElBQUlyRCxLQUFLLENBQUNzRCxzQkFBc0IsS0FBS3BCLFFBQVEsQ0FBQ29CLHNCQUFzQixFQUFFO1FBQzNFLElBQUksQ0FBQ2hFLFFBQVEsQ0FBQyxJQUFJLENBQUMrRCxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7TUFDOUM7SUFDRjtFQUFDO0lBQUEzRSxHQUFBO0lBQUF4RCxLQUFBLEVBRUQsU0FBQTBILFlBQVlBLENBQUFXLEtBQUEsRUFNSDtNQUFBLElBTFB2RCxLQUFLLEdBQUF1RCxLQUFBLENBQUx2RCxLQUFLO1FBQ0xrQyxRQUFRLEdBQUFxQixLQUFBLENBQVJyQixRQUFRO01BS1IsSUFBT2hFLE1BQU0sR0FBSSxJQUFJLENBQUN5QixLQUFLLENBQXBCekIsTUFBTTtNQUNiLElBQU9VLEVBQUUsR0FBSSxJQUFJLENBQUNDLE9BQU8sQ0FBbEJELEVBQUU7TUFFVCxJQUFNNEUsU0FBUyxHQUFHLElBQUFDLGtCQUFVLEVBQUM7UUFDM0I3RSxFQUFFLEVBQUZBLEVBQUU7UUFDRlYsTUFBTSxFQUFOQSxNQUFNO1FBQ053RixVQUFVLEVBQUUxRCxLQUFLLENBQUM5QixNQUFNO1FBQ3hCeUYsYUFBYSxFQUFFekIsUUFBUSxDQUFDaEU7TUFDMUIsQ0FBQyxDQUFDO01BQ0YsSUFBSXNGLFNBQVMsRUFBRTtRQUNiLElBQUksQ0FBQ2xFLFFBQVEsQ0FBQztVQUFDcEIsTUFBTSxFQUFFc0Y7UUFBUyxDQUFDLENBQUM7TUFDcEM7SUFDRjtFQUFDO0lBQUE5RSxHQUFBO0lBQUF4RCxLQUFBLEVBRUQsU0FBQTBJLGFBQWFBLENBQUEsRUFBUztNQUNwQmpILGFBQUEsQ0FBQXlCLFdBQUEsNkJBQW9CLElBQUksQ0FBQ1MsT0FBTztNQUVoQyxJQUFJLElBQUksQ0FBQ2MsS0FBSyxDQUFDekIsTUFBTSxFQUFFO1FBQ3JCLFNBQUEyRixFQUFBLE1BQUFDLGNBQUEsR0FBb0IvRyxNQUFNLENBQUNxRCxNQUFNLENBQUMsSUFBSSxDQUFDVCxLQUFLLENBQUN6QixNQUFNLENBQUMsRUFBQTJGLEVBQUEsR0FBQUMsY0FBQSxDQUFBbEosTUFBQSxFQUFBaUosRUFBQSxJQUFFO1VBQWpELElBQU1FLEtBQUssR0FBQUQsY0FBQSxDQUFBRCxFQUFBO1VBQ2QsSUFBSXBKLEtBQUssQ0FBQ0MsT0FBTyxDQUFDcUosS0FBSyxDQUFDLEVBQUU7WUFDeEJBLEtBQUssQ0FBQ3ZELEdBQUcsQ0FBQyxVQUFBQyxDQUFDO2NBQUEsT0FBSUEsQ0FBQyxJQUFJQSxDQUFDLFVBQU8sQ0FBQyxDQUFDO1lBQUEsRUFBQztVQUNqQyxDQUFDLE1BQU0sSUFBSXNELEtBQUssRUFBRTtZQUNoQkEsS0FBSyxVQUFPLENBQUMsQ0FBQztVQUNoQjtRQUNGO01BQ0Y7SUFDRjtFQUFDO0FBQUEsRUExSnNDakcsbUJBQVc7QUE2SnBETSxXQUFXLENBQUNQLFlBQVksR0FBR0EsWUFBWTtBQUN2Q08sV0FBVyxDQUFDNEYsU0FBUyxHQUFHLGFBQWEiLCJpZ25vcmVMaXN0IjpbXX0=
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.shouldComposeModelMatrix = shouldComposeModelMatrix;
|
7
|
+
var _typed = require("@deck.gl/core/typed");
|
8
|
+
// SPDX-License-Identifier: MIT
|
9
|
+
// Copyright contributors to the kepler.gl project
|
10
|
+
|
11
|
+
// only apply composeModelMatrix when in cartesian or meter_offsets coordinate system
|
12
|
+
// with `composeModelMatrix` enabled, the rotation part of the layer's modelMatrix will be composed to instance's transformations
|
13
|
+
// since rotating latitude and longitude can not provide meaningful results, hence `composeModelMatrix` is disabled
|
14
|
+
// when in LNGLAT and LNGLAT_OFFSET coordinates.
|
15
|
+
function shouldComposeModelMatrix(viewport, coordinateSystem) {
|
16
|
+
return coordinateSystem === _typed.COORDINATE_SYSTEM.CARTESIAN || coordinateSystem === _typed.COORDINATE_SYSTEM.METER_OFFSETS || coordinateSystem === _typed.COORDINATE_SYSTEM.DEFAULT && !viewport.isGeospatial;
|
17
|
+
}
|
18
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwic2hvdWxkQ29tcG9zZU1vZGVsTWF0cml4Iiwidmlld3BvcnQiLCJjb29yZGluYXRlU3lzdGVtIiwiQ09PUkRJTkFURV9TWVNURU0iLCJDQVJURVNJQU4iLCJNRVRFUl9PRkZTRVRTIiwiREVGQVVMVCIsImlzR2Vvc3BhdGlhbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yYXN0ZXIvcmFzdGVyLW1lc2gtbGF5ZXIvbWF0cml4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7Q09PUkRJTkFURV9TWVNURU0sIFZpZXdwb3J0LCBDb29yZGluYXRlU3lzdGVtfSBmcm9tICdAZGVjay5nbC9jb3JlL3R5cGVkJztcblxuLy8gb25seSBhcHBseSBjb21wb3NlTW9kZWxNYXRyaXggd2hlbiBpbiBjYXJ0ZXNpYW4gb3IgbWV0ZXJfb2Zmc2V0cyBjb29yZGluYXRlIHN5c3RlbVxuLy8gd2l0aCBgY29tcG9zZU1vZGVsTWF0cml4YCBlbmFibGVkLCB0aGUgcm90YXRpb24gcGFydCBvZiB0aGUgbGF5ZXIncyBtb2RlbE1hdHJpeCB3aWxsIGJlIGNvbXBvc2VkIHRvIGluc3RhbmNlJ3MgdHJhbnNmb3JtYXRpb25zXG4vLyBzaW5jZSByb3RhdGluZyBsYXRpdHVkZSBhbmQgbG9uZ2l0dWRlIGNhbiBub3QgcHJvdmlkZSBtZWFuaW5nZnVsIHJlc3VsdHMsIGhlbmNlIGBjb21wb3NlTW9kZWxNYXRyaXhgIGlzIGRpc2FibGVkXG4vLyB3aGVuIGluIExOR0xBVCBhbmQgTE5HTEFUX09GRlNFVCBjb29yZGluYXRlcy5cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRDb21wb3NlTW9kZWxNYXRyaXgoXG4gIHZpZXdwb3J0OiBWaWV3cG9ydCxcbiAgY29vcmRpbmF0ZVN5c3RlbTogQ29vcmRpbmF0ZVN5c3RlbVxuKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgY29vcmRpbmF0ZVN5c3RlbSA9PT0gQ09PUkRJTkFURV9TWVNURU0uQ0FSVEVTSUFOIHx8XG4gICAgY29vcmRpbmF0ZVN5c3RlbSA9PT0gQ09PUkRJTkFURV9TWVNURU0uTUVURVJfT0ZGU0VUUyB8fFxuICAgIChjb29yZGluYXRlU3lzdGVtID09PSBDT09SRElOQVRFX1NZU1RFTS5ERUZBVUxUICYmICF2aWV3cG9ydC5pc0dlb3NwYXRpYWwpXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUhBO0FBQ0E7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQyx3QkFBd0JBLENBQ3RDQyxRQUFrQixFQUNsQkMsZ0JBQWtDLEVBQ3pCO0VBQ1QsT0FDRUEsZ0JBQWdCLEtBQUtDLHdCQUFpQixDQUFDQyxTQUFTLElBQ2hERixnQkFBZ0IsS0FBS0Msd0JBQWlCLENBQUNFLGFBQWEsSUFDbkRILGdCQUFnQixLQUFLQyx3QkFBaUIsQ0FBQ0csT0FBTyxJQUFJLENBQUNMLFFBQVEsQ0FBQ00sWUFBYTtBQUU5RSIsImlnbm9yZUxpc3QiOltdfQ==
|
@@ -0,0 +1,2 @@
|
|
1
|
+
declare const _default: "#define SHADER_NAME raster-mesh-layer-fs\n\nprecision highp float;\n\nuniform bool hasTexture;\n\nuniform bool flatShading;\nuniform float opacity;\n\nvarying vec2 vTexCoord;\nvarying vec3 cameraPosition;\nvarying vec3 normals_commonspace;\nvarying vec4 position_commonspace;\nvarying vec4 vColor;\n\nvoid main(void) {\n geometry.uv = vTexCoord;\n vec4 image;\n DECKGL_CREATE_COLOR(image, vTexCoord);\n\n DECKGL_MUTATE_COLOR(image, vTexCoord);\n\n vec3 normal;\n if (flatShading) {\n\n// This is necessary because\n// headless.gl reports the extension as\n// available but does not support it in\n// the shader.\n#ifdef DERIVATIVES_AVAILABLE\n normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\n#else\n normal = vec3(0.0, 0.0, 1.0);\n#endif\n } else {\n normal = normals_commonspace;\n }\n\n vec3 lightColor = lighting_getLightColor(image.rgb, cameraPosition, position_commonspace.xyz, normal);\n gl_FragColor = vec4(lightColor, opacity);\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n";
|
2
|
+
export default _default;
|
@@ -0,0 +1,10 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports["default"] = void 0;
|
7
|
+
// SPDX-License-Identifier: MIT
|
8
|
+
// Copyright contributors to the kepler.gl project
|
9
|
+
var _default = exports["default"] = "#define SHADER_NAME raster-mesh-layer-fs\n\nprecision highp float;\n\nuniform bool hasTexture;\n\nuniform bool flatShading;\nuniform float opacity;\n\nvarying vec2 vTexCoord;\nvarying vec3 cameraPosition;\nvarying vec3 normals_commonspace;\nvarying vec4 position_commonspace;\nvarying vec4 vColor;\n\nvoid main(void) {\n geometry.uv = vTexCoord;\n vec4 image;\n DECKGL_CREATE_COLOR(image, vTexCoord);\n\n DECKGL_MUTATE_COLOR(image, vTexCoord);\n\n vec3 normal;\n if (flatShading) {\n\n// This is necessary because\n// headless.gl reports the extension as\n// available but does not support it in\n// the shader.\n#ifdef DERIVATIVES_AVAILABLE\n normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\n#else\n normal = vec3(0.0, 0.0, 1.0);\n#endif\n } else {\n normal = normals_commonspace;\n }\n\n vec3 lightColor = lighting_getLightColor(image.rgb, cameraPosition, position_commonspace.xyz, normal);\n gl_FragColor = vec4(lightColor, opacity);\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n";
|
10
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmFzdGVyL3Jhc3Rlci1tZXNoLWxheWVyL3Jhc3Rlci1tZXNoLWxheWVyLXdlYmdsMS5mcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5leHBvcnQgZGVmYXVsdCBgXFxcbiNkZWZpbmUgU0hBREVSX05BTUUgcmFzdGVyLW1lc2gtbGF5ZXItZnNcblxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuXG51bmlmb3JtIGJvb2wgaGFzVGV4dHVyZTtcblxudW5pZm9ybSBib29sIGZsYXRTaGFkaW5nO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuXG52YXJ5aW5nIHZlYzIgdlRleENvb3JkO1xudmFyeWluZyB2ZWMzIGNhbWVyYVBvc2l0aW9uO1xudmFyeWluZyB2ZWMzIG5vcm1hbHNfY29tbW9uc3BhY2U7XG52YXJ5aW5nIHZlYzQgcG9zaXRpb25fY29tbW9uc3BhY2U7XG52YXJ5aW5nIHZlYzQgdkNvbG9yO1xuXG52b2lkIG1haW4odm9pZCkge1xuICBnZW9tZXRyeS51diA9IHZUZXhDb29yZDtcbiAgdmVjNCBpbWFnZTtcbiAgREVDS0dMX0NSRUFURV9DT0xPUihpbWFnZSwgdlRleENvb3JkKTtcblxuICBERUNLR0xfTVVUQVRFX0NPTE9SKGltYWdlLCB2VGV4Q29vcmQpO1xuXG4gIHZlYzMgbm9ybWFsO1xuICBpZiAoZmxhdFNoYWRpbmcpIHtcblxuLy8gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZVxuLy8gaGVhZGxlc3MuZ2wgcmVwb3J0cyB0aGUgZXh0ZW5zaW9uIGFzXG4vLyBhdmFpbGFibGUgYnV0IGRvZXMgbm90IHN1cHBvcnQgaXQgaW5cbi8vIHRoZSBzaGFkZXIuXG4jaWZkZWYgREVSSVZBVElWRVNfQVZBSUxBQkxFXG4gICAgbm9ybWFsID0gbm9ybWFsaXplKGNyb3NzKGRGZHgocG9zaXRpb25fY29tbW9uc3BhY2UueHl6KSwgZEZkeShwb3NpdGlvbl9jb21tb25zcGFjZS54eXopKSk7XG4jZWxzZVxuICAgIG5vcm1hbCA9IHZlYzMoMC4wLCAwLjAsIDEuMCk7XG4jZW5kaWZcbiAgfSBlbHNlIHtcbiAgICBub3JtYWwgPSBub3JtYWxzX2NvbW1vbnNwYWNlO1xuICB9XG5cbiAgdmVjMyBsaWdodENvbG9yID0gbGlnaHRpbmdfZ2V0TGlnaHRDb2xvcihpbWFnZS5yZ2IsIGNhbWVyYVBvc2l0aW9uLCBwb3NpdGlvbl9jb21tb25zcGFjZS54eXosIG5vcm1hbCk7XG4gIGdsX0ZyYWdDb2xvciA9IHZlYzQobGlnaHRDb2xvciwgb3BhY2l0eSk7XG5cbiAgREVDS0dMX0ZJTFRFUl9DT0xPUihnbF9GcmFnQ29sb3IsIGdlb21ldHJ5KTtcbn1cbmA7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
@@ -0,0 +1,2 @@
|
|
1
|
+
declare const _default: "#define SHADER_NAME raster-mesh-layer-vs\n\n// Scale the model\nuniform float sizeScale;\nuniform bool composeModelMatrix;\n\n// Primitive attributes\nattribute vec3 positions;\nattribute vec3 normals;\nattribute vec3 colors;\nattribute vec2 texCoords;\n\n// Instance attributes\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\nattribute mat3 instanceModelMatrix;\nattribute vec3 instanceTranslation;\n\n// Outputs to fragment shader\nvarying vec2 vTexCoord;\nvarying vec3 cameraPosition;\nvarying vec3 normals_commonspace;\nvarying vec4 position_commonspace;\nvarying vec4 vColor;\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = texCoords;\n geometry.pickingColor = instancePickingColors;\n\n vTexCoord = texCoords;\n cameraPosition = project_uCameraPosition;\n normals_commonspace = project_normal(instanceModelMatrix * normals);\n vColor = vec4(colors * instanceColors.rgb, instanceColors.a);\n geometry.normal = normals_commonspace;\n\n vec3 pos = (instanceModelMatrix * positions) * sizeScale + instanceTranslation;\n\n if (composeModelMatrix) {\n DECKGL_FILTER_SIZE(pos, geometry);\n gl_Position = project_position_to_clipspace(pos + instancePositions, instancePositions64Low, vec3(0.0), position_commonspace);\n }\n else {\n pos = project_size(pos);\n DECKGL_FILTER_SIZE(pos, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, pos, position_commonspace);\n }\n\n geometry.position = position_commonspace;\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
|
2
|
+
export default _default;
|
@@ -0,0 +1,10 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports["default"] = void 0;
|
7
|
+
// SPDX-License-Identifier: MIT
|
8
|
+
// Copyright contributors to the kepler.gl project
|
9
|
+
var _default = exports["default"] = "#define SHADER_NAME raster-mesh-layer-vs\n\n// Scale the model\nuniform float sizeScale;\nuniform bool composeModelMatrix;\n\n// Primitive attributes\nattribute vec3 positions;\nattribute vec3 normals;\nattribute vec3 colors;\nattribute vec2 texCoords;\n\n// Instance attributes\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\nattribute mat3 instanceModelMatrix;\nattribute vec3 instanceTranslation;\n\n// Outputs to fragment shader\nvarying vec2 vTexCoord;\nvarying vec3 cameraPosition;\nvarying vec3 normals_commonspace;\nvarying vec4 position_commonspace;\nvarying vec4 vColor;\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = texCoords;\n geometry.pickingColor = instancePickingColors;\n\n vTexCoord = texCoords;\n cameraPosition = project_uCameraPosition;\n normals_commonspace = project_normal(instanceModelMatrix * normals);\n vColor = vec4(colors * instanceColors.rgb, instanceColors.a);\n geometry.normal = normals_commonspace;\n\n vec3 pos = (instanceModelMatrix * positions) * sizeScale + instanceTranslation;\n\n if (composeModelMatrix) {\n DECKGL_FILTER_SIZE(pos, geometry);\n gl_Position = project_position_to_clipspace(pos + instancePositions, instancePositions64Low, vec3(0.0), position_commonspace);\n }\n else {\n pos = project_size(pos);\n DECKGL_FILTER_SIZE(pos, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, pos, position_commonspace);\n }\n\n geometry.position = position_commonspace;\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
|
10
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmFzdGVyL3Jhc3Rlci1tZXNoLWxheWVyL3Jhc3Rlci1tZXNoLWxheWVyLXdlYmdsMS52cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5leHBvcnQgZGVmYXVsdCBgXFxcbiNkZWZpbmUgU0hBREVSX05BTUUgcmFzdGVyLW1lc2gtbGF5ZXItdnNcblxuLy8gU2NhbGUgdGhlIG1vZGVsXG51bmlmb3JtIGZsb2F0IHNpemVTY2FsZTtcbnVuaWZvcm0gYm9vbCBjb21wb3NlTW9kZWxNYXRyaXg7XG5cbi8vIFByaW1pdGl2ZSBhdHRyaWJ1dGVzXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbnM7XG5hdHRyaWJ1dGUgdmVjMyBub3JtYWxzO1xuYXR0cmlidXRlIHZlYzMgY29sb3JzO1xuYXR0cmlidXRlIHZlYzIgdGV4Q29vcmRzO1xuXG4vLyBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5hdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZVBvc2l0aW9ucztcbmF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlUG9zaXRpb25zNjRMb3c7XG5hdHRyaWJ1dGUgdmVjNCBpbnN0YW5jZUNvbG9ycztcbmF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlUGlja2luZ0NvbG9ycztcbmF0dHJpYnV0ZSBtYXQzIGluc3RhbmNlTW9kZWxNYXRyaXg7XG5hdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZVRyYW5zbGF0aW9uO1xuXG4vLyBPdXRwdXRzIHRvIGZyYWdtZW50IHNoYWRlclxudmFyeWluZyB2ZWMyIHZUZXhDb29yZDtcbnZhcnlpbmcgdmVjMyBjYW1lcmFQb3NpdGlvbjtcbnZhcnlpbmcgdmVjMyBub3JtYWxzX2NvbW1vbnNwYWNlO1xudmFyeWluZyB2ZWM0IHBvc2l0aW9uX2NvbW1vbnNwYWNlO1xudmFyeWluZyB2ZWM0IHZDb2xvcjtcblxudm9pZCBtYWluKHZvaWQpIHtcbiAgZ2VvbWV0cnkud29ybGRQb3NpdGlvbiA9IGluc3RhbmNlUG9zaXRpb25zO1xuICBnZW9tZXRyeS51diA9IHRleENvb3JkcztcbiAgZ2VvbWV0cnkucGlja2luZ0NvbG9yID0gaW5zdGFuY2VQaWNraW5nQ29sb3JzO1xuXG4gIHZUZXhDb29yZCA9IHRleENvb3JkcztcbiAgY2FtZXJhUG9zaXRpb24gPSBwcm9qZWN0X3VDYW1lcmFQb3NpdGlvbjtcbiAgbm9ybWFsc19jb21tb25zcGFjZSA9IHByb2plY3Rfbm9ybWFsKGluc3RhbmNlTW9kZWxNYXRyaXggKiBub3JtYWxzKTtcbiAgdkNvbG9yID0gdmVjNChjb2xvcnMgKiBpbnN0YW5jZUNvbG9ycy5yZ2IsIGluc3RhbmNlQ29sb3JzLmEpO1xuICBnZW9tZXRyeS5ub3JtYWwgPSBub3JtYWxzX2NvbW1vbnNwYWNlO1xuXG4gIHZlYzMgcG9zID0gKGluc3RhbmNlTW9kZWxNYXRyaXggKiBwb3NpdGlvbnMpICogc2l6ZVNjYWxlICsgaW5zdGFuY2VUcmFuc2xhdGlvbjtcblxuICBpZiAoY29tcG9zZU1vZGVsTWF0cml4KSB7XG4gICAgREVDS0dMX0ZJTFRFUl9TSVpFKHBvcywgZ2VvbWV0cnkpO1xuICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdF9wb3NpdGlvbl90b19jbGlwc3BhY2UocG9zICsgaW5zdGFuY2VQb3NpdGlvbnMsIGluc3RhbmNlUG9zaXRpb25zNjRMb3csIHZlYzMoMC4wKSwgcG9zaXRpb25fY29tbW9uc3BhY2UpO1xuICB9XG4gIGVsc2Uge1xuICAgIHBvcyA9IHByb2plY3Rfc2l6ZShwb3MpO1xuICAgIERFQ0tHTF9GSUxURVJfU0laRShwb3MsIGdlb21ldHJ5KTtcbiAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3RfcG9zaXRpb25fdG9fY2xpcHNwYWNlKGluc3RhbmNlUG9zaXRpb25zLCBpbnN0YW5jZVBvc2l0aW9uczY0TG93LCBwb3MsIHBvc2l0aW9uX2NvbW1vbnNwYWNlKTtcbiAgfVxuXG4gIGdlb21ldHJ5LnBvc2l0aW9uID0gcG9zaXRpb25fY29tbW9uc3BhY2U7XG4gIERFQ0tHTF9GSUxURVJfR0xfUE9TSVRJT04oZ2xfUG9zaXRpb24sIGdlb21ldHJ5KTtcblxuICBERUNLR0xfRklMVEVSX0NPTE9SKHZDb2xvciwgZ2VvbWV0cnkpO1xufVxuYDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
@@ -0,0 +1,2 @@
|
|
1
|
+
declare const _default: "#version 300 es\n#define SHADER_NAME raster-mesh-layer-fs\n\nprecision highp float;\n\nuniform bool hasTexture;\n\nuniform bool flatShading;\nuniform float opacity;\n\nin vec2 vTexCoord;\nin vec3 cameraPosition;\nin vec3 normals_commonspace;\nin vec4 position_commonspace;\nin vec4 vColor;\n\nout vec4 fragColor;\n\nvoid main(void) {\n geometry.uv = vTexCoord;\n vec4 image;\n DECKGL_CREATE_COLOR(image, vTexCoord);\n\n DECKGL_MUTATE_COLOR(image, vTexCoord);\n\n vec3 normal;\n if (flatShading) {\n\n// This is necessary because\n// headless.gl reports the extension as\n// available but does not support it in\n// the shader.\n#ifdef DERIVATIVES_AVAILABLE\n normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\n#else\n normal = vec3(0.0, 0.0, 1.0);\n#endif\n } else {\n normal = normals_commonspace;\n }\n\n vec3 lightColor = lighting_getLightColor(image.rgb, cameraPosition, position_commonspace.xyz, normal);\n fragColor = vec4(lightColor, opacity);\n\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n";
|
2
|
+
export default _default;
|
@@ -0,0 +1,10 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports["default"] = void 0;
|
7
|
+
// SPDX-License-Identifier: MIT
|
8
|
+
// Copyright contributors to the kepler.gl project
|
9
|
+
var _default = exports["default"] = "#version 300 es\n#define SHADER_NAME raster-mesh-layer-fs\n\nprecision highp float;\n\nuniform bool hasTexture;\n\nuniform bool flatShading;\nuniform float opacity;\n\nin vec2 vTexCoord;\nin vec3 cameraPosition;\nin vec3 normals_commonspace;\nin vec4 position_commonspace;\nin vec4 vColor;\n\nout vec4 fragColor;\n\nvoid main(void) {\n geometry.uv = vTexCoord;\n vec4 image;\n DECKGL_CREATE_COLOR(image, vTexCoord);\n\n DECKGL_MUTATE_COLOR(image, vTexCoord);\n\n vec3 normal;\n if (flatShading) {\n\n// This is necessary because\n// headless.gl reports the extension as\n// available but does not support it in\n// the shader.\n#ifdef DERIVATIVES_AVAILABLE\n normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\n#else\n normal = vec3(0.0, 0.0, 1.0);\n#endif\n } else {\n normal = normals_commonspace;\n }\n\n vec3 lightColor = lighting_getLightColor(image.rgb, cameraPosition, position_commonspace.xyz, normal);\n fragColor = vec4(lightColor, opacity);\n\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n";
|
10
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmFzdGVyL3Jhc3Rlci1tZXNoLWxheWVyL3Jhc3Rlci1tZXNoLWxheWVyLXdlYmdsMi5mcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5leHBvcnQgZGVmYXVsdCBgXFxcbiN2ZXJzaW9uIDMwMCBlc1xuI2RlZmluZSBTSEFERVJfTkFNRSByYXN0ZXItbWVzaC1sYXllci1mc1xuXG5wcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5cbnVuaWZvcm0gYm9vbCBoYXNUZXh0dXJlO1xuXG51bmlmb3JtIGJvb2wgZmxhdFNoYWRpbmc7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG5cbmluIHZlYzIgdlRleENvb3JkO1xuaW4gdmVjMyBjYW1lcmFQb3NpdGlvbjtcbmluIHZlYzMgbm9ybWFsc19jb21tb25zcGFjZTtcbmluIHZlYzQgcG9zaXRpb25fY29tbW9uc3BhY2U7XG5pbiB2ZWM0IHZDb2xvcjtcblxub3V0IHZlYzQgZnJhZ0NvbG9yO1xuXG52b2lkIG1haW4odm9pZCkge1xuICBnZW9tZXRyeS51diA9IHZUZXhDb29yZDtcbiAgdmVjNCBpbWFnZTtcbiAgREVDS0dMX0NSRUFURV9DT0xPUihpbWFnZSwgdlRleENvb3JkKTtcblxuICBERUNLR0xfTVVUQVRFX0NPTE9SKGltYWdlLCB2VGV4Q29vcmQpO1xuXG4gIHZlYzMgbm9ybWFsO1xuICBpZiAoZmxhdFNoYWRpbmcpIHtcblxuLy8gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZVxuLy8gaGVhZGxlc3MuZ2wgcmVwb3J0cyB0aGUgZXh0ZW5zaW9uIGFzXG4vLyBhdmFpbGFibGUgYnV0IGRvZXMgbm90IHN1cHBvcnQgaXQgaW5cbi8vIHRoZSBzaGFkZXIuXG4jaWZkZWYgREVSSVZBVElWRVNfQVZBSUxBQkxFXG4gICAgbm9ybWFsID0gbm9ybWFsaXplKGNyb3NzKGRGZHgocG9zaXRpb25fY29tbW9uc3BhY2UueHl6KSwgZEZkeShwb3NpdGlvbl9jb21tb25zcGFjZS54eXopKSk7XG4jZWxzZVxuICAgIG5vcm1hbCA9IHZlYzMoMC4wLCAwLjAsIDEuMCk7XG4jZW5kaWZcbiAgfSBlbHNlIHtcbiAgICBub3JtYWwgPSBub3JtYWxzX2NvbW1vbnNwYWNlO1xuICB9XG5cbiAgdmVjMyBsaWdodENvbG9yID0gbGlnaHRpbmdfZ2V0TGlnaHRDb2xvcihpbWFnZS5yZ2IsIGNhbWVyYVBvc2l0aW9uLCBwb3NpdGlvbl9jb21tb25zcGFjZS54eXosIG5vcm1hbCk7XG4gIGZyYWdDb2xvciA9IHZlYzQobGlnaHRDb2xvciwgb3BhY2l0eSk7XG5cbiAgREVDS0dMX0ZJTFRFUl9DT0xPUihmcmFnQ29sb3IsIGdlb21ldHJ5KTtcbn1cbmA7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
@@ -0,0 +1,2 @@
|
|
1
|
+
declare const _default: "#version 300 es\n#define SHADER_NAME raster-mesh-layer-vs\n\n// Scale the model\nuniform float sizeScale;\nuniform bool composeModelMatrix;\n\n// Primitive attributes\nin vec3 positions;\nin vec3 normals;\nin vec3 colors;\nin vec2 texCoords;\n\n// Instance attributes\nin vec3 instancePositions;\nin vec3 instancePositions64Low;\nin vec4 instanceColors;\nin vec3 instancePickingColors;\nin mat3 instanceModelMatrix;\nin vec3 instanceTranslation;\n\n// Outputs to fragment shader\nout vec2 vTexCoord;\nout vec3 cameraPosition;\nout vec3 normals_commonspace;\nout vec4 position_commonspace;\nout vec4 vColor;\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = texCoords;\n geometry.pickingColor = instancePickingColors;\n\n vTexCoord = texCoords;\n cameraPosition = project_uCameraPosition;\n normals_commonspace = project_normal(instanceModelMatrix * normals);\n vColor = vec4(colors * instanceColors.rgb, instanceColors.a);\n geometry.normal = normals_commonspace;\n\n vec3 pos = (instanceModelMatrix * positions) * sizeScale + instanceTranslation;\n\n if (composeModelMatrix) {\n DECKGL_FILTER_SIZE(pos, geometry);\n gl_Position = project_position_to_clipspace(pos + instancePositions, instancePositions64Low, vec3(0.0), position_commonspace);\n }\n else {\n pos = project_size(pos);\n DECKGL_FILTER_SIZE(pos, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, pos, position_commonspace);\n }\n\n geometry.position = position_commonspace;\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
|
2
|
+
export default _default;
|
@@ -0,0 +1,10 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports["default"] = void 0;
|
7
|
+
// SPDX-License-Identifier: MIT
|
8
|
+
// Copyright contributors to the kepler.gl project
|
9
|
+
var _default = exports["default"] = "#version 300 es\n#define SHADER_NAME raster-mesh-layer-vs\n\n// Scale the model\nuniform float sizeScale;\nuniform bool composeModelMatrix;\n\n// Primitive attributes\nin vec3 positions;\nin vec3 normals;\nin vec3 colors;\nin vec2 texCoords;\n\n// Instance attributes\nin vec3 instancePositions;\nin vec3 instancePositions64Low;\nin vec4 instanceColors;\nin vec3 instancePickingColors;\nin mat3 instanceModelMatrix;\nin vec3 instanceTranslation;\n\n// Outputs to fragment shader\nout vec2 vTexCoord;\nout vec3 cameraPosition;\nout vec3 normals_commonspace;\nout vec4 position_commonspace;\nout vec4 vColor;\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n geometry.uv = texCoords;\n geometry.pickingColor = instancePickingColors;\n\n vTexCoord = texCoords;\n cameraPosition = project_uCameraPosition;\n normals_commonspace = project_normal(instanceModelMatrix * normals);\n vColor = vec4(colors * instanceColors.rgb, instanceColors.a);\n geometry.normal = normals_commonspace;\n\n vec3 pos = (instanceModelMatrix * positions) * sizeScale + instanceTranslation;\n\n if (composeModelMatrix) {\n DECKGL_FILTER_SIZE(pos, geometry);\n gl_Position = project_position_to_clipspace(pos + instancePositions, instancePositions64Low, vec3(0.0), position_commonspace);\n }\n else {\n pos = project_size(pos);\n DECKGL_FILTER_SIZE(pos, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, pos, position_commonspace);\n }\n\n geometry.position = position_commonspace;\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
|
10
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmFzdGVyL3Jhc3Rlci1tZXNoLWxheWVyL3Jhc3Rlci1tZXNoLWxheWVyLXdlYmdsMi52cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5leHBvcnQgZGVmYXVsdCBgXFxcbiN2ZXJzaW9uIDMwMCBlc1xuI2RlZmluZSBTSEFERVJfTkFNRSByYXN0ZXItbWVzaC1sYXllci12c1xuXG4vLyBTY2FsZSB0aGUgbW9kZWxcbnVuaWZvcm0gZmxvYXQgc2l6ZVNjYWxlO1xudW5pZm9ybSBib29sIGNvbXBvc2VNb2RlbE1hdHJpeDtcblxuLy8gUHJpbWl0aXZlIGF0dHJpYnV0ZXNcbmluIHZlYzMgcG9zaXRpb25zO1xuaW4gdmVjMyBub3JtYWxzO1xuaW4gdmVjMyBjb2xvcnM7XG5pbiB2ZWMyIHRleENvb3JkcztcblxuLy8gSW5zdGFuY2UgYXR0cmlidXRlc1xuaW4gdmVjMyBpbnN0YW5jZVBvc2l0aW9ucztcbmluIHZlYzMgaW5zdGFuY2VQb3NpdGlvbnM2NExvdztcbmluIHZlYzQgaW5zdGFuY2VDb2xvcnM7XG5pbiB2ZWMzIGluc3RhbmNlUGlja2luZ0NvbG9ycztcbmluIG1hdDMgaW5zdGFuY2VNb2RlbE1hdHJpeDtcbmluIHZlYzMgaW5zdGFuY2VUcmFuc2xhdGlvbjtcblxuLy8gT3V0cHV0cyB0byBmcmFnbWVudCBzaGFkZXJcbm91dCB2ZWMyIHZUZXhDb29yZDtcbm91dCB2ZWMzIGNhbWVyYVBvc2l0aW9uO1xub3V0IHZlYzMgbm9ybWFsc19jb21tb25zcGFjZTtcbm91dCB2ZWM0IHBvc2l0aW9uX2NvbW1vbnNwYWNlO1xub3V0IHZlYzQgdkNvbG9yO1xuXG52b2lkIG1haW4odm9pZCkge1xuICBnZW9tZXRyeS53b3JsZFBvc2l0aW9uID0gaW5zdGFuY2VQb3NpdGlvbnM7XG4gIGdlb21ldHJ5LnV2ID0gdGV4Q29vcmRzO1xuICBnZW9tZXRyeS5waWNraW5nQ29sb3IgPSBpbnN0YW5jZVBpY2tpbmdDb2xvcnM7XG5cbiAgdlRleENvb3JkID0gdGV4Q29vcmRzO1xuICBjYW1lcmFQb3NpdGlvbiA9IHByb2plY3RfdUNhbWVyYVBvc2l0aW9uO1xuICBub3JtYWxzX2NvbW1vbnNwYWNlID0gcHJvamVjdF9ub3JtYWwoaW5zdGFuY2VNb2RlbE1hdHJpeCAqIG5vcm1hbHMpO1xuICB2Q29sb3IgPSB2ZWM0KGNvbG9ycyAqIGluc3RhbmNlQ29sb3JzLnJnYiwgaW5zdGFuY2VDb2xvcnMuYSk7XG4gIGdlb21ldHJ5Lm5vcm1hbCA9IG5vcm1hbHNfY29tbW9uc3BhY2U7XG5cbiAgdmVjMyBwb3MgPSAoaW5zdGFuY2VNb2RlbE1hdHJpeCAqIHBvc2l0aW9ucykgKiBzaXplU2NhbGUgKyBpbnN0YW5jZVRyYW5zbGF0aW9uO1xuXG4gIGlmIChjb21wb3NlTW9kZWxNYXRyaXgpIHtcbiAgICBERUNLR0xfRklMVEVSX1NJWkUocG9zLCBnZW9tZXRyeSk7XG4gICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0X3Bvc2l0aW9uX3RvX2NsaXBzcGFjZShwb3MgKyBpbnN0YW5jZVBvc2l0aW9ucywgaW5zdGFuY2VQb3NpdGlvbnM2NExvdywgdmVjMygwLjApLCBwb3NpdGlvbl9jb21tb25zcGFjZSk7XG4gIH1cbiAgZWxzZSB7XG4gICAgcG9zID0gcHJvamVjdF9zaXplKHBvcyk7XG4gICAgREVDS0dMX0ZJTFRFUl9TSVpFKHBvcywgZ2VvbWV0cnkpO1xuICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdF9wb3NpdGlvbl90b19jbGlwc3BhY2UoaW5zdGFuY2VQb3NpdGlvbnMsIGluc3RhbmNlUG9zaXRpb25zNjRMb3csIHBvcywgcG9zaXRpb25fY29tbW9uc3BhY2UpO1xuICB9XG5cbiAgZ2VvbWV0cnkucG9zaXRpb24gPSBwb3NpdGlvbl9jb21tb25zcGFjZTtcbiAgREVDS0dMX0ZJTFRFUl9HTF9QT1NJVElPTihnbF9Qb3NpdGlvbiwgZ2VvbWV0cnkpO1xuXG4gIERFQ0tHTF9GSUxURVJfQ09MT1IodkNvbG9yLCBnZW9tZXRyeSk7XG59XG5gO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBIiwiaWdub3JlTGlzdCI6W119
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { UpdateParameters } from '@deck.gl/core/typed';
|
2
|
+
import { SimpleMeshLayer, SimpleMeshLayerProps } from '@deck.gl/mesh-layers/typed';
|
3
|
+
import { Model } from '@luma.gl/core';
|
4
|
+
import { UniformsOptions } from '@luma.gl/webgl/src/classes/uniforms';
|
5
|
+
import type { RasterLayerAddedProps, ImageState } from '../types';
|
6
|
+
declare type Mesh = SimpleMeshLayerProps['mesh'];
|
7
|
+
export default class RasterMeshLayer extends SimpleMeshLayer<any, RasterLayerAddedProps> {
|
8
|
+
state: SimpleMeshLayer<RasterLayerAddedProps>['state'] & {
|
9
|
+
images: ImageState;
|
10
|
+
};
|
11
|
+
initializeState(): void;
|
12
|
+
getShaders(): any;
|
13
|
+
updateState(params: UpdateParameters<SimpleMeshLayer<any, RasterLayerAddedProps>>): void;
|
14
|
+
updateImages({ props, oldProps }: {
|
15
|
+
props: RasterLayerAddedProps;
|
16
|
+
oldProps: RasterLayerAddedProps;
|
17
|
+
}): void;
|
18
|
+
draw({ uniforms }: UniformsOptions): void;
|
19
|
+
finalizeState(): void;
|
20
|
+
protected getModel(mesh: Mesh): Model;
|
21
|
+
}
|
22
|
+
export {};
|