@kepler.gl/constants 3.3.0-alpha.5 → 3.3.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/cjs/annotation.js +45 -0
  2. package/dist/cjs/color-palettes.js +461 -0
  3. package/dist/cjs/colors-by-theme.js +519 -0
  4. package/dist/cjs/dataset.js +82 -0
  5. package/dist/cjs/default-settings.js +1729 -0
  6. package/dist/cjs/gpu-parameters.js +125 -0
  7. package/dist/cjs/index.js +149 -0
  8. package/dist/cjs/keyevent.js +26 -0
  9. package/dist/cjs/layers.js +605 -0
  10. package/dist/{plot.js → cjs/plot.js} +1 -1
  11. package/dist/cjs/time.js +194 -0
  12. package/dist/cjs/tooltip.js +221 -0
  13. package/dist/cjs/user-feedbacks.js +15 -0
  14. package/dist/cjs/user-guides.js +19 -0
  15. package/dist/esm/annotation.js +38 -0
  16. package/dist/esm/color-palettes.js +453 -0
  17. package/dist/esm/colors-by-theme.js +513 -0
  18. package/dist/esm/dataset.js +80 -0
  19. package/dist/esm/default-settings.js +1723 -0
  20. package/dist/esm/gpu-parameters.js +119 -0
  21. package/dist/esm/index.js +18 -0
  22. package/dist/esm/keyevent.js +19 -0
  23. package/dist/esm/layers.js +598 -0
  24. package/dist/esm/plot.js +9 -0
  25. package/dist/esm/time.js +190 -0
  26. package/dist/esm/tooltip.js +215 -0
  27. package/dist/esm/user-feedbacks.js +9 -0
  28. package/dist/esm/user-guides.js +13 -0
  29. package/package.json +14 -5
  30. package/dist/annotation.js +0 -45
  31. package/dist/color-palettes.js +0 -461
  32. package/dist/colors-by-theme.js +0 -519
  33. package/dist/dataset.js +0 -82
  34. package/dist/default-settings.js +0 -1729
  35. package/dist/gpu-parameters.js +0 -125
  36. package/dist/index.js +0 -149
  37. package/dist/keyevent.js +0 -26
  38. package/dist/layers.js +0 -605
  39. package/dist/time.js +0 -194
  40. package/dist/tooltip.js +0 -221
  41. package/dist/user-feedbacks.js +0 -15
  42. package/dist/user-guides.js +0 -19
