@kepler.gl/deckgl-layers 3.3.0-alpha.5 → 3.3.0-alpha.6

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.
Files changed (184) hide show
  1. package/dist/cjs/3d-building-layer/3d-building-layer.js +66 -0
  2. package/dist/cjs/3d-building-layer/3d-building-utils.js +166 -0
  3. package/dist/cjs/3d-building-layer/types.js +6 -0
  4. package/dist/cjs/cluster-layer/cluster-layer.js +292 -0
  5. package/dist/cjs/column-layer/enhanced-column-layer.js +160 -0
  6. package/dist/{deckgl-extensions → cjs/deckgl-extensions}/filter-arrow-layer.js +1 -1
  7. package/dist/cjs/deckgl-extensions/filter-shader-module.js +26 -0
  8. package/dist/cjs/globe/atmosphere-layer.js +220 -0
  9. package/dist/cjs/globe/enhanced-multi-icon-layer.js +63 -0
  10. package/dist/cjs/globe/globe-depth-disk-layer.js +145 -0
  11. package/dist/cjs/globe/globe-layers.js +569 -0
  12. package/dist/cjs/globe/globe-stars-layer.js +69 -0
  13. package/dist/cjs/globe/globe-view.js +407 -0
  14. package/dist/{globe → cjs/globe}/index.js +1 -1
  15. package/dist/cjs/globe/mvt-label-layer.js +190 -0
  16. package/dist/cjs/grid-layer/enhanced-cpu-grid-layer.js +116 -0
  17. package/dist/cjs/hexagon-layer/enhanced-hexagon-layer.js +134 -0
  18. package/dist/{index.js → cjs/index.js} +1 -1
  19. package/dist/cjs/layer-utils/aggregation-utils.js +181 -0
  20. package/dist/cjs/layer-utils/cluster-utils.js +93 -0
  21. package/dist/cjs/layer-utils/cpu-aggregator.js +798 -0
  22. package/dist/cjs/layer-utils/globe-cell-utils.js +173 -0
  23. package/dist/cjs/layer-utils/shader-utils.js +38 -0
  24. package/dist/cjs/line-layer/line-layer.js +95 -0
  25. package/dist/cjs/raster/images.js +271 -0
  26. package/dist/cjs/raster/pipeline-validation-patch.js +101 -0
  27. package/dist/cjs/raster/raster-layer/raster-layer-shaders.js +163 -0
  28. package/dist/cjs/raster/raster-layer/raster-layer-webgl1.fs.js +10 -0
  29. package/dist/cjs/raster/raster-layer/raster-layer-webgl1.vs.js +10 -0
  30. package/dist/cjs/raster/raster-layer/raster-layer-webgl2.fs.js +10 -0
  31. package/dist/cjs/raster/raster-layer/raster-layer-webgl2.vs.js +10 -0
  32. package/dist/cjs/raster/raster-layer/raster-layer.js +287 -0
  33. package/dist/cjs/raster/raster-mesh-layer/matrix.js +18 -0
  34. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +38 -0
  35. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +10 -0
  36. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +10 -0
  37. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +10 -0
  38. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +10 -0
  39. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer.js +321 -0
  40. package/dist/cjs/raster/raster-processing-uniforms.js +124 -0
  41. package/dist/cjs/raster/types.js +6 -0
  42. package/dist/cjs/raster/util.js +139 -0
  43. package/dist/cjs/raster/webgl/color/colormap.js +45 -0
  44. package/dist/cjs/raster/webgl/color/filter.js +58 -0
  45. package/dist/cjs/raster/webgl/color/gamma-contrast.js +68 -0
  46. package/dist/cjs/raster/webgl/color/linear-rescale.js +35 -0
  47. package/dist/cjs/raster/webgl/color/saturation.js +42 -0
  48. package/dist/cjs/raster/webgl/color/sigmoidal-contrast.js +68 -0
  49. package/dist/{raster → cjs/raster}/webgl/index.js +1 -1
  50. package/dist/cjs/raster/webgl/pansharpen/pansharpen-brovey.js +46 -0
  51. package/dist/cjs/raster/webgl/spectral-indices/evi.js +26 -0
  52. package/dist/cjs/raster/webgl/spectral-indices/msavi.js +25 -0
  53. package/dist/cjs/raster/webgl/spectral-indices/normalized-difference.js +19 -0
  54. package/dist/cjs/raster/webgl/spectral-indices/savi.js +21 -0
  55. package/dist/cjs/raster/webgl/texture/combine-bands.js +65 -0
  56. package/dist/cjs/raster/webgl/texture/mask.js +50 -0
  57. package/dist/cjs/raster/webgl/texture/reorder-bands.js +72 -0
  58. package/dist/cjs/raster/webgl/texture/rgba-image.js +34 -0
  59. package/dist/cjs/raster/webgl/types.js +6 -0
  60. package/dist/cjs/svg-icon-layer/scatterplot-icon-layer.js +88 -0
  61. package/dist/cjs/svg-icon-layer/svg-icon-layer.js +104 -0
  62. package/dist/cjs/wms/wms-layer.js +624 -0
  63. package/dist/esm/3d-building-layer/3d-building-layer.js +62 -0
  64. package/dist/esm/3d-building-layer/3d-building-utils.js +157 -0
  65. package/dist/esm/3d-building-layer/types.js +3 -0
  66. package/dist/esm/cluster-layer/cluster-layer.js +286 -0
  67. package/dist/esm/column-layer/enhanced-column-layer.js +156 -0
  68. package/dist/esm/deckgl-extensions/filter-arrow-layer.js +64 -0
  69. package/dist/esm/deckgl-extensions/filter-shader-module.js +20 -0
  70. package/dist/esm/globe/atmosphere-layer.js +214 -0
  71. package/dist/esm/globe/enhanced-multi-icon-layer.js +60 -0
  72. package/dist/esm/globe/globe-depth-disk-layer.js +140 -0
  73. package/dist/esm/globe/globe-layers.js +561 -0
  74. package/dist/esm/globe/globe-stars-layer.js +63 -0
  75. package/dist/esm/globe/globe-view.js +401 -0
  76. package/dist/esm/globe/index.js +26 -0
  77. package/dist/esm/globe/mvt-label-layer.js +187 -0
  78. package/dist/esm/grid-layer/enhanced-cpu-grid-layer.js +112 -0
  79. package/dist/esm/hexagon-layer/enhanced-hexagon-layer.js +130 -0
  80. package/dist/esm/index.js +22 -0
  81. package/dist/esm/layer-utils/aggregation-utils.js +172 -0
  82. package/dist/esm/layer-utils/cluster-utils.js +86 -0
  83. package/dist/esm/layer-utils/cpu-aggregator.js +788 -0
  84. package/dist/esm/layer-utils/globe-cell-utils.js +167 -0
  85. package/dist/esm/layer-utils/shader-utils.js +32 -0
  86. package/dist/esm/line-layer/line-layer.js +91 -0
  87. package/dist/esm/raster/images.js +267 -0
  88. package/dist/esm/raster/pipeline-validation-patch.js +94 -0
  89. package/dist/esm/raster/raster-layer/raster-layer-shaders.js +153 -0
  90. package/dist/esm/raster/raster-layer/raster-layer-webgl1.fs.js +5 -0
  91. package/dist/esm/raster/raster-layer/raster-layer-webgl1.vs.js +5 -0
  92. package/dist/esm/raster/raster-layer/raster-layer-webgl2.fs.js +5 -0
  93. package/dist/esm/raster/raster-layer/raster-layer-webgl2.vs.js +5 -0
  94. package/dist/esm/raster/raster-layer/raster-layer.js +283 -0
  95. package/dist/esm/raster/raster-mesh-layer/matrix.js +12 -0
  96. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +30 -0
  97. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +5 -0
  98. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +5 -0
  99. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +5 -0
  100. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +5 -0
  101. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer.js +318 -0
  102. package/dist/esm/raster/raster-processing-uniforms.js +118 -0
  103. package/dist/esm/raster/types.js +3 -0
  104. package/dist/esm/raster/util.js +134 -0
  105. package/dist/esm/raster/webgl/color/colormap.js +39 -0
  106. package/dist/esm/raster/webgl/color/filter.js +52 -0
  107. package/dist/esm/raster/webgl/color/gamma-contrast.js +62 -0
  108. package/dist/esm/raster/webgl/color/linear-rescale.js +29 -0
  109. package/dist/esm/raster/webgl/color/saturation.js +36 -0
  110. package/dist/esm/raster/webgl/color/sigmoidal-contrast.js +62 -0
  111. package/dist/esm/raster/webgl/index.js +26 -0
  112. package/dist/esm/raster/webgl/pansharpen/pansharpen-brovey.js +40 -0
  113. package/dist/esm/raster/webgl/spectral-indices/evi.js +20 -0
  114. package/dist/esm/raster/webgl/spectral-indices/msavi.js +19 -0
  115. package/dist/esm/raster/webgl/spectral-indices/normalized-difference.js +13 -0
  116. package/dist/esm/raster/webgl/spectral-indices/savi.js +15 -0
  117. package/dist/esm/raster/webgl/texture/combine-bands.js +58 -0
  118. package/dist/esm/raster/webgl/texture/mask.js +44 -0
  119. package/dist/esm/raster/webgl/texture/reorder-bands.js +65 -0
  120. package/dist/esm/raster/webgl/texture/rgba-image.js +28 -0
  121. package/dist/esm/raster/webgl/types.js +3 -0
  122. package/dist/esm/svg-icon-layer/scatterplot-icon-layer.js +84 -0
  123. package/dist/esm/svg-icon-layer/svg-icon-layer.js +101 -0
  124. package/dist/esm/wms/wms-layer.js +619 -0
  125. package/dist/wms/wms-layer.d.ts +8 -0
  126. package/package.json +17 -8
  127. package/dist/3d-building-layer/3d-building-layer.js +0 -66
  128. package/dist/3d-building-layer/3d-building-utils.js +0 -166
  129. package/dist/3d-building-layer/types.js +0 -6
  130. package/dist/cluster-layer/cluster-layer.js +0 -292
  131. package/dist/column-layer/enhanced-column-layer.js +0 -160
  132. package/dist/deckgl-extensions/filter-shader-module.js +0 -26
  133. package/dist/globe/atmosphere-layer.js +0 -220
  134. package/dist/globe/enhanced-multi-icon-layer.js +0 -63
  135. package/dist/globe/globe-depth-disk-layer.js +0 -145
  136. package/dist/globe/globe-layers.js +0 -569
  137. package/dist/globe/globe-stars-layer.js +0 -69
  138. package/dist/globe/globe-view.js +0 -404
  139. package/dist/globe/mvt-label-layer.js +0 -190
  140. package/dist/grid-layer/enhanced-cpu-grid-layer.js +0 -116
  141. package/dist/hexagon-layer/enhanced-hexagon-layer.js +0 -134
  142. package/dist/layer-utils/aggregation-utils.js +0 -181
  143. package/dist/layer-utils/cluster-utils.js +0 -93
  144. package/dist/layer-utils/cpu-aggregator.js +0 -798
  145. package/dist/layer-utils/globe-cell-utils.js +0 -173
  146. package/dist/layer-utils/shader-utils.js +0 -38
  147. package/dist/line-layer/line-layer.js +0 -95
  148. package/dist/raster/images.js +0 -271
  149. package/dist/raster/pipeline-validation-patch.js +0 -101
  150. package/dist/raster/raster-layer/raster-layer-shaders.js +0 -163
  151. package/dist/raster/raster-layer/raster-layer-webgl1.fs.js +0 -10
  152. package/dist/raster/raster-layer/raster-layer-webgl1.vs.js +0 -10
  153. package/dist/raster/raster-layer/raster-layer-webgl2.fs.js +0 -10
  154. package/dist/raster/raster-layer/raster-layer-webgl2.vs.js +0 -10
  155. package/dist/raster/raster-layer/raster-layer.js +0 -287
  156. package/dist/raster/raster-mesh-layer/matrix.js +0 -18
  157. package/dist/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +0 -38
  158. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +0 -10
  159. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +0 -10
  160. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +0 -10
  161. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +0 -10
  162. package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +0 -321
  163. package/dist/raster/raster-processing-uniforms.js +0 -124
  164. package/dist/raster/types.js +0 -6
  165. package/dist/raster/util.js +0 -139
  166. package/dist/raster/webgl/color/colormap.js +0 -45
  167. package/dist/raster/webgl/color/filter.js +0 -58
  168. package/dist/raster/webgl/color/gamma-contrast.js +0 -68
  169. package/dist/raster/webgl/color/linear-rescale.js +0 -35
  170. package/dist/raster/webgl/color/saturation.js +0 -42
  171. package/dist/raster/webgl/color/sigmoidal-contrast.js +0 -68
  172. package/dist/raster/webgl/pansharpen/pansharpen-brovey.js +0 -46
  173. package/dist/raster/webgl/spectral-indices/evi.js +0 -26
  174. package/dist/raster/webgl/spectral-indices/msavi.js +0 -25
  175. package/dist/raster/webgl/spectral-indices/normalized-difference.js +0 -19
  176. package/dist/raster/webgl/spectral-indices/savi.js +0 -21
  177. package/dist/raster/webgl/texture/combine-bands.js +0 -65
  178. package/dist/raster/webgl/texture/mask.js +0 -50
  179. package/dist/raster/webgl/texture/reorder-bands.js +0 -72
  180. package/dist/raster/webgl/texture/rgba-image.js +0 -34
  181. package/dist/raster/webgl/types.js +0 -6
  182. package/dist/svg-icon-layer/scatterplot-icon-layer.js +0 -88
  183. package/dist/svg-icon-layer/svg-icon-layer.js +0 -104
  184. package/dist/wms/wms-layer.js +0 -594
