@kepler.gl/constants 3.3.0-alpha.0 → 3.3.0-alpha.10

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 (46) hide show
  1. package/dist/annotation.d.ts +23 -0
  2. package/dist/cjs/annotation.js +45 -0
  3. package/dist/cjs/color-palettes.js +461 -0
  4. package/dist/cjs/colors-by-theme.js +519 -0
  5. package/dist/cjs/dataset.js +176 -0
  6. package/dist/cjs/default-settings.js +1740 -0
  7. package/dist/cjs/gpu-parameters.js +125 -0
  8. package/dist/{index.js → cjs/index.js} +13 -1
  9. package/dist/cjs/keyevent.js +26 -0
  10. package/dist/cjs/layers.js +609 -0
  11. package/dist/{plot.js → cjs/plot.js} +1 -1
  12. package/dist/cjs/time.js +194 -0
  13. package/dist/cjs/tooltip.js +221 -0
  14. package/dist/cjs/user-feedbacks.js +15 -0
  15. package/dist/cjs/user-guides.js +19 -0
  16. package/dist/dataset.d.ts +70 -1
  17. package/dist/default-settings.d.ts +106 -2
  18. package/dist/esm/annotation.js +38 -0
  19. package/dist/esm/color-palettes.js +453 -0
  20. package/dist/esm/colors-by-theme.js +513 -0
  21. package/dist/esm/dataset.js +169 -0
  22. package/dist/esm/default-settings.js +1734 -0
  23. package/dist/esm/gpu-parameters.js +119 -0
  24. package/dist/esm/index.js +18 -0
  25. package/dist/esm/keyevent.js +19 -0
  26. package/dist/esm/layers.js +602 -0
  27. package/dist/esm/plot.js +9 -0
  28. package/dist/esm/time.js +190 -0
  29. package/dist/esm/tooltip.js +215 -0
  30. package/dist/esm/user-feedbacks.js +9 -0
  31. package/dist/esm/user-guides.js +13 -0
  32. package/dist/index.d.ts +1 -0
  33. package/dist/layers.d.ts +7 -0
  34. package/package.json +25 -16
  35. package/dist/color-palettes.js +0 -462
  36. package/dist/colors-by-theme.js +0 -519
  37. package/dist/dataset.js +0 -63
  38. package/dist/default-settings.js +0 -1495
  39. package/dist/gpu-parameters.js +0 -125
  40. package/dist/keyevent.js +0 -26
  41. package/dist/layers.js +0 -549
  42. package/dist/time.js +0 -194
  43. package/dist/tooltip.js +0 -221
  44. package/dist/user-feedbacks.js +0 -15
  45. package/dist/user-guides.js +0 -19
  46. package/umd/keplergl.min.js +0 -58