@@ -1,1729 +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.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.GLOBE_SUPPORTED_LAYERS = exports.GLOBE_MIN_ZOOM = exports.GLOBE_MAX_ZOOM = exports.GLOBE_MAX_LATITUDE = 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_VIDEO_ID = 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_GLOBE_CONFIG = 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.CUSTOM_SCENEGRAPH_MODEL_ID = 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_LAYER_SCENEGRAPH_MODELS = 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.MapViewMode = exports.MapSplitMode = exports.MAX_GPU_FILTERS = exports.MAX_DEFAULT_TOOLTIPS = exports.MAP_THUMBNAIL_DIMENSION = exports.MAP_LIB_OPTIONS = exports.MAP_INFO_CHARACTER = exports.MAP_CONTROLS = exports.MAPBOX_MAX_PITCH = exports.LOADING_METHODS = exports.LOADERS_CDN_VERSION = exports.LOADERS_CDN_URL = exports.LIGHT_AND_SHADOW_EFFECT_TIME_MODES = 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: export video modal
79
- * @constant
80
- * @type {string}
81
- * @public
82
- */
83
- var EXPORT_VIDEO_ID = exports.EXPORT_VIDEO_ID = 'exportVideo';
84
- /**
85
- * Modal id: save map modal
86
- * @constant
87
- * @type {string}
88
- * @public
89
- */
90
- var SAVE_MAP_ID = exports.SAVE_MAP_ID = 'saveMap';
91
- /**
92
- * Modal id: confirm to overwrite saved map
93
- * @constant
94
- * @type {string}
95
- * @public
96
- */
97
- var OVERWRITE_MAP_ID = exports.OVERWRITE_MAP_ID = 'overwriteMap';
98
- /**
99
- * Modal id: share map url modal
100
- * @constant
101
- * @type {string}
102
- * @public
103
- */
104
- var SHARE_MAP_ID = exports.SHARE_MAP_ID = 'shareMap';
105
- var KEPLER_GL_NAME = exports.KEPLER_GL_NAME = 'kepler.gl';
106
-
107
- // __PACKAGE_VERSION__ is automatically injected by Babel/Esbuild during the build process
108
- // Since we are injecting this during the build process with babel
109
- // while developing VERSION is not defined, we capture the exception and return
110
- // an empty string which will allow us to retrieve the latest umd version
111
- var KEPLER_GL_VERSION = exports.KEPLER_GL_VERSION = "3.3.0-alpha.5";
112
- var KEPLER_GL_WEBSITE = exports.KEPLER_GL_WEBSITE = 'http://kepler.gl/';
113
- var DIMENSIONS = exports.DIMENSIONS = {
114
- sidePanel: {
115
- width: 300,
116
- margin: {
117
- top: 12,
118
- left: 12,
119
- bottom: 12,
120
- right: 20
121
- },
122
- headerHeight: 96
123
- },
124
- mapControl: {
125
- width: 184,
126
- padding: 12,
127
- mapLegend: {
128
- pinned: {
129
- bottom: 22,
130
- right: 12
131
- }
132
- }
133
- }
134
- };
135
-
136
- /**
137
- * Theme name that can be passed to `KeplerGl` `prop.theme`.
138
- * Available themes are `THEME.light` and `THEME.dark`. Default theme is `THEME.dark`
139
- * @constant
140
- * @type {object}
141
- * @public
142
- * @example
143
- * ```js
144
- * const Map = () => <KeplerGl theme={THEME.light} id="map"/>
145
- * ```
146
- */
147
- var THEME = exports.THEME = (0, _keymirror["default"])({
148
- light: null,
149
- dark: null,
150
- base: null
151
- });
152
- var SIDEBAR_PANELS = exports.SIDEBAR_PANELS = [{
153
- id: 'layer',
154
- label: 'sidebar.panels.layer',
155
- onClick: null
156
- }, {
157
- id: 'filter',
158
- label: 'sidebar.panels.filter',
159
- onClick: null
160
- }, {
161
- id: 'interaction',
162
- label: 'sidebar.panels.interaction',
163
- onClick: null
164
- }, {
165
- id: 'map',
166
- label: 'sidebar.panels.basemap',
167
- onClick: null
168
- }];
169
- var PANEL_VIEW_TOGGLES = exports.PANEL_VIEW_TOGGLES = (0, _keymirror["default"])({
170
- list: null,
171
- byDataset: null
172
- });
173
-
174
- // backward compatibility
175
- var PANELS = exports.PANELS = SIDEBAR_PANELS;
176
-
177
- // MAP STYLES
178
-
179
- var DEFAULT_BLDG_COLOR = exports.DEFAULT_BLDG_COLOR = '#D1CEC7';
180
- var DEFAULT_BACKGROUND_COLOR = exports.DEFAULT_BACKGROUND_COLOR = '#000000';
181
-
182
- // assists in identifying basemap background layers when auto-determining the backgroundColor
183
- var BASE_MAP_BACKGROUND_LAYER_IDS = exports.BASE_MAP_BACKGROUND_LAYER_IDS = ['background', 'bg', 'land', 'water'];
184
- var BACKGROUND_LAYER_GROUP_SLUG = exports.BACKGROUND_LAYER_GROUP_SLUG = 'Background';
185
- var THREE_D_BUILDING_LAYER_GROUP_SLUG = exports.THREE_D_BUILDING_LAYER_GROUP_SLUG = '3d building';
186
- var BACKGROUND_LAYER_GROUP = exports.BACKGROUND_LAYER_GROUP = {
187
- slug: BACKGROUND_LAYER_GROUP_SLUG,
188
- filter: function filter() {
189
- return false;
190
- },
191
- defaultVisibility: false,
192
- isVisibilityToggleAvailable: false,
193
- isMoveToTopAvailable: false,
194
- isColorPickerAvailable: true
195
- };
196
- var DEFAULT_LAYER_GROUPS = exports.DEFAULT_LAYER_GROUPS = [{
197
- slug: 'label',
198
- filter: function filter(_ref) {
199
- var id = _ref.id,
200
- type = _ref.type;
201
- return id.match(/(?=(label|place-|poi-))/) || (type === null || type === void 0 ? void 0 : type.match(/(?=(symbol))/));
202
- },
203
- defaultVisibility: true,
204
- isVisibilityToggleAvailable: true,
205
- isMoveToTopAvailable: true,
206
- isColorPickerAvailable: false
207
- }, {
208
- slug: 'road',
209
- filter: function filter(_ref2) {
210
- var id = _ref2.id;
211
- return id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/);
212
- },
213
- defaultVisibility: true,
214
- isVisibilityToggleAvailable: true,
215
- isMoveToTopAvailable: true,
216
- isColorPickerAvailable: false
217
- }, {
218
- slug: 'border',
219
- filter: function filter(_ref3) {
220
- var id = _ref3.id;
221
- return id.match(/border|boundaries|boundary/);
222
- },
223
- defaultVisibility: false,
224
- isVisibilityToggleAvailable: true,
225
- isMoveToTopAvailable: true,
226
- isColorPickerAvailable: false
227
- }, {
228
- slug: 'building',
229
- filter: function filter(_ref4) {
230
- var id = _ref4.id;
231
- return id.match(/building/);
232
- },
233
- defaultVisibility: true,
234
- isVisibilityToggleAvailable: true,
235
- isMoveToTopAvailable: true,
236
- isColorPickerAvailable: false
237
- }, {
238
- slug: 'water',
239
- filter: function filter(_ref5) {
240
- var id = _ref5.id;
241
- return id.match(/(?=(water|stream|ferry))/);
242
- },
243
- defaultVisibility: true,
244
- isVisibilityToggleAvailable: true,
245
- isMoveToTopAvailable: true,
246
- isColorPickerAvailable: false
247
- }, {
248
- slug: 'land',
249
- filter: function filter(_ref6) {
250
- var id = _ref6.id;
251
- return id.match(/(?=(parks|landcover|industrial|sand|hillshade))/);
252
- },
253
- defaultVisibility: true,
254
- isVisibilityToggleAvailable: true,
255
- isMoveToTopAvailable: true,
256
- isColorPickerAvailable: false
257
- }, {
258
- slug: THREE_D_BUILDING_LAYER_GROUP_SLUG,
259
- filter: function filter() {
260
- return false;
261
- },
262
- defaultVisibility: false,
263
- isVisibilityToggleAvailable: true,
264
- isMoveToTopAvailable: true,
265
- isColorPickerAvailable: true
266
- }];
267
- var BASE_MAP_COLOR_MODES = exports.BASE_MAP_COLOR_MODES = (0, _keymirror["default"])({
268
- NONE: null,
269
- DARK: null,
270
- LIGHT: null
271
- });
272
- var NO_MAP_ID = exports.NO_MAP_ID = 'no_map';
273
-
274
- // Fallback style to use when styles are being fetched, or when
275
- // a style fails to fetch
276
- var EMPTY_MAPBOX_STYLE = exports.EMPTY_MAPBOX_STYLE = {
277
- version: 8,
278
- sources: {},
279
- layers: []
280
- };
281
- var MAP_LIB_OPTIONS = exports.MAP_LIB_OPTIONS = {
282
- MAPBOX: 'mapbox',
283
- MAPLIBRE: 'maplibre'
284
- };
285
-
286
- /** Mapbox GL JS does not support pitch above 60 degrees */
287
- var MAPBOX_MAX_PITCH = exports.MAPBOX_MAX_PITCH = 60;
288
- var NO_BASEMAP_ICON = exports.NO_BASEMAP_ICON = "".concat(BASEMAP_ICON_PREFIX, "/NO_BASEMAP.png");
289
- var DEFAULT_BASE_MAP_STYLE = exports.DEFAULT_BASE_MAP_STYLE = 'dark-matter';
290
- var DEFAULT_NO_BASEMAP_STYLE = exports.DEFAULT_NO_BASEMAP_STYLE = {
291
- id: NO_MAP_ID,
292
- label: 'No Basemap',
293
- url: '',
294
- icon: NO_BASEMAP_ICON,
295
- layerGroups: [BACKGROUND_LAYER_GROUP],
296
- colorMode: BASE_MAP_COLOR_MODES.NONE,
297
- style: EMPTY_MAPBOX_STYLE
298
- };
299
- var DEFAULT_MAPBOX_STYLES = exports.DEFAULT_MAPBOX_STYLES = [{
300
- id: 'dark',
301
- label: 'Dark',
302
- url: 'mapbox://styles/uberdata/cjoqbbf6l9k302sl96tyvka09',
303
- icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_DARK_V2.png"),
304
- layerGroups: DEFAULT_LAYER_GROUPS,
305
- colorMode: BASE_MAP_COLOR_MODES.DARK,
306
- complimentaryStyleId: 'light'
307
- }, {
308
- id: 'light',
309
- label: 'Light',
310
- url: 'mapbox://styles/uberdata/cjoqb9j339k1f2sl9t5ic5bn4',
311
- icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_LIGHT_V2.png"),
312
- layerGroups: DEFAULT_LAYER_GROUPS,
313
- colorMode: BASE_MAP_COLOR_MODES.LIGHT,
314
- complimentaryStyleId: 'dark'
315
- }, {
316
- id: 'muted',
317
- label: 'Muted Light',
318
- url: 'mapbox://styles/uberdata/cjfyl03kp1tul2smf5v2tbdd4',
319
- icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_MUTED_LIGHT.png"),
320
- layerGroups: DEFAULT_LAYER_GROUPS,
321
- colorMode: BASE_MAP_COLOR_MODES.LIGHT,
322
- complimentaryStyleId: 'muted_night'
323
- }, {
324
- id: 'muted_night',
325
- label: 'Muted Night',
326
- url: 'mapbox://styles/uberdata/cjfxhlikmaj1b2soyzevnywgs',
327
- icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_MUTED_NIGHT.png"),
328
- layerGroups: DEFAULT_LAYER_GROUPS,
329
- colorMode: BASE_MAP_COLOR_MODES.DARK,
330
- complimentaryStyleId: 'muted'
331
- }];
332
- var DEFAULT_MAPBOX_SATELITE_STYLES = exports.DEFAULT_MAPBOX_SATELITE_STYLES = [{
333
- id: 'satellite',
334
- label: 'Satellite with streets',
335
- url: "mapbox://styles/mapbox/satellite-streets-v11",
336
- icon: "".concat(BASEMAP_ICON_PREFIX, "/UBER_SATELLITE.png"),
337
- layerGroups: DEFAULT_LAYER_GROUPS,
338
- colorMode: BASE_MAP_COLOR_MODES.NONE
339
- }];
340
- var DEFAULT_MAPLIBRE_STYLES = exports.DEFAULT_MAPLIBRE_STYLES = [{
341
- id: 'dark-matter',
342
- label: 'DarkMatter',
343
- url: 'https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',
344
- icon: "".concat(BASEMAP_ICON_PREFIX, "/DARKMATTER.png"),
345
- layerGroups: DEFAULT_LAYER_GROUPS,
346
- colorMode: BASE_MAP_COLOR_MODES.DARK,
347
- complimentaryStyleId: 'positron'
348
- }, {
349
- id: 'positron',
350
- label: 'Positron',
351
- url: 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',
352
- icon: "".concat(BASEMAP_ICON_PREFIX, "/POSITRON.png"),
353
- layerGroups: DEFAULT_LAYER_GROUPS,
354
- colorMode: BASE_MAP_COLOR_MODES.LIGHT,
355
- complimentaryStyleId: 'dark-matter'
356
- }, {
357
- id: 'voyager',
358
- label: 'Voyager',
359
- url: 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',
360
- icon: "".concat(BASEMAP_ICON_PREFIX, "/VOYAGER.png"),
361
- layerGroups: DEFAULT_LAYER_GROUPS,
362
- colorMode: BASE_MAP_COLOR_MODES.LIGHT,
363
- complimentaryStyleId: 'dark-matter'
364
- }];
365
- var DEFAULT_MAP_STYLES = exports.DEFAULT_MAP_STYLES = [DEFAULT_NO_BASEMAP_STYLE].concat(DEFAULT_MAPLIBRE_STYLES, DEFAULT_MAPBOX_SATELITE_STYLES, DEFAULT_MAPBOX_STYLES);
366
- var GEOJSON_FIELDS = exports.GEOJSON_FIELDS = {
367
- geojson: ['_geojson', 'all_points', 'geojson']
368
- };
369
- var ICON_FIELDS = exports.ICON_FIELDS = {
370
- icon: ['icon']
371
- };
372
- var TRIP_POINT_FIELDS = exports.TRIP_POINT_FIELDS = [['lat', 'lng'], ['lat', 'lon'], ['lat', 'long'], ['latitude', 'longitude']];
373
- var ALTITUDE_FIELDS = exports.ALTITUDE_FIELDS = ['alt', 'altitude'];
374
- var TRIP_ARC_FIELDS = exports.TRIP_ARC_FIELDS = {
375
- lat0: 'begintrip',
376
- lng0: 'begintrip',
377
- lat1: 'dropoff',
378
- lng1: 'dropoff'
379
- };
380
- var FILTER_TYPES = exports.FILTER_TYPES = (0, _keymirror["default"])({
381
- range: null,
382
- select: null,
383
- input: null,
384
- timeRange: null,
385
- multiSelect: null,
386
- polygon: null
387
- });
388
- var FILTER_VIEW_TYPES = exports.FILTER_VIEW_TYPES = (0, _keymirror["default"])({
389
- side: null,
390
- enlarged: null,
391
- minified: null
392
- });
393
- var DEFAULT_FILTER_VIEW_TYPE = exports.DEFAULT_FILTER_VIEW_TYPE = FILTER_VIEW_TYPES.side;
394
- var SCALE_TYPES = exports.SCALE_TYPES = (0, _keymirror["default"])({
395
- ordinal: null,
396
- quantile: null,
397
- quantize: null,
398
- linear: null,
399
- sqrt: null,
400
- log: null,
401
- threshold: null,
402
- custom: null,
403
- customOrdinal: null,
404
- // ordinal domain to linear range
405
- point: null
406
- });
407
- var SCALE_TYPE_NAMES = exports.SCALE_TYPE_NAMES = {
408
- ordinal: 'Ordinal',
409
- quantile: 'Quantile',
410
- quantize: 'Quantize',
411
- linear: 'Linear',
412
- sqrt: 'Sqrt',
413
- log: 'Log',
414
- threshold: 'Threshold',
415
- custom: 'Custom Breaks',
416
- customOrdinal: 'Custom Ordinal',
417
- point: 'Point'
418
- };
419
- 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);
420
- var ALL_FIELD_TYPES = exports.ALL_FIELD_TYPES = (0, _keymirror["default"])({
421
- "boolean": null,
422
- date: null,
423
- geojson: null,
424
- integer: null,
425
- real: null,
426
- string: null,
427
- timestamp: null,
428
- point: null,
429
- array: null,
430
- object: null,
431
- geoarrow: null,
432
- h3: null
433
- });
434
-
435
- // Data Table
436
- var SORT_ORDER = exports.SORT_ORDER = (0, _keymirror["default"])({
437
- ASCENDING: null,
438
- DESCENDING: null,
439
- UNSORT: null
440
- });
441
- var TABLE_OPTION = exports.TABLE_OPTION = (0, _keymirror["default"])({
442
- SORT_ASC: null,
443
- SORT_DES: null,
444
- UNSORT: null,
445
- PIN: null,
446
- UNPIN: null,
447
- COPY: null,
448
- FORMAT_COLUMN: null
449
- });
450
- var TABLE_OPTION_LIST = exports.TABLE_OPTION_LIST = [{
451
- value: TABLE_OPTION.SORT_ASC,
452
- display: 'Sort Ascending',
453
- icon: 'ArrowUp',
454
- condition: function condition(props) {
455
- return props.sortTableColumn && props.sortMode !== SORT_ORDER.ASCENDING;
456
- }
457
- }, {
458
- value: TABLE_OPTION.SORT_DES,
459
- display: 'Sort Descending',
460
- icon: 'ArrowDown',
461
- condition: function condition(props) {
462
- return props.sortTableColumn && props.sortMode !== SORT_ORDER.DESCENDING;
463
- }
464
- }, {
465
- value: TABLE_OPTION.UNSORT,
466
- display: 'Unsort Column',
467
- icon: 'Cancel',
468
- condition: function condition(props) {
469
- return props.isSorted;
470
- }
471
- }, {
472
- value: TABLE_OPTION.PIN,
473
- display: 'Pin Column',
474
- icon: 'Pin',
475
- condition: function condition(props) {
476
- return !props.isPinned;
477
- }
478
- }, {
479
- value: TABLE_OPTION.UNPIN,
480
- display: 'Unpin Column',
481
- icon: 'Cancel',
482
- condition: function condition(props) {
483
- return props.isPinned;
484
- }
485
- }, {
486
- value: TABLE_OPTION.COPY,
487
- display: 'Copy Column',
488
- icon: 'Clipboard'
489
- }, {
490
- value: TABLE_OPTION.FORMAT_COLUMN,
491
- display: 'Format Column',
492
- icon: 'Hash',
493
- condition: function condition(props) {
494
- return props.setDisplayFormat;
495
- }
496
- }];
497
- var YELLOW = '248, 194, 28';
498
- var PINK = '242, 152, 163';
499
- var PURPLE = '160, 106, 206';
500
- var BLUE = '140, 210, 205';
501
- var BLUE2 = '106, 160, 206';
502
- var BLUE3 = '0, 172, 237';
503
- var GREEN = '106, 160, 56';
504
- var GREEN2 = '74, 165, 150';
505
- var RED = '237, 88, 106';
506
- var ORANGE = '231, 110, 58';
507
- 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"], {
508
- label: 'bool',
509
- color: PINK
510
- }), ALL_FIELD_TYPES.date, {
511
- label: 'date',
512
- color: PURPLE
513
- }), ALL_FIELD_TYPES.geojson, {
514
- label: 'geo',
515
- color: BLUE2
516
- }), ALL_FIELD_TYPES.geoarrow, {
517
- label: 'geo',
518
- color: BLUE2
519
- }), ALL_FIELD_TYPES.integer, {
520
- label: 'int',
521
- color: YELLOW
522
- }), ALL_FIELD_TYPES.real, {
523
- label: 'float',
524
- color: YELLOW
525
- }), ALL_FIELD_TYPES.string, {
526
- label: 'string',
527
- color: BLUE
528
- }), ALL_FIELD_TYPES.timestamp, {
529
- label: 'time',
530
- color: GREEN
531
- }), ALL_FIELD_TYPES.point, {
532
- label: 'point',
533
- color: BLUE3
534
- }), ALL_FIELD_TYPES.array, {
535
- label: 'array',
536
- color: ORANGE
537
- }), (0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_TYPE_DISPLAY, ALL_FIELD_TYPES.object, {
538
- label: 'object',
539
- color: GREEN2
540
- }), ALL_FIELD_TYPES.h3, {
541
- label: 'h3',
542
- color: BLUE
543
- }));
544
- var FIELD_COLORS = exports.FIELD_COLORS = {
545
- "default": RED
546
- };
547
- var HIGHLIGH_COLOR_3D = exports.HIGHLIGH_COLOR_3D = [255, 255, 255, 60];
548
- var CHANNEL_SCALES = exports.CHANNEL_SCALES = (0, _keymirror["default"])({
549
- color: null,
550
- radius: null,
551
- size: null,
552
- colorAggr: null,
553
- sizeAggr: null,
554
- angle: null
555
- });
556
- var AGGREGATION_TYPES = exports.AGGREGATION_TYPES = {
557
- // default
558
- count: 'count',
559
- // linear
560
- average: 'average',
561
- maximum: 'maximum',
562
- minimum: 'minimum',
563
- median: 'median',
564
- stdev: 'stdev',
565
- sum: 'sum',
566
- variance: 'variance',
567
- // ordinal
568
- mode: 'mode',
569
- countUnique: 'countUnique'
570
- };
571
- var AGGREGATION_TYPE_OPTIONS = exports.AGGREGATION_TYPE_OPTIONS = Object.entries(AGGREGATION_TYPES).map(function (_ref7) {
572
- var _ref8 = (0, _slicedToArray2["default"])(_ref7, 2),
573
- key = _ref8[0],
574
- value = _ref8[1];
575
- return {
576
- id: key,
577
- label: key === 'stdev' ? 'Std Deviation' : key === 'countUnique' ? 'Count Unique' : typeof value === 'string' ? value.charAt(0).toUpperCase() + value.slice(1) : value
578
- };
579
- });
580
- var linearFieldScaleFunctions = exports.linearFieldScaleFunctions = (0, _defineProperty2["default"])((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]), CHANNEL_SCALES.angle, [SCALE_TYPES.linear]);
581
- var DEFAULT_AGGREGATION_COLOR_SCALES = [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom];
582
- 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) {
583
- prev[cur] = DEFAULT_AGGREGATION_COLOR_SCALES;
584
- return prev;
585
- }, {})), 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]));
586
- 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]);
587
- 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, {});
588
- var notSupportedScaleOpts = exports.notSupportedScaleOpts = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, []), CHANNEL_SCALES.radius, []), CHANNEL_SCALES.size, []);
589
- var notSupportAggrOpts = exports.notSupportAggrOpts = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, CHANNEL_SCALES.colorAggr, {}), CHANNEL_SCALES.sizeAggr, {});
590
-
591
- /**
592
- * Default aggregation are based on ocunt
593
- */
594
- 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]));
595
-
596
- /**
597
- * Define what type of scale operation is allowed on each type of fields
598
- */
599
- 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, {
600
- type: 'categorical',
601
- scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
602
- format: {
603
- legend: function legend(d) {
604
- return d;
605
- },
606
- tooltip: []
607
- }
608
- }), ALL_FIELD_TYPES.real, {
609
- type: 'numerical',
610
- scale: _objectSpread(_objectSpread({}, linearFieldScaleFunctions), linearFieldAggrScaleFunctions),
611
- format: {
612
- legend: function legend(d) {
613
- return d;
614
- },
615
- tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DECIMAL, _tooltip.TOOLTIP_FORMAT_TYPES.PERCENTAGE]
616
- }
617
- }), ALL_FIELD_TYPES.timestamp, {
618
- type: 'time',
619
- scale: _objectSpread(_objectSpread({}, linearFieldScaleFunctions), notSupportAggrOpts),
620
- format: {
621
- legend: function legend(d) {
622
- return d;
623
- },
624
- tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE_TIME]
625
- }
626
- }), ALL_FIELD_TYPES.integer, {
627
- type: 'numerical',
628
- scale: _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, linearFieldScaleFunctions), {}, (0, _defineProperty2["default"])({}, CHANNEL_SCALES.color, [].concat((0, _toConsumableArray2["default"])(linearFieldScaleFunctions[CHANNEL_SCALES.color]), [SCALE_TYPES.customOrdinal])))), linearFieldAggrScaleFunctions),
629
- format: {
630
- legend: function legend(d) {
631
- return d;
632
- },
633
- tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DECIMAL, _tooltip.TOOLTIP_FORMAT_TYPES.PERCENTAGE]
634
- }
635
- }), ALL_FIELD_TYPES["boolean"], {
636
- type: 'boolean',
637
- scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
638
- format: {
639
- legend: function legend(d) {
640
- return d;
641
- },
642
- tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.BOOLEAN]
643
- }
644
- }), ALL_FIELD_TYPES.date, {
645
- type: 'time',
646
- scale: _objectSpread(_objectSpread({}, ordinalFieldScaleFunctions), ordinalFieldAggrScaleFunctions),
647
- format: {
648
- legend: function legend(d) {
649
- return d;
650
- },
651
- tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE]
652
- }
653
- }), ALL_FIELD_TYPES.geojson, {
654
- type: 'geometry',
655
- scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
656
- format: {
657
- legend: function legend() {
658
- return '...';
659
- },
660
- tooltip: []
661
- }
662
- }), ALL_FIELD_TYPES.geoarrow, {
663
- type: 'geometry',
664
- scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
665
- format: {
666
- legend: function legend() {
667
- return '...';
668
- },
669
- tooltip: []
670
- }
671
- }), ALL_FIELD_TYPES.object, {
672
- type: 'numerical',
673
- scale: {},
674
- format: {
675
- legend: function legend() {
676
- return '...';
677
- },
678
- tooltip: []
679
- }
680
- }), ALL_FIELD_TYPES.array, {
681
- type: 'numerical',
682
- scale: {},
683
- format: {
684
- legend: function legend() {
685
- return '...';
686
- },
687
- tooltip: []
688
- }
689
- }), (0, _defineProperty2["default"])(_FIELD_OPTS, ALL_FIELD_TYPES.h3, {
690
- type: 'h3',
691
- scale: _objectSpread(_objectSpread({}, notSupportedScaleOpts), notSupportAggrOpts),
692
- format: {
693
- legend: function legend() {
694
- return '...';
695
- },
696
- tooltip: []
697
- }
698
- }));
699
- var CHANNEL_SCALE_SUPPORTED_FIELDS = exports.CHANNEL_SCALE_SUPPORTED_FIELDS = Object.keys(CHANNEL_SCALES).reduce(function (accu, key) {
700
- return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, key, Object.keys(FIELD_OPTS).filter(function (ft) {
701
- return FIELD_OPTS[ft].scale[key] && Object.keys(FIELD_OPTS[ft].scale[key]).length;
702
- })));
703
- }, {});
704
- var DEFAULT_LAYER_COLOR = exports.DEFAULT_LAYER_COLOR = {
705
- tripArc: '#9226C6',
706
- begintrip_lat: '#1E96BE',
707
- dropoff_lat: '#FF991F',
708
- request_lat: '#52A353'
709
- };
710
- var DEFAULT_LAYER_COLOR_PALETTE = exports.DEFAULT_LAYER_COLOR_PALETTE = 'Global Warming';
711
- var DEFAULT_LAYER_COLOR_PALETTE_STEPS = exports.DEFAULT_LAYER_COLOR_PALETTE_STEPS = 6;
712
-
713
- // let user pass in default tooltip fields
714
- var DEFAULT_TOOLTIP_FIELDS = exports.DEFAULT_TOOLTIP_FIELDS = [];
715
- var NO_VALUE_COLOR = exports.NO_VALUE_COLOR = [0, 0, 0, 0];
716
- var DEFAULT_PICKING_RADIUS = exports.DEFAULT_PICKING_RADIUS = 3;
717
- var OVERLAY_BLENDINGS = exports.OVERLAY_BLENDINGS = {
718
- normal: {
719
- label: 'overlayBlending.normal',
720
- value: 'normal'
721
- },
722
- screen: {
723
- label: 'overlayBlending.screen',
724
- value: 'screen'
725
- },
726
- darken: {
727
- label: 'overlayBlending.darken',
728
- value: 'darken'
729
- }
730
- };
731
- var LAYER_BLENDINGS = exports.LAYER_BLENDINGS = {
732
- additive: {
733
- label: 'layerBlending.additive',
734
- blendFunc: ['SRC_ALPHA', 'DST_ALPHA'],
735
- blendEquation: 'FUNC_ADD'
736
- },
737
- normal: {
738
- // reference to
739
- // https://limnu.com/webgl-blending-youre-probably-wrong/
740
- label: 'layerBlending.normal',
741
- blendFunc: ['SRC_ALPHA', 'ONE_MINUS_SRC_ALPHA', 'ONE', 'ONE_MINUS_SRC_ALPHA'],
742
- blendEquation: ['FUNC_ADD', 'FUNC_ADD']
743
- },
744
- subtractive: {
745
- label: 'layerBlending.subtractive',
746
- blendFunc: ['ONE', 'ONE_MINUS_DST_COLOR', 'SRC_ALPHA', 'DST_ALPHA'],
747
- blendEquation: ['FUNC_SUBTRACT', 'FUNC_ADD']
748
- }
749
- };
750
- var MAX_DEFAULT_TOOLTIPS = exports.MAX_DEFAULT_TOOLTIPS = 5;
751
- var RESOLUTIONS = exports.RESOLUTIONS = (0, _keymirror["default"])({
752
- ONE_X: null,
753
- TWO_X: null
754
- });
755
- var EXPORT_IMG_RATIOS = exports.EXPORT_IMG_RATIOS = (0, _keymirror["default"])({
756
- SCREEN: null,
757
- FOUR_BY_THREE: null,
758
- SIXTEEN_BY_NINE: null,
759
- CUSTOM: null
760
- });
761
- var ScreenRatioOption = exports.ScreenRatioOption = {
762
- id: EXPORT_IMG_RATIOS.SCREEN,
763
- label: 'modal.exportImage.ratioOriginalScreen',
764
- getSize: function getSize(screenW, screenH) {
765
- return {
766
- width: screenW,
767
- height: screenH
768
- };
769
- }
770
- };
771
- var CustomRatioOption = exports.CustomRatioOption = {
772
- id: EXPORT_IMG_RATIOS.CUSTOM,
773
- hidden: true,
774
- label: 'modal.exportImage.ratioCustom',
775
- getSize: function getSize(mapW, mapH) {
776
- return {
777
- width: mapW,
778
- height: mapH
779
- };
780
- }
781
- };
782
- var FourByThreeRatioOption = exports.FourByThreeRatioOption = {
783
- id: EXPORT_IMG_RATIOS.FOUR_BY_THREE,
784
- label: 'modal.exportImage.ratio4_3',
785
- getSize: function getSize(screenW) {
786
- return {
787
- width: screenW,
788
- height: Math.round(screenW * 0.75)
789
- };
790
- }
791
- };
792
- var SixteenByNineRatioOption = exports.SixteenByNineRatioOption = {
793
- id: EXPORT_IMG_RATIOS.SIXTEEN_BY_NINE,
794
- label: 'modal.exportImage.ratio16_9',
795
- getSize: function getSize(screenW) {
796
- return {
797
- width: screenW,
798
- height: Math.round(screenW * 0.5625)
799
- };
800
- }
801
- };
802
- var EXPORT_IMG_RATIO_OPTIONS = exports.EXPORT_IMG_RATIO_OPTIONS = [ScreenRatioOption, FourByThreeRatioOption, SixteenByNineRatioOption, CustomRatioOption];
803
- var OneXResolutionOption = exports.OneXResolutionOption = {
804
- id: RESOLUTIONS.ONE_X,
805
- label: '1x',
806
- available: true,
807
- scale: 1,
808
- getSize: function getSize(screenW, screenH) {
809
- return {
810
- width: screenW,
811
- height: screenH
812
- };
813
- }
814
- };
815
- var TwoXResolutionOption = exports.TwoXResolutionOption = {
816
- id: RESOLUTIONS.TWO_X,
817
- label: '2x',
818
- available: true,
819
- scale: 2,
820
- getSize: function getSize(screenW, screenH) {
821
- return {
822
- width: screenW * 2,
823
- height: screenH * 2
824
- };
825
- }
826
- };
827
-
828
- // Fixed dimension options
829
- var Resolution1920x1080Option = exports.Resolution1920x1080Option = {
830
- id: '1920x1080',
831
- label: '1920 × 1080 (16:9)',
832
- available: true,
833
- getSize: function getSize() {
834
- return {
835
- width: 1920,
836
- height: 1080
837
- };
838
- }
839
- };
840
- var Resolution1280x720Option = exports.Resolution1280x720Option = {
841
- id: '1280x720',
842
- label: '1280 × 720 (16:9)',
843
- available: true,
844
- getSize: function getSize() {
845
- return {
846
- width: 1280,
847
- height: 720
848
- };
849
- }
850
- };
851
- var Resolution2560x1440Option = exports.Resolution2560x1440Option = {
852
- id: '2560x1440',
853
- label: '2560 × 1440 (16:9)',
854
- available: true,
855
- getSize: function getSize() {
856
- return {
857
- width: 2560,
858
- height: 1440
859
- };
860
- }
861
- };
862
- var Resolution1600x900Option = exports.Resolution1600x900Option = {
863
- id: '1600x900',
864
- label: '1600 × 900 (16:9)',
865
- available: true,
866
- getSize: function getSize() {
867
- return {
868
- width: 1600,
869
- height: 900
870
- };
871
- }
872
- };
873
- var Resolution1024x768Option = exports.Resolution1024x768Option = {
874
- id: '1024x768',
875
- label: '1024 × 768 (4:3)',
876
- available: true,
877
- getSize: function getSize() {
878
- return {
879
- width: 1024,
880
- height: 768
881
- };
882
- }
883
- };
884
- var Resolution1280x960Option = exports.Resolution1280x960Option = {
885
- id: '1280x960',
886
- label: '1280 × 960 (4:3)',
887
- available: true,
888
- getSize: function getSize() {
889
- return {
890
- width: 1280,
891
- height: 960
892
- };
893
- }
894
- };
895
- var Resolution1600x1200Option = exports.Resolution1600x1200Option = {
896
- id: '1600x1200',
897
- label: '1600 × 1200 (4:3)',
898
- available: true,
899
- getSize: function getSize() {
900
- return {
901
- width: 1600,
902
- height: 1200
903
- };
904
- }
905
- };
906
- var Resolution1920x1440Option = exports.Resolution1920x1440Option = {
907
- id: '1920x1440',
908
- label: '1920 × 1440 (4:3)',
909
- available: true,
910
- getSize: function getSize() {
911
- return {
912
- width: 1920,
913
- height: 1440
914
- };
915
- }
916
- };
917
- var EXPORT_IMG_RESOLUTION_OPTIONS = exports.EXPORT_IMG_RESOLUTION_OPTIONS = [OneXResolutionOption, TwoXResolutionOption, Resolution1280x720Option, Resolution1920x1080Option, Resolution2560x1440Option, Resolution1600x900Option, Resolution1024x768Option, Resolution1280x960Option, Resolution1600x1200Option, Resolution1920x1440Option];
918
- var EXPORT_DATA_TYPE = exports.EXPORT_DATA_TYPE = (0, _keymirror["default"])({
919
- CSV: null
920
- // SHAPEFILE: null,
921
- // JSON: null,
922
- // GEOJSON: null,
923
- // TOPOJSON: null
924
- });
925
- var EXPORT_DATA_TYPE_OPTIONS = exports.EXPORT_DATA_TYPE_OPTIONS = [{
926
- id: EXPORT_DATA_TYPE.CSV,
927
- label: EXPORT_DATA_TYPE.CSV.toLowerCase(),
928
- available: true
929
- }
930
- // {
931
- // id: EXPORT_DATA_TYPE.SHAPEFILE,
932
- // label: 'shapefile',
933
- // available: false
934
- // },
935
- // {
936
- // id: EXPORT_DATA_TYPE.JSON,
937
- // label: 'json',
938
- // available: false
939
- // },
940
- // {
941
- // id: EXPORT_DATA_TYPE.GEOJSON,
942
- // label: 'geojson',
943
- // available: false
944
- // },
945
- // {
946
- // id: EXPORT_DATA_TYPE.TOPOJSON,
947
- // label: 'topojson',
948
- // available: false
949
- // }
950
- ];
951
-
952
- // Export map types
953
- var EXPORT_MAP_FORMATS = exports.EXPORT_MAP_FORMATS = (0, _keymirror["default"])({
954
- HTML: null,
955
- JSON: null
956
- });
957
- var EXPORT_HTML_MAP_MODES = exports.EXPORT_HTML_MAP_MODES = (0, _keymirror["default"])({
958
- READ: null,
959
- EDIT: null
960
- });
961
-
962
- // Export map options
963
- var EXPORT_MAP_FORMAT_OPTIONS = exports.EXPORT_MAP_FORMAT_OPTIONS = Object.entries(EXPORT_MAP_FORMATS).map(function (entry) {
964
- return {
965
- id: entry[0],
966
- label: entry[1].toLowerCase(),
967
- available: true
968
- };
969
- });
970
- function getHTMLMapModeTileUrl(mode) {
971
- return "https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/map-".concat(mode.toLowerCase(), "-mode.png");
972
- }
973
- var EXPORT_HTML_MAP_MODE_OPTIONS = exports.EXPORT_HTML_MAP_MODE_OPTIONS = Object.entries(EXPORT_HTML_MAP_MODES).map(function (entry) {
974
- return {
975
- id: entry[0],
976
- label: "modal.exportMap.html.".concat(entry[1].toLowerCase()),
977
- available: true,
978
- url: getHTMLMapModeTileUrl(entry[1])
979
- };
980
- });
981
- var DEFAULT_UUID_COUNT = exports.DEFAULT_UUID_COUNT = 6;
982
- var DEFAULT_NOTIFICATION_MESSAGE = exports.DEFAULT_NOTIFICATION_MESSAGE = 'MESSAGE_NOT_PROVIDED';
983
- var DEFAULT_NOTIFICATION_TYPES = exports.DEFAULT_NOTIFICATION_TYPES = (0, _keymirror["default"])({
984
- info: null,
985
- error: null,
986
- warning: null,
987
- success: null
988
- });
989
- var DEFAULT_NOTIFICATION_TOPICS = exports.DEFAULT_NOTIFICATION_TOPICS = (0, _keymirror["default"])({
990
- global: null,
991
- file: null
992
- });
993
-
994
- // Minimum time between identical notifications about deck.gl errors
995
- var THROTTLE_NOTIFICATION_TIME = exports.THROTTLE_NOTIFICATION_TIME = 330;
996
-
997
- // Animation
998
- var BASE_SPEED = exports.BASE_SPEED = 600;
999
- var FPS = exports.FPS = 60;
1000
-
1001
- /**
1002
- * 4 Animation Window Types
1003
- * 1. free
1004
- * |-> |->
1005
- * Current time is a fixed range, animation controller calls next animation frames continuously to animation a moving window
1006
- * The increment id based on domain / BASE_SPEED * SPEED
1007
- *
1008
- * 2. incremental
1009
- * | |->
1010
- * Same as free, current time is a growing range, only the max value of range increment during animation.
1011
- * The increment is also based on domain / BASE_SPEED * SPEED
1012
- *
1013
- * 3. point
1014
- * o -> o
1015
- * Current time is a point, animation controller calls next animation frame continuously to animation a moving point
1016
- * The increment is based on domain / BASE_SPEED * SPEED
1017
- *
1018
- * 4. interval
1019
- * o ~> o
1020
- * Current time is a point. An array of sorted time steps need to be provided.
1021
- * animation controller calls next animation at a interval when the point jumps to the next step
1022
- */
1023
- var ANIMATION_WINDOW = exports.ANIMATION_WINDOW = (0, _keymirror["default"])({
1024
- free: null,
1025
- incremental: null,
1026
- point: null,
1027
- interval: null
1028
- });
1029
- var DEFAULT_TIME_FORMAT = exports.DEFAULT_TIME_FORMAT = 'MM/DD/YY HH:mm:ssa';
1030
- var SPEED_CONTROL_RANGE = exports.SPEED_CONTROL_RANGE = [0, 10];
1031
- var SPEED_CONTROL_STEP = exports.SPEED_CONTROL_STEP = 0.001;
1032
-
1033
- // Geocoder
1034
- var GEOCODER_DATASET_NAME = exports.GEOCODER_DATASET_NAME = 'geocoder_dataset';
1035
- var GEOCODER_LAYER_ID = exports.GEOCODER_LAYER_ID = 'geocoder_layer';
1036
- var GEOCODER_GEO_OFFSET = exports.GEOCODER_GEO_OFFSET = 0.05;
1037
- var GEOCODER_ICON_COLOR = exports.GEOCODER_ICON_COLOR = [255, 0, 0];
1038
- // Base icon size before anchor normalization. The geocoder pin icon is bottom-anchored
1039
- // and scaled to fit the ScatterplotLayer unit circle (~0.5x), so the rendered size is
1040
- // compensated here (80 * 2 = 160).
1041
- var GEOCODER_ICON_SIZE = exports.GEOCODER_ICON_SIZE = 160;
1042
-
1043
- // Editor
1044
- var EDITOR_LAYER_ID = exports.EDITOR_LAYER_ID = 'kepler_editor_layer';
1045
- var EDITOR_LAYER_PICKING_RADIUS = exports.EDITOR_LAYER_PICKING_RADIUS = 6;
1046
- var EDITOR_MODES = exports.EDITOR_MODES = {
1047
- DRAW_POLYGON: 'DRAW_POLYGON',
1048
- DRAW_RECTANGLE: 'DRAW_RECTANGLE',
1049
- EDIT: 'EDIT_VERTEX'
1050
- };
1051
- var PLOT_TYPES = exports.PLOT_TYPES = (0, _keymirror["default"])({
1052
- histogram: null,
1053
- lineChart: null
1054
- });
1055
-
1056
- // Filter
1057
- var INIT_FILTER_ITEMS_IN_DROPDOWN = exports.INIT_FILTER_ITEMS_IN_DROPDOWN = 100;
1058
-
1059
- // GPU Filtering
1060
- /**
1061
- * Max number of filter value buffers that deck.gl provides
1062
- */
1063
- var MAX_GPU_FILTERS = exports.MAX_GPU_FILTERS = 4;
1064
- var MAP_THUMBNAIL_DIMENSION = exports.MAP_THUMBNAIL_DIMENSION = {
1065
- width: 300,
1066
- height: 200
1067
- };
1068
- var MAP_INFO_CHARACTER = exports.MAP_INFO_CHARACTER = {
1069
- title: 100,
1070
- description: 100
1071
- };
1072
-
1073
- // Load data
1074
- var LOADING_METHODS = exports.LOADING_METHODS = (0, _keymirror["default"])({
1075
- upload: null,
1076
- storage: null,
1077
- tileset: null
1078
- });
1079
- var DEFAULT_FEATURE_FLAGS = exports.DEFAULT_FEATURE_FLAGS = {};
1080
- var DATASET_FORMATS = exports.DATASET_FORMATS = (0, _keymirror["default"])({
1081
- row: null,
1082
- geojson: null,
1083
- csv: null,
1084
- keplergl: null,
1085
- arrow: null,
1086
- duckdb: null
1087
- });
1088
- var MAP_CONTROLS = exports.MAP_CONTROLS = (0, _keymirror["default"])({
1089
- visibleLayers: null,
1090
- mapLegend: null,
1091
- toggle3d: null,
1092
- splitMap: null,
1093
- mapDraw: null,
1094
- mapLocale: null,
1095
- effect: null,
1096
- annotation: null,
1097
- aiAssistant: null
1098
- });
1099
- var MapViewMode = exports.MapViewMode = /*#__PURE__*/function (MapViewMode) {
1100
- MapViewMode["MODE_2D"] = "MODE_2D";
1101
- MapViewMode["MODE_3D"] = "MODE_3D";
1102
- MapViewMode["MODE_GLOBE"] = "MODE_GLOBE";
1103
- return MapViewMode;
1104
- }({});
1105
- /**
1106
- * Minimum zoom level allowed in globe mode. Negative values let the user zoom
1107
- * out further than the web-mercator default of 0, so the whole globe can be
1108
- * pulled back to appear smaller on screen.
1109
- */
1110
- var GLOBE_MIN_ZOOM = exports.GLOBE_MIN_ZOOM = 2;
1111
-
1112
- /**
1113
- * Maximum zoom in globe mode.
1114
- *
1115
- * The previous "empty rectangles" at high zoom were caused by the vector basemap
1116
- * layer declaring `maxZoom: 23` while the raw tile endpoints only have data to
1117
- * z16 (mapbox-streets-v8) / z14 (CARTO) — deck then requested non-existent tiles
1118
- * that 404. That is fixed in `getGlobeBaseLayers` by setting `maxZoom` to each
1119
- * source's true data max so deck overzooms instead.
1120
- *
1121
- * The remaining practical ceiling is float32 precision: deck's globe places
1122
- * geometry in common space on a sphere of radius 256 with no fp64/relative-to-
1123
- * center trick, so beyond ~visual-zoom 16 (roughly this mapState zoom minus
1124
- * `zoomAdjust(lat)` ≈ 1.65 at the equator) geometry starts to jitter/drift.
1125
- */
1126
- var GLOBE_MAX_ZOOM = exports.GLOBE_MAX_ZOOM = 16;
1127
-
1128
- /**
1129
- * Maximum absolute center latitude allowed in globe mode. Constrains the camera
1130
- * target to a band around the equator so the view can't be centered on the
1131
- * poles (deck.gl's default clamps to ~85°, which lets the camera stare straight
1132
- * down at a pole). Applies symmetrically to the northern and southern hemisphere.
1133
- */
1134
- var GLOBE_MAX_LATITUDE = exports.GLOBE_MAX_LATITUDE = 75;
1135
- var DEFAULT_GLOBE_CONFIG = exports.DEFAULT_GLOBE_CONFIG = {
1136
- atmosphere: true,
1137
- azimuth: false,
1138
- azimuthAngle: 45,
1139
- terminator: true,
1140
- terminatorOpacity: 0.35,
1141
- basemap: true,
1142
- labels: false,
1143
- labelsColor: [114.75, 114.75, 114.75],
1144
- adminLines: true,
1145
- adminLinesColor: [40, 63, 93],
1146
- water: true,
1147
- waterColor: [17, 35, 48],
1148
- surface: true,
1149
- surfaceColor: [9, 16, 29],
1150
- // Color of the empty space rendered around the globe (deck.gl clear color).
1151
- // Matches the previous hardcoded clear color [0.015, 0.035, 0.065] in 0-1 space.
1152
- backgroundColor: [4, 9, 17],
1153
- stars: false
1154
- };
1155
- var GLOBE_SUPPORTED_LAYERS = exports.GLOBE_SUPPORTED_LAYERS = {
1156
- point: true,
1157
- arc: true,
1158
- grid: true,
1159
- hexagon: true,
1160
- geojson: true,
1161
- cluster: true,
1162
- icon: true,
1163
- hexagonId: true,
1164
- '3D': true,
1165
- vectorTile: true,
1166
- hexTile: true,
1167
- line: true,
1168
- trip: true,
1169
- rasterTile: true,
1170
- heatmap: true,
1171
- s2: false,
1172
- tile3d: false,
1173
- // Flow arrows are flat quads in common space (equatorial plane) and collapse when
1174
- // viewed edge-on on the globe, so the flow layer is not supported in Globe mode.
1175
- flow: false
1176
- };
1177
- var MapSplitMode = exports.MapSplitMode = /*#__PURE__*/function (MapSplitMode) {
1178
- MapSplitMode["SINGLE_MAP"] = "SINGLE_MAP";
1179
- MapSplitMode["DUAL_MAP"] = "DUAL_MAP";
1180
- MapSplitMode["SWIPE_COMPARE"] = "SWIPE_COMPARE";
1181
- return MapSplitMode;
1182
- }({});
1183
- /**
1184
- * A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.
1185
- * Required in order to maintain the same appearance after upgrading to deck.gl v8.5.
1186
- * https://github.com/visgl/deck.gl/blob/master/docs/upgrade-guide.md
1187
- */
1188
- var PROJECTED_PIXEL_SIZE_MULTIPLIER = exports.PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;
1189
-
1190
- /**
1191
- * Maximum value for text outline width
1192
- */
1193
- var TEXT_OUTLINE_MULTIPLIER = exports.TEXT_OUTLINE_MULTIPLIER = 5;
1194
- var dataTestIds = exports.dataTestIds = {
1195
- infoIcon: 'info-icon',
1196
- warningIcon: 'warning-icon',
1197
- errorIcon: 'error-icon',
1198
- successIcon: 'success-icon',
1199
- checkmarkIcon: 'checkmark-icon',
1200
- sortableLayerItem: 'sortable-layer-item',
1201
- staticLayerItem: 'static-layer-item',
1202
- layerTitleEditor: 'layer__title__editor',
1203
- removeLayerAction: 'remove-layer-action',
1204
- layerPanel: 'layer-panel',
1205
- sortableEffectItem: 'sortable-effect-item',
1206
- staticEffectItem: 'static-effect-item',
1207
- providerLoading: 'provider-loading',
1208
- providerMapInfoPanel: 'provider-map-info-panel',
1209
- providerSelect: 'provider-select',
1210
- cloudHeader: 'cloud-header',
1211
- providerShareMap: 'provider-share-map'
1212
- };
1213
-
1214
- // Effects
1215
- var DEFAULT_TIMEZONE = exports.DEFAULT_TIMEZONE = 'UTC';
1216
- var DEFAULT_POST_PROCESSING_EFFECT_TYPE = exports.DEFAULT_POST_PROCESSING_EFFECT_TYPE = 'ink';
1217
- var DEFAULT_LIGHT_COLOR = exports.DEFAULT_LIGHT_COLOR = [255, 255, 255];
1218
- var DEFAULT_LIGHT_INTENSITY = exports.DEFAULT_LIGHT_INTENSITY = 1;
1219
- var DEFAULT_SHADOW_INTENSITY = exports.DEFAULT_SHADOW_INTENSITY = 0.5;
1220
- var DEFAULT_SHADOW_COLOR = exports.DEFAULT_SHADOW_COLOR = [0, 0, 0];
1221
- var LIGHT_AND_SHADOW_EFFECT_TIME_MODES = exports.LIGHT_AND_SHADOW_EFFECT_TIME_MODES = {
1222
- pick: 'pick',
1223
- current: 'current',
1224
- animation: 'animation'
1225
- };
1226
- var DEFAULT_LIGHT_AND_SHADOW_PROPS = exports.DEFAULT_LIGHT_AND_SHADOW_PROPS = {
1227
- timestamp: Date.now(),
1228
- timeMode: LIGHT_AND_SHADOW_EFFECT_TIME_MODES.pick,
1229
- shadowIntensity: DEFAULT_SHADOW_INTENSITY,
1230
- shadowColor: [].concat(DEFAULT_SHADOW_COLOR),
1231
- sunLightColor: [].concat(DEFAULT_LIGHT_COLOR),
1232
- sunLightIntensity: DEFAULT_LIGHT_INTENSITY,
1233
- ambientLightColor: [].concat(DEFAULT_LIGHT_COLOR),
1234
- ambientLightIntensity: DEFAULT_LIGHT_INTENSITY
1235
- };
1236
- var LIGHT_AND_SHADOW_EFFECT = exports.LIGHT_AND_SHADOW_EFFECT = {
1237
- type: 'lightAndShadow',
1238
- name: 'Light & Shadow',
1239
- description: 'effectDescription.lightAndShadow',
1240
- parameters: [{
1241
- name: 'timestamp',
1242
- min: 0,
1243
- max: Number.MAX_SAFE_INTEGER
1244
- }, {
1245
- name: 'shadowIntensity',
1246
- min: 0,
1247
- max: 1,
1248
- defaultValue: DEFAULT_SHADOW_INTENSITY
1249
- }, {
1250
- name: 'sunLightIntensity',
1251
- min: 0,
1252
- max: 5,
1253
- defaultValue: DEFAULT_LIGHT_INTENSITY
1254
- }, {
1255
- name: 'ambientLightIntensity',
1256
- min: 0,
1257
- max: 5,
1258
- defaultValue: DEFAULT_LIGHT_INTENSITY
1259
- }, {
1260
- name: 'shadowColor',
1261
- type: 'color',
1262
- min: 0,
1263
- max: 255,
1264
- defaultValue: DEFAULT_SHADOW_COLOR
1265
- }, {
1266
- name: 'sunLightColor',
1267
- type: 'color',
1268
- min: 0,
1269
- max: 255,
1270
- defaultValue: DEFAULT_LIGHT_COLOR
1271
- }, {
1272
- name: 'ambientLightColor',
1273
- type: 'color',
1274
- min: 0,
1275
- max: 255,
1276
- defaultValue: DEFAULT_LIGHT_COLOR
1277
- }]
1278
- };
1279
- var DISTANCE_FOG_TYPE = exports.DISTANCE_FOG_TYPE = 'distanceFog';
1280
- var SURFACE_FOG_TYPE = exports.SURFACE_FOG_TYPE = 'surfaceFog';
1281
- var POSTPROCESSING_EFFECTS = exports.POSTPROCESSING_EFFECTS = {
1282
- ink: {
1283
- type: 'ink',
1284
- name: 'Ink',
1285
- description: 'effectDescription.ink',
1286
- parameters: [{
1287
- name: 'strength',
1288
- min: 0,
1289
- max: 1
1290
- }]
1291
- },
1292
- brightnessContrast: {
1293
- type: 'brightnessContrast',
1294
- name: 'Brightness & Contrast',
1295
- description: 'effectDescription.brightnessContrast',
1296
- parameters: [{
1297
- name: 'brightness',
1298
- min: -1,
1299
- max: 1
1300
- }, {
1301
- name: 'contrast',
1302
- min: -1,
1303
- max: 1
1304
- }]
1305
- },
1306
- hueSaturation: {
1307
- type: 'hueSaturation',
1308
- name: 'Hue & Saturation',
1309
- description: 'effectDescription.hueSaturation',
1310
- parameters: [{
1311
- name: 'hue',
1312
- min: -1,
1313
- max: 1
1314
- }, {
1315
- name: 'saturation',
1316
- defaultValue: 0.25,
1317
- min: -1,
1318
- max: 1
1319
- }]
1320
- },
1321
- vibrance: {
1322
- type: 'vibrance',
1323
- name: 'Vibrance',
1324
- description: 'effectDescription.vibrance',
1325
- parameters: [{
1326
- name: 'amount',
1327
- defaultValue: 0.5,
1328
- min: -1,
1329
- max: 1
1330
- }]
1331
- },
1332
- sepia: {
1333
- type: 'sepia',
1334
- name: 'Sepia',
1335
- description: 'effectDescription.sepia',
1336
- parameters: [{
1337
- name: 'amount',
1338
- min: 0,
1339
- max: 1
1340
- }]
1341
- },
1342
- dotScreen: {
1343
- type: 'dotScreen',
1344
- name: 'Dot Screen',
1345
- description: 'effectDescription.dotScreen',
1346
- parameters: [{
1347
- name: 'angle',
1348
- min: 0,
1349
- max: Math.PI / 2
1350
- }, {
1351
- name: 'size',
1352
- min: 1,
1353
- max: 20
1354
- }, {
1355
- name: 'center',
1356
- type: 'array',
1357
- label: ['Center X', 'Center Y'],
1358
- defaultValue: [0.5, 0.5],
1359
- min: 0,
1360
- max: 1
1361
- }]
1362
- },
1363
- colorHalftone: {
1364
- type: 'colorHalftone',
1365
- name: 'Color Halftone',
1366
- description: 'effectDescription.colorHalftone',
1367
- parameters: [{
1368
- name: 'angle',
1369
- min: 0,
1370
- max: Math.PI / 2
1371
- }, {
1372
- name: 'size',
1373
- min: 1,
1374
- max: 20
1375
- }, {
1376
- name: 'center',
1377
- type: 'array',
1378
- label: ['Center X', 'Center Y'],
1379
- defaultValue: [0.5, 0.5],
1380
- min: 0,
1381
- max: 1
1382
- }]
1383
- },
1384
- noise: {
1385
- type: 'noise',
1386
- name: 'Noise',
1387
- description: 'effectDescription.noise',
1388
- parameters: [{
1389
- name: 'amount',
1390
- min: 0,
1391
- max: 1
1392
- }]
1393
- },
1394
- triangleBlur: {
1395
- type: 'triangleBlur',
1396
- name: 'Blur (Triangle)',
1397
- description: 'effectDescription.triangleBlur',
1398
- parameters: [{
1399
- name: 'radius',
1400
- min: 0,
1401
- max: 100
1402
- }]
1403
- },
1404
- zoomBlur: {
1405
- type: 'zoomBlur',
1406
- name: 'Blur (Zoom)',
1407
- description: 'effectDescription.zoomBlur',
1408
- parameters: [{
1409
- name: 'strength',
1410
- defaultValue: 0.05,
1411
- min: 0,
1412
- max: 1
1413
- }, {
1414
- name: 'center',
1415
- type: 'array',
1416
- label: ['Center X', 'Center Y'],
1417
- defaultValue: [0.5, 0.5],
1418
- min: 0,
1419
- max: 1
1420
- }]
1421
- },
1422
- tiltShift: {
1423
- type: 'tiltShift',
1424
- name: 'Blur (Tilt Shift)',
1425
- description: 'effectDescription.tiltShift',
1426
- parameters: [{
1427
- name: 'blurRadius',
1428
- label: 'Blur',
1429
- min: 0,
1430
- max: 50
1431
- }, {
1432
- name: 'gradientRadius',
1433
- label: 'Gradient',
1434
- min: 0,
1435
- max: 400
1436
- }, {
1437
- name: 'start',
1438
- type: 'array',
1439
- label: ['Start', false],
1440
- defaultValue: [0.0, 0.0],
1441
- min: 0,
1442
- max: 1
1443
- }, {
1444
- name: 'end',
1445
- type: 'array',
1446
- label: ['End', false],
1447
- defaultValue: [1, 1],
1448
- min: 0,
1449
- max: 1
1450
- }]
1451
- },
1452
- edgeWork: {
1453
- type: 'edgeWork',
1454
- name: 'Edge work',
1455
- description: 'effectDescription.edgeWork',
1456
- parameters: [{
1457
- name: 'radius',
1458
- min: 1,
1459
- max: 50
1460
- }]
1461
- },
1462
- vignette: {
1463
- type: 'vignette',
1464
- name: 'Vignette',
1465
- description: 'effectDescription.vignette',
1466
- parameters: [{
1467
- name: 'amount',
1468
- min: 0,
1469
- max: 1
1470
- }, {
1471
- name: 'radius',
1472
- min: 0,
1473
- max: 1
1474
- }]
1475
- },
1476
- magnify: {
1477
- type: 'magnify',
1478
- name: 'Magnify',
1479
- description: 'effectDescription.magnify',
1480
- parameters: [{
1481
- name: 'screenXY',
1482
- type: 'array',
1483
- label: ['Position X', 'Position Y'],
1484
- defaultValue: [0.5, 0.5],
1485
- min: 0,
1486
- max: 1
1487
- }, {
1488
- name: 'radiusPixels',
1489
- label: 'Size',
1490
- min: 10,
1491
- max: 500
1492
- }, {
1493
- name: 'zoom',
1494
- min: 0.5,
1495
- max: 50
1496
- }, {
1497
- name: 'borderWidthPixels',
1498
- label: 'Border Width',
1499
- defaultValue: 3,
1500
- min: 0,
1501
- max: 50
1502
- }]
1503
- },
1504
- hexagonalPixelate: {
1505
- type: 'hexagonalPixelate',
1506
- name: 'Hexagonal Pixelate',
1507
- description: 'effectDescription.hexagonalPixelate',
1508
- parameters: [{
1509
- name: 'scale',
1510
- defaultValue: 20,
1511
- min: 1,
1512
- max: 50
1513
- }]
1514
- },
1515
- distanceFog: {
1516
- type: DISTANCE_FOG_TYPE,
1517
- name: 'Distance Fog',
1518
- description: 'effectDescription.distanceFog',
1519
- parameters: [{
1520
- name: 'density',
1521
- defaultValue: 0.5,
1522
- min: 0,
1523
- max: 1
1524
- }, {
1525
- name: 'fogStart',
1526
- label: 'Start',
1527
- defaultValue: 0.3,
1528
- min: 0,
1529
- max: 1
1530
- }, {
1531
- name: 'fogRange',
1532
- label: 'Range',
1533
- defaultValue: 0.5,
1534
- min: 0.01,
1535
- max: 1
1536
- }, {
1537
- name: 'fogColor',
1538
- type: 'color',
1539
- min: 0,
1540
- max: 255,
1541
- defaultValue: [217, 222, 230]
1542
- }]
1543
- },
1544
- surfaceFog: {
1545
- type: SURFACE_FOG_TYPE,
1546
- name: 'Surface Fog',
1547
- description: 'effectDescription.surfaceFog',
1548
- parameters: [{
1549
- name: 'density',
1550
- defaultValue: 0.6,
1551
- min: 0,
1552
- max: 1
1553
- }, {
1554
- name: 'height',
1555
- label: 'Elevation (m)',
1556
- defaultValue: 50,
1557
- min: -200,
1558
- max: 6000
1559
- }, {
1560
- name: 'animateHeight',
1561
- type: 'checkbox',
1562
- label: 'Animate Elevation',
1563
- tooltip: 'Animates elevation from start to end value during video export preview and recording.',
1564
- defaultValue: false,
1565
- min: 0,
1566
- max: 1
1567
- }, {
1568
- name: 'heightEnd',
1569
- label: 'End Elevation (m)',
1570
- defaultValue: 100,
1571
- min: -200,
1572
- max: 6000
1573
- }, {
1574
- name: 'linearEasing',
1575
- type: 'checkbox',
1576
- label: 'Linear Easing',
1577
- tooltip: 'Uses constant speed instead of smooth ease-in / ease-out during elevation animation.',
1578
- defaultValue: false,
1579
- min: 0,
1580
- max: 1
1581
- }, {
1582
- name: 'thickness',
1583
- label: 'Transition (m)',
1584
- defaultValue: 50,
1585
- min: 0,
1586
- max: 1000
1587
- }, {
1588
- name: 'fogColor',
1589
- type: 'color',
1590
- label: 'Fog Color',
1591
- min: 0,
1592
- max: 255,
1593
- defaultValue: [230, 235, 242]
1594
- }, {
1595
- name: 'pattern',
1596
- type: 'checkbox',
1597
- label: 'Pattern',
1598
- tooltip: 'Adds a noise pattern to the fog for a more natural, volumetric look.',
1599
- defaultValue: false,
1600
- min: 0,
1601
- max: 1
1602
- }]
1603
- }
1604
- };
1605
- var EFFECT_DESCRIPTIONS = exports.EFFECT_DESCRIPTIONS = [LIGHT_AND_SHADOW_EFFECT].concat((0, _toConsumableArray2["default"])(Object.keys(POSTPROCESSING_EFFECTS).map(function (keyName) {
1606
- return POSTPROCESSING_EFFECTS[keyName];
1607
- })));
1608
- var SYNC_TIMELINE_MODES = exports.SYNC_TIMELINE_MODES = {
1609
- start: 0,
1610
- end: 1
1611
- };
1612
- var GEOARROW_METADATA_KEY = exports.GEOARROW_METADATA_KEY = 'ARROW:extension:name';
1613
-
1614
- /**
1615
- * Enum holding GeoArrow extension type names
1616
- */
1617
- var GEOARROW_EXTENSIONS = exports.GEOARROW_EXTENSIONS = /*#__PURE__*/function (GEOARROW_EXTENSIONS) {
1618
- GEOARROW_EXTENSIONS["POINT"] = "geoarrow.point";
1619
- GEOARROW_EXTENSIONS["LINESTRING"] = "geoarrow.linestring";
1620
- GEOARROW_EXTENSIONS["POLYGON"] = "geoarrow.polygon";
1621
- GEOARROW_EXTENSIONS["MULTIPOINT"] = "geoarrow.multipoint";
1622
- GEOARROW_EXTENSIONS["MULTILINESTRING"] = "geoarrow.multilinestring";
1623
- GEOARROW_EXTENSIONS["MULTIPOLYGON"] = "geoarrow.multipolygon";
1624
- GEOARROW_EXTENSIONS["WKB"] = "geoarrow.wkb";
1625
- return GEOARROW_EXTENSIONS;
1626
- }({});
1627
- var LOADERS_CDN_VERSION = exports.LOADERS_CDN_VERSION = '4.3.2';
1628
- var LOADERS_CDN_URL = exports.LOADERS_CDN_URL = 'https://unpkg.com/@loaders.gl';
1629
- var getLoaderOptions = exports.getLoaderOptions = function getLoaderOptions() {
1630
- return {
1631
- mvt: {
1632
- workerUrl: "".concat(LOADERS_CDN_URL, "/mvt@").concat(LOADERS_CDN_VERSION, "/dist/mvt-worker.js")
1633
- },
1634
- 'quantized-mesh': {
1635
- workerUrl: "".concat(LOADERS_CDN_URL, "/terrain@").concat(LOADERS_CDN_VERSION, "/dist/quantized-mesh-worker.js")
1636
- },
1637
- npy: {
1638
- workerUrl: "".concat(LOADERS_CDN_URL, "/textures@").concat(LOADERS_CDN_VERSION, "/dist/npy-worker.js")
1639
- }
1640
- };
1641
- };
1642
- var CUSTOM_SCENEGRAPH_MODEL_ID = exports.CUSTOM_SCENEGRAPH_MODEL_ID = 'custom';
1643
- var MODELS_BASE_URL = 'https://studio-public-data.foursquare.com/statics/keplergl/3d-models.2022-06-13';
1644
- var TRIP_LAYER_SCENEGRAPH_MODELS = exports.TRIP_LAYER_SCENEGRAPH_MODELS = [{
1645
- id: 'airplane',
1646
- label: 'Airplane',
1647
- icon: null,
1648
- url: "".concat(MODELS_BASE_URL, "/Plane.glb"),
1649
- angles: [0, 0, 0],
1650
- scale: 1.0
1651
- }, {
1652
- id: 'boeing777',
1653
- label: 'Airliner',
1654
- icon: null,
1655
- url: "".concat(MODELS_BASE_URL, "/Airliner.glb"),
1656
- angles: [0, 0, 0],
1657
- scale: 1.0
1658
- }, {
1659
- id: 'uber-evtol',
1660
- label: 'VTOL',
1661
- icon: null,
1662
- url: "".concat(MODELS_BASE_URL, "/evtol.glb"),
1663
- angles: [0, 0, 0],
1664
- scale: 1.0
1665
- }, {
1666
- id: 'hang-glider',
1667
- label: 'Glider',
1668
- icon: null,
1669
- url: "".concat(MODELS_BASE_URL, "/Hangglider.glb"),
1670
- angles: [0, 0, 0],
1671
- scale: 1.0
1672
- }, {
1673
- id: 'helicopter',
1674
- label: 'Helicopter',
1675
- icon: null,
1676
- url: "".concat(MODELS_BASE_URL, "/Helicopter.glb"),
1677
- angles: [0, 0, 0],
1678
- scale: 1.0
1679
- }, {
1680
- id: 'bicycle',
1681
- label: 'Bicycle',
1682
- icon: null,
1683
- url: "".concat(MODELS_BASE_URL, "/Bicycle.glb"),
1684
- angles: [0, 0, 0],
1685
- scale: 1.0
1686
- }, {
1687
- id: 'scooter',
1688
- label: 'Scooter',
1689
- icon: null,
1690
- url: "".concat(MODELS_BASE_URL, "/Scooter.glb"),
1691
- angles: [0, 0, 0],
1692
- scale: 1.0
1693
- }, {
1694
- id: 'car',
1695
- label: 'Car',
1696
- icon: null,
1697
- url: "".concat(MODELS_BASE_URL, "/Car.glb"),
1698
- angles: [0, 0, 0],
1699
- scale: 1.0
1700
- }, {
1701
- id: 'truck',
1702
- label: 'Truck',
1703
- icon: null,
1704
- url: "".concat(MODELS_BASE_URL, "/Truck.glb"),
1705
- angles: [0, 0, 0],
1706
- scale: 1.0
1707
- }, {
1708
- id: 'semitruck',
1709
- label: 'Semitruck',
1710
- icon: null,
1711
- url: "".concat(MODELS_BASE_URL, "/Semitruck.glb"),
1712
- angles: [0, 0, 0],
1713
- scale: 1.0
1714
- }, {
1715
- id: 'cargoship',
1716
- label: 'Cargoship',
1717
- icon: null,
1718
- url: "".concat(MODELS_BASE_URL, "/Cargoship.glb"),
1719
- angles: [0, 0, 0],
1720
- scale: 1.0
1721
- }, {
1722
- id: CUSTOM_SCENEGRAPH_MODEL_ID,
1723
- label: 'Custom',
1724
- icon: null,
1725
- url: null,
1726
- angles: [0, 0, 0],
1727
- scale: 1.0
1728
- }];
1729
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfa2V5bWlycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZDNTY2FsZSIsIl90b29sdGlwIiwiX0ZJRUxEX1RZUEVfRElTUExBWSIsIl9GSUVMRF9PUFRTIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJBQ1RJT05fUFJFRklYIiwiZXhwb3J0cyIsIktFUExFUl9VTkZPTERFRF9CVUNLRVQiLCJCQVNFTUFQX0lDT05fUFJFRklYIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIlRSQU5TSVRJT05fRFVSQVRJT04iLCJEQVRBX1RBQkxFX0lEIiwiREVMRVRFX0RBVEFfSUQiLCJBRERfREFUQV9JRCIsIkVYUE9SVF9JTUFHRV9JRCIsIkVYUE9SVF9EQVRBX0lEIiwiQUREX01BUF9TVFlMRV9JRCIsIkVYUE9SVF9NQVBfSUQiLCJFWFBPUlRfVklERU9fSUQiLCJTQVZFX01BUF9JRCIsIk9WRVJXUklURV9NQVBfSUQiLCJTSEFSRV9NQVBfSUQiLCJLRVBMRVJfR0xfTkFNRSIsIktFUExFUl9HTF9WRVJTSU9OIiwiS0VQTEVSX0dMX1dFQlNJVEUiLCJESU1FTlNJT05TIiwic2lkZVBhbmVsIiwid2lkdGgiLCJtYXJnaW4iLCJ0b3AiLCJsZWZ0IiwiYm90dG9tIiwicmlnaHQiLCJoZWFkZXJIZWlnaHQiLCJtYXBDb250cm9sIiwicGFkZGluZyIsIm1hcExlZ2VuZCIsInBpbm5lZCIsIlRIRU1FIiwia2V5TWlycm9yIiwibGlnaHQiLCJkYXJrIiwiYmFzZSIsIlNJREVCQVJfUEFORUxTIiwiaWQiLCJsYWJlbCIsIm9uQ2xpY2siLCJQQU5FTF9WSUVXX1RPR0dMRVMiLCJsaXN0IiwiYnlEYXRhc2V0IiwiUEFORUxTIiwiREVGQVVMVF9CTERHX0NPTE9SIiwiREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SIiwiQkFTRV9NQVBfQkFDS0dST1VORF9MQVlFUl9JRFMiLCJCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUciLCJUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUciLCJCQUNLR1JPVU5EX0xBWUVSX0dST1VQIiwic2x1ZyIsImRlZmF1bHRWaXNpYmlsaXR5IiwiaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlIiwiaXNNb3ZlVG9Ub3BBdmFpbGFibGUiLCJpc0NvbG9yUGlja2VyQXZhaWxhYmxlIiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJfcmVmIiwidHlwZSIsIm1hdGNoIiwiX3JlZjIiLCJfcmVmMyIsIl9yZWY0IiwiX3JlZjUiLCJfcmVmNiIsIkJBU0VfTUFQX0NPTE9SX01PREVTIiwiTk9ORSIsIkRBUksiLCJMSUdIVCIsIk5PX01BUF9JRCIsIkVNUFRZX01BUEJPWF9TVFlMRSIsInZlcnNpb24iLCJzb3VyY2VzIiwibGF5ZXJzIiwiTUFQX0xJQl9PUFRJT05TIiwiTUFQQk9YIiwiTUFQTElCUkUiLCJNQVBCT1hfTUFYX1BJVENIIiwiTk9fQkFTRU1BUF9JQ09OIiwiY29uY2F0IiwiREVGQVVMVF9CQVNFX01BUF9TVFlMRSIsIkRFRkFVTFRfTk9fQkFTRU1BUF9TVFlMRSIsInVybCIsImljb24iLCJsYXllckdyb3VwcyIsImNvbG9yTW9kZSIsInN0eWxlIiwiREVGQVVMVF9NQVBCT1hfU1RZTEVTIiwiY29tcGxpbWVudGFyeVN0eWxlSWQiLCJERUZBVUxUX01BUEJPWF9TQVRFTElURV9TVFlMRVMiLCJERUZBVUxUX01BUExJQlJFX1NUWUxFUyIsIkRFRkFVTFRfTUFQX1NUWUxFUyIsIkdFT0pTT05fRklFTERTIiwiZ2VvanNvbiIsIklDT05fRklFTERTIiwiVFJJUF9QT0lOVF9GSUVMRFMiLCJBTFRJVFVERV9GSUVMRFMiLCJUUklQX0FSQ19GSUVMRFMiLCJsYXQwIiwibG5nMCIsImxhdDEiLCJsbmcxIiwiRklMVEVSX1RZUEVTIiwicmFuZ2UiLCJzZWxlY3QiLCJpbnB1dCIsInRpbWVSYW5nZSIsIm11bHRpU2VsZWN0IiwicG9seWdvbiIsIkZJTFRFUl9WSUVXX1RZUEVTIiwic2lkZSIsImVubGFyZ2VkIiwibWluaWZpZWQiLCJERUZBVUxUX0ZJTFRFUl9WSUVXX1RZUEUiLCJTQ0FMRV9UWVBFUyIsIm9yZGluYWwiLCJxdWFudGlsZSIsInF1YW50aXplIiwibGluZWFyIiwic3FydCIsImxvZyIsInRocmVzaG9sZCIsImN1c3RvbSIsImN1c3RvbU9yZGluYWwiLCJwb2ludCIsIlNDQUxFX1RZUEVfTkFNRVMiLCJTQ0FMRV9GVU5DIiwic2NhbGVMaW5lYXIiLCJzY2FsZVF1YW50aXplIiwic2NhbGVRdWFudGlsZSIsInNjYWxlT3JkaW5hbCIsInNjYWxlU3FydCIsInNjYWxlTG9nIiwic2NhbGVQb2ludCIsInNjYWxlVGhyZXNob2xkIiwiQUxMX0ZJRUxEX1RZUEVTIiwiZGF0ZSIsImludGVnZXIiLCJyZWFsIiwic3RyaW5nIiwidGltZXN0YW1wIiwiYXJyYXkiLCJvYmplY3QiLCJnZW9hcnJvdyIsImgzIiwiU09SVF9PUkRFUiIsIkFTQ0VORElORyIsIkRFU0NFTkRJTkciLCJVTlNPUlQiLCJUQUJMRV9PUFRJT04iLCJTT1JUX0FTQyIsIlNPUlRfREVTIiwiUElOIiwiVU5QSU4iLCJDT1BZIiwiRk9STUFUX0NPTFVNTiIsIlRBQkxFX09QVElPTl9MSVNUIiwidmFsdWUiLCJkaXNwbGF5IiwiY29uZGl0aW9uIiwicHJvcHMiLCJzb3J0VGFibGVDb2x1bW4iLCJzb3J0TW9kZSIsImlzU29ydGVkIiwiaXNQaW5uZWQiLCJzZXREaXNwbGF5Rm9ybWF0IiwiWUVMTE9XIiwiUElOSyIsIlBVUlBMRSIsIkJMVUUiLCJCTFVFMiIsIkJMVUUzIiwiR1JFRU4iLCJHUkVFTjIiLCJSRUQiLCJPUkFOR0UiLCJGSUVMRF9UWVBFX0RJU1BMQVkiLCJjb2xvciIsIkZJRUxEX0NPTE9SUyIsIkhJR0hMSUdIX0NPTE9SXzNEIiwiQ0hBTk5FTF9TQ0FMRVMiLCJyYWRpdXMiLCJzaXplIiwiY29sb3JBZ2dyIiwic2l6ZUFnZ3IiLCJhbmdsZSIsIkFHR1JFR0FUSU9OX1RZUEVTIiwiY291bnQiLCJhdmVyYWdlIiwibWF4aW11bSIsIm1pbmltdW0iLCJtZWRpYW4iLCJzdGRldiIsInN1bSIsInZhcmlhbmNlIiwibW9kZSIsImNvdW50VW5pcXVlIiwiQUdHUkVHQVRJT05fVFlQRV9PUFRJT05TIiwiZW50cmllcyIsIm1hcCIsIl9yZWY3IiwiX3JlZjgiLCJfc2xpY2VkVG9BcnJheTIiLCJrZXkiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwibGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyIsIkRFRkFVTFRfQUdHUkVHQVRJT05fQ09MT1JfU0NBTEVTIiwibGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJyZWR1Y2UiLCJwcmV2IiwiY3VyIiwib3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMiLCJvcmRpbmFsRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJub3RTdXBwb3J0ZWRTY2FsZU9wdHMiLCJub3RTdXBwb3J0QWdnck9wdHMiLCJERUZBVUxUX0FHR1JFR0FUSU9OIiwiRklFTERfT1BUUyIsInNjYWxlIiwiZm9ybWF0IiwibGVnZW5kIiwiZCIsInRvb2x0aXAiLCJUT09MVElQX0ZPUk1BVF9UWVBFUyIsIkRFQ0lNQUwiLCJQRVJDRU5UQUdFIiwiREFURSIsIkRBVEVfVElNRSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJCT09MRUFOIiwiQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTIiwiYWNjdSIsImZ0IiwiREVGQVVMVF9MQVlFUl9DT0xPUiIsInRyaXBBcmMiLCJiZWdpbnRyaXBfbGF0IiwiZHJvcG9mZl9sYXQiLCJyZXF1ZXN0X2xhdCIsIkRFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURSIsIkRFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURV9TVEVQUyIsIkRFRkFVTFRfVE9PTFRJUF9GSUVMRFMiLCJOT19WQUxVRV9DT0xPUiIsIkRFRkFVTFRfUElDS0lOR19SQURJVVMiLCJPVkVSTEFZX0JMRU5ESU5HUyIsIm5vcm1hbCIsInNjcmVlbiIsImRhcmtlbiIsIkxBWUVSX0JMRU5ESU5HUyIsImFkZGl0aXZlIiwiYmxlbmRGdW5jIiwiYmxlbmRFcXVhdGlvbiIsInN1YnRyYWN0aXZlIiwiTUFYX0RFRkFVTFRfVE9PTFRJUFMiLCJSRVNPTFVUSU9OUyIsIk9ORV9YIiwiVFdPX1giLCJFWFBPUlRfSU1HX1JBVElPUyIsIlNDUkVFTiIsIkZPVVJfQllfVEhSRUUiLCJTSVhURUVOX0JZX05JTkUiLCJDVVNUT00iLCJTY3JlZW5SYXRpb09wdGlvbiIsImdldFNpemUiLCJzY3JlZW5XIiwic2NyZWVuSCIsImhlaWdodCIsIkN1c3RvbVJhdGlvT3B0aW9uIiwiaGlkZGVuIiwibWFwVyIsIm1hcEgiLCJGb3VyQnlUaHJlZVJhdGlvT3B0aW9uIiwiTWF0aCIsInJvdW5kIiwiU2l4dGVlbkJ5TmluZVJhdGlvT3B0aW9uIiwiRVhQT1JUX0lNR19SQVRJT19PUFRJT05TIiwiT25lWFJlc29sdXRpb25PcHRpb24iLCJhdmFpbGFibGUiLCJUd29YUmVzb2x1dGlvbk9wdGlvbiIsIlJlc29sdXRpb24xOTIweDEwODBPcHRpb24iLCJSZXNvbHV0aW9uMTI4MHg3MjBPcHRpb24iLCJSZXNvbHV0aW9uMjU2MHgxNDQwT3B0aW9uIiwiUmVzb2x1dGlvbjE2MDB4OTAwT3B0aW9uIiwiUmVzb2x1dGlvbjEwMjR4NzY4T3B0aW9uIiwiUmVzb2x1dGlvbjEyODB4OTYwT3B0aW9uIiwiUmVzb2x1dGlvbjE2MDB4MTIwME9wdGlvbiIsIlJlc29sdXRpb24xOTIweDE0NDBPcHRpb24iLCJFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUyIsIkVYUE9SVF9EQVRBX1RZUEUiLCJDU1YiLCJFWFBPUlRfREFUQV9UWVBFX09QVElPTlMiLCJ0b0xvd2VyQ2FzZSIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIkhUTUwiLCJKU09OIiwiRVhQT1JUX0hUTUxfTUFQX01PREVTIiwiUkVBRCIsIkVESVQiLCJFWFBPUlRfTUFQX0ZPUk1BVF9PUFRJT05TIiwiZW50cnkiLCJnZXRIVE1MTWFwTW9kZVRpbGVVcmwiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TIiwiREVGQVVMVF9VVUlEX0NPVU5UIiwiREVGQVVMVF9OT1RJRklDQVRJT05fTUVTU0FHRSIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTIiwiaW5mbyIsImVycm9yIiwid2FybmluZyIsInN1Y2Nlc3MiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJnbG9iYWwiLCJmaWxlIiwiVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUiLCJCQVNFX1NQRUVEIiwiRlBTIiwiQU5JTUFUSU9OX1dJTkRPVyIsImZyZWUiLCJpbmNyZW1lbnRhbCIsImludGVydmFsIiwiREVGQVVMVF9USU1FX0ZPUk1BVCIsIlNQRUVEX0NPTlRST0xfUkFOR0UiLCJTUEVFRF9DT05UUk9MX1NURVAiLCJHRU9DT0RFUl9EQVRBU0VUX05BTUUiLCJHRU9DT0RFUl9MQVlFUl9JRCIsIkdFT0NPREVSX0dFT19PRkZTRVQiLCJHRU9DT0RFUl9JQ09OX0NPTE9SIiwiR0VPQ09ERVJfSUNPTl9TSVpFIiwiRURJVE9SX0xBWUVSX0lEIiwiRURJVE9SX0xBWUVSX1BJQ0tJTkdfUkFESVVTIiwiRURJVE9SX01PREVTIiwiRFJBV19QT0xZR09OIiwiRFJBV19SRUNUQU5HTEUiLCJQTE9UX1RZUEVTIiwiaGlzdG9ncmFtIiwibGluZUNoYXJ0IiwiSU5JVF9GSUxURVJfSVRFTVNfSU5fRFJPUERPV04iLCJNQVhfR1BVX0ZJTFRFUlMiLCJNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiIsIk1BUF9JTkZPX0NIQVJBQ1RFUiIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJMT0FESU5HX01FVEhPRFMiLCJ1cGxvYWQiLCJzdG9yYWdlIiwidGlsZXNldCIsIkRFRkFVTFRfRkVBVFVSRV9GTEFHUyIsIkRBVEFTRVRfRk9STUFUUyIsInJvdyIsImNzdiIsImtlcGxlcmdsIiwiYXJyb3ciLCJkdWNrZGIiLCJNQVBfQ09OVFJPTFMiLCJ2aXNpYmxlTGF5ZXJzIiwidG9nZ2xlM2QiLCJzcGxpdE1hcCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJlZmZlY3QiLCJhbm5vdGF0aW9uIiwiYWlBc3Npc3RhbnQiLCJNYXBWaWV3TW9kZSIsIkdMT0JFX01JTl9aT09NIiwiR0xPQkVfTUFYX1pPT00iLCJHTE9CRV9NQVhfTEFUSVRVREUiLCJERUZBVUxUX0dMT0JFX0NPTkZJRyIsImF0bW9zcGhlcmUiLCJhemltdXRoIiwiYXppbXV0aEFuZ2xlIiwidGVybWluYXRvciIsInRlcm1pbmF0b3JPcGFjaXR5IiwiYmFzZW1hcCIsImxhYmVscyIsImxhYmVsc0NvbG9yIiwiYWRtaW5MaW5lcyIsImFkbWluTGluZXNDb2xvciIsIndhdGVyIiwid2F0ZXJDb2xvciIsInN1cmZhY2UiLCJzdXJmYWNlQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJzdGFycyIsIkdMT0JFX1NVUFBPUlRFRF9MQVlFUlMiLCJhcmMiLCJncmlkIiwiaGV4YWdvbiIsImNsdXN0ZXIiLCJoZXhhZ29uSWQiLCJ2ZWN0b3JUaWxlIiwiaGV4VGlsZSIsImxpbmUiLCJ0cmlwIiwicmFzdGVyVGlsZSIsImhlYXRtYXAiLCJzMiIsInRpbGUzZCIsImZsb3ciLCJNYXBTcGxpdE1vZGUiLCJQUk9KRUNURURfUElYRUxfU0laRV9NVUxUSVBMSUVSIiwiVEVYVF9PVVRMSU5FX01VTFRJUExJRVIiLCJkYXRhVGVzdElkcyIsImluZm9JY29uIiwid2FybmluZ0ljb24iLCJlcnJvckljb24iLCJzdWNjZXNzSWNvbiIsImNoZWNrbWFya0ljb24iLCJzb3J0YWJsZUxheWVySXRlbSIsInN0YXRpY0xheWVySXRlbSIsImxheWVyVGl0bGVFZGl0b3IiLCJyZW1vdmVMYXllckFjdGlvbiIsImxheWVyUGFuZWwiLCJzb3J0YWJsZUVmZmVjdEl0ZW0iLCJzdGF0aWNFZmZlY3RJdGVtIiwicHJvdmlkZXJMb2FkaW5nIiwicHJvdmlkZXJNYXBJbmZvUGFuZWwiLCJwcm92aWRlclNlbGVjdCIsImNsb3VkSGVhZGVyIiwicHJvdmlkZXJTaGFyZU1hcCIsIkRFRkFVTFRfVElNRVpPTkUiLCJERUZBVUxUX1BPU1RfUFJPQ0VTU0lOR19FRkZFQ1RfVFlQRSIsIkRFRkFVTFRfTElHSFRfQ09MT1IiLCJERUZBVUxUX0xJR0hUX0lOVEVOU0lUWSIsIkRFRkFVTFRfU0hBRE9XX0lOVEVOU0lUWSIsIkRFRkFVTFRfU0hBRE9XX0NPTE9SIiwiTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUyIsInBpY2siLCJjdXJyZW50IiwiYW5pbWF0aW9uIiwiREVGQVVMVF9MSUdIVF9BTkRfU0hBRE9XX1BST1BTIiwiRGF0ZSIsIm5vdyIsInRpbWVNb2RlIiwic2hhZG93SW50ZW5zaXR5Iiwic2hhZG93Q29sb3IiLCJzdW5MaWdodENvbG9yIiwic3VuTGlnaHRJbnRlbnNpdHkiLCJhbWJpZW50TGlnaHRDb2xvciIsImFtYmllbnRMaWdodEludGVuc2l0eSIsIkxJR0hUX0FORF9TSEFET1dfRUZGRUNUIiwibmFtZSIsInBhcmFtZXRlcnMiLCJtaW4iLCJtYXgiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiZGVmYXVsdFZhbHVlIiwiRElTVEFOQ0VfRk9HX1RZUEUiLCJTVVJGQUNFX0ZPR19UWVBFIiwiUE9TVFBST0NFU1NJTkdfRUZGRUNUUyIsImluayIsImJyaWdodG5lc3NDb250cmFzdCIsImh1ZVNhdHVyYXRpb24iLCJ2aWJyYW5jZSIsInNlcGlhIiwiZG90U2NyZWVuIiwiUEkiLCJjb2xvckhhbGZ0b25lIiwibm9pc2UiLCJ0cmlhbmdsZUJsdXIiLCJ6b29tQmx1ciIsInRpbHRTaGlmdCIsImVkZ2VXb3JrIiwidmlnbmV0dGUiLCJtYWduaWZ5IiwiaGV4YWdvbmFsUGl4ZWxhdGUiLCJkaXN0YW5jZUZvZyIsInN1cmZhY2VGb2ciLCJFRkZFQ1RfREVTQ1JJUFRJT05TIiwia2V5TmFtZSIsIlNZTkNfVElNRUxJTkVfTU9ERVMiLCJzdGFydCIsImVuZCIsIkdFT0FSUk9XX01FVEFEQVRBX0tFWSIsIkdFT0FSUk9XX0VYVEVOU0lPTlMiLCJMT0FERVJTX0NETl9WRVJTSU9OIiwiTE9BREVSU19DRE5fVVJMIiwiZ2V0TG9hZGVyT3B0aW9ucyIsIm12dCIsIndvcmtlclVybCIsIm5weSIsIkNVU1RPTV9TQ0VORUdSQVBIX01PREVMX0lEIiwiTU9ERUxTX0JBU0VfVVJMIiwiVFJJUF9MQVlFUl9TQ0VORUdSQVBIX01PREVMUyIsImFuZ2xlcyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZhdWx0LXNldHRpbmdzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBrZXlNaXJyb3IgZnJvbSAna2V5bWlycm9yJztcblxuaW1wb3J0IHtcbiAgQmFzZU1hcFN0eWxlLFxuICBFZmZlY3REZXNjcmlwdGlvbixcbiAgUkdCQUNvbG9yLFxuICBTeW5jVGltZWxpbmVNb2RlLFxuICBCYXNlTWFwQ29sb3JNb2RlcyxcbiAgTWVyZ2Vcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBzY2FsZUxpbmVhcixcbiAgc2NhbGVMb2csXG4gIHNjYWxlT3JkaW5hbCxcbiAgc2NhbGVQb2ludCxcbiAgc2NhbGVRdWFudGlsZSxcbiAgc2NhbGVRdWFudGl6ZSxcbiAgc2NhbGVTcXJ0LFxuICBzY2FsZVRocmVzaG9sZFxufSBmcm9tICdkMy1zY2FsZSc7XG5pbXBvcnQge1RPT0xUSVBfRk9STUFUX1RZUEVTfSBmcm9tICcuL3Rvb2x0aXAnO1xuXG5leHBvcnQgY29uc3QgQUNUSU9OX1BSRUZJWCA9ICdAQGtlcGxlci5nbC8nO1xuZXhwb3J0IGNvbnN0IEtFUExFUl9VTkZPTERFRF9CVUNLRVQgPSAnaHR0cHM6Ly9zdHVkaW8tcHVibGljLWRhdGEuZm91cnNxdWFyZS5jb20vc3RhdGljcy9rZXBsZXJnbCc7XG5leHBvcnQgY29uc3QgQkFTRU1BUF9JQ09OX1BSRUZJWCA9IGBnZW9kdWRlYDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUEJPWF9BUElfVVJMID0gJ2h0dHBzOi8vYXBpLm1hcGJveC5jb20nO1xuZXhwb3J0IGNvbnN0IFRSQU5TSVRJT05fRFVSQVRJT04gPSAwO1xuXG4vLyBNb2RhbCBJZHNcbi8qKlxuICogTW9kYWwgaWQ6IGRhdGEgdGFibGVcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERBVEFfVEFCTEVfSUQgPSAnZGF0YVRhYmxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGRlbGV0ZSBkYXRhc2V0IGNvbmZpcm0gZGlhbG9nXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUxFVEVfREFUQV9JRCA9ICdkZWxldGVEYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfREFUQV9JRCA9ICdhZGREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBpbWFnZSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNQUdFX0lEID0gJ2V4cG9ydEltYWdlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9JRCA9ICdleHBvcnREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBjdXN0b20gbWFwIHN0eWxlIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfTUFQX1NUWUxFX0lEID0gJ2FkZE1hcFN0eWxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBtYXAgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfSUQgPSAnZXhwb3J0TWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCB2aWRlbyBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX1ZJREVPX0lEID0gJ2V4cG9ydFZpZGVvJztcbi8qKlxuICogTW9kYWwgaWQ6IHNhdmUgbWFwIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBTQVZFX01BUF9JRCA9ICdzYXZlTWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IGNvbmZpcm0gdG8gb3ZlcndyaXRlIHNhdmVkIG1hcFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgT1ZFUldSSVRFX01BUF9JRCA9ICdvdmVyd3JpdGVNYXAnO1xuLyoqXG4gKiBNb2RhbCBpZDogc2hhcmUgbWFwIHVybCBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgU0hBUkVfTUFQX0lEID0gJ3NoYXJlTWFwJztcblxuZXhwb3J0IGNvbnN0IEtFUExFUl9HTF9OQU1FID0gJ2tlcGxlci5nbCc7XG5cbi8vIF9fUEFDS0FHRV9WRVJTSU9OX18gaXMgYXV0b21hdGljYWxseSBpbmplY3RlZCBieSBCYWJlbC9Fc2J1aWxkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzc1xuLy8gU2luY2Ugd2UgYXJlIGluamVjdGluZyB0aGlzIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcyB3aXRoIGJhYmVsXG4vLyB3aGlsZSBkZXZlbG9waW5nIFZFUlNJT04gaXMgbm90IGRlZmluZWQsIHdlIGNhcHR1cmUgdGhlIGV4Y2VwdGlvbiBhbmQgcmV0dXJuXG4vLyBhbiBlbXB0eSBzdHJpbmcgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byByZXRyaWV2ZSB0aGUgbGF0ZXN0IHVtZCB2ZXJzaW9uXG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1ZFUlNJT04gPSAnX19QQUNLQUdFX1ZFUlNJT05fXyc7XG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1dFQlNJVEUgPSAnaHR0cDovL2tlcGxlci5nbC8nO1xuXG5leHBvcnQgY29uc3QgRElNRU5TSU9OUyA9IHtcbiAgc2lkZVBhbmVsOiB7XG4gICAgd2lkdGg6IDMwMCxcbiAgICBtYXJnaW46IHt0b3A6IDEyLCBsZWZ0OiAxMiwgYm90dG9tOiAxMiwgcmlnaHQ6IDIwfSxcbiAgICBoZWFkZXJIZWlnaHQ6IDk2XG4gIH0sXG4gIG1hcENvbnRyb2w6IHtcbiAgICB3aWR0aDogMTg0LFxuICAgIHBhZGRpbmc6IDEyLFxuICAgIG1hcExlZ2VuZDoge1xuICAgICAgcGlubmVkOiB7XG4gICAgICAgIGJvdHRvbTogMjIsXG4gICAgICAgIHJpZ2h0OiAxMlxuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBUaGVtZSBuYW1lIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBgS2VwbGVyR2xgIGBwcm9wLnRoZW1lYC5cbiAqIEF2YWlsYWJsZSB0aGVtZXMgYXJlIGBUSEVNRS5saWdodGAgYW5kIGBUSEVNRS5kYXJrYC4gRGVmYXVsdCB0aGVtZSBpcyBgVEhFTUUuZGFya2BcbiAqIEBjb25zdGFudFxuICogQHR5cGUge29iamVjdH1cbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBgYGBqc1xuICogY29uc3QgTWFwID0gKCkgPT4gPEtlcGxlckdsIHRoZW1lPXtUSEVNRS5saWdodH0gaWQ9XCJtYXBcIi8+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IFRIRU1FID0ga2V5TWlycm9yKHtcbiAgbGlnaHQ6IG51bGwsXG4gIGRhcms6IG51bGwsXG4gIGJhc2U6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgU0lERUJBUl9QQU5FTFMgPSBbXG4gIHtcbiAgICBpZDogJ2xheWVyJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmxheWVyJyxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ZpbHRlcicsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5maWx0ZXInLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnaW50ZXJhY3Rpb24nLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMuaW50ZXJhY3Rpb24nLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnbWFwJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmJhc2VtYXAnLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IFBBTkVMX1ZJRVdfVE9HR0xFUyA9IGtleU1pcnJvcih7XG4gIGxpc3Q6IG51bGwsXG4gIGJ5RGF0YXNldDogbnVsbFxufSk7XG5cbi8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbmV4cG9ydCBjb25zdCBQQU5FTFMgPSBTSURFQkFSX1BBTkVMUztcblxuLy8gTUFQIFNUWUxFU1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CTERHX0NPTE9SID0gJyNEMUNFQzcnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SID0gJyMwMDAwMDAnO1xuXG4vLyBhc3Npc3RzIGluIGlkZW50aWZ5aW5nIGJhc2VtYXAgYmFja2dyb3VuZCBsYXllcnMgd2hlbiBhdXRvLWRldGVybWluaW5nIHRoZSBiYWNrZ3JvdW5kQ29sb3JcbmV4cG9ydCBjb25zdCBCQVNFX01BUF9CQUNLR1JPVU5EX0xBWUVSX0lEUyA9IFsnYmFja2dyb3VuZCcsICdiZycsICdsYW5kJywgJ3dhdGVyJ107XG5cbmV4cG9ydCBjb25zdCBCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUcgPSAnQmFja2dyb3VuZCc7XG5cbmV4cG9ydCBjb25zdCBUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUcgPSAnM2QgYnVpbGRpbmcnO1xuXG5leHBvcnQgdHlwZSBERUZBVUxUX0xBWUVSX0dST1VQID0ge1xuICBzbHVnOiBzdHJpbmc7XG4gIGZpbHRlcjogKHZhbHVlKSA9PiBib29sZWFuO1xuICBkZWZhdWx0VmlzaWJpbGl0eTogYm9vbGVhbjtcbiAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlPzogYm9vbGVhbjtcbiAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU/OiBib29sZWFuO1xuICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBCQUNLR1JPVU5EX0xBWUVSX0dST1VQOiBERUZBVUxUX0xBWUVSX0dST1VQID0ge1xuICBzbHVnOiBCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUcsXG4gIGZpbHRlcjogKCkgPT4gZmFsc2UsXG4gIGRlZmF1bHRWaXNpYmlsaXR5OiBmYWxzZSxcbiAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiBmYWxzZSxcbiAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU6IGZhbHNlLFxuICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiB0cnVlXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9HUk9VUFM6IERFRkFVTFRfTEFZRVJfR1JPVVBbXSA9IFtcbiAge1xuICAgIHNsdWc6ICdsYWJlbCcsXG4gICAgZmlsdGVyOiAoe2lkLCB0eXBlfSkgPT4gaWQubWF0Y2goLyg/PShsYWJlbHxwbGFjZS18cG9pLSkpLykgfHwgdHlwZT8ubWF0Y2goLyg/PShzeW1ib2wpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ3JvYWQnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0ocm9hZHxyYWlsd2F5fHR1bm5lbHxzdHJlZXR8YnJpZGdlKSkoPyEuKmxhYmVsKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2JvcmRlcicsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goL2JvcmRlcnxib3VuZGFyaWVzfGJvdW5kYXJ5LyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IGZhbHNlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2J1aWxkaW5nJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvYnVpbGRpbmcvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZSxcbiAgICBpc1Zpc2liaWxpdHlUb2dnbGVBdmFpbGFibGU6IHRydWUsXG4gICAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU6IHRydWUsXG4gICAgaXNDb2xvclBpY2tlckF2YWlsYWJsZTogZmFsc2VcbiAgfSxcbiAge1xuICAgIHNsdWc6ICd3YXRlcicsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PSh3YXRlcnxzdHJlYW18ZmVycnkpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2xhbmQnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0ocGFya3N8bGFuZGNvdmVyfGluZHVzdHJpYWx8c2FuZHxoaWxsc2hhZGUpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogVEhSRUVfRF9CVUlMRElOR19MQVlFUl9HUk9VUF9TTFVHLFxuICAgIGZpbHRlcjogKCkgPT4gZmFsc2UsXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IGZhbHNlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiB0cnVlXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBCQVNFX01BUF9DT0xPUl9NT0RFUyA9IGtleU1pcnJvcih7XG4gIE5PTkU6IG51bGwsXG4gIERBUks6IG51bGwsXG4gIExJR0hUOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IE5PX01BUF9JRCA9ICdub19tYXAnO1xuXG4vLyBGYWxsYmFjayBzdHlsZSB0byB1c2Ugd2hlbiBzdHlsZXMgYXJlIGJlaW5nIGZldGNoZWQsIG9yIHdoZW5cbi8vIGEgc3R5bGUgZmFpbHMgdG8gZmV0Y2hcbmV4cG9ydCBjb25zdCBFTVBUWV9NQVBCT1hfU1RZTEUgPSB7XG4gIHZlcnNpb246IDgsXG4gIHNvdXJjZXM6IHt9LFxuICBsYXllcnM6IFtdXG59O1xuXG5leHBvcnQgY29uc3QgTUFQX0xJQl9PUFRJT05TID0ge1xuICBNQVBCT1g6ICdtYXBib3gnIGFzIGNvbnN0LFxuICBNQVBMSUJSRTogJ21hcGxpYnJlJyBhcyBjb25zdFxufTtcblxuLyoqIE1hcGJveCBHTCBKUyBkb2VzIG5vdCBzdXBwb3J0IHBpdGNoIGFib3ZlIDYwIGRlZ3JlZXMgKi9cbmV4cG9ydCBjb25zdCBNQVBCT1hfTUFYX1BJVENIID0gNjA7XG5cbmV4cG9ydCB0eXBlIEJhc2VNYXBMaWJyYXJ5VHlwZSA9ICdtYXBib3gnIHwgJ21hcGxpYnJlJztcblxuZXhwb3J0IGNvbnN0IE5PX0JBU0VNQVBfSUNPTiA9IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L05PX0JBU0VNQVAucG5nYDtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQkFTRV9NQVBfU1RZTEUgPSAnZGFyay1tYXR0ZXInO1xuXG50eXBlIERlZmF1bHRCYXNlTWFwU3R5bGUgPSBNZXJnZTxcbiAgQmFzZU1hcFN0eWxlLFxuICB7XG4gICAgY29sb3JNb2RlOiBCYXNlTWFwQ29sb3JNb2RlcztcbiAgfVxuPjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9fQkFTRU1BUF9TVFlMRTogRGVmYXVsdEJhc2VNYXBTdHlsZSA9IHtcbiAgaWQ6IE5PX01BUF9JRCxcbiAgbGFiZWw6ICdObyBCYXNlbWFwJyxcbiAgdXJsOiAnJyxcbiAgaWNvbjogTk9fQkFTRU1BUF9JQ09OLFxuICBsYXllckdyb3VwczogW0JBQ0tHUk9VTkRfTEFZRVJfR1JPVVBdLFxuICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLk5PTkUsXG4gIHN0eWxlOiBFTVBUWV9NQVBCT1hfU1RZTEVcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUEJPWF9TVFlMRVM6IERlZmF1bHRCYXNlTWFwU3R5bGVbXSA9IFtcbiAge1xuICAgIGlkOiAnZGFyaycsXG4gICAgbGFiZWw6ICdEYXJrJyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pvcWJiZjZsOWszMDJzbDk2dHl2a2EwOScsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vVUJFUl9EQVJLX1YyLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuREFSSyxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ2xpZ2h0J1xuICB9LFxuICB7XG4gICAgaWQ6ICdsaWdodCcsXG4gICAgbGFiZWw6ICdMaWdodCcsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2Nqb3FiOWozMzlrMWYyc2w5dDVpYzVibjQnLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1VCRVJfTElHSFRfVjIucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFMsXG4gICAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVCxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ2RhcmsnXG4gIH0sXG4gIHtcbiAgICBpZDogJ211dGVkJyxcbiAgICBsYWJlbDogJ011dGVkIExpZ2h0JyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pmeWwwM2twMXR1bDJzbWY1djJ0YmRkNCcsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vVUJFUl9NVVRFRF9MSUdIVC5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkxJR0hULFxuICAgIGNvbXBsaW1lbnRhcnlTdHlsZUlkOiAnbXV0ZWRfbmlnaHQnXG4gIH0sXG4gIHtcbiAgICBpZDogJ211dGVkX25pZ2h0JyxcbiAgICBsYWJlbDogJ011dGVkIE5pZ2h0JyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pmeGhsaWttYWoxYjJzb3l6ZXZueXdncycsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vVUJFUl9NVVRFRF9OSUdIVC5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUkssXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdtdXRlZCdcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFQQk9YX1NBVEVMSVRFX1NUWUxFUzogRGVmYXVsdEJhc2VNYXBTdHlsZVtdID0gW1xuICB7XG4gICAgaWQ6ICdzYXRlbGxpdGUnLFxuICAgIGxhYmVsOiAnU2F0ZWxsaXRlIHdpdGggc3RyZWV0cycsXG4gICAgdXJsOiBgbWFwYm94Oi8vc3R5bGVzL21hcGJveC9zYXRlbGxpdGUtc3RyZWV0cy12MTFgLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1VCRVJfU0FURUxMSVRFLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuTk9ORVxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBMSUJSRV9TVFlMRVM6IERlZmF1bHRCYXNlTWFwU3R5bGVbXSA9IFtcbiAge1xuICAgIGlkOiAnZGFyay1tYXR0ZXInLFxuICAgIGxhYmVsOiAnRGFya01hdHRlcicsXG4gICAgdXJsOiAnaHR0cHM6Ly9iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vZ2wvZGFyay1tYXR0ZXItZ2wtc3R5bGUvc3R5bGUuanNvbicsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vREFSS01BVFRFUi5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUkssXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdwb3NpdHJvbidcbiAgfSxcbiAge1xuICAgIGlkOiAncG9zaXRyb24nLFxuICAgIGxhYmVsOiAnUG9zaXRyb24nLFxuICAgIHVybDogJ2h0dHBzOi8vYmFzZW1hcHMuY2FydG9jZG4uY29tL2dsL3Bvc2l0cm9uLWdsLXN0eWxlL3N0eWxlLmpzb24nLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1BPU0lUUk9OLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuTElHSFQsXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdkYXJrLW1hdHRlcidcbiAgfSxcbiAge1xuICAgIGlkOiAndm95YWdlcicsXG4gICAgbGFiZWw6ICdWb3lhZ2VyJyxcbiAgICB1cmw6ICdodHRwczovL2Jhc2VtYXBzLmNhcnRvY2RuLmNvbS9nbC92b3lhZ2VyLWdsLXN0eWxlL3N0eWxlLmpzb24nLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1ZPWUFHRVIucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFMsXG4gICAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVCxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ2RhcmstbWF0dGVyJ1xuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBfU1RZTEVTID0gW1xuICBERUZBVUxUX05PX0JBU0VNQVBfU1RZTEUsXG4gIC4uLkRFRkFVTFRfTUFQTElCUkVfU1RZTEVTLFxuICAuLi5ERUZBVUxUX01BUEJPWF9TQVRFTElURV9TVFlMRVMsXG4gIC4uLkRFRkFVTFRfTUFQQk9YX1NUWUxFU1xuXTtcblxuZXhwb3J0IGNvbnN0IEdFT0pTT05fRklFTERTID0ge1xuICBnZW9qc29uOiBbJ19nZW9qc29uJywgJ2FsbF9wb2ludHMnLCAnZ2VvanNvbiddXG59O1xuXG5leHBvcnQgY29uc3QgSUNPTl9GSUVMRFMgPSB7XG4gIGljb246IFsnaWNvbiddXG59O1xuXG5leHBvcnQgY29uc3QgVFJJUF9QT0lOVF9GSUVMRFM6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtcbiAgWydsYXQnLCAnbG5nJ10sXG4gIFsnbGF0JywgJ2xvbiddLFxuICBbJ2xhdCcsICdsb25nJ10sXG4gIFsnbGF0aXR1ZGUnLCAnbG9uZ2l0dWRlJ11cbl07XG5cbmV4cG9ydCBjb25zdCBBTFRJVFVERV9GSUVMRFMgPSBbJ2FsdCcsICdhbHRpdHVkZSddO1xuZXhwb3J0IGNvbnN0IFRSSVBfQVJDX0ZJRUxEUyA9IHtcbiAgbGF0MDogJ2JlZ2ludHJpcCcsXG4gIGxuZzA6ICdiZWdpbnRyaXAnLFxuICBsYXQxOiAnZHJvcG9mZicsXG4gIGxuZzE6ICdkcm9wb2ZmJ1xufTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9UWVBFUyA9IGtleU1pcnJvcih7XG4gIHJhbmdlOiBudWxsLFxuICBzZWxlY3Q6IG51bGwsXG4gIGlucHV0OiBudWxsLFxuICB0aW1lUmFuZ2U6IG51bGwsXG4gIG11bHRpU2VsZWN0OiBudWxsLFxuICBwb2x5Z29uOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9WSUVXX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgc2lkZTogbnVsbCxcbiAgZW5sYXJnZWQ6IG51bGwsXG4gIG1pbmlmaWVkOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRklMVEVSX1ZJRVdfVFlQRSA9IEZJTFRFUl9WSUVXX1RZUEVTLnNpZGU7XG5cbmV4cG9ydCB0eXBlIFNDQUxFX1RZUEVTX0RFRiA9IHtcbiAgb3JkaW5hbDogJ29yZGluYWwnO1xuICBxdWFudGlsZTogJ3F1YW50aWxlJztcbiAgcXVhbnRpemU6ICdxdWFudGl6ZSc7XG4gIGxpbmVhcjogJ2xpbmVhcic7XG4gIHNxcnQ6ICdzcXJ0JztcbiAgbG9nOiAnbG9nJztcbiAgcG9pbnQ6ICdwb2ludCc7XG4gIHRocmVzaG9sZDogJ3RocmVzaG9sZCc7XG4gIGN1c3RvbTogJ2N1c3RvbSc7XG4gIGN1c3RvbU9yZGluYWw6ICdjdXN0b21PcmRpbmFsJztcbn07XG5cbmV4cG9ydCBjb25zdCBTQ0FMRV9UWVBFUzogU0NBTEVfVFlQRVNfREVGID0ga2V5TWlycm9yKHtcbiAgb3JkaW5hbDogbnVsbCxcbiAgcXVhbnRpbGU6IG51bGwsXG4gIHF1YW50aXplOiBudWxsLFxuICBsaW5lYXI6IG51bGwsXG4gIHNxcnQ6IG51bGwsXG4gIGxvZzogbnVsbCxcbiAgdGhyZXNob2xkOiBudWxsLFxuICBjdXN0b206IG51bGwsXG4gIGN1c3RvbU9yZGluYWw6IG51bGwsXG4gIC8vIG9yZGluYWwgZG9tYWluIHRvIGxpbmVhciByYW5nZVxuICBwb2ludDogbnVsbFxufSk7XG5leHBvcnQgY29uc3QgU0NBTEVfVFlQRV9OQU1FUzoge1trZXkgaW4ga2V5b2YgU0NBTEVfVFlQRVNfREVGXTogc3RyaW5nfSA9IHtcbiAgb3JkaW5hbDogJ09yZGluYWwnLFxuICBxdWFudGlsZTogJ1F1YW50aWxlJyxcbiAgcXVhbnRpemU6ICdRdWFudGl6ZScsXG4gIGxpbmVhcjogJ0xpbmVhcicsXG4gIHNxcnQ6ICdTcXJ0JyxcbiAgbG9nOiAnTG9nJyxcbiAgdGhyZXNob2xkOiAnVGhyZXNob2xkJyxcbiAgY3VzdG9tOiAnQ3VzdG9tIEJyZWFrcycsXG4gIGN1c3RvbU9yZGluYWw6ICdDdXN0b20gT3JkaW5hbCcsXG4gIHBvaW50OiAnUG9pbnQnXG59O1xuXG5leHBvcnQgdHlwZSBTQ0FMRV9GVU5DX1RZUEUgPSB7XG4gIFtrZXkgaW4ga2V5b2YgU0NBTEVfVFlQRVNfREVGXTogKCkgPT4gbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IFNDQUxFX0ZVTkMgPSB7XG4gIFtTQ0FMRV9UWVBFUy5saW5lYXJdOiBzY2FsZUxpbmVhcixcbiAgW1NDQUxFX1RZUEVTLnF1YW50aXplXTogc2NhbGVRdWFudGl6ZSxcbiAgW1NDQUxFX1RZUEVTLnF1YW50aWxlXTogc2NhbGVRdWFudGlsZSxcbiAgW1NDQUxFX1RZUEVTLm9yZGluYWxdOiBzY2FsZU9yZGluYWwsXG4gIFtTQ0FMRV9UWVBFUy5zcXJ0XTogc2NhbGVTcXJ0LFxuICBbU0NBTEVfVFlQRVMubG9nXTogc2NhbGVMb2csXG4gIFtTQ0FMRV9UWVBFUy5wb2ludF06IHNjYWxlUG9pbnQsXG4gIFtTQ0FMRV9UWVBFUy50aHJlc2hvbGRdOiBzY2FsZVRocmVzaG9sZCxcbiAgW1NDQUxFX1RZUEVTLmN1c3RvbV06IHNjYWxlVGhyZXNob2xkLFxuICBbU0NBTEVfVFlQRVMuY3VzdG9tT3JkaW5hbF06IHNjYWxlT3JkaW5hbFxufTtcblxuZXhwb3J0IGNvbnN0IEFMTF9GSUVMRF9UWVBFUyA9IGtleU1pcnJvcih7XG4gIGJvb2xlYW46IG51bGwsXG4gIGRhdGU6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGludGVnZXI6IG51bGwsXG4gIHJlYWw6IG51bGwsXG4gIHN0cmluZzogbnVsbCxcbiAgdGltZXN0YW1wOiBudWxsLFxuICBwb2ludDogbnVsbCxcbiAgYXJyYXk6IG51bGwsXG4gIG9iamVjdDogbnVsbCxcbiAgZ2VvYXJyb3c6IG51bGwsXG4gIGgzOiBudWxsXG59KTtcblxuLy8gRGF0YSBUYWJsZVxuZXhwb3J0IGNvbnN0IFNPUlRfT1JERVIgPSBrZXlNaXJyb3Ioe1xuICBBU0NFTkRJTkc6IG51bGwsXG4gIERFU0NFTkRJTkc6IG51bGwsXG4gIFVOU09SVDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT04gPSBrZXlNaXJyb3Ioe1xuICBTT1JUX0FTQzogbnVsbCxcbiAgU09SVF9ERVM6IG51bGwsXG4gIFVOU09SVDogbnVsbCxcbiAgUElOOiBudWxsLFxuICBVTlBJTjogbnVsbCxcbiAgQ09QWTogbnVsbCxcbiAgRk9STUFUX0NPTFVNTjogbnVsbFxufSk7XG5cbmV4cG9ydCB0eXBlIFRhYmxlT3B0aW9uID0ge1xuICB2YWx1ZTogJ1NPUlRfQVNDJyB8ICdTT1JUX0RFUycgfCAnVU5TT1JUJyB8ICdQSU4nIHwgJ1VOUElOJyB8ICdDT1BZJyB8ICdGT1JNQVRfQ09MVU1OJztcbiAgZGlzcGxheTogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIGNvbmRpdGlvbj86IChwcm9wczogYW55KSA9PiBib29sZWFuO1xufTtcbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT05fTElTVDogVGFibGVPcHRpb25bXSA9IFtcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uU09SVF9BU0MsXG4gICAgZGlzcGxheTogJ1NvcnQgQXNjZW5kaW5nJyxcbiAgICBpY29uOiAnQXJyb3dVcCcsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5zb3J0VGFibGVDb2x1bW4gJiYgcHJvcHMuc29ydE1vZGUgIT09IFNPUlRfT1JERVIuQVNDRU5ESU5HXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlNPUlRfREVTLFxuICAgIGRpc3BsYXk6ICdTb3J0IERlc2NlbmRpbmcnLFxuICAgIGljb246ICdBcnJvd0Rvd24nLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydFRhYmxlQ29sdW1uICYmIHByb3BzLnNvcnRNb2RlICE9PSBTT1JUX09SREVSLkRFU0NFTkRJTkdcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uVU5TT1JULFxuICAgIGRpc3BsYXk6ICdVbnNvcnQgQ29sdW1uJyxcbiAgICBpY29uOiAnQ2FuY2VsJyxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLmlzU29ydGVkXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlBJTixcbiAgICBkaXNwbGF5OiAnUGluIENvbHVtbicsXG4gICAgaWNvbjogJ1BpbicsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiAhcHJvcHMuaXNQaW5uZWRcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uVU5QSU4sXG4gICAgZGlzcGxheTogJ1VucGluIENvbHVtbicsXG4gICAgaWNvbjogJ0NhbmNlbCcsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5pc1Bpbm5lZFxuICB9LFxuICB7dmFsdWU6IFRBQkxFX09QVElPTi5DT1BZLCBkaXNwbGF5OiAnQ29weSBDb2x1bW4nLCBpY29uOiAnQ2xpcGJvYXJkJ30sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLkZPUk1BVF9DT0xVTU4sXG4gICAgZGlzcGxheTogJ0Zvcm1hdCBDb2x1bW4nLFxuICAgIGljb246ICdIYXNoJyxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLnNldERpc3BsYXlGb3JtYXRcbiAgfVxuXTtcblxuY29uc3QgWUVMTE9XID0gJzI0OCwgMTk0LCAyOCc7XG5jb25zdCBQSU5LID0gJzI0MiwgMTUyLCAxNjMnO1xuY29uc3QgUFVSUExFID0gJzE2MCwgMTA2LCAyMDYnO1xuY29uc3QgQkxVRSA9ICcxNDAsIDIxMCwgMjA1JztcbmNvbnN0IEJMVUUyID0gJzEwNiwgMTYwLCAyMDYnO1xuY29uc3QgQkxVRTMgPSAnMCwgMTcyLCAyMzcnO1xuY29uc3QgR1JFRU4gPSAnMTA2LCAxNjAsIDU2JztcbmNvbnN0IEdSRUVOMiA9ICc3NCwgMTY1LCAxNTAnO1xuY29uc3QgUkVEID0gJzIzNywgODgsIDEwNic7XG5jb25zdCBPUkFOR0UgPSAnMjMxLCAxMTAsIDU4JztcblxuZXhwb3J0IGNvbnN0IEZJRUxEX1RZUEVfRElTUExBWSA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXToge1xuICAgIGxhYmVsOiAnYm9vbCcsXG4gICAgY29sb3I6IFBJTktcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXToge1xuICAgIGxhYmVsOiAnZGF0ZScsXG4gICAgY29sb3I6IFBVUlBMRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb25dOiB7XG4gICAgbGFiZWw6ICdnZW8nLFxuICAgIGNvbG9yOiBCTFVFMlxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2Fycm93XToge1xuICAgIGxhYmVsOiAnZ2VvJyxcbiAgICBjb2xvcjogQkxVRTJcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXToge1xuICAgIGxhYmVsOiAnaW50JyxcbiAgICBjb2xvcjogWUVMTE9XXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMucmVhbF06IHtcbiAgICBsYWJlbDogJ2Zsb2F0JyxcbiAgICBjb2xvcjogWUVMTE9XXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuc3RyaW5nXToge1xuICAgIGxhYmVsOiAnc3RyaW5nJyxcbiAgICBjb2xvcjogQkxVRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IHtcbiAgICBsYWJlbDogJ3RpbWUnLFxuICAgIGNvbG9yOiBHUkVFTlxuICB9LFxuICAvLyBmaWVsZCBwYWlyc1xuICBbQUxMX0ZJRUxEX1RZUEVTLnBvaW50XToge1xuICAgIGxhYmVsOiAncG9pbnQnLFxuICAgIGNvbG9yOiBCTFVFM1xuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmFycmF5XToge1xuICAgIGxhYmVsOiAnYXJyYXknLFxuICAgIGNvbG9yOiBPUkFOR0VcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5vYmplY3RdOiB7XG4gICAgbGFiZWw6ICdvYmplY3QnLFxuICAgIGNvbG9yOiBHUkVFTjJcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5oM106IHtcbiAgICBsYWJlbDogJ2gzJyxcbiAgICBjb2xvcjogQkxVRVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfQ09MT1JTID0ge1xuICBkZWZhdWx0OiBSRURcbn07XG5leHBvcnQgY29uc3QgSElHSExJR0hfQ09MT1JfM0Q6IFJHQkFDb2xvciA9IFsyNTUsIDI1NSwgMjU1LCA2MF07XG5leHBvcnQgY29uc3QgQ0hBTk5FTF9TQ0FMRVMgPSBrZXlNaXJyb3Ioe1xuICBjb2xvcjogbnVsbCxcbiAgcmFkaXVzOiBudWxsLFxuICBzaXplOiBudWxsLFxuICBjb2xvckFnZ3I6IG51bGwsXG4gIHNpemVBZ2dyOiBudWxsLFxuICBhbmdsZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBBR0dSRUdBVElPTl9UWVBFUzoge1xuICAvLyBkZWZhdWx0XG4gIGNvdW50OiAnY291bnQnO1xuICAvLyBsaW5lYXJcbiAgYXZlcmFnZTogJ2F2ZXJhZ2UnO1xuICBtYXhpbXVtOiAnbWF4aW11bSc7XG4gIG1pbmltdW06ICdtaW5pbXVtJztcbiAgbWVkaWFuOiAnbWVkaWFuJztcbiAgc3RkZXY6ICdzdGRldic7XG4gIHN1bTogJ3N1bSc7XG4gIHZhcmlhbmNlOiAndmFyaWFuY2UnO1xuICAvLyBvcmRpbmFsXG4gIG1vZGU6ICdtb2RlJztcbiAgY291bnRVbmlxdWU6ICdjb3VudFVuaXF1ZSc7XG59ID0ge1xuICAvLyBkZWZhdWx0XG4gIGNvdW50OiAnY291bnQnLFxuICAvLyBsaW5lYXJcbiAgYXZlcmFnZTogJ2F2ZXJhZ2UnLFxuICBtYXhpbXVtOiAnbWF4aW11bScsXG4gIG1pbmltdW06ICdtaW5pbXVtJyxcbiAgbWVkaWFuOiAnbWVkaWFuJyxcbiAgc3RkZXY6ICdzdGRldicsXG4gIHN1bTogJ3N1bScsXG4gIHZhcmlhbmNlOiAndmFyaWFuY2UnLFxuICAvLyBvcmRpbmFsXG4gIG1vZGU6ICdtb2RlJyxcbiAgY291bnRVbmlxdWU6ICdjb3VudFVuaXF1ZSdcbn07XG5cbmV4cG9ydCBjb25zdCBBR0dSRUdBVElPTl9UWVBFX09QVElPTlM6IHtpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nfVtdID0gT2JqZWN0LmVudHJpZXMoXG4gIEFHR1JFR0FUSU9OX1RZUEVTXG4pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICBpZDoga2V5LFxuICBsYWJlbDpcbiAgICBrZXkgPT09ICdzdGRldidcbiAgICAgID8gJ1N0ZCBEZXZpYXRpb24nXG4gICAgICA6IGtleSA9PT0gJ2NvdW50VW5pcXVlJ1xuICAgICAgPyAnQ291bnQgVW5pcXVlJ1xuICAgICAgOiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICA/IHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSlcbiAgICAgIDogdmFsdWVcbn0pKTtcblxuZXhwb3J0IGNvbnN0IGxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdOiBbU0NBTEVfVFlQRVMuc3FydF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgW0NIQU5ORUxfU0NBTEVTLmFuZ2xlXTogW1NDQUxFX1RZUEVTLmxpbmVhcl1cbn07XG5cbmNvbnN0IERFRkFVTFRfQUdHUkVHQVRJT05fQ09MT1JfU0NBTEVTID0gW1xuICBTQ0FMRV9UWVBFUy5xdWFudGl6ZSxcbiAgU0NBTEVfVFlQRVMucXVhbnRpbGUsXG4gIFNDQUxFX1RZUEVTLmN1c3RvbVxuXTtcblxuZXhwb3J0IGNvbnN0IGxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXTogW1xuICAgIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLm1lZGlhbixcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdGRldixcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2UsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMuY291bnRcbiAgXS5yZWR1Y2UoKHByZXYsIGN1cikgPT4ge1xuICAgIHByZXZbY3VyXSA9IERFRkFVTFRfQUdHUkVHQVRJT05fQ09MT1JfU0NBTEVTO1xuICAgIHJldHVybiBwcmV2O1xuICB9LCB7fSksXG5cbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW1dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tZWRpYW5dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5zdGRldl06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN1bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXVxuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgb3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsLCBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnJhZGl1c106IFtTQ0FMRV9UWVBFUy5wb2ludF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW1NDQUxFX1RZUEVTLnBvaW50XVxufTtcblxuZXhwb3J0IGNvbnN0IG9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgLy8gW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsLCBTQ0FMRV9UWVBFUy5saW5lYXJdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tb2RlXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudFVuaXF1ZV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGVdXG4gIH0sXG5cbiAgLy8gQ3VycmVudGx5IGRvZXNuJ3Qgc3VwcG9ydCB5ZXRcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge31cbn07XG5cbmV4cG9ydCBjb25zdCBub3RTdXBwb3J0ZWRTY2FsZU9wdHMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtdLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW10sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW11cbn07XG5cbmV4cG9ydCBjb25zdCBub3RTdXBwb3J0QWdnck9wdHMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7fSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge31cbn07XG5cbi8qKlxuICogRGVmYXVsdCBhZ2dyZWdhdGlvbiBhcmUgYmFzZWQgb24gb2N1bnRcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUdHUkVHQVRJT04gPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmNvdW50XTogREVGQVVMVF9BR0dSRUdBVElPTl9DT0xPUl9TQ0FMRVNcbiAgfSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudF06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ11cbiAgfVxufTtcblxuLyoqXG4gKiBEZWZpbmUgd2hhdCB0eXBlIG9mIHNjYWxlIG9wZXJhdGlvbiBpcyBhbGxvd2VkIG9uIGVhY2ggdHlwZSBvZiBmaWVsZHNcbiAqL1xuZXhwb3J0IGNvbnN0IEZJRUxEX09QVFMgPSB7XG4gIFtBTExfRklFTERfVFlQRVMuc3RyaW5nXToge1xuICAgIHR5cGU6ICdjYXRlZ29yaWNhbCcsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMucmVhbF06IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLmxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFXG4gICAgICBdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IHtcbiAgICB0eXBlOiAndGltZScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5ub3RTdXBwb3J0QWdnck9wdHNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVfVElNRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXToge1xuICAgIHR5cGU6ICdudW1lcmljYWwnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi57XG4gICAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAgIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtcbiAgICAgICAgICAuLi5saW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zW0NIQU5ORUxfU0NBTEVTLmNvbG9yXSxcbiAgICAgICAgICBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAuLi5saW5lYXJGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuTk9ORSxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREVDSU1BTCxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXToge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ub3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5vcmRpbmFsRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbVE9PTFRJUF9GT1JNQVRfVFlQRVMuTk9ORSwgVE9PTFRJUF9GT1JNQVRfVFlQRVMuQk9PTEVBTl1cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuZGF0ZV06IHtcbiAgICB0eXBlOiAndGltZScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1RPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb25dOiB7XG4gICAgdHlwZTogJ2dlb21ldHJ5JyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubm90U3VwcG9ydGVkU2NhbGVPcHRzLFxuICAgICAgLi4ubm90U3VwcG9ydEFnZ3JPcHRzXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogKCkgPT4gJy4uLicsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9hcnJvd106IHtcbiAgICB0eXBlOiAnZ2VvbWV0cnknLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5ub3RTdXBwb3J0ZWRTY2FsZU9wdHMsXG4gICAgICAuLi5ub3RTdXBwb3J0QWdnck9wdHNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiAoKSA9PiAnLi4uJyxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLm9iamVjdF06IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge30sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6ICgpID0+ICcuLi4nLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuYXJyYXldOiB7XG4gICAgdHlwZTogJ251bWVyaWNhbCcsXG4gICAgc2NhbGU6IHt9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiAoKSA9PiAnLi4uJyxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmgzXToge1xuICAgIHR5cGU6ICdoMycsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm5vdFN1cHBvcnRlZFNjYWxlT3B0cyxcbiAgICAgIC4uLm5vdFN1cHBvcnRBZ2dyT3B0c1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6ICgpID0+ICcuLi4nLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMgPSBPYmplY3Qua2V5cyhDSEFOTkVMX1NDQUxFUykucmVkdWNlKFxuICAoYWNjdSwga2V5KSA9PiAoe1xuICAgIC4uLmFjY3UsXG4gICAgW2tleV06IE9iamVjdC5rZXlzKEZJRUxEX09QVFMpLmZpbHRlcihcbiAgICAgIGZ0ID0+IEZJRUxEX09QVFNbZnRdLnNjYWxlW2tleV0gJiYgT2JqZWN0LmtleXMoRklFTERfT1BUU1tmdF0uc2NhbGVba2V5XSkubGVuZ3RoXG4gICAgKVxuICB9KSxcbiAge30gYXMge1tpZDogc3RyaW5nXTogc3RyaW5nW119XG4pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9DT0xPUiA9IHtcbiAgdHJpcEFyYzogJyM5MjI2QzYnLFxuICBiZWdpbnRyaXBfbGF0OiAnIzFFOTZCRScsXG4gIGRyb3BvZmZfbGF0OiAnI0ZGOTkxRicsXG4gIHJlcXVlc3RfbGF0OiAnIzUyQTM1Mydcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xBWUVSX0NPTE9SX1BBTEVUVEUgPSAnR2xvYmFsIFdhcm1pbmcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURV9TVEVQUyA9IDY7XG5cbi8vIGxldCB1c2VyIHBhc3MgaW4gZGVmYXVsdCB0b29sdGlwIGZpZWxkc1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVE9PTFRJUF9GSUVMRFM6IGFueVtdID0gW107XG5cbmV4cG9ydCBjb25zdCBOT19WQUxVRV9DT0xPUjogUkdCQUNvbG9yID0gWzAsIDAsIDAsIDBdO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QSUNLSU5HX1JBRElVUyA9IDM7XG5cbmV4cG9ydCBjb25zdCBPVkVSTEFZX0JMRU5ESU5HUyA9IHtcbiAgbm9ybWFsOiB7XG4gICAgbGFiZWw6ICdvdmVybGF5QmxlbmRpbmcubm9ybWFsJyxcbiAgICB2YWx1ZTogJ25vcm1hbCdcbiAgfSxcbiAgc2NyZWVuOiB7XG4gICAgbGFiZWw6ICdvdmVybGF5QmxlbmRpbmcuc2NyZWVuJyxcbiAgICB2YWx1ZTogJ3NjcmVlbidcbiAgfSxcbiAgZGFya2VuOiB7XG4gICAgbGFiZWw6ICdvdmVybGF5QmxlbmRpbmcuZGFya2VuJyxcbiAgICB2YWx1ZTogJ2RhcmtlbidcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExBWUVSX0JMRU5ESU5HUyA9IHtcbiAgYWRkaXRpdmU6IHtcbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcuYWRkaXRpdmUnLFxuICAgIGJsZW5kRnVuYzogWydTUkNfQUxQSEEnLCAnRFNUX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogJ0ZVTkNfQUREJ1xuICB9LFxuICBub3JtYWw6IHtcbiAgICAvLyByZWZlcmVuY2UgdG9cbiAgICAvLyBodHRwczovL2xpbW51LmNvbS93ZWJnbC1ibGVuZGluZy15b3VyZS1wcm9iYWJseS13cm9uZy9cbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcubm9ybWFsJyxcbiAgICBibGVuZEZ1bmM6IFsnU1JDX0FMUEhBJywgJ09ORV9NSU5VU19TUkNfQUxQSEEnLCAnT05FJywgJ09ORV9NSU5VU19TUkNfQUxQSEEnXSxcbiAgICBibGVuZEVxdWF0aW9uOiBbJ0ZVTkNfQUREJywgJ0ZVTkNfQUREJ11cbiAgfSxcbiAgc3VidHJhY3RpdmU6IHtcbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcuc3VidHJhY3RpdmUnLFxuICAgIGJsZW5kRnVuYzogWydPTkUnLCAnT05FX01JTlVTX0RTVF9DT0xPUicsICdTUkNfQUxQSEEnLCAnRFNUX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogWydGVU5DX1NVQlRSQUNUJywgJ0ZVTkNfQUREJ11cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IE1BWF9ERUZBVUxUX1RPT0xUSVBTID0gNTtcblxuZXhwb3J0IGNvbnN0IFJFU09MVVRJT05TID0ga2V5TWlycm9yKHtcbiAgT05FX1g6IG51bGwsXG4gIFRXT19YOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkFUSU9TID0ga2V5TWlycm9yKHtcbiAgU0NSRUVOOiBudWxsLFxuICBGT1VSX0JZX1RIUkVFOiBudWxsLFxuICBTSVhURUVOX0JZX05JTkU6IG51bGwsXG4gIENVU1RPTTogbnVsbFxufSk7XG5cbmV4cG9ydCB0eXBlIEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBrZXlvZiB0eXBlb2YgRVhQT1JUX0lNR19SQVRJT1M7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIGdldFNpemU6IChzY3JlZW5XOiBudW1iZXIsIHNjcmVlbkg6IG51bWJlcikgPT4ge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfTtcbn07XG5cbmV4cG9ydCBjb25zdCBTY3JlZW5SYXRpb09wdGlvbjogSW1hZ2VSYXRpb09wdGlvbiA9IHtcbiAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLlNDUkVFTixcbiAgbGFiZWw6ICdtb2RhbC5leHBvcnRJbWFnZS5yYXRpb09yaWdpbmFsU2NyZWVuJyxcbiAgZ2V0U2l6ZTogKHNjcmVlblcsIHNjcmVlbkgpID0+ICh7d2lkdGg6IHNjcmVlblcsIGhlaWdodDogc2NyZWVuSH0pXG59O1xuZXhwb3J0IGNvbnN0IEN1c3RvbVJhdGlvT3B0aW9uOiBJbWFnZVJhdGlvT3B0aW9uID0ge1xuICBpZDogRVhQT1JUX0lNR19SQVRJT1MuQ1VTVE9NLFxuICBoaWRkZW46IHRydWUsXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW9DdXN0b20nLFxuICBnZXRTaXplOiAobWFwVywgbWFwSCkgPT4gKHt3aWR0aDogbWFwVywgaGVpZ2h0OiBtYXBIfSlcbn07XG5leHBvcnQgY29uc3QgRm91ckJ5VGhyZWVSYXRpb09wdGlvbjogSW1hZ2VSYXRpb09wdGlvbiA9IHtcbiAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLkZPVVJfQllfVEhSRUUsXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW80XzMnLFxuICBnZXRTaXplOiBzY3JlZW5XID0+ICh7XG4gICAgd2lkdGg6IHNjcmVlblcsXG4gICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHNjcmVlblcgKiAwLjc1KVxuICB9KVxufTtcbmV4cG9ydCBjb25zdCBTaXh0ZWVuQnlOaW5lUmF0aW9PcHRpb246IEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBFWFBPUlRfSU1HX1JBVElPUy5TSVhURUVOX0JZX05JTkUsXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW8xNl85JyxcbiAgZ2V0U2l6ZTogc2NyZWVuVyA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgIGhlaWdodDogTWF0aC5yb3VuZChzY3JlZW5XICogMC41NjI1KVxuICB9KVxufTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkFUSU9fT1BUSU9OUzogUmVhZG9ubHlBcnJheTxJbWFnZVJhdGlvT3B0aW9uPiA9IFtcbiAgU2NyZWVuUmF0aW9PcHRpb24sXG4gIEZvdXJCeVRocmVlUmF0aW9PcHRpb24sXG4gIFNpeHRlZW5CeU5pbmVSYXRpb09wdGlvbixcbiAgQ3VzdG9tUmF0aW9PcHRpb25cbl07XG5cbmV4cG9ydCB0eXBlIEV4cG9ydFJlc29sdXRpb25PcHRpb24gPVxuICB8IGtleW9mIHR5cGVvZiBSRVNPTFVUSU9OU1xuICB8ICcxMjgweDcyMCdcbiAgfCAnMTkyMHgxMDgwJ1xuICB8ICcyNTYweDE0NDAnXG4gIHwgJzE2MDB4OTAwJ1xuICB8ICcxMDI0eDc2OCdcbiAgfCAnMTI4MHg5NjAnXG4gIHwgJzE2MDB4MTIwMCdcbiAgfCAnMTkyMHgxNDQwJztcblxuZXhwb3J0IHR5cGUgSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogRXhwb3J0UmVzb2x1dGlvbk9wdGlvbjtcbiAgbGFiZWw6IHN0cmluZztcbiAgYXZhaWxhYmxlOiBib29sZWFuO1xuICBzY2FsZT86IG51bWJlcjtcbiAgZ2V0U2l6ZTogKHNjcmVlblc6IG51bWJlciwgc2NyZWVuSDogbnVtYmVyKSA9PiB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9O1xufTtcblxuZXhwb3J0IGNvbnN0IE9uZVhSZXNvbHV0aW9uT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGFiZWw6ICcxeCcsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgc2NhbGU6IDEsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgIGhlaWdodDogc2NyZWVuSFxuICB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFR3b1hSZXNvbHV0aW9uT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBSRVNPTFVUSU9OUy5UV09fWCxcbiAgbGFiZWw6ICcyeCcsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgc2NhbGU6IDIsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XICogMixcbiAgICBoZWlnaHQ6IHNjcmVlbkggKiAyXG4gIH0pXG59O1xuXG4vLyBGaXhlZCBkaW1lbnNpb24gb3B0aW9uc1xuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24xOTIweDEwODBPcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6ICcxOTIweDEwODAnLFxuICBsYWJlbDogJzE5MjAgw5cgMTA4MCAoMTY6OSknLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIGdldFNpemU6ICgpID0+ICh7d2lkdGg6IDE5MjAsIGhlaWdodDogMTA4MH0pXG59O1xuXG5leHBvcnQgY29uc3QgUmVzb2x1dGlvbjEyODB4NzIwT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiAnMTI4MHg3MjAnLFxuICBsYWJlbDogJzEyODAgw5cgNzIwICgxNjo5KScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTI4MCwgaGVpZ2h0OiA3MjB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24yNTYweDE0NDBPcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6ICcyNTYweDE0NDAnLFxuICBsYWJlbDogJzI1NjAgw5cgMTQ0MCAoMTY6OSknLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIGdldFNpemU6ICgpID0+ICh7d2lkdGg6IDI1NjAsIGhlaWdodDogMTQ0MH0pXG59O1xuXG5leHBvcnQgY29uc3QgUmVzb2x1dGlvbjE2MDB4OTAwT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiAnMTYwMHg5MDAnLFxuICBsYWJlbDogJzE2MDAgw5cgOTAwICgxNjo5KScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTYwMCwgaGVpZ2h0OiA5MDB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24xMDI0eDc2OE9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogJzEwMjR4NzY4JyxcbiAgbGFiZWw6ICcxMDI0IMOXIDc2OCAoNDozKScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTAyNCwgaGVpZ2h0OiA3Njh9KVxufTtcblxuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24xMjgweDk2ME9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogJzEyODB4OTYwJyxcbiAgbGFiZWw6ICcxMjgwIMOXIDk2MCAoNDozKScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTI4MCwgaGVpZ2h0OiA5NjB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24xNjAweDEyMDBPcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6ICcxNjAweDEyMDAnLFxuICBsYWJlbDogJzE2MDAgw5cgMTIwMCAoNDozKScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTYwMCwgaGVpZ2h0OiAxMjAwfSlcbn07XG5cbmV4cG9ydCBjb25zdCBSZXNvbHV0aW9uMTkyMHgxNDQwT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiAnMTkyMHgxNDQwJyxcbiAgbGFiZWw6ICcxOTIwIMOXIDE0NDAgKDQ6MyknLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIGdldFNpemU6ICgpID0+ICh7d2lkdGg6IDE5MjAsIGhlaWdodDogMTQ0MH0pXG59O1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlM6IFJlYWRvbmx5QXJyYXk8SW1hZ2VSZXNvbHV0aW9uT3B0aW9uPiA9IFtcbiAgT25lWFJlc29sdXRpb25PcHRpb24sXG4gIFR3b1hSZXNvbHV0aW9uT3B0aW9uLFxuICBSZXNvbHV0aW9uMTI4MHg3MjBPcHRpb24sXG4gIFJlc29sdXRpb24xOTIweDEwODBPcHRpb24sXG4gIFJlc29sdXRpb24yNTYweDE0NDBPcHRpb24sXG4gIFJlc29sdXRpb24xNjAweDkwME9wdGlvbixcbiAgUmVzb2x1dGlvbjEwMjR4NzY4T3B0aW9uLFxuICBSZXNvbHV0aW9uMTI4MHg5NjBPcHRpb24sXG4gIFJlc29sdXRpb24xNjAweDEyMDBPcHRpb24sXG4gIFJlc29sdXRpb24xOTIweDE0NDBPcHRpb25cbl07XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9UWVBFID0ga2V5TWlycm9yKHtcbiAgQ1NWOiBudWxsXG4gIC8vIFNIQVBFRklMRTogbnVsbCxcbiAgLy8gSlNPTjogbnVsbCxcbiAgLy8gR0VPSlNPTjogbnVsbCxcbiAgLy8gVE9QT0pTT046IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0RBVEFfVFlQRV9PUFRJT05TID0gW1xuICB7XG4gICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuQ1NWLFxuICAgIGxhYmVsOiBFWFBPUlRfREFUQV9UWVBFLkNTVi50b0xvd2VyQ2FzZSgpLFxuICAgIGF2YWlsYWJsZTogdHJ1ZVxuICB9XG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5TSEFQRUZJTEUsXG4gIC8vICAgbGFiZWw6ICdzaGFwZWZpbGUnLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfSxcbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLkpTT04sXG4gIC8vICAgbGFiZWw6ICdqc29uJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH0sXG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5HRU9KU09OLFxuICAvLyAgIGxhYmVsOiAnZ2VvanNvbicsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9LFxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuVE9QT0pTT04sXG4gIC8vICAgbGFiZWw6ICd0b3BvanNvbicsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9XG5dO1xuXG4vLyBFeHBvcnQgbWFwIHR5cGVzXG5leHBvcnQgY29uc3QgRVhQT1JUX01BUF9GT1JNQVRTID0ga2V5TWlycm9yKHtcbiAgSFRNTDogbnVsbCxcbiAgSlNPTjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSFRNTF9NQVBfTU9ERVMgPSBrZXlNaXJyb3Ioe1xuICBSRUFEOiBudWxsLFxuICBFRElUOiBudWxsXG59KTtcblxuLy8gRXhwb3J0IG1hcCBvcHRpb25zXG5leHBvcnQgY29uc3QgRVhQT1JUX01BUF9GT1JNQVRfT1BUSU9OUyA9IE9iamVjdC5lbnRyaWVzKEVYUE9SVF9NQVBfRk9STUFUUykubWFwKFxuICAoZW50cnk6IFtzdHJpbmcsIGFueV0pID0+ICh7XG4gICAgaWQ6IGVudHJ5WzBdLFxuICAgIGxhYmVsOiBlbnRyeVsxXS50b0xvd2VyQ2FzZSgpLFxuICAgIGF2YWlsYWJsZTogdHJ1ZVxuICB9KVxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhUTUxNYXBNb2RlVGlsZVVybChtb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYGh0dHBzOi8vZDFhM2Y0c3BhenpycDQuY2xvdWRmcm9udC5uZXQva2VwbGVyLmdsL2RvY3VtZW50YXRpb24vbWFwLSR7bW9kZS50b0xvd2VyQ2FzZSgpfS1tb2RlLnBuZ2A7XG59XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TID0gT2JqZWN0LmVudHJpZXMoRVhQT1JUX0hUTUxfTUFQX01PREVTKS5tYXAoXG4gIChlbnRyeTogW3N0cmluZywgYW55XSkgPT4gKHtcbiAgICBpZDogZW50cnlbMF0sXG4gICAgbGFiZWw6IGBtb2RhbC5leHBvcnRNYXAuaHRtbC4ke2VudHJ5WzFdLnRvTG93ZXJDYXNlKCl9YCxcbiAgICBhdmFpbGFibGU6IHRydWUsXG4gICAgdXJsOiBnZXRIVE1MTWFwTW9kZVRpbGVVcmwoZW50cnlbMV0pXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9VVUlEX0NPVU5UID0gNjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX01FU1NBR0UgPSAnTUVTU0FHRV9OT1RfUFJPVklERUQnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBpbmZvOiBudWxsLFxuICBlcnJvcjogbnVsbCxcbiAgd2FybmluZzogbnVsbCxcbiAgc3VjY2VzczogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MgPSBrZXlNaXJyb3Ioe1xuICBnbG9iYWw6IG51bGwsXG4gIGZpbGU6IG51bGxcbn0pO1xuXG4vLyBNaW5pbXVtIHRpbWUgYmV0d2VlbiBpZGVudGljYWwgbm90aWZpY2F0aW9ucyBhYm91dCBkZWNrLmdsIGVycm9yc1xuZXhwb3J0IGNvbnN0IFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FID0gMzMwO1xuXG4vLyBBbmltYXRpb25cbmV4cG9ydCBjb25zdCBCQVNFX1NQRUVEID0gNjAwO1xuZXhwb3J0IGNvbnN0IEZQUyA9IDYwO1xuXG4vKipcbiAqIDQgQW5pbWF0aW9uIFdpbmRvdyBUeXBlc1xuICogMS4gZnJlZVxuICogIHwtPiAgfC0+XG4gKiBDdXJyZW50IHRpbWUgaXMgYSBmaXhlZCByYW5nZSwgYW5pbWF0aW9uIGNvbnRyb2xsZXIgY2FsbHMgbmV4dCBhbmltYXRpb24gZnJhbWVzIGNvbnRpbnVvdXNseSB0byBhbmltYXRpb24gYSBtb3Zpbmcgd2luZG93XG4gKiBUaGUgaW5jcmVtZW50IGlkIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDIuIGluY3JlbWVudGFsXG4gKiB8ICAgIHwtPlxuICogU2FtZSBhcyBmcmVlLCBjdXJyZW50IHRpbWUgaXMgYSBncm93aW5nIHJhbmdlLCBvbmx5IHRoZSBtYXggdmFsdWUgb2YgcmFuZ2UgaW5jcmVtZW50IGR1cmluZyBhbmltYXRpb24uXG4gKiBUaGUgaW5jcmVtZW50IGlzIGFsc28gYmFzZWQgb24gZG9tYWluIC8gQkFTRV9TUEVFRCAqIFNQRUVEXG4gKlxuICogMy4gcG9pbnRcbiAqIG8gLT4gb1xuICogQ3VycmVudCB0aW1lIGlzIGEgcG9pbnQsIGFuaW1hdGlvbiBjb250cm9sbGVyIGNhbGxzIG5leHQgYW5pbWF0aW9uIGZyYW1lIGNvbnRpbnVvdXNseSB0byBhbmltYXRpb24gYSBtb3ZpbmcgcG9pbnRcbiAqIFRoZSBpbmNyZW1lbnQgaXMgYmFzZWQgb24gZG9tYWluIC8gQkFTRV9TUEVFRCAqIFNQRUVEXG4gKlxuICogNC4gaW50ZXJ2YWxcbiAqIG8gfj4gb1xuICogQ3VycmVudCB0aW1lIGlzIGEgcG9pbnQuIEFuIGFycmF5IG9mIHNvcnRlZCB0aW1lIHN0ZXBzIG5lZWQgdG8gYmUgcHJvdmlkZWQuXG4gKiBhbmltYXRpb24gY29udHJvbGxlciBjYWxscyBuZXh0IGFuaW1hdGlvbiBhdCBhIGludGVydmFsIHdoZW4gdGhlIHBvaW50IGp1bXBzIHRvIHRoZSBuZXh0IHN0ZXBcbiAqL1xuZXhwb3J0IGNvbnN0IEFOSU1BVElPTl9XSU5ET1cgPSBrZXlNaXJyb3Ioe1xuICBmcmVlOiBudWxsLFxuICBpbmNyZW1lbnRhbDogbnVsbCxcbiAgcG9pbnQ6IG51bGwsXG4gIGludGVydmFsOiBudWxsXG59KTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1RJTUVfRk9STUFUID0gJ01NL0REL1lZIEhIOm1tOnNzYSc7XG5leHBvcnQgY29uc3QgU1BFRURfQ09OVFJPTF9SQU5HRTogW251bWJlciwgbnVtYmVyXSA9IFswLCAxMF07XG5leHBvcnQgY29uc3QgU1BFRURfQ09OVFJPTF9TVEVQID0gMC4wMDE7XG5cbi8vIEdlb2NvZGVyXG5leHBvcnQgY29uc3QgR0VPQ09ERVJfREFUQVNFVF9OQU1FID0gJ2dlb2NvZGVyX2RhdGFzZXQnO1xuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0xBWUVSX0lEID0gJ2dlb2NvZGVyX2xheWVyJztcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9HRU9fT0ZGU0VUID0gMC4wNTtcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9JQ09OX0NPTE9SOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbMjU1LCAwLCAwXTtcbi8vIEJhc2UgaWNvbiBzaXplIGJlZm9yZSBhbmNob3Igbm9ybWFsaXphdGlvbi4gVGhlIGdlb2NvZGVyIHBpbiBpY29uIGlzIGJvdHRvbS1hbmNob3JlZFxuLy8gYW5kIHNjYWxlZCB0byBmaXQgdGhlIFNjYXR0ZXJwbG90TGF5ZXIgdW5pdCBjaXJjbGUgKH4wLjV4KSwgc28gdGhlIHJlbmRlcmVkIHNpemUgaXNcbi8vIGNvbXBlbnNhdGVkIGhlcmUgKDgwICogMiA9IDE2MCkuXG5leHBvcnQgY29uc3QgR0VPQ09ERVJfSUNPTl9TSVpFID0gMTYwO1xuXG4vLyBFZGl0b3JcbmV4cG9ydCBjb25zdCBFRElUT1JfTEFZRVJfSUQgPSAna2VwbGVyX2VkaXRvcl9sYXllcic7XG5leHBvcnQgY29uc3QgRURJVE9SX0xBWUVSX1BJQ0tJTkdfUkFESVVTID0gNjtcbmV4cG9ydCBjb25zdCBFRElUT1JfTU9ERVMgPSB7XG4gIERSQVdfUE9MWUdPTjogJ0RSQVdfUE9MWUdPTicsXG4gIERSQVdfUkVDVEFOR0xFOiAnRFJBV19SRUNUQU5HTEUnLFxuICBFRElUOiAnRURJVF9WRVJURVgnXG59O1xuXG5leHBvcnQgY29uc3QgUExPVF9UWVBFUyA9IGtleU1pcnJvcih7XG4gIGhpc3RvZ3JhbTogbnVsbCxcbiAgbGluZUNoYXJ0OiBudWxsXG59KTtcblxuLy8gRmlsdGVyXG5leHBvcnQgY29uc3QgSU5JVF9GSUxURVJfSVRFTVNfSU5fRFJPUERPV04gPSAxMDA7XG5cbi8vIEdQVSBGaWx0ZXJpbmdcbi8qKlxuICogTWF4IG51bWJlciBvZiBmaWx0ZXIgdmFsdWUgYnVmZmVycyB0aGF0IGRlY2suZ2wgcHJvdmlkZXNcbiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9HUFVfRklMVEVSUyA9IDQ7XG5leHBvcnQgY29uc3QgTUFQX1RIVU1CTkFJTF9ESU1FTlNJT04gPSB7XG4gIHdpZHRoOiAzMDAsXG4gIGhlaWdodDogMjAwXG59O1xuXG5leHBvcnQgY29uc3QgTUFQX0lORk9fQ0hBUkFDVEVSID0ge1xuICB0aXRsZTogMTAwLFxuICBkZXNjcmlwdGlvbjogMTAwXG59O1xuXG4vLyBMb2FkIGRhdGFcbmV4cG9ydCBjb25zdCBMT0FESU5HX01FVEhPRFMgPSBrZXlNaXJyb3Ioe1xuICB1cGxvYWQ6IG51bGwsXG4gIHN0b3JhZ2U6IG51bGwsXG4gIHRpbGVzZXQ6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9GRUFUVVJFX0ZMQUdTID0ge307XG5cbmV4cG9ydCBjb25zdCBEQVRBU0VUX0ZPUk1BVFMgPSBrZXlNaXJyb3Ioe1xuICByb3c6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGNzdjogbnVsbCxcbiAga2VwbGVyZ2w6IG51bGwsXG4gIGFycm93OiBudWxsLFxuICBkdWNrZGI6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTUFQX0NPTlRST0xTID0ga2V5TWlycm9yKHtcbiAgdmlzaWJsZUxheWVyczogbnVsbCxcbiAgbWFwTGVnZW5kOiBudWxsLFxuICB0b2dnbGUzZDogbnVsbCxcbiAgc3BsaXRNYXA6IG51bGwsXG4gIG1hcERyYXc6IG51bGwsXG4gIG1hcExvY2FsZTogbnVsbCxcbiAgZWZmZWN0OiBudWxsLFxuICBhbm5vdGF0aW9uOiBudWxsLFxuICBhaUFzc2lzdGFudDogbnVsbFxufSk7XG5cbmV4cG9ydCBlbnVtIE1hcFZpZXdNb2RlIHtcbiAgTU9ERV8yRCA9ICdNT0RFXzJEJyxcbiAgTU9ERV8zRCA9ICdNT0RFXzNEJyxcbiAgTU9ERV9HTE9CRSA9ICdNT0RFX0dMT0JFJ1xufVxuXG4vKipcbiAqIE1pbmltdW0gem9vbSBsZXZlbCBhbGxvd2VkIGluIGdsb2JlIG1vZGUuIE5lZ2F0aXZlIHZhbHVlcyBsZXQgdGhlIHVzZXIgem9vbVxuICogb3V0IGZ1cnRoZXIgdGhhbiB0aGUgd2ViLW1lcmNhdG9yIGRlZmF1bHQgb2YgMCwgc28gdGhlIHdob2xlIGdsb2JlIGNhbiBiZVxuICogcHVsbGVkIGJhY2sgdG8gYXBwZWFyIHNtYWxsZXIgb24gc2NyZWVuLlxuICovXG5leHBvcnQgY29uc3QgR0xPQkVfTUlOX1pPT00gPSAyO1xuXG4vKipcbiAqIE1heGltdW0gem9vbSBpbiBnbG9iZSBtb2RlLlxuICpcbiAqIFRoZSBwcmV2aW91cyBcImVtcHR5IHJlY3RhbmdsZXNcIiBhdCBoaWdoIHpvb20gd2VyZSBjYXVzZWQgYnkgdGhlIHZlY3RvciBiYXNlbWFwXG4gKiBsYXllciBkZWNsYXJpbmcgYG1heFpvb206IDIzYCB3aGlsZSB0aGUgcmF3IHRpbGUgZW5kcG9pbnRzIG9ubHkgaGF2ZSBkYXRhIHRvXG4gKiB6MTYgKG1hcGJveC1zdHJlZXRzLXY4KSAvIHoxNCAoQ0FSVE8pIOKAlCBkZWNrIHRoZW4gcmVxdWVzdGVkIG5vbi1leGlzdGVudCB0aWxlc1xuICogdGhhdCA0MDQuIFRoYXQgaXMgZml4ZWQgaW4gYGdldEdsb2JlQmFzZUxheWVyc2AgYnkgc2V0dGluZyBgbWF4Wm9vbWAgdG8gZWFjaFxuICogc291cmNlJ3MgdHJ1ZSBkYXRhIG1heCBzbyBkZWNrIG92ZXJ6b29tcyBpbnN0ZWFkLlxuICpcbiAqIFRoZSByZW1haW5pbmcgcHJhY3RpY2FsIGNlaWxpbmcgaXMgZmxvYXQzMiBwcmVjaXNpb246IGRlY2sncyBnbG9iZSBwbGFjZXNcbiAqIGdlb21ldHJ5IGluIGNvbW1vbiBzcGFjZSBvbiBhIHNwaGVyZSBvZiByYWRpdXMgMjU2IHdpdGggbm8gZnA2NC9yZWxhdGl2ZS10by1cbiAqIGNlbnRlciB0cmljaywgc28gYmV5b25kIH52aXN1YWwtem9vbSAxNiAocm91Z2hseSB0aGlzIG1hcFN0YXRlIHpvb20gbWludXNcbiAqIGB6b29tQWRqdXN0KGxhdClgIOKJiCAxLjY1IGF0IHRoZSBlcXVhdG9yKSBnZW9tZXRyeSBzdGFydHMgdG8gaml0dGVyL2RyaWZ0LlxuICovXG5leHBvcnQgY29uc3QgR0xPQkVfTUFYX1pPT00gPSAxNjtcblxuLyoqXG4gKiBNYXhpbXVtIGFic29sdXRlIGNlbnRlciBsYXRpdHVkZSBhbGxvd2VkIGluIGdsb2JlIG1vZGUuIENvbnN0cmFpbnMgdGhlIGNhbWVyYVxuICogdGFyZ2V0IHRvIGEgYmFuZCBhcm91bmQgdGhlIGVxdWF0b3Igc28gdGhlIHZpZXcgY2FuJ3QgYmUgY2VudGVyZWQgb24gdGhlXG4gKiBwb2xlcyAoZGVjay5nbCdzIGRlZmF1bHQgY2xhbXBzIHRvIH44NcKwLCB3aGljaCBsZXRzIHRoZSBjYW1lcmEgc3RhcmUgc3RyYWlnaHRcbiAqIGRvd24gYXQgYSBwb2xlKS4gQXBwbGllcyBzeW1tZXRyaWNhbGx5IHRvIHRoZSBub3J0aGVybiBhbmQgc291dGhlcm4gaGVtaXNwaGVyZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdMT0JFX01BWF9MQVRJVFVERSA9IDc1O1xuXG5leHBvcnQgdHlwZSBHbG9iZUNvbmZpZyA9IHtcbiAgYXRtb3NwaGVyZTogYm9vbGVhbjtcbiAgYXppbXV0aDogYm9vbGVhbjtcbiAgYXppbXV0aEFuZ2xlOiBudW1iZXI7XG4gIHRlcm1pbmF0b3I6IGJvb2xlYW47XG4gIHRlcm1pbmF0b3JPcGFjaXR5OiBudW1iZXI7XG4gIGJhc2VtYXA6IGJvb2xlYW47XG4gIGxhYmVsczogYm9vbGVhbjtcbiAgbGFiZWxzQ29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgYWRtaW5MaW5lczogYm9vbGVhbjtcbiAgYWRtaW5MaW5lc0NvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHdhdGVyOiBib29sZWFuO1xuICB3YXRlckNvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHN1cmZhY2VDb2xvcjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBzdXJmYWNlOiBib29sZWFuO1xuICBiYWNrZ3JvdW5kQ29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgc3RhcnM6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBHbG9iZSA9IHtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgY29uZmlnOiBHbG9iZUNvbmZpZztcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0dMT0JFX0NPTkZJRzogR2xvYmVDb25maWcgPSB7XG4gIGF0bW9zcGhlcmU6IHRydWUsXG4gIGF6aW11dGg6IGZhbHNlLFxuICBhemltdXRoQW5nbGU6IDQ1LFxuICB0ZXJtaW5hdG9yOiB0cnVlLFxuICB0ZXJtaW5hdG9yT3BhY2l0eTogMC4zNSxcbiAgYmFzZW1hcDogdHJ1ZSxcbiAgbGFiZWxzOiBmYWxzZSxcbiAgbGFiZWxzQ29sb3I6IFsxMTQuNzUsIDExNC43NSwgMTE0Ljc1XSxcbiAgYWRtaW5MaW5lczogdHJ1ZSxcbiAgYWRtaW5MaW5lc0NvbG9yOiBbNDAsIDYzLCA5M10sXG4gIHdhdGVyOiB0cnVlLFxuICB3YXRlckNvbG9yOiBbMTcsIDM1LCA0OF0sXG4gIHN1cmZhY2U6IHRydWUsXG4gIHN1cmZhY2VDb2xvcjogWzksIDE2LCAyOV0sXG4gIC8vIENvbG9yIG9mIHRoZSBlbXB0eSBzcGFjZSByZW5kZXJlZCBhcm91bmQgdGhlIGdsb2JlIChkZWNrLmdsIGNsZWFyIGNvbG9yKS5cbiAgLy8gTWF0Y2hlcyB0aGUgcHJldmlvdXMgaGFyZGNvZGVkIGNsZWFyIGNvbG9yIFswLjAxNSwgMC4wMzUsIDAuMDY1XSBpbiAwLTEgc3BhY2UuXG4gIGJhY2tncm91bmRDb2xvcjogWzQsIDksIDE3XSxcbiAgc3RhcnM6IGZhbHNlXG59O1xuXG5leHBvcnQgY29uc3QgR0xPQkVfU1VQUE9SVEVEX0xBWUVSUzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7XG4gIHBvaW50OiB0cnVlLFxuICBhcmM6IHRydWUsXG4gIGdyaWQ6IHRydWUsXG4gIGhleGFnb246IHRydWUsXG4gIGdlb2pzb246IHRydWUsXG4gIGNsdXN0ZXI6IHRydWUsXG4gIGljb246IHRydWUsXG4gIGhleGFnb25JZDogdHJ1ZSxcbiAgJzNEJzogdHJ1ZSxcbiAgdmVjdG9yVGlsZTogdHJ1ZSxcbiAgaGV4VGlsZTogdHJ1ZSxcbiAgbGluZTogdHJ1ZSxcbiAgdHJpcDogdHJ1ZSxcbiAgcmFzdGVyVGlsZTogdHJ1ZSxcbiAgaGVhdG1hcDogdHJ1ZSxcbiAgczI6IGZhbHNlLFxuICB0aWxlM2Q6IGZhbHNlLFxuICAvLyBGbG93IGFycm93cyBhcmUgZmxhdCBxdWFkcyBpbiBjb21tb24gc3BhY2UgKGVxdWF0b3JpYWwgcGxhbmUpIGFuZCBjb2xsYXBzZSB3aGVuXG4gIC8vIHZpZXdlZCBlZGdlLW9uIG9uIHRoZSBnbG9iZSwgc28gdGhlIGZsb3cgbGF5ZXIgaXMgbm90IHN1cHBvcnRlZCBpbiBHbG9iZSBtb2RlLlxuICBmbG93OiBmYWxzZVxufTtcblxuZXhwb3J0IGVudW0gTWFwU3BsaXRNb2RlIHtcbiAgU0lOR0xFX01BUCA9ICdTSU5HTEVfTUFQJyxcbiAgRFVBTF9NQVAgPSAnRFVBTF9NQVAnLFxuICBTV0lQRV9DT01QQVJFID0gJ1NXSVBFX0NPTVBBUkUnXG59XG5cbi8qKlxuICogQSBtdWx0aXBsaWVyIGZvciBzY3JlZW4tc3BhY2Ugd2lkdGgvc2NhbGUgZm9yIEFyYywgTGluZSwgSWNvbiBhbmQgVGV4dCBsYXllcnMuXG4gKiBSZXF1aXJlZCBpbiBvcmRlciB0byBtYWludGFpbiB0aGUgc2FtZSBhcHBlYXJhbmNlIGFmdGVyIHVwZ3JhZGluZyB0byBkZWNrLmdsIHY4LjUuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdmlzZ2wvZGVjay5nbC9ibG9iL21hc3Rlci9kb2NzL3VwZ3JhZGUtZ3VpZGUubWRcbiAqL1xuZXhwb3J0IGNvbnN0IFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIgPSAyIC8gMztcblxuLyoqXG4gKiBNYXhpbXVtIHZhbHVlIGZvciB0ZXh0IG91dGxpbmUgd2lkdGhcbiAqL1xuZXhwb3J0IGNvbnN0IFRFWFRfT1VUTElORV9NVUxUSVBMSUVSID0gNTtcblxuZXhwb3J0IGNvbnN0IGRhdGFUZXN0SWRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBpbmZvSWNvbjogJ2luZm8taWNvbicsXG4gIHdhcm5pbmdJY29uOiAnd2FybmluZy1pY29uJyxcbiAgZXJyb3JJY29uOiAnZXJyb3ItaWNvbicsXG4gIHN1Y2Nlc3NJY29uOiAnc3VjY2Vzcy1pY29uJyxcbiAgY2hlY2ttYXJrSWNvbjogJ2NoZWNrbWFyay1pY29uJyxcbiAgc29ydGFibGVMYXllckl0ZW06ICdzb3J0YWJsZS1sYXllci1pdGVtJyxcbiAgc3RhdGljTGF5ZXJJdGVtOiAnc3RhdGljLWxheWVyLWl0ZW0nLFxuICBsYXllclRpdGxlRWRpdG9yOiAnbGF5ZXJfX3RpdGxlX19lZGl0b3InLFxuICByZW1vdmVMYXllckFjdGlvbjogJ3JlbW92ZS1sYXllci1hY3Rpb24nLFxuICBsYXllclBhbmVsOiAnbGF5ZXItcGFuZWwnLFxuICBzb3J0YWJsZUVmZmVjdEl0ZW06ICdzb3J0YWJsZS1lZmZlY3QtaXRlbScsXG4gIHN0YXRpY0VmZmVjdEl0ZW06ICdzdGF0aWMtZWZmZWN0LWl0ZW0nLFxuICBwcm92aWRlckxvYWRpbmc6ICdwcm92aWRlci1sb2FkaW5nJyxcbiAgcHJvdmlkZXJNYXBJbmZvUGFuZWw6ICdwcm92aWRlci1tYXAtaW5mby1wYW5lbCcsXG4gIHByb3ZpZGVyU2VsZWN0OiAncHJvdmlkZXItc2VsZWN0JyxcbiAgY2xvdWRIZWFkZXI6ICdjbG91ZC1oZWFkZXInLFxuICBwcm92aWRlclNoYXJlTWFwOiAncHJvdmlkZXItc2hhcmUtbWFwJ1xufTtcblxuLy8gRWZmZWN0c1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVElNRVpPTkUgPSAnVVRDJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPU1RfUFJPQ0VTU0lOR19FRkZFQ1RfVFlQRSA9ICdpbmsnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MSUdIVF9DT0xPUjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzI1NSwgMjU1LCAyNTVdO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElHSFRfSU5URU5TSVRZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NIQURPV19JTlRFTlNJVFkgPSAwLjU7XG5leHBvcnQgY29uc3QgREVGQVVMVF9TSEFET1dfQ09MT1I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFswLCAwLCAwXTtcblxuZXhwb3J0IGNvbnN0IExJR0hUX0FORF9TSEFET1dfRUZGRUNUX1RJTUVfTU9ERVMgPSB7XG4gIHBpY2s6ICdwaWNrJyBhcyBjb25zdCxcbiAgY3VycmVudDogJ2N1cnJlbnQnIGFzIGNvbnN0LFxuICBhbmltYXRpb246ICdhbmltYXRpb24nIGFzIGNvbnN0XG59O1xuZXhwb3J0IHR5cGUgTGlnaHRBbmRTaGFkb3dFZmZlY3RUaW1lTW9kZSA9ICdwaWNrJyB8ICdjdXJyZW50JyB8ICdhbmltYXRpb24nO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElHSFRfQU5EX1NIQURPV19QUk9QUzoge1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgdGltZU1vZGU6IExpZ2h0QW5kU2hhZG93RWZmZWN0VGltZU1vZGU7XG4gIHNoYWRvd0ludGVuc2l0eTogbnVtYmVyO1xuICBzaGFkb3dDb2xvcjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBzdW5MaWdodENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHN1bkxpZ2h0SW50ZW5zaXR5OiBudW1iZXI7XG4gIGFtYmllbnRMaWdodENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIGFtYmllbnRMaWdodEludGVuc2l0eTogbnVtYmVyO1xufSA9IHtcbiAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICB0aW1lTW9kZTogTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUy5waWNrIGFzIExpZ2h0QW5kU2hhZG93RWZmZWN0VGltZU1vZGUsXG4gIHNoYWRvd0ludGVuc2l0eTogREVGQVVMVF9TSEFET1dfSU5URU5TSVRZLFxuICBzaGFkb3dDb2xvcjogWy4uLkRFRkFVTFRfU0hBRE9XX0NPTE9SXSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIHN1bkxpZ2h0Q29sb3I6IFsuLi5ERUZBVUxUX0xJR0hUX0NPTE9SXSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIHN1bkxpZ2h0SW50ZW5zaXR5OiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWSxcbiAgYW1iaWVudExpZ2h0Q29sb3I6IFsuLi5ERUZBVUxUX0xJR0hUX0NPTE9SXSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIGFtYmllbnRMaWdodEludGVuc2l0eTogREVGQVVMVF9MSUdIVF9JTlRFTlNJVFlcbn07XG5cbmV4cG9ydCBjb25zdCBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVDogRWZmZWN0RGVzY3JpcHRpb24gPSB7XG4gIHR5cGU6ICdsaWdodEFuZFNoYWRvdycsXG4gIG5hbWU6ICdMaWdodCAmIFNoYWRvdycsXG4gIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24ubGlnaHRBbmRTaGFkb3cnLFxuICBwYXJhbWV0ZXJzOiBbXG4gICAge25hbWU6ICd0aW1lc3RhbXAnLCBtaW46IDAsIG1heDogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9LFxuICAgIHtuYW1lOiAnc2hhZG93SW50ZW5zaXR5JywgbWluOiAwLCBtYXg6IDEsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9TSEFET1dfSU5URU5TSVRZfSxcbiAgICB7bmFtZTogJ3N1bkxpZ2h0SW50ZW5zaXR5JywgbWluOiAwLCBtYXg6IDUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9MSUdIVF9JTlRFTlNJVFl9LFxuICAgIHtuYW1lOiAnYW1iaWVudExpZ2h0SW50ZW5zaXR5JywgbWluOiAwLCBtYXg6IDUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9MSUdIVF9JTlRFTlNJVFl9LFxuICAgIHtuYW1lOiAnc2hhZG93Q29sb3InLCB0eXBlOiAnY29sb3InLCBtaW46IDAsIG1heDogMjU1LCBkZWZhdWx0VmFsdWU6IERFRkFVTFRfU0hBRE9XX0NPTE9SfSxcbiAgICB7bmFtZTogJ3N1bkxpZ2h0Q29sb3InLCB0eXBlOiAnY29sb3InLCBtaW46IDAsIG1heDogMjU1LCBkZWZhdWx0VmFsdWU6IERFRkFVTFRfTElHSFRfQ09MT1J9LFxuICAgIHtuYW1lOiAnYW1iaWVudExpZ2h0Q29sb3InLCB0eXBlOiAnY29sb3InLCBtaW46IDAsIG1heDogMjU1LCBkZWZhdWx0VmFsdWU6IERFRkFVTFRfTElHSFRfQ09MT1J9XG4gIF1cbn07XG5cbmV4cG9ydCBjb25zdCBESVNUQU5DRV9GT0dfVFlQRSA9ICdkaXN0YW5jZUZvZyc7XG5leHBvcnQgY29uc3QgU1VSRkFDRV9GT0dfVFlQRSA9ICdzdXJmYWNlRm9nJztcblxuZXhwb3J0IGNvbnN0IFBPU1RQUk9DRVNTSU5HX0VGRkVDVFM6IHtba2V5OiBzdHJpbmddOiBFZmZlY3REZXNjcmlwdGlvbn0gPSB7XG4gIGluazoge1xuICAgIHR5cGU6ICdpbmsnLFxuICAgIG5hbWU6ICdJbmsnLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24uaW5rJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdzdHJlbmd0aCcsIG1pbjogMCwgbWF4OiAxfV1cbiAgfSxcbiAgYnJpZ2h0bmVzc0NvbnRyYXN0OiB7XG4gICAgdHlwZTogJ2JyaWdodG5lc3NDb250cmFzdCcsXG4gICAgbmFtZTogJ0JyaWdodG5lc3MgJiBDb250cmFzdCcsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5icmlnaHRuZXNzQ29udHJhc3QnLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtuYW1lOiAnYnJpZ2h0bmVzcycsIG1pbjogLTEsIG1heDogMX0sXG4gICAgICB7bmFtZTogJ2NvbnRyYXN0JywgbWluOiAtMSwgbWF4OiAxfVxuICAgIF1cbiAgfSxcbiAgaHVlU2F0dXJhdGlvbjoge1xuICAgIHR5cGU6ICdodWVTYXR1cmF0aW9uJyxcbiAgICBuYW1lOiAnSHVlICYgU2F0dXJhdGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5odWVTYXR1cmF0aW9uJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7bmFtZTogJ2h1ZScsIG1pbjogLTEsIG1heDogMX0sXG4gICAgICB7bmFtZTogJ3NhdHVyYXRpb24nLCBkZWZhdWx0VmFsdWU6IDAuMjUsIG1pbjogLTEsIG1heDogMX1cbiAgICBdXG4gIH0sXG4gIHZpYnJhbmNlOiB7XG4gICAgdHlwZTogJ3ZpYnJhbmNlJyxcbiAgICBuYW1lOiAnVmlicmFuY2UnLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24udmlicmFuY2UnLFxuICAgIHBhcmFtZXRlcnM6IFt7bmFtZTogJ2Ftb3VudCcsIGRlZmF1bHRWYWx1ZTogMC41LCBtaW46IC0xLCBtYXg6IDF9XVxuICB9LFxuICBzZXBpYToge1xuICAgIHR5cGU6ICdzZXBpYScsXG4gICAgbmFtZTogJ1NlcGlhJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLnNlcGlhJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdhbW91bnQnLCBtaW46IDAsIG1heDogMX1dXG4gIH0sXG4gIGRvdFNjcmVlbjoge1xuICAgIHR5cGU6ICdkb3RTY3JlZW4nLFxuICAgIG5hbWU6ICdEb3QgU2NyZWVuJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLmRvdFNjcmVlbicsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnYW5nbGUnLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogTWF0aC5QSSAvIDJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaXplJyxcbiAgICAgICAgbWluOiAxLFxuICAgICAgICBtYXg6IDIwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY2VudGVyJyxcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgbGFiZWw6IFsnQ2VudGVyIFgnLCAnQ2VudGVyIFknXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMC41LCAwLjVdLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfVxuICAgIF1cbiAgfSxcbiAgY29sb3JIYWxmdG9uZToge1xuICAgIHR5cGU6ICdjb2xvckhhbGZ0b25lJyxcbiAgICBuYW1lOiAnQ29sb3IgSGFsZnRvbmUnLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24uY29sb3JIYWxmdG9uZScsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnYW5nbGUnLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogTWF0aC5QSSAvIDJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaXplJyxcbiAgICAgICAgbWluOiAxLFxuICAgICAgICBtYXg6IDIwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY2VudGVyJyxcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgbGFiZWw6IFsnQ2VudGVyIFgnLCAnQ2VudGVyIFknXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMC41LCAwLjVdLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfVxuICAgIF1cbiAgfSxcbiAgbm9pc2U6IHtcbiAgICB0eXBlOiAnbm9pc2UnLFxuICAgIG5hbWU6ICdOb2lzZScsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5ub2lzZScsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAnYW1vdW50JywgbWluOiAwLCBtYXg6IDF9XVxuICB9LFxuICB0cmlhbmdsZUJsdXI6IHtcbiAgICB0eXBlOiAndHJpYW5nbGVCbHVyJyxcbiAgICBuYW1lOiAnQmx1ciAoVHJpYW5nbGUpJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLnRyaWFuZ2xlQmx1cicsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAncmFkaXVzJywgbWluOiAwLCBtYXg6IDEwMH1dXG4gIH0sXG4gIHpvb21CbHVyOiB7XG4gICAgdHlwZTogJ3pvb21CbHVyJyxcbiAgICBuYW1lOiAnQmx1ciAoWm9vbSknLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24uem9vbUJsdXInLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3N0cmVuZ3RoJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAwLjA1LFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NlbnRlcicsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ0NlbnRlciBYJywgJ0NlbnRlciBZJ10sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogWzAuNSwgMC41XSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDFcbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIHRpbHRTaGlmdDoge1xuICAgIHR5cGU6ICd0aWx0U2hpZnQnLFxuICAgIG5hbWU6ICdCbHVyIChUaWx0IFNoaWZ0KScsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi50aWx0U2hpZnQnLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2JsdXJSYWRpdXMnLFxuICAgICAgICBsYWJlbDogJ0JsdXInLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogNTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdncmFkaWVudFJhZGl1cycsXG4gICAgICAgIGxhYmVsOiAnR3JhZGllbnQnLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogNDAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc3RhcnQnLFxuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICBsYWJlbDogWydTdGFydCcsIGZhbHNlXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMC4wLCAwLjBdLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2VuZCcsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ0VuZCcsIGZhbHNlXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMSwgMV0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9XG4gICAgXVxuICB9LFxuICBlZGdlV29yazoge1xuICAgIHR5cGU6ICdlZGdlV29yaycsXG4gICAgbmFtZTogJ0VkZ2Ugd29yaycsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5lZGdlV29yaycsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAncmFkaXVzJywgbWluOiAxLCBtYXg6IDUwfV1cbiAgfSxcbiAgdmlnbmV0dGU6IHtcbiAgICB0eXBlOiAndmlnbmV0dGUnLFxuICAgIG5hbWU6ICdWaWduZXR0ZScsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi52aWduZXR0ZScsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge25hbWU6ICdhbW91bnQnLCBtaW46IDAsIG1heDogMX0sXG4gICAgICB7bmFtZTogJ3JhZGl1cycsIG1pbjogMCwgbWF4OiAxfVxuICAgIF1cbiAgfSxcbiAgbWFnbmlmeToge1xuICAgIHR5cGU6ICdtYWduaWZ5JyxcbiAgICBuYW1lOiAnTWFnbmlmeScsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5tYWduaWZ5JyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzY3JlZW5YWScsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ1Bvc2l0aW9uIFgnLCAnUG9zaXRpb24gWSddLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFswLjUsIDAuNV0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAncmFkaXVzUGl4ZWxzJyxcbiAgICAgICAgbGFiZWw6ICdTaXplJyxcbiAgICAgICAgbWluOiAxMCxcbiAgICAgICAgbWF4OiA1MDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICd6b29tJyxcbiAgICAgICAgbWluOiAwLjUsXG4gICAgICAgIG1heDogNTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdib3JkZXJXaWR0aFBpeGVscycsXG4gICAgICAgIGxhYmVsOiAnQm9yZGVyIFdpZHRoJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAzLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogNTBcbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIGhleGFnb25hbFBpeGVsYXRlOiB7XG4gICAgdHlwZTogJ2hleGFnb25hbFBpeGVsYXRlJyxcbiAgICBuYW1lOiAnSGV4YWdvbmFsIFBpeGVsYXRlJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLmhleGFnb25hbFBpeGVsYXRlJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdzY2FsZScsIGRlZmF1bHRWYWx1ZTogMjAsIG1pbjogMSwgbWF4OiA1MH1dXG4gIH0sXG4gIGRpc3RhbmNlRm9nOiB7XG4gICAgdHlwZTogRElTVEFOQ0VfRk9HX1RZUEUsXG4gICAgbmFtZTogJ0Rpc3RhbmNlIEZvZycsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5kaXN0YW5jZUZvZycsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge25hbWU6ICdkZW5zaXR5JywgZGVmYXVsdFZhbHVlOiAwLjUsIG1pbjogMCwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnZm9nU3RhcnQnLCBsYWJlbDogJ1N0YXJ0JywgZGVmYXVsdFZhbHVlOiAwLjMsIG1pbjogMCwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnZm9nUmFuZ2UnLCBsYWJlbDogJ1JhbmdlJywgZGVmYXVsdFZhbHVlOiAwLjUsIG1pbjogMC4wMSwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnZm9nQ29sb3InLCB0eXBlOiAnY29sb3InLCBtaW46IDAsIG1heDogMjU1LCBkZWZhdWx0VmFsdWU6IFsyMTcsIDIyMiwgMjMwXX1cbiAgICBdXG4gIH0sXG4gIHN1cmZhY2VGb2c6IHtcbiAgICB0eXBlOiBTVVJGQUNFX0ZPR19UWVBFLFxuICAgIG5hbWU6ICdTdXJmYWNlIEZvZycsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5zdXJmYWNlRm9nJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7bmFtZTogJ2RlbnNpdHknLCBkZWZhdWx0VmFsdWU6IDAuNiwgbWluOiAwLCBtYXg6IDF9LFxuICAgICAge25hbWU6ICdoZWlnaHQnLCBsYWJlbDogJ0VsZXZhdGlvbiAobSknLCBkZWZhdWx0VmFsdWU6IDUwLCBtaW46IC0yMDAsIG1heDogNjAwMH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhbmltYXRlSGVpZ2h0JyxcbiAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgbGFiZWw6ICdBbmltYXRlIEVsZXZhdGlvbicsXG4gICAgICAgIHRvb2x0aXA6XG4gICAgICAgICAgJ0FuaW1hdGVzIGVsZXZhdGlvbiBmcm9tIHN0YXJ0IHRvIGVuZCB2YWx1ZSBkdXJpbmcgdmlkZW8gZXhwb3J0IHByZXZpZXcgYW5kIHJlY29yZGluZy4nLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfSxcbiAgICAgIHtuYW1lOiAnaGVpZ2h0RW5kJywgbGFiZWw6ICdFbmQgRWxldmF0aW9uIChtKScsIGRlZmF1bHRWYWx1ZTogMTAwLCBtaW46IC0yMDAsIG1heDogNjAwMH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdsaW5lYXJFYXNpbmcnLFxuICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICBsYWJlbDogJ0xpbmVhciBFYXNpbmcnLFxuICAgICAgICB0b29sdGlwOlxuICAgICAgICAgICdVc2VzIGNvbnN0YW50IHNwZWVkIGluc3RlYWQgb2Ygc21vb3RoIGVhc2UtaW4gLyBlYXNlLW91dCBkdXJpbmcgZWxldmF0aW9uIGFuaW1hdGlvbi4nLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfSxcbiAgICAgIHtuYW1lOiAndGhpY2tuZXNzJywgbGFiZWw6ICdUcmFuc2l0aW9uIChtKScsIGRlZmF1bHRWYWx1ZTogNTAsIG1pbjogMCwgbWF4OiAxMDAwfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2ZvZ0NvbG9yJyxcbiAgICAgICAgdHlwZTogJ2NvbG9yJyxcbiAgICAgICAgbGFiZWw6ICdGb2cgQ29sb3InLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMjU1LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFsyMzAsIDIzNSwgMjQyXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3BhdHRlcm4nLFxuICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICBsYWJlbDogJ1BhdHRlcm4nLFxuICAgICAgICB0b29sdGlwOiAnQWRkcyBhIG5vaXNlIHBhdHRlcm4gdG8gdGhlIGZvZyBmb3IgYSBtb3JlIG5hdHVyYWwsIHZvbHVtZXRyaWMgbG9vay4nLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfVxuICAgIF1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEVGRkVDVF9ERVNDUklQVElPTlM6IEVmZmVjdERlc2NyaXB0aW9uW10gPSBbXG4gIExJR0hUX0FORF9TSEFET1dfRUZGRUNULFxuICAuLi5PYmplY3Qua2V5cyhQT1NUUFJPQ0VTU0lOR19FRkZFQ1RTKS5tYXAoa2V5TmFtZSA9PiBQT1NUUFJPQ0VTU0lOR19FRkZFQ1RTW2tleU5hbWVdKVxuXTtcblxuZXhwb3J0IHR5cGUgRWZmZWN0VHlwZSA9XG4gIHwgJ2luaydcbiAgfCAnYnJpZ2h0bmVzc0NvbnRyYXN0J1xuICB8ICdodWVTYXR1cmF0aW9uJ1xuICB8ICd2aWJyYW5jZSdcbiAgfCAnc2VwaWEnXG4gIHwgJ2RvdFNjcmVlbidcbiAgfCAnY29sb3JIYWxmdG9uZSdcbiAgfCAnbm9pc2UnXG4gIHwgJ3RyaWFuZ2xlQmx1cidcbiAgfCAnem9vbUJsdXInXG4gIHwgJ3RpbHRTaGlmdCdcbiAgfCAnZWRnZVdvcmsnXG4gIHwgJ3ZpZ25ldHRlJ1xuICB8ICdtYWduaWZ5J1xuICB8ICdoZXhhZ29uYWxQaXhlbGF0ZSdcbiAgfCAnZGlzdGFuY2VGb2cnXG4gIHwgJ3N1cmZhY2VGb2cnXG4gIHwgJ2xpZ2h0QW5kU2hhZG93JztcblxuZXhwb3J0IGNvbnN0IFNZTkNfVElNRUxJTkVfTU9ERVM6IFJlY29yZDxzdHJpbmcsIFN5bmNUaW1lbGluZU1vZGU+ID0ge1xuICBzdGFydDogMCxcbiAgZW5kOiAxXG59O1xuXG5leHBvcnQgY29uc3QgR0VPQVJST1dfTUVUQURBVEFfS0VZID0gJ0FSUk9XOmV4dGVuc2lvbjpuYW1lJztcblxuLyoqXG4gKiBFbnVtIGhvbGRpbmcgR2VvQXJyb3cgZXh0ZW5zaW9uIHR5cGUgbmFtZXNcbiAqL1xuZXhwb3J0IGVudW0gR0VPQVJST1dfRVhURU5TSU9OUyB7XG4gIFBPSU5UID0gJ2dlb2Fycm93LnBvaW50JyxcbiAgTElORVNUUklORyA9ICdnZW9hcnJvdy5saW5lc3RyaW5nJyxcbiAgUE9MWUdPTiA9ICdnZW9hcnJvdy5wb2x5Z29uJyxcbiAgTVVMVElQT0lOVCA9ICdnZW9hcnJvdy5tdWx0aXBvaW50JyxcbiAgTVVMVElMSU5FU1RSSU5HID0gJ2dlb2Fycm93Lm11bHRpbGluZXN0cmluZycsXG4gIE1VTFRJUE9MWUdPTiA9ICdnZW9hcnJvdy5tdWx0aXBvbHlnb24nLFxuICBXS0IgPSAnZ2VvYXJyb3cud2tiJ1xufVxuXG5leHBvcnQgY29uc3QgTE9BREVSU19DRE5fVkVSU0lPTiA9ICc0LjMuMic7XG5leHBvcnQgY29uc3QgTE9BREVSU19DRE5fVVJMID0gJ2h0dHBzOi8vdW5wa2cuY29tL0Bsb2FkZXJzLmdsJztcblxuZXhwb3J0IGNvbnN0IGdldExvYWRlck9wdGlvbnMgPSAoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgbXZ0OiB7XG4gICAgICB3b3JrZXJVcmw6IGAke0xPQURFUlNfQ0ROX1VSTH0vbXZ0QCR7TE9BREVSU19DRE5fVkVSU0lPTn0vZGlzdC9tdnQtd29ya2VyLmpzYFxuICAgIH0sXG4gICAgJ3F1YW50aXplZC1tZXNoJzoge1xuICAgICAgd29ya2VyVXJsOiBgJHtMT0FERVJTX0NETl9VUkx9L3RlcnJhaW5AJHtMT0FERVJTX0NETl9WRVJTSU9OfS9kaXN0L3F1YW50aXplZC1tZXNoLXdvcmtlci5qc2BcbiAgICB9LFxuICAgIG5weToge1xuICAgICAgd29ya2VyVXJsOiBgJHtMT0FERVJTX0NETl9VUkx9L3RleHR1cmVzQCR7TE9BREVSU19DRE5fVkVSU0lPTn0vZGlzdC9ucHktd29ya2VyLmpzYFxuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBDVVNUT01fU0NFTkVHUkFQSF9NT0RFTF9JRCA9ICdjdXN0b20nO1xuY29uc3QgTU9ERUxTX0JBU0VfVVJMID1cbiAgJ2h0dHBzOi8vc3R1ZGlvLXB1YmxpYy1kYXRhLmZvdXJzcXVhcmUuY29tL3N0YXRpY3Mva2VwbGVyZ2wvM2QtbW9kZWxzLjIwMjItMDYtMTMnO1xuXG5leHBvcnQgY29uc3QgVFJJUF9MQVlFUl9TQ0VORUdSQVBIX01PREVMUzoge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uOiBhbnk7XG4gIHVybDogc3RyaW5nIHwgbnVsbDtcbiAgYW5nbGVzOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHNjYWxlOiBudW1iZXI7XG59W10gPSBbXG4gIHtcbiAgICBpZDogJ2FpcnBsYW5lJyxcbiAgICBsYWJlbDogJ0FpcnBsYW5lJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9QbGFuZS5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiAnYm9laW5nNzc3JyxcbiAgICBsYWJlbDogJ0FpcmxpbmVyJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9BaXJsaW5lci5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiAndWJlci1ldnRvbCcsXG4gICAgbGFiZWw6ICdWVE9MJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9ldnRvbC5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiAnaGFuZy1nbGlkZXInLFxuICAgIGxhYmVsOiAnR2xpZGVyJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9IYW5nZ2xpZGVyLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICdoZWxpY29wdGVyJyxcbiAgICBsYWJlbDogJ0hlbGljb3B0ZXInLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L0hlbGljb3B0ZXIuZ2xiYCxcbiAgICBhbmdsZXM6IFswLCAwLCAwXSxcbiAgICBzY2FsZTogMS4wXG4gIH0sXG4gIHtcbiAgICBpZDogJ2JpY3ljbGUnLFxuICAgIGxhYmVsOiAnQmljeWNsZScsXG4gICAgaWNvbjogbnVsbCxcbiAgICB1cmw6IGAke01PREVMU19CQVNFX1VSTH0vQmljeWNsZS5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiAnc2Nvb3RlcicsXG4gICAgbGFiZWw6ICdTY29vdGVyJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9TY29vdGVyLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICdjYXInLFxuICAgIGxhYmVsOiAnQ2FyJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9DYXIuZ2xiYCxcbiAgICBhbmdsZXM6IFswLCAwLCAwXSxcbiAgICBzY2FsZTogMS4wXG4gIH0sXG4gIHtcbiAgICBpZDogJ3RydWNrJyxcbiAgICBsYWJlbDogJ1RydWNrJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9UcnVjay5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiAnc2VtaXRydWNrJyxcbiAgICBsYWJlbDogJ1NlbWl0cnVjaycsXG4gICAgaWNvbjogbnVsbCxcbiAgICB1cmw6IGAke01PREVMU19CQVNFX1VSTH0vU2VtaXRydWNrLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICdjYXJnb3NoaXAnLFxuICAgIGxhYmVsOiAnQ2FyZ29zaGlwJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9DYXJnb3NoaXAuZ2xiYCxcbiAgICBhbmdsZXM6IFswLCAwLCAwXSxcbiAgICBzY2FsZTogMS4wXG4gIH0sXG4gIHtcbiAgICBpZDogQ1VTVE9NX1NDRU5FR1JBUEhfTU9ERUxfSUQsXG4gICAgbGFiZWw6ICdDdXN0b20nLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBudWxsLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfVxuXTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQVVBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQVVBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUErQyxJQUFBRyxtQkFBQSxFQUFBQyxXQUFBLEVBdkIvQztBQUNBO0FBQUEsU0FBQUMsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FB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