@@ -0,0 +1,318 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
4
+ import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
5
+ import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
6
+ import _get from "@babel/runtime/helpers/esm/get";
7
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
8
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
9
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
10
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
11
+ function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
12
+ 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; }
13
+ 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) { _defineProperty(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; }
14
+ // SPDX-License-Identifier: MIT
15
+ // Copyright contributors to the kepler.gl project
16
+
17
+ import { SimpleMeshLayer } from '@deck.gl/mesh-layers';
18
+ import { Geometry } from '@luma.gl/engine';
19
+ import { Model } from '@luma.gl/engine';
20
+ import { buildRasterMeshFragmentShader, buildRasterMeshVertexShader, rasterMeshUniforms } from './raster-mesh-layer-shaders';
21
+ import { ensureRasterHooksRegistered, prepareLumaModules } from '../raster-layer/raster-layer-shaders';
22
+ import { loadImages } from '../images';
23
+ import { modulesEqual, applyModuleUniforms } from '../util';
24
+ import { patchPipelineValidation } from '../pipeline-validation-patch';
25
+ import { rasterProcessingUniforms } from '../raster-processing-uniforms';
26
+ import { TOPOLOGY } from '@kepler.gl/constants';
27
+ function validateGeometryAttributes(attributes) {
28
+ if (!(attributes.positions || attributes.POSITION)) {
29
+ throw new Error('RasterMeshLayer requires "positions" or "POSITION" attribute in mesh property.');
30
+ }
31
+ }
32
+
33
+ /*
34
+ * Convert mesh data into geometry
35
+ * @returns geometry
36
+ */
37
+ function getGeometry(data) {
38
+ if ('attributes' in data && data.attributes) {
39
+ validateGeometryAttributes(data.attributes);
40
+ if (data instanceof Geometry) {
41
+ return data;
42
+ }
43
+ return new Geometry(data);
44
+ } else if ('positions' in data || 'POSITION' in data) {
45
+ validateGeometryAttributes(data);
46
+ return new Geometry({
47
+ attributes: data
48
+ });
49
+ }
50
+ throw Error('Invalid mesh');
51
+ }
52
+ var defaultProps = _objectSpread(_objectSpread({}, SimpleMeshLayer.defaultProps), {}, {
53
+ modules: {
54
+ type: 'array',
55
+ value: [],
56
+ compare: true
57
+ },
58
+ images: {
59
+ type: 'object',
60
+ value: {},
61
+ compare: true
62
+ },
63
+ moduleProps: {
64
+ type: 'object',
65
+ value: {},
66
+ compare: true
67
+ },
68
+ onRedrawNeeded: {
69
+ type: 'function',
70
+ value: null,
71
+ compare: false
72
+ }
73
+ });
74
+ var RasterMeshLayer = /*#__PURE__*/function (_SimpleMeshLayer) {
75
+ function RasterMeshLayer() {
76
+ var _this;
77
+ _classCallCheck(this, RasterMeshLayer);
78
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
79
+ args[_key] = arguments[_key];
80
+ }
81
+ _this = _callSuper(this, RasterMeshLayer, [].concat(args));
82
+ _defineProperty(_this, "_redrawScheduled", false);
83
+ _defineProperty(_this, "_pendingImageRetry", null);
84
+ /** How many consecutive frames have retried a failed texture upload. */
85
+ _defineProperty(_this, "_imageRetryCount", 0);
86
+ return _this;
87
+ }
88
+ _inherits(RasterMeshLayer, _SimpleMeshLayer);
89
+ return _createClass(RasterMeshLayer, [{
90
+ key: "initializeState",
91
+ value: function initializeState() {
92
+ patchPipelineValidation();
93
+ ensureRasterHooksRegistered();
94
+ this.setState({
95
+ images: {}
96
+ });
97
+ _superPropGet(RasterMeshLayer, "initializeState", this, 3)([]);
98
+ }
99
+ }, {
100
+ key: "getShaders",
101
+ value: function getShaders() {
102
+ var _this$props$modules = this.props.modules,
103
+ modules = _this$props$modules === void 0 ? [] : _this$props$modules;
104
+ var lumaModules = prepareLumaModules(modules);
105
+ var parentShaders = _superPropGet(RasterMeshLayer, "getShaders", this, 3)([]);
106
+
107
+ // Filter out simpleMeshUniforms from parent — RasterMeshLayer uses its own
108
+ // shaders that don't reference SimpleMesh uniforms, and every UBO counts
109
+ // against the WebGL2 GL_MAX_FRAGMENT_UNIFORM_BUFFERS limit (typically 12).
110
+ var parentModules = (parentShaders.modules || []).filter(function (m) {
111
+ return m.name !== 'simpleMesh';
112
+ });
113
+ return _objectSpread(_objectSpread({}, parentShaders), {}, {
114
+ vs: buildRasterMeshVertexShader(),
115
+ fs: buildRasterMeshFragmentShader(),
116
+ modules: [].concat(_toConsumableArray(parentModules), [rasterMeshUniforms, rasterProcessingUniforms], _toConsumableArray(lumaModules))
117
+ });
118
+ }
119
+
120
+ // eslint-disable-next-line complexity
121
+ }, {
122
+ key: "updateState",
123
+ value: function updateState(params) {
124
+ var props = params.props,
125
+ oldProps = params.oldProps,
126
+ changeFlags = params.changeFlags,
127
+ context = params.context;
128
+ _superPropGet(RasterMeshLayer, "updateState", this, 3)([{
129
+ props: props,
130
+ oldProps: oldProps,
131
+ changeFlags: changeFlags,
132
+ context: context
133
+ }]);
134
+ var modules = props && props.modules;
135
+ var oldModules = oldProps && oldProps.modules;
136
+ if (props.mesh !== oldProps.mesh || changeFlags.extensionsChanged || !modulesEqual(modules, oldModules)) {
137
+ var _this$getAttributeMan;
138
+ if (this.state.model) {
139
+ var _this$state$model$des, _this$state$model;
140
+ (_this$state$model$des = (_this$state$model = this.state.model).destroy) === null || _this$state$model$des === void 0 || _this$state$model$des.call(_this$state$model);
141
+ }
142
+ if (props.mesh) {
143
+ this.state.model = this.getModel(props.mesh);
144
+ var attributes = props.mesh.attributes || props.mesh;
145
+ this.setState({
146
+ hasNormals: Boolean(attributes.NORMAL || attributes.normals)
147
+ });
148
+ }
149
+ (_this$getAttributeMan = this.getAttributeManager()) === null || _this$getAttributeMan === void 0 || _this$getAttributeMan.invalidateAll();
150
+ }
151
+ if (props && props.images) {
152
+ this.updateImages({
153
+ props: props,
154
+ oldProps: oldProps
155
+ });
156
+ }
157
+ if (this.state.model) {
158
+ var _this$state$model$set, _this$state$model2;
159
+ (_this$state$model$set = (_this$state$model2 = this.state.model).setTopology) === null || _this$state$model$set === void 0 || _this$state$model$set.call(_this$state$model2, this.props.wireframe ? TOPOLOGY.LINE_STRIP : TOPOLOGY.TRIANGLE_LIST);
160
+ }
161
+ }
162
+ }, {
163
+ key: "updateImages",
164
+ value: function updateImages(_ref) {
165
+ var props = _ref.props,
166
+ oldProps = _ref.oldProps;
167
+ var images = this.state.images;
168
+ var device = this.context.device;
169
+ var gl = (device === null || device === void 0 ? void 0 : device.gl) || this.context.gl;
170
+ var _loadImages = loadImages({
171
+ gl: gl,
172
+ device: device,
173
+ images: images,
174
+ imagesData: props.images,
175
+ oldImagesData: oldProps.images
176
+ }),
177
+ newImages = _loadImages.images,
178
+ hasPendingUploads = _loadImages.hasPendingUploads;
179
+ if (newImages) {
180
+ this.setState({
181
+ images: newImages
182
+ });
183
+ }
184
+ // If any texture upload failed, stash the imagesData and schedule a retry
185
+ // next frame. The retry passes oldImagesData: {} so all keys bypass the
186
+ // isEqual skip-check.
187
+ if (hasPendingUploads) {
188
+ this._pendingImageRetry = props.images;
189
+ this._imageRetryCount = 0;
190
+ this._scheduleRedraw();
191
+ }
192
+ }
193
+ }, {
194
+ key: "draw",
195
+ value: function draw(_opts) {
196
+ var _this$props$opacity;
197
+ // If a previous frame had failed texture uploads, retry them now before
198
+ // checking whether the images state is complete. Pass oldImagesData: {} so
199
+ // all keys are treated as new and bypass the isEqual skip-check.
200
+ // Retries are bounded to MAX_IMAGE_RETRY_ATTEMPTS to avoid an infinite
201
+ // redraw loop when image data is permanently invalid.
202
+ if (this._pendingImageRetry) {
203
+ var _this$context$device;
204
+ var retry = this._pendingImageRetry;
205
+ this._pendingImageRetry = null;
206
+ var _loadImages2 = loadImages({
207
+ gl: ((_this$context$device = this.context.device) === null || _this$context$device === void 0 ? void 0 : _this$context$device.gl) || this.context.gl,
208
+ device: this.context.device,
209
+ images: this.state.images,
210
+ imagesData: retry,
211
+ oldImagesData: {}
212
+ }),
213
+ newImages = _loadImages2.images,
214
+ hasPendingUploads = _loadImages2.hasPendingUploads;
215
+ if (newImages) {
216
+ this.setState({
217
+ images: newImages
218
+ });
219
+ }
220
+ if (hasPendingUploads) {
221
+ this._imageRetryCount++;
222
+ if (this._imageRetryCount < RasterMeshLayer.MAX_IMAGE_RETRY_ATTEMPTS) {
223
+ this._pendingImageRetry = retry;
224
+ this._scheduleRedraw();
225
+ } else {
226
+ console.warn("RasterMeshLayer: texture upload failed after ".concat(RasterMeshLayer.MAX_IMAGE_RETRY_ATTEMPTS, " attempts, giving up."));
227
+ this._imageRetryCount = 0;
228
+ }
229
+ } else {
230
+ this._imageRetryCount = 0;
231
+ }
232
+ }
233
+ var _this$state = this.state,
234
+ model = _this$state.model,
235
+ images = _this$state.images;
236
+ var moduleProps = this.props.moduleProps;
237
+ if (!model || !images || Object.keys(images).length === 0 || !Object.values(images).every(function (item) {
238
+ return item;
239
+ })) {
240
+ return;
241
+ }
242
+
243
+ // Set mesh-specific UBO uniforms
244
+ model.shaderInputs.setProps({
245
+ rasterMesh: {
246
+ meshOpacity: (_this$props$opacity = this.props.opacity) !== null && _this$props$opacity !== void 0 ? _this$props$opacity : 1,
247
+ meshFlatShading: !this.state.hasNormals ? 1.0 : 0.0
248
+ }
249
+ });
250
+
251
+ // Apply each custom module's uniforms/bindings to shaderInputs directly.
252
+ // We call getUniforms once per module and write the results into
253
+ // shaderInputs.moduleUniforms/moduleBindings, bypassing setProps() which
254
+ // would call getUniforms a second time on already-transformed values.
255
+ var allModuleProps = _objectSpread(_objectSpread({}, moduleProps), images);
256
+ var modules = this.props.modules || [];
257
+ applyModuleUniforms(model.shaderInputs, modules, allModuleProps);
258
+ var drawSuccess = model.draw(this.context.renderPass);
259
+ if (!drawSuccess) {
260
+ this._scheduleRedraw();
261
+ }
262
+ }
263
+ }, {
264
+ key: "_scheduleRedraw",
265
+ value: function _scheduleRedraw() {
266
+ var _this2 = this;
267
+ if (this._redrawScheduled) return;
268
+ this._redrawScheduled = true;
269
+ requestAnimationFrame(function () {
270
+ var _this2$context$layerM;
271
+ _this2._redrawScheduled = false;
272
+ if (_this2.context.deck) {
273
+ // @ts-expect-error accessing private deck.gl property
274
+ _this2.context.deck._needsRedraw = 'RasterMeshLayer pipeline pending';
275
+ }
276
+ (_this2$context$layerM = _this2.context.layerManager) === null || _this2$context$layerM === void 0 || _this2$context$layerM.setNeedsRedraw('RasterMeshLayer pipeline pending');
277
+ if (typeof _this2.props.onRedrawNeeded === 'function') {
278
+ _this2.props.onRedrawNeeded();
279
+ }
280
+ });
281
+ }
282
+ }, {
283
+ key: "finalizeState",
284
+ value: function finalizeState() {
285
+ _superPropGet(RasterMeshLayer, "finalizeState", this, 3)([this.context]);
286
+ if (this.state.images) {
287
+ for (var _i = 0, _Object$values = Object.values(this.state.images); _i < _Object$values.length; _i++) {
288
+ var image = _Object$values[_i];
289
+ if (Array.isArray(image)) {
290
+ image.map(function (x) {
291
+ var _x$delete;
292
+ return x && (x.destroy ? x.destroy() : (_x$delete = x["delete"]) === null || _x$delete === void 0 ? void 0 : _x$delete.call(x));
293
+ });
294
+ } else if (image) {
295
+ var _image$delete;
296
+ image.destroy ? image.destroy() : (_image$delete = image["delete"]) === null || _image$delete === void 0 ? void 0 : _image$delete.call(image);
297
+ }
298
+ }
299
+ }
300
+ }
301
+ }, {
302
+ key: "getModel",
303
+ value: function getModel(mesh) {
304
+ var device = this.context.device || this.context.gl;
305
+ var model = new Model(device, Object.assign({}, this.getShaders(), {
306
+ id: this.props.id,
307
+ geometry: getGeometry(mesh),
308
+ isInstanced: false
309
+ }));
310
+ return model;
311
+ }
312
+ }]);
313
+ }(SimpleMeshLayer);
314
+ _defineProperty(RasterMeshLayer, "MAX_IMAGE_RETRY_ATTEMPTS", 3);
315
+ export { RasterMeshLayer as default };
316
+ RasterMeshLayer.layerName = 'RasterMeshLayer';
317
+ RasterMeshLayer.defaultProps = defaultProps;
318
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTaW1wbGVNZXNoTGF5ZXIiLCJHZW9tZXRyeSIsIk1vZGVsIiwiYnVpbGRSYXN0ZXJNZXNoRnJhZ21lbnRTaGFkZXIiLCJidWlsZFJhc3Rlck1lc2hWZXJ0ZXhTaGFkZXIiLCJyYXN0ZXJNZXNoVW5pZm9ybXMiLCJlbnN1cmVSYXN0ZXJIb29rc1JlZ2lzdGVyZWQiLCJwcmVwYXJlTHVtYU1vZHVsZXMiLCJsb2FkSW1hZ2VzIiwibW9kdWxlc0VxdWFsIiwiYXBwbHlNb2R1bGVVbmlmb3JtcyIsInBhdGNoUGlwZWxpbmVWYWxpZGF0aW9uIiwicmFzdGVyUHJvY2Vzc2luZ1VuaWZvcm1zIiwiVE9QT0xPR1kiLCJ2YWxpZGF0ZUdlb21ldHJ5QXR0cmlidXRlcyIsImF0dHJpYnV0ZXMiLCJwb3NpdGlvbnMiLCJQT1NJVElPTiIsIkVycm9yIiwiZ2V0R2VvbWV0cnkiLCJkYXRhIiwiZGVmYXVsdFByb3BzIiwiX29iamVjdFNwcmVhZCIsIm1vZHVsZXMiLCJ0eXBlIiwidmFsdWUiLCJjb21wYXJlIiwiaW1hZ2VzIiwibW9kdWxlUHJvcHMiLCJvblJlZHJhd05lZWRlZCIsIlJhc3Rlck1lc2hMYXllciIsIl9TaW1wbGVNZXNoTGF5ZXIiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiX2NhbGxTdXBlciIsImNvbmNhdCIsIl9kZWZpbmVQcm9wZXJ0eSIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImtleSIsImluaXRpYWxpemVTdGF0ZSIsInNldFN0YXRlIiwiX3N1cGVyUHJvcEdldCIsImdldFNoYWRlcnMiLCJfdGhpcyRwcm9wcyRtb2R1bGVzIiwicHJvcHMiLCJsdW1hTW9kdWxlcyIsInBhcmVudFNoYWRlcnMiLCJwYXJlbnRNb2R1bGVzIiwiZmlsdGVyIiwibSIsIm5hbWUiLCJ2cyIsImZzIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwidXBkYXRlU3RhdGUiLCJwYXJhbXMiLCJvbGRQcm9wcyIsImNoYW5nZUZsYWdzIiwiY29udGV4dCIsIm9sZE1vZHVsZXMiLCJtZXNoIiwiZXh0ZW5zaW9uc0NoYW5nZWQiLCJfdGhpcyRnZXRBdHRyaWJ1dGVNYW4iLCJzdGF0ZSIsIm1vZGVsIiwiX3RoaXMkc3RhdGUkbW9kZWwkZGVzIiwiX3RoaXMkc3RhdGUkbW9kZWwiLCJkZXN0cm95IiwiY2FsbCIsImdldE1vZGVsIiwiaGFzTm9ybWFscyIsIkJvb2xlYW4iLCJOT1JNQUwiLCJub3JtYWxzIiwiZ2V0QXR0cmlidXRlTWFuYWdlciIsImludmFsaWRhdGVBbGwiLCJ1cGRhdGVJbWFnZXMiLCJfdGhpcyRzdGF0ZSRtb2RlbCRzZXQiLCJfdGhpcyRzdGF0ZSRtb2RlbDIiLCJzZXRUb3BvbG9neSIsIndpcmVmcmFtZSIsIkxJTkVfU1RSSVAiLCJUUklBTkdMRV9MSVNUIiwiX3JlZiIsImRldmljZSIsImdsIiwiX2xvYWRJbWFnZXMiLCJpbWFnZXNEYXRhIiwib2xkSW1hZ2VzRGF0YSIsIm5ld0ltYWdlcyIsImhhc1BlbmRpbmdVcGxvYWRzIiwiX3BlbmRpbmdJbWFnZVJldHJ5IiwiX2ltYWdlUmV0cnlDb3VudCIsIl9zY2hlZHVsZVJlZHJhdyIsImRyYXciLCJfb3B0cyIsIl90aGlzJHByb3BzJG9wYWNpdHkiLCJfdGhpcyRjb250ZXh0JGRldmljZSIsInJldHJ5IiwiX2xvYWRJbWFnZXMyIiwiTUFYX0lNQUdFX1JFVFJZX0FUVEVNUFRTIiwiY29uc29sZSIsIndhcm4iLCJfdGhpcyRzdGF0ZSIsIk9iamVjdCIsImtleXMiLCJ2YWx1ZXMiLCJldmVyeSIsIml0ZW0iLCJzaGFkZXJJbnB1dHMiLCJzZXRQcm9wcyIsInJhc3Rlck1lc2giLCJtZXNoT3BhY2l0eSIsIm9wYWNpdHkiLCJtZXNoRmxhdFNoYWRpbmciLCJhbGxNb2R1bGVQcm9wcyIsImRyYXdTdWNjZXNzIiwicmVuZGVyUGFzcyIsIl90aGlzMiIsIl9yZWRyYXdTY2hlZHVsZWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJfdGhpczIkY29udGV4dCRsYXllck0iLCJkZWNrIiwiX25lZWRzUmVkcmF3IiwibGF5ZXJNYW5hZ2VyIiwic2V0TmVlZHNSZWRyYXciLCJmaW5hbGl6ZVN0YXRlIiwiX2kiLCJfT2JqZWN0JHZhbHVlcyIsImltYWdlIiwiaXNBcnJheSIsIm1hcCIsIngiLCJfeCRkZWxldGUiLCJfaW1hZ2UkZGVsZXRlIiwiYXNzaWduIiwiaWQiLCJnZW9tZXRyeSIsImlzSW5zdGFuY2VkIiwiZGVmYXVsdCIsImxheWVyTmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9yYXN0ZXIvcmFzdGVyLW1lc2gtbGF5ZXIvcmFzdGVyLW1lc2gtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtVcGRhdGVQYXJhbWV0ZXJzfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7U2ltcGxlTWVzaExheWVyLCBTaW1wbGVNZXNoTGF5ZXJQcm9wc30gZnJvbSAnQGRlY2suZ2wvbWVzaC1sYXllcnMnO1xuaW1wb3J0IHtHZW9tZXRyeX0gZnJvbSAnQGx1bWEuZ2wvZW5naW5lJztcbmltcG9ydCB7TW9kZWx9IGZyb20gJ0BsdW1hLmdsL2VuZ2luZSc7XG5cbmltcG9ydCB7XG4gIGJ1aWxkUmFzdGVyTWVzaEZyYWdtZW50U2hhZGVyLFxuICBidWlsZFJhc3Rlck1lc2hWZXJ0ZXhTaGFkZXIsXG4gIHJhc3Rlck1lc2hVbmlmb3Jtc1xufSBmcm9tICcuL3Jhc3Rlci1tZXNoLWxheWVyLXNoYWRlcnMnO1xuaW1wb3J0IHtcbiAgZW5zdXJlUmFzdGVySG9va3NSZWdpc3RlcmVkLFxuICBwcmVwYXJlTHVtYU1vZHVsZXNcbn0gZnJvbSAnLi4vcmFzdGVyLWxheWVyL3Jhc3Rlci1sYXllci1zaGFkZXJzJztcbmltcG9ydCB7bG9hZEltYWdlc30gZnJvbSAnLi4vaW1hZ2VzJztcbmltcG9ydCB0eXBlIHtSYXN0ZXJMYXllckFkZGVkUHJvcHMsIEltYWdlU3RhdGV9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7bW9kdWxlc0VxdWFsLCBhcHBseU1vZHVsZVVuaWZvcm1zfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7cGF0Y2hQaXBlbGluZVZhbGlkYXRpb259IGZyb20gJy4uL3BpcGVsaW5lLXZhbGlkYXRpb24tcGF0Y2gnO1xuaW1wb3J0IHtyYXN0ZXJQcm9jZXNzaW5nVW5pZm9ybXN9IGZyb20gJy4uL3Jhc3Rlci1wcm9jZXNzaW5nLXVuaWZvcm1zJztcbmltcG9ydCB7VE9QT0xPR1l9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxudHlwZSBNZXNoID0gU2ltcGxlTWVzaExheWVyUHJvcHNbJ21lc2gnXTtcblxuaW50ZXJmYWNlIE1lc2hEYXRhIHtcbiAgYXR0cmlidXRlcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBwb3NpdGlvbnM/OiB1bmtub3duO1xuICBQT1NJVElPTj86IHVua25vd247XG4gIE5PUk1BTD86IHVua25vd247XG4gIG5vcm1hbHM/OiB1bmtub3duO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUdlb21ldHJ5QXR0cmlidXRlcyhhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICBpZiAoIShhdHRyaWJ1dGVzLnBvc2l0aW9ucyB8fCBhdHRyaWJ1dGVzLlBPU0lUSU9OKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdSYXN0ZXJNZXNoTGF5ZXIgcmVxdWlyZXMgXCJwb3NpdGlvbnNcIiBvciBcIlBPU0lUSU9OXCIgYXR0cmlidXRlIGluIG1lc2ggcHJvcGVydHkuJ1xuICAgICk7XG4gIH1cbn1cblxuLypcbiAqIENvbnZlcnQgbWVzaCBkYXRhIGludG8gZ2VvbWV0cnlcbiAqIEByZXR1cm5zIGdlb21ldHJ5XG4gKi9cbmZ1bmN0aW9uIGdldEdlb21ldHJ5KGRhdGE6IE1lc2hEYXRhIHwgR2VvbWV0cnkpOiBHZW9tZXRyeSB7XG4gIGlmICgnYXR0cmlidXRlcycgaW4gZGF0YSAmJiBkYXRhLmF0dHJpYnV0ZXMpIHtcbiAgICB2YWxpZGF0ZUdlb21ldHJ5QXR0cmlidXRlcyhkYXRhLmF0dHJpYnV0ZXMpO1xuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgR2VvbWV0cnkpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEdlb21ldHJ5KGRhdGEgYXMgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBHZW9tZXRyeT5bMF0pO1xuICB9IGVsc2UgaWYgKCdwb3NpdGlvbnMnIGluIGRhdGEgfHwgJ1BPU0lUSU9OJyBpbiBkYXRhKSB7XG4gICAgdmFsaWRhdGVHZW9tZXRyeUF0dHJpYnV0ZXMoZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gICAgcmV0dXJuIG5ldyBHZW9tZXRyeSh7XG4gICAgICBhdHRyaWJ1dGVzOiBkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgfSBhcyBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIEdlb21ldHJ5PlswXSk7XG4gIH1cbiAgdGhyb3cgRXJyb3IoJ0ludmFsaWQgbWVzaCcpO1xufVxuXG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIC4uLlNpbXBsZU1lc2hMYXllci5kZWZhdWx0UHJvcHMsXG4gIG1vZHVsZXM6IHt0eXBlOiAnYXJyYXknLCB2YWx1ZTogW10sIGNvbXBhcmU6IHRydWV9LFxuICBpbWFnZXM6IHt0eXBlOiAnb2JqZWN0JywgdmFsdWU6IHt9LCBjb21wYXJlOiB0cnVlfSxcbiAgbW9kdWxlUHJvcHM6IHt0eXBlOiAnb2JqZWN0JywgdmFsdWU6IHt9LCBjb21wYXJlOiB0cnVlfSxcbiAgb25SZWRyYXdOZWVkZWQ6IHt0eXBlOiAnZnVuY3Rpb24nLCB2YWx1ZTogbnVsbCwgY29tcGFyZTogZmFsc2V9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSYXN0ZXJNZXNoTGF5ZXIgZXh0ZW5kcyBTaW1wbGVNZXNoTGF5ZXI8YW55LCBSYXN0ZXJMYXllckFkZGVkUHJvcHM+IHtcbiAgZGVjbGFyZSBzdGF0ZTogU2ltcGxlTWVzaExheWVyPFJhc3RlckxheWVyQWRkZWRQcm9wcz5bJ3N0YXRlJ10gJiB7XG4gICAgaW1hZ2VzOiBJbWFnZVN0YXRlO1xuICB9O1xuXG4gIF9yZWRyYXdTY2hlZHVsZWQgPSBmYWxzZTtcbiAgX3BlbmRpbmdJbWFnZVJldHJ5OiBSYXN0ZXJMYXllckFkZGVkUHJvcHNbJ2ltYWdlcyddIHwgbnVsbCA9IG51bGw7XG4gIC8qKiBIb3cgbWFueSBjb25zZWN1dGl2ZSBmcmFtZXMgaGF2ZSByZXRyaWVkIGEgZmFpbGVkIHRleHR1cmUgdXBsb2FkLiAqL1xuICBfaW1hZ2VSZXRyeUNvdW50ID0gMDtcbiAgc3RhdGljIHJlYWRvbmx5IE1BWF9JTUFHRV9SRVRSWV9BVFRFTVBUUyA9IDM7XG5cbiAgaW5pdGlhbGl6ZVN0YXRlKCk6IHZvaWQge1xuICAgIHBhdGNoUGlwZWxpbmVWYWxpZGF0aW9uKCk7XG4gICAgZW5zdXJlUmFzdGVySG9va3NSZWdpc3RlcmVkKCk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7aW1hZ2VzOiB7fX0pO1xuICAgIHN1cGVyLmluaXRpYWxpemVTdGF0ZSgpO1xuICB9XG5cbiAgZ2V0U2hhZGVycygpOiBhbnkge1xuICAgIGNvbnN0IHttb2R1bGVzID0gW119ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IGx1bWFNb2R1bGVzID0gcHJlcGFyZUx1bWFNb2R1bGVzKG1vZHVsZXMpO1xuICAgIGNvbnN0IHBhcmVudFNoYWRlcnMgPSBzdXBlci5nZXRTaGFkZXJzKCk7XG5cbiAgICAvLyBGaWx0ZXIgb3V0IHNpbXBsZU1lc2hVbmlmb3JtcyBmcm9tIHBhcmVudCDigJQgUmFzdGVyTWVzaExheWVyIHVzZXMgaXRzIG93blxuICAgIC8vIHNoYWRlcnMgdGhhdCBkb24ndCByZWZlcmVuY2UgU2ltcGxlTWVzaCB1bmlmb3JtcywgYW5kIGV2ZXJ5IFVCTyBjb3VudHNcbiAgICAvLyBhZ2FpbnN0IHRoZSBXZWJHTDIgR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQlVGRkVSUyBsaW1pdCAodHlwaWNhbGx5IDEyKS5cbiAgICBjb25zdCBwYXJlbnRNb2R1bGVzID0gKHBhcmVudFNoYWRlcnMubW9kdWxlcyB8fCBbXSkuZmlsdGVyKFxuICAgICAgKG06IHtuYW1lPzogc3RyaW5nfSkgPT4gbS5uYW1lICE9PSAnc2ltcGxlTWVzaCdcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnBhcmVudFNoYWRlcnMsXG4gICAgICB2czogYnVpbGRSYXN0ZXJNZXNoVmVydGV4U2hhZGVyKCksXG4gICAgICBmczogYnVpbGRSYXN0ZXJNZXNoRnJhZ21lbnRTaGFkZXIoKSxcbiAgICAgIG1vZHVsZXM6IFsuLi5wYXJlbnRNb2R1bGVzLCByYXN0ZXJNZXNoVW5pZm9ybXMsIHJhc3RlclByb2Nlc3NpbmdVbmlmb3JtcywgLi4ubHVtYU1vZHVsZXNdXG4gICAgfTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG4gIHVwZGF0ZVN0YXRlKHBhcmFtczogVXBkYXRlUGFyYW1ldGVyczxTaW1wbGVNZXNoTGF5ZXI8YW55LCBSYXN0ZXJMYXllckFkZGVkUHJvcHM+Pik6IHZvaWQge1xuICAgIGNvbnN0IHtwcm9wcywgb2xkUHJvcHMsIGNoYW5nZUZsYWdzLCBjb250ZXh0fSA9IHBhcmFtcztcbiAgICBzdXBlci51cGRhdGVTdGF0ZSh7cHJvcHMsIG9sZFByb3BzLCBjaGFuZ2VGbGFncywgY29udGV4dH0pO1xuXG4gICAgY29uc3QgbW9kdWxlcyA9IHByb3BzICYmIHByb3BzLm1vZHVsZXM7XG4gICAgY29uc3Qgb2xkTW9kdWxlcyA9IG9sZFByb3BzICYmIG9sZFByb3BzLm1vZHVsZXM7XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5tZXNoICE9PSBvbGRQcm9wcy5tZXNoIHx8XG4gICAgICBjaGFuZ2VGbGFncy5leHRlbnNpb25zQ2hhbmdlZCB8fFxuICAgICAgIW1vZHVsZXNFcXVhbChtb2R1bGVzLCBvbGRNb2R1bGVzKVxuICAgICkge1xuICAgICAgaWYgKHRoaXMuc3RhdGUubW9kZWwpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5tb2RlbC5kZXN0cm95Py4oKTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5tZXNoKSB7XG4gICAgICAgIHRoaXMuc3RhdGUubW9kZWwgPSB0aGlzLmdldE1vZGVsKHByb3BzLm1lc2ggYXMgTWVzaCk7XG5cbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9ICgocHJvcHMubWVzaCBhcyBNZXNoRGF0YSkuYXR0cmlidXRlcyB8fCBwcm9wcy5tZXNoKSBhcyBNZXNoRGF0YTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaGFzTm9ybWFsczogQm9vbGVhbihhdHRyaWJ1dGVzLk5PUk1BTCB8fCBhdHRyaWJ1dGVzLm5vcm1hbHMpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5nZXRBdHRyaWJ1dGVNYW5hZ2VyKCk/LmludmFsaWRhdGVBbGwoKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMgJiYgcHJvcHMuaW1hZ2VzKSB7XG4gICAgICB0aGlzLnVwZGF0ZUltYWdlcyh7cHJvcHMsIG9sZFByb3BzfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhdGUubW9kZWwpIHtcbiAgICAgIHRoaXMuc3RhdGUubW9kZWwuc2V0VG9wb2xvZ3k/LihcbiAgICAgICAgdGhpcy5wcm9wcy53aXJlZnJhbWUgPyBUT1BPTE9HWS5MSU5FX1NUUklQIDogVE9QT0xPR1kuVFJJQU5HTEVfTElTVFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVJbWFnZXMoe1xuICAgIHByb3BzLFxuICAgIG9sZFByb3BzXG4gIH06IHtcbiAgICBwcm9wczogUmFzdGVyTGF5ZXJBZGRlZFByb3BzO1xuICAgIG9sZFByb3BzOiBSYXN0ZXJMYXllckFkZGVkUHJvcHM7XG4gIH0pOiB2b2lkIHtcbiAgICBjb25zdCB7aW1hZ2VzfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgZGV2aWNlID0gdGhpcy5jb250ZXh0LmRldmljZTtcbiAgICBjb25zdCBnbCA9IGRldmljZT8uZ2wgfHwgdGhpcy5jb250ZXh0LmdsO1xuXG4gICAgY29uc3Qge2ltYWdlczogbmV3SW1hZ2VzLCBoYXNQZW5kaW5nVXBsb2Fkc30gPSBsb2FkSW1hZ2VzKHtcbiAgICAgIGdsLFxuICAgICAgZGV2aWNlLFxuICAgICAgaW1hZ2VzLFxuICAgICAgaW1hZ2VzRGF0YTogcHJvcHMuaW1hZ2VzLFxuICAgICAgb2xkSW1hZ2VzRGF0YTogb2xkUHJvcHMuaW1hZ2VzXG4gICAgfSk7XG5cbiAgICBpZiAobmV3SW1hZ2VzKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtpbWFnZXM6IG5ld0ltYWdlc30pO1xuICAgIH1cbiAgICAvLyBJZiBhbnkgdGV4dHVyZSB1cGxvYWQgZmFpbGVkLCBzdGFzaCB0aGUgaW1hZ2VzRGF0YSBhbmQgc2NoZWR1bGUgYSByZXRyeVxuICAgIC8vIG5leHQgZnJhbWUuIFRoZSByZXRyeSBwYXNzZXMgb2xkSW1hZ2VzRGF0YToge30gc28gYWxsIGtleXMgYnlwYXNzIHRoZVxuICAgIC8vIGlzRXF1YWwgc2tpcC1jaGVjay5cbiAgICBpZiAoaGFzUGVuZGluZ1VwbG9hZHMpIHtcbiAgICAgIHRoaXMuX3BlbmRpbmdJbWFnZVJldHJ5ID0gcHJvcHMuaW1hZ2VzO1xuICAgICAgdGhpcy5faW1hZ2VSZXRyeUNvdW50ID0gMDtcbiAgICAgIHRoaXMuX3NjaGVkdWxlUmVkcmF3KCk7XG4gICAgfVxuICB9XG5cbiAgZHJhdyhfb3B0czogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICAvLyBJZiBhIHByZXZpb3VzIGZyYW1lIGhhZCBmYWlsZWQgdGV4dHVyZSB1cGxvYWRzLCByZXRyeSB0aGVtIG5vdyBiZWZvcmVcbiAgICAvLyBjaGVja2luZyB3aGV0aGVyIHRoZSBpbWFnZXMgc3RhdGUgaXMgY29tcGxldGUuIFBhc3Mgb2xkSW1hZ2VzRGF0YToge30gc29cbiAgICAvLyBhbGwga2V5cyBhcmUgdHJlYXRlZCBhcyBuZXcgYW5kIGJ5cGFzcyB0aGUgaXNFcXVhbCBza2lwLWNoZWNrLlxuICAgIC8vIFJldHJpZXMgYXJlIGJvdW5kZWQgdG8gTUFYX0lNQUdFX1JFVFJZX0FUVEVNUFRTIHRvIGF2b2lkIGFuIGluZmluaXRlXG4gICAgLy8gcmVkcmF3IGxvb3Agd2hlbiBpbWFnZSBkYXRhIGlzIHBlcm1hbmVudGx5IGludmFsaWQuXG4gICAgaWYgKHRoaXMuX3BlbmRpbmdJbWFnZVJldHJ5KSB7XG4gICAgICBjb25zdCByZXRyeSA9IHRoaXMuX3BlbmRpbmdJbWFnZVJldHJ5O1xuICAgICAgdGhpcy5fcGVuZGluZ0ltYWdlUmV0cnkgPSBudWxsO1xuICAgICAgY29uc3Qge2ltYWdlczogbmV3SW1hZ2VzLCBoYXNQZW5kaW5nVXBsb2Fkc30gPSBsb2FkSW1hZ2VzKHtcbiAgICAgICAgZ2w6IHRoaXMuY29udGV4dC5kZXZpY2U/LmdsIHx8IHRoaXMuY29udGV4dC5nbCxcbiAgICAgICAgZGV2aWNlOiB0aGlzLmNvbnRleHQuZGV2aWNlLFxuICAgICAgICBpbWFnZXM6IHRoaXMuc3RhdGUuaW1hZ2VzLFxuICAgICAgICBpbWFnZXNEYXRhOiByZXRyeSxcbiAgICAgICAgb2xkSW1hZ2VzRGF0YToge31cbiAgICAgIH0pO1xuICAgICAgaWYgKG5ld0ltYWdlcykge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtpbWFnZXM6IG5ld0ltYWdlc30pO1xuICAgICAgfVxuICAgICAgaWYgKGhhc1BlbmRpbmdVcGxvYWRzKSB7XG4gICAgICAgIHRoaXMuX2ltYWdlUmV0cnlDb3VudCsrO1xuICAgICAgICBpZiAodGhpcy5faW1hZ2VSZXRyeUNvdW50IDwgUmFzdGVyTWVzaExheWVyLk1BWF9JTUFHRV9SRVRSWV9BVFRFTVBUUykge1xuICAgICAgICAgIHRoaXMuX3BlbmRpbmdJbWFnZVJldHJ5ID0gcmV0cnk7XG4gICAgICAgICAgdGhpcy5fc2NoZWR1bGVSZWRyYXcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgUmFzdGVyTWVzaExheWVyOiB0ZXh0dXJlIHVwbG9hZCBmYWlsZWQgYWZ0ZXIgJHtSYXN0ZXJNZXNoTGF5ZXIuTUFYX0lNQUdFX1JFVFJZX0FUVEVNUFRTfSBhdHRlbXB0cywgZ2l2aW5nIHVwLmBcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuX2ltYWdlUmV0cnlDb3VudCA9IDA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2ltYWdlUmV0cnlDb3VudCA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qge21vZGVsLCBpbWFnZXN9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB7bW9kdWxlUHJvcHN9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmIChcbiAgICAgICFtb2RlbCB8fFxuICAgICAgIWltYWdlcyB8fFxuICAgICAgT2JqZWN0LmtleXMoaW1hZ2VzKS5sZW5ndGggPT09IDAgfHxcbiAgICAgICFPYmplY3QudmFsdWVzKGltYWdlcykuZXZlcnkoaXRlbSA9PiBpdGVtKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNldCBtZXNoLXNwZWNpZmljIFVCTyB1bmlmb3Jtc1xuICAgIG1vZGVsLnNoYWRlcklucHV0cy5zZXRQcm9wcyh7XG4gICAgICByYXN0ZXJNZXNoOiB7XG4gICAgICAgIG1lc2hPcGFjaXR5OiB0aGlzLnByb3BzLm9wYWNpdHkgPz8gMSxcbiAgICAgICAgbWVzaEZsYXRTaGFkaW5nOiAhdGhpcy5zdGF0ZS5oYXNOb3JtYWxzID8gMS4wIDogMC4wXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBBcHBseSBlYWNoIGN1c3RvbSBtb2R1bGUncyB1bmlmb3Jtcy9iaW5kaW5ncyB0byBzaGFkZXJJbnB1dHMgZGlyZWN0bHkuXG4gICAgLy8gV2UgY2FsbCBnZXRVbmlmb3JtcyBvbmNlIHBlciBtb2R1bGUgYW5kIHdyaXRlIHRoZSByZXN1bHRzIGludG9cbiAgICAvLyBzaGFkZXJJbnB1dHMubW9kdWxlVW5pZm9ybXMvbW9kdWxlQmluZGluZ3MsIGJ5cGFzc2luZyBzZXRQcm9wcygpIHdoaWNoXG4gICAgLy8gd291bGQgY2FsbCBnZXRVbmlmb3JtcyBhIHNlY29uZCB0aW1lIG9uIGFscmVhZHktdHJhbnNmb3JtZWQgdmFsdWVzLlxuICAgIGNvbnN0IGFsbE1vZHVsZVByb3BzID0gey4uLm1vZHVsZVByb3BzLCAuLi5pbWFnZXN9O1xuICAgIGNvbnN0IG1vZHVsZXMgPSB0aGlzLnByb3BzLm1vZHVsZXMgfHwgW107XG4gICAgYXBwbHlNb2R1bGVVbmlmb3Jtcyhtb2RlbC5zaGFkZXJJbnB1dHMsIG1vZHVsZXMsIGFsbE1vZHVsZVByb3BzKTtcblxuICAgIGNvbnN0IGRyYXdTdWNjZXNzID0gbW9kZWwuZHJhdyh0aGlzLmNvbnRleHQucmVuZGVyUGFzcyk7XG4gICAgaWYgKCFkcmF3U3VjY2Vzcykge1xuICAgICAgdGhpcy5fc2NoZWR1bGVSZWRyYXcoKTtcbiAgICB9XG4gIH1cblxuICBfc2NoZWR1bGVSZWRyYXcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JlZHJhd1NjaGVkdWxlZCkgcmV0dXJuO1xuICAgIHRoaXMuX3JlZHJhd1NjaGVkdWxlZCA9IHRydWU7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHRoaXMuX3JlZHJhd1NjaGVkdWxlZCA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuY29udGV4dC5kZWNrKSB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYWNjZXNzaW5nIHByaXZhdGUgZGVjay5nbCBwcm9wZXJ0eVxuICAgICAgICB0aGlzLmNvbnRleHQuZGVjay5fbmVlZHNSZWRyYXcgPSAnUmFzdGVyTWVzaExheWVyIHBpcGVsaW5lIHBlbmRpbmcnO1xuICAgICAgfVxuICAgICAgdGhpcy5jb250ZXh0LmxheWVyTWFuYWdlcj8uc2V0TmVlZHNSZWRyYXcoJ1Jhc3Rlck1lc2hMYXllciBwaXBlbGluZSBwZW5kaW5nJyk7XG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25SZWRyYXdOZWVkZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblJlZHJhd05lZWRlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZmluYWxpemVTdGF0ZSgpOiB2b2lkIHtcbiAgICBzdXBlci5maW5hbGl6ZVN0YXRlKHRoaXMuY29udGV4dCk7XG5cbiAgICBpZiAodGhpcy5zdGF0ZS5pbWFnZXMpIHtcbiAgICAgIGZvciAoY29uc3QgaW1hZ2Ugb2YgT2JqZWN0LnZhbHVlcyh0aGlzLnN0YXRlLmltYWdlcykpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW1hZ2UpKSB7XG4gICAgICAgICAgaW1hZ2UubWFwKHggPT4geCAmJiAoeC5kZXN0cm95ID8geC5kZXN0cm95KCkgOiB4LmRlbGV0ZT8uKCkpKTtcbiAgICAgICAgfSBlbHNlIGlmIChpbWFnZSkge1xuICAgICAgICAgIGltYWdlLmRlc3Ryb3kgPyBpbWFnZS5kZXN0cm95KCkgOiBpbWFnZS5kZWxldGU/LigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldE1vZGVsKG1lc2g6IE1lc2gpOiBNb2RlbCB7XG4gICAgY29uc3QgZGV2aWNlID0gdGhpcy5jb250ZXh0LmRldmljZSB8fCB0aGlzLmNvbnRleHQuZ2w7XG5cbiAgICBjb25zdCBtb2RlbCA9IG5ldyBNb2RlbChcbiAgICAgIGRldmljZSxcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZ2V0U2hhZGVycygpLCB7XG4gICAgICAgIGlkOiB0aGlzLnByb3BzLmlkLFxuICAgICAgICBnZW9tZXRyeTogZ2V0R2VvbWV0cnkobWVzaCBhcyBNZXNoRGF0YSB8IEdlb21ldHJ5KSxcbiAgICAgICAgaXNJbnN0YW5jZWQ6IGZhbHNlXG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cbn1cblxuUmFzdGVyTWVzaExheWVyLmxheWVyTmFtZSA9ICdSYXN0ZXJNZXNoTGF5ZXInO1xuUmFzdGVyTWVzaExheWVyLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7O0FBR0EsU0FBUUEsZUFBZSxRQUE2QixzQkFBc0I7QUFDMUUsU0FBUUMsUUFBUSxRQUFPLGlCQUFpQjtBQUN4QyxTQUFRQyxLQUFLLFFBQU8saUJBQWlCO0FBRXJDLFNBQ0VDLDZCQUE2QixFQUM3QkMsMkJBQTJCLEVBQzNCQyxrQkFBa0IsUUFDYiw2QkFBNkI7QUFDcEMsU0FDRUMsMkJBQTJCLEVBQzNCQyxrQkFBa0IsUUFDYixzQ0FBc0M7QUFDN0MsU0FBUUMsVUFBVSxRQUFPLFdBQVc7QUFFcEMsU0FBUUMsWUFBWSxFQUFFQyxtQkFBbUIsUUFBTyxTQUFTO0FBQ3pELFNBQVFDLHVCQUF1QixRQUFPLDhCQUE4QjtBQUNwRSxTQUFRQyx3QkFBd0IsUUFBTywrQkFBK0I7QUFDdEUsU0FBUUMsUUFBUSxRQUFPLHNCQUFzQjtBQWE3QyxTQUFTQywwQkFBMEJBLENBQUNDLFVBQW1DLEVBQUU7RUFDdkUsSUFBSSxFQUFFQSxVQUFVLENBQUNDLFNBQVMsSUFBSUQsVUFBVSxDQUFDRSxRQUFRLENBQUMsRUFBRTtJQUNsRCxNQUFNLElBQUlDLEtBQUssQ0FDYixnRkFDRixDQUFDO0VBQ0g7QUFDRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLFdBQVdBLENBQUNDLElBQXlCLEVBQVk7RUFDeEQsSUFBSSxZQUFZLElBQUlBLElBQUksSUFBSUEsSUFBSSxDQUFDTCxVQUFVLEVBQUU7SUFDM0NELDBCQUEwQixDQUFDTSxJQUFJLENBQUNMLFVBQVUsQ0FBQztJQUMzQyxJQUFJSyxJQUFJLFlBQVluQixRQUFRLEVBQUU7TUFDNUIsT0FBT21CLElBQUk7SUFDYjtJQUNBLE9BQU8sSUFBSW5CLFFBQVEsQ0FBQ21CLElBQWlELENBQUM7RUFDeEUsQ0FBQyxNQUFNLElBQUksV0FBVyxJQUFJQSxJQUFJLElBQUksVUFBVSxJQUFJQSxJQUFJLEVBQUU7SUFDcEROLDBCQUEwQixDQUFDTSxJQUErQixDQUFDO0lBQzNELE9BQU8sSUFBSW5CLFFBQVEsQ0FBQztNQUNsQmMsVUFBVSxFQUFFSztJQUNkLENBQThDLENBQUM7RUFDakQ7RUFDQSxNQUFNRixLQUFLLENBQUMsY0FBYyxDQUFDO0FBQzdCO0FBRUEsSUFBTUcsWUFBWSxHQUFBQyxhQUFBLENBQUFBLGFBQUEsS0FDYnRCLGVBQWUsQ0FBQ3FCLFlBQVk7RUFDL0JFLE9BQU8sRUFBRTtJQUFDQyxJQUFJLEVBQUUsT0FBTztJQUFFQyxLQUFLLEVBQUUsRUFBRTtJQUFFQyxPQUFPLEVBQUU7RUFBSSxDQUFDO0VBQ2xEQyxNQUFNLEVBQUU7SUFBQ0gsSUFBSSxFQUFFLFFBQVE7SUFBRUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUFFQyxPQUFPLEVBQUU7RUFBSSxDQUFDO0VBQ2xERSxXQUFXLEVBQUU7SUFBQ0osSUFBSSxFQUFFLFFBQVE7SUFBRUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUFFQyxPQUFPLEVBQUU7RUFBSSxDQUFDO0VBQ3ZERyxjQUFjLEVBQUU7SUFBQ0wsSUFBSSxFQUFFLFVBQVU7SUFBRUMsS0FBSyxFQUFFLElBQUk7SUFBRUMsT0FBTyxFQUFFO0VBQUs7QUFBQyxFQUNoRTtBQUFDLElBRW1CSSxlQUFlLDBCQUFBQyxnQkFBQTtFQUFBLFNBQUFELGdCQUFBO0lBQUEsSUFBQUUsS0FBQTtJQUFBQyxlQUFBLE9BQUFILGVBQUE7SUFBQSxTQUFBSSxJQUFBLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxFQUFBQyxJQUFBLE9BQUFDLEtBQUEsQ0FBQUosSUFBQSxHQUFBSyxJQUFBLE1BQUFBLElBQUEsR0FBQUwsSUFBQSxFQUFBSyxJQUFBO01BQUFGLElBQUEsQ0FBQUUsSUFBQSxJQUFBSixTQUFBLENBQUFJLElBQUE7SUFBQTtJQUFBUCxLQUFBLEdBQUFRLFVBQUEsT0FBQVYsZUFBQSxLQUFBVyxNQUFBLENBQUFKLElBQUE7SUFBQUssZUFBQSxDQUFBVixLQUFBLHNCQUtmLEtBQUs7SUFBQVUsZUFBQSxDQUFBVixLQUFBLHdCQUNxQyxJQUFJO0lBQ2pFO0lBQUFVLGVBQUEsQ0FBQVYsS0FBQSxzQkFDbUIsQ0FBQztJQUFBLE9BQUFBLEtBQUE7RUFBQTtFQUFBVyxTQUFBLENBQUFiLGVBQUEsRUFBQUMsZ0JBQUE7RUFBQSxPQUFBYSxZQUFBLENBQUFkLGVBQUE7SUFBQWUsR0FBQTtJQUFBcEIsS0FBQSxFQUdwQixTQUFBcUIsZUFBZUEsQ0FBQSxFQUFTO01BQ3RCbkMsdUJBQXVCLENBQUMsQ0FBQztNQUN6QkwsMkJBQTJCLENBQUMsQ0FBQztNQUM3QixJQUFJLENBQUN5QyxRQUFRLENBQUM7UUFBQ3BCLE1BQU0sRUFBRSxDQUFDO01BQUMsQ0FBQyxDQUFDO01BQzNCcUIsYUFBQSxDQUFBbEIsZUFBQTtJQUNGO0VBQUM7SUFBQWUsR0FBQTtJQUFBcEIsS0FBQSxFQUVELFNBQUF3QixVQUFVQSxDQUFBLEVBQVE7TUFDaEIsSUFBQUMsbUJBQUEsR0FBdUIsSUFBSSxDQUFDQyxLQUFLLENBQTFCNUIsT0FBTztRQUFQQSxPQUFPLEdBQUEyQixtQkFBQSxjQUFHLEVBQUUsR0FBQUEsbUJBQUE7TUFFbkIsSUFBTUUsV0FBVyxHQUFHN0Msa0JBQWtCLENBQUNnQixPQUFPLENBQUM7TUFDL0MsSUFBTThCLGFBQWEsR0FBQUwsYUFBQSxDQUFBbEIsZUFBQSw0QkFBcUI7O01BRXhDO01BQ0E7TUFDQTtNQUNBLElBQU13QixhQUFhLEdBQUcsQ0FBQ0QsYUFBYSxDQUFDOUIsT0FBTyxJQUFJLEVBQUUsRUFBRWdDLE1BQU0sQ0FDeEQsVUFBQ0MsQ0FBa0I7UUFBQSxPQUFLQSxDQUFDLENBQUNDLElBQUksS0FBSyxZQUFZO01BQUEsQ0FDakQsQ0FBQztNQUVELE9BQUFuQyxhQUFBLENBQUFBLGFBQUEsS0FDSytCLGFBQWE7UUFDaEJLLEVBQUUsRUFBRXRELDJCQUEyQixDQUFDLENBQUM7UUFDakN1RCxFQUFFLEVBQUV4RCw2QkFBNkIsQ0FBQyxDQUFDO1FBQ25Db0IsT0FBTyxLQUFBa0IsTUFBQSxDQUFBbUIsa0JBQUEsQ0FBTU4sYUFBYSxJQUFFakQsa0JBQWtCLEVBQUVPLHdCQUF3QixHQUFBZ0Qsa0JBQUEsQ0FBS1IsV0FBVztNQUFDO0lBRTdGOztJQUVBO0VBQUE7SUFBQVAsR0FBQTtJQUFBcEIsS0FBQSxFQUNBLFNBQUFvQyxXQUFXQSxDQUFDQyxNQUFxRSxFQUFRO01BQ3ZGLElBQU9YLEtBQUssR0FBb0NXLE1BQU0sQ0FBL0NYLEtBQUs7UUFBRVksUUFBUSxHQUEwQkQsTUFBTSxDQUF4Q0MsUUFBUTtRQUFFQyxXQUFXLEdBQWFGLE1BQU0sQ0FBOUJFLFdBQVc7UUFBRUMsT0FBTyxHQUFJSCxNQUFNLENBQWpCRyxPQUFPO01BQzVDakIsYUFBQSxDQUFBbEIsZUFBQSwyQkFBa0I7UUFBQ3FCLEtBQUssRUFBTEEsS0FBSztRQUFFWSxRQUFRLEVBQVJBLFFBQVE7UUFBRUMsV0FBVyxFQUFYQSxXQUFXO1FBQUVDLE9BQU8sRUFBUEE7TUFBTyxDQUFDO01BRXpELElBQU0xQyxPQUFPLEdBQUc0QixLQUFLLElBQUlBLEtBQUssQ0FBQzVCLE9BQU87TUFDdEMsSUFBTTJDLFVBQVUsR0FBR0gsUUFBUSxJQUFJQSxRQUFRLENBQUN4QyxPQUFPO01BRS9DLElBQ0U0QixLQUFLLENBQUNnQixJQUFJLEtBQUtKLFFBQVEsQ0FBQ0ksSUFBSSxJQUM1QkgsV0FBVyxDQUFDSSxpQkFBaUIsSUFDN0IsQ0FBQzNELFlBQVksQ0FBQ2MsT0FBTyxFQUFFMkMsVUFBVSxDQUFDLEVBQ2xDO1FBQUEsSUFBQUcscUJBQUE7UUFDQSxJQUFJLElBQUksQ0FBQ0MsS0FBSyxDQUFDQyxLQUFLLEVBQUU7VUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxpQkFBQTtVQUNwQixDQUFBRCxxQkFBQSxJQUFBQyxpQkFBQSxPQUFJLENBQUNILEtBQUssQ0FBQ0MsS0FBSyxFQUFDRyxPQUFPLGNBQUFGLHFCQUFBLGVBQXhCQSxxQkFBQSxDQUFBRyxJQUFBLENBQUFGLGlCQUEyQixDQUFDO1FBQzlCO1FBQ0EsSUFBSXRCLEtBQUssQ0FBQ2dCLElBQUksRUFBRTtVQUNkLElBQUksQ0FBQ0csS0FBSyxDQUFDQyxLQUFLLEdBQUcsSUFBSSxDQUFDSyxRQUFRLENBQUN6QixLQUFLLENBQUNnQixJQUFZLENBQUM7VUFFcEQsSUFBTXBELFVBQVUsR0FBS29DLEtBQUssQ0FBQ2dCLElBQUksQ0FBY3BELFVBQVUsSUFBSW9DLEtBQUssQ0FBQ2dCLElBQWlCO1VBQ2xGLElBQUksQ0FBQ3BCLFFBQVEsQ0FBQztZQUNaOEIsVUFBVSxFQUFFQyxPQUFPLENBQUMvRCxVQUFVLENBQUNnRSxNQUFNLElBQUloRSxVQUFVLENBQUNpRSxPQUFPO1VBQzdELENBQUMsQ0FBQztRQUNKO1FBQ0EsQ0FBQVgscUJBQUEsT0FBSSxDQUFDWSxtQkFBbUIsQ0FBQyxDQUFDLGNBQUFaLHFCQUFBLGVBQTFCQSxxQkFBQSxDQUE0QmEsYUFBYSxDQUFDLENBQUM7TUFDN0M7TUFFQSxJQUFJL0IsS0FBSyxJQUFJQSxLQUFLLENBQUN4QixNQUFNLEVBQUU7UUFDekIsSUFBSSxDQUFDd0QsWUFBWSxDQUFDO1VBQUNoQyxLQUFLLEVBQUxBLEtBQUs7VUFBRVksUUFBUSxFQUFSQTtRQUFRLENBQUMsQ0FBQztNQUN0QztNQUVBLElBQUksSUFBSSxDQUFDTyxLQUFLLENBQUNDLEtBQUssRUFBRTtRQUFBLElBQUFhLHFCQUFBLEVBQUFDLGtCQUFBO1FBQ3BCLENBQUFELHFCQUFBLElBQUFDLGtCQUFBLE9BQUksQ0FBQ2YsS0FBSyxDQUFDQyxLQUFLLEVBQUNlLFdBQVcsY0FBQUYscUJBQUEsZUFBNUJBLHFCQUFBLENBQUFULElBQUEsQ0FBQVUsa0JBQUEsRUFDRSxJQUFJLENBQUNsQyxLQUFLLENBQUNvQyxTQUFTLEdBQUcxRSxRQUFRLENBQUMyRSxVQUFVLEdBQUczRSxRQUFRLENBQUM0RSxhQUN4RCxDQUFDO01BQ0g7SUFDRjtFQUFDO0lBQUE1QyxHQUFBO0lBQUFwQixLQUFBLEVBRUQsU0FBQTBELFlBQVlBLENBQUFPLElBQUEsRUFNSDtNQUFBLElBTFB2QyxLQUFLLEdBQUF1QyxJQUFBLENBQUx2QyxLQUFLO1FBQ0xZLFFBQVEsR0FBQTJCLElBQUEsQ0FBUjNCLFFBQVE7TUFLUixJQUFPcEMsTUFBTSxHQUFJLElBQUksQ0FBQzJDLEtBQUssQ0FBcEIzQyxNQUFNO01BQ2IsSUFBTWdFLE1BQU0sR0FBRyxJQUFJLENBQUMxQixPQUFPLENBQUMwQixNQUFNO01BQ2xDLElBQU1DLEVBQUUsR0FBRyxDQUFBRCxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRUMsRUFBRSxLQUFJLElBQUksQ0FBQzNCLE9BQU8sQ0FBQzJCLEVBQUU7TUFFeEMsSUFBQUMsV0FBQSxHQUErQ3JGLFVBQVUsQ0FBQztVQUN4RG9GLEVBQUUsRUFBRkEsRUFBRTtVQUNGRCxNQUFNLEVBQU5BLE1BQU07VUFDTmhFLE1BQU0sRUFBTkEsTUFBTTtVQUNObUUsVUFBVSxFQUFFM0MsS0FBSyxDQUFDeEIsTUFBTTtVQUN4Qm9FLGFBQWEsRUFBRWhDLFFBQVEsQ0FBQ3BDO1FBQzFCLENBQUMsQ0FBQztRQU5hcUUsU0FBUyxHQUFBSCxXQUFBLENBQWpCbEUsTUFBTTtRQUFhc0UsaUJBQWlCLEdBQUFKLFdBQUEsQ0FBakJJLGlCQUFpQjtNQVEzQyxJQUFJRCxTQUFTLEVBQUU7UUFDYixJQUFJLENBQUNqRCxRQUFRLENBQUM7VUFBQ3BCLE1BQU0sRUFBRXFFO1FBQVMsQ0FBQyxDQUFDO01BQ3BDO01BQ0E7TUFDQTtNQUNBO01BQ0EsSUFBSUMsaUJBQWlCLEVBQUU7UUFDckIsSUFBSSxDQUFDQyxrQkFBa0IsR0FBRy9DLEtBQUssQ0FBQ3hCLE1BQU07UUFDdEMsSUFBSSxDQUFDd0UsZ0JBQWdCLEdBQUcsQ0FBQztRQUN6QixJQUFJLENBQUNDLGVBQWUsQ0FBQyxDQUFDO01BQ3hCO0lBQ0Y7RUFBQztJQUFBdkQsR0FBQTtJQUFBcEIsS0FBQSxFQUVELFNBQUE0RSxJQUFJQSxDQUFDQyxLQUE4QixFQUFRO01BQUEsSUFBQUMsbUJBQUE7TUFDekM7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBLElBQUksSUFBSSxDQUFDTCxrQkFBa0IsRUFBRTtRQUFBLElBQUFNLG9CQUFBO1FBQzNCLElBQU1DLEtBQUssR0FBRyxJQUFJLENBQUNQLGtCQUFrQjtRQUNyQyxJQUFJLENBQUNBLGtCQUFrQixHQUFHLElBQUk7UUFDOUIsSUFBQVEsWUFBQSxHQUErQ2xHLFVBQVUsQ0FBQztZQUN4RG9GLEVBQUUsRUFBRSxFQUFBWSxvQkFBQSxPQUFJLENBQUN2QyxPQUFPLENBQUMwQixNQUFNLGNBQUFhLG9CQUFBLHVCQUFuQkEsb0JBQUEsQ0FBcUJaLEVBQUUsS0FBSSxJQUFJLENBQUMzQixPQUFPLENBQUMyQixFQUFFO1lBQzlDRCxNQUFNLEVBQUUsSUFBSSxDQUFDMUIsT0FBTyxDQUFDMEIsTUFBTTtZQUMzQmhFLE1BQU0sRUFBRSxJQUFJLENBQUMyQyxLQUFLLENBQUMzQyxNQUFNO1lBQ3pCbUUsVUFBVSxFQUFFVyxLQUFLO1lBQ2pCVixhQUFhLEVBQUUsQ0FBQztVQUNsQixDQUFDLENBQUM7VUFOYUMsU0FBUyxHQUFBVSxZQUFBLENBQWpCL0UsTUFBTTtVQUFhc0UsaUJBQWlCLEdBQUFTLFlBQUEsQ0FBakJULGlCQUFpQjtRQU8zQyxJQUFJRCxTQUFTLEVBQUU7VUFDYixJQUFJLENBQUNqRCxRQUFRLENBQUM7WUFBQ3BCLE1BQU0sRUFBRXFFO1VBQVMsQ0FBQyxDQUFDO1FBQ3BDO1FBQ0EsSUFBSUMsaUJBQWlCLEVBQUU7VUFDckIsSUFBSSxDQUFDRSxnQkFBZ0IsRUFBRTtVQUN2QixJQUFJLElBQUksQ0FBQ0EsZ0JBQWdCLEdBQUdyRSxlQUFlLENBQUM2RSx3QkFBd0IsRUFBRTtZQUNwRSxJQUFJLENBQUNULGtCQUFrQixHQUFHTyxLQUFLO1lBQy9CLElBQUksQ0FBQ0wsZUFBZSxDQUFDLENBQUM7VUFDeEIsQ0FBQyxNQUFNO1lBQ0xRLE9BQU8sQ0FBQ0MsSUFBSSxpREFBQXBFLE1BQUEsQ0FDc0NYLGVBQWUsQ0FBQzZFLHdCQUF3QiwwQkFDMUYsQ0FBQztZQUNELElBQUksQ0FBQ1IsZ0JBQWdCLEdBQUcsQ0FBQztVQUMzQjtRQUNGLENBQUMsTUFBTTtVQUNMLElBQUksQ0FBQ0EsZ0JBQWdCLEdBQUcsQ0FBQztRQUMzQjtNQUNGO01BRUEsSUFBQVcsV0FBQSxHQUF3QixJQUFJLENBQUN4QyxLQUFLO1FBQTNCQyxLQUFLLEdBQUF1QyxXQUFBLENBQUx2QyxLQUFLO1FBQUU1QyxNQUFNLEdBQUFtRixXQUFBLENBQU5uRixNQUFNO01BQ3BCLElBQU9DLFdBQVcsR0FBSSxJQUFJLENBQUN1QixLQUFLLENBQXpCdkIsV0FBVztNQUVsQixJQUNFLENBQUMyQyxLQUFLLElBQ04sQ0FBQzVDLE1BQU0sSUFDUG9GLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDckYsTUFBTSxDQUFDLENBQUNTLE1BQU0sS0FBSyxDQUFDLElBQ2hDLENBQUMyRSxNQUFNLENBQUNFLE1BQU0sQ0FBQ3RGLE1BQU0sQ0FBQyxDQUFDdUYsS0FBSyxDQUFDLFVBQUFDLElBQUk7UUFBQSxPQUFJQSxJQUFJO01BQUEsRUFBQyxFQUMxQztRQUNBO01BQ0Y7O01BRUE7TUFDQTVDLEtBQUssQ0FBQzZDLFlBQVksQ0FBQ0MsUUFBUSxDQUFDO1FBQzFCQyxVQUFVLEVBQUU7VUFDVkMsV0FBVyxHQUFBaEIsbUJBQUEsR0FBRSxJQUFJLENBQUNwRCxLQUFLLENBQUNxRSxPQUFPLGNBQUFqQixtQkFBQSxjQUFBQSxtQkFBQSxHQUFJLENBQUM7VUFDcENrQixlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUNuRCxLQUFLLENBQUNPLFVBQVUsR0FBRyxHQUFHLEdBQUc7UUFDbEQ7TUFDRixDQUFDLENBQUM7O01BRUY7TUFDQTtNQUNBO01BQ0E7TUFDQSxJQUFNNkMsY0FBYyxHQUFBcEcsYUFBQSxDQUFBQSxhQUFBLEtBQU9NLFdBQVcsR0FBS0QsTUFBTSxDQUFDO01BQ2xELElBQU1KLE9BQU8sR0FBRyxJQUFJLENBQUM0QixLQUFLLENBQUM1QixPQUFPLElBQUksRUFBRTtNQUN4Q2IsbUJBQW1CLENBQUM2RCxLQUFLLENBQUM2QyxZQUFZLEVBQUU3RixPQUFPLEVBQUVtRyxjQUFjLENBQUM7TUFFaEUsSUFBTUMsV0FBVyxHQUFHcEQsS0FBSyxDQUFDOEIsSUFBSSxDQUFDLElBQUksQ0FBQ3BDLE9BQU8sQ0FBQzJELFVBQVUsQ0FBQztNQUN2RCxJQUFJLENBQUNELFdBQVcsRUFBRTtRQUNoQixJQUFJLENBQUN2QixlQUFlLENBQUMsQ0FBQztNQUN4QjtJQUNGO0VBQUM7SUFBQXZELEdBQUE7SUFBQXBCLEtBQUEsRUFFRCxTQUFBMkUsZUFBZUEsQ0FBQSxFQUFTO01BQUEsSUFBQXlCLE1BQUE7TUFDdEIsSUFBSSxJQUFJLENBQUNDLGdCQUFnQixFQUFFO01BQzNCLElBQUksQ0FBQ0EsZ0JBQWdCLEdBQUcsSUFBSTtNQUM1QkMscUJBQXFCLENBQUMsWUFBTTtRQUFBLElBQUFDLHFCQUFBO1FBQzFCSCxNQUFJLENBQUNDLGdCQUFnQixHQUFHLEtBQUs7UUFDN0IsSUFBSUQsTUFBSSxDQUFDNUQsT0FBTyxDQUFDZ0UsSUFBSSxFQUFFO1VBQ3JCO1VBQ0FKLE1BQUksQ0FBQzVELE9BQU8sQ0FBQ2dFLElBQUksQ0FBQ0MsWUFBWSxHQUFHLGtDQUFrQztRQUNyRTtRQUNBLENBQUFGLHFCQUFBLEdBQUFILE1BQUksQ0FBQzVELE9BQU8sQ0FBQ2tFLFlBQVksY0FBQUgscUJBQUEsZUFBekJBLHFCQUFBLENBQTJCSSxjQUFjLENBQUMsa0NBQWtDLENBQUM7UUFDN0UsSUFBSSxPQUFPUCxNQUFJLENBQUMxRSxLQUFLLENBQUN0QixjQUFjLEtBQUssVUFBVSxFQUFFO1VBQ25EZ0csTUFBSSxDQUFDMUUsS0FBSyxDQUFDdEIsY0FBYyxDQUFDLENBQUM7UUFDN0I7TUFDRixDQUFDLENBQUM7SUFDSjtFQUFDO0lBQUFnQixHQUFBO0lBQUFwQixLQUFBLEVBRUQsU0FBQTRHLGFBQWFBLENBQUEsRUFBUztNQUNwQnJGLGFBQUEsQ0FBQWxCLGVBQUEsNkJBQW9CLElBQUksQ0FBQ21DLE9BQU87TUFFaEMsSUFBSSxJQUFJLENBQUNLLEtBQUssQ0FBQzNDLE1BQU0sRUFBRTtRQUNyQixTQUFBMkcsRUFBQSxNQUFBQyxjQUFBLEdBQW9CeEIsTUFBTSxDQUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDM0MsS0FBSyxDQUFDM0MsTUFBTSxDQUFDLEVBQUEyRyxFQUFBLEdBQUFDLGNBQUEsQ0FBQW5HLE1BQUEsRUFBQWtHLEVBQUEsSUFBRTtVQUFqRCxJQUFNRSxLQUFLLEdBQUFELGNBQUEsQ0FBQUQsRUFBQTtVQUNkLElBQUloRyxLQUFLLENBQUNtRyxPQUFPLENBQUNELEtBQUssQ0FBQyxFQUFFO1lBQ3hCQSxLQUFLLENBQUNFLEdBQUcsQ0FBQyxVQUFBQyxDQUFDO2NBQUEsSUFBQUMsU0FBQTtjQUFBLE9BQUlELENBQUMsS0FBS0EsQ0FBQyxDQUFDakUsT0FBTyxHQUFHaUUsQ0FBQyxDQUFDakUsT0FBTyxDQUFDLENBQUMsSUFBQWtFLFNBQUEsR0FBR0QsQ0FBQyxVQUFPLGNBQUFDLFNBQUEsdUJBQVJBLFNBQUEsQ0FBQWpFLElBQUEsQ0FBQWdFLENBQVcsQ0FBQyxDQUFDO1lBQUEsRUFBQztVQUMvRCxDQUFDLE1BQU0sSUFBSUgsS0FBSyxFQUFFO1lBQUEsSUFBQUssYUFBQTtZQUNoQkwsS0FBSyxDQUFDOUQsT0FBTyxHQUFHOEQsS0FBSyxDQUFDOUQsT0FBTyxDQUFDLENBQUMsSUFBQW1FLGFBQUEsR0FBR0wsS0FBSyxVQUFPLGNBQUFLLGFBQUEsdUJBQVpBLGFBQUEsQ0FBQWxFLElBQUEsQ0FBQTZELEtBQWUsQ0FBQztVQUNwRDtRQUNGO01BQ0Y7SUFDRjtFQUFDO0lBQUEzRixHQUFBO0lBQUFwQixLQUFBLEVBRUQsU0FBVW1ELFFBQVFBLENBQUNULElBQVUsRUFBUztNQUNwQyxJQUFNd0IsTUFBTSxHQUFHLElBQUksQ0FBQzFCLE9BQU8sQ0FBQzBCLE1BQU0sSUFBSSxJQUFJLENBQUMxQixPQUFPLENBQUMyQixFQUFFO01BRXJELElBQU1yQixLQUFLLEdBQUcsSUFBSXJFLEtBQUssQ0FDckJ5RixNQUFNLEVBQ05vQixNQUFNLENBQUMrQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDN0YsVUFBVSxDQUFDLENBQUMsRUFBRTtRQUNuQzhGLEVBQUUsRUFBRSxJQUFJLENBQUM1RixLQUFLLENBQUM0RixFQUFFO1FBQ2pCQyxRQUFRLEVBQUU3SCxXQUFXLENBQUNnRCxJQUEyQixDQUFDO1FBQ2xEOEUsV0FBVyxFQUFFO01BQ2YsQ0FBQyxDQUNILENBQUM7TUFFRCxPQUFPMUUsS0FBSztJQUNkO0VBQUM7QUFBQSxFQTdOMEN2RSxlQUFlO0FBQUEwQyxlQUFBLENBQXZDWixlQUFlLDhCQVNTLENBQUM7QUFBQSxTQVR6QkEsZUFBZSxJQUFBb0gsT0FBQTtBQWdPcENwSCxlQUFlLENBQUNxSCxTQUFTLEdBQUcsaUJBQWlCO0FBQzdDckgsZUFBZSxDQUFDVCxZQUFZLEdBQUdBLFlBQVkiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,118 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // Copyright contributors to the kepler.gl project
3
+
4
+ /**
5
+ * Shared UBO for all raster processing module uniforms.
6
+ *
7
+ * WebGL2 guarantees only 12 fragment uniform blocks (GL_MAX_FRAGMENT_UNIFORM_BUFFERS).
8
+ * Without consolidation, the base layer already uses 8–9 blocks (project, picking,
9
+ * lighting, phongMaterial, floatColors, layer, shadow, simpleMesh/rasterMesh, raster),
10
+ * leaving only 3–4 for raster processing modules. Since a typical pipeline can use
11
+ * 5–9 raster modules (combineBands, mask, reorderBands, linearRescale, gammaContrast,
12
+ * sigmoidalContrast, colormap, filter, saturation), each declaring its own UBO block
13
+ * would exceed the limit.
14
+ *
15
+ * This module declares a single UBO that contains all possible raster processing
16
+ * uniforms. Individual modules' GLSL code still references the uniforms through
17
+ * the block instance name, and prepareLumaModules() rewires the declarations.
18
+ */
19
+
20
+ var RASTER_PROCESSING_UNIFORM_BLOCK = "uniform rasterProcessingUniforms {\n // linear_rescale\n float linear_rescale_scaler;\n float linear_rescale_offset;\n\n // gamma_contrast\n float gamma_contrast_gamma1;\n float gamma_contrast_gamma2;\n float gamma_contrast_gamma3;\n float gamma_contrast_gamma4;\n\n // sigmoidalContrast\n float sigmoidalContrast_contrast;\n float sigmoidalContrast_bias;\n\n // colormap\n int colormap_hasCategoricalColors;\n int colormap_categoricalMinValue;\n int colormap_categoricalMaxValue;\n int colormap_maxPixelValue;\n\n // bandFilter\n float bandFilter_min1;\n float bandFilter_max1;\n float bandFilter_min2;\n float bandFilter_max2;\n float bandFilter_min3;\n float bandFilter_max3;\n float bandFilter_min4;\n float bandFilter_max4;\n\n // saturation\n float saturation_value;\n\n // reorder_bands\n mat4 reorder_bands_ordering;\n\n // mask (shared by mask_image_float, mask_image_uint, mask_image_int)\n float mask_keepMin;\n float mask_keepMax;\n\n // pansharpen_brovey\n float pansharpen_brovey_panWeight;\n} rasterProcessing;\n";
21
+
22
+ /**
23
+ * GLSL #define aliases that let per-module code continue referencing uniforms
24
+ * through their original block instance names (e.g. `linear_rescale.scaler`).
25
+ */
26
+ var ALIAS_DEFINES = "#define linear_rescale_scaler_ALIAS rasterProcessing.linear_rescale_scaler\n#define linear_rescale_offset_ALIAS rasterProcessing.linear_rescale_offset\n#define gamma_contrast_gamma1_ALIAS rasterProcessing.gamma_contrast_gamma1\n#define gamma_contrast_gamma2_ALIAS rasterProcessing.gamma_contrast_gamma2\n#define gamma_contrast_gamma3_ALIAS rasterProcessing.gamma_contrast_gamma3\n#define gamma_contrast_gamma4_ALIAS rasterProcessing.gamma_contrast_gamma4\n#define sigmoidalContrast_contrast_ALIAS rasterProcessing.sigmoidalContrast_contrast\n#define sigmoidalContrast_bias_ALIAS rasterProcessing.sigmoidalContrast_bias\n#define colormap_hasCategoricalColors_ALIAS rasterProcessing.colormap_hasCategoricalColors\n#define colormap_categoricalMinValue_ALIAS rasterProcessing.colormap_categoricalMinValue\n#define colormap_categoricalMaxValue_ALIAS rasterProcessing.colormap_categoricalMaxValue\n#define colormap_maxPixelValue_ALIAS rasterProcessing.colormap_maxPixelValue\n#define bandFilter_min1_ALIAS rasterProcessing.bandFilter_min1\n#define bandFilter_max1_ALIAS rasterProcessing.bandFilter_max1\n#define bandFilter_min2_ALIAS rasterProcessing.bandFilter_min2\n#define bandFilter_max2_ALIAS rasterProcessing.bandFilter_max2\n#define bandFilter_min3_ALIAS rasterProcessing.bandFilter_min3\n#define bandFilter_max3_ALIAS rasterProcessing.bandFilter_max3\n#define bandFilter_min4_ALIAS rasterProcessing.bandFilter_min4\n#define bandFilter_max4_ALIAS rasterProcessing.bandFilter_max4\n#define saturation_value_ALIAS rasterProcessing.saturation_value\n#define reorder_bands_ordering_ALIAS rasterProcessing.reorder_bands_ordering\n#define mask_keepMin_ALIAS rasterProcessing.mask_keepMin\n#define mask_keepMax_ALIAS rasterProcessing.mask_keepMax\n#define pansharpen_brovey_panWeight_ALIAS rasterProcessing.pansharpen_brovey_panWeight\n";
27
+ export var RASTER_PROCESSING_FS = RASTER_PROCESSING_UNIFORM_BLOCK + ALIAS_DEFINES;
28
+ export var rasterProcessingUniforms = {
29
+ name: 'rasterProcessing',
30
+ fs: RASTER_PROCESSING_FS,
31
+ vs: '',
32
+ uniformTypes: {
33
+ linear_rescale_scaler: 'f32',
34
+ linear_rescale_offset: 'f32',
35
+ gamma_contrast_gamma1: 'f32',
36
+ gamma_contrast_gamma2: 'f32',
37
+ gamma_contrast_gamma3: 'f32',
38
+ gamma_contrast_gamma4: 'f32',
39
+ sigmoidalContrast_contrast: 'f32',
40
+ sigmoidalContrast_bias: 'f32',
41
+ colormap_hasCategoricalColors: 'i32',
42
+ colormap_categoricalMinValue: 'i32',
43
+ colormap_categoricalMaxValue: 'i32',
44
+ colormap_maxPixelValue: 'i32',
45
+ bandFilter_min1: 'f32',
46
+ bandFilter_max1: 'f32',
47
+ bandFilter_min2: 'f32',
48
+ bandFilter_max2: 'f32',
49
+ bandFilter_min3: 'f32',
50
+ bandFilter_max3: 'f32',
51
+ bandFilter_min4: 'f32',
52
+ bandFilter_max4: 'f32',
53
+ saturation_value: 'f32',
54
+ reorder_bands_ordering: 'mat4x4<f32>',
55
+ mask_keepMin: 'f32',
56
+ mask_keepMax: 'f32',
57
+ pansharpen_brovey_panWeight: 'f32'
58
+ }
59
+ };
60
+
61
+ /**
62
+ * Map from original module uniform names (as returned by getUniforms) to
63
+ * the prefixed names used in the shared UBO.
64
+ */
65
+ export var UNIFORM_NAME_MAP = {
66
+ linear_rescale: {
67
+ scaler: 'linear_rescale_scaler',
68
+ offset: 'linear_rescale_offset'
69
+ },
70
+ gamma_contrast: {
71
+ gamma1: 'gamma_contrast_gamma1',
72
+ gamma2: 'gamma_contrast_gamma2',
73
+ gamma3: 'gamma_contrast_gamma3',
74
+ gamma4: 'gamma_contrast_gamma4'
75
+ },
76
+ sigmoidalContrast: {
77
+ contrast: 'sigmoidalContrast_contrast',
78
+ bias: 'sigmoidalContrast_bias'
79
+ },
80
+ colormap: {
81
+ hasCategoricalColors: 'colormap_hasCategoricalColors',
82
+ categoricalMinValue: 'colormap_categoricalMinValue',
83
+ categoricalMaxValue: 'colormap_categoricalMaxValue',
84
+ maxPixelValue: 'colormap_maxPixelValue'
85
+ },
86
+ bandFilter: {
87
+ min1: 'bandFilter_min1',
88
+ max1: 'bandFilter_max1',
89
+ min2: 'bandFilter_min2',
90
+ max2: 'bandFilter_max2',
91
+ min3: 'bandFilter_min3',
92
+ max3: 'bandFilter_max3',
93
+ min4: 'bandFilter_min4',
94
+ max4: 'bandFilter_max4'
95
+ },
96
+ saturation: {
97
+ value: 'saturation_value'
98
+ },
99
+ reorder_bands: {
100
+ ordering: 'reorder_bands_ordering'
101
+ },
102
+ mask_image_float: {
103
+ keepMin: 'mask_keepMin',
104
+ keepMax: 'mask_keepMax'
105
+ },
106
+ mask_image_uint: {
107
+ keepMin: 'mask_keepMin',
108
+ keepMax: 'mask_keepMax'
109
+ },
110
+ mask_image_int: {
111
+ keepMin: 'mask_keepMin',
112
+ keepMax: 'mask_keepMax'
113
+ },
114
+ pansharpen_brovey: {
115
+ panWeight: 'pansharpen_brovey_panWeight'
116
+ }
117
+ };
118
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSQVNURVJfUFJPQ0VTU0lOR19VTklGT1JNX0JMT0NLIiwiQUxJQVNfREVGSU5FUyIsIlJBU1RFUl9QUk9DRVNTSU5HX0ZTIiwicmFzdGVyUHJvY2Vzc2luZ1VuaWZvcm1zIiwibmFtZSIsImZzIiwidnMiLCJ1bmlmb3JtVHlwZXMiLCJsaW5lYXJfcmVzY2FsZV9zY2FsZXIiLCJsaW5lYXJfcmVzY2FsZV9vZmZzZXQiLCJnYW1tYV9jb250cmFzdF9nYW1tYTEiLCJnYW1tYV9jb250cmFzdF9nYW1tYTIiLCJnYW1tYV9jb250cmFzdF9nYW1tYTMiLCJnYW1tYV9jb250cmFzdF9nYW1tYTQiLCJzaWdtb2lkYWxDb250cmFzdF9jb250cmFzdCIsInNpZ21vaWRhbENvbnRyYXN0X2JpYXMiLCJjb2xvcm1hcF9oYXNDYXRlZ29yaWNhbENvbG9ycyIsImNvbG9ybWFwX2NhdGVnb3JpY2FsTWluVmFsdWUiLCJjb2xvcm1hcF9jYXRlZ29yaWNhbE1heFZhbHVlIiwiY29sb3JtYXBfbWF4UGl4ZWxWYWx1ZSIsImJhbmRGaWx0ZXJfbWluMSIsImJhbmRGaWx0ZXJfbWF4MSIsImJhbmRGaWx0ZXJfbWluMiIsImJhbmRGaWx0ZXJfbWF4MiIsImJhbmRGaWx0ZXJfbWluMyIsImJhbmRGaWx0ZXJfbWF4MyIsImJhbmRGaWx0ZXJfbWluNCIsImJhbmRGaWx0ZXJfbWF4NCIsInNhdHVyYXRpb25fdmFsdWUiLCJyZW9yZGVyX2JhbmRzX29yZGVyaW5nIiwibWFza19rZWVwTWluIiwibWFza19rZWVwTWF4IiwicGFuc2hhcnBlbl9icm92ZXlfcGFuV2VpZ2h0IiwiVU5JRk9STV9OQU1FX01BUCIsImxpbmVhcl9yZXNjYWxlIiwic2NhbGVyIiwib2Zmc2V0IiwiZ2FtbWFfY29udHJhc3QiLCJnYW1tYTEiLCJnYW1tYTIiLCJnYW1tYTMiLCJnYW1tYTQiLCJzaWdtb2lkYWxDb250cmFzdCIsImNvbnRyYXN0IiwiYmlhcyIsImNvbG9ybWFwIiwiaGFzQ2F0ZWdvcmljYWxDb2xvcnMiLCJjYXRlZ29yaWNhbE1pblZhbHVlIiwiY2F0ZWdvcmljYWxNYXhWYWx1ZSIsIm1heFBpeGVsVmFsdWUiLCJiYW5kRmlsdGVyIiwibWluMSIsIm1heDEiLCJtaW4yIiwibWF4MiIsIm1pbjMiLCJtYXgzIiwibWluNCIsIm1heDQiLCJzYXR1cmF0aW9uIiwidmFsdWUiLCJyZW9yZGVyX2JhbmRzIiwib3JkZXJpbmciLCJtYXNrX2ltYWdlX2Zsb2F0Iiwia2VlcE1pbiIsImtlZXBNYXgiLCJtYXNrX2ltYWdlX3VpbnQiLCJtYXNrX2ltYWdlX2ludCIsInBhbnNoYXJwZW5fYnJvdmV5IiwicGFuV2VpZ2h0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jhc3Rlci9yYXN0ZXItcHJvY2Vzc2luZy11bmlmb3Jtcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vKipcbiAqIFNoYXJlZCBVQk8gZm9yIGFsbCByYXN0ZXIgcHJvY2Vzc2luZyBtb2R1bGUgdW5pZm9ybXMuXG4gKlxuICogV2ViR0wyIGd1YXJhbnRlZXMgb25seSAxMiBmcmFnbWVudCB1bmlmb3JtIGJsb2NrcyAoR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQlVGRkVSUykuXG4gKiBXaXRob3V0IGNvbnNvbGlkYXRpb24sIHRoZSBiYXNlIGxheWVyIGFscmVhZHkgdXNlcyA44oCTOSBibG9ja3MgKHByb2plY3QsIHBpY2tpbmcsXG4gKiBsaWdodGluZywgcGhvbmdNYXRlcmlhbCwgZmxvYXRDb2xvcnMsIGxheWVyLCBzaGFkb3csIHNpbXBsZU1lc2gvcmFzdGVyTWVzaCwgcmFzdGVyKSxcbiAqIGxlYXZpbmcgb25seSAz4oCTNCBmb3IgcmFzdGVyIHByb2Nlc3NpbmcgbW9kdWxlcy4gU2luY2UgYSB0eXBpY2FsIHBpcGVsaW5lIGNhbiB1c2VcbiAqIDXigJM5IHJhc3RlciBtb2R1bGVzIChjb21iaW5lQmFuZHMsIG1hc2ssIHJlb3JkZXJCYW5kcywgbGluZWFyUmVzY2FsZSwgZ2FtbWFDb250cmFzdCxcbiAqIHNpZ21vaWRhbENvbnRyYXN0LCBjb2xvcm1hcCwgZmlsdGVyLCBzYXR1cmF0aW9uKSwgZWFjaCBkZWNsYXJpbmcgaXRzIG93biBVQk8gYmxvY2tcbiAqIHdvdWxkIGV4Y2VlZCB0aGUgbGltaXQuXG4gKlxuICogVGhpcyBtb2R1bGUgZGVjbGFyZXMgYSBzaW5nbGUgVUJPIHRoYXQgY29udGFpbnMgYWxsIHBvc3NpYmxlIHJhc3RlciBwcm9jZXNzaW5nXG4gKiB1bmlmb3Jtcy4gSW5kaXZpZHVhbCBtb2R1bGVzJyBHTFNMIGNvZGUgc3RpbGwgcmVmZXJlbmNlcyB0aGUgdW5pZm9ybXMgdGhyb3VnaFxuICogdGhlIGJsb2NrIGluc3RhbmNlIG5hbWUsIGFuZCBwcmVwYXJlTHVtYU1vZHVsZXMoKSByZXdpcmVzIHRoZSBkZWNsYXJhdGlvbnMuXG4gKi9cblxuY29uc3QgUkFTVEVSX1BST0NFU1NJTkdfVU5JRk9STV9CTE9DSyA9IGBcXFxudW5pZm9ybSByYXN0ZXJQcm9jZXNzaW5nVW5pZm9ybXMge1xuICAvLyBsaW5lYXJfcmVzY2FsZVxuICBmbG9hdCBsaW5lYXJfcmVzY2FsZV9zY2FsZXI7XG4gIGZsb2F0IGxpbmVhcl9yZXNjYWxlX29mZnNldDtcblxuICAvLyBnYW1tYV9jb250cmFzdFxuICBmbG9hdCBnYW1tYV9jb250cmFzdF9nYW1tYTE7XG4gIGZsb2F0IGdhbW1hX2NvbnRyYXN0X2dhbW1hMjtcbiAgZmxvYXQgZ2FtbWFfY29udHJhc3RfZ2FtbWEzO1xuICBmbG9hdCBnYW1tYV9jb250cmFzdF9nYW1tYTQ7XG5cbiAgLy8gc2lnbW9pZGFsQ29udHJhc3RcbiAgZmxvYXQgc2lnbW9pZGFsQ29udHJhc3RfY29udHJhc3Q7XG4gIGZsb2F0IHNpZ21vaWRhbENvbnRyYXN0X2JpYXM7XG5cbiAgLy8gY29sb3JtYXBcbiAgaW50IGNvbG9ybWFwX2hhc0NhdGVnb3JpY2FsQ29sb3JzO1xuICBpbnQgY29sb3JtYXBfY2F0ZWdvcmljYWxNaW5WYWx1ZTtcbiAgaW50IGNvbG9ybWFwX2NhdGVnb3JpY2FsTWF4VmFsdWU7XG4gIGludCBjb2xvcm1hcF9tYXhQaXhlbFZhbHVlO1xuXG4gIC8vIGJhbmRGaWx0ZXJcbiAgZmxvYXQgYmFuZEZpbHRlcl9taW4xO1xuICBmbG9hdCBiYW5kRmlsdGVyX21heDE7XG4gIGZsb2F0IGJhbmRGaWx0ZXJfbWluMjtcbiAgZmxvYXQgYmFuZEZpbHRlcl9tYXgyO1xuICBmbG9hdCBiYW5kRmlsdGVyX21pbjM7XG4gIGZsb2F0IGJhbmRGaWx0ZXJfbWF4MztcbiAgZmxvYXQgYmFuZEZpbHRlcl9taW40O1xuICBmbG9hdCBiYW5kRmlsdGVyX21heDQ7XG5cbiAgLy8gc2F0dXJhdGlvblxuICBmbG9hdCBzYXR1cmF0aW9uX3ZhbHVlO1xuXG4gIC8vIHJlb3JkZXJfYmFuZHNcbiAgbWF0NCByZW9yZGVyX2JhbmRzX29yZGVyaW5nO1xuXG4gIC8vIG1hc2sgKHNoYXJlZCBieSBtYXNrX2ltYWdlX2Zsb2F0LCBtYXNrX2ltYWdlX3VpbnQsIG1hc2tfaW1hZ2VfaW50KVxuICBmbG9hdCBtYXNrX2tlZXBNaW47XG4gIGZsb2F0IG1hc2tfa2VlcE1heDtcblxuICAvLyBwYW5zaGFycGVuX2Jyb3ZleVxuICBmbG9hdCBwYW5zaGFycGVuX2Jyb3ZleV9wYW5XZWlnaHQ7XG59IHJhc3RlclByb2Nlc3Npbmc7XG5gO1xuXG4vKipcbiAqIEdMU0wgI2RlZmluZSBhbGlhc2VzIHRoYXQgbGV0IHBlci1tb2R1bGUgY29kZSBjb250aW51ZSByZWZlcmVuY2luZyB1bmlmb3Jtc1xuICogdGhyb3VnaCB0aGVpciBvcmlnaW5hbCBibG9jayBpbnN0YW5jZSBuYW1lcyAoZS5nLiBgbGluZWFyX3Jlc2NhbGUuc2NhbGVyYCkuXG4gKi9cbmNvbnN0IEFMSUFTX0RFRklORVMgPSBgXFxcbiNkZWZpbmUgbGluZWFyX3Jlc2NhbGVfc2NhbGVyX0FMSUFTIHJhc3RlclByb2Nlc3NpbmcubGluZWFyX3Jlc2NhbGVfc2NhbGVyXG4jZGVmaW5lIGxpbmVhcl9yZXNjYWxlX29mZnNldF9BTElBUyByYXN0ZXJQcm9jZXNzaW5nLmxpbmVhcl9yZXNjYWxlX29mZnNldFxuI2RlZmluZSBnYW1tYV9jb250cmFzdF9nYW1tYTFfQUxJQVMgcmFzdGVyUHJvY2Vzc2luZy5nYW1tYV9jb250cmFzdF9nYW1tYTFcbiNkZWZpbmUgZ2FtbWFfY29udHJhc3RfZ2FtbWEyX0FMSUFTIHJhc3RlclByb2Nlc3NpbmcuZ2FtbWFfY29udHJhc3RfZ2FtbWEyXG4jZGVmaW5lIGdhbW1hX2NvbnRyYXN0X2dhbW1hM19BTElBUyByYXN0ZXJQcm9jZXNzaW5nLmdhbW1hX2NvbnRyYXN0X2dhbW1hM1xuI2RlZmluZSBnYW1tYV9jb250cmFzdF9nYW1tYTRfQUxJQVMgcmFzdGVyUHJvY2Vzc2luZy5nYW1tYV9jb250cmFzdF9nYW1tYTRcbiNkZWZpbmUgc2lnbW9pZGFsQ29udHJhc3RfY29udHJhc3RfQUxJQVMgcmFzdGVyUHJvY2Vzc2luZy5zaWdtb2lkYWxDb250cmFzdF9jb250cmFzdFxuI2RlZmluZSBzaWdtb2lkYWxDb250cmFzdF9iaWFzX0FMSUFTIHJhc3RlclByb2Nlc3Npbmcuc2lnbW9pZGFsQ29udHJhc3RfYmlhc1xuI2RlZmluZSBjb2xvcm1hcF9oYXNDYXRlZ29yaWNhbENvbG9yc19BTElBUyByYXN0ZXJQcm9jZXNzaW5nLmNvbG9ybWFwX2hhc0NhdGVnb3JpY2FsQ29sb3JzXG4jZGVmaW5lIGNvbG9ybWFwX2NhdGVnb3JpY2FsTWluVmFsdWVfQUxJQVMgcmFzdGVyUHJvY2Vzc2luZy5jb2xvcm1hcF9jYXRlZ29yaWNhbE1pblZhbHVlXG4jZGVmaW5lIGNvbG9ybWFwX2NhdGVnb3JpY2FsTWF4VmFsdWVfQUxJQVMgcmFzdGVyUHJvY2Vzc2luZy5jb2xvcm1hcF9jYXRlZ29yaWNhbE1heFZhbHVlXG4jZGVmaW5lIGNvbG9ybWFwX21heFBpeGVsVmFsdWVfQUxJQVMgcmFzdGVyUHJvY2Vzc2luZy5jb2xvcm1hcF9tYXhQaXhlbFZhbHVlXG4jZGVmaW5lIGJhbmRGaWx0ZXJfbWluMV9BTElBUyByYXN0ZXJQcm9jZXNzaW5nLmJhbmRGaWx0ZXJfbWluMVxuI2RlZmluZSBiYW5kRmlsdGVyX21heDFfQUxJQVMgcmFzdGVyUHJvY2Vzc2luZy5iYW5kRmlsdGVyX21heDFcbiNkZWZpbmUgYmFuZEZpbHRlcl9taW4yX0FMSUFTIHJhc3RlclByb2Nlc3NpbmcuYmFuZEZpbHRlcl9taW4yXG4jZGVmaW5lIGJhbmRGaWx0ZXJfbWF4Ml9BTElBUyByYXN0ZXJQcm9jZXNzaW5nLmJhbmRGaWx0ZXJfbWF4MlxuI2RlZmluZSBiYW5kRmlsdGVyX21pbjNfQUxJQVMgcmFzdGVyUHJvY2Vzc2luZy5iYW5kRmlsdGVyX21pbjNcbiNkZWZpbmUgYmFuZEZpbHRlcl9tYXgzX0FMSUFTIHJhc3RlclByb2Nlc3NpbmcuYmFuZEZpbHRlcl9tYXgzXG4jZGVmaW5lIGJhbmRGaWx0ZXJfbWluNF9BTElBUyByYXN0ZXJQcm9jZXNzaW5nLmJhbmRGaWx0ZXJfbWluNFxuI2RlZmluZSBiYW5kRmlsdGVyX21heDRfQUxJQVMgcmFzdGVyUHJvY2Vzc2luZy5iYW5kRmlsdGVyX21heDRcbiNkZWZpbmUgc2F0dXJhdGlvbl92YWx1ZV9BTElBUyByYXN0ZXJQcm9jZXNzaW5nLnNhdHVyYXRpb25fdmFsdWVcbiNkZWZpbmUgcmVvcmRlcl9iYW5kc19vcmRlcmluZ19BTElBUyByYXN0ZXJQcm9jZXNzaW5nLnJlb3JkZXJfYmFuZHNfb3JkZXJpbmdcbiNkZWZpbmUgbWFza19rZWVwTWluX0FMSUFTIHJhc3RlclByb2Nlc3NpbmcubWFza19rZWVwTWluXG4jZGVmaW5lIG1hc2tfa2VlcE1heF9BTElBUyByYXN0ZXJQcm9jZXNzaW5nLm1hc2tfa2VlcE1heFxuI2RlZmluZSBwYW5zaGFycGVuX2Jyb3ZleV9wYW5XZWlnaHRfQUxJQVMgcmFzdGVyUHJvY2Vzc2luZy5wYW5zaGFycGVuX2Jyb3ZleV9wYW5XZWlnaHRcbmA7XG5cbmV4cG9ydCBjb25zdCBSQVNURVJfUFJPQ0VTU0lOR19GUyA9IFJBU1RFUl9QUk9DRVNTSU5HX1VOSUZPUk1fQkxPQ0sgKyBBTElBU19ERUZJTkVTO1xuXG5leHBvcnQgY29uc3QgcmFzdGVyUHJvY2Vzc2luZ1VuaWZvcm1zID0ge1xuICBuYW1lOiAncmFzdGVyUHJvY2Vzc2luZycsXG4gIGZzOiBSQVNURVJfUFJPQ0VTU0lOR19GUyxcbiAgdnM6ICcnLFxuICB1bmlmb3JtVHlwZXM6IHtcbiAgICBsaW5lYXJfcmVzY2FsZV9zY2FsZXI6ICdmMzInLFxuICAgIGxpbmVhcl9yZXNjYWxlX29mZnNldDogJ2YzMicsXG4gICAgZ2FtbWFfY29udHJhc3RfZ2FtbWExOiAnZjMyJyxcbiAgICBnYW1tYV9jb250cmFzdF9nYW1tYTI6ICdmMzInLFxuICAgIGdhbW1hX2NvbnRyYXN0X2dhbW1hMzogJ2YzMicsXG4gICAgZ2FtbWFfY29udHJhc3RfZ2FtbWE0OiAnZjMyJyxcbiAgICBzaWdtb2lkYWxDb250cmFzdF9jb250cmFzdDogJ2YzMicsXG4gICAgc2lnbW9pZGFsQ29udHJhc3RfYmlhczogJ2YzMicsXG4gICAgY29sb3JtYXBfaGFzQ2F0ZWdvcmljYWxDb2xvcnM6ICdpMzInLFxuICAgIGNvbG9ybWFwX2NhdGVnb3JpY2FsTWluVmFsdWU6ICdpMzInLFxuICAgIGNvbG9ybWFwX2NhdGVnb3JpY2FsTWF4VmFsdWU6ICdpMzInLFxuICAgIGNvbG9ybWFwX21heFBpeGVsVmFsdWU6ICdpMzInLFxuICAgIGJhbmRGaWx0ZXJfbWluMTogJ2YzMicsXG4gICAgYmFuZEZpbHRlcl9tYXgxOiAnZjMyJyxcbiAgICBiYW5kRmlsdGVyX21pbjI6ICdmMzInLFxuICAgIGJhbmRGaWx0ZXJfbWF4MjogJ2YzMicsXG4gICAgYmFuZEZpbHRlcl9taW4zOiAnZjMyJyxcbiAgICBiYW5kRmlsdGVyX21heDM6ICdmMzInLFxuICAgIGJhbmRGaWx0ZXJfbWluNDogJ2YzMicsXG4gICAgYmFuZEZpbHRlcl9tYXg0OiAnZjMyJyxcbiAgICBzYXR1cmF0aW9uX3ZhbHVlOiAnZjMyJyxcbiAgICByZW9yZGVyX2JhbmRzX29yZGVyaW5nOiAnbWF0NHg0PGYzMj4nLFxuICAgIG1hc2tfa2VlcE1pbjogJ2YzMicsXG4gICAgbWFza19rZWVwTWF4OiAnZjMyJyxcbiAgICBwYW5zaGFycGVuX2Jyb3ZleV9wYW5XZWlnaHQ6ICdmMzInXG4gIH1cbn07XG5cbi8qKlxuICogTWFwIGZyb20gb3JpZ2luYWwgbW9kdWxlIHVuaWZvcm0gbmFtZXMgKGFzIHJldHVybmVkIGJ5IGdldFVuaWZvcm1zKSB0b1xuICogdGhlIHByZWZpeGVkIG5hbWVzIHVzZWQgaW4gdGhlIHNoYXJlZCBVQk8uXG4gKi9cbmV4cG9ydCBjb25zdCBVTklGT1JNX05BTUVfTUFQOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IHtcbiAgbGluZWFyX3Jlc2NhbGU6IHtcbiAgICBzY2FsZXI6ICdsaW5lYXJfcmVzY2FsZV9zY2FsZXInLFxuICAgIG9mZnNldDogJ2xpbmVhcl9yZXNjYWxlX29mZnNldCdcbiAgfSxcbiAgZ2FtbWFfY29udHJhc3Q6IHtcbiAgICBnYW1tYTE6ICdnYW1tYV9jb250cmFzdF9nYW1tYTEnLFxuICAgIGdhbW1hMjogJ2dhbW1hX2NvbnRyYXN0X2dhbW1hMicsXG4gICAgZ2FtbWEzOiAnZ2FtbWFfY29udHJhc3RfZ2FtbWEzJyxcbiAgICBnYW1tYTQ6ICdnYW1tYV9jb250cmFzdF9nYW1tYTQnXG4gIH0sXG4gIHNpZ21vaWRhbENvbnRyYXN0OiB7XG4gICAgY29udHJhc3Q6ICdzaWdtb2lkYWxDb250cmFzdF9jb250cmFzdCcsXG4gICAgYmlhczogJ3NpZ21vaWRhbENvbnRyYXN0X2JpYXMnXG4gIH0sXG4gIGNvbG9ybWFwOiB7XG4gICAgaGFzQ2F0ZWdvcmljYWxDb2xvcnM6ICdjb2xvcm1hcF9oYXNDYXRlZ29yaWNhbENvbG9ycycsXG4gICAgY2F0ZWdvcmljYWxNaW5WYWx1ZTogJ2NvbG9ybWFwX2NhdGVnb3JpY2FsTWluVmFsdWUnLFxuICAgIGNhdGVnb3JpY2FsTWF4VmFsdWU6ICdjb2xvcm1hcF9jYXRlZ29yaWNhbE1heFZhbHVlJyxcbiAgICBtYXhQaXhlbFZhbHVlOiAnY29sb3JtYXBfbWF4UGl4ZWxWYWx1ZSdcbiAgfSxcbiAgYmFuZEZpbHRlcjoge1xuICAgIG1pbjE6ICdiYW5kRmlsdGVyX21pbjEnLFxuICAgIG1heDE6ICdiYW5kRmlsdGVyX21heDEnLFxuICAgIG1pbjI6ICdiYW5kRmlsdGVyX21pbjInLFxuICAgIG1heDI6ICdiYW5kRmlsdGVyX21heDInLFxuICAgIG1pbjM6ICdiYW5kRmlsdGVyX21pbjMnLFxuICAgIG1heDM6ICdiYW5kRmlsdGVyX21heDMnLFxuICAgIG1pbjQ6ICdiYW5kRmlsdGVyX21pbjQnLFxuICAgIG1heDQ6ICdiYW5kRmlsdGVyX21heDQnXG4gIH0sXG4gIHNhdHVyYXRpb246IHtcbiAgICB2YWx1ZTogJ3NhdHVyYXRpb25fdmFsdWUnXG4gIH0sXG4gIHJlb3JkZXJfYmFuZHM6IHtcbiAgICBvcmRlcmluZzogJ3Jlb3JkZXJfYmFuZHNfb3JkZXJpbmcnXG4gIH0sXG4gIG1hc2tfaW1hZ2VfZmxvYXQ6IHtcbiAgICBrZWVwTWluOiAnbWFza19rZWVwTWluJyxcbiAgICBrZWVwTWF4OiAnbWFza19rZWVwTWF4J1xuICB9LFxuICBtYXNrX2ltYWdlX3VpbnQ6IHtcbiAgICBrZWVwTWluOiAnbWFza19rZWVwTWluJyxcbiAgICBrZWVwTWF4OiAnbWFza19rZWVwTWF4J1xuICB9LFxuICBtYXNrX2ltYWdlX2ludDoge1xuICAgIGtlZXBNaW46ICdtYXNrX2tlZXBNaW4nLFxuICAgIGtlZXBNYXg6ICdtYXNrX2tlZXBNYXgnXG4gIH0sXG4gIHBhbnNoYXJwZW5fYnJvdmV5OiB7XG4gICAgcGFuV2VpZ2h0OiAncGFuc2hhcnBlbl9icm92ZXlfcGFuV2VpZ2h0J1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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
@@ -0,0 +1,3 @@
1
+ export {};
2
+ export {};
3
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jhc3Rlci90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgdHlwZSB7VGV4dHVyZX0gZnJvbSAnQGx1bWEuZ2wvY29yZSc7XG5pbXBvcnQgdHlwZSB7U2hhZGVyTW9kdWxlfSBmcm9tICcuL3dlYmdsJztcblxuLyoqIEFsbG93ZWQgaW5wdXQgZm9yIGltYWdlcyBwcm9wIOKAlCBlaXRoZXIgR1BVLXJlc2lkZW50IFRleHR1cmUgb2JqZWN0cyBvclxuICogbGVnYWN5IHJhc3RlciB0ZXh0dXJlIGRlc2NyaXB0b3JzIHdpdGggQ1BVIGRhdGEgdGhhdCB3aWxsIGJlIHVwbG9hZGVkLlxuICovXG5leHBvcnQgdHlwZSBJbWFnZUlucHV0ID0gUmVjb3JkPFxuICBzdHJpbmcsXG4gIFRleHR1cmUgfCBUZXh0dXJlW10gfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbj47XG5cbi8qKiBJbnRlcm5hbCBzdG9yYWdlIG9mIGltYWdlc1xuICogVGhlIFRleHR1cmUgb2JqZWN0IHJlZmVyZW5jZXMgZGF0YSBvbiB0aGUgR1BVXG4gKi9cbmV4cG9ydCB0eXBlIEltYWdlU3RhdGUgPSBSZWNvcmQ8c3RyaW5nLCBUZXh0dXJlIHwgVGV4dHVyZVtdPjtcblxuLyoqIFByb3BlcnRpZXMgYWRkZWQgYnkgUmFzdGVyTGF5ZXIuICovXG5leHBvcnQgdHlwZSBSYXN0ZXJMYXllckFkZGVkUHJvcHMgPSB7XG4gIG1vZHVsZXM6IFNoYWRlck1vZHVsZVtdO1xuICBpbWFnZXM6IEltYWdlSW5wdXQ7XG4gIG1vZHVsZVByb3BzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBvblJlZHJhd05lZWRlZD86ICgoKSA9PiB2b2lkKSB8IG51bGw7XG59O1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119