@@ -1,1495 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.MAP_LIB_OPTIONS = exports.MAP_INFO_CHARACTER = exports.MAP_CONTROLS = exports.LOADING_METHODS = exports.LOADERS_CDN_VERSION = exports.LOADERS_CDN_URL = exports.LIGHT_AND_SHADOW_EFFECT_TIME_MODES = exports.LIGHT_AND_SHADOW_EFFECT = exports.LAYER_BLENDINGS = exports.KEPLER_UNFOLDED_BUCKET = exports.KEPLER_GL_WEBSITE = exports.KEPLER_GL_VERSION = exports.KEPLER_GL_NAME = exports.INIT_FILTER_ITEMS_IN_DROPDOWN = exports.ICON_FIELDS = exports.HIGHLIGH_COLOR_3D = exports.GEOJSON_FIELDS = exports.GEOCODER_LAYER_ID = exports.GEOCODER_ICON_SIZE = exports.GEOCODER_ICON_COLOR = exports.GEOCODER_GEO_OFFSET = exports.GEOCODER_DATASET_NAME = exports.GEOARROW_METADATA_KEY = exports.GEOARROW_EXTENSIONS = exports.FourByThreeRatioOption = exports.FPS = exports.FILTER_VIEW_TYPES = exports.FILTER_TYPES = exports.FIELD_TYPE_DISPLAY = exports.FIELD_OPTS = exports.FIELD_COLORS = exports.EXPORT_MAP_ID = exports.EXPORT_MAP_FORMAT_OPTIONS = exports.EXPORT_MAP_FORMATS = exports.EXPORT_IMG_RESOLUTION_OPTIONS = exports.EXPORT_IMG_RATIO_OPTIONS = exports.EXPORT_IMG_RATIOS = exports.EXPORT_IMAGE_ID = exports.EXPORT_HTML_MAP_MODE_OPTIONS = exports.EXPORT_HTML_MAP_MODES = exports.EXPORT_DATA_TYPE_OPTIONS = exports.EXPORT_DATA_TYPE = exports.EXPORT_DATA_ID = exports.EMPTY_MAPBOX_STYLE = exports.EFFECT_DESCRIPTIONS = exports.EDITOR_MODES = exports.EDITOR_LAYER_PICKING_RADIUS = exports.EDITOR_LAYER_ID = exports.DISTANCE_FOG_TYPE = exports.DIMENSIONS = exports.DELETE_DATA_ID = exports.DEFAULT_UUID_COUNT = exports.DEFAULT_TOOLTIP_FIELDS = exports.DEFAULT_TIME_FORMAT = exports.DEFAULT_TIMEZONE = exports.DEFAULT_SHADOW_INTENSITY = exports.DEFAULT_SHADOW_COLOR = exports.DEFAULT_POST_PROCESSING_EFFECT_TYPE = exports.DEFAULT_PICKING_RADIUS = exports.DEFAULT_NO_BASEMAP_STYLE = exports.DEFAULT_NOTIFICATION_TYPES = exports.DEFAULT_NOTIFICATION_TOPICS = exports.DEFAULT_NOTIFICATION_MESSAGE = exports.DEFAULT_MAP_STYLES = exports.DEFAULT_MAPLIBRE_STYLES = exports.DEFAULT_MAPBOX_STYLES = exports.DEFAULT_MAPBOX_SATELITE_STYLES = exports.DEFAULT_MAPBOX_API_URL = exports.DEFAULT_LIGHT_INTENSITY = exports.DEFAULT_LIGHT_COLOR = exports.DEFAULT_LIGHT_AND_SHADOW_PROPS = exports.DEFAULT_LAYER_GROUPS = exports.DEFAULT_LAYER_COLOR_PALETTE_STEPS = exports.DEFAULT_LAYER_COLOR_PALETTE = exports.DEFAULT_LAYER_COLOR = exports.DEFAULT_FILTER_VIEW_TYPE = exports.DEFAULT_FEATURE_FLAGS = exports.DEFAULT_BLDG_COLOR = exports.DEFAULT_BASE_MAP_STYLE = exports.DEFAULT_BACKGROUND_COLOR = exports.DEFAULT_AGGREGATION = exports.DATA_TABLE_ID = exports.DATASET_FORMATS = exports.CustomRatioOption = exports.CHANNEL_SCALE_SUPPORTED_FIELDS = exports.CHANNEL_SCALES = exports.BASE_SPEED = exports.BASE_MAP_COLOR_MODES = exports.BASE_MAP_BACKGROUND_LAYER_IDS = exports.BASEMAP_ICON_PREFIX = exports.BACKGROUND_LAYER_GROUP_SLUG = exports.BACKGROUND_LAYER_GROUP = exports.ANIMATION_WINDOW = exports.ALTITUDE_FIELDS = exports.ALL_FIELD_TYPES = exports.AGGREGATION_TYPE_OPTIONS = exports.AGGREGATION_TYPES = exports.ADD_MAP_STYLE_ID = exports.ADD_DATA_ID = exports.ACTION_PREFIX = void 0;
8
- exports.dataTestIds = exports.TwoXResolutionOption = exports.TRIP_POINT_FIELDS = exports.TRIP_ARC_FIELDS = exports.TRANSITION_DURATION = exports.THROTTLE_NOTIFICATION_TIME = exports.THREE_D_BUILDING_LAYER_GROUP_SLUG = exports.THEME = exports.TEXT_OUTLINE_MULTIPLIER = exports.TABLE_OPTION_LIST = exports.TABLE_OPTION = exports.SixteenByNineRatioOption = exports.ScreenRatioOption = exports.SYNC_TIMELINE_MODES = exports.SURFACE_FOG_TYPE = exports.SPEED_CONTROL_STEP = exports.SPEED_CONTROL_RANGE = exports.SORT_ORDER = exports.SIDEBAR_PANELS = exports.SHARE_MAP_ID = exports.SCALE_TYPE_NAMES = exports.SCALE_TYPES = exports.SCALE_FUNC = exports.SAVE_MAP_ID = exports.Resolution2560x1440Option = exports.Resolution1920x1440Option = exports.Resolution1920x1080Option = exports.Resolution1600x900Option = exports.Resolution1600x1200Option = exports.Resolution1280x960Option = exports.Resolution1280x720Option = exports.Resolution1024x768Option = exports.RESOLUTIONS = exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = exports.POSTPROCESSING_EFFECTS = exports.PLOT_TYPES = exports.PANEL_VIEW_TOGGLES = exports.PANELS = exports.OneXResolutionOption = exports.OVERWRITE_MAP_ID = exports.OVERLAY_BLENDINGS = exports.NO_VALUE_COLOR = exports.NO_MAP_ID = exports.NO_BASEMAP_ICON = exports.MAX_GPU_FILTERS = exports.MAX_DEFAULT_TOOLTIPS = exports.MAP_THUMBNAIL_DIMENSION = void 0;
9
- exports.getHTMLMapModeTileUrl = getHTMLMapModeTileUrl;
10
- exports.ordinalFieldScaleFunctions = exports.ordinalFieldAggrScaleFunctions = exports.notSupportedScaleOpts = exports.notSupportAggrOpts = exports.linearFieldScaleFunctions = exports.linearFieldAggrScaleFunctions = exports.getLoaderOptions = void 0;
11
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
- var _keymirror = _interopRequireDefault(require("keymirror"));
15
- var _d3Scale = require("d3-scale");
16
- var _tooltip = require("./tooltip");
17
- var _FIELD_TYPE_DISPLAY, _FIELD_OPTS; // SPDX-License-Identifier: MIT
18
- // Copyright contributors to the kepler.gl project
19
- 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; }
20
- 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; }
21
- var ACTION_PREFIX = exports.ACTION_PREFIX = '@@kepler.gl/';
22
- var KEPLER_UNFOLDED_BUCKET = exports.KEPLER_UNFOLDED_BUCKET = 'https://studio-public-data.foursquare.com/statics/keplergl';
23
- var BASEMAP_ICON_PREFIX = exports.BASEMAP_ICON_PREFIX = "geodude";
24
- var DEFAULT_MAPBOX_API_URL = exports.DEFAULT_MAPBOX_API_URL = 'https://api.mapbox.com';
25
- var TRANSITION_DURATION = exports.TRANSITION_DURATION = 0;
26
-
27
- // Modal Ids
28
- /**
29
- * Modal id: data table
30
- * @constant
31
- * @type {string}
32
- * @public
33
- */
34
- var DATA_TABLE_ID = exports.DATA_TABLE_ID = 'dataTable';
35
- /**
36
- * Modal id: delete dataset confirm dialog
37
- * @constant
38
- * @type {string}
39
- * @public
40
- */
41
- var DELETE_DATA_ID = exports.DELETE_DATA_ID = 'deleteData';
42
- /**
43
- * Modal id: add data modal
44
- * @constant
45
- * @type {string}
46
- * @public
47
- */
48
- var ADD_DATA_ID = exports.ADD_DATA_ID = 'addData';
49
- /**
50
- * Modal id: export image modal
51
- * @constant
52
- * @type {string}
53
- * @public
54
- */
55
- var EXPORT_IMAGE_ID = exports.EXPORT_IMAGE_ID = 'exportImage';
56
- /**
57
- * Modal id: export data modal
58
- * @constant
59
- * @type {string}
60
- * @public
61
- */
62
- var EXPORT_DATA_ID = exports.EXPORT_DATA_ID = 'exportData';
63
- /**
64
- * Modal id: add custom map style modal
65
- * @constant
66
- * @type {string}
67
- * @public
68
- */
69
- var ADD_MAP_STYLE_ID = exports.ADD_MAP_STYLE_ID = 'addMapStyle';
70
- /**
71
- * Modal id: export map modal
72
- * @constant
73
- * @type {string}
74
- * @public
75
- */
76
- var EXPORT_MAP_ID = exports.EXPORT_MAP_ID = 'exportMap';
77
- /**
78
- * Modal id: save map modal
79
- * @constant
80
- * @type {string}
81
- * @public
82
- */
83
- var SAVE_MAP_ID = exports.SAVE_MAP_ID = 'saveMap';
84
- /**
85
- * Modal id: confirm to overwrite saved map
86
- * @constant
87
- * @type {string}
88
- * @public
89
- */
90
- var OVERWRITE_MAP_ID = exports.OVERWRITE_MAP_ID = 'overwriteMap';
91
- /**
92
- * Modal id: share map url modal
93
- * @constant
94
- * @type {string}
95
- * @public
96
- */
97
- var SHARE_MAP_ID = exports.SHARE_MAP_ID = 'shareMap';
98
- var KEPLER_GL_NAME = exports.KEPLER_GL_NAME = 'kepler.gl';
99
-
100
- // __PACKAGE_VERSION__ is automatically injected by Babel/Esbuild during the build process
101
- // Since we are injecting this during the build process with babel
102
- // while developing VERSION is not defined, we capture the exception and return
103
- // an empty string which will allow us to retrieve the latest umd version
104
- var KEPLER_GL_VERSION = exports.KEPLER_GL_VERSION = "3.3.0-alpha.0";
105
- var KEPLER_GL_WEBSITE = exports.KEPLER_GL_WEBSITE = 'http://kepler.gl/';
106
- var DIMENSIONS = exports.DIMENSIONS = {
107
- sidePanel: {
108
- width: 300,
109
- margin: {
110
- top: 12,
111
- left: 12,
112
- bottom: 12,
113
- right: 20
114
- },
115
- headerHeight: 96
116
- },
117
- mapControl: {
118
- width: 184,
119
- padding: 12,
120
- mapLegend: {
121
- pinned: {
122
- bottom: 22,
123
- right: 12
124
- }
125
- }
126
- }
127
- };
128
-
129
- /**
130
- * Theme name that can be passed to `KeplerGl` `prop.theme`.
131
- * Available themes are `THEME.light` and `THEME.dark`. Default theme is `THEME.dark`
132
- * @constant
133
- * @type {object}
134
- * @public
135
- * @example
136
- * ```js
137
- * const Map = () => <KeplerGl theme={THEME.light} id="map"/>
138
- * ```
139
- */
140
- var THEME = exports.THEME = (0, _keymirror["default"])({
141
- light: null,
142
- dark: null,
143
- base: null
144
- });
145
- var SIDEBAR_PANELS = exports.SIDEBAR_PANELS = [{
146
- id: 'layer',
147
- label: 'sidebar.panels.layer',
148
- onClick: null
149
- }, {
150
- id: 'filter',
151
- label: 'sidebar.panels.filter',
152
- onClick: null
153
- }, {
154
- id: 'interaction',
155
- label: 'sidebar.panels.interaction',
156
- onClick: null
157
- }, {
158
- id: 'map',
159
- label: 'sidebar.panels.basemap',
160
- onClick: null
161
- }];
162
- var PANEL_VIEW_TOGGLES = exports.PANEL_VIEW_TOGGLES = (0, _keymirror["default"])({
163
- list: null,
164
- byDataset: null
165
- });
166
-
167
- // backward compatibility
168
- var PANELS = exports.PANELS = SIDEBAR_PANELS;
169
-
170
- // MAP STYLES
171
-
172
- var DEFAULT_BLDG_COLOR = exports.DEFAULT_BLDG_COLOR = '#D1CEC7';
173
- var DEFAULT_BACKGROUND_COLOR = exports.DEFAULT_BACKGROUND_COLOR = '#000000';
174
-
175
- // assists in identifying basemap background layers when auto-determining the backgroundColor
176
- var BASE_MAP_BACKGROUND_LAYER_IDS = exports.BASE_MAP_BACKGROUND_LAYER_IDS = ['background', 'bg', 'land', 'water'];
177
- var BACKGROUND_LAYER_GROUP_SLUG = exports.BACKGROUND_LAYER_GROUP_SLUG = 'Background';
178
- var THREE_D_BUILDING_LAYER_GROUP_SLUG = exports.THREE_D_BUILDING_LAYER_GROUP_SLUG = '3d building';
179
- var BACKGROUND_LAYER_GROUP = exports.BACKGROUND_LAYER_GROUP = {
180
- slug: BACKGROUND_LAYER_GROUP_SLUG,
181
- filter: function filter() {
182
- return false;
183
- },
184
- defaultVisibility: false,
185
- isVisibilityToggleAvailable: false,
186
- isMoveToTopAvailable: false,
187
- isColorPickerAvailable: true
188
- };
189
- var DEFAULT_LAYER_GROUPS = exports.DEFAULT_LAYER_GROUPS = [{
190
- slug: 'label',
191
- filter: function filter(_ref) {
192
- var id = _ref.id,
193
- type = _ref.type;
194
- return id.match(/(?=(label|place-|poi-))/) || (type === null || type === void 0 ? void 0 : type.match(/(?=(symbol))/));
195
- },
196
- defaultVisibility: true,
197
- isVisibilityToggleAvailable: true,
198
- isMoveToTopAvailable: true,
199
- isColorPickerAvailable: false
200
- }, {
201
- slug: 'road',
202
- filter: function filter(_ref2) {
203
- var id = _ref2.id;
204
- return id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/);
205
- },
206
- defaultVisibility: true,
207
- isVisibilityToggleAvailable: true,
208
- isMoveToTopAvailable: true,
209
- isColorPickerAvailable: false
210
- }, {
211
- slug: 'border',
212
- filter: function filter(_ref3) {
213
- var id = _ref3.id;
214
- return id.match(/border|boundaries|boundary/);
215
- },
216
- defaultVisibility: false,
217
- isVisibilityToggleAvailable: true,
218
- isMoveToTopAvailable: true,
219
- isColorPickerAvailable: false
220
- }, {
221
- slug: 'building',
222
- filter: function filter(_ref4) {
223
- var id = _ref4.id;
224
- return id.match(/building/);
225
- },
226
- defaultVisibility: true,
227
- isVisibilityToggleAvailable: true,
228
- isMoveToTopAvailable: true,
229
- isColorPickerAvailable: false
230
- }, {
231
- slug: 'water',
232
- filter: function filter(_ref5) {
233
- var id = _ref5.id;
234
- return id.match(/(?=(water|stream|ferry))/);
235
- },
236
- defaultVisibility: true,
237
- isVisibilityToggleAvailable: true,
238
- isMoveToTopAvailable: true,
239
- isColorPickerAvailable: false
240
- }, {
241
- slug: 'land',
242
- filter: function filter(_ref6) {
243
- var id = _ref6.id;
244
- return id.match(/(?=(parks|landcover|industrial|sand|hillshade))/);
245
- },
246
- defaultVisibility: true,
247
- isVisibilityToggleAvailable: true,
248
- isMoveToTopAvailable: true,
249
- isColorPickerAvailable: false
250
- }, {
251
- slug: THREE_D_BUILDING_LAYER_GROUP_SLUG,
252
- filter: function filter() {
253
- return false;
254
- },
255
- defaultVisibility: false,
256
- isVisibilityToggleAvailable: true,
257
- isMoveToTopAvailable: true,
258
- isColorPickerAvailable: true
259
- }];
260
- var BASE_MAP_COLOR_MODES = exports.BASE_MAP_COLOR_MODES = (0, _keymirror["default"])({
261
- NONE: null,
262
- DARK: null,
263
- LIGHT: null
264
- });
265
- var NO_MAP_ID = exports.NO_MAP_ID = 'no_map';
266
-
267
- // Fallback style to use when styles are being fetched, or when
268
- // a style fails to fetch
269
- var EMPTY_MAPBOX_STYLE = exports.EMPTY_MAPBOX_STYLE = {
270
- version: 8,
271
- sources: {},
272
- layers: []
273
- };
274
- var MAP_LIB_OPTIONS = exports.MAP_LIB_OPTIONS = {
275
- MAPBOX: 'mapbox',
276
- MAPLIBRE: 'maplibre'
277
- };
278
- var NO_BASEMAP_ICON = exports.NO_BASEMAP_ICON = "".concat(BASEMAP_ICON_PREFIX, "/NO_BASEMAP.png");
279
- var DEFAULT_BASE_MAP_STYLE = exports.DEFAULT_BASE_MAP_STYLE = 'dark-matter';
280
- var DEFAULT_NO_BASEMAP_STYLE = exports.DEFAULT_NO_BASEMAP_STYLE = {
281
- id: NO_MAP_ID,
282
- label: 'No Basemap',
283
- url: '',
284
- icon: NO_BASEMAP_ICON,
285
- layerGroups: [BACKGROUND_LAYER_GROUP],
286
- colorMode: BASE_MAP_COLOR_MODES.NONE,
287
- style: EMPTY_MAPBOX_STYLE
288
- };
289
- var DEFAULT_MAPBOX_STYLES = exports.DEFAULT_MAPBOX_STYLES = [{
290
- id: 'dark',
291
- label: 'Dark',
292
- url: 'mapbox://styles/uberdata/cjoqbbf6l9k302sl96tyvka09',
293
- icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_DARK_V2.png"),
294
- layerGroups: DEFAULT_LAYER_GROUPS,
295
- colorMode: BASE_MAP_COLOR_MODES.DARK,
296
- complimentaryStyleId: 'light'
297
- }, {
298
- id: 'light',
299
- label: 'Light',
300
- url: 'mapbox://styles/uberdata/cjoqb9j339k1f2sl9t5ic5bn4',
301
- icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_LIGHT_V2.png"),
302
- layerGroups: DEFAULT_LAYER_GROUPS,
303
- colorMode: BASE_MAP_COLOR_MODES.LIGHT,
304
- complimentaryStyleId: 'dark'
305
- }, {
306
- id: 'muted',
307
- label: 'Muted Light',
308
- url: 'mapbox://styles/uberdata/cjfyl03kp1tul2smf5v2tbdd4',
309
- icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_MUTED_LIGHT.png"),
310
- layerGroups: DEFAULT_LAYER_GROUPS,
311
- colorMode: BASE_MAP_COLOR_MODES.LIGHT,
312
- complimentaryStyleId: 'muted_night'
313
- }, {
314
- id: 'muted_night',
315
- label: 'Muted Night',
316
- url: 'mapbox://styles/uberdata/cjfxhlikmaj1b2soyzevnywgs',
317
- icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_MUTED_NIGHT.png"),
318
- layerGroups: DEFAULT_LAYER_GROUPS,
319
- colorMode: BASE_MAP_COLOR_MODES.DARK,
320
- complimentaryStyleId: 'muted'
321
- }];
322
- var DEFAULT_MAPBOX_SATELITE_STYLES = exports.DEFAULT_MAPBOX_SATELITE_STYLES = [{
323
- id: 'satellite',
324
- label: 'Satellite with streets',
325
- url: "mapbox://styles/mapbox/satellite-streets-v11",
326
- icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_SATELLITE.png"),
327
- layerGroups: DEFAULT_LAYER_GROUPS,
328
- colorMode: BASE_MAP_COLOR_MODES.NONE
329
- }];
330
- var DEFAULT_MAPLIBRE_STYLES = exports.DEFAULT_MAPLIBRE_STYLES = [{
331
- id: 'dark-matter',
332
- label: 'DarkMatter',
333
- url: 'https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',
334
- icon: "".concat(BASEMAP_ICON_PREFIX, "/DARKMATTER.png"),
335
- layerGroups: DEFAULT_LAYER_GROUPS,
336
- colorMode: BASE_MAP_COLOR_MODES.DARK,
337
- complimentaryStyleId: 'positron'
338
- }, {
339
- id: 'positron',
340
- label: 'Positron',
341
- url: 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',
342
- icon: "".concat(BASEMAP_ICON_PREFIX, "/POSITRON.png"),
343
- layerGroups: DEFAULT_LAYER_GROUPS,
344
- colorMode: BASE_MAP_COLOR_MODES.LIGHT,
345
- complimentaryStyleId: 'dark-matter'
346
- }, {
347
- id: 'voyager',
348
- label: 'Voyager',
349
- url: 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',
350
- icon: "".concat(BASEMAP_ICON_PREFIX, "/VOYAGER.png"),
351
- layerGroups: DEFAULT_LAYER_GROUPS,
352
- colorMode: BASE_MAP_COLOR_MODES.LIGHT,
353
- complimentaryStyleId: 'dark-matter'
354
- }];
355
- var DEFAULT_MAP_STYLES = exports.DEFAULT_MAP_STYLES = [DEFAULT_NO_BASEMAP_STYLE].concat(DEFAULT_MAPLIBRE_STYLES, DEFAULT_MAPBOX_SATELITE_STYLES, DEFAULT_MAPBOX_STYLES);
356
- var GEOJSON_FIELDS = exports.GEOJSON_FIELDS = {
357
- geojson: ['_geojson', 'all_points', 'geojson']
358
- };
359
- var ICON_FIELDS = exports.ICON_FIELDS = {
360
- icon: ['icon']
361
- };
362
- var TRIP_POINT_FIELDS = exports.TRIP_POINT_FIELDS = [['lat', 'lng'], ['lat', 'lon'], ['lat', 'long'], ['latitude', 'longitude']];
363
- var ALTITUDE_FIELDS = exports.ALTITUDE_FIELDS = ['alt', 'altitude'];
364
- var TRIP_ARC_FIELDS = exports.TRIP_ARC_FIELDS = {
365
- lat0: 'begintrip',
366
- lng0: 'begintrip',
367
- lat1: 'dropoff',
368
- lng1: 'dropoff'
369
- };
370
- var FILTER_TYPES = exports.FILTER_TYPES = (0, _keymirror["default"])({
371
- range: null,
372
- select: null,
373
- input: null,
374
- timeRange: null,
375
- multiSelect: null,
376
- polygon: null
377
- });
378
- var FILTER_VIEW_TYPES = exports.FILTER_VIEW_TYPES = (0, _keymirror["default"])({
379
- side: null,
380
- enlarged: null,
381
- minified: null
382
- });
383
- var DEFAULT_FILTER_VIEW_TYPE = exports.DEFAULT_FILTER_VIEW_TYPE = FILTER_VIEW_TYPES.side;
384
- var SCALE_TYPES = exports.SCALE_TYPES = (0, _keymirror["default"])({
385
- ordinal: null,
386
- quantile: null,
387
- quantize: null,
388
- linear: null,
389
- sqrt: null,
390
- log: null,
391
- threshold: null,
392
- custom: null,
393
- customOrdinal: null,
394
- // ordinal domain to linear range
395
- point: null
396
- });
397
- var SCALE_TYPE_NAMES = exports.SCALE_TYPE_NAMES = {
398
- ordinal: 'Ordinal',
399
- quantile: 'Quantile',
400
- quantize: 'Quantize',
401
- linear: 'Linear',
402
- sqrt: 'Sqrt',
403
- log: 'Log',
404
- threshold: 'Threshold',
405
- custom: 'Custom Breaks',
406
- customOrdinal: 'Custom Ordinal',
407
- point: 'Point'
408
- };
409
- var SCALE_FUNC = exports.SCALE_FUNC = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, SCALE_TYPES.linear, _d3Scale.scaleLinear), SCALE_TYPES.quantize, _d3Scale.scaleQuantize), SCALE_TYPES.quantile, _d3Scale.scaleQuantile), SCALE_TYPES.ordinal, _d3Scale.scaleOrdinal), SCALE_TYPES.sqrt, _d3Scale.scaleSqrt), SCALE_TYPES.log, _d3Scale.scaleLog), SCALE_TYPES.point, _d3Scale.scalePoint), SCALE_TYPES.threshold, _d3Scale.scaleThreshold), SCALE_TYPES.custom, _d3Scale.scaleThreshold), SCALE_TYPES.customOrdinal, _d3Scale.scaleOrdinal);
410
- var ALL_FIELD_TYPES = exports.ALL_FIELD_TYPES = (0, _keymirror["default"])({
411
- "boolean": null,
412
- date: null,
413
- geojson: null,
414
- integer: null,
415
- real: null,
416
- string: null,
417
- timestamp: null,
418
- point: null,
419
- array: null,
420
- object: null,
421
- geoarrow: null,
422
- h3: null
423
- });
424
-
425
- // Data Table
426
- var SORT_ORDER = exports.SORT_ORDER = (0, _keymirror["default"])({
427
- ASCENDING: null,
428
- DESCENDING: null,
429
- UNSORT: null
430
- });
431
- var TABLE_OPTION = exports.TABLE_OPTION = (0, _keymirror["default"])({
432
- SORT_ASC: null,
433
- SORT_DES: null,
434
- UNSORT: null,
435
- PIN: null,
436
- UNPIN: null,
437
- COPY: null,
438
- FORMAT_COLUMN: null
439
- });
440
- var TABLE_OPTION_LIST = exports.TABLE_OPTION_LIST = [{
441
- value: TABLE_OPTION.SORT_ASC,
442
- display: 'Sort Ascending',
443
- icon: 'ArrowUp',
444
- condition: function condition(props) {
445
- return props.sortTableColumn && props.sortMode !== SORT_ORDER.ASCENDING;
446
- }
447
- }, {
448
- value: TABLE_OPTION.SORT_DES,
449
- display: 'Sort Descending',
450
- icon: 'ArrowDown',
451
- condition: function condition(props) {
452
- return props.sortTableColumn && props.sortMode !== SORT_ORDER.DESCENDING;
453
- }
454
- }, {
455
- value: TABLE_OPTION.UNSORT,
456
- display: 'Unsort Column',
457
- icon: 'Cancel',
458
- condition: function condition(props) {
459
- return props.isSorted;
460
- }
461
- }, {
462
- value: TABLE_OPTION.PIN,
463
- display: 'Pin Column',
464
- icon: 'Pin',
465
- condition: function condition(props) {
466
- return !props.isPinned;
467
- }
468
- }, {
469
- value: TABLE_OPTION.UNPIN,
470
- display: 'Unpin Column',
471
- icon: 'Cancel',
472
- condition: function condition(props) {
473
- return props.isPinned;
474
- }
475
- }, {
476
- value: TABLE_OPTION.COPY,
477
- display: 'Copy Column',
478
- icon: 'Clipboard'
479
- }, {
480
- value: TABLE_OPTION.FORMAT_COLUMN,
481
- display: 'Format Column',
482
- icon: 'Hash',
483
- condition: function condition(props) {
484
- return props.setDisplayFormat;
485
- }
486
- }];
487
- var YELLOW = '248, 194, 28';
488
- var PINK = '242, 152, 163';
489
- var PURPLE = '160, 106, 206';
490
- var BLUE = '140, 210, 205';
491
- var BLUE2 = '106, 160, 206';
492
- var BLUE3 = '0, 172, 237';
493
- var GREEN = '106, 160, 56';
494
- var GREEN2 = '74, 165, 150';
495
- var RED = '237, 88, 106';
496
- var ORANGE = '231, 110, 58';
497
- var FIELD_TYPE_DISPLAY = exports.FIELD_TYPE_DISPLAY = (_FIELD_TYPE_DISPLAY = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_TYPE_DISPLAY, ALL_FIELD_TYPES["boolean"], {
498
- label: 'bool',
499
- color: PINK
500
- }), ALL_FIELD_TYPES.date, {
501
- label: 'date',
502
- color: PURPLE
503
- }), ALL_FIELD_TYPES.geojson, {
504
- label: 'geo',
505
- color: BLUE2
506
- }), ALL_FIELD_TYPES.geoarrow, {
507
- label: 'geo',
508
- color: BLUE2
509
- }), ALL_FIELD_TYPES.integer, {
510
- label: 'int',
511
- color: YELLOW
512
- }), ALL_FIELD_TYPES.real, {
513
- label: 'float',
514
- color: YELLOW
515
- }), ALL_FIELD_TYPES.string, {
516
- label: 'string',
517
- color: BLUE
518
- }), ALL_FIELD_TYPES.timestamp, {
519
- label: 'time',
520
- color: GREEN
521
- }), ALL_FIELD_TYPES.point, {
522
- label: 'point',
523
- color: BLUE3
524
- }), ALL_FIELD_TYPES.array, {
525
- label: 'array',
526
- color: ORANGE
527
- }), (0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_TYPE_DISPLAY, ALL_FIELD_TYPES.object, {
528
- label: 'object',
529
- color: GREEN2
530
- }), ALL_FIELD_TYPES.h3, {
531
- label: 'h3',
532
- color: BLUE
533
- }));
534
- var FIELD_COLORS = exports.FIELD_COLORS = {
535
- "default": RED
536
- };
537
- var HIGHLIGH_COLOR_3D = exports.HIGHLIGH_COLOR_3D = [255, 255, 255, 60];
538
- var CHANNEL_SCALES = exports.CHANNEL_SCALES = (0, _keymirror["default"])({
539
- color: null,
540
- radius: null,
541
- size: null,
542
- colorAggr: null,
543
- sizeAggr: null
544
- });
545
- var AGGREGATION_TYPES = exports.AGGREGATION_TYPES = {
546
- // default
547
- count: 'count',
548
- // linear
549
- average: 'average',
550
- maximum: 'maximum',
551
- minimum: 'minimum',
552
- median: 'median',
553
- stdev: 'stdev',
554
- sum: 'sum',
555
- variance: 'variance',
556
- // ordinal
557
- mode: 'mode',
558
- countUnique: 'countUnique'
559
- };
560
- var AGGREGATION_TYPE_OPTIONS = exports.AGGREGATION_TYPE_OPTIONS = Object.entries(AGGREGATION_TYPES).map(function (_ref7) {
561
- var _ref8 = (0, _slicedToArray2["default"])(_ref7, 2),
562
- key = _ref8[0],
563
- value = _ref8[1];
564
- return {
565
- id: key,
566
- label: key === 'stdev' ? 'Std Deviation' : key === 'countUnique' ? 'Count Unique' : typeof value === 'string' ? value.charAt(0).toUpperCase() + value.slice(1) : value
567
- };
568
- });
569
- var linearFieldScaleFunctions = exports.linearFieldScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom]), CHANNEL_SCALES.radius, [SCALE_TYPES.sqrt]), CHANNEL_SCALES.size, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]);
570
- var DEFAULT_AGGREGATION_COLOR_SCALES = [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom];
571
- var linearFieldAggrScaleFunctions = exports.linearFieldAggrScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, [AGGREGATION_TYPES.average, AGGREGATION_TYPES.maximum, AGGREGATION_TYPES.minimum, AGGREGATION_TYPES.median, AGGREGATION_TYPES.stdev, AGGREGATION_TYPES.sum, AGGREGATION_TYPES.variance, AGGREGATION_TYPES.count].reduce(function (prev, cur) {
572
- prev[cur] = DEFAULT_AGGREGATION_COLOR_SCALES;
573
- return prev;
574
- }, {})), CHANNEL_SCALES.sizeAggr, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, AGGREGATION_TYPES.average, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.maximum, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.minimum, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.median, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.stdev, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.sum, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]), AGGREGATION_TYPES.variance, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]));
575
- var ordinalFieldScaleFunctions = exports.ordinalFieldScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, [SCALE_TYPES.ordinal, SCALE_TYPES.customOrdinal]), CHANNEL_SCALES.radius, [SCALE_TYPES.point]), CHANNEL_SCALES.size, [SCALE_TYPES.point]);
576
- var ordinalFieldAggrScaleFunctions = exports.ordinalFieldAggrScaleFunctions = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, AGGREGATION_TYPES.mode, [SCALE_TYPES.ordinal]), AGGREGATION_TYPES.countUnique, [SCALE_TYPES.quantize, SCALE_TYPES.quantile])), CHANNEL_SCALES.sizeAggr, {});
577
- var notSupportedScaleOpts = exports.notSupportedScaleOpts = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, []), CHANNEL_SCALES.radius, []), CHANNEL_SCALES.size, []);
578
- var notSupportAggrOpts = exports.notSupportAggrOpts = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, {}), CHANNEL_SCALES.sizeAggr, {});
579
-
580
- /**
581
- * Default aggregation are based on ocunt
582
- */
583
- var DEFAULT_AGGREGATION = exports.DEFAULT_AGGREGATION = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, (0, _defineProperty2["default"])({}, AGGREGATION_TYPES.count, DEFAULT_AGGREGATION_COLOR_SCALES)), CHANNEL_SCALES.sizeAggr, (0, _defineProperty2["default"])({}, AGGREGATION_TYPES.count, [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]));
584
-
585
- /**
586
- * Define what type of scale operation is allowed on each type of fields
587
- */
588
- var FIELD_OPTS = exports.FIELD_OPTS = (_FIELD_OPTS = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_OPTS, ALL_FIELD_TYPES.string, {
589
- type: 'categorical',
590
- scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
591
- format: {
592
- legend: function legend(d) {
593
- return d;
594
- },
595
- tooltip: []
596
- }
597
- }), ALL_FIELD_TYPES.real, {
598
- type: 'numerical',
599
- scale: _objectSpread(_objectSpread({}, linearFieldScaleFunctions), linearFieldAggrScaleFunctions),
600
- format: {
601
- legend: function legend(d) {
602
- return d;
603
- },
604
- tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DECIMAL, _tooltip.TOOLTIP_FORMAT_TYPES.PERCENTAGE]
605
- }
606
- }), ALL_FIELD_TYPES.timestamp, {
607
- type: 'time',
608
- scale: _objectSpread(_objectSpread({}, linearFieldScaleFunctions), notSupportAggrOpts),
609
- format: {
610
- legend: function legend(d) {
611
- return d;
612
- },
613
- tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE_TIME]
614
- }
615
- }), ALL_FIELD_TYPES.integer, {
616
- type: 'numerical',
617
- scale: _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, linearFieldScaleFunctions), {}, (0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, [].concat((0, _toConsumableArray2["default"])(linearFieldScaleFunctions[CHANNEL_SCALES.color]), [SCALE_TYPES.customOrdinal])))), linearFieldAggrScaleFunctions),
618
- format: {
619
- legend: function legend(d) {
620
- return d;
621
- },
622
- tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DECIMAL, _tooltip.TOOLTIP_FORMAT_TYPES.PERCENTAGE]
623
- }
624
- }), ALL_FIELD_TYPES["boolean"], {
625
- type: 'boolean',
626
- scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
627
- format: {
628
- legend: function legend(d) {
629
- return d;
630
- },
631
- tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.BOOLEAN]
632
- }
633
- }), ALL_FIELD_TYPES.date, {
634
- type: 'time',
635
- scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
636
- format: {
637
- legend: function legend(d) {
638
- return d;
639
- },
640
- tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE]
641
- }
642
- }), ALL_FIELD_TYPES.geojson, {
643
- type: 'geometry',
644
- scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
645
- format: {
646
- legend: function legend() {
647
- return '...';
648
- },
649
- tooltip: []
650
- }
651
- }), ALL_FIELD_TYPES.geoarrow, {
652
- type: 'geometry',
653
- scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
654
- format: {
655
- legend: function legend() {
656
- return '...';
657
- },
658
- tooltip: []
659
- }
660
- }), ALL_FIELD_TYPES.object, {
661
- type: 'numerical',
662
- scale: {},
663
- format: {
664
- legend: function legend() {
665
- return '...';
666
- },
667
- tooltip: []
668
- }
669
- }), ALL_FIELD_TYPES.array, {
670
- type: 'numerical',
671
- scale: {},
672
- format: {
673
- legend: function legend() {
674
- return '...';
675
- },
676
- tooltip: []
677
- }
678
- }), (0, _defineProperty2["default"])(_FIELD_OPTS, ALL_FIELD_TYPES.h3, {
679
- type: 'h3',
680
- scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
681
- format: {
682
- legend: function legend() {
683
- return '...';
684
- },
685
- tooltip: []
686
- }
687
- }));
688
- var CHANNEL_SCALE_SUPPORTED_FIELDS = exports.CHANNEL_SCALE_SUPPORTED_FIELDS = Object.keys(CHANNEL_SCALES).reduce(function (accu, key) {
689
- return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, key, Object.keys(FIELD_OPTS).filter(function (ft) {
690
- return FIELD_OPTS[ft].scale[key] && Object.keys(FIELD_OPTS[ft].scale[key]).length;
691
- })));
692
- }, {});
693
- var DEFAULT_LAYER_COLOR = exports.DEFAULT_LAYER_COLOR = {
694
- tripArc: '#9226C6',
695
- begintrip_lat: '#1E96BE',
696
- dropoff_lat: '#FF991F',
697
- request_lat: '#52A353'
698
- };
699
- var DEFAULT_LAYER_COLOR_PALETTE = exports.DEFAULT_LAYER_COLOR_PALETTE = 'Global Warming';
700
- var DEFAULT_LAYER_COLOR_PALETTE_STEPS = exports.DEFAULT_LAYER_COLOR_PALETTE_STEPS = 6;
701
-
702
- // let user pass in default tooltip fields
703
- var DEFAULT_TOOLTIP_FIELDS = exports.DEFAULT_TOOLTIP_FIELDS = [];
704
- var NO_VALUE_COLOR = exports.NO_VALUE_COLOR = [0, 0, 0, 0];
705
- var DEFAULT_PICKING_RADIUS = exports.DEFAULT_PICKING_RADIUS = 3;
706
- var OVERLAY_BLENDINGS = exports.OVERLAY_BLENDINGS = {
707
- normal: {
708
- label: 'overlayBlending.normal',
709
- value: 'normal'
710
- },
711
- screen: {
712
- label: 'overlayBlending.screen',
713
- value: 'screen'
714
- },
715
- darken: {
716
- label: 'overlayBlending.darken',
717
- value: 'darken'
718
- }
719
- };
720
- var LAYER_BLENDINGS = exports.LAYER_BLENDINGS = {
721
- additive: {
722
- label: 'layerBlending.additive',
723
- blendFunc: ['SRC_ALPHA', 'DST_ALPHA'],
724
- blendEquation: 'FUNC_ADD'
725
- },
726
- normal: {
727
- // reference to
728
- // https://limnu.com/webgl-blending-youre-probably-wrong/
729
- label: 'layerBlending.normal',
730
- blendFunc: ['SRC_ALPHA', 'ONE_MINUS_SRC_ALPHA', 'ONE', 'ONE_MINUS_SRC_ALPHA'],
731
- blendEquation: ['FUNC_ADD', 'FUNC_ADD']
732
- },
733
- subtractive: {
734
- label: 'layerBlending.subtractive',
735
- blendFunc: ['ONE', 'ONE_MINUS_DST_COLOR', 'SRC_ALPHA', 'DST_ALPHA'],
736
- blendEquation: ['FUNC_SUBTRACT', 'FUNC_ADD']
737
- }
738
- };
739
- var MAX_DEFAULT_TOOLTIPS = exports.MAX_DEFAULT_TOOLTIPS = 5;
740
- var RESOLUTIONS = exports.RESOLUTIONS = (0, _keymirror["default"])({
741
- ONE_X: null,
742
- TWO_X: null
743
- });
744
- var EXPORT_IMG_RATIOS = exports.EXPORT_IMG_RATIOS = (0, _keymirror["default"])({
745
- SCREEN: null,
746
- FOUR_BY_THREE: null,
747
- SIXTEEN_BY_NINE: null,
748
- CUSTOM: null
749
- });
750
- var ScreenRatioOption = exports.ScreenRatioOption = {
751
- id: EXPORT_IMG_RATIOS.SCREEN,
752
- label: 'modal.exportImage.ratioOriginalScreen',
753
- getSize: function getSize(screenW, screenH) {
754
- return {
755
- width: screenW,
756
- height: screenH
757
- };
758
- }
759
- };
760
- var CustomRatioOption = exports.CustomRatioOption = {
761
- id: EXPORT_IMG_RATIOS.CUSTOM,
762
- hidden: true,
763
- label: 'modal.exportImage.ratioCustom',
764
- getSize: function getSize(mapW, mapH) {
765
- return {
766
- width: mapW,
767
- height: mapH
768
- };
769
- }
770
- };
771
- var FourByThreeRatioOption = exports.FourByThreeRatioOption = {
772
- id: EXPORT_IMG_RATIOS.FOUR_BY_THREE,
773
- label: 'modal.exportImage.ratio4_3',
774
- getSize: function getSize(screenW) {
775
- return {
776
- width: screenW,
777
- height: Math.round(screenW * 0.75)
778
- };
779
- }
780
- };
781
- var SixteenByNineRatioOption = exports.SixteenByNineRatioOption = {
782
- id: EXPORT_IMG_RATIOS.SIXTEEN_BY_NINE,
783
- label: 'modal.exportImage.ratio16_9',
784
- getSize: function getSize(screenW) {
785
- return {
786
- width: screenW,
787
- height: Math.round(screenW * 0.5625)
788
- };
789
- }
790
- };
791
- var EXPORT_IMG_RATIO_OPTIONS = exports.EXPORT_IMG_RATIO_OPTIONS = [ScreenRatioOption, FourByThreeRatioOption, SixteenByNineRatioOption, CustomRatioOption];
792
- var OneXResolutionOption = exports.OneXResolutionOption = {
793
- id: RESOLUTIONS.ONE_X,
794
- label: '1x',
795
- available: true,
796
- scale: 1,
797
- getSize: function getSize(screenW, screenH) {
798
- return {
799
- width: screenW,
800
- height: screenH
801
- };
802
- }
803
- };
804
- var TwoXResolutionOption = exports.TwoXResolutionOption = {
805
- id: RESOLUTIONS.TWO_X,
806
- label: '2x',
807
- available: true,
808
- scale: 2,
809
- getSize: function getSize(screenW, screenH) {
810
- return {
811
- width: screenW * 2,
812
- height: screenH * 2
813
- };
814
- }
815
- };
816
-
817
- // Fixed dimension options
818
- var Resolution1920x1080Option = exports.Resolution1920x1080Option = {
819
- id: '1920x1080',
820
- label: '1920 × 1080 (16:9)',
821
- available: true,
822
- getSize: function getSize() {
823
- return {
824
- width: 1920,
825
- height: 1080
826
- };
827
- }
828
- };
829
- var Resolution1280x720Option = exports.Resolution1280x720Option = {
830
- id: '1280x720',
831
- label: '1280 × 720 (16:9)',
832
- available: true,
833
- getSize: function getSize() {
834
- return {
835
- width: 1280,
836
- height: 720
837
- };
838
- }
839
- };
840
- var Resolution2560x1440Option = exports.Resolution2560x1440Option = {
841
- id: '2560x1440',
842
- label: '2560 × 1440 (16:9)',
843
- available: true,
844
- getSize: function getSize() {
845
- return {
846
- width: 2560,
847
- height: 1440
848
- };
849
- }
850
- };
851
- var Resolution1600x900Option = exports.Resolution1600x900Option = {
852
- id: '1600x900',
853
- label: '1600 × 900 (16:9)',
854
- available: true,
855
- getSize: function getSize() {
856
- return {
857
- width: 1600,
858
- height: 900
859
- };
860
- }
861
- };
862
- var Resolution1024x768Option = exports.Resolution1024x768Option = {
863
- id: '1024x768',
864
- label: '1024 × 768 (4:3)',
865
- available: true,
866
- getSize: function getSize() {
867
- return {
868
- width: 1024,
869
- height: 768
870
- };
871
- }
872
- };
873
- var Resolution1280x960Option = exports.Resolution1280x960Option = {
874
- id: '1280x960',
875
- label: '1280 × 960 (4:3)',
876
- available: true,
877
- getSize: function getSize() {
878
- return {
879
- width: 1280,
880
- height: 960
881
- };
882
- }
883
- };
884
- var Resolution1600x1200Option = exports.Resolution1600x1200Option = {
885
- id: '1600x1200',
886
- label: '1600 × 1200 (4:3)',
887
- available: true,
888
- getSize: function getSize() {
889
- return {
890
- width: 1600,
891
- height: 1200
892
- };
893
- }
894
- };
895
- var Resolution1920x1440Option = exports.Resolution1920x1440Option = {
896
- id: '1920x1440',
897
- label: '1920 × 1440 (4:3)',
898
- available: true,
899
- getSize: function getSize() {
900
- return {
901
- width: 1920,
902
- height: 1440
903
- };
904
- }
905
- };
906
- var EXPORT_IMG_RESOLUTION_OPTIONS = exports.EXPORT_IMG_RESOLUTION_OPTIONS = [OneXResolutionOption, TwoXResolutionOption, Resolution1280x720Option, Resolution1920x1080Option, Resolution2560x1440Option, Resolution1600x900Option, Resolution1024x768Option, Resolution1280x960Option, Resolution1600x1200Option, Resolution1920x1440Option];
907
- var EXPORT_DATA_TYPE = exports.EXPORT_DATA_TYPE = (0, _keymirror["default"])({
908
- CSV: null
909
- // SHAPEFILE: null,
910
- // JSON: null,
911
- // GEOJSON: null,
912
- // TOPOJSON: null
913
- });
914
- var EXPORT_DATA_TYPE_OPTIONS = exports.EXPORT_DATA_TYPE_OPTIONS = [{
915
- id: EXPORT_DATA_TYPE.CSV,
916
- label: EXPORT_DATA_TYPE.CSV.toLowerCase(),
917
- available: true
918
- }
919
- // {
920
- // id: EXPORT_DATA_TYPE.SHAPEFILE,
921
- // label: 'shapefile',
922
- // available: false
923
- // },
924
- // {
925
- // id: EXPORT_DATA_TYPE.JSON,
926
- // label: 'json',
927
- // available: false
928
- // },
929
- // {
930
- // id: EXPORT_DATA_TYPE.GEOJSON,
931
- // label: 'geojson',
932
- // available: false
933
- // },
934
- // {
935
- // id: EXPORT_DATA_TYPE.TOPOJSON,
936
- // label: 'topojson',
937
- // available: false
938
- // }
939
- ];
940
-
941
- // Export map types
942
- var EXPORT_MAP_FORMATS = exports.EXPORT_MAP_FORMATS = (0, _keymirror["default"])({
943
- HTML: null,
944
- JSON: null
945
- });
946
- var EXPORT_HTML_MAP_MODES = exports.EXPORT_HTML_MAP_MODES = (0, _keymirror["default"])({
947
- READ: null,
948
- EDIT: null
949
- });
950
-
951
- // Export map options
952
- var EXPORT_MAP_FORMAT_OPTIONS = exports.EXPORT_MAP_FORMAT_OPTIONS = Object.entries(EXPORT_MAP_FORMATS).map(function (entry) {
953
- return {
954
- id: entry[0],
955
- label: entry[1].toLowerCase(),
956
- available: true
957
- };
958
- });
959
- function getHTMLMapModeTileUrl(mode) {
960
- return "https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/map-".concat(mode.toLowerCase(), "-mode.png");
961
- }
962
- var EXPORT_HTML_MAP_MODE_OPTIONS = exports.EXPORT_HTML_MAP_MODE_OPTIONS = Object.entries(EXPORT_HTML_MAP_MODES).map(function (entry) {
963
- return {
964
- id: entry[0],
965
- label: "modal.exportMap.html.".concat(entry[1].toLowerCase()),
966
- available: true,
967
- url: getHTMLMapModeTileUrl(entry[1])
968
- };
969
- });
970
- var DEFAULT_UUID_COUNT = exports.DEFAULT_UUID_COUNT = 6;
971
- var DEFAULT_NOTIFICATION_MESSAGE = exports.DEFAULT_NOTIFICATION_MESSAGE = 'MESSAGE_NOT_PROVIDED';
972
- var DEFAULT_NOTIFICATION_TYPES = exports.DEFAULT_NOTIFICATION_TYPES = (0, _keymirror["default"])({
973
- info: null,
974
- error: null,
975
- warning: null,
976
- success: null
977
- });
978
- var DEFAULT_NOTIFICATION_TOPICS = exports.DEFAULT_NOTIFICATION_TOPICS = (0, _keymirror["default"])({
979
- global: null,
980
- file: null
981
- });
982
-
983
- // Minimum time between identical notifications about deck.gl errors
984
- var THROTTLE_NOTIFICATION_TIME = exports.THROTTLE_NOTIFICATION_TIME = 330;
985
-
986
- // Animation
987
- var BASE_SPEED = exports.BASE_SPEED = 600;
988
- var FPS = exports.FPS = 60;
989
-
990
- /**
991
- * 4 Animation Window Types
992
- * 1. free
993
- * |-> |->
994
- * Current time is a fixed range, animation controller calls next animation frames continuously to animation a moving window
995
- * The increment id based on domain / BASE_SPEED * SPEED
996
- *
997
- * 2. incremental
998
- * | |->
999
- * Same as free, current time is a growing range, only the max value of range increment during animation.
1000
- * The increment is also based on domain / BASE_SPEED * SPEED
1001
- *
1002
- * 3. point
1003
- * o -> o
1004
- * Current time is a point, animation controller calls next animation frame continuously to animation a moving point
1005
- * The increment is based on domain / BASE_SPEED * SPEED
1006
- *
1007
- * 4. interval
1008
- * o ~> o
1009
- * Current time is a point. An array of sorted time steps need to be provided.
1010
- * animation controller calls next animation at a interval when the point jumps to the next step
1011
- */
1012
- var ANIMATION_WINDOW = exports.ANIMATION_WINDOW = (0, _keymirror["default"])({
1013
- free: null,
1014
- incremental: null,
1015
- point: null,
1016
- interval: null
1017
- });
1018
- var DEFAULT_TIME_FORMAT = exports.DEFAULT_TIME_FORMAT = 'MM/DD/YY HH:mm:ssa';
1019
- var SPEED_CONTROL_RANGE = exports.SPEED_CONTROL_RANGE = [0, 10];
1020
- var SPEED_CONTROL_STEP = exports.SPEED_CONTROL_STEP = 0.001;
1021
-
1022
- // Geocoder
1023
- var GEOCODER_DATASET_NAME = exports.GEOCODER_DATASET_NAME = 'geocoder_dataset';
1024
- var GEOCODER_LAYER_ID = exports.GEOCODER_LAYER_ID = 'geocoder_layer';
1025
- var GEOCODER_GEO_OFFSET = exports.GEOCODER_GEO_OFFSET = 0.05;
1026
- var GEOCODER_ICON_COLOR = exports.GEOCODER_ICON_COLOR = [255, 0, 0];
1027
- var GEOCODER_ICON_SIZE = exports.GEOCODER_ICON_SIZE = 80;
1028
-
1029
- // Editor
1030
- var EDITOR_LAYER_ID = exports.EDITOR_LAYER_ID = 'kepler_editor_layer';
1031
- var EDITOR_LAYER_PICKING_RADIUS = exports.EDITOR_LAYER_PICKING_RADIUS = 6;
1032
- var EDITOR_MODES = exports.EDITOR_MODES = {
1033
- DRAW_POLYGON: 'DRAW_POLYGON',
1034
- DRAW_RECTANGLE: 'DRAW_RECTANGLE',
1035
- EDIT: 'EDIT_VERTEX'
1036
- };
1037
- var PLOT_TYPES = exports.PLOT_TYPES = (0, _keymirror["default"])({
1038
- histogram: null,
1039
- lineChart: null
1040
- });
1041
-
1042
- // Filter
1043
- var INIT_FILTER_ITEMS_IN_DROPDOWN = exports.INIT_FILTER_ITEMS_IN_DROPDOWN = 100;
1044
-
1045
- // GPU Filtering
1046
- /**
1047
- * Max number of filter value buffers that deck.gl provides
1048
- */
1049
- var MAX_GPU_FILTERS = exports.MAX_GPU_FILTERS = 4;
1050
- var MAP_THUMBNAIL_DIMENSION = exports.MAP_THUMBNAIL_DIMENSION = {
1051
- width: 300,
1052
- height: 200
1053
- };
1054
- var MAP_INFO_CHARACTER = exports.MAP_INFO_CHARACTER = {
1055
- title: 100,
1056
- description: 100
1057
- };
1058
-
1059
- // Load data
1060
- var LOADING_METHODS = exports.LOADING_METHODS = (0, _keymirror["default"])({
1061
- upload: null,
1062
- storage: null,
1063
- tileset: null
1064
- });
1065
- var DEFAULT_FEATURE_FLAGS = exports.DEFAULT_FEATURE_FLAGS = {};
1066
- var DATASET_FORMATS = exports.DATASET_FORMATS = (0, _keymirror["default"])({
1067
- row: null,
1068
- geojson: null,
1069
- csv: null,
1070
- keplergl: null,
1071
- arrow: null,
1072
- duckdb: null
1073
- });
1074
- var MAP_CONTROLS = exports.MAP_CONTROLS = (0, _keymirror["default"])({
1075
- visibleLayers: null,
1076
- mapLegend: null,
1077
- toggle3d: null,
1078
- splitMap: null,
1079
- mapDraw: null,
1080
- mapLocale: null,
1081
- effect: null,
1082
- aiAssistant: null
1083
- });
1084
-
1085
- /**
1086
- * A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.
1087
- * Required in order to maintain the same appearance after upgrading to deck.gl v8.5.
1088
- * https://github.com/visgl/deck.gl/blob/master/docs/upgrade-guide.md
1089
- */
1090
- var PROJECTED_PIXEL_SIZE_MULTIPLIER = exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;
1091
-
1092
- /**
1093
- * Maximum value for text outline width
1094
- */
1095
- var TEXT_OUTLINE_MULTIPLIER = exports.TEXT_OUTLINE_MULTIPLIER = 5;
1096
- var dataTestIds = exports.dataTestIds = {
1097
- infoIcon: 'info-icon',
1098
- warningIcon: 'warning-icon',
1099
- errorIcon: 'error-icon',
1100
- successIcon: 'success-icon',
1101
- checkmarkIcon: 'checkmark-icon',
1102
- sortableLayerItem: 'sortable-layer-item',
1103
- staticLayerItem: 'static-layer-item',
1104
- layerTitleEditor: 'layer__title__editor',
1105
- removeLayerAction: 'remove-layer-action',
1106
- layerPanel: 'layer-panel',
1107
- sortableEffectItem: 'sortable-effect-item',
1108
- staticEffectItem: 'static-effect-item',
1109
- providerLoading: 'provider-loading',
1110
- providerMapInfoPanel: 'provider-map-info-panel',
1111
- providerSelect: 'provider-select',
1112
- cloudHeader: 'cloud-header',
1113
- providerShareMap: 'provider-share-map'
1114
- };
1115
-
1116
- // Effects
1117
- var DEFAULT_TIMEZONE = exports.DEFAULT_TIMEZONE = 'UTC';
1118
- var DEFAULT_POST_PROCESSING_EFFECT_TYPE = exports.DEFAULT_POST_PROCESSING_EFFECT_TYPE = 'ink';
1119
- var DEFAULT_LIGHT_COLOR = exports.DEFAULT_LIGHT_COLOR = [255, 255, 255];
1120
- var DEFAULT_LIGHT_INTENSITY = exports.DEFAULT_LIGHT_INTENSITY = 1;
1121
- var DEFAULT_SHADOW_INTENSITY = exports.DEFAULT_SHADOW_INTENSITY = 0.5;
1122
- var DEFAULT_SHADOW_COLOR = exports.DEFAULT_SHADOW_COLOR = [0, 0, 0];
1123
- var LIGHT_AND_SHADOW_EFFECT_TIME_MODES = exports.LIGHT_AND_SHADOW_EFFECT_TIME_MODES = {
1124
- pick: 'pick',
1125
- current: 'current',
1126
- animation: 'animation'
1127
- };
1128
- var DEFAULT_LIGHT_AND_SHADOW_PROPS = exports.DEFAULT_LIGHT_AND_SHADOW_PROPS = {
1129
- timestamp: Date.now(),
1130
- timeMode: LIGHT_AND_SHADOW_EFFECT_TIME_MODES.pick,
1131
- shadowIntensity: DEFAULT_SHADOW_INTENSITY,
1132
- shadowColor: [].concat(DEFAULT_SHADOW_COLOR),
1133
- sunLightColor: [].concat(DEFAULT_LIGHT_COLOR),
1134
- sunLightIntensity: DEFAULT_LIGHT_INTENSITY,
1135
- ambientLightColor: [].concat(DEFAULT_LIGHT_COLOR),
1136
- ambientLightIntensity: DEFAULT_LIGHT_INTENSITY
1137
- };
1138
- var LIGHT_AND_SHADOW_EFFECT = exports.LIGHT_AND_SHADOW_EFFECT = {
1139
- type: 'lightAndShadow',
1140
- name: 'Light & Shadow',
1141
- parameters: [{
1142
- name: 'timestamp',
1143
- min: 0,
1144
- max: Number.MAX_SAFE_INTEGER
1145
- }, {
1146
- name: 'shadowIntensity',
1147
- min: 0,
1148
- max: 1,
1149
- defaultValue: DEFAULT_SHADOW_INTENSITY
1150
- }, {
1151
- name: 'sunLightIntensity',
1152
- min: 0,
1153
- max: 1,
1154
- defaultValue: DEFAULT_LIGHT_INTENSITY
1155
- }, {
1156
- name: 'ambientLightIntensity',
1157
- min: 0,
1158
- max: 1,
1159
- defaultValue: DEFAULT_LIGHT_INTENSITY
1160
- }, {
1161
- name: 'shadowColor',
1162
- type: 'color',
1163
- min: 0,
1164
- max: 255,
1165
- defaultValue: DEFAULT_SHADOW_COLOR
1166
- }, {
1167
- name: 'sunLightColor',
1168
- type: 'color',
1169
- min: 0,
1170
- max: 255,
1171
- defaultValue: DEFAULT_LIGHT_COLOR
1172
- }, {
1173
- name: 'ambientLightColor',
1174
- type: 'color',
1175
- min: 0,
1176
- max: 255,
1177
- defaultValue: DEFAULT_LIGHT_COLOR
1178
- }]
1179
- };
1180
- var DISTANCE_FOG_TYPE = exports.DISTANCE_FOG_TYPE = 'distanceFog';
1181
- var SURFACE_FOG_TYPE = exports.SURFACE_FOG_TYPE = 'surfaceFog';
1182
- var POSTPROCESSING_EFFECTS = exports.POSTPROCESSING_EFFECTS = {
1183
- ink: {
1184
- type: 'ink',
1185
- name: 'Ink',
1186
- parameters: [{
1187
- name: 'strength',
1188
- min: 0,
1189
- max: 1
1190
- }]
1191
- },
1192
- brightnessContrast: {
1193
- type: 'brightnessContrast',
1194
- name: 'Brightness & Contrast',
1195
- parameters: [{
1196
- name: 'brightness',
1197
- min: -1,
1198
- max: 1
1199
- }, {
1200
- name: 'contrast',
1201
- min: -1,
1202
- max: 1
1203
- }]
1204
- },
1205
- hueSaturation: {
1206
- type: 'hueSaturation',
1207
- name: 'Hue & Saturation',
1208
- parameters: [{
1209
- name: 'hue',
1210
- min: -1,
1211
- max: 1
1212
- }, {
1213
- name: 'saturation',
1214
- defaultValue: 0.25,
1215
- min: -1,
1216
- max: 1
1217
- }]
1218
- },
1219
- vibrance: {
1220
- type: 'vibrance',
1221
- name: 'Vibrance',
1222
- parameters: [{
1223
- name: 'amount',
1224
- defaultValue: 0.5,
1225
- min: -1,
1226
- max: 1
1227
- }]
1228
- },
1229
- sepia: {
1230
- type: 'sepia',
1231
- name: 'Sepia',
1232
- parameters: [{
1233
- name: 'amount',
1234
- min: 0,
1235
- max: 1
1236
- }]
1237
- },
1238
- dotScreen: {
1239
- type: 'dotScreen',
1240
- name: 'Dot Screen',
1241
- parameters: [{
1242
- name: 'angle',
1243
- min: 0,
1244
- max: Math.PI / 2
1245
- }, {
1246
- name: 'size',
1247
- min: 1,
1248
- max: 20
1249
- }, {
1250
- name: 'center',
1251
- type: 'array',
1252
- label: ['Center X', 'Center Y'],
1253
- defaultValue: [0.5, 0.5],
1254
- min: 0,
1255
- max: 1
1256
- }]
1257
- },
1258
- colorHalftone: {
1259
- type: 'colorHalftone',
1260
- name: 'Color Halftone',
1261
- parameters: [{
1262
- name: 'angle',
1263
- min: 0,
1264
- max: Math.PI / 2
1265
- }, {
1266
- name: 'size',
1267
- min: 1,
1268
- max: 20
1269
- }, {
1270
- name: 'center',
1271
- type: 'array',
1272
- label: ['Center X', 'Center Y'],
1273
- defaultValue: [0.5, 0.5],
1274
- min: 0,
1275
- max: 1
1276
- }]
1277
- },
1278
- noise: {
1279
- type: 'noise',
1280
- name: 'Noise',
1281
- parameters: [{
1282
- name: 'amount',
1283
- min: 0,
1284
- max: 1
1285
- }]
1286
- },
1287
- triangleBlur: {
1288
- type: 'triangleBlur',
1289
- name: 'Blur (Triangle)',
1290
- parameters: [{
1291
- name: 'radius',
1292
- min: 0,
1293
- max: 100
1294
- }]
1295
- },
1296
- zoomBlur: {
1297
- type: 'zoomBlur',
1298
- name: 'Blur (Zoom)',
1299
- parameters: [{
1300
- name: 'strength',
1301
- defaultValue: 0.05,
1302
- min: 0,
1303
- max: 1
1304
- }, {
1305
- name: 'center',
1306
- type: 'array',
1307
- label: ['Center X', 'Center Y'],
1308
- defaultValue: [0.5, 0.5],
1309
- min: 0,
1310
- max: 1
1311
- }]
1312
- },
1313
- tiltShift: {
1314
- type: 'tiltShift',
1315
- name: 'Blur (Tilt Shift)',
1316
- parameters: [{
1317
- name: 'blurRadius',
1318
- label: 'Blur',
1319
- min: 0,
1320
- max: 50
1321
- }, {
1322
- name: 'gradientRadius',
1323
- label: 'Gradient',
1324
- min: 0,
1325
- max: 400
1326
- }, {
1327
- name: 'start',
1328
- type: 'array',
1329
- label: ['Start', false],
1330
- defaultValue: [0.0, 0.0],
1331
- min: 0,
1332
- max: 1
1333
- }, {
1334
- name: 'end',
1335
- type: 'array',
1336
- label: ['End', false],
1337
- defaultValue: [1, 1],
1338
- min: 0,
1339
- max: 1
1340
- }]
1341
- },
1342
- edgeWork: {
1343
- type: 'edgeWork',
1344
- name: 'Edge work',
1345
- parameters: [{
1346
- name: 'radius',
1347
- min: 1,
1348
- max: 50
1349
- }]
1350
- },
1351
- vignette: {
1352
- type: 'vignette',
1353
- name: 'Vignette',
1354
- parameters: [{
1355
- name: 'amount',
1356
- min: 0,
1357
- max: 1
1358
- }, {
1359
- name: 'radius',
1360
- min: 0,
1361
- max: 1
1362
- }]
1363
- },
1364
- magnify: {
1365
- type: 'magnify',
1366
- name: 'Magnify',
1367
- parameters: [{
1368
- name: 'screenXY',
1369
- type: 'array',
1370
- label: ['Position X', 'Position Y'],
1371
- defaultValue: [0.5, 0.5],
1372
- min: 0,
1373
- max: 1
1374
- }, {
1375
- name: 'radiusPixels',
1376
- label: 'Size',
1377
- min: 10,
1378
- max: 500
1379
- }, {
1380
- name: 'zoom',
1381
- min: 0.5,
1382
- max: 50
1383
- }, {
1384
- name: 'borderWidthPixels',
1385
- label: 'Border Width',
1386
- defaultValue: 3,
1387
- min: 0,
1388
- max: 50
1389
- }]
1390
- },
1391
- hexagonalPixelate: {
1392
- type: 'hexagonalPixelate',
1393
- name: 'Hexagonal Pixelate',
1394
- parameters: [{
1395
- name: 'scale',
1396
- defaultValue: 20,
1397
- min: 1,
1398
- max: 50
1399
- }]
1400
- },
1401
- distanceFog: {
1402
- type: DISTANCE_FOG_TYPE,
1403
- name: 'Distance Fog',
1404
- parameters: [{
1405
- name: 'density',
1406
- defaultValue: 0.5,
1407
- min: 0,
1408
- max: 1
1409
- }, {
1410
- name: 'fogStart',
1411
- label: 'Start',
1412
- defaultValue: 0.3,
1413
- min: 0,
1414
- max: 1
1415
- }, {
1416
- name: 'fogRange',
1417
- label: 'Range',
1418
- defaultValue: 0.5,
1419
- min: 0.01,
1420
- max: 1
1421
- }, {
1422
- name: 'fogColor',
1423
- type: 'color',
1424
- min: 0,
1425
- max: 255,
1426
- defaultValue: [217, 222, 230]
1427
- }]
1428
- },
1429
- surfaceFog: {
1430
- type: SURFACE_FOG_TYPE,
1431
- name: 'Surface Fog',
1432
- parameters: [{
1433
- name: 'density',
1434
- defaultValue: 0.6,
1435
- min: 0,
1436
- max: 1
1437
- }, {
1438
- name: 'height',
1439
- label: 'Elevation (m)',
1440
- defaultValue: 100,
1441
- min: -200,
1442
- max: 3000
1443
- }, {
1444
- name: 'thickness',
1445
- label: 'Transition (m)',
1446
- defaultValue: 200,
1447
- min: 0,
1448
- max: 1000
1449
- }, {
1450
- name: 'fogColor',
1451
- type: 'color',
1452
- min: 0,
1453
- max: 255,
1454
- defaultValue: [230, 235, 242]
1455
- }]
1456
- }
1457
- };
1458
- var EFFECT_DESCRIPTIONS = exports.EFFECT_DESCRIPTIONS = [LIGHT_AND_SHADOW_EFFECT].concat((0, _toConsumableArray2["default"])(Object.keys(POSTPROCESSING_EFFECTS).map(function (keyName) {
1459
- return POSTPROCESSING_EFFECTS[keyName];
1460
- })));
1461
- var SYNC_TIMELINE_MODES = exports.SYNC_TIMELINE_MODES = {
1462
- start: 0,
1463
- end: 1
1464
- };
1465
- var GEOARROW_METADATA_KEY = exports.GEOARROW_METADATA_KEY = 'ARROW:extension:name';
1466
-
1467
- /**
1468
- * Enum holding GeoArrow extension type names
1469
- */
1470
- var GEOARROW_EXTENSIONS = exports.GEOARROW_EXTENSIONS = /*#__PURE__*/function (GEOARROW_EXTENSIONS) {
1471
- GEOARROW_EXTENSIONS["POINT"] = "geoarrow.point";
1472
- GEOARROW_EXTENSIONS["LINESTRING"] = "geoarrow.linestring";
1473
- GEOARROW_EXTENSIONS["POLYGON"] = "geoarrow.polygon";
1474
- GEOARROW_EXTENSIONS["MULTIPOINT"] = "geoarrow.multipoint";
1475
- GEOARROW_EXTENSIONS["MULTILINESTRING"] = "geoarrow.multilinestring";
1476
- GEOARROW_EXTENSIONS["MULTIPOLYGON"] = "geoarrow.multipolygon";
1477
- GEOARROW_EXTENSIONS["WKB"] = "geoarrow.wkb";
1478
- return GEOARROW_EXTENSIONS;
1479
- }({});
1480
- var LOADERS_CDN_VERSION = exports.LOADERS_CDN_VERSION = '4.3.2';
1481
- var LOADERS_CDN_URL = exports.LOADERS_CDN_URL = 'https://unpkg.com/@loaders.gl';
1482
- var getLoaderOptions = exports.getLoaderOptions = function getLoaderOptions() {
1483
- return {
1484
- mvt: {
1485
- workerUrl: "".concat(LOADERS_CDN_URL, "/mvt@").concat(LOADERS_CDN_VERSION, "/dist/mvt-worker.js")
1486
- },
1487
- 'quantized-mesh': {
1488
- workerUrl: "".concat(LOADERS_CDN_URL, "/terrain@").concat(LOADERS_CDN_VERSION, "/dist/quantized-mesh-worker.js")
1489
- },
1490
- npy: {
1491
- workerUrl: "".concat(LOADERS_CDN_URL, "/textures@").concat(LOADERS_CDN_VERSION, "/dist/npy-worker.js")
1492
- }
1493
- };
1494
- };
1495
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfa2V5bWlycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZDNTY2FsZSIsIl90b29sdGlwIiwiX0ZJRUxEX1RZUEVfRElTUExBWSIsIl9GSUVMRF9PUFRTIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJBQ1RJT05fUFJFRklYIiwiZXhwb3J0cyIsIktFUExFUl9VTkZPTERFRF9CVUNLRVQiLCJCQVNFTUFQX0lDT05fUFJFRklYIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIlRSQU5TSVRJT05fRFVSQVRJT04iLCJEQVRBX1RBQkxFX0lEIiwiREVMRVRFX0RBVEFfSUQiLCJBRERfREFUQV9JRCIsIkVYUE9SVF9JTUFHRV9JRCIsIkVYUE9SVF9EQVRBX0lEIiwiQUREX01BUF9TVFlMRV9JRCIsIkVYUE9SVF9NQVBfSUQiLCJTQVZFX01BUF9JRCIsIk9WRVJXUklURV9NQVBfSUQiLCJTSEFSRV9NQVBfSUQiLCJLRVBMRVJfR0xfTkFNRSIsIktFUExFUl9HTF9WRVJTSU9OIiwiS0VQTEVSX0dMX1dFQlNJVEUiLCJESU1FTlNJT05TIiwic2lkZVBhbmVsIiwid2lkdGgiLCJtYXJnaW4iLCJ0b3AiLCJsZWZ0IiwiYm90dG9tIiwicmlnaHQiLCJoZWFkZXJIZWlnaHQiLCJtYXBDb250cm9sIiwicGFkZGluZyIsIm1hcExlZ2VuZCIsInBpbm5lZCIsIlRIRU1FIiwia2V5TWlycm9yIiwibGlnaHQiLCJkYXJrIiwiYmFzZSIsIlNJREVCQVJfUEFORUxTIiwiaWQiLCJsYWJlbCIsIm9uQ2xpY2siLCJQQU5FTF9WSUVXX1RPR0dMRVMiLCJsaXN0IiwiYnlEYXRhc2V0IiwiUEFORUxTIiwiREVGQVVMVF9CTERHX0NPTE9SIiwiREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SIiwiQkFTRV9NQVBfQkFDS0dST1VORF9MQVlFUl9JRFMiLCJCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUciLCJUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUciLCJCQUNLR1JPVU5EX0xBWUVSX0dST1VQIiwic2x1ZyIsImRlZmF1bHRWaXNpYmlsaXR5IiwiaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlIiwiaXNNb3ZlVG9Ub3BBdmFpbGFibGUiLCJpc0NvbG9yUGlja2VyQXZhaWxhYmxlIiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJfcmVmIiwidHlwZSIsIm1hdGNoIiwiX3JlZjIiLCJfcmVmMyIsIl9yZWY0IiwiX3JlZjUiLCJfcmVmNiIsIkJBU0VfTUFQX0NPTE9SX01PREVTIiwiTk9ORSIsIkRBUksiLCJMSUdIVCIsIk5PX01BUF9JRCIsIkVNUFRZX01BUEJPWF9TVFlMRSIsInZlcnNpb24iLCJzb3VyY2VzIiwibGF5ZXJzIiwiTUFQX0xJQl9PUFRJT05TIiwiTUFQQk9YIiwiTUFQTElCUkUiLCJOT19CQVNFTUFQX0lDT04iLCJjb25jYXQiLCJERUZBVUxUX0JBU0VfTUFQX1NUWUxFIiwiREVGQVVMVF9OT19CQVNFTUFQX1NUWUxFIiwidXJsIiwiaWNvbiIsImxheWVyR3JvdXBzIiwiY29sb3JNb2RlIiwic3R5bGUiLCJERUZBVUxUX01BUEJPWF9TVFlMRVMiLCJjb21wbGltZW50YXJ5U3R5bGVJZCIsIkRFRkFVTFRfTUFQQk9YX1NBVEVMSVRFX1NUWUxFUyIsIkRFRkFVTFRfTUFQTElCUkVfU1RZTEVTIiwiREVGQVVMVF9NQVBfU1RZTEVTIiwiR0VPSlNPTl9GSUVMRFMiLCJnZW9qc29uIiwiSUNPTl9GSUVMRFMiLCJUUklQX1BPSU5UX0ZJRUxEUyIsIkFMVElUVURFX0ZJRUxEUyIsIlRSSVBfQVJDX0ZJRUxEUyIsImxhdDAiLCJsbmcwIiwibGF0MSIsImxuZzEiLCJGSUxURVJfVFlQRVMiLCJyYW5nZSIsInNlbGVjdCIsImlucHV0IiwidGltZVJhbmdlIiwibXVsdGlTZWxlY3QiLCJwb2x5Z29uIiwiRklMVEVSX1ZJRVdfVFlQRVMiLCJzaWRlIiwiZW5sYXJnZWQiLCJtaW5pZmllZCIsIkRFRkFVTFRfRklMVEVSX1ZJRVdfVFlQRSIsIlNDQUxFX1RZUEVTIiwib3JkaW5hbCIsInF1YW50aWxlIiwicXVhbnRpemUiLCJsaW5lYXIiLCJzcXJ0IiwibG9nIiwidGhyZXNob2xkIiwiY3VzdG9tIiwiY3VzdG9tT3JkaW5hbCIsInBvaW50IiwiU0NBTEVfVFlQRV9OQU1FUyIsIlNDQUxFX0ZVTkMiLCJzY2FsZUxpbmVhciIsInNjYWxlUXVhbnRpemUiLCJzY2FsZVF1YW50aWxlIiwic2NhbGVPcmRpbmFsIiwic2NhbGVTcXJ0Iiwic2NhbGVMb2ciLCJzY2FsZVBvaW50Iiwic2NhbGVUaHJlc2hvbGQiLCJBTExfRklFTERfVFlQRVMiLCJkYXRlIiwiaW50ZWdlciIsInJlYWwiLCJzdHJpbmciLCJ0aW1lc3RhbXAiLCJhcnJheSIsIm9iamVjdCIsImdlb2Fycm93IiwiaDMiLCJTT1JUX09SREVSIiwiQVNDRU5ESU5HIiwiREVTQ0VORElORyIsIlVOU09SVCIsIlRBQkxFX09QVElPTiIsIlNPUlRfQVNDIiwiU09SVF9ERVMiLCJQSU4iLCJVTlBJTiIsIkNPUFkiLCJGT1JNQVRfQ09MVU1OIiwiVEFCTEVfT1BUSU9OX0xJU1QiLCJ2YWx1ZSIsImRpc3BsYXkiLCJjb25kaXRpb24iLCJwcm9wcyIsInNvcnRUYWJsZUNvbHVtbiIsInNvcnRNb2RlIiwiaXNTb3J0ZWQiLCJpc1Bpbm5lZCIsInNldERpc3BsYXlGb3JtYXQiLCJZRUxMT1ciLCJQSU5LIiwiUFVSUExFIiwiQkxVRSIsIkJMVUUyIiwiQkxVRTMiLCJHUkVFTiIsIkdSRUVOMiIsIlJFRCIsIk9SQU5HRSIsIkZJRUxEX1RZUEVfRElTUExBWSIsImNvbG9yIiwiRklFTERfQ09MT1JTIiwiSElHSExJR0hfQ09MT1JfM0QiLCJDSEFOTkVMX1NDQUxFUyIsInJhZGl1cyIsInNpemUiLCJjb2xvckFnZ3IiLCJzaXplQWdnciIsIkFHR1JFR0FUSU9OX1RZUEVTIiwiY291bnQiLCJhdmVyYWdlIiwibWF4aW11bSIsIm1pbmltdW0iLCJtZWRpYW4iLCJzdGRldiIsInN1bSIsInZhcmlhbmNlIiwibW9kZSIsImNvdW50VW5pcXVlIiwiQUdHUkVHQVRJT05fVFlQRV9PUFRJT05TIiwiZW50cmllcyIsIm1hcCIsIl9yZWY3IiwiX3JlZjgiLCJfc2xpY2VkVG9BcnJheTIiLCJrZXkiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwibGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyIsIkRFRkFVTFRfQUdHUkVHQVRJT05fQ09MT1JfU0NBTEVTIiwibGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJyZWR1Y2UiLCJwcmV2IiwiY3VyIiwib3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMiLCJvcmRpbmFsRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJub3RTdXBwb3J0ZWRTY2FsZU9wdHMiLCJub3RTdXBwb3J0QWdnck9wdHMiLCJERUZBVUxUX0FHR1JFR0FUSU9OIiwiRklFTERfT1BUUyIsInNjYWxlIiwiZm9ybWF0IiwibGVnZW5kIiwiZCIsInRvb2x0aXAiLCJUT09MVElQX0ZPUk1BVF9UWVBFUyIsIkRFQ0lNQUwiLCJQRVJDRU5UQUdFIiwiREFURSIsIkRBVEVfVElNRSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJCT09MRUFOIiwiQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTIiwiYWNjdSIsImZ0IiwiREVGQVVMVF9MQVlFUl9DT0xPUiIsInRyaXBBcmMiLCJiZWdpbnRyaXBfbGF0IiwiZHJvcG9mZl9sYXQiLCJyZXF1ZXN0X2xhdCIsIkRFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURSIsIkRFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURV9TVEVQUyIsIkRFRkFVTFRfVE9PTFRJUF9GSUVMRFMiLCJOT19WQUxVRV9DT0xPUiIsIkRFRkFVTFRfUElDS0lOR19SQURJVVMiLCJPVkVSTEFZX0JMRU5ESU5HUyIsIm5vcm1hbCIsInNjcmVlbiIsImRhcmtlbiIsIkxBWUVSX0JMRU5ESU5HUyIsImFkZGl0aXZlIiwiYmxlbmRGdW5jIiwiYmxlbmRFcXVhdGlvbiIsInN1YnRyYWN0aXZlIiwiTUFYX0RFRkFVTFRfVE9PTFRJUFMiLCJSRVNPTFVUSU9OUyIsIk9ORV9YIiwiVFdPX1giLCJFWFBPUlRfSU1HX1JBVElPUyIsIlNDUkVFTiIsIkZPVVJfQllfVEhSRUUiLCJTSVhURUVOX0JZX05JTkUiLCJDVVNUT00iLCJTY3JlZW5SYXRpb09wdGlvbiIsImdldFNpemUiLCJzY3JlZW5XIiwic2NyZWVuSCIsImhlaWdodCIsIkN1c3RvbVJhdGlvT3B0aW9uIiwiaGlkZGVuIiwibWFwVyIsIm1hcEgiLCJGb3VyQnlUaHJlZVJhdGlvT3B0aW9uIiwiTWF0aCIsInJvdW5kIiwiU2l4dGVlbkJ5TmluZVJhdGlvT3B0aW9uIiwiRVhQT1JUX0lNR19SQVRJT19PUFRJT05TIiwiT25lWFJlc29sdXRpb25PcHRpb24iLCJhdmFpbGFibGUiLCJUd29YUmVzb2x1dGlvbk9wdGlvbiIsIlJlc29sdXRpb24xOTIweDEwODBPcHRpb24iLCJSZXNvbHV0aW9uMTI4MHg3MjBPcHRpb24iLCJSZXNvbHV0aW9uMjU2MHgxNDQwT3B0aW9uIiwiUmVzb2x1dGlvbjE2MDB4OTAwT3B0aW9uIiwiUmVzb2x1dGlvbjEwMjR4NzY4T3B0aW9uIiwiUmVzb2x1dGlvbjEyODB4OTYwT3B0aW9uIiwiUmVzb2x1dGlvbjE2MDB4MTIwME9wdGlvbiIsIlJlc29sdXRpb24xOTIweDE0NDBPcHRpb24iLCJFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUyIsIkVYUE9SVF9EQVRBX1RZUEUiLCJDU1YiLCJFWFBPUlRfREFUQV9UWVBFX09QVElPTlMiLCJ0b0xvd2VyQ2FzZSIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIkhUTUwiLCJKU09OIiwiRVhQT1JUX0hUTUxfTUFQX01PREVTIiwiUkVBRCIsIkVESVQiLCJFWFBPUlRfTUFQX0ZPUk1BVF9PUFRJT05TIiwiZW50cnkiLCJnZXRIVE1MTWFwTW9kZVRpbGVVcmwiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TIiwiREVGQVVMVF9VVUlEX0NPVU5UIiwiREVGQVVMVF9OT1RJRklDQVRJT05fTUVTU0FHRSIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTIiwiaW5mbyIsImVycm9yIiwid2FybmluZyIsInN1Y2Nlc3MiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJnbG9iYWwiLCJmaWxlIiwiVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUiLCJCQVNFX1NQRUVEIiwiRlBTIiwiQU5JTUFUSU9OX1dJTkRPVyIsImZyZWUiLCJpbmNyZW1lbnRhbCIsImludGVydmFsIiwiREVGQVVMVF9USU1FX0ZPUk1BVCIsIlNQRUVEX0NPTlRST0xfUkFOR0UiLCJTUEVFRF9DT05UUk9MX1NURVAiLCJHRU9DT0RFUl9EQVRBU0VUX05BTUUiLCJHRU9DT0RFUl9MQVlFUl9JRCIsIkdFT0NPREVSX0dFT19PRkZTRVQiLCJHRU9DT0RFUl9JQ09OX0NPTE9SIiwiR0VPQ09ERVJfSUNPTl9TSVpFIiwiRURJVE9SX0xBWUVSX0lEIiwiRURJVE9SX0xBWUVSX1BJQ0tJTkdfUkFESVVTIiwiRURJVE9SX01PREVTIiwiRFJBV19QT0xZR09OIiwiRFJBV19SRUNUQU5HTEUiLCJQTE9UX1RZUEVTIiwiaGlzdG9ncmFtIiwibGluZUNoYXJ0IiwiSU5JVF9GSUxURVJfSVRFTVNfSU5fRFJPUERPV04iLCJNQVhfR1BVX0ZJTFRFUlMiLCJNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiIsIk1BUF9JTkZPX0NIQVJBQ1RFUiIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJMT0FESU5HX01FVEhPRFMiLCJ1cGxvYWQiLCJzdG9yYWdlIiwidGlsZXNldCIsIkRFRkFVTFRfRkVBVFVSRV9GTEFHUyIsIkRBVEFTRVRfRk9STUFUUyIsInJvdyIsImNzdiIsImtlcGxlcmdsIiwiYXJyb3ciLCJkdWNrZGIiLCJNQVBfQ09OVFJPTFMiLCJ2aXNpYmxlTGF5ZXJzIiwidG9nZ2xlM2QiLCJzcGxpdE1hcCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJlZmZlY3QiLCJhaUFzc2lzdGFudCIsIlBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIiLCJURVhUX09VVExJTkVfTVVMVElQTElFUiIsImRhdGFUZXN0SWRzIiwiaW5mb0ljb24iLCJ3YXJuaW5nSWNvbiIsImVycm9ySWNvbiIsInN1Y2Nlc3NJY29uIiwiY2hlY2ttYXJrSWNvbiIsInNvcnRhYmxlTGF5ZXJJdGVtIiwic3RhdGljTGF5ZXJJdGVtIiwibGF5ZXJUaXRsZUVkaXRvciIsInJlbW92ZUxheWVyQWN0aW9uIiwibGF5ZXJQYW5lbCIsInNvcnRhYmxlRWZmZWN0SXRlbSIsInN0YXRpY0VmZmVjdEl0ZW0iLCJwcm92aWRlckxvYWRpbmciLCJwcm92aWRlck1hcEluZm9QYW5lbCIsInByb3ZpZGVyU2VsZWN0IiwiY2xvdWRIZWFkZXIiLCJwcm92aWRlclNoYXJlTWFwIiwiREVGQVVMVF9USU1FWk9ORSIsIkRFRkFVTFRfUE9TVF9QUk9DRVNTSU5HX0VGRkVDVF9UWVBFIiwiREVGQVVMVF9MSUdIVF9DT0xPUiIsIkRFRkFVTFRfTElHSFRfSU5URU5TSVRZIiwiREVGQVVMVF9TSEFET1dfSU5URU5TSVRZIiwiREVGQVVMVF9TSEFET1dfQ09MT1IiLCJMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVF9USU1FX01PREVTIiwicGljayIsImN1cnJlbnQiLCJhbmltYXRpb24iLCJERUZBVUxUX0xJR0hUX0FORF9TSEFET1dfUFJPUFMiLCJEYXRlIiwibm93IiwidGltZU1vZGUiLCJzaGFkb3dJbnRlbnNpdHkiLCJzaGFkb3dDb2xvciIsInN1bkxpZ2h0Q29sb3IiLCJzdW5MaWdodEludGVuc2l0eSIsImFtYmllbnRMaWdodENvbG9yIiwiYW1iaWVudExpZ2h0SW50ZW5zaXR5IiwiTElHSFRfQU5EX1NIQURPV19FRkZFQ1QiLCJuYW1lIiwicGFyYW1ldGVycyIsIm1pbiIsIm1heCIsIk51bWJlciIsIk1BWF9TQUZFX0lOVEVHRVIiLCJkZWZhdWx0VmFsdWUiLCJESVNUQU5DRV9GT0dfVFlQRSIsIlNVUkZBQ0VfRk9HX1RZUEUiLCJQT1NUUFJPQ0VTU0lOR19FRkZFQ1RTIiwiaW5rIiwiYnJpZ2h0bmVzc0NvbnRyYXN0IiwiaHVlU2F0dXJhdGlvbiIsInZpYnJhbmNlIiwic2VwaWEiLCJkb3RTY3JlZW4iLCJQSSIsImNvbG9ySGFsZnRvbmUiLCJub2lzZSIsInRyaWFuZ2xlQmx1ciIsInpvb21CbHVyIiwidGlsdFNoaWZ0IiwiZWRnZVdvcmsiLCJ2aWduZXR0ZSIsIm1hZ25pZnkiLCJoZXhhZ29uYWxQaXhlbGF0ZSIsImRpc3RhbmNlRm9nIiwic3VyZmFjZUZvZyIsIkVGRkVDVF9ERVNDUklQVElPTlMiLCJrZXlOYW1lIiwiU1lOQ19USU1FTElORV9NT0RFUyIsInN0YXJ0IiwiZW5kIiwiR0VPQVJST1dfTUVUQURBVEFfS0VZIiwiR0VPQVJST1dfRVhURU5TSU9OUyIsIkxPQURFUlNfQ0ROX1ZFUlNJT04iLCJMT0FERVJTX0NETl9VUkwiLCJnZXRMb2FkZXJPcHRpb25zIiwibXZ0Iiwid29ya2VyVXJsIiwibnB5Il0sInNvdXJjZXMiOlsiLi4vc3JjL2RlZmF1bHQtc2V0dGluZ3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IGtleU1pcnJvciBmcm9tICdrZXltaXJyb3InO1xuXG5pbXBvcnQge1xuICBCYXNlTWFwU3R5bGUsXG4gIEVmZmVjdERlc2NyaXB0aW9uLFxuICBSR0JBQ29sb3IsXG4gIFN5bmNUaW1lbGluZU1vZGUsXG4gIEJhc2VNYXBDb2xvck1vZGVzLFxuICBNZXJnZVxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIHNjYWxlTGluZWFyLFxuICBzY2FsZUxvZyxcbiAgc2NhbGVPcmRpbmFsLFxuICBzY2FsZVBvaW50LFxuICBzY2FsZVF1YW50aWxlLFxuICBzY2FsZVF1YW50aXplLFxuICBzY2FsZVNxcnQsXG4gIHNjYWxlVGhyZXNob2xkXG59IGZyb20gJ2QzLXNjYWxlJztcbmltcG9ydCB7VE9PTFRJUF9GT1JNQVRfVFlQRVN9IGZyb20gJy4vdG9vbHRpcCc7XG5cbmV4cG9ydCBjb25zdCBBQ1RJT05fUFJFRklYID0gJ0BAa2VwbGVyLmdsLyc7XG5leHBvcnQgY29uc3QgS0VQTEVSX1VORk9MREVEX0JVQ0tFVCA9ICdodHRwczovL3N0dWRpby1wdWJsaWMtZGF0YS5mb3Vyc3F1YXJlLmNvbS9zdGF0aWNzL2tlcGxlcmdsJztcbmV4cG9ydCBjb25zdCBCQVNFTUFQX0lDT05fUFJFRklYID0gYGdlb2R1ZGVgO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFQQk9YX0FQSV9VUkwgPSAnaHR0cHM6Ly9hcGkubWFwYm94LmNvbSc7XG5leHBvcnQgY29uc3QgVFJBTlNJVElPTl9EVVJBVElPTiA9IDA7XG5cbi8vIE1vZGFsIElkc1xuLyoqXG4gKiBNb2RhbCBpZDogZGF0YSB0YWJsZVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREFUQV9UQUJMRV9JRCA9ICdkYXRhVGFibGUnO1xuLyoqXG4gKiBNb2RhbCBpZDogZGVsZXRlIGRhdGFzZXQgY29uZmlybSBkaWFsb2dcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFTEVURV9EQVRBX0lEID0gJ2RlbGV0ZURhdGEnO1xuLyoqXG4gKiBNb2RhbCBpZDogYWRkIGRhdGEgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEFERF9EQVRBX0lEID0gJ2FkZERhdGEnO1xuLyoqXG4gKiBNb2RhbCBpZDogZXhwb3J0IGltYWdlIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPUlRfSU1BR0VfSUQgPSAnZXhwb3J0SW1hZ2UnO1xuLyoqXG4gKiBNb2RhbCBpZDogZXhwb3J0IGRhdGEgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9EQVRBX0lEID0gJ2V4cG9ydERhdGEnO1xuLyoqXG4gKiBNb2RhbCBpZDogYWRkIGN1c3RvbSBtYXAgc3R5bGUgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEFERF9NQVBfU1RZTEVfSUQgPSAnYWRkTWFwU3R5bGUnO1xuLyoqXG4gKiBNb2RhbCBpZDogZXhwb3J0IG1hcCBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX01BUF9JRCA9ICdleHBvcnRNYXAnO1xuLyoqXG4gKiBNb2RhbCBpZDogc2F2ZSBtYXAgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IFNBVkVfTUFQX0lEID0gJ3NhdmVNYXAnO1xuLyoqXG4gKiBNb2RhbCBpZDogY29uZmlybSB0byBvdmVyd3JpdGUgc2F2ZWQgbWFwXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBPVkVSV1JJVEVfTUFQX0lEID0gJ292ZXJ3cml0ZU1hcCc7XG4vKipcbiAqIE1vZGFsIGlkOiBzaGFyZSBtYXAgdXJsIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBTSEFSRV9NQVBfSUQgPSAnc2hhcmVNYXAnO1xuXG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX05BTUUgPSAna2VwbGVyLmdsJztcblxuLy8gX19QQUNLQUdFX1ZFUlNJT05fXyBpcyBhdXRvbWF0aWNhbGx5IGluamVjdGVkIGJ5IEJhYmVsL0VzYnVpbGQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzXG4vLyBTaW5jZSB3ZSBhcmUgaW5qZWN0aW5nIHRoaXMgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzIHdpdGggYmFiZWxcbi8vIHdoaWxlIGRldmVsb3BpbmcgVkVSU0lPTiBpcyBub3QgZGVmaW5lZCwgd2UgY2FwdHVyZSB0aGUgZXhjZXB0aW9uIGFuZCByZXR1cm5cbi8vIGFuIGVtcHR5IHN0cmluZyB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHJldHJpZXZlIHRoZSBsYXRlc3QgdW1kIHZlcnNpb25cbmV4cG9ydCBjb25zdCBLRVBMRVJfR0xfVkVSU0lPTiA9ICdfX1BBQ0tBR0VfVkVSU0lPTl9fJztcbmV4cG9ydCBjb25zdCBLRVBMRVJfR0xfV0VCU0lURSA9ICdodHRwOi8va2VwbGVyLmdsLyc7XG5cbmV4cG9ydCBjb25zdCBESU1FTlNJT05TID0ge1xuICBzaWRlUGFuZWw6IHtcbiAgICB3aWR0aDogMzAwLFxuICAgIG1hcmdpbjoge3RvcDogMTIsIGxlZnQ6IDEyLCBib3R0b206IDEyLCByaWdodDogMjB9LFxuICAgIGhlYWRlckhlaWdodDogOTZcbiAgfSxcbiAgbWFwQ29udHJvbDoge1xuICAgIHdpZHRoOiAxODQsXG4gICAgcGFkZGluZzogMTIsXG4gICAgbWFwTGVnZW5kOiB7XG4gICAgICBwaW5uZWQ6IHtcbiAgICAgICAgYm90dG9tOiAyMixcbiAgICAgICAgcmlnaHQ6IDEyXG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIFRoZW1lIG5hbWUgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIGBLZXBsZXJHbGAgYHByb3AudGhlbWVgLlxuICogQXZhaWxhYmxlIHRoZW1lcyBhcmUgYFRIRU1FLmxpZ2h0YCBhbmQgYFRIRU1FLmRhcmtgLiBEZWZhdWx0IHRoZW1lIGlzIGBUSEVNRS5kYXJrYFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7b2JqZWN0fVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGBgYGpzXG4gKiBjb25zdCBNYXAgPSAoKSA9PiA8S2VwbGVyR2wgdGhlbWU9e1RIRU1FLmxpZ2h0fSBpZD1cIm1hcFwiLz5cbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgVEhFTUUgPSBrZXlNaXJyb3Ioe1xuICBsaWdodDogbnVsbCxcbiAgZGFyazogbnVsbCxcbiAgYmFzZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBTSURFQkFSX1BBTkVMUyA9IFtcbiAge1xuICAgIGlkOiAnbGF5ZXInLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMubGF5ZXInLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnZmlsdGVyJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmZpbHRlcicsXG4gICAgb25DbGljazogbnVsbFxuICB9LFxuICB7XG4gICAgaWQ6ICdpbnRlcmFjdGlvbicsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5pbnRlcmFjdGlvbicsXG4gICAgb25DbGljazogbnVsbFxuICB9LFxuICB7XG4gICAgaWQ6ICdtYXAnLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMuYmFzZW1hcCcsXG4gICAgb25DbGljazogbnVsbFxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgUEFORUxfVklFV19UT0dHTEVTID0ga2V5TWlycm9yKHtcbiAgbGlzdDogbnVsbCxcbiAgYnlEYXRhc2V0OiBudWxsXG59KTtcblxuLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuZXhwb3J0IGNvbnN0IFBBTkVMUyA9IFNJREVCQVJfUEFORUxTO1xuXG4vLyBNQVAgU1RZTEVTXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JMREdfQ09MT1IgPSAnI0QxQ0VDNyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1IgPSAnIzAwMDAwMCc7XG5cbi8vIGFzc2lzdHMgaW4gaWRlbnRpZnlpbmcgYmFzZW1hcCBiYWNrZ3JvdW5kIGxheWVycyB3aGVuIGF1dG8tZGV0ZXJtaW5pbmcgdGhlIGJhY2tncm91bmRDb2xvclxuZXhwb3J0IGNvbnN0IEJBU0VfTUFQX0JBQ0tHUk9VTkRfTEFZRVJfSURTID0gWydiYWNrZ3JvdW5kJywgJ2JnJywgJ2xhbmQnLCAnd2F0ZXInXTtcblxuZXhwb3J0IGNvbnN0IEJBQ0tHUk9VTkRfTEFZRVJfR1JPVVBfU0xVRyA9ICdCYWNrZ3JvdW5kJztcblxuZXhwb3J0IGNvbnN0IFRIUkVFX0RfQlVJTERJTkdfTEFZRVJfR1JPVVBfU0xVRyA9ICczZCBidWlsZGluZyc7XG5cbmV4cG9ydCB0eXBlIERFRkFVTFRfTEFZRVJfR1JPVVAgPSB7XG4gIHNsdWc6IHN0cmluZztcbiAgZmlsdGVyOiAodmFsdWUpID0+IGJvb2xlYW47XG4gIGRlZmF1bHRWaXNpYmlsaXR5OiBib29sZWFuO1xuICBpc1Zpc2liaWxpdHlUb2dnbGVBdmFpbGFibGU/OiBib29sZWFuO1xuICBpc01vdmVUb1RvcEF2YWlsYWJsZT86IGJvb2xlYW47XG4gIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IEJBQ0tHUk9VTkRfTEFZRVJfR1JPVVA6IERFRkFVTFRfTEFZRVJfR1JPVVAgPSB7XG4gIHNsdWc6IEJBQ0tHUk9VTkRfTEFZRVJfR1JPVVBfU0xVRyxcbiAgZmlsdGVyOiAoKSA9PiBmYWxzZSxcbiAgZGVmYXVsdFZpc2liaWxpdHk6IGZhbHNlLFxuICBpc1Zpc2liaWxpdHlUb2dnbGVBdmFpbGFibGU6IGZhbHNlLFxuICBpc01vdmVUb1RvcEF2YWlsYWJsZTogZmFsc2UsXG4gIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IHRydWVcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xBWUVSX0dST1VQUzogREVGQVVMVF9MQVlFUl9HUk9VUFtdID0gW1xuICB7XG4gICAgc2x1ZzogJ2xhYmVsJyxcbiAgICBmaWx0ZXI6ICh7aWQsIHR5cGV9KSA9PiBpZC5tYXRjaCgvKD89KGxhYmVsfHBsYWNlLXxwb2ktKSkvKSB8fCB0eXBlPy5tYXRjaCgvKD89KHN5bWJvbCkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWUsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAncm9hZCcsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PShyb2FkfHJhaWx3YXl8dHVubmVsfHN0cmVldHxicmlkZ2UpKSg/IS4qbGFiZWwpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWUsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnYm9yZGVyJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvYm9yZGVyfGJvdW5kYXJpZXN8Ym91bmRhcnkvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogZmFsc2UsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnYnVpbGRpbmcnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC9idWlsZGluZy8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ3dhdGVyJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvKD89KHdhdGVyfHN0cmVhbXxmZXJyeSkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWUsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnbGFuZCcsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PShwYXJrc3xsYW5kY292ZXJ8aW5kdXN0cmlhbHxzYW5kfGhpbGxzaGFkZSkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWUsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiBUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUcsXG4gICAgZmlsdGVyOiAoKSA9PiBmYWxzZSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogZmFsc2UsXG4gICAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTW92ZVRvVG9wQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzQ29sb3JQaWNrZXJBdmFpbGFibGU6IHRydWVcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IEJBU0VfTUFQX0NPTE9SX01PREVTID0ga2V5TWlycm9yKHtcbiAgTk9ORTogbnVsbCxcbiAgREFSSzogbnVsbCxcbiAgTElHSFQ6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTk9fTUFQX0lEID0gJ25vX21hcCc7XG5cbi8vIEZhbGxiYWNrIHN0eWxlIHRvIHVzZSB3aGVuIHN0eWxlcyBhcmUgYmVpbmcgZmV0Y2hlZCwgb3Igd2hlblxuLy8gYSBzdHlsZSBmYWlscyB0byBmZXRjaFxuZXhwb3J0IGNvbnN0IEVNUFRZX01BUEJPWF9TVFlMRSA9IHtcbiAgdmVyc2lvbjogOCxcbiAgc291cmNlczoge30sXG4gIGxheWVyczogW11cbn07XG5cbmV4cG9ydCBjb25zdCBNQVBfTElCX09QVElPTlMgPSB7XG4gIE1BUEJPWDogJ21hcGJveCcgYXMgY29uc3QsXG4gIE1BUExJQlJFOiAnbWFwbGlicmUnIGFzIGNvbnN0XG59O1xuXG5leHBvcnQgdHlwZSBCYXNlTWFwTGlicmFyeVR5cGUgPSAnbWFwYm94JyB8ICdtYXBsaWJyZSc7XG5cbmV4cG9ydCBjb25zdCBOT19CQVNFTUFQX0lDT04gPSBgJHtCQVNFTUFQX0lDT05fUFJFRklYfS9OT19CQVNFTUFQLnBuZ2A7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JBU0VfTUFQX1NUWUxFID0gJ2RhcmstbWF0dGVyJztcblxudHlwZSBEZWZhdWx0QmFzZU1hcFN0eWxlID0gTWVyZ2U8XG4gIEJhc2VNYXBTdHlsZSxcbiAge1xuICAgIGNvbG9yTW9kZTogQmFzZU1hcENvbG9yTW9kZXM7XG4gIH1cbj47XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PX0JBU0VNQVBfU1RZTEU6IERlZmF1bHRCYXNlTWFwU3R5bGUgPSB7XG4gIGlkOiBOT19NQVBfSUQsXG4gIGxhYmVsOiAnTm8gQmFzZW1hcCcsXG4gIHVybDogJycsXG4gIGljb246IE5PX0JBU0VNQVBfSUNPTixcbiAgbGF5ZXJHcm91cHM6IFtCQUNLR1JPVU5EX0xBWUVSX0dST1VQXSxcbiAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5OT05FLFxuICBzdHlsZTogRU1QVFlfTUFQQk9YX1NUWUxFXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBCT1hfU1RZTEVTOiBEZWZhdWx0QmFzZU1hcFN0eWxlW10gPSBbXG4gIHtcbiAgICBpZDogJ2RhcmsnLFxuICAgIGxhYmVsOiAnRGFyaycsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2Nqb3FiYmY2bDlrMzAyc2w5NnR5dmthMDknLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1VCRVJfREFSS19WMi5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUkssXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdsaWdodCdcbiAgfSxcbiAge1xuICAgIGlkOiAnbGlnaHQnLFxuICAgIGxhYmVsOiAnTGlnaHQnLFxuICAgIHVybDogJ21hcGJveDovL3N0eWxlcy91YmVyZGF0YS9jam9xYjlqMzM5azFmMnNsOXQ1aWM1Ym40JyxcbiAgICBpY29uOiBgJHtCQVNFTUFQX0lDT05fUFJFRklYfS9VQkVSX0xJR0hUX1YyLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuTElHSFQsXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdkYXJrJ1xuICB9LFxuICB7XG4gICAgaWQ6ICdtdXRlZCcsXG4gICAgbGFiZWw6ICdNdXRlZCBMaWdodCcsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2NqZnlsMDNrcDF0dWwyc21mNXYydGJkZDQnLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1VCRVJfTVVURURfTElHSFQucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFMsXG4gICAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVCxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ211dGVkX25pZ2h0J1xuICB9LFxuICB7XG4gICAgaWQ6ICdtdXRlZF9uaWdodCcsXG4gICAgbGFiZWw6ICdNdXRlZCBOaWdodCcsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2NqZnhobGlrbWFqMWIyc295emV2bnl3Z3MnLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1VCRVJfTVVURURfTklHSFQucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFMsXG4gICAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5EQVJLLFxuICAgIGNvbXBsaW1lbnRhcnlTdHlsZUlkOiAnbXV0ZWQnXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUEJPWF9TQVRFTElURV9TVFlMRVM6IERlZmF1bHRCYXNlTWFwU3R5bGVbXSA9IFtcbiAge1xuICAgIGlkOiAnc2F0ZWxsaXRlJyxcbiAgICBsYWJlbDogJ1NhdGVsbGl0ZSB3aXRoIHN0cmVldHMnLFxuICAgIHVybDogYG1hcGJveDovL3N0eWxlcy9tYXBib3gvc2F0ZWxsaXRlLXN0cmVldHMtdjExYCxcbiAgICBpY29uOiBgJHtCQVNFTUFQX0lDT05fUFJFRklYfS9VQkVSX1NBVEVMTElURS5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLk5PTkVcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFQTElCUkVfU1RZTEVTOiBEZWZhdWx0QmFzZU1hcFN0eWxlW10gPSBbXG4gIHtcbiAgICBpZDogJ2RhcmstbWF0dGVyJyxcbiAgICBsYWJlbDogJ0RhcmtNYXR0ZXInLFxuICAgIHVybDogJ2h0dHBzOi8vYmFzZW1hcHMuY2FydG9jZG4uY29tL2dsL2RhcmstbWF0dGVyLWdsLXN0eWxlL3N0eWxlLmpzb24nLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L0RBUktNQVRURVIucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFMsXG4gICAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5EQVJLLFxuICAgIGNvbXBsaW1lbnRhcnlTdHlsZUlkOiAncG9zaXRyb24nXG4gIH0sXG4gIHtcbiAgICBpZDogJ3Bvc2l0cm9uJyxcbiAgICBsYWJlbDogJ1Bvc2l0cm9uJyxcbiAgICB1cmw6ICdodHRwczovL2Jhc2VtYXBzLmNhcnRvY2RuLmNvbS9nbC9wb3NpdHJvbi1nbC1zdHlsZS9zdHlsZS5qc29uJyxcbiAgICBpY29uOiBgJHtCQVNFTUFQX0lDT05fUFJFRklYfS9QT1NJVFJPTi5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkxJR0hULFxuICAgIGNvbXBsaW1lbnRhcnlTdHlsZUlkOiAnZGFyay1tYXR0ZXInXG4gIH0sXG4gIHtcbiAgICBpZDogJ3ZveWFnZXInLFxuICAgIGxhYmVsOiAnVm95YWdlcicsXG4gICAgdXJsOiAnaHR0cHM6Ly9iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vZ2wvdm95YWdlci1nbC1zdHlsZS9zdHlsZS5qc29uJyxcbiAgICBpY29uOiBgJHtCQVNFTUFQX0lDT05fUFJFRklYfS9WT1lBR0VSLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuTElHSFQsXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdkYXJrLW1hdHRlcidcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFQX1NUWUxFUyA9IFtcbiAgREVGQVVMVF9OT19CQVNFTUFQX1NUWUxFLFxuICAuLi5ERUZBVUxUX01BUExJQlJFX1NUWUxFUyxcbiAgLi4uREVGQVVMVF9NQVBCT1hfU0FURUxJVEVfU1RZTEVTLFxuICAuLi5ERUZBVUxUX01BUEJPWF9TVFlMRVNcbl07XG5cbmV4cG9ydCBjb25zdCBHRU9KU09OX0ZJRUxEUyA9IHtcbiAgZ2VvanNvbjogWydfZ2VvanNvbicsICdhbGxfcG9pbnRzJywgJ2dlb2pzb24nXVxufTtcblxuZXhwb3J0IGNvbnN0IElDT05fRklFTERTID0ge1xuICBpY29uOiBbJ2ljb24nXVxufTtcblxuZXhwb3J0IGNvbnN0IFRSSVBfUE9JTlRfRklFTERTOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXG4gIFsnbGF0JywgJ2xuZyddLFxuICBbJ2xhdCcsICdsb24nXSxcbiAgWydsYXQnLCAnbG9uZyddLFxuICBbJ2xhdGl0dWRlJywgJ2xvbmdpdHVkZSddXG5dO1xuXG5leHBvcnQgY29uc3QgQUxUSVRVREVfRklFTERTID0gWydhbHQnLCAnYWx0aXR1ZGUnXTtcbmV4cG9ydCBjb25zdCBUUklQX0FSQ19GSUVMRFMgPSB7XG4gIGxhdDA6ICdiZWdpbnRyaXAnLFxuICBsbmcwOiAnYmVnaW50cmlwJyxcbiAgbGF0MTogJ2Ryb3BvZmYnLFxuICBsbmcxOiAnZHJvcG9mZidcbn07XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICByYW5nZTogbnVsbCxcbiAgc2VsZWN0OiBudWxsLFxuICBpbnB1dDogbnVsbCxcbiAgdGltZVJhbmdlOiBudWxsLFxuICBtdWx0aVNlbGVjdDogbnVsbCxcbiAgcG9seWdvbjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfVklFV19UWVBFUyA9IGtleU1pcnJvcih7XG4gIHNpZGU6IG51bGwsXG4gIGVubGFyZ2VkOiBudWxsLFxuICBtaW5pZmllZDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZJTFRFUl9WSUVXX1RZUEUgPSBGSUxURVJfVklFV19UWVBFUy5zaWRlO1xuXG5leHBvcnQgdHlwZSBTQ0FMRV9UWVBFU19ERUYgPSB7XG4gIG9yZGluYWw6ICdvcmRpbmFsJztcbiAgcXVhbnRpbGU6ICdxdWFudGlsZSc7XG4gIHF1YW50aXplOiAncXVhbnRpemUnO1xuICBsaW5lYXI6ICdsaW5lYXInO1xuICBzcXJ0OiAnc3FydCc7XG4gIGxvZzogJ2xvZyc7XG4gIHBvaW50OiAncG9pbnQnO1xuICB0aHJlc2hvbGQ6ICd0aHJlc2hvbGQnO1xuICBjdXN0b206ICdjdXN0b20nO1xuICBjdXN0b21PcmRpbmFsOiAnY3VzdG9tT3JkaW5hbCc7XG59O1xuXG5leHBvcnQgY29uc3QgU0NBTEVfVFlQRVM6IFNDQUxFX1RZUEVTX0RFRiA9IGtleU1pcnJvcih7XG4gIG9yZGluYWw6IG51bGwsXG4gIHF1YW50aWxlOiBudWxsLFxuICBxdWFudGl6ZTogbnVsbCxcbiAgbGluZWFyOiBudWxsLFxuICBzcXJ0OiBudWxsLFxuICBsb2c6IG51bGwsXG4gIHRocmVzaG9sZDogbnVsbCxcbiAgY3VzdG9tOiBudWxsLFxuICBjdXN0b21PcmRpbmFsOiBudWxsLFxuICAvLyBvcmRpbmFsIGRvbWFpbiB0byBsaW5lYXIgcmFuZ2VcbiAgcG9pbnQ6IG51bGxcbn0pO1xuZXhwb3J0IGNvbnN0IFNDQUxFX1RZUEVfTkFNRVM6IHtba2V5IGluIGtleW9mIFNDQUxFX1RZUEVTX0RFRl06IHN0cmluZ30gPSB7XG4gIG9yZGluYWw6ICdPcmRpbmFsJyxcbiAgcXVhbnRpbGU6ICdRdWFudGlsZScsXG4gIHF1YW50aXplOiAnUXVhbnRpemUnLFxuICBsaW5lYXI6ICdMaW5lYXInLFxuICBzcXJ0OiAnU3FydCcsXG4gIGxvZzogJ0xvZycsXG4gIHRocmVzaG9sZDogJ1RocmVzaG9sZCcsXG4gIGN1c3RvbTogJ0N1c3RvbSBCcmVha3MnLFxuICBjdXN0b21PcmRpbmFsOiAnQ3VzdG9tIE9yZGluYWwnLFxuICBwb2ludDogJ1BvaW50J1xufTtcblxuZXhwb3J0IHR5cGUgU0NBTEVfRlVOQ19UWVBFID0ge1xuICBba2V5IGluIGtleW9mIFNDQUxFX1RZUEVTX0RFRl06ICgpID0+IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBTQ0FMRV9GVU5DID0ge1xuICBbU0NBTEVfVFlQRVMubGluZWFyXTogc2NhbGVMaW5lYXIsXG4gIFtTQ0FMRV9UWVBFUy5xdWFudGl6ZV06IHNjYWxlUXVhbnRpemUsXG4gIFtTQ0FMRV9UWVBFUy5xdWFudGlsZV06IHNjYWxlUXVhbnRpbGUsXG4gIFtTQ0FMRV9UWVBFUy5vcmRpbmFsXTogc2NhbGVPcmRpbmFsLFxuICBbU0NBTEVfVFlQRVMuc3FydF06IHNjYWxlU3FydCxcbiAgW1NDQUxFX1RZUEVTLmxvZ106IHNjYWxlTG9nLFxuICBbU0NBTEVfVFlQRVMucG9pbnRdOiBzY2FsZVBvaW50LFxuICBbU0NBTEVfVFlQRVMudGhyZXNob2xkXTogc2NhbGVUaHJlc2hvbGQsXG4gIFtTQ0FMRV9UWVBFUy5jdXN0b21dOiBzY2FsZVRocmVzaG9sZCxcbiAgW1NDQUxFX1RZUEVTLmN1c3RvbU9yZGluYWxdOiBzY2FsZU9yZGluYWxcbn07XG5cbmV4cG9ydCBjb25zdCBBTExfRklFTERfVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBib29sZWFuOiBudWxsLFxuICBkYXRlOiBudWxsLFxuICBnZW9qc29uOiBudWxsLFxuICBpbnRlZ2VyOiBudWxsLFxuICByZWFsOiBudWxsLFxuICBzdHJpbmc6IG51bGwsXG4gIHRpbWVzdGFtcDogbnVsbCxcbiAgcG9pbnQ6IG51bGwsXG4gIGFycmF5OiBudWxsLFxuICBvYmplY3Q6IG51bGwsXG4gIGdlb2Fycm93OiBudWxsLFxuICBoMzogbnVsbFxufSk7XG5cbi8vIERhdGEgVGFibGVcbmV4cG9ydCBjb25zdCBTT1JUX09SREVSID0ga2V5TWlycm9yKHtcbiAgQVNDRU5ESU5HOiBudWxsLFxuICBERVNDRU5ESU5HOiBudWxsLFxuICBVTlNPUlQ6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgVEFCTEVfT1BUSU9OID0ga2V5TWlycm9yKHtcbiAgU09SVF9BU0M6IG51bGwsXG4gIFNPUlRfREVTOiBudWxsLFxuICBVTlNPUlQ6IG51bGwsXG4gIFBJTjogbnVsbCxcbiAgVU5QSU46IG51bGwsXG4gIENPUFk6IG51bGwsXG4gIEZPUk1BVF9DT0xVTU46IG51bGxcbn0pO1xuXG5leHBvcnQgdHlwZSBUYWJsZU9wdGlvbiA9IHtcbiAgdmFsdWU6ICdTT1JUX0FTQycgfCAnU09SVF9ERVMnIHwgJ1VOU09SVCcgfCAnUElOJyB8ICdVTlBJTicgfCAnQ09QWScgfCAnRk9STUFUX0NPTFVNTic7XG4gIGRpc3BsYXk6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBjb25kaXRpb24/OiAocHJvcHM6IGFueSkgPT4gYm9vbGVhbjtcbn07XG5leHBvcnQgY29uc3QgVEFCTEVfT1BUSU9OX0xJU1Q6IFRhYmxlT3B0aW9uW10gPSBbXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlNPUlRfQVNDLFxuICAgIGRpc3BsYXk6ICdTb3J0IEFzY2VuZGluZycsXG4gICAgaWNvbjogJ0Fycm93VXAnLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydFRhYmxlQ29sdW1uICYmIHByb3BzLnNvcnRNb2RlICE9PSBTT1JUX09SREVSLkFTQ0VORElOR1xuICB9LFxuICB7XG4gICAgdmFsdWU6IFRBQkxFX09QVElPTi5TT1JUX0RFUyxcbiAgICBkaXNwbGF5OiAnU29ydCBEZXNjZW5kaW5nJyxcbiAgICBpY29uOiAnQXJyb3dEb3duJyxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLnNvcnRUYWJsZUNvbHVtbiAmJiBwcm9wcy5zb3J0TW9kZSAhPT0gU09SVF9PUkRFUi5ERVNDRU5ESU5HXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlVOU09SVCxcbiAgICBkaXNwbGF5OiAnVW5zb3J0IENvbHVtbicsXG4gICAgaWNvbjogJ0NhbmNlbCcsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5pc1NvcnRlZFxuICB9LFxuICB7XG4gICAgdmFsdWU6IFRBQkxFX09QVElPTi5QSU4sXG4gICAgZGlzcGxheTogJ1BpbiBDb2x1bW4nLFxuICAgIGljb246ICdQaW4nLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gIXByb3BzLmlzUGlubmVkXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlVOUElOLFxuICAgIGRpc3BsYXk6ICdVbnBpbiBDb2x1bW4nLFxuICAgIGljb246ICdDYW5jZWwnLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuaXNQaW5uZWRcbiAgfSxcbiAge3ZhbHVlOiBUQUJMRV9PUFRJT04uQ09QWSwgZGlzcGxheTogJ0NvcHkgQ29sdW1uJywgaWNvbjogJ0NsaXBib2FyZCd9LFxuICB7XG4gICAgdmFsdWU6IFRBQkxFX09QVElPTi5GT1JNQVRfQ09MVU1OLFxuICAgIGRpc3BsYXk6ICdGb3JtYXQgQ29sdW1uJyxcbiAgICBpY29uOiAnSGFzaCcsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5zZXREaXNwbGF5Rm9ybWF0XG4gIH1cbl07XG5cbmNvbnN0IFlFTExPVyA9ICcyNDgsIDE5NCwgMjgnO1xuY29uc3QgUElOSyA9ICcyNDIsIDE1MiwgMTYzJztcbmNvbnN0IFBVUlBMRSA9ICcxNjAsIDEwNiwgMjA2JztcbmNvbnN0IEJMVUUgPSAnMTQwLCAyMTAsIDIwNSc7XG5jb25zdCBCTFVFMiA9ICcxMDYsIDE2MCwgMjA2JztcbmNvbnN0IEJMVUUzID0gJzAsIDE3MiwgMjM3JztcbmNvbnN0IEdSRUVOID0gJzEwNiwgMTYwLCA1Nic7XG5jb25zdCBHUkVFTjIgPSAnNzQsIDE2NSwgMTUwJztcbmNvbnN0IFJFRCA9ICcyMzcsIDg4LCAxMDYnO1xuY29uc3QgT1JBTkdFID0gJzIzMSwgMTEwLCA1OCc7XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9UWVBFX0RJU1BMQVkgPSB7XG4gIFtBTExfRklFTERfVFlQRVMuYm9vbGVhbl06IHtcbiAgICBsYWJlbDogJ2Jvb2wnLFxuICAgIGNvbG9yOiBQSU5LXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuZGF0ZV06IHtcbiAgICBsYWJlbDogJ2RhdGUnLFxuICAgIGNvbG9yOiBQVVJQTEVcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9qc29uXToge1xuICAgIGxhYmVsOiAnZ2VvJyxcbiAgICBjb2xvcjogQkxVRTJcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9hcnJvd106IHtcbiAgICBsYWJlbDogJ2dlbycsXG4gICAgY29sb3I6IEJMVUUyXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuaW50ZWdlcl06IHtcbiAgICBsYWJlbDogJ2ludCcsXG4gICAgY29sb3I6IFlFTExPV1xuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnJlYWxdOiB7XG4gICAgbGFiZWw6ICdmbG9hdCcsXG4gICAgY29sb3I6IFlFTExPV1xuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ106IHtcbiAgICBsYWJlbDogJ3N0cmluZycsXG4gICAgY29sb3I6IEJMVUVcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXBdOiB7XG4gICAgbGFiZWw6ICd0aW1lJyxcbiAgICBjb2xvcjogR1JFRU5cbiAgfSxcbiAgLy8gZmllbGQgcGFpcnNcbiAgW0FMTF9GSUVMRF9UWVBFUy5wb2ludF06IHtcbiAgICBsYWJlbDogJ3BvaW50JyxcbiAgICBjb2xvcjogQkxVRTNcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5hcnJheV06IHtcbiAgICBsYWJlbDogJ2FycmF5JyxcbiAgICBjb2xvcjogT1JBTkdFXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMub2JqZWN0XToge1xuICAgIGxhYmVsOiAnb2JqZWN0JyxcbiAgICBjb2xvcjogR1JFRU4yXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuaDNdOiB7XG4gICAgbGFiZWw6ICdoMycsXG4gICAgY29sb3I6IEJMVUVcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEZJRUxEX0NPTE9SUyA9IHtcbiAgZGVmYXVsdDogUkVEXG59O1xuZXhwb3J0IGNvbnN0IEhJR0hMSUdIX0NPTE9SXzNEOiBSR0JBQ29sb3IgPSBbMjU1LCAyNTUsIDI1NSwgNjBdO1xuZXhwb3J0IGNvbnN0IENIQU5ORUxfU0NBTEVTID0ga2V5TWlycm9yKHtcbiAgY29sb3I6IG51bGwsXG4gIHJhZGl1czogbnVsbCxcbiAgc2l6ZTogbnVsbCxcbiAgY29sb3JBZ2dyOiBudWxsLFxuICBzaXplQWdncjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBBR0dSRUdBVElPTl9UWVBFUzoge1xuICAvLyBkZWZhdWx0XG4gIGNvdW50OiAnY291bnQnO1xuICAvLyBsaW5lYXJcbiAgYXZlcmFnZTogJ2F2ZXJhZ2UnO1xuICBtYXhpbXVtOiAnbWF4aW11bSc7XG4gIG1pbmltdW06ICdtaW5pbXVtJztcbiAgbWVkaWFuOiAnbWVkaWFuJztcbiAgc3RkZXY6ICdzdGRldic7XG4gIHN1bTogJ3N1bSc7XG4gIHZhcmlhbmNlOiAndmFyaWFuY2UnO1xuICAvLyBvcmRpbmFsXG4gIG1vZGU6ICdtb2RlJztcbiAgY291bnRVbmlxdWU6ICdjb3VudFVuaXF1ZSc7XG59ID0ge1xuICAvLyBkZWZhdWx0XG4gIGNvdW50OiAnY291bnQnLFxuICAvLyBsaW5lYXJcbiAgYXZlcmFnZTogJ2F2ZXJhZ2UnLFxuICBtYXhpbXVtOiAnbWF4aW11bScsXG4gIG1pbmltdW06ICdtaW5pbXVtJyxcbiAgbWVkaWFuOiAnbWVkaWFuJyxcbiAgc3RkZXY6ICdzdGRldicsXG4gIHN1bTogJ3N1bScsXG4gIHZhcmlhbmNlOiAndmFyaWFuY2UnLFxuICAvLyBvcmRpbmFsXG4gIG1vZGU6ICdtb2RlJyxcbiAgY291bnRVbmlxdWU6ICdjb3VudFVuaXF1ZSdcbn07XG5cbmV4cG9ydCBjb25zdCBBR0dSRUdBVElPTl9UWVBFX09QVElPTlM6IHtpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nfVtdID0gT2JqZWN0LmVudHJpZXMoXG4gIEFHR1JFR0FUSU9OX1RZUEVTXG4pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICBpZDoga2V5LFxuICBsYWJlbDpcbiAgICBrZXkgPT09ICdzdGRldidcbiAgICAgID8gJ1N0ZCBEZXZpYXRpb24nXG4gICAgICA6IGtleSA9PT0gJ2NvdW50VW5pcXVlJ1xuICAgICAgPyAnQ291bnQgVW5pcXVlJ1xuICAgICAgOiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICA/IHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSlcbiAgICAgIDogdmFsdWVcbn0pKTtcblxuZXhwb3J0IGNvbnN0IGxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdOiBbU0NBTEVfVFlQRVMuc3FydF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXVxufTtcblxuY29uc3QgREVGQVVMVF9BR0dSRUdBVElPTl9DT0xPUl9TQ0FMRVMgPSBbXG4gIFNDQUxFX1RZUEVTLnF1YW50aXplLFxuICBTQ0FMRV9UWVBFUy5xdWFudGlsZSxcbiAgU0NBTEVfVFlQRVMuY3VzdG9tXG5dO1xuXG5leHBvcnQgY29uc3QgbGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiBbXG4gICAgQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5tYXhpbXVtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWVkaWFuLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2LFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN1bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5jb3VudFxuICBdLnJlZHVjZSgocHJldiwgY3VyKSA9PiB7XG4gICAgcHJldltjdXJdID0gREVGQVVMVF9BR0dSRUdBVElPTl9DT0xPUl9TQ0FMRVM7XG4gICAgcmV0dXJuIHByZXY7XG4gIH0sIHt9KSxcblxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZUFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2VdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tYXhpbXVtXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWluaW11bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1lZGlhbl06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2XTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuc3VtXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2VdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBvcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yXTogW1NDQUxFX1RZUEVTLm9yZGluYWwsIFNDQUxFX1RZUEVTLmN1c3RvbU9yZGluYWxdLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW1NDQUxFX1RZUEVTLnBvaW50XSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVdOiBbU0NBTEVfVFlQRVMucG9pbnRdXG59O1xuXG5leHBvcnQgY29uc3Qgb3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zID0ge1xuICAvLyBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXTogW1NDQUxFX1RZUEVTLm9yZGluYWwsIFNDQUxFX1RZUEVTLmxpbmVhcl0sXG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1vZGVdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmNvdW50VW5pcXVlXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZV1cbiAgfSxcblxuICAvLyBDdXJyZW50bHkgZG9lc24ndCBzdXBwb3J0IHlldFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZUFnZ3JdOiB7fVxufTtcblxuZXhwb3J0IGNvbnN0IG5vdFN1cHBvcnRlZFNjYWxlT3B0cyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yXTogW10sXG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdOiBbXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVdOiBbXVxufTtcblxuZXhwb3J0IGNvbnN0IG5vdFN1cHBvcnRBZ2dyT3B0cyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHt9LFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZUFnZ3JdOiB7fVxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGFnZ3JlZ2F0aW9uIGFyZSBiYXNlZCBvbiBvY3VudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9BR0dSRUdBVElPTiA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRdOiBERUZBVUxUX0FHR1JFR0FUSU9OX0NPTE9SX1NDQUxFU1xuICB9LFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZUFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmNvdW50XTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXVxuICB9XG59O1xuXG4vKipcbiAqIERlZmluZSB3aGF0IHR5cGUgb2Ygc2NhbGUgb3BlcmF0aW9uIGlzIGFsbG93ZWQgb24gZWFjaCB0eXBlIG9mIGZpZWxkc1xuICovXG5leHBvcnQgY29uc3QgRklFTERfT1BUUyA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5zdHJpbmddOiB7XG4gICAgdHlwZTogJ2NhdGVnb3JpY2FsJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ub3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5vcmRpbmFsRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXToge1xuICAgIHR5cGU6ICdudW1lcmljYWwnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5saW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ubGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRFQ0lNQUwsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLlBFUkNFTlRBR0VcbiAgICAgIF1cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMudGltZXN0YW1wXToge1xuICAgIHR5cGU6ICd0aW1lJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm5vdFN1cHBvcnRBZ2dyT3B0c1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuTk9ORSxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREFURSxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREFURV9USU1FXG4gICAgICBdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiB7XG4gICAgdHlwZTogJ251bWVyaWNhbCcsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLntcbiAgICAgICAgLi4ubGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgICAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yXTogW1xuICAgICAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnNbQ0hBTk5FTF9TQ0FMRVMuY29sb3JdLFxuICAgICAgICAgIFNDQUxFX1RZUEVTLmN1c3RvbU9yZGluYWxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC4uLmxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFXG4gICAgICBdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW5dOiB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLCBUT09MVElQX0ZPUk1BVF9UWVBFUy5CT09MRUFOXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXToge1xuICAgIHR5cGU6ICd0aW1lJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ub3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5vcmRpbmFsRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbVE9PTFRJUF9GT1JNQVRfVFlQRVMuTk9ORSwgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREFURV1cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuZ2VvanNvbl06IHtcbiAgICB0eXBlOiAnZ2VvbWV0cnknLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5ub3RTdXBwb3J0ZWRTY2FsZU9wdHMsXG4gICAgICAuLi5ub3RTdXBwb3J0QWdnck9wdHNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiAoKSA9PiAnLi4uJyxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2Fycm93XToge1xuICAgIHR5cGU6ICdnZW9tZXRyeScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm5vdFN1cHBvcnRlZFNjYWxlT3B0cyxcbiAgICAgIC4uLm5vdFN1cHBvcnRBZ2dyT3B0c1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6ICgpID0+ICcuLi4nLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMub2JqZWN0XToge1xuICAgIHR5cGU6ICdudW1lcmljYWwnLFxuICAgIHNjYWxlOiB7fSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogKCkgPT4gJy4uLicsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5hcnJheV06IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge30sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6ICgpID0+ICcuLi4nLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuaDNdOiB7XG4gICAgdHlwZTogJ2gzJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubm90U3VwcG9ydGVkU2NhbGVPcHRzLFxuICAgICAgLi4ubm90U3VwcG9ydEFnZ3JPcHRzXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogKCkgPT4gJy4uLicsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEUyA9IE9iamVjdC5rZXlzKENIQU5ORUxfU0NBTEVTKS5yZWR1Y2UoXG4gIChhY2N1LCBrZXkpID0+ICh7XG4gICAgLi4uYWNjdSxcbiAgICBba2V5XTogT2JqZWN0LmtleXMoRklFTERfT1BUUykuZmlsdGVyKFxuICAgICAgZnQgPT4gRklFTERfT1BUU1tmdF0uc2NhbGVba2V5XSAmJiBPYmplY3Qua2V5cyhGSUVMRF9PUFRTW2Z0XS5zY2FsZVtrZXldKS5sZW5ndGhcbiAgICApXG4gIH0pLFxuICB7fSBhcyB7W2lkOiBzdHJpbmddOiBzdHJpbmdbXX1cbik7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xBWUVSX0NPTE9SID0ge1xuICB0cmlwQXJjOiAnIzkyMjZDNicsXG4gIGJlZ2ludHJpcF9sYXQ6ICcjMUU5NkJFJyxcbiAgZHJvcG9mZl9sYXQ6ICcjRkY5OTFGJyxcbiAgcmVxdWVzdF9sYXQ6ICcjNTJBMzUzJ1xufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURSA9ICdHbG9iYWwgV2FybWluZyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9DT0xPUl9QQUxFVFRFX1NURVBTID0gNjtcblxuLy8gbGV0IHVzZXIgcGFzcyBpbiBkZWZhdWx0IHRvb2x0aXAgZmllbGRzXG5leHBvcnQgY29uc3QgREVGQVVMVF9UT09MVElQX0ZJRUxEUzogYW55W10gPSBbXTtcblxuZXhwb3J0IGNvbnN0IE5PX1ZBTFVFX0NPTE9SOiBSR0JBQ29sb3IgPSBbMCwgMCwgMCwgMF07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BJQ0tJTkdfUkFESVVTID0gMztcblxuZXhwb3J0IGNvbnN0IE9WRVJMQVlfQkxFTkRJTkdTID0ge1xuICBub3JtYWw6IHtcbiAgICBsYWJlbDogJ292ZXJsYXlCbGVuZGluZy5ub3JtYWwnLFxuICAgIHZhbHVlOiAnbm9ybWFsJ1xuICB9LFxuICBzY3JlZW46IHtcbiAgICBsYWJlbDogJ292ZXJsYXlCbGVuZGluZy5zY3JlZW4nLFxuICAgIHZhbHVlOiAnc2NyZWVuJ1xuICB9LFxuICBkYXJrZW46IHtcbiAgICBsYWJlbDogJ292ZXJsYXlCbGVuZGluZy5kYXJrZW4nLFxuICAgIHZhbHVlOiAnZGFya2VuJ1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgTEFZRVJfQkxFTkRJTkdTID0ge1xuICBhZGRpdGl2ZToge1xuICAgIGxhYmVsOiAnbGF5ZXJCbGVuZGluZy5hZGRpdGl2ZScsXG4gICAgYmxlbmRGdW5jOiBbJ1NSQ19BTFBIQScsICdEU1RfQUxQSEEnXSxcbiAgICBibGVuZEVxdWF0aW9uOiAnRlVOQ19BREQnXG4gIH0sXG4gIG5vcm1hbDoge1xuICAgIC8vIHJlZmVyZW5jZSB0b1xuICAgIC8vIGh0dHBzOi8vbGltbnUuY29tL3dlYmdsLWJsZW5kaW5nLXlvdXJlLXByb2JhYmx5LXdyb25nL1xuICAgIGxhYmVsOiAnbGF5ZXJCbGVuZGluZy5ub3JtYWwnLFxuICAgIGJsZW5kRnVuYzogWydTUkNfQUxQSEEnLCAnT05FX01JTlVTX1NSQ19BTFBIQScsICdPTkUnLCAnT05FX01JTlVTX1NSQ19BTFBIQSddLFxuICAgIGJsZW5kRXF1YXRpb246IFsnRlVOQ19BREQnLCAnRlVOQ19BREQnXVxuICB9LFxuICBzdWJ0cmFjdGl2ZToge1xuICAgIGxhYmVsOiAnbGF5ZXJCbGVuZGluZy5zdWJ0cmFjdGl2ZScsXG4gICAgYmxlbmRGdW5jOiBbJ09ORScsICdPTkVfTUlOVVNfRFNUX0NPTE9SJywgJ1NSQ19BTFBIQScsICdEU1RfQUxQSEEnXSxcbiAgICBibGVuZEVxdWF0aW9uOiBbJ0ZVTkNfU1VCVFJBQ1QnLCAnRlVOQ19BREQnXVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgTUFYX0RFRkFVTFRfVE9PTFRJUFMgPSA1O1xuXG5leHBvcnQgY29uc3QgUkVTT0xVVElPTlMgPSBrZXlNaXJyb3Ioe1xuICBPTkVfWDogbnVsbCxcbiAgVFdPX1g6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNR19SQVRJT1MgPSBrZXlNaXJyb3Ioe1xuICBTQ1JFRU46IG51bGwsXG4gIEZPVVJfQllfVEhSRUU6IG51bGwsXG4gIFNJWFRFRU5fQllfTklORTogbnVsbCxcbiAgQ1VTVE9NOiBudWxsXG59KTtcblxuZXhwb3J0IHR5cGUgSW1hZ2VSYXRpb09wdGlvbiA9IHtcbiAgaWQ6IGtleW9mIHR5cGVvZiBFWFBPUlRfSU1HX1JBVElPUztcbiAgbGFiZWw6IHN0cmluZztcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZ2V0U2l6ZTogKHNjcmVlblc6IG51bWJlciwgc2NyZWVuSDogbnVtYmVyKSA9PiB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9O1xufTtcblxuZXhwb3J0IGNvbnN0IFNjcmVlblJhdGlvT3B0aW9uOiBJbWFnZVJhdGlvT3B0aW9uID0ge1xuICBpZDogRVhQT1JUX0lNR19SQVRJT1MuU0NSRUVOLFxuICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvT3JpZ2luYWxTY3JlZW4nLFxuICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHt3aWR0aDogc2NyZWVuVywgaGVpZ2h0OiBzY3JlZW5IfSlcbn07XG5leHBvcnQgY29uc3QgQ3VzdG9tUmF0aW9PcHRpb246IEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBFWFBPUlRfSU1HX1JBVElPUy5DVVNUT00sXG4gIGhpZGRlbjogdHJ1ZSxcbiAgbGFiZWw6ICdtb2RhbC5leHBvcnRJbWFnZS5yYXRpb0N1c3RvbScsXG4gIGdldFNpemU6IChtYXBXLCBtYXBIKSA9PiAoe3dpZHRoOiBtYXBXLCBoZWlnaHQ6IG1hcEh9KVxufTtcbmV4cG9ydCBjb25zdCBGb3VyQnlUaHJlZVJhdGlvT3B0aW9uOiBJbWFnZVJhdGlvT3B0aW9uID0ge1xuICBpZDogRVhQT1JUX0lNR19SQVRJT1MuRk9VUl9CWV9USFJFRSxcbiAgbGFiZWw6ICdtb2RhbC5leHBvcnRJbWFnZS5yYXRpbzRfMycsXG4gIGdldFNpemU6IHNjcmVlblcgPT4gKHtcbiAgICB3aWR0aDogc2NyZWVuVyxcbiAgICBoZWlnaHQ6IE1hdGgucm91bmQoc2NyZWVuVyAqIDAuNzUpXG4gIH0pXG59O1xuZXhwb3J0IGNvbnN0IFNpeHRlZW5CeU5pbmVSYXRpb09wdGlvbjogSW1hZ2VSYXRpb09wdGlvbiA9IHtcbiAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLlNJWFRFRU5fQllfTklORSxcbiAgbGFiZWw6ICdtb2RhbC5leHBvcnRJbWFnZS5yYXRpbzE2XzknLFxuICBnZXRTaXplOiBzY3JlZW5XID0+ICh7XG4gICAgd2lkdGg6IHNjcmVlblcsXG4gICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHNjcmVlblcgKiAwLjU2MjUpXG4gIH0pXG59O1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNR19SQVRJT19PUFRJT05TOiBSZWFkb25seUFycmF5PEltYWdlUmF0aW9PcHRpb24+ID0gW1xuICBTY3JlZW5SYXRpb09wdGlvbixcbiAgRm91ckJ5VGhyZWVSYXRpb09wdGlvbixcbiAgU2l4dGVlbkJ5TmluZVJhdGlvT3B0aW9uLFxuICBDdXN0b21SYXRpb09wdGlvblxuXTtcblxuZXhwb3J0IHR5cGUgRXhwb3J0UmVzb2x1dGlvbk9wdGlvbiA9XG4gIHwga2V5b2YgdHlwZW9mIFJFU09MVVRJT05TXG4gIHwgJzEyODB4NzIwJ1xuICB8ICcxOTIweDEwODAnXG4gIHwgJzI1NjB4MTQ0MCdcbiAgfCAnMTYwMHg5MDAnXG4gIHwgJzEwMjR4NzY4J1xuICB8ICcxMjgweDk2MCdcbiAgfCAnMTYwMHgxMjAwJ1xuICB8ICcxOTIweDE0NDAnO1xuXG5leHBvcnQgdHlwZSBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBFeHBvcnRSZXNvbHV0aW9uT3B0aW9uO1xuICBsYWJlbDogc3RyaW5nO1xuICBhdmFpbGFibGU6IGJvb2xlYW47XG4gIHNjYWxlPzogbnVtYmVyO1xuICBnZXRTaXplOiAoc2NyZWVuVzogbnVtYmVyLCBzY3JlZW5IOiBudW1iZXIpID0+IHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn07XG59O1xuXG5leHBvcnQgY29uc3QgT25lWFJlc29sdXRpb25PcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6IFJFU09MVVRJT05TLk9ORV9YLFxuICBsYWJlbDogJzF4JyxcbiAgYXZhaWxhYmxlOiB0cnVlLFxuICBzY2FsZTogMSxcbiAgZ2V0U2l6ZTogKHNjcmVlblcsIHNjcmVlbkgpID0+ICh7XG4gICAgd2lkdGg6IHNjcmVlblcsXG4gICAgaGVpZ2h0OiBzY3JlZW5IXG4gIH0pXG59O1xuXG5leHBvcnQgY29uc3QgVHdvWFJlc29sdXRpb25PcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6IFJFU09MVVRJT05TLlRXT19YLFxuICBsYWJlbDogJzJ4JyxcbiAgYXZhaWxhYmxlOiB0cnVlLFxuICBzY2FsZTogMixcbiAgZ2V0U2l6ZTogKHNjcmVlblcsIHNjcmVlbkgpID0+ICh7XG4gICAgd2lkdGg6IHNjcmVlblcgKiAyLFxuICAgIGhlaWdodDogc2NyZWVuSCAqIDJcbiAgfSlcbn07XG5cbi8vIEZpeGVkIGRpbWVuc2lvbiBvcHRpb25zXG5leHBvcnQgY29uc3QgUmVzb2x1dGlvbjE5MjB4MTA4ME9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogJzE5MjB4MTA4MCcsXG4gIGxhYmVsOiAnMTkyMCDDlyAxMDgwICgxNjo5KScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTkyMCwgaGVpZ2h0OiAxMDgwfSlcbn07XG5cbmV4cG9ydCBjb25zdCBSZXNvbHV0aW9uMTI4MHg3MjBPcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6ICcxMjgweDcyMCcsXG4gIGxhYmVsOiAnMTI4MCDDlyA3MjAgKDE2OjkpJyxcbiAgYXZhaWxhYmxlOiB0cnVlLFxuICBnZXRTaXplOiAoKSA9PiAoe3dpZHRoOiAxMjgwLCBoZWlnaHQ6IDcyMH0pXG59O1xuXG5leHBvcnQgY29uc3QgUmVzb2x1dGlvbjI1NjB4MTQ0ME9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogJzI1NjB4MTQ0MCcsXG4gIGxhYmVsOiAnMjU2MCDDlyAxNDQwICgxNjo5KScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMjU2MCwgaGVpZ2h0OiAxNDQwfSlcbn07XG5cbmV4cG9ydCBjb25zdCBSZXNvbHV0aW9uMTYwMHg5MDBPcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6ICcxNjAweDkwMCcsXG4gIGxhYmVsOiAnMTYwMCDDlyA5MDAgKDE2OjkpJyxcbiAgYXZhaWxhYmxlOiB0cnVlLFxuICBnZXRTaXplOiAoKSA9PiAoe3dpZHRoOiAxNjAwLCBoZWlnaHQ6IDkwMH0pXG59O1xuXG5leHBvcnQgY29uc3QgUmVzb2x1dGlvbjEwMjR4NzY4T3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiAnMTAyNHg3NjgnLFxuICBsYWJlbDogJzEwMjQgw5cgNzY4ICg0OjMpJyxcbiAgYXZhaWxhYmxlOiB0cnVlLFxuICBnZXRTaXplOiAoKSA9PiAoe3dpZHRoOiAxMDI0LCBoZWlnaHQ6IDc2OH0pXG59O1xuXG5leHBvcnQgY29uc3QgUmVzb2x1dGlvbjEyODB4OTYwT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiAnMTI4MHg5NjAnLFxuICBsYWJlbDogJzEyODAgw5cgOTYwICg0OjMpJyxcbiAgYXZhaWxhYmxlOiB0cnVlLFxuICBnZXRTaXplOiAoKSA9PiAoe3dpZHRoOiAxMjgwLCBoZWlnaHQ6IDk2MH0pXG59O1xuXG5leHBvcnQgY29uc3QgUmVzb2x1dGlvbjE2MDB4MTIwME9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogJzE2MDB4MTIwMCcsXG4gIGxhYmVsOiAnMTYwMCDDlyAxMjAwICg0OjMpJyxcbiAgYXZhaWxhYmxlOiB0cnVlLFxuICBnZXRTaXplOiAoKSA9PiAoe3dpZHRoOiAxNjAwLCBoZWlnaHQ6IDEyMDB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24xOTIweDE0NDBPcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6ICcxOTIweDE0NDAnLFxuICBsYWJlbDogJzE5MjAgw5cgMTQ0MCAoNDozKScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTkyMCwgaGVpZ2h0OiAxNDQwfSlcbn07XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUzogUmVhZG9ubHlBcnJheTxJbWFnZVJlc29sdXRpb25PcHRpb24+ID0gW1xuICBPbmVYUmVzb2x1dGlvbk9wdGlvbixcbiAgVHdvWFJlc29sdXRpb25PcHRpb24sXG4gIFJlc29sdXRpb24xMjgweDcyME9wdGlvbixcbiAgUmVzb2x1dGlvbjE5MjB4MTA4ME9wdGlvbixcbiAgUmVzb2x1dGlvbjI1NjB4MTQ0ME9wdGlvbixcbiAgUmVzb2x1dGlvbjE2MDB4OTAwT3B0aW9uLFxuICBSZXNvbHV0aW9uMTAyNHg3NjhPcHRpb24sXG4gIFJlc29sdXRpb24xMjgweDk2ME9wdGlvbixcbiAgUmVzb2x1dGlvbjE2MDB4MTIwME9wdGlvbixcbiAgUmVzb2x1dGlvbjE5MjB4MTQ0ME9wdGlvblxuXTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9EQVRBX1RZUEUgPSBrZXlNaXJyb3Ioe1xuICBDU1Y6IG51bGxcbiAgLy8gU0hBUEVGSUxFOiBudWxsLFxuICAvLyBKU09OOiBudWxsLFxuICAvLyBHRU9KU09OOiBudWxsLFxuICAvLyBUT1BPSlNPTjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9UWVBFX09QVElPTlMgPSBbXG4gIHtcbiAgICBpZDogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gICAgbGFiZWw6IEVYUE9SVF9EQVRBX1RZUEUuQ1NWLnRvTG93ZXJDYXNlKCksXG4gICAgYXZhaWxhYmxlOiB0cnVlXG4gIH1cbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLlNIQVBFRklMRSxcbiAgLy8gICBsYWJlbDogJ3NoYXBlZmlsZScsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9LFxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuSlNPTixcbiAgLy8gICBsYWJlbDogJ2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfSxcbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLkdFT0pTT04sXG4gIC8vICAgbGFiZWw6ICdnZW9qc29uJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH0sXG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5UT1BPSlNPTixcbiAgLy8gICBsYWJlbDogJ3RvcG9qc29uJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH1cbl07XG5cbi8vIEV4cG9ydCBtYXAgdHlwZXNcbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFQX0ZPUk1BVFMgPSBrZXlNaXJyb3Ioe1xuICBIVE1MOiBudWxsLFxuICBKU09OOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9IVE1MX01BUF9NT0RFUyA9IGtleU1pcnJvcih7XG4gIFJFQUQ6IG51bGwsXG4gIEVESVQ6IG51bGxcbn0pO1xuXG4vLyBFeHBvcnQgbWFwIG9wdGlvbnNcbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFQX0ZPUk1BVF9PUFRJT05TID0gT2JqZWN0LmVudHJpZXMoRVhQT1JUX01BUF9GT1JNQVRTKS5tYXAoXG4gIChlbnRyeTogW3N0cmluZywgYW55XSkgPT4gKHtcbiAgICBpZDogZW50cnlbMF0sXG4gICAgbGFiZWw6IGVudHJ5WzFdLnRvTG93ZXJDYXNlKCksXG4gICAgYXZhaWxhYmxlOiB0cnVlXG4gIH0pXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SFRNTE1hcE1vZGVUaWxlVXJsKG1vZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgaHR0cHM6Ly9kMWEzZjRzcGF6enJwNC5jbG91ZGZyb250Lm5ldC9rZXBsZXIuZ2wvZG9jdW1lbnRhdGlvbi9tYXAtJHttb2RlLnRvTG93ZXJDYXNlKCl9LW1vZGUucG5nYDtcbn1cblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9IVE1MX01BUF9NT0RFX09QVElPTlMgPSBPYmplY3QuZW50cmllcyhFWFBPUlRfSFRNTF9NQVBfTU9ERVMpLm1hcChcbiAgKGVudHJ5OiBbc3RyaW5nLCBhbnldKSA9PiAoe1xuICAgIGlkOiBlbnRyeVswXSxcbiAgICBsYWJlbDogYG1vZGFsLmV4cG9ydE1hcC5odG1sLiR7ZW50cnlbMV0udG9Mb3dlckNhc2UoKX1gLFxuICAgIGF2YWlsYWJsZTogdHJ1ZSxcbiAgICB1cmw6IGdldEhUTUxNYXBNb2RlVGlsZVVybChlbnRyeVsxXSlcbiAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1VVSURfQ09VTlQgPSA2O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fTUVTU0FHRSA9ICdNRVNTQUdFX05PVF9QUk9WSURFRCc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9UWVBFUyA9IGtleU1pcnJvcih7XG4gIGluZm86IG51bGwsXG4gIGVycm9yOiBudWxsLFxuICB3YXJuaW5nOiBudWxsLFxuICBzdWNjZXNzOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyA9IGtleU1pcnJvcih7XG4gIGdsb2JhbDogbnVsbCxcbiAgZmlsZTogbnVsbFxufSk7XG5cbi8vIE1pbmltdW0gdGltZSBiZXR3ZWVuIGlkZW50aWNhbCBub3RpZmljYXRpb25zIGFib3V0IGRlY2suZ2wgZXJyb3JzXG5leHBvcnQgY29uc3QgVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUgPSAzMzA7XG5cbi8vIEFuaW1hdGlvblxuZXhwb3J0IGNvbnN0IEJBU0VfU1BFRUQgPSA2MDA7XG5leHBvcnQgY29uc3QgRlBTID0gNjA7XG5cbi8qKlxuICogNCBBbmltYXRpb24gV2luZG93IFR5cGVzXG4gKiAxLiBmcmVlXG4gKiAgfC0+ICB8LT5cbiAqIEN1cnJlbnQgdGltZSBpcyBhIGZpeGVkIHJhbmdlLCBhbmltYXRpb24gY29udHJvbGxlciBjYWxscyBuZXh0IGFuaW1hdGlvbiBmcmFtZXMgY29udGludW91c2x5IHRvIGFuaW1hdGlvbiBhIG1vdmluZyB3aW5kb3dcbiAqIFRoZSBpbmNyZW1lbnQgaWQgYmFzZWQgb24gZG9tYWluIC8gQkFTRV9TUEVFRCAqIFNQRUVEXG4gKlxuICogMi4gaW5jcmVtZW50YWxcbiAqIHwgICAgfC0+XG4gKiBTYW1lIGFzIGZyZWUsIGN1cnJlbnQgdGltZSBpcyBhIGdyb3dpbmcgcmFuZ2UsIG9ubHkgdGhlIG1heCB2YWx1ZSBvZiByYW5nZSBpbmNyZW1lbnQgZHVyaW5nIGFuaW1hdGlvbi5cbiAqIFRoZSBpbmNyZW1lbnQgaXMgYWxzbyBiYXNlZCBvbiBkb21haW4gLyBCQVNFX1NQRUVEICogU1BFRURcbiAqXG4gKiAzLiBwb2ludFxuICogbyAtPiBvXG4gKiBDdXJyZW50IHRpbWUgaXMgYSBwb2ludCwgYW5pbWF0aW9uIGNvbnRyb2xsZXIgY2FsbHMgbmV4dCBhbmltYXRpb24gZnJhbWUgY29udGludW91c2x5IHRvIGFuaW1hdGlvbiBhIG1vdmluZyBwb2ludFxuICogVGhlIGluY3JlbWVudCBpcyBiYXNlZCBvbiBkb21haW4gLyBCQVNFX1NQRUVEICogU1BFRURcbiAqXG4gKiA0LiBpbnRlcnZhbFxuICogbyB+PiBvXG4gKiBDdXJyZW50IHRpbWUgaXMgYSBwb2ludC4gQW4gYXJyYXkgb2Ygc29ydGVkIHRpbWUgc3RlcHMgbmVlZCB0byBiZSBwcm92aWRlZC5cbiAqIGFuaW1hdGlvbiBjb250cm9sbGVyIGNhbGxzIG5leHQgYW5pbWF0aW9uIGF0IGEgaW50ZXJ2YWwgd2hlbiB0aGUgcG9pbnQganVtcHMgdG8gdGhlIG5leHQgc3RlcFxuICovXG5leHBvcnQgY29uc3QgQU5JTUFUSU9OX1dJTkRPVyA9IGtleU1pcnJvcih7XG4gIGZyZWU6IG51bGwsXG4gIGluY3JlbWVudGFsOiBudWxsLFxuICBwb2ludDogbnVsbCxcbiAgaW50ZXJ2YWw6IG51bGxcbn0pO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVElNRV9GT1JNQVQgPSAnTU0vREQvWVkgSEg6bW06c3NhJztcbmV4cG9ydCBjb25zdCBTUEVFRF9DT05UUk9MX1JBTkdFOiBbbnVtYmVyLCBudW1iZXJdID0gWzAsIDEwXTtcbmV4cG9ydCBjb25zdCBTUEVFRF9DT05UUk9MX1NURVAgPSAwLjAwMTtcblxuLy8gR2VvY29kZXJcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9EQVRBU0VUX05BTUUgPSAnZ2VvY29kZXJfZGF0YXNldCc7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfTEFZRVJfSUQgPSAnZ2VvY29kZXJfbGF5ZXInO1xuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0dFT19PRkZTRVQgPSAwLjA1O1xuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0lDT05fQ09MT1I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFsyNTUsIDAsIDBdO1xuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0lDT05fU0laRSA9IDgwO1xuXG4vLyBFZGl0b3JcbmV4cG9ydCBjb25zdCBFRElUT1JfTEFZRVJfSUQgPSAna2VwbGVyX2VkaXRvcl9sYXllcic7XG5leHBvcnQgY29uc3QgRURJVE9SX0xBWUVSX1BJQ0tJTkdfUkFESVVTID0gNjtcbmV4cG9ydCBjb25zdCBFRElUT1JfTU9ERVMgPSB7XG4gIERSQVdfUE9MWUdPTjogJ0RSQVdfUE9MWUdPTicsXG4gIERSQVdfUkVDVEFOR0xFOiAnRFJBV19SRUNUQU5HTEUnLFxuICBFRElUOiAnRURJVF9WRVJURVgnXG59O1xuXG5leHBvcnQgY29uc3QgUExPVF9UWVBFUyA9IGtleU1pcnJvcih7XG4gIGhpc3RvZ3JhbTogbnVsbCxcbiAgbGluZUNoYXJ0OiBudWxsXG59KTtcblxuLy8gRmlsdGVyXG5leHBvcnQgY29uc3QgSU5JVF9GSUxURVJfSVRFTVNfSU5fRFJPUERPV04gPSAxMDA7XG5cbi8vIEdQVSBGaWx0ZXJpbmdcbi8qKlxuICogTWF4IG51bWJlciBvZiBmaWx0ZXIgdmFsdWUgYnVmZmVycyB0aGF0IGRlY2suZ2wgcHJvdmlkZXNcbiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9HUFVfRklMVEVSUyA9IDQ7XG5leHBvcnQgY29uc3QgTUFQX1RIVU1CTkFJTF9ESU1FTlNJT04gPSB7XG4gIHdpZHRoOiAzMDAsXG4gIGhlaWdodDogMjAwXG59O1xuXG5leHBvcnQgY29uc3QgTUFQX0lORk9fQ0hBUkFDVEVSID0ge1xuICB0aXRsZTogMTAwLFxuICBkZXNjcmlwdGlvbjogMTAwXG59O1xuXG4vLyBMb2FkIGRhdGFcbmV4cG9ydCBjb25zdCBMT0FESU5HX01FVEhPRFMgPSBrZXlNaXJyb3Ioe1xuICB1cGxvYWQ6IG51bGwsXG4gIHN0b3JhZ2U6IG51bGwsXG4gIHRpbGVzZXQ6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9GRUFUVVJFX0ZMQUdTID0ge307XG5cbmV4cG9ydCBjb25zdCBEQVRBU0VUX0ZPUk1BVFMgPSBrZXlNaXJyb3Ioe1xuICByb3c6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGNzdjogbnVsbCxcbiAga2VwbGVyZ2w6IG51bGwsXG4gIGFycm93OiBudWxsLFxuICBkdWNrZGI6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTUFQX0NPTlRST0xTID0ga2V5TWlycm9yKHtcbiAgdmlzaWJsZUxheWVyczogbnVsbCxcbiAgbWFwTGVnZW5kOiBudWxsLFxuICB0b2dnbGUzZDogbnVsbCxcbiAgc3BsaXRNYXA6IG51bGwsXG4gIG1hcERyYXc6IG51bGwsXG4gIG1hcExvY2FsZTogbnVsbCxcbiAgZWZmZWN0OiBudWxsLFxuICBhaUFzc2lzdGFudDogbnVsbFxufSk7XG5cbi8qKlxuICogQSBtdWx0aXBsaWVyIGZvciBzY3JlZW4tc3BhY2Ugd2lkdGgvc2NhbGUgZm9yIEFyYywgTGluZSwgSWNvbiBhbmQgVGV4dCBsYXllcnMuXG4gKiBSZXF1aXJlZCBpbiBvcmRlciB0byBtYWludGFpbiB0aGUgc2FtZSBhcHBlYXJhbmNlIGFmdGVyIHVwZ3JhZGluZyB0byBkZWNrLmdsIHY4LjUuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdmlzZ2wvZGVjay5nbC9ibG9iL21hc3Rlci9kb2NzL3VwZ3JhZGUtZ3VpZGUubWRcbiAqL1xuZXhwb3J0IGNvbnN0IFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIgPSAyIC8gMztcblxuLyoqXG4gKiBNYXhpbXVtIHZhbHVlIGZvciB0ZXh0IG91dGxpbmUgd2lkdGhcbiAqL1xuZXhwb3J0IGNvbnN0IFRFWFRfT1VUTElORV9NVUxUSVBMSUVSID0gNTtcblxuZXhwb3J0IGNvbnN0IGRhdGFUZXN0SWRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBpbmZvSWNvbjogJ2luZm8taWNvbicsXG4gIHdhcm5pbmdJY29uOiAnd2FybmluZy1pY29uJyxcbiAgZXJyb3JJY29uOiAnZXJyb3ItaWNvbicsXG4gIHN1Y2Nlc3NJY29uOiAnc3VjY2Vzcy1pY29uJyxcbiAgY2hlY2ttYXJrSWNvbjogJ2NoZWNrbWFyay1pY29uJyxcbiAgc29ydGFibGVMYXllckl0ZW06ICdzb3J0YWJsZS1sYXllci1pdGVtJyxcbiAgc3RhdGljTGF5ZXJJdGVtOiAnc3RhdGljLWxheWVyLWl0ZW0nLFxuICBsYXllclRpdGxlRWRpdG9yOiAnbGF5ZXJfX3RpdGxlX19lZGl0b3InLFxuICByZW1vdmVMYXllckFjdGlvbjogJ3JlbW92ZS1sYXllci1hY3Rpb24nLFxuICBsYXllclBhbmVsOiAnbGF5ZXItcGFuZWwnLFxuICBzb3J0YWJsZUVmZmVjdEl0ZW06ICdzb3J0YWJsZS1lZmZlY3QtaXRlbScsXG4gIHN0YXRpY0VmZmVjdEl0ZW06ICdzdGF0aWMtZWZmZWN0LWl0ZW0nLFxuICBwcm92aWRlckxvYWRpbmc6ICdwcm92aWRlci1sb2FkaW5nJyxcbiAgcHJvdmlkZXJNYXBJbmZvUGFuZWw6ICdwcm92aWRlci1tYXAtaW5mby1wYW5lbCcsXG4gIHByb3ZpZGVyU2VsZWN0OiAncHJvdmlkZXItc2VsZWN0JyxcbiAgY2xvdWRIZWFkZXI6ICdjbG91ZC1oZWFkZXInLFxuICBwcm92aWRlclNoYXJlTWFwOiAncHJvdmlkZXItc2hhcmUtbWFwJ1xufTtcblxuLy8gRWZmZWN0c1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVElNRVpPTkUgPSAnVVRDJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPU1RfUFJPQ0VTU0lOR19FRkZFQ1RfVFlQRSA9ICdpbmsnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MSUdIVF9DT0xPUjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzI1NSwgMjU1LCAyNTVdO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElHSFRfSU5URU5TSVRZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NIQURPV19JTlRFTlNJVFkgPSAwLjU7XG5leHBvcnQgY29uc3QgREVGQVVMVF9TSEFET1dfQ09MT1I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFswLCAwLCAwXTtcblxuZXhwb3J0IGNvbnN0IExJR0hUX0FORF9TSEFET1dfRUZGRUNUX1RJTUVfTU9ERVMgPSB7XG4gIHBpY2s6ICdwaWNrJyBhcyBjb25zdCxcbiAgY3VycmVudDogJ2N1cnJlbnQnIGFzIGNvbnN0LFxuICBhbmltYXRpb246ICdhbmltYXRpb24nIGFzIGNvbnN0XG59O1xuZXhwb3J0IHR5cGUgTGlnaHRBbmRTaGFkb3dFZmZlY3RUaW1lTW9kZSA9ICdwaWNrJyB8ICdjdXJyZW50JyB8ICdhbmltYXRpb24nO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElHSFRfQU5EX1NIQURPV19QUk9QUzoge1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgdGltZU1vZGU6IExpZ2h0QW5kU2hhZG93RWZmZWN0VGltZU1vZGU7XG4gIHNoYWRvd0ludGVuc2l0eTogbnVtYmVyO1xuICBzaGFkb3dDb2xvcjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBzdW5MaWdodENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHN1bkxpZ2h0SW50ZW5zaXR5OiBudW1iZXI7XG4gIGFtYmllbnRMaWdodENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIGFtYmllbnRMaWdodEludGVuc2l0eTogbnVtYmVyO1xufSA9IHtcbiAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICB0aW1lTW9kZTogTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUy5waWNrIGFzIExpZ2h0QW5kU2hhZG93RWZmZWN0VGltZU1vZGUsXG4gIHNoYWRvd0ludGVuc2l0eTogREVGQVVMVF9TSEFET1dfSU5URU5TSVRZLFxuICBzaGFkb3dDb2xvcjogWy4uLkRFRkFVTFRfU0hBRE9XX0NPTE9SXSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIHN1bkxpZ2h0Q29sb3I6IFsuLi5ERUZBVUxUX0xJR0hUX0NPTE9SXSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIHN1bkxpZ2h0SW50ZW5zaXR5OiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWSxcbiAgYW1iaWVudExpZ2h0Q29sb3I6IFsuLi5ERUZBVUxUX0xJR0hUX0NPTE9SXSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIGFtYmllbnRMaWdodEludGVuc2l0eTogREVGQVVMVF9MSUdIVF9JTlRFTlNJVFlcbn07XG5cbmV4cG9ydCBjb25zdCBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVDogRWZmZWN0RGVzY3JpcHRpb24gPSB7XG4gIHR5cGU6ICdsaWdodEFuZFNoYWRvdycsXG4gIG5hbWU6ICdMaWdodCAmIFNoYWRvdycsXG4gIHBhcmFtZXRlcnM6IFtcbiAgICB7bmFtZTogJ3RpbWVzdGFtcCcsIG1pbjogMCwgbWF4OiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUn0sXG4gICAge25hbWU6ICdzaGFkb3dJbnRlbnNpdHknLCBtaW46IDAsIG1heDogMSwgZGVmYXVsdFZhbHVlOiBERUZBVUxUX1NIQURPV19JTlRFTlNJVFl9LFxuICAgIHtuYW1lOiAnc3VuTGlnaHRJbnRlbnNpdHknLCBtaW46IDAsIG1heDogMSwgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWX0sXG4gICAge25hbWU6ICdhbWJpZW50TGlnaHRJbnRlbnNpdHknLCBtaW46IDAsIG1heDogMSwgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWX0sXG4gICAge25hbWU6ICdzaGFkb3dDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9TSEFET1dfQ09MT1J9LFxuICAgIHtuYW1lOiAnc3VuTGlnaHRDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9MSUdIVF9DT0xPUn0sXG4gICAge25hbWU6ICdhbWJpZW50TGlnaHRDb2xvcicsIHR5cGU6ICdjb2xvcicsIG1pbjogMCwgbWF4OiAyNTUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9MSUdIVF9DT0xPUn1cbiAgXVxufTtcblxuZXhwb3J0IGNvbnN0IERJU1RBTkNFX0ZPR19UWVBFID0gJ2Rpc3RhbmNlRm9nJztcbmV4cG9ydCBjb25zdCBTVVJGQUNFX0ZPR19UWVBFID0gJ3N1cmZhY2VGb2cnO1xuXG5leHBvcnQgY29uc3QgUE9TVFBST0NFU1NJTkdfRUZGRUNUUzoge1trZXk6IHN0cmluZ106IEVmZmVjdERlc2NyaXB0aW9ufSA9IHtcbiAgaW5rOiB7XG4gICAgdHlwZTogJ2luaycsXG4gICAgbmFtZTogJ0luaycsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAnc3RyZW5ndGgnLCBtaW46IDAsIG1heDogMX1dXG4gIH0sXG4gIGJyaWdodG5lc3NDb250cmFzdDoge1xuICAgIHR5cGU6ICdicmlnaHRuZXNzQ29udHJhc3QnLFxuICAgIG5hbWU6ICdCcmlnaHRuZXNzICYgQ29udHJhc3QnLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtuYW1lOiAnYnJpZ2h0bmVzcycsIG1pbjogLTEsIG1heDogMX0sXG4gICAgICB7bmFtZTogJ2NvbnRyYXN0JywgbWluOiAtMSwgbWF4OiAxfVxuICAgIF1cbiAgfSxcbiAgaHVlU2F0dXJhdGlvbjoge1xuICAgIHR5cGU6ICdodWVTYXR1cmF0aW9uJyxcbiAgICBuYW1lOiAnSHVlICYgU2F0dXJhdGlvbicsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge25hbWU6ICdodWUnLCBtaW46IC0xLCBtYXg6IDF9LFxuICAgICAge25hbWU6ICdzYXR1cmF0aW9uJywgZGVmYXVsdFZhbHVlOiAwLjI1LCBtaW46IC0xLCBtYXg6IDF9XG4gICAgXVxuICB9LFxuICB2aWJyYW5jZToge1xuICAgIHR5cGU6ICd2aWJyYW5jZScsXG4gICAgbmFtZTogJ1ZpYnJhbmNlJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdhbW91bnQnLCBkZWZhdWx0VmFsdWU6IDAuNSwgbWluOiAtMSwgbWF4OiAxfV1cbiAgfSxcbiAgc2VwaWE6IHtcbiAgICB0eXBlOiAnc2VwaWEnLFxuICAgIG5hbWU6ICdTZXBpYScsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAnYW1vdW50JywgbWluOiAwLCBtYXg6IDF9XVxuICB9LFxuICBkb3RTY3JlZW46IHtcbiAgICB0eXBlOiAnZG90U2NyZWVuJyxcbiAgICBuYW1lOiAnRG90IFNjcmVlbicsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnYW5nbGUnLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogTWF0aC5QSSAvIDJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaXplJyxcbiAgICAgICAgbWluOiAxLFxuICAgICAgICBtYXg6IDIwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY2VudGVyJyxcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgbGFiZWw6IFsnQ2VudGVyIFgnLCAnQ2VudGVyIFknXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMC41LCAwLjVdLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfVxuICAgIF1cbiAgfSxcbiAgY29sb3JIYWxmdG9uZToge1xuICAgIHR5cGU6ICdjb2xvckhhbGZ0b25lJyxcbiAgICBuYW1lOiAnQ29sb3IgSGFsZnRvbmUnLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2FuZ2xlJyxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IE1hdGguUEkgLyAyXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2l6ZScsXG4gICAgICAgIG1pbjogMSxcbiAgICAgICAgbWF4OiAyMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NlbnRlcicsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ0NlbnRlciBYJywgJ0NlbnRlciBZJ10sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogWzAuNSwgMC41XSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDFcbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIG5vaXNlOiB7XG4gICAgdHlwZTogJ25vaXNlJyxcbiAgICBuYW1lOiAnTm9pc2UnLFxuICAgIHBhcmFtZXRlcnM6IFt7bmFtZTogJ2Ftb3VudCcsIG1pbjogMCwgbWF4OiAxfV1cbiAgfSxcbiAgdHJpYW5nbGVCbHVyOiB7XG4gICAgdHlwZTogJ3RyaWFuZ2xlQmx1cicsXG4gICAgbmFtZTogJ0JsdXIgKFRyaWFuZ2xlKScsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAncmFkaXVzJywgbWluOiAwLCBtYXg6IDEwMH1dXG4gIH0sXG4gIHpvb21CbHVyOiB7XG4gICAgdHlwZTogJ3pvb21CbHVyJyxcbiAgICBuYW1lOiAnQmx1ciAoWm9vbSknLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3N0cmVuZ3RoJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAwLjA1LFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NlbnRlcicsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ0NlbnRlciBYJywgJ0NlbnRlciBZJ10sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogWzAuNSwgMC41XSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDFcbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIHRpbHRTaGlmdDoge1xuICAgIHR5cGU6ICd0aWx0U2hpZnQnLFxuICAgIG5hbWU6ICdCbHVyIChUaWx0IFNoaWZ0KScsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnYmx1clJhZGl1cycsXG4gICAgICAgIGxhYmVsOiAnQmx1cicsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiA1MFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2dyYWRpZW50UmFkaXVzJyxcbiAgICAgICAgbGFiZWw6ICdHcmFkaWVudCcsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiA0MDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzdGFydCcsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ1N0YXJ0JywgZmFsc2VdLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFswLjAsIDAuMF0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnZW5kJyxcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgbGFiZWw6IFsnRW5kJywgZmFsc2VdLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFsxLCAxXSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDFcbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIGVkZ2VXb3JrOiB7XG4gICAgdHlwZTogJ2VkZ2VXb3JrJyxcbiAgICBuYW1lOiAnRWRnZSB3b3JrJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdyYWRpdXMnLCBtaW46IDEsIG1heDogNTB9XVxuICB9LFxuICB2aWduZXR0ZToge1xuICAgIHR5cGU6ICd2aWduZXR0ZScsXG4gICAgbmFtZTogJ1ZpZ25ldHRlJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7bmFtZTogJ2Ftb3VudCcsIG1pbjogMCwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAncmFkaXVzJywgbWluOiAwLCBtYXg6IDF9XG4gICAgXVxuICB9LFxuICBtYWduaWZ5OiB7XG4gICAgdHlwZTogJ21hZ25pZnknLFxuICAgIG5hbWU6ICdNYWduaWZ5JyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzY3JlZW5YWScsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ1Bvc2l0aW9uIFgnLCAnUG9zaXRpb24gWSddLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFswLjUsIDAuNV0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAncmFkaXVzUGl4ZWxzJyxcbiAgICAgICAgbGFiZWw6ICdTaXplJyxcbiAgICAgICAgbWluOiAxMCxcbiAgICAgICAgbWF4OiA1MDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICd6b29tJyxcbiAgICAgICAgbWluOiAwLjUsXG4gICAgICAgIG1heDogNTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdib3JkZXJXaWR0aFBpeGVscycsXG4gICAgICAgIGxhYmVsOiAnQm9yZGVyIFdpZHRoJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAzLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogNTBcbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIGhleGFnb25hbFBpeGVsYXRlOiB7XG4gICAgdHlwZTogJ2hleGFnb25hbFBpeGVsYXRlJyxcbiAgICBuYW1lOiAnSGV4YWdvbmFsIFBpeGVsYXRlJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdzY2FsZScsIGRlZmF1bHRWYWx1ZTogMjAsIG1pbjogMSwgbWF4OiA1MH1dXG4gIH0sXG4gIGRpc3RhbmNlRm9nOiB7XG4gICAgdHlwZTogRElTVEFOQ0VfRk9HX1RZUEUsXG4gICAgbmFtZTogJ0Rpc3RhbmNlIEZvZycsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge25hbWU6ICdkZW5zaXR5JywgZGVmYXVsdFZhbHVlOiAwLjUsIG1pbjogMCwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnZm9nU3RhcnQnLCBsYWJlbDogJ1N0YXJ0JywgZGVmYXVsdFZhbHVlOiAwLjMsIG1pbjogMCwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnZm9nUmFuZ2UnLCBsYWJlbDogJ1JhbmdlJywgZGVmYXVsdFZhbHVlOiAwLjUsIG1pbjogMC4wMSwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnZm9nQ29sb3InLCB0eXBlOiAnY29sb3InLCBtaW46IDAsIG1heDogMjU1LCBkZWZhdWx0VmFsdWU6IFsyMTcsIDIyMiwgMjMwXX1cbiAgICBdXG4gIH0sXG4gIHN1cmZhY2VGb2c6IHtcbiAgICB0eXBlOiBTVVJGQUNFX0ZPR19UWVBFLFxuICAgIG5hbWU6ICdTdXJmYWNlIEZvZycsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge25hbWU6ICdkZW5zaXR5JywgZGVmYXVsdFZhbHVlOiAwLjYsIG1pbjogMCwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnaGVpZ2h0JywgbGFiZWw6ICdFbGV2YXRpb24gKG0pJywgZGVmYXVsdFZhbHVlOiAxMDAsIG1pbjogLTIwMCwgbWF4OiAzMDAwfSxcbiAgICAgIHtuYW1lOiAndGhpY2tuZXNzJywgbGFiZWw6ICdUcmFuc2l0aW9uIChtKScsIGRlZmF1bHRWYWx1ZTogMjAwLCBtaW46IDAsIG1heDogMTAwMH0sXG4gICAgICB7bmFtZTogJ2ZvZ0NvbG9yJywgdHlwZTogJ2NvbG9yJywgbWluOiAwLCBtYXg6IDI1NSwgZGVmYXVsdFZhbHVlOiBbMjMwLCAyMzUsIDI0Ml19XG4gICAgXVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRUZGRUNUX0RFU0NSSVBUSU9OUzogRWZmZWN0RGVzY3JpcHRpb25bXSA9IFtcbiAgTElHSFRfQU5EX1NIQURPV19FRkZFQ1QsXG4gIC4uLk9iamVjdC5rZXlzKFBPU1RQUk9DRVNTSU5HX0VGRkVDVFMpLm1hcChrZXlOYW1lID0+IFBPU1RQUk9DRVNTSU5HX0VGRkVDVFNba2V5TmFtZV0pXG5dO1xuXG5leHBvcnQgdHlwZSBFZmZlY3RUeXBlID1cbiAgfCAnaW5rJ1xuICB8ICdicmlnaHRuZXNzQ29udHJhc3QnXG4gIHwgJ2h1ZVNhdHVyYXRpb24nXG4gIHwgJ3ZpYnJhbmNlJ1xuICB8ICdzZXBpYSdcbiAgfCAnZG90U2NyZWVuJ1xuICB8ICdjb2xvckhhbGZ0b25lJ1xuICB8ICdub2lzZSdcbiAgfCAndHJpYW5nbGVCbHVyJ1xuICB8ICd6b29tQmx1cidcbiAgfCAndGlsdFNoaWZ0J1xuICB8ICdlZGdlV29yaydcbiAgfCAndmlnbmV0dGUnXG4gIHwgJ21hZ25pZnknXG4gIHwgJ2hleGFnb25hbFBpeGVsYXRlJ1xuICB8ICdkaXN0YW5jZUZvZydcbiAgfCAnc3VyZmFjZUZvZydcbiAgfCAnbGlnaHRBbmRTaGFkb3cnO1xuXG5leHBvcnQgY29uc3QgU1lOQ19USU1FTElORV9NT0RFUzogUmVjb3JkPHN0cmluZywgU3luY1RpbWVsaW5lTW9kZT4gPSB7XG4gIHN0YXJ0OiAwLFxuICBlbmQ6IDFcbn07XG5cbmV4cG9ydCBjb25zdCBHRU9BUlJPV19NRVRBREFUQV9LRVkgPSAnQVJST1c6ZXh0ZW5zaW9uOm5hbWUnO1xuXG4vKipcbiAqIEVudW0gaG9sZGluZyBHZW9BcnJvdyBleHRlbnNpb24gdHlwZSBuYW1lc1xuICovXG5leHBvcnQgZW51bSBHRU9BUlJPV19FWFRFTlNJT05TIHtcbiAgUE9JTlQgPSAnZ2VvYXJyb3cucG9pbnQnLFxuICBMSU5FU1RSSU5HID0gJ2dlb2Fycm93LmxpbmVzdHJpbmcnLFxuICBQT0xZR09OID0gJ2dlb2Fycm93LnBvbHlnb24nLFxuICBNVUxUSVBPSU5UID0gJ2dlb2Fycm93Lm11bHRpcG9pbnQnLFxuICBNVUxUSUxJTkVTVFJJTkcgPSAnZ2VvYXJyb3cubXVsdGlsaW5lc3RyaW5nJyxcbiAgTVVMVElQT0xZR09OID0gJ2dlb2Fycm93Lm11bHRpcG9seWdvbicsXG4gIFdLQiA9ICdnZW9hcnJvdy53a2InXG59XG5cbmV4cG9ydCBjb25zdCBMT0FERVJTX0NETl9WRVJTSU9OID0gJzQuMy4yJztcbmV4cG9ydCBjb25zdCBMT0FERVJTX0NETl9VUkwgPSAnaHR0cHM6Ly91bnBrZy5jb20vQGxvYWRlcnMuZ2wnO1xuXG5leHBvcnQgY29uc3QgZ2V0TG9hZGVyT3B0aW9ucyA9ICgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBtdnQ6IHtcbiAgICAgIHdvcmtlclVybDogYCR7TE9BREVSU19DRE5fVVJMfS9tdnRAJHtMT0FERVJTX0NETl9WRVJTSU9OfS9kaXN0L212dC13b3JrZXIuanNgXG4gICAgfSxcbiAgICAncXVhbnRpemVkLW1lc2gnOiB7XG4gICAgICB3b3JrZXJVcmw6IGAke0xPQURFUlNfQ0ROX1VSTH0vdGVycmFpbkAke0xPQURFUlNfQ0ROX1ZFUlNJT059L2Rpc3QvcXVhbnRpemVkLW1lc2gtd29ya2VyLmpzYFxuICAgIH0sXG4gICAgbnB5OiB7XG4gICAgICB3b3JrZXJVcmw6IGAke0xPQURFUlNfQ0ROX1VSTH0vdGV4dHVyZXNAJHtMT0FERVJTX0NETl9WRVJTSU9OfS9kaXN0L25weS13b3JrZXIuanNgXG4gICAgfVxuICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQVVBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQVVBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUErQyxJQUFBRyxtQkFBQSxFQUFBQyxXQUFBLEVBdkIvQztBQUNBO0FBQUEsU0FBQUMsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENB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