@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.
- package/dist/cjs/annotation.js +45 -0
- package/dist/cjs/color-palettes.js +461 -0
- package/dist/cjs/colors-by-theme.js +519 -0
- package/dist/cjs/dataset.js +82 -0
- package/dist/cjs/default-settings.js +1729 -0
- package/dist/cjs/gpu-parameters.js +125 -0
- package/dist/cjs/index.js +149 -0
- package/dist/cjs/keyevent.js +26 -0
- package/dist/cjs/layers.js +605 -0
- package/dist/{plot.js → cjs/plot.js} +1 -1
- package/dist/cjs/time.js +194 -0
- package/dist/cjs/tooltip.js +221 -0
- package/dist/cjs/user-feedbacks.js +15 -0
- package/dist/cjs/user-guides.js +19 -0
- package/dist/esm/annotation.js +38 -0
- package/dist/esm/color-palettes.js +453 -0
- package/dist/esm/colors-by-theme.js +513 -0
- package/dist/esm/dataset.js +80 -0
- package/dist/esm/default-settings.js +1723 -0
- package/dist/esm/gpu-parameters.js +119 -0
- package/dist/esm/index.js +18 -0
- package/dist/esm/keyevent.js +19 -0
- package/dist/esm/layers.js +598 -0
- package/dist/esm/plot.js +9 -0
- package/dist/esm/time.js +190 -0
- package/dist/esm/tooltip.js +215 -0
- package/dist/esm/user-feedbacks.js +9 -0
- package/dist/esm/user-guides.js +13 -0
- package/package.json +14 -5
- package/dist/annotation.js +0 -45
- package/dist/color-palettes.js +0 -461
- package/dist/colors-by-theme.js +0 -519
- package/dist/dataset.js +0 -82
- package/dist/default-settings.js +0 -1729
- package/dist/gpu-parameters.js +0 -125
- package/dist/index.js +0 -149
- package/dist/keyevent.js +0 -26
- package/dist/layers.js +0 -605
- package/dist/time.js +0 -194
- package/dist/tooltip.js +0 -221
- package/dist/user-feedbacks.js +0 -15
- package/dist/user-guides.js +0 -19
|
@@ -0,0 +1,1729 @@
|
|
|
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.6";
|
|
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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfa2V5bWlycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZDNTY2FsZSIsIl90b29sdGlwIiwiX0ZJRUxEX1RZUEVfRElTUExBWSIsIl9GSUVMRF9PUFRTIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJBQ1RJT05fUFJFRklYIiwiZXhwb3J0cyIsIktFUExFUl9VTkZPTERFRF9CVUNLRVQiLCJCQVNFTUFQX0lDT05fUFJFRklYIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIlRSQU5TSVRJT05fRFVSQVRJT04iLCJEQVRBX1RBQkxFX0lEIiwiREVMRVRFX0RBVEFfSUQiLCJBRERfREFUQV9JRCIsIkVYUE9SVF9JTUFHRV9JRCIsIkVYUE9SVF9EQVRBX0lEIiwiQUREX01BUF9TVFlMRV9JRCIsIkVYUE9SVF9NQVBfSUQiLCJFWFBPUlRfVklERU9fSUQiLCJTQVZFX01BUF9JRCIsIk9WRVJXUklURV9NQVBfSUQiLCJTSEFSRV9NQVBfSUQiLCJLRVBMRVJfR0xfTkFNRSIsIktFUExFUl9HTF9WRVJTSU9OIiwiS0VQTEVSX0dMX1dFQlNJVEUiLCJESU1FTlNJT05TIiwic2lkZVBhbmVsIiwid2lkdGgiLCJtYXJnaW4iLCJ0b3AiLCJsZWZ0IiwiYm90dG9tIiwicmlnaHQiLCJoZWFkZXJIZWlnaHQiLCJtYXBDb250cm9sIiwicGFkZGluZyIsIm1hcExlZ2VuZCIsInBpbm5lZCIsIlRIRU1FIiwia2V5TWlycm9yIiwibGlnaHQiLCJkYXJrIiwiYmFzZSIsIlNJREVCQVJfUEFORUxTIiwiaWQiLCJsYWJlbCIsIm9uQ2xpY2siLCJQQU5FTF9WSUVXX1RPR0dMRVMiLCJsaXN0IiwiYnlEYXRhc2V0IiwiUEFORUxTIiwiREVGQVVMVF9CTERHX0NPTE9SIiwiREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SIiwiQkFTRV9NQVBfQkFDS0dST1VORF9MQVlFUl9JRFMiLCJCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUciLCJUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUciLCJCQUNLR1JPVU5EX0xBWUVSX0dST1VQIiwic2x1ZyIsImRlZmF1bHRWaXNpYmlsaXR5IiwiaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlIiwiaXNNb3ZlVG9Ub3BBdmFpbGFibGUiLCJpc0NvbG9yUGlja2VyQXZhaWxhYmxlIiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJfcmVmIiwidHlwZSIsIm1hdGNoIiwiX3JlZjIiLCJfcmVmMyIsIl9yZWY0IiwiX3JlZjUiLCJfcmVmNiIsIkJBU0VfTUFQX0NPTE9SX01PREVTIiwiTk9ORSIsIkRBUksiLCJMSUdIVCIsIk5PX01BUF9JRCIsIkVNUFRZX01BUEJPWF9TVFlMRSIsInZlcnNpb24iLCJzb3VyY2VzIiwibGF5ZXJzIiwiTUFQX0xJQl9PUFRJT05TIiwiTUFQQk9YIiwiTUFQTElCUkUiLCJNQVBCT1hfTUFYX1BJVENIIiwiTk9fQkFTRU1BUF9JQ09OIiwiY29uY2F0IiwiREVGQVVMVF9CQVNFX01BUF9TVFlMRSIsIkRFRkFVTFRfTk9fQkFTRU1BUF9TVFlMRSIsInVybCIsImljb24iLCJsYXllckdyb3VwcyIsImNvbG9yTW9kZSIsInN0eWxlIiwiREVGQVVMVF9NQVBCT1hfU1RZTEVTIiwiY29tcGxpbWVudGFyeVN0eWxlSWQiLCJERUZBVUxUX01BUEJPWF9TQVRFTElURV9TVFlMRVMiLCJERUZBVUxUX01BUExJQlJFX1NUWUxFUyIsIkRFRkFVTFRfTUFQX1NUWUxFUyIsIkdFT0pTT05fRklFTERTIiwiZ2VvanNvbiIsIklDT05fRklFTERTIiwiVFJJUF9QT0lOVF9GSUVMRFMiLCJBTFRJVFVERV9GSUVMRFMiLCJUUklQX0FSQ19GSUVMRFMiLCJsYXQwIiwibG5nMCIsImxhdDEiLCJsbmcxIiwiRklMVEVSX1RZUEVTIiwicmFuZ2UiLCJzZWxlY3QiLCJpbnB1dCIsInRpbWVSYW5nZSIsIm11bHRpU2VsZWN0IiwicG9seWdvbiIsIkZJTFRFUl9WSUVXX1RZUEVTIiwic2lkZSIsImVubGFyZ2VkIiwibWluaWZpZWQiLCJERUZBVUxUX0ZJTFRFUl9WSUVXX1RZUEUiLCJTQ0FMRV9UWVBFUyIsIm9yZGluYWwiLCJxdWFudGlsZSIsInF1YW50aXplIiwibGluZWFyIiwic3FydCIsImxvZyIsInRocmVzaG9sZCIsImN1c3RvbSIsImN1c3RvbU9yZGluYWwiLCJwb2ludCIsIlNDQUxFX1RZUEVfTkFNRVMiLCJTQ0FMRV9GVU5DIiwic2NhbGVMaW5lYXIiLCJzY2FsZVF1YW50aXplIiwic2NhbGVRdWFudGlsZSIsInNjYWxlT3JkaW5hbCIsInNjYWxlU3FydCIsInNjYWxlTG9nIiwic2NhbGVQb2ludCIsInNjYWxlVGhyZXNob2xkIiwiQUxMX0ZJRUxEX1RZUEVTIiwiZGF0ZSIsImludGVnZXIiLCJyZWFsIiwic3RyaW5nIiwidGltZXN0YW1wIiwiYXJyYXkiLCJvYmplY3QiLCJnZW9hcnJvdyIsImgzIiwiU09SVF9PUkRFUiIsIkFTQ0VORElORyIsIkRFU0NFTkRJTkciLCJVTlNPUlQiLCJUQUJMRV9PUFRJT04iLCJTT1JUX0FTQyIsIlNPUlRfREVTIiwiUElOIiwiVU5QSU4iLCJDT1BZIiwiRk9STUFUX0NPTFVNTiIsIlRBQkxFX09QVElPTl9MSVNUIiwidmFsdWUiLCJkaXNwbGF5IiwiY29uZGl0aW9uIiwicHJvcHMiLCJzb3J0VGFibGVDb2x1bW4iLCJzb3J0TW9kZSIsImlzU29ydGVkIiwiaXNQaW5uZWQiLCJzZXREaXNwbGF5Rm9ybWF0IiwiWUVMTE9XIiwiUElOSyIsIlBVUlBMRSIsIkJMVUUiLCJCTFVFMiIsIkJMVUUzIiwiR1JFRU4iLCJHUkVFTjIiLCJSRUQiLCJPUkFOR0UiLCJGSUVMRF9UWVBFX0RJU1BMQVkiLCJjb2xvciIsIkZJRUxEX0NPTE9SUyIsIkhJR0hMSUdIX0NPTE9SXzNEIiwiQ0hBTk5FTF9TQ0FMRVMiLCJyYWRpdXMiLCJzaXplIiwiY29sb3JBZ2dyIiwic2l6ZUFnZ3IiLCJhbmdsZSIsIkFHR1JFR0FUSU9OX1RZUEVTIiwiY291bnQiLCJhdmVyYWdlIiwibWF4aW11bSIsIm1pbmltdW0iLCJtZWRpYW4iLCJzdGRldiIsInN1bSIsInZhcmlhbmNlIiwibW9kZSIsImNvdW50VW5pcXVlIiwiQUdHUkVHQVRJT05fVFlQRV9PUFRJT05TIiwiZW50cmllcyIsIm1hcCIsIl9yZWY3IiwiX3JlZjgiLCJfc2xpY2VkVG9BcnJheTIiLCJrZXkiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwibGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyIsIkRFRkFVTFRfQUdHUkVHQVRJT05fQ09MT1JfU0NBTEVTIiwibGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJyZWR1Y2UiLCJwcmV2IiwiY3VyIiwib3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMiLCJvcmRpbmFsRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJub3RTdXBwb3J0ZWRTY2FsZU9wdHMiLCJub3RTdXBwb3J0QWdnck9wdHMiLCJERUZBVUxUX0FHR1JFR0FUSU9OIiwiRklFTERfT1BUUyIsInNjYWxlIiwiZm9ybWF0IiwibGVnZW5kIiwiZCIsInRvb2x0aXAiLCJUT09MVElQX0ZPUk1BVF9UWVBFUyIsIkRFQ0lNQUwiLCJQRVJDRU5UQUdFIiwiREFURSIsIkRBVEVfVElNRSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJCT09MRUFOIiwiQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTIiwiYWNjdSIsImZ0IiwiREVGQVVMVF9MQVlFUl9DT0xPUiIsInRyaXBBcmMiLCJiZWdpbnRyaXBfbGF0IiwiZHJvcG9mZl9sYXQiLCJyZXF1ZXN0X2xhdCIsIkRFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURSIsIkRFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURV9TVEVQUyIsIkRFRkFVTFRfVE9PTFRJUF9GSUVMRFMiLCJOT19WQUxVRV9DT0xPUiIsIkRFRkFVTFRfUElDS0lOR19SQURJVVMiLCJPVkVSTEFZX0JMRU5ESU5HUyIsIm5vcm1hbCIsInNjcmVlbiIsImRhcmtlbiIsIkxBWUVSX0JMRU5ESU5HUyIsImFkZGl0aXZlIiwiYmxlbmRGdW5jIiwiYmxlbmRFcXVhdGlvbiIsInN1YnRyYWN0aXZlIiwiTUFYX0RFRkFVTFRfVE9PTFRJUFMiLCJSRVNPTFVUSU9OUyIsIk9ORV9YIiwiVFdPX1giLCJFWFBPUlRfSU1HX1JBVElPUyIsIlNDUkVFTiIsIkZPVVJfQllfVEhSRUUiLCJTSVhURUVOX0JZX05JTkUiLCJDVVNUT00iLCJTY3JlZW5SYXRpb09wdGlvbiIsImdldFNpemUiLCJzY3JlZW5XIiwic2NyZWVuSCIsImhlaWdodCIsIkN1c3RvbVJhdGlvT3B0aW9uIiwiaGlkZGVuIiwibWFwVyIsIm1hcEgiLCJGb3VyQnlUaHJlZVJhdGlvT3B0aW9uIiwiTWF0aCIsInJvdW5kIiwiU2l4dGVlbkJ5TmluZVJhdGlvT3B0aW9uIiwiRVhQT1JUX0lNR19SQVRJT19PUFRJT05TIiwiT25lWFJlc29sdXRpb25PcHRpb24iLCJhdmFpbGFibGUiLCJUd29YUmVzb2x1dGlvbk9wdGlvbiIsIlJlc29sdXRpb24xOTIweDEwODBPcHRpb24iLCJSZXNvbHV0aW9uMTI4MHg3MjBPcHRpb24iLCJSZXNvbHV0aW9uMjU2MHgxNDQwT3B0aW9uIiwiUmVzb2x1dGlvbjE2MDB4OTAwT3B0aW9uIiwiUmVzb2x1dGlvbjEwMjR4NzY4T3B0aW9uIiwiUmVzb2x1dGlvbjEyODB4OTYwT3B0aW9uIiwiUmVzb2x1dGlvbjE2MDB4MTIwME9wdGlvbiIsIlJlc29sdXRpb24xOTIweDE0NDBPcHRpb24iLCJFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUyIsIkVYUE9SVF9EQVRBX1RZUEUiLCJDU1YiLCJFWFBPUlRfREFUQV9UWVBFX09QVElPTlMiLCJ0b0xvd2VyQ2FzZSIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIkhUTUwiLCJKU09OIiwiRVhQT1JUX0hUTUxfTUFQX01PREVTIiwiUkVBRCIsIkVESVQiLCJFWFBPUlRfTUFQX0ZPUk1BVF9PUFRJT05TIiwiZW50cnkiLCJnZXRIVE1MTWFwTW9kZVRpbGVVcmwiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TIiwiREVGQVVMVF9VVUlEX0NPVU5UIiwiREVGQVVMVF9OT1RJRklDQVRJT05fTUVTU0FHRSIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTIiwiaW5mbyIsImVycm9yIiwid2FybmluZyIsInN1Y2Nlc3MiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJnbG9iYWwiLCJmaWxlIiwiVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUiLCJCQVNFX1NQRUVEIiwiRlBTIiwiQU5JTUFUSU9OX1dJTkRPVyIsImZyZWUiLCJpbmNyZW1lbnRhbCIsImludGVydmFsIiwiREVGQVVMVF9USU1FX0ZPUk1BVCIsIlNQRUVEX0NPTlRST0xfUkFOR0UiLCJTUEVFRF9DT05UUk9MX1NURVAiLCJHRU9DT0RFUl9EQVRBU0VUX05BTUUiLCJHRU9DT0RFUl9MQVlFUl9JRCIsIkdFT0NPREVSX0dFT19PRkZTRVQiLCJHRU9DT0RFUl9JQ09OX0NPTE9SIiwiR0VPQ09ERVJfSUNPTl9TSVpFIiwiRURJVE9SX0xBWUVSX0lEIiwiRURJVE9SX0xBWUVSX1BJQ0tJTkdfUkFESVVTIiwiRURJVE9SX01PREVTIiwiRFJBV19QT0xZR09OIiwiRFJBV19SRUNUQU5HTEUiLCJQTE9UX1RZUEVTIiwiaGlzdG9ncmFtIiwibGluZUNoYXJ0IiwiSU5JVF9GSUxURVJfSVRFTVNfSU5fRFJPUERPV04iLCJNQVhfR1BVX0ZJTFRFUlMiLCJNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiIsIk1BUF9JTkZPX0NIQVJBQ1RFUiIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJMT0FESU5HX01FVEhPRFMiLCJ1cGxvYWQiLCJzdG9yYWdlIiwidGlsZXNldCIsIkRFRkFVTFRfRkVBVFVSRV9GTEFHUyIsIkRBVEFTRVRfRk9STUFUUyIsInJvdyIsImNzdiIsImtlcGxlcmdsIiwiYXJyb3ciLCJkdWNrZGIiLCJNQVBfQ09OVFJPTFMiLCJ2aXNpYmxlTGF5ZXJzIiwidG9nZ2xlM2QiLCJzcGxpdE1hcCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJlZmZlY3QiLCJhbm5vdGF0aW9uIiwiYWlBc3Npc3RhbnQiLCJNYXBWaWV3TW9kZSIsIkdMT0JFX01JTl9aT09NIiwiR0xPQkVfTUFYX1pPT00iLCJHTE9CRV9NQVhfTEFUSVRVREUiLCJERUZBVUxUX0dMT0JFX0NPTkZJRyIsImF0bW9zcGhlcmUiLCJhemltdXRoIiwiYXppbXV0aEFuZ2xlIiwidGVybWluYXRvciIsInRlcm1pbmF0b3JPcGFjaXR5IiwiYmFzZW1hcCIsImxhYmVscyIsImxhYmVsc0NvbG9yIiwiYWRtaW5MaW5lcyIsImFkbWluTGluZXNDb2xvciIsIndhdGVyIiwid2F0ZXJDb2xvciIsInN1cmZhY2UiLCJzdXJmYWNlQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJzdGFycyIsIkdMT0JFX1NVUFBPUlRFRF9MQVlFUlMiLCJhcmMiLCJncmlkIiwiaGV4YWdvbiIsImNsdXN0ZXIiLCJoZXhhZ29uSWQiLCJ2ZWN0b3JUaWxlIiwiaGV4VGlsZSIsImxpbmUiLCJ0cmlwIiwicmFzdGVyVGlsZSIsImhlYXRtYXAiLCJzMiIsInRpbGUzZCIsImZsb3ciLCJNYXBTcGxpdE1vZGUiLCJQUk9KRUNURURfUElYRUxfU0laRV9NVUxUSVBMSUVSIiwiVEVYVF9PVVRMSU5FX01VTFRJUExJRVIiLCJkYXRhVGVzdElkcyIsImluZm9JY29uIiwid2FybmluZ0ljb24iLCJlcnJvckljb24iLCJzdWNjZXNzSWNvbiIsImNoZWNrbWFya0ljb24iLCJzb3J0YWJsZUxheWVySXRlbSIsInN0YXRpY0xheWVySXRlbSIsImxheWVyVGl0bGVFZGl0b3IiLCJyZW1vdmVMYXllckFjdGlvbiIsImxheWVyUGFuZWwiLCJzb3J0YWJsZUVmZmVjdEl0ZW0iLCJzdGF0aWNFZmZlY3RJdGVtIiwicHJvdmlkZXJMb2FkaW5nIiwicHJvdmlkZXJNYXBJbmZvUGFuZWwiLCJwcm92aWRlclNlbGVjdCIsImNsb3VkSGVhZGVyIiwicHJvdmlkZXJTaGFyZU1hcCIsIkRFRkFVTFRfVElNRVpPTkUiLCJERUZBVUxUX1BPU1RfUFJPQ0VTU0lOR19FRkZFQ1RfVFlQRSIsIkRFRkFVTFRfTElHSFRfQ09MT1IiLCJERUZBVUxUX0xJR0hUX0lOVEVOU0lUWSIsIkRFRkFVTFRfU0hBRE9XX0lOVEVOU0lUWSIsIkRFRkFVTFRfU0hBRE9XX0NPTE9SIiwiTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUyIsInBpY2siLCJjdXJyZW50IiwiYW5pbWF0aW9uIiwiREVGQVVMVF9MSUdIVF9BTkRfU0hBRE9XX1BST1BTIiwiRGF0ZSIsIm5vdyIsInRpbWVNb2RlIiwic2hhZG93SW50ZW5zaXR5Iiwic2hhZG93Q29sb3IiLCJzdW5MaWdodENvbG9yIiwic3VuTGlnaHRJbnRlbnNpdHkiLCJhbWJpZW50TGlnaHRDb2xvciIsImFtYmllbnRMaWdodEludGVuc2l0eSIsIkxJR0hUX0FORF9TSEFET1dfRUZGRUNUIiwibmFtZSIsInBhcmFtZXRlcnMiLCJtaW4iLCJtYXgiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiZGVmYXVsdFZhbHVlIiwiRElTVEFOQ0VfRk9HX1RZUEUiLCJTVVJGQUNFX0ZPR19UWVBFIiwiUE9TVFBST0NFU1NJTkdfRUZGRUNUUyIsImluayIsImJyaWdodG5lc3NDb250cmFzdCIsImh1ZVNhdHVyYXRpb24iLCJ2aWJyYW5jZSIsInNlcGlhIiwiZG90U2NyZWVuIiwiUEkiLCJjb2xvckhhbGZ0b25lIiwibm9pc2UiLCJ0cmlhbmdsZUJsdXIiLCJ6b29tQmx1ciIsInRpbHRTaGlmdCIsImVkZ2VXb3JrIiwidmlnbmV0dGUiLCJtYWduaWZ5IiwiaGV4YWdvbmFsUGl4ZWxhdGUiLCJkaXN0YW5jZUZvZyIsInN1cmZhY2VGb2ciLCJFRkZFQ1RfREVTQ1JJUFRJT05TIiwia2V5TmFtZSIsIlNZTkNfVElNRUxJTkVfTU9ERVMiLCJzdGFydCIsImVuZCIsIkdFT0FSUk9XX01FVEFEQVRBX0tFWSIsIkdFT0FSUk9XX0VYVEVOU0lPTlMiLCJMT0FERVJTX0NETl9WRVJTSU9OIiwiTE9BREVSU19DRE5fVVJMIiwiZ2V0TG9hZGVyT3B0aW9ucyIsIm12dCIsIndvcmtlclVybCIsIm5weSIsIkNVU1RPTV9TQ0VORUdSQVBIX01PREVMX0lEIiwiTU9ERUxTX0JBU0VfVVJMIiwiVFJJUF9MQVlFUl9TQ0VORUdSQVBIX01PREVMUyIsImFuZ2xlcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWZhdWx0LXNldHRpbmdzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBrZXlNaXJyb3IgZnJvbSAna2V5bWlycm9yJztcblxuaW1wb3J0IHtcbiAgQmFzZU1hcFN0eWxlLFxuICBFZmZlY3REZXNjcmlwdGlvbixcbiAgUkdCQUNvbG9yLFxuICBTeW5jVGltZWxpbmVNb2RlLFxuICBCYXNlTWFwQ29sb3JNb2RlcyxcbiAgTWVyZ2Vcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBzY2FsZUxpbmVhcixcbiAgc2NhbGVMb2csXG4gIHNjYWxlT3JkaW5hbCxcbiAgc2NhbGVQb2ludCxcbiAgc2NhbGVRdWFudGlsZSxcbiAgc2NhbGVRdWFudGl6ZSxcbiAgc2NhbGVTcXJ0LFxuICBzY2FsZVRocmVzaG9sZFxufSBmcm9tICdkMy1zY2FsZSc7XG5pbXBvcnQge1RPT0xUSVBfRk9STUFUX1RZUEVTfSBmcm9tICcuL3Rvb2x0aXAnO1xuXG5leHBvcnQgY29uc3QgQUNUSU9OX1BSRUZJWCA9ICdAQGtlcGxlci5nbC8nO1xuZXhwb3J0IGNvbnN0IEtFUExFUl9VTkZPTERFRF9CVUNLRVQgPSAnaHR0cHM6Ly9zdHVkaW8tcHVibGljLWRhdGEuZm91cnNxdWFyZS5jb20vc3RhdGljcy9rZXBsZXJnbCc7XG5leHBvcnQgY29uc3QgQkFTRU1BUF9JQ09OX1BSRUZJWCA9IGBnZW9kdWRlYDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUEJPWF9BUElfVVJMID0gJ2h0dHBzOi8vYXBpLm1hcGJveC5jb20nO1xuZXhwb3J0IGNvbnN0IFRSQU5TSVRJT05fRFVSQVRJT04gPSAwO1xuXG4vLyBNb2RhbCBJZHNcbi8qKlxuICogTW9kYWwgaWQ6IGRhdGEgdGFibGVcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERBVEFfVEFCTEVfSUQgPSAnZGF0YVRhYmxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGRlbGV0ZSBkYXRhc2V0IGNvbmZpcm0gZGlhbG9nXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUxFVEVfREFUQV9JRCA9ICdkZWxldGVEYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfREFUQV9JRCA9ICdhZGREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBpbWFnZSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNQUdFX0lEID0gJ2V4cG9ydEltYWdlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9JRCA9ICdleHBvcnREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBjdXN0b20gbWFwIHN0eWxlIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfTUFQX1NUWUxFX0lEID0gJ2FkZE1hcFN0eWxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBtYXAgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfSUQgPSAnZXhwb3J0TWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCB2aWRlbyBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX1ZJREVPX0lEID0gJ2V4cG9ydFZpZGVvJztcbi8qKlxuICogTW9kYWwgaWQ6IHNhdmUgbWFwIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBTQVZFX01BUF9JRCA9ICdzYXZlTWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IGNvbmZpcm0gdG8gb3ZlcndyaXRlIHNhdmVkIG1hcFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgT1ZFUldSSVRFX01BUF9JRCA9ICdvdmVyd3JpdGVNYXAnO1xuLyoqXG4gKiBNb2RhbCBpZDogc2hhcmUgbWFwIHVybCBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgU0hBUkVfTUFQX0lEID0gJ3NoYXJlTWFwJztcblxuZXhwb3J0IGNvbnN0IEtFUExFUl9HTF9OQU1FID0gJ2tlcGxlci5nbCc7XG5cbi8vIF9fUEFDS0FHRV9WRVJTSU9OX18gaXMgYXV0b21hdGljYWxseSBpbmplY3RlZCBieSBCYWJlbC9Fc2J1aWxkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzc1xuLy8gU2luY2Ugd2UgYXJlIGluamVjdGluZyB0aGlzIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcyB3aXRoIGJhYmVsXG4vLyB3aGlsZSBkZXZlbG9waW5nIFZFUlNJT04gaXMgbm90IGRlZmluZWQsIHdlIGNhcHR1cmUgdGhlIGV4Y2VwdGlvbiBhbmQgcmV0dXJuXG4vLyBhbiBlbXB0eSBzdHJpbmcgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byByZXRyaWV2ZSB0aGUgbGF0ZXN0IHVtZCB2ZXJzaW9uXG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1ZFUlNJT04gPSAnX19QQUNLQUdFX1ZFUlNJT05fXyc7XG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1dFQlNJVEUgPSAnaHR0cDovL2tlcGxlci5nbC8nO1xuXG5leHBvcnQgY29uc3QgRElNRU5TSU9OUyA9IHtcbiAgc2lkZVBhbmVsOiB7XG4gICAgd2lkdGg6IDMwMCxcbiAgICBtYXJnaW46IHt0b3A6IDEyLCBsZWZ0OiAxMiwgYm90dG9tOiAxMiwgcmlnaHQ6IDIwfSxcbiAgICBoZWFkZXJIZWlnaHQ6IDk2XG4gIH0sXG4gIG1hcENvbnRyb2w6IHtcbiAgICB3aWR0aDogMTg0LFxuICAgIHBhZGRpbmc6IDEyLFxuICAgIG1hcExlZ2VuZDoge1xuICAgICAgcGlubmVkOiB7XG4gICAgICAgIGJvdHRvbTogMjIsXG4gICAgICAgIHJpZ2h0OiAxMlxuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBUaGVtZSBuYW1lIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBgS2VwbGVyR2xgIGBwcm9wLnRoZW1lYC5cbiAqIEF2YWlsYWJsZSB0aGVtZXMgYXJlIGBUSEVNRS5saWdodGAgYW5kIGBUSEVNRS5kYXJrYC4gRGVmYXVsdCB0aGVtZSBpcyBgVEhFTUUuZGFya2BcbiAqIEBjb25zdGFudFxuICogQHR5cGUge29iamVjdH1cbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBgYGBqc1xuICogY29uc3QgTWFwID0gKCkgPT4gPEtlcGxlckdsIHRoZW1lPXtUSEVNRS5saWdodH0gaWQ9XCJtYXBcIi8+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IFRIRU1FID0ga2V5TWlycm9yKHtcbiAgbGlnaHQ6IG51bGwsXG4gIGRhcms6IG51bGwsXG4gIGJhc2U6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgU0lERUJBUl9QQU5FTFMgPSBbXG4gIHtcbiAgICBpZDogJ2xheWVyJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmxheWVyJyxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ZpbHRlcicsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5maWx0ZXInLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnaW50ZXJhY3Rpb24nLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMuaW50ZXJhY3Rpb24nLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnbWFwJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmJhc2VtYXAnLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IFBBTkVMX1ZJRVdfVE9HR0xFUyA9IGtleU1pcnJvcih7XG4gIGxpc3Q6IG51bGwsXG4gIGJ5RGF0YXNldDogbnVsbFxufSk7XG5cbi8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbmV4cG9ydCBjb25zdCBQQU5FTFMgPSBTSURFQkFSX1BBTkVMUztcblxuLy8gTUFQIFNUWUxFU1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CTERHX0NPTE9SID0gJyNEMUNFQzcnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SID0gJyMwMDAwMDAnO1xuXG4vLyBhc3Npc3RzIGluIGlkZW50aWZ5aW5nIGJhc2VtYXAgYmFja2dyb3VuZCBsYXllcnMgd2hlbiBhdXRvLWRldGVybWluaW5nIHRoZSBiYWNrZ3JvdW5kQ29sb3JcbmV4cG9ydCBjb25zdCBCQVNFX01BUF9CQUNLR1JPVU5EX0xBWUVSX0lEUyA9IFsnYmFja2dyb3VuZCcsICdiZycsICdsYW5kJywgJ3dhdGVyJ107XG5cbmV4cG9ydCBjb25zdCBCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUcgPSAnQmFja2dyb3VuZCc7XG5cbmV4cG9ydCBjb25zdCBUSFJFRV9EX0JVSUxESU5HX0xBWUVSX0dST1VQX1NMVUcgPSAnM2QgYnVpbGRpbmcnO1xuXG5leHBvcnQgdHlwZSBERUZBVUxUX0xBWUVSX0dST1VQID0ge1xuICBzbHVnOiBzdHJpbmc7XG4gIGZpbHRlcjogKHZhbHVlKSA9PiBib29sZWFuO1xuICBkZWZhdWx0VmlzaWJpbGl0eTogYm9vbGVhbjtcbiAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlPzogYm9vbGVhbjtcbiAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU/OiBib29sZWFuO1xuICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBCQUNLR1JPVU5EX0xBWUVSX0dST1VQOiBERUZBVUxUX0xBWUVSX0dST1VQID0ge1xuICBzbHVnOiBCQUNLR1JPVU5EX0xBWUVSX0dST1VQX1NMVUcsXG4gIGZpbHRlcjogKCkgPT4gZmFsc2UsXG4gIGRlZmF1bHRWaXNpYmlsaXR5OiBmYWxzZSxcbiAgaXNWaXNpYmlsaXR5VG9nZ2xlQXZhaWxhYmxlOiBmYWxzZSxcbiAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU6IGZhbHNlLFxuICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiB0cnVlXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9HUk9VUFM6IERFRkFVTFRfTEFZRVJfR1JPVVBbXSA9IFtcbiAge1xuICAgIHNsdWc6ICdsYWJlbCcsXG4gICAgZmlsdGVyOiAoe2lkLCB0eXBlfSkgPT4gaWQubWF0Y2goLyg/PShsYWJlbHxwbGFjZS18cG9pLSkpLykgfHwgdHlwZT8ubWF0Y2goLyg/PShzeW1ib2wpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ3JvYWQnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0ocm9hZHxyYWlsd2F5fHR1bm5lbHxzdHJlZXR8YnJpZGdlKSkoPyEuKmxhYmVsKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2JvcmRlcicsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goL2JvcmRlcnxib3VuZGFyaWVzfGJvdW5kYXJ5LyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IGZhbHNlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2J1aWxkaW5nJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvYnVpbGRpbmcvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZSxcbiAgICBpc1Zpc2liaWxpdHlUb2dnbGVBdmFpbGFibGU6IHRydWUsXG4gICAgaXNNb3ZlVG9Ub3BBdmFpbGFibGU6IHRydWUsXG4gICAgaXNDb2xvclBpY2tlckF2YWlsYWJsZTogZmFsc2VcbiAgfSxcbiAge1xuICAgIHNsdWc6ICd3YXRlcicsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PSh3YXRlcnxzdHJlYW18ZmVycnkpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2xhbmQnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0ocGFya3N8bGFuZGNvdmVyfGluZHVzdHJpYWx8c2FuZHxoaWxsc2hhZGUpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogVEhSRUVfRF9CVUlMRElOR19MQVlFUl9HUk9VUF9TTFVHLFxuICAgIGZpbHRlcjogKCkgPT4gZmFsc2UsXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IGZhbHNlLFxuICAgIGlzVmlzaWJpbGl0eVRvZ2dsZUF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc01vdmVUb1RvcEF2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0NvbG9yUGlja2VyQXZhaWxhYmxlOiB0cnVlXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBCQVNFX01BUF9DT0xPUl9NT0RFUyA9IGtleU1pcnJvcih7XG4gIE5PTkU6IG51bGwsXG4gIERBUks6IG51bGwsXG4gIExJR0hUOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IE5PX01BUF9JRCA9ICdub19tYXAnO1xuXG4vLyBGYWxsYmFjayBzdHlsZSB0byB1c2Ugd2hlbiBzdHlsZXMgYXJlIGJlaW5nIGZldGNoZWQsIG9yIHdoZW5cbi8vIGEgc3R5bGUgZmFpbHMgdG8gZmV0Y2hcbmV4cG9ydCBjb25zdCBFTVBUWV9NQVBCT1hfU1RZTEUgPSB7XG4gIHZlcnNpb246IDgsXG4gIHNvdXJjZXM6IHt9LFxuICBsYXllcnM6IFtdXG59O1xuXG5leHBvcnQgY29uc3QgTUFQX0xJQl9PUFRJT05TID0ge1xuICBNQVBCT1g6ICdtYXBib3gnIGFzIGNvbnN0LFxuICBNQVBMSUJSRTogJ21hcGxpYnJlJyBhcyBjb25zdFxufTtcblxuLyoqIE1hcGJveCBHTCBKUyBkb2VzIG5vdCBzdXBwb3J0IHBpdGNoIGFib3ZlIDYwIGRlZ3JlZXMgKi9cbmV4cG9ydCBjb25zdCBNQVBCT1hfTUFYX1BJVENIID0gNjA7XG5cbmV4cG9ydCB0eXBlIEJhc2VNYXBMaWJyYXJ5VHlwZSA9ICdtYXBib3gnIHwgJ21hcGxpYnJlJztcblxuZXhwb3J0IGNvbnN0IE5PX0JBU0VNQVBfSUNPTiA9IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L05PX0JBU0VNQVAucG5nYDtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQkFTRV9NQVBfU1RZTEUgPSAnZGFyay1tYXR0ZXInO1xuXG50eXBlIERlZmF1bHRCYXNlTWFwU3R5bGUgPSBNZXJnZTxcbiAgQmFzZU1hcFN0eWxlLFxuICB7XG4gICAgY29sb3JNb2RlOiBCYXNlTWFwQ29sb3JNb2RlcztcbiAgfVxuPjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9fQkFTRU1BUF9TVFlMRTogRGVmYXVsdEJhc2VNYXBTdHlsZSA9IHtcbiAgaWQ6IE5PX01BUF9JRCxcbiAgbGFiZWw6ICdObyBCYXNlbWFwJyxcbiAgdXJsOiAnJyxcbiAgaWNvbjogTk9fQkFTRU1BUF9JQ09OLFxuICBsYXllckdyb3VwczogW0JBQ0tHUk9VTkRfTEFZRVJfR1JPVVBdLFxuICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLk5PTkUsXG4gIHN0eWxlOiBFTVBUWV9NQVBCT1hfU1RZTEVcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUEJPWF9TVFlMRVM6IERlZmF1bHRCYXNlTWFwU3R5bGVbXSA9IFtcbiAge1xuICAgIGlkOiAnZGFyaycsXG4gICAgbGFiZWw6ICdEYXJrJyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pvcWJiZjZsOWszMDJzbDk2dHl2a2EwOScsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vVUJFUl9EQVJLX1YyLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuREFSSyxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ2xpZ2h0J1xuICB9LFxuICB7XG4gICAgaWQ6ICdsaWdodCcsXG4gICAgbGFiZWw6ICdMaWdodCcsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2Nqb3FiOWozMzlrMWYyc2w5dDVpYzVibjQnLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1VCRVJfTElHSFRfVjIucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFMsXG4gICAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVCxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ2RhcmsnXG4gIH0sXG4gIHtcbiAgICBpZDogJ211dGVkJyxcbiAgICBsYWJlbDogJ011dGVkIExpZ2h0JyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pmeWwwM2twMXR1bDJzbWY1djJ0YmRkNCcsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vVUJFUl9NVVRFRF9MSUdIVC5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkxJR0hULFxuICAgIGNvbXBsaW1lbnRhcnlTdHlsZUlkOiAnbXV0ZWRfbmlnaHQnXG4gIH0sXG4gIHtcbiAgICBpZDogJ211dGVkX25pZ2h0JyxcbiAgICBsYWJlbDogJ011dGVkIE5pZ2h0JyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pmeGhsaWttYWoxYjJzb3l6ZXZueXdncycsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vVUJFUl9NVVRFRF9OSUdIVC5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUkssXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdtdXRlZCdcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFQQk9YX1NBVEVMSVRFX1NUWUxFUzogRGVmYXVsdEJhc2VNYXBTdHlsZVtdID0gW1xuICB7XG4gICAgaWQ6ICdzYXRlbGxpdGUnLFxuICAgIGxhYmVsOiAnU2F0ZWxsaXRlIHdpdGggc3RyZWV0cycsXG4gICAgdXJsOiBgbWFwYm94Oi8vc3R5bGVzL21hcGJveC9zYXRlbGxpdGUtc3RyZWV0cy12MTFgLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1VCRVJfU0FURUxMSVRFLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuTk9ORVxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBMSUJSRV9TVFlMRVM6IERlZmF1bHRCYXNlTWFwU3R5bGVbXSA9IFtcbiAge1xuICAgIGlkOiAnZGFyay1tYXR0ZXInLFxuICAgIGxhYmVsOiAnRGFya01hdHRlcicsXG4gICAgdXJsOiAnaHR0cHM6Ly9iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vZ2wvZGFyay1tYXR0ZXItZ2wtc3R5bGUvc3R5bGUuanNvbicsXG4gICAgaWNvbjogYCR7QkFTRU1BUF9JQ09OX1BSRUZJWH0vREFSS01BVFRFUi5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgICBjb2xvck1vZGU6IEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUkssXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdwb3NpdHJvbidcbiAgfSxcbiAge1xuICAgIGlkOiAncG9zaXRyb24nLFxuICAgIGxhYmVsOiAnUG9zaXRyb24nLFxuICAgIHVybDogJ2h0dHBzOi8vYmFzZW1hcHMuY2FydG9jZG4uY29tL2dsL3Bvc2l0cm9uLWdsLXN0eWxlL3N0eWxlLmpzb24nLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1BPU0lUUk9OLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICAgIGNvbG9yTW9kZTogQkFTRV9NQVBfQ09MT1JfTU9ERVMuTElHSFQsXG4gICAgY29tcGxpbWVudGFyeVN0eWxlSWQ6ICdkYXJrLW1hdHRlcidcbiAgfSxcbiAge1xuICAgIGlkOiAndm95YWdlcicsXG4gICAgbGFiZWw6ICdWb3lhZ2VyJyxcbiAgICB1cmw6ICdodHRwczovL2Jhc2VtYXBzLmNhcnRvY2RuLmNvbS9nbC92b3lhZ2VyLWdsLXN0eWxlL3N0eWxlLmpzb24nLFxuICAgIGljb246IGAke0JBU0VNQVBfSUNPTl9QUkVGSVh9L1ZPWUFHRVIucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFMsXG4gICAgY29sb3JNb2RlOiBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVCxcbiAgICBjb21wbGltZW50YXJ5U3R5bGVJZDogJ2RhcmstbWF0dGVyJ1xuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBfU1RZTEVTID0gW1xuICBERUZBVUxUX05PX0JBU0VNQVBfU1RZTEUsXG4gIC4uLkRFRkFVTFRfTUFQTElCUkVfU1RZTEVTLFxuICAuLi5ERUZBVUxUX01BUEJPWF9TQVRFTElURV9TVFlMRVMsXG4gIC4uLkRFRkFVTFRfTUFQQk9YX1NUWUxFU1xuXTtcblxuZXhwb3J0IGNvbnN0IEdFT0pTT05fRklFTERTID0ge1xuICBnZW9qc29uOiBbJ19nZW9qc29uJywgJ2FsbF9wb2ludHMnLCAnZ2VvanNvbiddXG59O1xuXG5leHBvcnQgY29uc3QgSUNPTl9GSUVMRFMgPSB7XG4gIGljb246IFsnaWNvbiddXG59O1xuXG5leHBvcnQgY29uc3QgVFJJUF9QT0lOVF9GSUVMRFM6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtcbiAgWydsYXQnLCAnbG5nJ10sXG4gIFsnbGF0JywgJ2xvbiddLFxuICBbJ2xhdCcsICdsb25nJ10sXG4gIFsnbGF0aXR1ZGUnLCAnbG9uZ2l0dWRlJ11cbl07XG5cbmV4cG9ydCBjb25zdCBBTFRJVFVERV9GSUVMRFMgPSBbJ2FsdCcsICdhbHRpdHVkZSddO1xuZXhwb3J0IGNvbnN0IFRSSVBfQVJDX0ZJRUxEUyA9IHtcbiAgbGF0MDogJ2JlZ2ludHJpcCcsXG4gIGxuZzA6ICdiZWdpbnRyaXAnLFxuICBsYXQxOiAnZHJvcG9mZicsXG4gIGxuZzE6ICdkcm9wb2ZmJ1xufTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9UWVBFUyA9IGtleU1pcnJvcih7XG4gIHJhbmdlOiBudWxsLFxuICBzZWxlY3Q6IG51bGwsXG4gIGlucHV0OiBudWxsLFxuICB0aW1lUmFuZ2U6IG51bGwsXG4gIG11bHRpU2VsZWN0OiBudWxsLFxuICBwb2x5Z29uOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9WSUVXX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgc2lkZTogbnVsbCxcbiAgZW5sYXJnZWQ6IG51bGwsXG4gIG1pbmlmaWVkOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRklMVEVSX1ZJRVdfVFlQRSA9IEZJTFRFUl9WSUVXX1RZUEVTLnNpZGU7XG5cbmV4cG9ydCB0eXBlIFNDQUxFX1RZUEVTX0RFRiA9IHtcbiAgb3JkaW5hbDogJ29yZGluYWwnO1xuICBxdWFudGlsZTogJ3F1YW50aWxlJztcbiAgcXVhbnRpemU6ICdxdWFudGl6ZSc7XG4gIGxpbmVhcjogJ2xpbmVhcic7XG4gIHNxcnQ6ICdzcXJ0JztcbiAgbG9nOiAnbG9nJztcbiAgcG9pbnQ6ICdwb2ludCc7XG4gIHRocmVzaG9sZDogJ3RocmVzaG9sZCc7XG4gIGN1c3RvbTogJ2N1c3RvbSc7XG4gIGN1c3RvbU9yZGluYWw6ICdjdXN0b21PcmRpbmFsJztcbn07XG5cbmV4cG9ydCBjb25zdCBTQ0FMRV9UWVBFUzogU0NBTEVfVFlQRVNfREVGID0ga2V5TWlycm9yKHtcbiAgb3JkaW5hbDogbnVsbCxcbiAgcXVhbnRpbGU6IG51bGwsXG4gIHF1YW50aXplOiBudWxsLFxuICBsaW5lYXI6IG51bGwsXG4gIHNxcnQ6IG51bGwsXG4gIGxvZzogbnVsbCxcbiAgdGhyZXNob2xkOiBudWxsLFxuICBjdXN0b206IG51bGwsXG4gIGN1c3RvbU9yZGluYWw6IG51bGwsXG4gIC8vIG9yZGluYWwgZG9tYWluIHRvIGxpbmVhciByYW5nZVxuICBwb2ludDogbnVsbFxufSk7XG5leHBvcnQgY29uc3QgU0NBTEVfVFlQRV9OQU1FUzoge1trZXkgaW4ga2V5b2YgU0NBTEVfVFlQRVNfREVGXTogc3RyaW5nfSA9IHtcbiAgb3JkaW5hbDogJ09yZGluYWwnLFxuICBxdWFudGlsZTogJ1F1YW50aWxlJyxcbiAgcXVhbnRpemU6ICdRdWFudGl6ZScsXG4gIGxpbmVhcjogJ0xpbmVhcicsXG4gIHNxcnQ6ICdTcXJ0JyxcbiAgbG9nOiAnTG9nJyxcbiAgdGhyZXNob2xkOiAnVGhyZXNob2xkJyxcbiAgY3VzdG9tOiAnQ3VzdG9tIEJyZWFrcycsXG4gIGN1c3RvbU9yZGluYWw6ICdDdXN0b20gT3JkaW5hbCcsXG4gIHBvaW50OiAnUG9pbnQnXG59O1xuXG5leHBvcnQgdHlwZSBTQ0FMRV9GVU5DX1RZUEUgPSB7XG4gIFtrZXkgaW4ga2V5b2YgU0NBTEVfVFlQRVNfREVGXTogKCkgPT4gbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IFNDQUxFX0ZVTkMgPSB7XG4gIFtTQ0FMRV9UWVBFUy5saW5lYXJdOiBzY2FsZUxpbmVhcixcbiAgW1NDQUxFX1RZUEVTLnF1YW50aXplXTogc2NhbGVRdWFudGl6ZSxcbiAgW1NDQUxFX1RZUEVTLnF1YW50aWxlXTogc2NhbGVRdWFudGlsZSxcbiAgW1NDQUxFX1RZUEVTLm9yZGluYWxdOiBzY2FsZU9yZGluYWwsXG4gIFtTQ0FMRV9UWVBFUy5zcXJ0XTogc2NhbGVTcXJ0LFxuICBbU0NBTEVfVFlQRVMubG9nXTogc2NhbGVMb2csXG4gIFtTQ0FMRV9UWVBFUy5wb2ludF06IHNjYWxlUG9pbnQsXG4gIFtTQ0FMRV9UWVBFUy50aHJlc2hvbGRdOiBzY2FsZVRocmVzaG9sZCxcbiAgW1NDQUxFX1RZUEVTLmN1c3RvbV06IHNjYWxlVGhyZXNob2xkLFxuICBbU0NBTEVfVFlQRVMuY3VzdG9tT3JkaW5hbF06IHNjYWxlT3JkaW5hbFxufTtcblxuZXhwb3J0IGNvbnN0IEFMTF9GSUVMRF9UWVBFUyA9IGtleU1pcnJvcih7XG4gIGJvb2xlYW46IG51bGwsXG4gIGRhdGU6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGludGVnZXI6IG51bGwsXG4gIHJlYWw6IG51bGwsXG4gIHN0cmluZzogbnVsbCxcbiAgdGltZXN0YW1wOiBudWxsLFxuICBwb2ludDogbnVsbCxcbiAgYXJyYXk6IG51bGwsXG4gIG9iamVjdDogbnVsbCxcbiAgZ2VvYXJyb3c6IG51bGwsXG4gIGgzOiBudWxsXG59KTtcblxuLy8gRGF0YSBUYWJsZVxuZXhwb3J0IGNvbnN0IFNPUlRfT1JERVIgPSBrZXlNaXJyb3Ioe1xuICBBU0NFTkRJTkc6IG51bGwsXG4gIERFU0NFTkRJTkc6IG51bGwsXG4gIFVOU09SVDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT04gPSBrZXlNaXJyb3Ioe1xuICBTT1JUX0FTQzogbnVsbCxcbiAgU09SVF9ERVM6IG51bGwsXG4gIFVOU09SVDogbnVsbCxcbiAgUElOOiBudWxsLFxuICBVTlBJTjogbnVsbCxcbiAgQ09QWTogbnVsbCxcbiAgRk9STUFUX0NPTFVNTjogbnVsbFxufSk7XG5cbmV4cG9ydCB0eXBlIFRhYmxlT3B0aW9uID0ge1xuICB2YWx1ZTogJ1NPUlRfQVNDJyB8ICdTT1JUX0RFUycgfCAnVU5TT1JUJyB8ICdQSU4nIHwgJ1VOUElOJyB8ICdDT1BZJyB8ICdGT1JNQVRfQ09MVU1OJztcbiAgZGlzcGxheTogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIGNvbmRpdGlvbj86IChwcm9wczogYW55KSA9PiBib29sZWFuO1xufTtcbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT05fTElTVDogVGFibGVPcHRpb25bXSA9IFtcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uU09SVF9BU0MsXG4gICAgZGlzcGxheTogJ1NvcnQgQXNjZW5kaW5nJyxcbiAgICBpY29uOiAnQXJyb3dVcCcsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5zb3J0VGFibGVDb2x1bW4gJiYgcHJvcHMuc29ydE1vZGUgIT09IFNPUlRfT1JERVIuQVNDRU5ESU5HXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlNPUlRfREVTLFxuICAgIGRpc3BsYXk6ICdTb3J0IERlc2NlbmRpbmcnLFxuICAgIGljb246ICdBcnJvd0Rvd24nLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydFRhYmxlQ29sdW1uICYmIHByb3BzLnNvcnRNb2RlICE9PSBTT1JUX09SREVSLkRFU0NFTkRJTkdcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uVU5TT1JULFxuICAgIGRpc3BsYXk6ICdVbnNvcnQgQ29sdW1uJyxcbiAgICBpY29uOiAnQ2FuY2VsJyxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLmlzU29ydGVkXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlBJTixcbiAgICBkaXNwbGF5OiAnUGluIENvbHVtbicsXG4gICAgaWNvbjogJ1BpbicsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiAhcHJvcHMuaXNQaW5uZWRcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uVU5QSU4sXG4gICAgZGlzcGxheTogJ1VucGluIENvbHVtbicsXG4gICAgaWNvbjogJ0NhbmNlbCcsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5pc1Bpbm5lZFxuICB9LFxuICB7dmFsdWU6IFRBQkxFX09QVElPTi5DT1BZLCBkaXNwbGF5OiAnQ29weSBDb2x1bW4nLCBpY29uOiAnQ2xpcGJvYXJkJ30sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLkZPUk1BVF9DT0xVTU4sXG4gICAgZGlzcGxheTogJ0Zvcm1hdCBDb2x1bW4nLFxuICAgIGljb246ICdIYXNoJyxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLnNldERpc3BsYXlGb3JtYXRcbiAgfVxuXTtcblxuY29uc3QgWUVMTE9XID0gJzI0OCwgMTk0LCAyOCc7XG5jb25zdCBQSU5LID0gJzI0MiwgMTUyLCAxNjMnO1xuY29uc3QgUFVSUExFID0gJzE2MCwgMTA2LCAyMDYnO1xuY29uc3QgQkxVRSA9ICcxNDAsIDIxMCwgMjA1JztcbmNvbnN0IEJMVUUyID0gJzEwNiwgMTYwLCAyMDYnO1xuY29uc3QgQkxVRTMgPSAnMCwgMTcyLCAyMzcnO1xuY29uc3QgR1JFRU4gPSAnMTA2LCAxNjAsIDU2JztcbmNvbnN0IEdSRUVOMiA9ICc3NCwgMTY1LCAxNTAnO1xuY29uc3QgUkVEID0gJzIzNywgODgsIDEwNic7XG5jb25zdCBPUkFOR0UgPSAnMjMxLCAxMTAsIDU4JztcblxuZXhwb3J0IGNvbnN0IEZJRUxEX1RZUEVfRElTUExBWSA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXToge1xuICAgIGxhYmVsOiAnYm9vbCcsXG4gICAgY29sb3I6IFBJTktcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXToge1xuICAgIGxhYmVsOiAnZGF0ZScsXG4gICAgY29sb3I6IFBVUlBMRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb25dOiB7XG4gICAgbGFiZWw6ICdnZW8nLFxuICAgIGNvbG9yOiBCTFVFMlxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2Fycm93XToge1xuICAgIGxhYmVsOiAnZ2VvJyxcbiAgICBjb2xvcjogQkxVRTJcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXToge1xuICAgIGxhYmVsOiAnaW50JyxcbiAgICBjb2xvcjogWUVMTE9XXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMucmVhbF06IHtcbiAgICBsYWJlbDogJ2Zsb2F0JyxcbiAgICBjb2xvcjogWUVMTE9XXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuc3RyaW5nXToge1xuICAgIGxhYmVsOiAnc3RyaW5nJyxcbiAgICBjb2xvcjogQkxVRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IHtcbiAgICBsYWJlbDogJ3RpbWUnLFxuICAgIGNvbG9yOiBHUkVFTlxuICB9LFxuICAvLyBmaWVsZCBwYWlyc1xuICBbQUxMX0ZJRUxEX1RZUEVTLnBvaW50XToge1xuICAgIGxhYmVsOiAncG9pbnQnLFxuICAgIGNvbG9yOiBCTFVFM1xuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmFycmF5XToge1xuICAgIGxhYmVsOiAnYXJyYXknLFxuICAgIGNvbG9yOiBPUkFOR0VcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5vYmplY3RdOiB7XG4gICAgbGFiZWw6ICdvYmplY3QnLFxuICAgIGNvbG9yOiBHUkVFTjJcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5oM106IHtcbiAgICBsYWJlbDogJ2gzJyxcbiAgICBjb2xvcjogQkxVRVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfQ09MT1JTID0ge1xuICBkZWZhdWx0OiBSRURcbn07XG5leHBvcnQgY29uc3QgSElHSExJR0hfQ09MT1JfM0Q6IFJHQkFDb2xvciA9IFsyNTUsIDI1NSwgMjU1LCA2MF07XG5leHBvcnQgY29uc3QgQ0hBTk5FTF9TQ0FMRVMgPSBrZXlNaXJyb3Ioe1xuICBjb2xvcjogbnVsbCxcbiAgcmFkaXVzOiBudWxsLFxuICBzaXplOiBudWxsLFxuICBjb2xvckFnZ3I6IG51bGwsXG4gIHNpemVBZ2dyOiBudWxsLFxuICBhbmdsZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBBR0dSRUdBVElPTl9UWVBFUzoge1xuICAvLyBkZWZhdWx0XG4gIGNvdW50OiAnY291bnQnO1xuICAvLyBsaW5lYXJcbiAgYXZlcmFnZTogJ2F2ZXJhZ2UnO1xuICBtYXhpbXVtOiAnbWF4aW11bSc7XG4gIG1pbmltdW06ICdtaW5pbXVtJztcbiAgbWVkaWFuOiAnbWVkaWFuJztcbiAgc3RkZXY6ICdzdGRldic7XG4gIHN1bTogJ3N1bSc7XG4gIHZhcmlhbmNlOiAndmFyaWFuY2UnO1xuICAvLyBvcmRpbmFsXG4gIG1vZGU6ICdtb2RlJztcbiAgY291bnRVbmlxdWU6ICdjb3VudFVuaXF1ZSc7XG59ID0ge1xuICAvLyBkZWZhdWx0XG4gIGNvdW50OiAnY291bnQnLFxuICAvLyBsaW5lYXJcbiAgYXZlcmFnZTogJ2F2ZXJhZ2UnLFxuICBtYXhpbXVtOiAnbWF4aW11bScsXG4gIG1pbmltdW06ICdtaW5pbXVtJyxcbiAgbWVkaWFuOiAnbWVkaWFuJyxcbiAgc3RkZXY6ICdzdGRldicsXG4gIHN1bTogJ3N1bScsXG4gIHZhcmlhbmNlOiAndmFyaWFuY2UnLFxuICAvLyBvcmRpbmFsXG4gIG1vZGU6ICdtb2RlJyxcbiAgY291bnRVbmlxdWU6ICdjb3VudFVuaXF1ZSdcbn07XG5cbmV4cG9ydCBjb25zdCBBR0dSRUdBVElPTl9UWVBFX09QVElPTlM6IHtpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nfVtdID0gT2JqZWN0LmVudHJpZXMoXG4gIEFHR1JFR0FUSU9OX1RZUEVTXG4pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICBpZDoga2V5LFxuICBsYWJlbDpcbiAgICBrZXkgPT09ICdzdGRldidcbiAgICAgID8gJ1N0ZCBEZXZpYXRpb24nXG4gICAgICA6IGtleSA9PT0gJ2NvdW50VW5pcXVlJ1xuICAgICAgPyAnQ291bnQgVW5pcXVlJ1xuICAgICAgOiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICA/IHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSlcbiAgICAgIDogdmFsdWVcbn0pKTtcblxuZXhwb3J0IGNvbnN0IGxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdOiBbU0NBTEVfVFlQRVMuc3FydF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgW0NIQU5ORUxfU0NBTEVTLmFuZ2xlXTogW1NDQUxFX1RZUEVTLmxpbmVhcl1cbn07XG5cbmNvbnN0IERFRkFVTFRfQUdHUkVHQVRJT05fQ09MT1JfU0NBTEVTID0gW1xuICBTQ0FMRV9UWVBFUy5xdWFudGl6ZSxcbiAgU0NBTEVfVFlQRVMucXVhbnRpbGUsXG4gIFNDQUxFX1RZUEVTLmN1c3RvbVxuXTtcblxuZXhwb3J0IGNvbnN0IGxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXTogW1xuICAgIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLm1lZGlhbixcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdGRldixcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2UsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMuY291bnRcbiAgXS5yZWR1Y2UoKHByZXYsIGN1cikgPT4ge1xuICAgIHByZXZbY3VyXSA9IERFRkFVTFRfQUdHUkVHQVRJT05fQ09MT1JfU0NBTEVTO1xuICAgIHJldHVybiBwcmV2O1xuICB9LCB7fSksXG5cbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW1dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tZWRpYW5dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5zdGRldl06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN1bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXVxuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgb3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsLCBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnJhZGl1c106IFtTQ0FMRV9UWVBFUy5wb2ludF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW1NDQUxFX1RZUEVTLnBvaW50XVxufTtcblxuZXhwb3J0IGNvbnN0IG9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgLy8gW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsLCBTQ0FMRV9UWVBFUy5saW5lYXJdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tb2RlXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudFVuaXF1ZV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGVdXG4gIH0sXG5cbiAgLy8gQ3VycmVudGx5IGRvZXNuJ3Qgc3VwcG9ydCB5ZXRcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge31cbn07XG5cbmV4cG9ydCBjb25zdCBub3RTdXBwb3J0ZWRTY2FsZU9wdHMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtdLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW10sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW11cbn07XG5cbmV4cG9ydCBjb25zdCBub3RTdXBwb3J0QWdnck9wdHMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7fSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge31cbn07XG5cbi8qKlxuICogRGVmYXVsdCBhZ2dyZWdhdGlvbiBhcmUgYmFzZWQgb24gb2N1bnRcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUdHUkVHQVRJT04gPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmNvdW50XTogREVGQVVMVF9BR0dSRUdBVElPTl9DT0xPUl9TQ0FMRVNcbiAgfSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudF06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ11cbiAgfVxufTtcblxuLyoqXG4gKiBEZWZpbmUgd2hhdCB0eXBlIG9mIHNjYWxlIG9wZXJhdGlvbiBpcyBhbGxvd2VkIG9uIGVhY2ggdHlwZSBvZiBmaWVsZHNcbiAqL1xuZXhwb3J0IGNvbnN0IEZJRUxEX09QVFMgPSB7XG4gIFtBTExfRklFTERfVFlQRVMuc3RyaW5nXToge1xuICAgIHR5cGU6ICdjYXRlZ29yaWNhbCcsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMucmVhbF06IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLmxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFXG4gICAgICBdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IHtcbiAgICB0eXBlOiAndGltZScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5ub3RTdXBwb3J0QWdnck9wdHNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVfVElNRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXToge1xuICAgIHR5cGU6ICdudW1lcmljYWwnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi57XG4gICAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAgIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtcbiAgICAgICAgICAuLi5saW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zW0NIQU5ORUxfU0NBTEVTLmNvbG9yXSxcbiAgICAgICAgICBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAuLi5saW5lYXJGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuTk9ORSxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREVDSU1BTCxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXToge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ub3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5vcmRpbmFsRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbVE9PTFRJUF9GT1JNQVRfVFlQRVMuTk9ORSwgVE9PTFRJUF9GT1JNQVRfVFlQRVMuQk9PTEVBTl1cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuZGF0ZV06IHtcbiAgICB0eXBlOiAndGltZScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1RPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb25dOiB7XG4gICAgdHlwZTogJ2dlb21ldHJ5JyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubm90U3VwcG9ydGVkU2NhbGVPcHRzLFxuICAgICAgLi4ubm90U3VwcG9ydEFnZ3JPcHRzXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogKCkgPT4gJy4uLicsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9hcnJvd106IHtcbiAgICB0eXBlOiAnZ2VvbWV0cnknLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5ub3RTdXBwb3J0ZWRTY2FsZU9wdHMsXG4gICAgICAuLi5ub3RTdXBwb3J0QWdnck9wdHNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiAoKSA9PiAnLi4uJyxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLm9iamVjdF06IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge30sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6ICgpID0+ICcuLi4nLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuYXJyYXldOiB7XG4gICAgdHlwZTogJ251bWVyaWNhbCcsXG4gICAgc2NhbGU6IHt9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiAoKSA9PiAnLi4uJyxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmgzXToge1xuICAgIHR5cGU6ICdoMycsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm5vdFN1cHBvcnRlZFNjYWxlT3B0cyxcbiAgICAgIC4uLm5vdFN1cHBvcnRBZ2dyT3B0c1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6ICgpID0+ICcuLi4nLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMgPSBPYmplY3Qua2V5cyhDSEFOTkVMX1NDQUxFUykucmVkdWNlKFxuICAoYWNjdSwga2V5KSA9PiAoe1xuICAgIC4uLmFjY3UsXG4gICAgW2tleV06IE9iamVjdC5rZXlzKEZJRUxEX09QVFMpLmZpbHRlcihcbiAgICAgIGZ0ID0+IEZJRUxEX09QVFNbZnRdLnNjYWxlW2tleV0gJiYgT2JqZWN0LmtleXMoRklFTERfT1BUU1tmdF0uc2NhbGVba2V5XSkubGVuZ3RoXG4gICAgKVxuICB9KSxcbiAge30gYXMge1tpZDogc3RyaW5nXTogc3RyaW5nW119XG4pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9DT0xPUiA9IHtcbiAgdHJpcEFyYzogJyM5MjI2QzYnLFxuICBiZWdpbnRyaXBfbGF0OiAnIzFFOTZCRScsXG4gIGRyb3BvZmZfbGF0OiAnI0ZGOTkxRicsXG4gIHJlcXVlc3RfbGF0OiAnIzUyQTM1Mydcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xBWUVSX0NPTE9SX1BBTEVUVEUgPSAnR2xvYmFsIFdhcm1pbmcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTEFZRVJfQ09MT1JfUEFMRVRURV9TVEVQUyA9IDY7XG5cbi8vIGxldCB1c2VyIHBhc3MgaW4gZGVmYXVsdCB0b29sdGlwIGZpZWxkc1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVE9PTFRJUF9GSUVMRFM6IGFueVtdID0gW107XG5cbmV4cG9ydCBjb25zdCBOT19WQUxVRV9DT0xPUjogUkdCQUNvbG9yID0gWzAsIDAsIDAsIDBdO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QSUNLSU5HX1JBRElVUyA9IDM7XG5cbmV4cG9ydCBjb25zdCBPVkVSTEFZX0JMRU5ESU5HUyA9IHtcbiAgbm9ybWFsOiB7XG4gICAgbGFiZWw6ICdvdmVybGF5QmxlbmRpbmcubm9ybWFsJyxcbiAgICB2YWx1ZTogJ25vcm1hbCdcbiAgfSxcbiAgc2NyZWVuOiB7XG4gICAgbGFiZWw6ICdvdmVybGF5QmxlbmRpbmcuc2NyZWVuJyxcbiAgICB2YWx1ZTogJ3NjcmVlbidcbiAgfSxcbiAgZGFya2VuOiB7XG4gICAgbGFiZWw6ICdvdmVybGF5QmxlbmRpbmcuZGFya2VuJyxcbiAgICB2YWx1ZTogJ2RhcmtlbidcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExBWUVSX0JMRU5ESU5HUyA9IHtcbiAgYWRkaXRpdmU6IHtcbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcuYWRkaXRpdmUnLFxuICAgIGJsZW5kRnVuYzogWydTUkNfQUxQSEEnLCAnRFNUX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogJ0ZVTkNfQUREJ1xuICB9LFxuICBub3JtYWw6IHtcbiAgICAvLyByZWZlcmVuY2UgdG9cbiAgICAvLyBodHRwczovL2xpbW51LmNvbS93ZWJnbC1ibGVuZGluZy15b3VyZS1wcm9iYWJseS13cm9uZy9cbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcubm9ybWFsJyxcbiAgICBibGVuZEZ1bmM6IFsnU1JDX0FMUEhBJywgJ09ORV9NSU5VU19TUkNfQUxQSEEnLCAnT05FJywgJ09ORV9NSU5VU19TUkNfQUxQSEEnXSxcbiAgICBibGVuZEVxdWF0aW9uOiBbJ0ZVTkNfQUREJywgJ0ZVTkNfQUREJ11cbiAgfSxcbiAgc3VidHJhY3RpdmU6IHtcbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcuc3VidHJhY3RpdmUnLFxuICAgIGJsZW5kRnVuYzogWydPTkUnLCAnT05FX01JTlVTX0RTVF9DT0xPUicsICdTUkNfQUxQSEEnLCAnRFNUX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogWydGVU5DX1NVQlRSQUNUJywgJ0ZVTkNfQUREJ11cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IE1BWF9ERUZBVUxUX1RPT0xUSVBTID0gNTtcblxuZXhwb3J0IGNvbnN0IFJFU09MVVRJT05TID0ga2V5TWlycm9yKHtcbiAgT05FX1g6IG51bGwsXG4gIFRXT19YOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkFUSU9TID0ga2V5TWlycm9yKHtcbiAgU0NSRUVOOiBudWxsLFxuICBGT1VSX0JZX1RIUkVFOiBudWxsLFxuICBTSVhURUVOX0JZX05JTkU6IG51bGwsXG4gIENVU1RPTTogbnVsbFxufSk7XG5cbmV4cG9ydCB0eXBlIEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBrZXlvZiB0eXBlb2YgRVhQT1JUX0lNR19SQVRJT1M7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIGdldFNpemU6IChzY3JlZW5XOiBudW1iZXIsIHNjcmVlbkg6IG51bWJlcikgPT4ge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfTtcbn07XG5cbmV4cG9ydCBjb25zdCBTY3JlZW5SYXRpb09wdGlvbjogSW1hZ2VSYXRpb09wdGlvbiA9IHtcbiAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLlNDUkVFTixcbiAgbGFiZWw6ICdtb2RhbC5leHBvcnRJbWFnZS5yYXRpb09yaWdpbmFsU2NyZWVuJyxcbiAgZ2V0U2l6ZTogKHNjcmVlblcsIHNjcmVlbkgpID0+ICh7d2lkdGg6IHNjcmVlblcsIGhlaWdodDogc2NyZWVuSH0pXG59O1xuZXhwb3J0IGNvbnN0IEN1c3RvbVJhdGlvT3B0aW9uOiBJbWFnZVJhdGlvT3B0aW9uID0ge1xuICBpZDogRVhQT1JUX0lNR19SQVRJT1MuQ1VTVE9NLFxuICBoaWRkZW46IHRydWUsXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW9DdXN0b20nLFxuICBnZXRTaXplOiAobWFwVywgbWFwSCkgPT4gKHt3aWR0aDogbWFwVywgaGVpZ2h0OiBtYXBIfSlcbn07XG5leHBvcnQgY29uc3QgRm91ckJ5VGhyZWVSYXRpb09wdGlvbjogSW1hZ2VSYXRpb09wdGlvbiA9IHtcbiAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLkZPVVJfQllfVEhSRUUsXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW80XzMnLFxuICBnZXRTaXplOiBzY3JlZW5XID0+ICh7XG4gICAgd2lkdGg6IHNjcmVlblcsXG4gICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHNjcmVlblcgKiAwLjc1KVxuICB9KVxufTtcbmV4cG9ydCBjb25zdCBTaXh0ZWVuQnlOaW5lUmF0aW9PcHRpb246IEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBFWFBPUlRfSU1HX1JBVElPUy5TSVhURUVOX0JZX05JTkUsXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW8xNl85JyxcbiAgZ2V0U2l6ZTogc2NyZWVuVyA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgIGhlaWdodDogTWF0aC5yb3VuZChzY3JlZW5XICogMC41NjI1KVxuICB9KVxufTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkFUSU9fT1BUSU9OUzogUmVhZG9ubHlBcnJheTxJbWFnZVJhdGlvT3B0aW9uPiA9IFtcbiAgU2NyZWVuUmF0aW9PcHRpb24sXG4gIEZvdXJCeVRocmVlUmF0aW9PcHRpb24sXG4gIFNpeHRlZW5CeU5pbmVSYXRpb09wdGlvbixcbiAgQ3VzdG9tUmF0aW9PcHRpb25cbl07XG5cbmV4cG9ydCB0eXBlIEV4cG9ydFJlc29sdXRpb25PcHRpb24gPVxuICB8IGtleW9mIHR5cGVvZiBSRVNPTFVUSU9OU1xuICB8ICcxMjgweDcyMCdcbiAgfCAnMTkyMHgxMDgwJ1xuICB8ICcyNTYweDE0NDAnXG4gIHwgJzE2MDB4OTAwJ1xuICB8ICcxMDI0eDc2OCdcbiAgfCAnMTI4MHg5NjAnXG4gIHwgJzE2MDB4MTIwMCdcbiAgfCAnMTkyMHgxNDQwJztcblxuZXhwb3J0IHR5cGUgSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogRXhwb3J0UmVzb2x1dGlvbk9wdGlvbjtcbiAgbGFiZWw6IHN0cmluZztcbiAgYXZhaWxhYmxlOiBib29sZWFuO1xuICBzY2FsZT86IG51bWJlcjtcbiAgZ2V0U2l6ZTogKHNjcmVlblc6IG51bWJlciwgc2NyZWVuSDogbnVtYmVyKSA9PiB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9O1xufTtcblxuZXhwb3J0IGNvbnN0IE9uZVhSZXNvbHV0aW9uT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGFiZWw6ICcxeCcsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgc2NhbGU6IDEsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgIGhlaWdodDogc2NyZWVuSFxuICB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFR3b1hSZXNvbHV0aW9uT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBSRVNPTFVUSU9OUy5UV09fWCxcbiAgbGFiZWw6ICcyeCcsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgc2NhbGU6IDIsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XICogMixcbiAgICBoZWlnaHQ6IHNjcmVlbkggKiAyXG4gIH0pXG59O1xuXG4vLyBGaXhlZCBkaW1lbnNpb24gb3B0aW9uc1xuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24xOTIweDEwODBPcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6ICcxOTIweDEwODAnLFxuICBsYWJlbDogJzE5MjAgw5cgMTA4MCAoMTY6OSknLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIGdldFNpemU6ICgpID0+ICh7d2lkdGg6IDE5MjAsIGhlaWdodDogMTA4MH0pXG59O1xuXG5leHBvcnQgY29uc3QgUmVzb2x1dGlvbjEyODB4NzIwT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiAnMTI4MHg3MjAnLFxuICBsYWJlbDogJzEyODAgw5cgNzIwICgxNjo5KScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTI4MCwgaGVpZ2h0OiA3MjB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24yNTYweDE0NDBPcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6ICcyNTYweDE0NDAnLFxuICBsYWJlbDogJzI1NjAgw5cgMTQ0MCAoMTY6OSknLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIGdldFNpemU6ICgpID0+ICh7d2lkdGg6IDI1NjAsIGhlaWdodDogMTQ0MH0pXG59O1xuXG5leHBvcnQgY29uc3QgUmVzb2x1dGlvbjE2MDB4OTAwT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiAnMTYwMHg5MDAnLFxuICBsYWJlbDogJzE2MDAgw5cgOTAwICgxNjo5KScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTYwMCwgaGVpZ2h0OiA5MDB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24xMDI0eDc2OE9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogJzEwMjR4NzY4JyxcbiAgbGFiZWw6ICcxMDI0IMOXIDc2OCAoNDozKScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTAyNCwgaGVpZ2h0OiA3Njh9KVxufTtcblxuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24xMjgweDk2ME9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogJzEyODB4OTYwJyxcbiAgbGFiZWw6ICcxMjgwIMOXIDk2MCAoNDozKScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTI4MCwgaGVpZ2h0OiA5NjB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFJlc29sdXRpb24xNjAweDEyMDBPcHRpb246IEltYWdlUmVzb2x1dGlvbk9wdGlvbiA9IHtcbiAgaWQ6ICcxNjAweDEyMDAnLFxuICBsYWJlbDogJzE2MDAgw5cgMTIwMCAoNDozKScsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgZ2V0U2l6ZTogKCkgPT4gKHt3aWR0aDogMTYwMCwgaGVpZ2h0OiAxMjAwfSlcbn07XG5cbmV4cG9ydCBjb25zdCBSZXNvbHV0aW9uMTkyMHgxNDQwT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiAnMTkyMHgxNDQwJyxcbiAgbGFiZWw6ICcxOTIwIMOXIDE0NDAgKDQ6MyknLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIGdldFNpemU6ICgpID0+ICh7d2lkdGg6IDE5MjAsIGhlaWdodDogMTQ0MH0pXG59O1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlM6IFJlYWRvbmx5QXJyYXk8SW1hZ2VSZXNvbHV0aW9uT3B0aW9uPiA9IFtcbiAgT25lWFJlc29sdXRpb25PcHRpb24sXG4gIFR3b1hSZXNvbHV0aW9uT3B0aW9uLFxuICBSZXNvbHV0aW9uMTI4MHg3MjBPcHRpb24sXG4gIFJlc29sdXRpb24xOTIweDEwODBPcHRpb24sXG4gIFJlc29sdXRpb24yNTYweDE0NDBPcHRpb24sXG4gIFJlc29sdXRpb24xNjAweDkwME9wdGlvbixcbiAgUmVzb2x1dGlvbjEwMjR4NzY4T3B0aW9uLFxuICBSZXNvbHV0aW9uMTI4MHg5NjBPcHRpb24sXG4gIFJlc29sdXRpb24xNjAweDEyMDBPcHRpb24sXG4gIFJlc29sdXRpb24xOTIweDE0NDBPcHRpb25cbl07XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9UWVBFID0ga2V5TWlycm9yKHtcbiAgQ1NWOiBudWxsXG4gIC8vIFNIQVBFRklMRTogbnVsbCxcbiAgLy8gSlNPTjogbnVsbCxcbiAgLy8gR0VPSlNPTjogbnVsbCxcbiAgLy8gVE9QT0pTT046IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0RBVEFfVFlQRV9PUFRJT05TID0gW1xuICB7XG4gICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuQ1NWLFxuICAgIGxhYmVsOiBFWFBPUlRfREFUQV9UWVBFLkNTVi50b0xvd2VyQ2FzZSgpLFxuICAgIGF2YWlsYWJsZTogdHJ1ZVxuICB9XG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5TSEFQRUZJTEUsXG4gIC8vICAgbGFiZWw6ICdzaGFwZWZpbGUnLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfSxcbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLkpTT04sXG4gIC8vICAgbGFiZWw6ICdqc29uJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH0sXG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5HRU9KU09OLFxuICAvLyAgIGxhYmVsOiAnZ2VvanNvbicsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9LFxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuVE9QT0pTT04sXG4gIC8vICAgbGFiZWw6ICd0b3BvanNvbicsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9XG5dO1xuXG4vLyBFeHBvcnQgbWFwIHR5cGVzXG5leHBvcnQgY29uc3QgRVhQT1JUX01BUF9GT1JNQVRTID0ga2V5TWlycm9yKHtcbiAgSFRNTDogbnVsbCxcbiAgSlNPTjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSFRNTF9NQVBfTU9ERVMgPSBrZXlNaXJyb3Ioe1xuICBSRUFEOiBudWxsLFxuICBFRElUOiBudWxsXG59KTtcblxuLy8gRXhwb3J0IG1hcCBvcHRpb25zXG5leHBvcnQgY29uc3QgRVhQT1JUX01BUF9GT1JNQVRfT1BUSU9OUyA9IE9iamVjdC5lbnRyaWVzKEVYUE9SVF9NQVBfRk9STUFUUykubWFwKFxuICAoZW50cnk6IFtzdHJpbmcsIGFueV0pID0+ICh7XG4gICAgaWQ6IGVudHJ5WzBdLFxuICAgIGxhYmVsOiBlbnRyeVsxXS50b0xvd2VyQ2FzZSgpLFxuICAgIGF2YWlsYWJsZTogdHJ1ZVxuICB9KVxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhUTUxNYXBNb2RlVGlsZVVybChtb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYGh0dHBzOi8vZDFhM2Y0c3BhenpycDQuY2xvdWRmcm9udC5uZXQva2VwbGVyLmdsL2RvY3VtZW50YXRpb24vbWFwLSR7bW9kZS50b0xvd2VyQ2FzZSgpfS1tb2RlLnBuZ2A7XG59XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TID0gT2JqZWN0LmVudHJpZXMoRVhQT1JUX0hUTUxfTUFQX01PREVTKS5tYXAoXG4gIChlbnRyeTogW3N0cmluZywgYW55XSkgPT4gKHtcbiAgICBpZDogZW50cnlbMF0sXG4gICAgbGFiZWw6IGBtb2RhbC5leHBvcnRNYXAuaHRtbC4ke2VudHJ5WzFdLnRvTG93ZXJDYXNlKCl9YCxcbiAgICBhdmFpbGFibGU6IHRydWUsXG4gICAgdXJsOiBnZXRIVE1MTWFwTW9kZVRpbGVVcmwoZW50cnlbMV0pXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9VVUlEX0NPVU5UID0gNjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX01FU1NBR0UgPSAnTUVTU0FHRV9OT1RfUFJPVklERUQnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBpbmZvOiBudWxsLFxuICBlcnJvcjogbnVsbCxcbiAgd2FybmluZzogbnVsbCxcbiAgc3VjY2VzczogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MgPSBrZXlNaXJyb3Ioe1xuICBnbG9iYWw6IG51bGwsXG4gIGZpbGU6IG51bGxcbn0pO1xuXG4vLyBNaW5pbXVtIHRpbWUgYmV0d2VlbiBpZGVudGljYWwgbm90aWZpY2F0aW9ucyBhYm91dCBkZWNrLmdsIGVycm9yc1xuZXhwb3J0IGNvbnN0IFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FID0gMzMwO1xuXG4vLyBBbmltYXRpb25cbmV4cG9ydCBjb25zdCBCQVNFX1NQRUVEID0gNjAwO1xuZXhwb3J0IGNvbnN0IEZQUyA9IDYwO1xuXG4vKipcbiAqIDQgQW5pbWF0aW9uIFdpbmRvdyBUeXBlc1xuICogMS4gZnJlZVxuICogIHwtPiAgfC0+XG4gKiBDdXJyZW50IHRpbWUgaXMgYSBmaXhlZCByYW5nZSwgYW5pbWF0aW9uIGNvbnRyb2xsZXIgY2FsbHMgbmV4dCBhbmltYXRpb24gZnJhbWVzIGNvbnRpbnVvdXNseSB0byBhbmltYXRpb24gYSBtb3Zpbmcgd2luZG93XG4gKiBUaGUgaW5jcmVtZW50IGlkIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDIuIGluY3JlbWVudGFsXG4gKiB8ICAgIHwtPlxuICogU2FtZSBhcyBmcmVlLCBjdXJyZW50IHRpbWUgaXMgYSBncm93aW5nIHJhbmdlLCBvbmx5IHRoZSBtYXggdmFsdWUgb2YgcmFuZ2UgaW5jcmVtZW50IGR1cmluZyBhbmltYXRpb24uXG4gKiBUaGUgaW5jcmVtZW50IGlzIGFsc28gYmFzZWQgb24gZG9tYWluIC8gQkFTRV9TUEVFRCAqIFNQRUVEXG4gKlxuICogMy4gcG9pbnRcbiAqIG8gLT4gb1xuICogQ3VycmVudCB0aW1lIGlzIGEgcG9pbnQsIGFuaW1hdGlvbiBjb250cm9sbGVyIGNhbGxzIG5leHQgYW5pbWF0aW9uIGZyYW1lIGNvbnRpbnVvdXNseSB0byBhbmltYXRpb24gYSBtb3ZpbmcgcG9pbnRcbiAqIFRoZSBpbmNyZW1lbnQgaXMgYmFzZWQgb24gZG9tYWluIC8gQkFTRV9TUEVFRCAqIFNQRUVEXG4gKlxuICogNC4gaW50ZXJ2YWxcbiAqIG8gfj4gb1xuICogQ3VycmVudCB0aW1lIGlzIGEgcG9pbnQuIEFuIGFycmF5IG9mIHNvcnRlZCB0aW1lIHN0ZXBzIG5lZWQgdG8gYmUgcHJvdmlkZWQuXG4gKiBhbmltYXRpb24gY29udHJvbGxlciBjYWxscyBuZXh0IGFuaW1hdGlvbiBhdCBhIGludGVydmFsIHdoZW4gdGhlIHBvaW50IGp1bXBzIHRvIHRoZSBuZXh0IHN0ZXBcbiAqL1xuZXhwb3J0IGNvbnN0IEFOSU1BVElPTl9XSU5ET1cgPSBrZXlNaXJyb3Ioe1xuICBmcmVlOiBudWxsLFxuICBpbmNyZW1lbnRhbDogbnVsbCxcbiAgcG9pbnQ6IG51bGwsXG4gIGludGVydmFsOiBudWxsXG59KTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1RJTUVfRk9STUFUID0gJ01NL0REL1lZIEhIOm1tOnNzYSc7XG5leHBvcnQgY29uc3QgU1BFRURfQ09OVFJPTF9SQU5HRTogW251bWJlciwgbnVtYmVyXSA9IFswLCAxMF07XG5leHBvcnQgY29uc3QgU1BFRURfQ09OVFJPTF9TVEVQID0gMC4wMDE7XG5cbi8vIEdlb2NvZGVyXG5leHBvcnQgY29uc3QgR0VPQ09ERVJfREFUQVNFVF9OQU1FID0gJ2dlb2NvZGVyX2RhdGFzZXQnO1xuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0xBWUVSX0lEID0gJ2dlb2NvZGVyX2xheWVyJztcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9HRU9fT0ZGU0VUID0gMC4wNTtcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9JQ09OX0NPTE9SOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbMjU1LCAwLCAwXTtcbi8vIEJhc2UgaWNvbiBzaXplIGJlZm9yZSBhbmNob3Igbm9ybWFsaXphdGlvbi4gVGhlIGdlb2NvZGVyIHBpbiBpY29uIGlzIGJvdHRvbS1hbmNob3JlZFxuLy8gYW5kIHNjYWxlZCB0byBmaXQgdGhlIFNjYXR0ZXJwbG90TGF5ZXIgdW5pdCBjaXJjbGUgKH4wLjV4KSwgc28gdGhlIHJlbmRlcmVkIHNpemUgaXNcbi8vIGNvbXBlbnNhdGVkIGhlcmUgKDgwICogMiA9IDE2MCkuXG5leHBvcnQgY29uc3QgR0VPQ09ERVJfSUNPTl9TSVpFID0gMTYwO1xuXG4vLyBFZGl0b3JcbmV4cG9ydCBjb25zdCBFRElUT1JfTEFZRVJfSUQgPSAna2VwbGVyX2VkaXRvcl9sYXllcic7XG5leHBvcnQgY29uc3QgRURJVE9SX0xBWUVSX1BJQ0tJTkdfUkFESVVTID0gNjtcbmV4cG9ydCBjb25zdCBFRElUT1JfTU9ERVMgPSB7XG4gIERSQVdfUE9MWUdPTjogJ0RSQVdfUE9MWUdPTicsXG4gIERSQVdfUkVDVEFOR0xFOiAnRFJBV19SRUNUQU5HTEUnLFxuICBFRElUOiAnRURJVF9WRVJURVgnXG59O1xuXG5leHBvcnQgY29uc3QgUExPVF9UWVBFUyA9IGtleU1pcnJvcih7XG4gIGhpc3RvZ3JhbTogbnVsbCxcbiAgbGluZUNoYXJ0OiBudWxsXG59KTtcblxuLy8gRmlsdGVyXG5leHBvcnQgY29uc3QgSU5JVF9GSUxURVJfSVRFTVNfSU5fRFJPUERPV04gPSAxMDA7XG5cbi8vIEdQVSBGaWx0ZXJpbmdcbi8qKlxuICogTWF4IG51bWJlciBvZiBmaWx0ZXIgdmFsdWUgYnVmZmVycyB0aGF0IGRlY2suZ2wgcHJvdmlkZXNcbiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9HUFVfRklMVEVSUyA9IDQ7XG5leHBvcnQgY29uc3QgTUFQX1RIVU1CTkFJTF9ESU1FTlNJT04gPSB7XG4gIHdpZHRoOiAzMDAsXG4gIGhlaWdodDogMjAwXG59O1xuXG5leHBvcnQgY29uc3QgTUFQX0lORk9fQ0hBUkFDVEVSID0ge1xuICB0aXRsZTogMTAwLFxuICBkZXNjcmlwdGlvbjogMTAwXG59O1xuXG4vLyBMb2FkIGRhdGFcbmV4cG9ydCBjb25zdCBMT0FESU5HX01FVEhPRFMgPSBrZXlNaXJyb3Ioe1xuICB1cGxvYWQ6IG51bGwsXG4gIHN0b3JhZ2U6IG51bGwsXG4gIHRpbGVzZXQ6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9GRUFUVVJFX0ZMQUdTID0ge307XG5cbmV4cG9ydCBjb25zdCBEQVRBU0VUX0ZPUk1BVFMgPSBrZXlNaXJyb3Ioe1xuICByb3c6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGNzdjogbnVsbCxcbiAga2VwbGVyZ2w6IG51bGwsXG4gIGFycm93OiBudWxsLFxuICBkdWNrZGI6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTUFQX0NPTlRST0xTID0ga2V5TWlycm9yKHtcbiAgdmlzaWJsZUxheWVyczogbnVsbCxcbiAgbWFwTGVnZW5kOiBudWxsLFxuICB0b2dnbGUzZDogbnVsbCxcbiAgc3BsaXRNYXA6IG51bGwsXG4gIG1hcERyYXc6IG51bGwsXG4gIG1hcExvY2FsZTogbnVsbCxcbiAgZWZmZWN0OiBudWxsLFxuICBhbm5vdGF0aW9uOiBudWxsLFxuICBhaUFzc2lzdGFudDogbnVsbFxufSk7XG5cbmV4cG9ydCBlbnVtIE1hcFZpZXdNb2RlIHtcbiAgTU9ERV8yRCA9ICdNT0RFXzJEJyxcbiAgTU9ERV8zRCA9ICdNT0RFXzNEJyxcbiAgTU9ERV9HTE9CRSA9ICdNT0RFX0dMT0JFJ1xufVxuXG4vKipcbiAqIE1pbmltdW0gem9vbSBsZXZlbCBhbGxvd2VkIGluIGdsb2JlIG1vZGUuIE5lZ2F0aXZlIHZhbHVlcyBsZXQgdGhlIHVzZXIgem9vbVxuICogb3V0IGZ1cnRoZXIgdGhhbiB0aGUgd2ViLW1lcmNhdG9yIGRlZmF1bHQgb2YgMCwgc28gdGhlIHdob2xlIGdsb2JlIGNhbiBiZVxuICogcHVsbGVkIGJhY2sgdG8gYXBwZWFyIHNtYWxsZXIgb24gc2NyZWVuLlxuICovXG5leHBvcnQgY29uc3QgR0xPQkVfTUlOX1pPT00gPSAyO1xuXG4vKipcbiAqIE1heGltdW0gem9vbSBpbiBnbG9iZSBtb2RlLlxuICpcbiAqIFRoZSBwcmV2aW91cyBcImVtcHR5IHJlY3RhbmdsZXNcIiBhdCBoaWdoIHpvb20gd2VyZSBjYXVzZWQgYnkgdGhlIHZlY3RvciBiYXNlbWFwXG4gKiBsYXllciBkZWNsYXJpbmcgYG1heFpvb206IDIzYCB3aGlsZSB0aGUgcmF3IHRpbGUgZW5kcG9pbnRzIG9ubHkgaGF2ZSBkYXRhIHRvXG4gKiB6MTYgKG1hcGJveC1zdHJlZXRzLXY4KSAvIHoxNCAoQ0FSVE8pIOKAlCBkZWNrIHRoZW4gcmVxdWVzdGVkIG5vbi1leGlzdGVudCB0aWxlc1xuICogdGhhdCA0MDQuIFRoYXQgaXMgZml4ZWQgaW4gYGdldEdsb2JlQmFzZUxheWVyc2AgYnkgc2V0dGluZyBgbWF4Wm9vbWAgdG8gZWFjaFxuICogc291cmNlJ3MgdHJ1ZSBkYXRhIG1heCBzbyBkZWNrIG92ZXJ6b29tcyBpbnN0ZWFkLlxuICpcbiAqIFRoZSByZW1haW5pbmcgcHJhY3RpY2FsIGNlaWxpbmcgaXMgZmxvYXQzMiBwcmVjaXNpb246IGRlY2sncyBnbG9iZSBwbGFjZXNcbiAqIGdlb21ldHJ5IGluIGNvbW1vbiBzcGFjZSBvbiBhIHNwaGVyZSBvZiByYWRpdXMgMjU2IHdpdGggbm8gZnA2NC9yZWxhdGl2ZS10by1cbiAqIGNlbnRlciB0cmljaywgc28gYmV5b25kIH52aXN1YWwtem9vbSAxNiAocm91Z2hseSB0aGlzIG1hcFN0YXRlIHpvb20gbWludXNcbiAqIGB6b29tQWRqdXN0KGxhdClgIOKJiCAxLjY1IGF0IHRoZSBlcXVhdG9yKSBnZW9tZXRyeSBzdGFydHMgdG8gaml0dGVyL2RyaWZ0LlxuICovXG5leHBvcnQgY29uc3QgR0xPQkVfTUFYX1pPT00gPSAxNjtcblxuLyoqXG4gKiBNYXhpbXVtIGFic29sdXRlIGNlbnRlciBsYXRpdHVkZSBhbGxvd2VkIGluIGdsb2JlIG1vZGUuIENvbnN0cmFpbnMgdGhlIGNhbWVyYVxuICogdGFyZ2V0IHRvIGEgYmFuZCBhcm91bmQgdGhlIGVxdWF0b3Igc28gdGhlIHZpZXcgY2FuJ3QgYmUgY2VudGVyZWQgb24gdGhlXG4gKiBwb2xlcyAoZGVjay5nbCdzIGRlZmF1bHQgY2xhbXBzIHRvIH44NcKwLCB3aGljaCBsZXRzIHRoZSBjYW1lcmEgc3RhcmUgc3RyYWlnaHRcbiAqIGRvd24gYXQgYSBwb2xlKS4gQXBwbGllcyBzeW1tZXRyaWNhbGx5IHRvIHRoZSBub3J0aGVybiBhbmQgc291dGhlcm4gaGVtaXNwaGVyZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdMT0JFX01BWF9MQVRJVFVERSA9IDc1O1xuXG5leHBvcnQgdHlwZSBHbG9iZUNvbmZpZyA9IHtcbiAgYXRtb3NwaGVyZTogYm9vbGVhbjtcbiAgYXppbXV0aDogYm9vbGVhbjtcbiAgYXppbXV0aEFuZ2xlOiBudW1iZXI7XG4gIHRlcm1pbmF0b3I6IGJvb2xlYW47XG4gIHRlcm1pbmF0b3JPcGFjaXR5OiBudW1iZXI7XG4gIGJhc2VtYXA6IGJvb2xlYW47XG4gIGxhYmVsczogYm9vbGVhbjtcbiAgbGFiZWxzQ29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgYWRtaW5MaW5lczogYm9vbGVhbjtcbiAgYWRtaW5MaW5lc0NvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHdhdGVyOiBib29sZWFuO1xuICB3YXRlckNvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHN1cmZhY2VDb2xvcjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBzdXJmYWNlOiBib29sZWFuO1xuICBiYWNrZ3JvdW5kQ29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgc3RhcnM6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBHbG9iZSA9IHtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgY29uZmlnOiBHbG9iZUNvbmZpZztcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0dMT0JFX0NPTkZJRzogR2xvYmVDb25maWcgPSB7XG4gIGF0bW9zcGhlcmU6IHRydWUsXG4gIGF6aW11dGg6IGZhbHNlLFxuICBhemltdXRoQW5nbGU6IDQ1LFxuICB0ZXJtaW5hdG9yOiB0cnVlLFxuICB0ZXJtaW5hdG9yT3BhY2l0eTogMC4zNSxcbiAgYmFzZW1hcDogdHJ1ZSxcbiAgbGFiZWxzOiBmYWxzZSxcbiAgbGFiZWxzQ29sb3I6IFsxMTQuNzUsIDExNC43NSwgMTE0Ljc1XSxcbiAgYWRtaW5MaW5lczogdHJ1ZSxcbiAgYWRtaW5MaW5lc0NvbG9yOiBbNDAsIDYzLCA5M10sXG4gIHdhdGVyOiB0cnVlLFxuICB3YXRlckNvbG9yOiBbMTcsIDM1LCA0OF0sXG4gIHN1cmZhY2U6IHRydWUsXG4gIHN1cmZhY2VDb2xvcjogWzksIDE2LCAyOV0sXG4gIC8vIENvbG9yIG9mIHRoZSBlbXB0eSBzcGFjZSByZW5kZXJlZCBhcm91bmQgdGhlIGdsb2JlIChkZWNrLmdsIGNsZWFyIGNvbG9yKS5cbiAgLy8gTWF0Y2hlcyB0aGUgcHJldmlvdXMgaGFyZGNvZGVkIGNsZWFyIGNvbG9yIFswLjAxNSwgMC4wMzUsIDAuMDY1XSBpbiAwLTEgc3BhY2UuXG4gIGJhY2tncm91bmRDb2xvcjogWzQsIDksIDE3XSxcbiAgc3RhcnM6IGZhbHNlXG59O1xuXG5leHBvcnQgY29uc3QgR0xPQkVfU1VQUE9SVEVEX0xBWUVSUzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7XG4gIHBvaW50OiB0cnVlLFxuICBhcmM6IHRydWUsXG4gIGdyaWQ6IHRydWUsXG4gIGhleGFnb246IHRydWUsXG4gIGdlb2pzb246IHRydWUsXG4gIGNsdXN0ZXI6IHRydWUsXG4gIGljb246IHRydWUsXG4gIGhleGFnb25JZDogdHJ1ZSxcbiAgJzNEJzogdHJ1ZSxcbiAgdmVjdG9yVGlsZTogdHJ1ZSxcbiAgaGV4VGlsZTogdHJ1ZSxcbiAgbGluZTogdHJ1ZSxcbiAgdHJpcDogdHJ1ZSxcbiAgcmFzdGVyVGlsZTogdHJ1ZSxcbiAgaGVhdG1hcDogdHJ1ZSxcbiAgczI6IGZhbHNlLFxuICB0aWxlM2Q6IGZhbHNlLFxuICAvLyBGbG93IGFycm93cyBhcmUgZmxhdCBxdWFkcyBpbiBjb21tb24gc3BhY2UgKGVxdWF0b3JpYWwgcGxhbmUpIGFuZCBjb2xsYXBzZSB3aGVuXG4gIC8vIHZpZXdlZCBlZGdlLW9uIG9uIHRoZSBnbG9iZSwgc28gdGhlIGZsb3cgbGF5ZXIgaXMgbm90IHN1cHBvcnRlZCBpbiBHbG9iZSBtb2RlLlxuICBmbG93OiBmYWxzZVxufTtcblxuZXhwb3J0IGVudW0gTWFwU3BsaXRNb2RlIHtcbiAgU0lOR0xFX01BUCA9ICdTSU5HTEVfTUFQJyxcbiAgRFVBTF9NQVAgPSAnRFVBTF9NQVAnLFxuICBTV0lQRV9DT01QQVJFID0gJ1NXSVBFX0NPTVBBUkUnXG59XG5cbi8qKlxuICogQSBtdWx0aXBsaWVyIGZvciBzY3JlZW4tc3BhY2Ugd2lkdGgvc2NhbGUgZm9yIEFyYywgTGluZSwgSWNvbiBhbmQgVGV4dCBsYXllcnMuXG4gKiBSZXF1aXJlZCBpbiBvcmRlciB0byBtYWludGFpbiB0aGUgc2FtZSBhcHBlYXJhbmNlIGFmdGVyIHVwZ3JhZGluZyB0byBkZWNrLmdsIHY4LjUuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdmlzZ2wvZGVjay5nbC9ibG9iL21hc3Rlci9kb2NzL3VwZ3JhZGUtZ3VpZGUubWRcbiAqL1xuZXhwb3J0IGNvbnN0IFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIgPSAyIC8gMztcblxuLyoqXG4gKiBNYXhpbXVtIHZhbHVlIGZvciB0ZXh0IG91dGxpbmUgd2lkdGhcbiAqL1xuZXhwb3J0IGNvbnN0IFRFWFRfT1VUTElORV9NVUxUSVBMSUVSID0gNTtcblxuZXhwb3J0IGNvbnN0IGRhdGFUZXN0SWRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBpbmZvSWNvbjogJ2luZm8taWNvbicsXG4gIHdhcm5pbmdJY29uOiAnd2FybmluZy1pY29uJyxcbiAgZXJyb3JJY29uOiAnZXJyb3ItaWNvbicsXG4gIHN1Y2Nlc3NJY29uOiAnc3VjY2Vzcy1pY29uJyxcbiAgY2hlY2ttYXJrSWNvbjogJ2NoZWNrbWFyay1pY29uJyxcbiAgc29ydGFibGVMYXllckl0ZW06ICdzb3J0YWJsZS1sYXllci1pdGVtJyxcbiAgc3RhdGljTGF5ZXJJdGVtOiAnc3RhdGljLWxheWVyLWl0ZW0nLFxuICBsYXllclRpdGxlRWRpdG9yOiAnbGF5ZXJfX3RpdGxlX19lZGl0b3InLFxuICByZW1vdmVMYXllckFjdGlvbjogJ3JlbW92ZS1sYXllci1hY3Rpb24nLFxuICBsYXllclBhbmVsOiAnbGF5ZXItcGFuZWwnLFxuICBzb3J0YWJsZUVmZmVjdEl0ZW06ICdzb3J0YWJsZS1lZmZlY3QtaXRlbScsXG4gIHN0YXRpY0VmZmVjdEl0ZW06ICdzdGF0aWMtZWZmZWN0LWl0ZW0nLFxuICBwcm92aWRlckxvYWRpbmc6ICdwcm92aWRlci1sb2FkaW5nJyxcbiAgcHJvdmlkZXJNYXBJbmZvUGFuZWw6ICdwcm92aWRlci1tYXAtaW5mby1wYW5lbCcsXG4gIHByb3ZpZGVyU2VsZWN0OiAncHJvdmlkZXItc2VsZWN0JyxcbiAgY2xvdWRIZWFkZXI6ICdjbG91ZC1oZWFkZXInLFxuICBwcm92aWRlclNoYXJlTWFwOiAncHJvdmlkZXItc2hhcmUtbWFwJ1xufTtcblxuLy8gRWZmZWN0c1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVElNRVpPTkUgPSAnVVRDJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPU1RfUFJPQ0VTU0lOR19FRkZFQ1RfVFlQRSA9ICdpbmsnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MSUdIVF9DT0xPUjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzI1NSwgMjU1LCAyNTVdO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElHSFRfSU5URU5TSVRZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NIQURPV19JTlRFTlNJVFkgPSAwLjU7XG5leHBvcnQgY29uc3QgREVGQVVMVF9TSEFET1dfQ09MT1I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFswLCAwLCAwXTtcblxuZXhwb3J0IGNvbnN0IExJR0hUX0FORF9TSEFET1dfRUZGRUNUX1RJTUVfTU9ERVMgPSB7XG4gIHBpY2s6ICdwaWNrJyBhcyBjb25zdCxcbiAgY3VycmVudDogJ2N1cnJlbnQnIGFzIGNvbnN0LFxuICBhbmltYXRpb246ICdhbmltYXRpb24nIGFzIGNvbnN0XG59O1xuZXhwb3J0IHR5cGUgTGlnaHRBbmRTaGFkb3dFZmZlY3RUaW1lTW9kZSA9ICdwaWNrJyB8ICdjdXJyZW50JyB8ICdhbmltYXRpb24nO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElHSFRfQU5EX1NIQURPV19QUk9QUzoge1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgdGltZU1vZGU6IExpZ2h0QW5kU2hhZG93RWZmZWN0VGltZU1vZGU7XG4gIHNoYWRvd0ludGVuc2l0eTogbnVtYmVyO1xuICBzaGFkb3dDb2xvcjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBzdW5MaWdodENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHN1bkxpZ2h0SW50ZW5zaXR5OiBudW1iZXI7XG4gIGFtYmllbnRMaWdodENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIGFtYmllbnRMaWdodEludGVuc2l0eTogbnVtYmVyO1xufSA9IHtcbiAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICB0aW1lTW9kZTogTElHSFRfQU5EX1NIQURPV19FRkZFQ1RfVElNRV9NT0RFUy5waWNrIGFzIExpZ2h0QW5kU2hhZG93RWZmZWN0VGltZU1vZGUsXG4gIHNoYWRvd0ludGVuc2l0eTogREVGQVVMVF9TSEFET1dfSU5URU5TSVRZLFxuICBzaGFkb3dDb2xvcjogWy4uLkRFRkFVTFRfU0hBRE9XX0NPTE9SXSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIHN1bkxpZ2h0Q29sb3I6IFsuLi5ERUZBVUxUX0xJR0hUX0NPTE9SXSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIHN1bkxpZ2h0SW50ZW5zaXR5OiBERUZBVUxUX0xJR0hUX0lOVEVOU0lUWSxcbiAgYW1iaWVudExpZ2h0Q29sb3I6IFsuLi5ERUZBVUxUX0xJR0hUX0NPTE9SXSBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gIGFtYmllbnRMaWdodEludGVuc2l0eTogREVGQVVMVF9MSUdIVF9JTlRFTlNJVFlcbn07XG5cbmV4cG9ydCBjb25zdCBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVDogRWZmZWN0RGVzY3JpcHRpb24gPSB7XG4gIHR5cGU6ICdsaWdodEFuZFNoYWRvdycsXG4gIG5hbWU6ICdMaWdodCAmIFNoYWRvdycsXG4gIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24ubGlnaHRBbmRTaGFkb3cnLFxuICBwYXJhbWV0ZXJzOiBbXG4gICAge25hbWU6ICd0aW1lc3RhbXAnLCBtaW46IDAsIG1heDogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9LFxuICAgIHtuYW1lOiAnc2hhZG93SW50ZW5zaXR5JywgbWluOiAwLCBtYXg6IDEsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9TSEFET1dfSU5URU5TSVRZfSxcbiAgICB7bmFtZTogJ3N1bkxpZ2h0SW50ZW5zaXR5JywgbWluOiAwLCBtYXg6IDUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9MSUdIVF9JTlRFTlNJVFl9LFxuICAgIHtuYW1lOiAnYW1iaWVudExpZ2h0SW50ZW5zaXR5JywgbWluOiAwLCBtYXg6IDUsIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9MSUdIVF9JTlRFTlNJVFl9LFxuICAgIHtuYW1lOiAnc2hhZG93Q29sb3InLCB0eXBlOiAnY29sb3InLCBtaW46IDAsIG1heDogMjU1LCBkZWZhdWx0VmFsdWU6IERFRkFVTFRfU0hBRE9XX0NPTE9SfSxcbiAgICB7bmFtZTogJ3N1bkxpZ2h0Q29sb3InLCB0eXBlOiAnY29sb3InLCBtaW46IDAsIG1heDogMjU1LCBkZWZhdWx0VmFsdWU6IERFRkFVTFRfTElHSFRfQ09MT1J9LFxuICAgIHtuYW1lOiAnYW1iaWVudExpZ2h0Q29sb3InLCB0eXBlOiAnY29sb3InLCBtaW46IDAsIG1heDogMjU1LCBkZWZhdWx0VmFsdWU6IERFRkFVTFRfTElHSFRfQ09MT1J9XG4gIF1cbn07XG5cbmV4cG9ydCBjb25zdCBESVNUQU5DRV9GT0dfVFlQRSA9ICdkaXN0YW5jZUZvZyc7XG5leHBvcnQgY29uc3QgU1VSRkFDRV9GT0dfVFlQRSA9ICdzdXJmYWNlRm9nJztcblxuZXhwb3J0IGNvbnN0IFBPU1RQUk9DRVNTSU5HX0VGRkVDVFM6IHtba2V5OiBzdHJpbmddOiBFZmZlY3REZXNjcmlwdGlvbn0gPSB7XG4gIGluazoge1xuICAgIHR5cGU6ICdpbmsnLFxuICAgIG5hbWU6ICdJbmsnLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24uaW5rJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdzdHJlbmd0aCcsIG1pbjogMCwgbWF4OiAxfV1cbiAgfSxcbiAgYnJpZ2h0bmVzc0NvbnRyYXN0OiB7XG4gICAgdHlwZTogJ2JyaWdodG5lc3NDb250cmFzdCcsXG4gICAgbmFtZTogJ0JyaWdodG5lc3MgJiBDb250cmFzdCcsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5icmlnaHRuZXNzQ29udHJhc3QnLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtuYW1lOiAnYnJpZ2h0bmVzcycsIG1pbjogLTEsIG1heDogMX0sXG4gICAgICB7bmFtZTogJ2NvbnRyYXN0JywgbWluOiAtMSwgbWF4OiAxfVxuICAgIF1cbiAgfSxcbiAgaHVlU2F0dXJhdGlvbjoge1xuICAgIHR5cGU6ICdodWVTYXR1cmF0aW9uJyxcbiAgICBuYW1lOiAnSHVlICYgU2F0dXJhdGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5odWVTYXR1cmF0aW9uJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7bmFtZTogJ2h1ZScsIG1pbjogLTEsIG1heDogMX0sXG4gICAgICB7bmFtZTogJ3NhdHVyYXRpb24nLCBkZWZhdWx0VmFsdWU6IDAuMjUsIG1pbjogLTEsIG1heDogMX1cbiAgICBdXG4gIH0sXG4gIHZpYnJhbmNlOiB7XG4gICAgdHlwZTogJ3ZpYnJhbmNlJyxcbiAgICBuYW1lOiAnVmlicmFuY2UnLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24udmlicmFuY2UnLFxuICAgIHBhcmFtZXRlcnM6IFt7bmFtZTogJ2Ftb3VudCcsIGRlZmF1bHRWYWx1ZTogMC41LCBtaW46IC0xLCBtYXg6IDF9XVxuICB9LFxuICBzZXBpYToge1xuICAgIHR5cGU6ICdzZXBpYScsXG4gICAgbmFtZTogJ1NlcGlhJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLnNlcGlhJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdhbW91bnQnLCBtaW46IDAsIG1heDogMX1dXG4gIH0sXG4gIGRvdFNjcmVlbjoge1xuICAgIHR5cGU6ICdkb3RTY3JlZW4nLFxuICAgIG5hbWU6ICdEb3QgU2NyZWVuJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLmRvdFNjcmVlbicsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnYW5nbGUnLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogTWF0aC5QSSAvIDJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaXplJyxcbiAgICAgICAgbWluOiAxLFxuICAgICAgICBtYXg6IDIwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY2VudGVyJyxcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgbGFiZWw6IFsnQ2VudGVyIFgnLCAnQ2VudGVyIFknXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMC41LCAwLjVdLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfVxuICAgIF1cbiAgfSxcbiAgY29sb3JIYWxmdG9uZToge1xuICAgIHR5cGU6ICdjb2xvckhhbGZ0b25lJyxcbiAgICBuYW1lOiAnQ29sb3IgSGFsZnRvbmUnLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24uY29sb3JIYWxmdG9uZScsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnYW5nbGUnLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogTWF0aC5QSSAvIDJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaXplJyxcbiAgICAgICAgbWluOiAxLFxuICAgICAgICBtYXg6IDIwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnY2VudGVyJyxcbiAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgbGFiZWw6IFsnQ2VudGVyIFgnLCAnQ2VudGVyIFknXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMC41LCAwLjVdLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfVxuICAgIF1cbiAgfSxcbiAgbm9pc2U6IHtcbiAgICB0eXBlOiAnbm9pc2UnLFxuICAgIG5hbWU6ICdOb2lzZScsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5ub2lzZScsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAnYW1vdW50JywgbWluOiAwLCBtYXg6IDF9XVxuICB9LFxuICB0cmlhbmdsZUJsdXI6IHtcbiAgICB0eXBlOiAndHJpYW5nbGVCbHVyJyxcbiAgICBuYW1lOiAnQmx1ciAoVHJpYW5nbGUpJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLnRyaWFuZ2xlQmx1cicsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAncmFkaXVzJywgbWluOiAwLCBtYXg6IDEwMH1dXG4gIH0sXG4gIHpvb21CbHVyOiB7XG4gICAgdHlwZTogJ3pvb21CbHVyJyxcbiAgICBuYW1lOiAnQmx1ciAoWm9vbSknLFxuICAgIGRlc2NyaXB0aW9uOiAnZWZmZWN0RGVzY3JpcHRpb24uem9vbUJsdXInLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3N0cmVuZ3RoJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAwLjA1LFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NlbnRlcicsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ0NlbnRlciBYJywgJ0NlbnRlciBZJ10sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogWzAuNSwgMC41XSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDFcbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIHRpbHRTaGlmdDoge1xuICAgIHR5cGU6ICd0aWx0U2hpZnQnLFxuICAgIG5hbWU6ICdCbHVyIChUaWx0IFNoaWZ0KScsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi50aWx0U2hpZnQnLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2JsdXJSYWRpdXMnLFxuICAgICAgICBsYWJlbDogJ0JsdXInLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogNTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdncmFkaWVudFJhZGl1cycsXG4gICAgICAgIGxhYmVsOiAnR3JhZGllbnQnLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogNDAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc3RhcnQnLFxuICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICBsYWJlbDogWydTdGFydCcsIGZhbHNlXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMC4wLCAwLjBdLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2VuZCcsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ0VuZCcsIGZhbHNlXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMSwgMV0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9XG4gICAgXVxuICB9LFxuICBlZGdlV29yazoge1xuICAgIHR5cGU6ICdlZGdlV29yaycsXG4gICAgbmFtZTogJ0VkZ2Ugd29yaycsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5lZGdlV29yaycsXG4gICAgcGFyYW1ldGVyczogW3tuYW1lOiAncmFkaXVzJywgbWluOiAxLCBtYXg6IDUwfV1cbiAgfSxcbiAgdmlnbmV0dGU6IHtcbiAgICB0eXBlOiAndmlnbmV0dGUnLFxuICAgIG5hbWU6ICdWaWduZXR0ZScsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi52aWduZXR0ZScsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge25hbWU6ICdhbW91bnQnLCBtaW46IDAsIG1heDogMX0sXG4gICAgICB7bmFtZTogJ3JhZGl1cycsIG1pbjogMCwgbWF4OiAxfVxuICAgIF1cbiAgfSxcbiAgbWFnbmlmeToge1xuICAgIHR5cGU6ICdtYWduaWZ5JyxcbiAgICBuYW1lOiAnTWFnbmlmeScsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5tYWduaWZ5JyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzY3JlZW5YWScsXG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGxhYmVsOiBbJ1Bvc2l0aW9uIFgnLCAnUG9zaXRpb24gWSddLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFswLjUsIDAuNV0sXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAncmFkaXVzUGl4ZWxzJyxcbiAgICAgICAgbGFiZWw6ICdTaXplJyxcbiAgICAgICAgbWluOiAxMCxcbiAgICAgICAgbWF4OiA1MDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICd6b29tJyxcbiAgICAgICAgbWluOiAwLjUsXG4gICAgICAgIG1heDogNTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdib3JkZXJXaWR0aFBpeGVscycsXG4gICAgICAgIGxhYmVsOiAnQm9yZGVyIFdpZHRoJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAzLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogNTBcbiAgICAgIH1cbiAgICBdXG4gIH0sXG4gIGhleGFnb25hbFBpeGVsYXRlOiB7XG4gICAgdHlwZTogJ2hleGFnb25hbFBpeGVsYXRlJyxcbiAgICBuYW1lOiAnSGV4YWdvbmFsIFBpeGVsYXRlJyxcbiAgICBkZXNjcmlwdGlvbjogJ2VmZmVjdERlc2NyaXB0aW9uLmhleGFnb25hbFBpeGVsYXRlJyxcbiAgICBwYXJhbWV0ZXJzOiBbe25hbWU6ICdzY2FsZScsIGRlZmF1bHRWYWx1ZTogMjAsIG1pbjogMSwgbWF4OiA1MH1dXG4gIH0sXG4gIGRpc3RhbmNlRm9nOiB7XG4gICAgdHlwZTogRElTVEFOQ0VfRk9HX1RZUEUsXG4gICAgbmFtZTogJ0Rpc3RhbmNlIEZvZycsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5kaXN0YW5jZUZvZycsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAge25hbWU6ICdkZW5zaXR5JywgZGVmYXVsdFZhbHVlOiAwLjUsIG1pbjogMCwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnZm9nU3RhcnQnLCBsYWJlbDogJ1N0YXJ0JywgZGVmYXVsdFZhbHVlOiAwLjMsIG1pbjogMCwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnZm9nUmFuZ2UnLCBsYWJlbDogJ1JhbmdlJywgZGVmYXVsdFZhbHVlOiAwLjUsIG1pbjogMC4wMSwgbWF4OiAxfSxcbiAgICAgIHtuYW1lOiAnZm9nQ29sb3InLCB0eXBlOiAnY29sb3InLCBtaW46IDAsIG1heDogMjU1LCBkZWZhdWx0VmFsdWU6IFsyMTcsIDIyMiwgMjMwXX1cbiAgICBdXG4gIH0sXG4gIHN1cmZhY2VGb2c6IHtcbiAgICB0eXBlOiBTVVJGQUNFX0ZPR19UWVBFLFxuICAgIG5hbWU6ICdTdXJmYWNlIEZvZycsXG4gICAgZGVzY3JpcHRpb246ICdlZmZlY3REZXNjcmlwdGlvbi5zdXJmYWNlRm9nJyxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7bmFtZTogJ2RlbnNpdHknLCBkZWZhdWx0VmFsdWU6IDAuNiwgbWluOiAwLCBtYXg6IDF9LFxuICAgICAge25hbWU6ICdoZWlnaHQnLCBsYWJlbDogJ0VsZXZhdGlvbiAobSknLCBkZWZhdWx0VmFsdWU6IDUwLCBtaW46IC0yMDAsIG1heDogNjAwMH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdhbmltYXRlSGVpZ2h0JyxcbiAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgICAgbGFiZWw6ICdBbmltYXRlIEVsZXZhdGlvbicsXG4gICAgICAgIHRvb2x0aXA6XG4gICAgICAgICAgJ0FuaW1hdGVzIGVsZXZhdGlvbiBmcm9tIHN0YXJ0IHRvIGVuZCB2YWx1ZSBkdXJpbmcgdmlkZW8gZXhwb3J0IHByZXZpZXcgYW5kIHJlY29yZGluZy4nLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfSxcbiAgICAgIHtuYW1lOiAnaGVpZ2h0RW5kJywgbGFiZWw6ICdFbmQgRWxldmF0aW9uIChtKScsIGRlZmF1bHRWYWx1ZTogMTAwLCBtaW46IC0yMDAsIG1heDogNjAwMH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdsaW5lYXJFYXNpbmcnLFxuICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICBsYWJlbDogJ0xpbmVhciBFYXNpbmcnLFxuICAgICAgICB0b29sdGlwOlxuICAgICAgICAgICdVc2VzIGNvbnN0YW50IHNwZWVkIGluc3RlYWQgb2Ygc21vb3RoIGVhc2UtaW4gLyBlYXNlLW91dCBkdXJpbmcgZWxldmF0aW9uIGFuaW1hdGlvbi4nLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfSxcbiAgICAgIHtuYW1lOiAndGhpY2tuZXNzJywgbGFiZWw6ICdUcmFuc2l0aW9uIChtKScsIGRlZmF1bHRWYWx1ZTogNTAsIG1pbjogMCwgbWF4OiAxMDAwfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2ZvZ0NvbG9yJyxcbiAgICAgICAgdHlwZTogJ2NvbG9yJyxcbiAgICAgICAgbGFiZWw6ICdGb2cgQ29sb3InLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMjU1LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFsyMzAsIDIzNSwgMjQyXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3BhdHRlcm4nLFxuICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICBsYWJlbDogJ1BhdHRlcm4nLFxuICAgICAgICB0b29sdGlwOiAnQWRkcyBhIG5vaXNlIHBhdHRlcm4gdG8gdGhlIGZvZyBmb3IgYSBtb3JlIG5hdHVyYWwsIHZvbHVtZXRyaWMgbG9vay4nLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMVxuICAgICAgfVxuICAgIF1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEVGRkVDVF9ERVNDUklQVElPTlM6IEVmZmVjdERlc2NyaXB0aW9uW10gPSBbXG4gIExJR0hUX0FORF9TSEFET1dfRUZGRUNULFxuICAuLi5PYmplY3Qua2V5cyhQT1NUUFJPQ0VTU0lOR19FRkZFQ1RTKS5tYXAoa2V5TmFtZSA9PiBQT1NUUFJPQ0VTU0lOR19FRkZFQ1RTW2tleU5hbWVdKVxuXTtcblxuZXhwb3J0IHR5cGUgRWZmZWN0VHlwZSA9XG4gIHwgJ2luaydcbiAgfCAnYnJpZ2h0bmVzc0NvbnRyYXN0J1xuICB8ICdodWVTYXR1cmF0aW9uJ1xuICB8ICd2aWJyYW5jZSdcbiAgfCAnc2VwaWEnXG4gIHwgJ2RvdFNjcmVlbidcbiAgfCAnY29sb3JIYWxmdG9uZSdcbiAgfCAnbm9pc2UnXG4gIHwgJ3RyaWFuZ2xlQmx1cidcbiAgfCAnem9vbUJsdXInXG4gIHwgJ3RpbHRTaGlmdCdcbiAgfCAnZWRnZVdvcmsnXG4gIHwgJ3ZpZ25ldHRlJ1xuICB8ICdtYWduaWZ5J1xuICB8ICdoZXhhZ29uYWxQaXhlbGF0ZSdcbiAgfCAnZGlzdGFuY2VGb2cnXG4gIHwgJ3N1cmZhY2VGb2cnXG4gIHwgJ2xpZ2h0QW5kU2hhZG93JztcblxuZXhwb3J0IGNvbnN0IFNZTkNfVElNRUxJTkVfTU9ERVM6IFJlY29yZDxzdHJpbmcsIFN5bmNUaW1lbGluZU1vZGU+ID0ge1xuICBzdGFydDogMCxcbiAgZW5kOiAxXG59O1xuXG5leHBvcnQgY29uc3QgR0VPQVJST1dfTUVUQURBVEFfS0VZID0gJ0FSUk9XOmV4dGVuc2lvbjpuYW1lJztcblxuLyoqXG4gKiBFbnVtIGhvbGRpbmcgR2VvQXJyb3cgZXh0ZW5zaW9uIHR5cGUgbmFtZXNcbiAqL1xuZXhwb3J0IGVudW0gR0VPQVJST1dfRVhURU5TSU9OUyB7XG4gIFBPSU5UID0gJ2dlb2Fycm93LnBvaW50JyxcbiAgTElORVNUUklORyA9ICdnZW9hcnJvdy5saW5lc3RyaW5nJyxcbiAgUE9MWUdPTiA9ICdnZW9hcnJvdy5wb2x5Z29uJyxcbiAgTVVMVElQT0lOVCA9ICdnZW9hcnJvdy5tdWx0aXBvaW50JyxcbiAgTVVMVElMSU5FU1RSSU5HID0gJ2dlb2Fycm93Lm11bHRpbGluZXN0cmluZycsXG4gIE1VTFRJUE9MWUdPTiA9ICdnZW9hcnJvdy5tdWx0aXBvbHlnb24nLFxuICBXS0IgPSAnZ2VvYXJyb3cud2tiJ1xufVxuXG5leHBvcnQgY29uc3QgTE9BREVSU19DRE5fVkVSU0lPTiA9ICc0LjMuMic7XG5leHBvcnQgY29uc3QgTE9BREVSU19DRE5fVVJMID0gJ2h0dHBzOi8vdW5wa2cuY29tL0Bsb2FkZXJzLmdsJztcblxuZXhwb3J0IGNvbnN0IGdldExvYWRlck9wdGlvbnMgPSAoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgbXZ0OiB7XG4gICAgICB3b3JrZXJVcmw6IGAke0xPQURFUlNfQ0ROX1VSTH0vbXZ0QCR7TE9BREVSU19DRE5fVkVSU0lPTn0vZGlzdC9tdnQtd29ya2VyLmpzYFxuICAgIH0sXG4gICAgJ3F1YW50aXplZC1tZXNoJzoge1xuICAgICAgd29ya2VyVXJsOiBgJHtMT0FERVJTX0NETl9VUkx9L3RlcnJhaW5AJHtMT0FERVJTX0NETl9WRVJTSU9OfS9kaXN0L3F1YW50aXplZC1tZXNoLXdvcmtlci5qc2BcbiAgICB9LFxuICAgIG5weToge1xuICAgICAgd29ya2VyVXJsOiBgJHtMT0FERVJTX0NETl9VUkx9L3RleHR1cmVzQCR7TE9BREVSU19DRE5fVkVSU0lPTn0vZGlzdC9ucHktd29ya2VyLmpzYFxuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBDVVNUT01fU0NFTkVHUkFQSF9NT0RFTF9JRCA9ICdjdXN0b20nO1xuY29uc3QgTU9ERUxTX0JBU0VfVVJMID1cbiAgJ2h0dHBzOi8vc3R1ZGlvLXB1YmxpYy1kYXRhLmZvdXJzcXVhcmUuY29tL3N0YXRpY3Mva2VwbGVyZ2wvM2QtbW9kZWxzLjIwMjItMDYtMTMnO1xuXG5leHBvcnQgY29uc3QgVFJJUF9MQVlFUl9TQ0VORUdSQVBIX01PREVMUzoge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uOiBhbnk7XG4gIHVybDogc3RyaW5nIHwgbnVsbDtcbiAgYW5nbGVzOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHNjYWxlOiBudW1iZXI7XG59W10gPSBbXG4gIHtcbiAgICBpZDogJ2FpcnBsYW5lJyxcbiAgICBsYWJlbDogJ0FpcnBsYW5lJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9QbGFuZS5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiAnYm9laW5nNzc3JyxcbiAgICBsYWJlbDogJ0FpcmxpbmVyJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9BaXJsaW5lci5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiAndWJlci1ldnRvbCcsXG4gICAgbGFiZWw6ICdWVE9MJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9ldnRvbC5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiAnaGFuZy1nbGlkZXInLFxuICAgIGxhYmVsOiAnR2xpZGVyJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9IYW5nZ2xpZGVyLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICdoZWxpY29wdGVyJyxcbiAgICBsYWJlbDogJ0hlbGljb3B0ZXInLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBgJHtNT0RFTFNfQkFTRV9VUkx9L0hlbGljb3B0ZXIuZ2xiYCxcbiAgICBhbmdsZXM6IFswLCAwLCAwXSxcbiAgICBzY2FsZTogMS4wXG4gIH0sXG4gIHtcbiAgICBpZDogJ2JpY3ljbGUnLFxuICAgIGxhYmVsOiAnQmljeWNsZScsXG4gICAgaWNvbjogbnVsbCxcbiAgICB1cmw6IGAke01PREVMU19CQVNFX1VSTH0vQmljeWNsZS5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiAnc2Nvb3RlcicsXG4gICAgbGFiZWw6ICdTY29vdGVyJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9TY29vdGVyLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICdjYXInLFxuICAgIGxhYmVsOiAnQ2FyJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9DYXIuZ2xiYCxcbiAgICBhbmdsZXM6IFswLCAwLCAwXSxcbiAgICBzY2FsZTogMS4wXG4gIH0sXG4gIHtcbiAgICBpZDogJ3RydWNrJyxcbiAgICBsYWJlbDogJ1RydWNrJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9UcnVjay5nbGJgLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfSxcbiAge1xuICAgIGlkOiAnc2VtaXRydWNrJyxcbiAgICBsYWJlbDogJ1NlbWl0cnVjaycsXG4gICAgaWNvbjogbnVsbCxcbiAgICB1cmw6IGAke01PREVMU19CQVNFX1VSTH0vU2VtaXRydWNrLmdsYmAsXG4gICAgYW5nbGVzOiBbMCwgMCwgMF0sXG4gICAgc2NhbGU6IDEuMFxuICB9LFxuICB7XG4gICAgaWQ6ICdjYXJnb3NoaXAnLFxuICAgIGxhYmVsOiAnQ2FyZ29zaGlwJyxcbiAgICBpY29uOiBudWxsLFxuICAgIHVybDogYCR7TU9ERUxTX0JBU0VfVVJMfS9DYXJnb3NoaXAuZ2xiYCxcbiAgICBhbmdsZXM6IFswLCAwLCAwXSxcbiAgICBzY2FsZTogMS4wXG4gIH0sXG4gIHtcbiAgICBpZDogQ1VTVE9NX1NDRU5FR1JBUEhfTU9ERUxfSUQsXG4gICAgbGFiZWw6ICdDdXN0b20nLFxuICAgIGljb246IG51bGwsXG4gICAgdXJsOiBudWxsLFxuICAgIGFuZ2xlczogWzAsIDAsIDBdLFxuICAgIHNjYWxlOiAxLjBcbiAgfVxuXTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQVVBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQVVBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUErQyxJQUFBRyxtQkFBQSxFQUFBQyxXQUFBLEVBdkIvQztBQUNBO0FBQUEsU0FBQUMsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQs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
|