kepler.gl 3.1.10 → 3.2.0
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/package.json +2 -2
- package/src/actions/package.json +8 -8
- package/src/ai-assistant/package.json +7 -7
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/package.json +3 -3
- package/src/components/dist/modal-container.js +3 -3
- package/src/components/dist/modals/tilesets-modals/tileset-raster-form.js +38 -9
- package/src/components/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +3 -3
- package/src/components/package.json +15 -15
- package/src/components/src/modal-container.tsx +6 -2
- package/src/components/src/modals/tilesets-modals/tileset-raster-form.tsx +60 -4
- package/src/components/src/side-panel/layer-panel/raster-tile-layer-configurator.tsx +2 -1
- package/src/constants/dist/default-settings.js +2 -2
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/56/48/71c2c5381c01c063c164e15fa04b4b1f3faae02e6727f2f2daf483e15205feca68334bad721af0c6f31abb20b56d60504623838127764aab6883912e7f71 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/bf/88/ea60c7619185516464a4ae21f51394966047bfdf190a5463de651c61931c +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/umd/keplergl.min.js +1 -1
- package/src/deckgl-arrow-layers/package.json +2 -2
- package/src/deckgl-layers/package.json +4 -4
- package/src/duckdb/package.json +6 -6
- package/src/effects/package.json +5 -5
- package/src/layers/dist/raster-tile/gpu-utils.d.ts +11 -10
- package/src/layers/dist/raster-tile/gpu-utils.js +7 -6
- package/src/layers/dist/raster-tile/image.d.ts +4 -0
- package/src/layers/dist/raster-tile/image.js +30 -16
- package/src/layers/dist/raster-tile/raster-tile-layer.d.ts +4 -0
- package/src/layers/dist/raster-tile/raster-tile-layer.js +18 -6
- package/src/layers/dist/raster-tile/request-throttle.d.ts +1 -1
- package/src/layers/dist/raster-tile/request-throttle.js +17 -16
- package/src/layers/dist/raster-tile/types.d.ts +16 -0
- package/src/layers/dist/raster-tile/types.js +1 -1
- package/src/layers/dist/raster-tile/url.d.ts +1 -1
- package/src/layers/dist/raster-tile/url.js +5 -4
- package/src/layers/package.json +9 -9
- package/src/layers/src/raster-tile/gpu-utils.ts +96 -78
- package/src/layers/src/raster-tile/image.ts +35 -9
- package/src/layers/src/raster-tile/raster-tile-layer.ts +23 -5
- package/src/layers/src/raster-tile/request-throttle.ts +10 -5
- package/src/layers/src/raster-tile/types.ts +19 -1
- package/src/layers/src/raster-tile/url.ts +10 -3
- package/src/localization/package.json +1 -1
- package/src/processors/package.json +7 -7
- package/src/reducers/package.json +16 -16
- package/src/schemas/package.json +7 -7
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/21/4a/50f77069dbf70c6792dd82d4e149375a888e25ddddd3209e2db013be62091f79082291fa06eb518cccb111b09a778e2946c1fb7a27bb6e32f72da0ccf250 +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/c5/b6/9c4bdb089acc30ac8a16a6b9b93898757537f7017b2f725ddb832b4614d6 +2 -0
- package/src/styles/package.json +2 -2
- package/src/styles/umd/keplergl.min.js +1 -1
- package/src/table/dist/tileset/vector-tile-utils.js +9 -5
- package/src/table/package.json +5 -5
- package/src/table/src/tileset/vector-tile-utils.ts +9 -6
- package/src/tasks/package.json +2 -2
- package/src/types/package.json +1 -1
- package/src/utils/dist/application-config.js +5 -5
- package/src/utils/package.json +4 -4
- package/src/utils/src/application-config.ts +4 -6
- package/umd/keplergl.min.js +1150 -1130
|
@@ -278,7 +278,7 @@ function getSingleAssetSTACRequest(_x8) {
|
|
|
278
278
|
*/
|
|
279
279
|
function _getSingleAssetSTACRequest() {
|
|
280
280
|
_getSingleAssetSTACRequest = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(options) {
|
|
281
|
-
var stac, loadAssetIds, loadBandIndexes, signal, useSTACSearching, _options$index, x, y, z, stacSearchProvider, startDate, endDate, _stacQuery, useMask, urlInfo, urlParams, responseRequiredBandIndices;
|
|
281
|
+
var stac, loadAssetIds, loadBandIndexes, signal, useSTACSearching, _options$index, x, y, z, stacSearchProvider, startDate, endDate, _stacQuery, useMask, urlInfo, urlParams, responseRequiredBandIndices, asset;
|
|
282
282
|
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
283
283
|
while (1) switch (_context6.prev = _context6.next) {
|
|
284
284
|
case 0:
|
|
@@ -350,8 +350,14 @@ function _getSingleAssetSTACRequest() {
|
|
|
350
350
|
responseRequiredBandIndices: responseRequiredBandIndices
|
|
351
351
|
}));
|
|
352
352
|
case 21:
|
|
353
|
-
|
|
354
|
-
|
|
353
|
+
asset = _context6.sent;
|
|
354
|
+
return _context6.abrupt("return", _objectSpread(_objectSpread({}, asset), {}, {
|
|
355
|
+
rasterServerMaxRetries: stac.rasterServerMaxRetries,
|
|
356
|
+
rasterServerRetryDelay: stac.rasterServerRetryDelay,
|
|
357
|
+
rasterServerServerErrorsToRetry: stac.rasterServerServerErrorsToRetry,
|
|
358
|
+
rasterServerMaxPerServerRequests: stac.rasterServerMaxPerServerRequests
|
|
359
|
+
}));
|
|
360
|
+
case 23:
|
|
355
361
|
case "end":
|
|
356
362
|
return _context6.stop();
|
|
357
363
|
}
|
|
@@ -367,7 +373,7 @@ function getMultiAssetSTACRequest(_x9) {
|
|
|
367
373
|
*/
|
|
368
374
|
function _getMultiAssetSTACRequest() {
|
|
369
375
|
_getMultiAssetSTACRequest = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(options) {
|
|
370
|
-
var stac, loadAssetIds, loadBandIndexes, signal, useSTACSearching, stacSearchProvider, startDate, endDate, _options$index2, x, y, z, _stacQuery, requestData, requestMask;
|
|
376
|
+
var stac, loadAssetIds, loadBandIndexes, signal, useSTACSearching, stacSearchProvider, startDate, endDate, _options$index2, x, y, z, _stacQuery, requestData, requestMask, assets;
|
|
371
377
|
return _regenerator["default"].wrap(function _callee7$(_context7) {
|
|
372
378
|
while (1) switch (_context7.prev = _context7.next) {
|
|
373
379
|
case 0:
|
|
@@ -427,7 +433,7 @@ function _getMultiAssetSTACRequest() {
|
|
|
427
433
|
});
|
|
428
434
|
}
|
|
429
435
|
if (!isValidRequestData(requestData)) {
|
|
430
|
-
_context7.next =
|
|
436
|
+
_context7.next = 10;
|
|
431
437
|
break;
|
|
432
438
|
}
|
|
433
439
|
_context7.next = 8;
|
|
@@ -440,10 +446,18 @@ function _getMultiAssetSTACRequest() {
|
|
|
440
446
|
}));
|
|
441
447
|
}));
|
|
442
448
|
case 8:
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
449
|
+
assets = _context7.sent;
|
|
450
|
+
return _context7.abrupt("return", assets.map(function (asset) {
|
|
451
|
+
return _objectSpread(_objectSpread({}, asset), {}, {
|
|
452
|
+
rasterServerMaxRetries: options.stac.rasterServerMaxRetries,
|
|
453
|
+
rasterServerRetryDelay: options.stac.rasterServerRetryDelay,
|
|
454
|
+
rasterServerServerErrorsToRetry: options.stac.rasterServerServerErrorsToRetry,
|
|
455
|
+
rasterServerMaxPerServerRequests: options.stac.rasterServerMaxPerServerRequests
|
|
456
|
+
});
|
|
457
|
+
}));
|
|
446
458
|
case 10:
|
|
459
|
+
return _context7.abrupt("return", null);
|
|
460
|
+
case 11:
|
|
447
461
|
case "end":
|
|
448
462
|
return _context7.stop();
|
|
449
463
|
}
|
|
@@ -577,18 +591,18 @@ function loadTerrain(_x12) {
|
|
|
577
591
|
}
|
|
578
592
|
function _loadTerrain() {
|
|
579
593
|
_loadTerrain = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11(props) {
|
|
580
|
-
var _props$index, x, y, z, boundsForGeometry, signal, rasterTileServerUrls, meshMaxError, terrainUrlInfo, loaderOptions, numAttempts, mesh;
|
|
594
|
+
var _props$index, x, y, z, boundsForGeometry, signal, rasterTileServerUrls, rasterServerMaxRetries, rasterServerMaxPerServerRequests, meshMaxError, terrainUrlInfo, loaderOptions, numAttempts, mesh;
|
|
581
595
|
return _regenerator["default"].wrap(function _callee11$(_context11) {
|
|
582
596
|
while (1) switch (_context11.prev = _context11.next) {
|
|
583
597
|
case 0:
|
|
584
|
-
_props$index = props.index, x = _props$index.x, y = _props$index.y, z = _props$index.z, boundsForGeometry = props.boundsForGeometry, signal = props.signal, rasterTileServerUrls = props.rasterTileServerUrls;
|
|
598
|
+
_props$index = props.index, x = _props$index.x, y = _props$index.y, z = _props$index.z, boundsForGeometry = props.boundsForGeometry, signal = props.signal, rasterTileServerUrls = props.rasterTileServerUrls, rasterServerMaxRetries = props.rasterServerMaxRetries, rasterServerMaxPerServerRequests = props.rasterServerMaxPerServerRequests;
|
|
585
599
|
meshMaxError = (0, _url.getMeshMaxError)(z, MESH_MULTIPLIER);
|
|
586
600
|
terrainUrlInfo = (0, _url.getTerrainUrl)(rasterTileServerUrls, x, y, z, meshMaxError);
|
|
587
601
|
loaderOptions = (0, _constants.getLoaderOptions)();
|
|
588
|
-
numAttempts = 1 + (0, _utils.getApplicationConfig)().rasterServerMaxRetries;
|
|
602
|
+
numAttempts = 1 + (rasterServerMaxRetries !== null && rasterServerMaxRetries !== void 0 ? rasterServerMaxRetries : (0, _utils.getApplicationConfig)().rasterServerMaxRetries);
|
|
589
603
|
_context11.next = 7;
|
|
590
604
|
return (0, _requestThrottle.getRequestThrottle)().throttleRequest(terrainUrlInfo.rasterServerUrl, /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10() {
|
|
591
|
-
var attempt,
|
|
605
|
+
var attempt, _ref7, _props$rasterServerSe, _error$response, _props$rasterServerRe;
|
|
592
606
|
return _regenerator["default"].wrap(function _callee10$(_context10) {
|
|
593
607
|
while (1) switch (_context10.prev = _context10.next) {
|
|
594
608
|
case 0:
|
|
@@ -614,12 +628,12 @@ function _loadTerrain() {
|
|
|
614
628
|
case 8:
|
|
615
629
|
_context10.prev = 8;
|
|
616
630
|
_context10.t0 = _context10["catch"](2);
|
|
617
|
-
if (!(attempt < numAttempts && _context10.t0 instanceof _core.FetchError && (
|
|
631
|
+
if (!(attempt < numAttempts && _context10.t0 instanceof _core.FetchError && (_ref7 = (_props$rasterServerSe = props.rasterServerServerErrorsToRetry) !== null && _props$rasterServerSe !== void 0 ? _props$rasterServerSe : (0, _utils.getApplicationConfig)().rasterServerServerErrorsToRetry) !== null && _ref7 !== void 0 && _ref7.includes((_error$response = _context10.t0.response) === null || _error$response === void 0 ? void 0 : _error$response.status))) {
|
|
618
632
|
_context10.next = 14;
|
|
619
633
|
break;
|
|
620
634
|
}
|
|
621
635
|
_context10.next = 13;
|
|
622
|
-
return (0, _commonUtils.sleep)((0, _utils.getApplicationConfig)().rasterServerRetryDelay);
|
|
636
|
+
return (0, _commonUtils.sleep)((_props$rasterServerRe = props.rasterServerRetryDelay) !== null && _props$rasterServerRe !== void 0 ? _props$rasterServerRe : (0, _utils.getApplicationConfig)().rasterServerRetryDelay);
|
|
623
637
|
case 13:
|
|
624
638
|
return _context10.abrupt("continue", 14);
|
|
625
639
|
case 14:
|
|
@@ -633,7 +647,7 @@ function _loadTerrain() {
|
|
|
633
647
|
return _context10.stop();
|
|
634
648
|
}
|
|
635
649
|
}, _callee10, null, [[2, 8]]);
|
|
636
|
-
})));
|
|
650
|
+
})), rasterServerMaxPerServerRequests);
|
|
637
651
|
case 7:
|
|
638
652
|
mesh = _context11.sent;
|
|
639
653
|
return _context11.abrupt("return", mesh);
|
|
@@ -645,4 +659,4 @@ function _loadTerrain() {
|
|
|
645
659
|
}));
|
|
646
660
|
return _loadTerrain.apply(this, arguments);
|
|
647
661
|
}
|
|
648
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfdGVycmFpbiIsIl9tZW1vaXplIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb21tb25VdGlscyIsIl9jb25zdGFudHMiLCJfdXRpbHMiLCJfY29uZmlnIiwiX2dwdVV0aWxzIiwiX3Jhc3RlclRpbGVVdGlscyIsIl91cmwiLCJfcmVxdWVzdFRocm90dGxlIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJnZXRJbWFnZURhdGFVUkwiLCJiaXRtYXAiLCJ3aWR0aCIsImhlaWdodCIsImNhbnZhcyIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImdldENvbnRleHQiLCJzZXRBdHRyaWJ1dGUiLCJjb25jYXQiLCJjdHgiLCJpIiwiX2JpdG1hcCRzdWJhcnJheSIsInN1YmFycmF5IiwiX2JpdG1hcCRzdWJhcnJheTIiLCJfc2xpY2VkVG9BcnJheTIiLCJnIiwiYiIsImEiLCJmaWxsU3R5bGUiLCJmaWxsUmVjdCIsInRvRGF0YVVSTCIsIk1FU0hfTVVMVElQTElFUiIsIlNLSVJUX0hFSUdIVF9NVUxUSVBMSUVSIiwibG9hZEltYWdlcyIsIl94IiwiX3gyIiwiX3gzIiwiX2xvYWRJbWFnZXMiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsImFzc2V0UmVxdWVzdHMiLCJjb2xvcm1hcElkIiwiY2F0ZWdvcmljYWxPcHRpb25zIiwiX3lpZWxkJFByb21pc2UkYWxsIiwiX3lpZWxkJFByb21pc2UkYWxsMiIsInN0YWNJbWFnZXMiLCJjb2xvcm1hcCIsImltYWdlQ29sb3JtYXAiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiUHJvbWlzZSIsImFsbCIsImxvYWRTVEFDSW1hZ2VEYXRhIiwiQ0FURUdPUklDQUxfQ09MT1JNQVBfSUQiLCJtZW1vaXplZExvYWRDb2xvcm1hcCIsInNlbnQiLCJnZW5lcmF0ZUNhdGVnb3JpY2FsQ29sb3JtYXBUZXh0dXJlIiwiYWJydXB0Iiwic3RvcCIsIm1lbW9pemUiLCJsb2FkQ29sb3JtYXAiLCJfeDQiLCJfbG9hZENvbG9ybWFwIiwiX2NhbGxlZTIiLCJyZXF1ZXN0IiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiZ2V0QXNzZXRSZXF1ZXN0IiwidXJsIiwiUmFzdGVyTGF5ZXJSZXNvdXJjZXMiLCJyYXN0ZXJDb2xvck1hcCIsInJhc3RlclNlcnZlclVybCIsIm9wdGlvbnMiLCJsb2FkSW1hZ2UiLCJDT0xPUk1BUF9URVhUVVJFX1BBUkFNRVRFUlMiLCJnZXRTVEFDSW1hZ2VSZXF1ZXN0cyIsIl94NSIsIl9nZXRTVEFDSW1hZ2VSZXF1ZXN0cyIsIl9jYWxsZWUzIiwibG9hZEFzc2V0SWRzIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiZ2V0U2luZ2xlQXNzZXRTVEFDUmVxdWVzdCIsImdldE11bHRpQXNzZXRTVEFDUmVxdWVzdCIsIl94NiIsIl9sb2FkU1RBQ0ltYWdlRGF0YSIsIl9jYWxsZWU0IiwicmVxdWVzdHMiLCJfY2FsbGVlNCQiLCJfY29udGV4dDQiLCJsb2FkU2luZ2xlQXNzZXRTVEFDIiwibG9hZE11bHRpQXNzZXRTVEFDIiwiX3g3IiwiX2dldEFzc2V0UmVxdWVzdCIsIl9jYWxsZWU1IiwiX3JlZiIsInBhcmFtcyIsIl9yZWYkdXNlTWFzayIsInVzZU1hc2siLCJyZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXMiLCJyZXF1ZXN0VXJsIiwicmVxdWVzdFBhcmFtcyIsInJlcXVlc3RPcHRpb25zIiwiYXNzZXRVcmwiLCJfY2FsbGVlNSQiLCJfY29udGV4dDUiLCJVUkxTZWFyY2hQYXJhbXMiLCJ0b1N0cmluZyIsIl94OCIsIl9nZXRTaW5nbGVBc3NldFNUQUNSZXF1ZXN0IiwiX2NhbGxlZTYiLCJzdGFjIiwibG9hZEJhbmRJbmRleGVzIiwic2lnbmFsIiwidXNlU1RBQ1NlYXJjaGluZyIsIl9vcHRpb25zJGluZGV4IiwieCIsInkiLCJ6Iiwic3RhY1NlYXJjaFByb3ZpZGVyIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsIl9zdGFjUXVlcnkiLCJ1cmxJbmZvIiwidXJsUGFyYW1zIiwiX2NhbGxlZTYkIiwiX2NvbnRleHQ2IiwiaW5kZXgiLCJ0eXBlIiwiZ2V0U3RhY0FwaVVybFBhcmFtcyIsIm1hc2siLCJnZXRUaXRpbGVyVXJsIiwiZ2V0U2luZ2xlQ09HVXJsUGFyYW1zIiwibG9hZEFzc2V0SWQiLCJfeDkiLCJfZ2V0TXVsdGlBc3NldFNUQUNSZXF1ZXN0IiwiX2NhbGxlZTciLCJfb3B0aW9ucyRpbmRleDIiLCJyZXF1ZXN0RGF0YSIsInJlcXVlc3RNYXNrIiwiX2NhbGxlZTckIiwiX2NvbnRleHQ3IiwiQXJyYXkiLCJmaWxsIiwiemlwIiwibWFwIiwiX3JlZjIiLCJfcmVmMyIsImFzc2V0SWQiLCJ6aXAzIiwiX3JlZjQiLCJfcmVmNSIsImJhbmRJbmRleCIsImlzVmFsaWRSZXF1ZXN0RGF0YSIsIl9yZXF1ZXN0JG9wdGlvbnMiLCJfeDEwIiwiX2xvYWRTaW5nbGVBc3NldFNUQUMiLCJfY2FsbGVlOCIsImltYWdlQmFuZHMiLCJpbWFnZU1hc2siLCJtYXBwZWRJbWFnZUJhbmRzIiwiX2NhbGxlZTgkIiwiX2NvbnRleHQ4IiwibG9hZE5weUFycmF5IiwicG9wIiwiX3gxMSIsIl9sb2FkTXVsdGlBc3NldFNUQUMiLCJfY2FsbGVlOSIsIl9yZXN1bHRzJCIsInJlc3VsdHMiLCJfY2FsbGVlOSQiLCJfY29udGV4dDkiLCJmbGF0IiwiYmFuZCIsImsiLCJjIiwiYXJyIiwiZXZlcnkiLCJnZXRDYXRlZ29yaWNhbENvbG9ybWFwRGF0YVVybCIsImdlbmVyYXRlQ2F0ZWdvcmljYWxCaXRtYXBBcnJheSIsIkNBVEVHT1JJQ0FMX1RFWFRVUkVfV0lEVEgiLCJsb2FkVGVycmFpbiIsIl94MTIiLCJfbG9hZFRlcnJhaW4iLCJfY2FsbGVlMTEiLCJwcm9wcyIsIl9wcm9wcyRpbmRleCIsImJvdW5kc0Zvckdlb21ldHJ5IiwicmFzdGVyVGlsZVNlcnZlclVybHMiLCJtZXNoTWF4RXJyb3IiLCJ0ZXJyYWluVXJsSW5mbyIsImxvYWRlck9wdGlvbnMiLCJudW1BdHRlbXB0cyIsIm1lc2giLCJfY2FsbGVlMTEkIiwiX2NvbnRleHQxMSIsImdldE1lc2hNYXhFcnJvciIsImdldFRlcnJhaW5VcmwiLCJnZXRMb2FkZXJPcHRpb25zIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJyYXN0ZXJTZXJ2ZXJNYXhSZXRyaWVzIiwiZ2V0UmVxdWVzdFRocm90dGxlIiwidGhyb3R0bGVSZXF1ZXN0IiwiX2NhbGxlZTEwIiwiYXR0ZW1wdCIsIl9nZXRBcHBsaWNhdGlvbkNvbmZpZyIsIl9lcnJvciRyZXNwb25zZSIsIl9jYWxsZWUxMCQiLCJfY29udGV4dDEwIiwibG9hZCIsIlF1YW50aXplZE1lc2hMb2FkZXIiLCJmZXRjaCIsImJvdW5kcyIsInNraXJ0SGVpZ2h0IiwidDAiLCJGZXRjaEVycm9yIiwicmFzdGVyU2VydmVyU2VydmVyRXJyb3JzVG9SZXRyeSIsImluY2x1ZGVzIiwicmVzcG9uc2UiLCJzdGF0dXMiLCJzbGVlcCIsInJhc3RlclNlcnZlclJldHJ5RGVsYXkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcmFzdGVyLXRpbGUvaW1hZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9ucyB0byBjcmVhdGUgb2JqZWN0cyB0byBwYXNzIHRvIGRlY2suZ2wtcmFzdGVyXG4gKi9cblxuaW1wb3J0IHtsb2FkLCBGZXRjaEVycm9yfSBmcm9tICdAbG9hZGVycy5nbC9jb3JlJztcbmltcG9ydCB7UXVhbnRpemVkTWVzaExvYWRlcn0gZnJvbSAnQGxvYWRlcnMuZ2wvdGVycmFpbic7XG5pbXBvcnQgbWVtb2l6ZSBmcm9tICdsb2Rhc2gvbWVtb2l6ZSc7XG5cbmltcG9ydCB7c2xlZXB9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7Z2V0TG9hZGVyT3B0aW9uc30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtnZXRBcHBsaWNhdGlvbkNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7Q0FURUdPUklDQUxfQ09MT1JNQVBfSUR9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7XG4gIGxvYWROcHlBcnJheSxcbiAgZ2VuZXJhdGVDYXRlZ29yaWNhbENvbG9ybWFwVGV4dHVyZSxcbiAgbG9hZEltYWdlLFxuICBDT0xPUk1BUF9URVhUVVJFX1BBUkFNRVRFUlNcbn0gZnJvbSAnLi9ncHUtdXRpbHMnO1xuaW1wb3J0IHtDQVRFR09SSUNBTF9URVhUVVJFX1dJRFRILCBnZW5lcmF0ZUNhdGVnb3JpY2FsQml0bWFwQXJyYXl9IGZyb20gJy4vcmFzdGVyLXRpbGUtdXRpbHMnO1xuaW1wb3J0IHtcbiAgR2V0VGlsZURhdGFQcm9wcyxcbiAgSW1hZ2VEYXRhLFxuICBUZXJyYWluRGF0YSxcbiAgQXNzZXRSZXF1ZXN0RGF0YSxcbiAgQ2F0ZWdvcmljYWxDb2xvcm1hcE9wdGlvbnMsXG4gIENvbG9ybWFwSW1hZ2VEYXRhXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgZ2V0VGl0aWxlclVybCxcbiAgZ2V0VGVycmFpblVybCxcbiAgZ2V0U2luZ2xlQ09HVXJsUGFyYW1zLFxuICBnZXRTdGFjQXBpVXJsUGFyYW1zLFxuICBnZXRNZXNoTWF4RXJyb3IsXG4gIFJhc3RlckxheWVyUmVzb3VyY2VzXG59IGZyb20gJy4vdXJsJztcbmltcG9ydCB7Z2V0UmVxdWVzdFRocm90dGxlfSBmcm9tICcuL3JlcXVlc3QtdGhyb3R0bGUnO1xuXG4vKipcbiAqIENyZWF0ZSBkYXRhVXJsIGltYWdlIGZyb20gYml0bWFwIGFycmF5XG4gKiBAcGFyYW0gYml0bWFwIC0gUkdCQSBieXRlIGJpdG1hcCBhcnJheVxuICogQHBhcmFtIHdpZHRoIC0gd2lkdGggb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gaGVpZ2h0IC0gaGVpZ2h0IG9mIHRoZSBpbWFnZVxuICogQHJldHVybnMgYmFzZTY0IGRhdGEgdXJsIG9mIHRoZSBpbWFnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VEYXRhVVJMKGJpdG1hcDogVWludDhBcnJheSwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gIGlmICghY2FudmFzLmdldENvbnRleHQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjYW52YXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsIGAke3dpZHRofWApO1xuICBjYW52YXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHtoZWlnaHR9YCk7XG4gIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICBpZiAoIWN0eCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgd2lkdGg7IGkrKykge1xuICAgIGNvbnN0IFtyLCBnLCBiLCBhXSA9IGJpdG1hcC5zdWJhcnJheShpICogNCwgaSAqIDQgKyA0KTtcbiAgICBpZiAoYSAhPT0gMCkge1xuICAgICAgY3R4LmZpbGxTdHlsZSA9IGByZ2IoJHtyfSwgJHtnfSwgJHtifSlgO1xuICAgICAgY3R4LmZpbGxSZWN0KGksIDAsIDEsIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyk7XG59XG5cbi8vIEdsb2JhbCBtdWx0aXBsaWVyIHRvIGJlIGFwcGxpZWQgdG8gdGVycmFpbiBtZXNoIHJlc29sdXRpb25cbi8vIEEgc21hbGxlciBudW1iZXIgdG93YXJkcyAwIHdpbGwgY2F1c2UgZ2VuZXJhdGlvbiBvZiBtZXNoIGRhdGEgd2l0aCBhIHNtYWxsZXIgbWF4IGVycm9yIGFuZCB0aHVzIGFcbi8vIGhpZ2hlciByZXNvbHV0aW9uIG1lc2hcbmNvbnN0IE1FU0hfTVVMVElQTElFUiA9IDAuODtcblxuLyoqXG4gKiBNdWx0aXBsaWVyIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBoZWlnaHQgb2YgdGVycmFpbiBtZXNoIHNraXJ0cy5cbiAqIFRoZSBza2lydCBpcyBhbiBleHRlbnNpb24gb2YgdGhlIHRlcnJhaW4gbWVzaCB0aGF0IGhlbHBzIHByZXZlbnQgZ2FwcyBiZXR3ZWVuIHRlcnJhaW4gdGlsZXNcbiAqIGJ5IGV4dGVuZGluZyB0aGUgbWVzaCBlZGdlcyBkb3dud2FyZC4gVGhpcyBtdWx0aXBsaWVyIGlzIGFwcGxpZWQgdG8gdGhlIG1lc2gncyBtYXhpbXVtIGVycm9yXG4gKiB0byBkZXRlcm1pbmUgdGhlIHNraXJ0IGhlaWdodCwgZW5zdXJpbmcgbm8gZ2FwcyBhcmUgdmlzaWJsZS5cbiAqL1xuY29uc3QgU0tJUlRfSEVJR0hUX01VTFRJUExJRVIgPSAzO1xuXG4vKipcbiAqIExvYWQgaW1hZ2VzIHJlcXVpcmVkIGZvciByYXN0ZXIgdGlsZVxuICogQHBhcmFtIGFzc2V0UmVxdWVzdHMgLSBTVEFDIGFzc2V0IHJlcXVlc3RzXG4gKiBAcGFyYW0gY29sb3JtYXBJZCAtIGNvbG9ybWFwIGlkXG4gKiBAcGFyYW0gY2F0ZWdvcmljYWxPcHRpb25zIC0gY2F0ZWdvcmljYWwgb3B0aW9ucyByZXF1cmVkIGZvciBtYWtpbmcgb2YgY2F0ZWdvcmljYWwgY29sb3JtYXBcbiAqIEByZXR1cm5zIGltYWdlcyBtYXBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRJbWFnZXMoXG4gIGFzc2V0UmVxdWVzdHM6IEFzc2V0UmVxdWVzdERhdGFbXSxcbiAgY29sb3JtYXBJZDogc3RyaW5nLFxuICBjYXRlZ29yaWNhbE9wdGlvbnM6IENhdGVnb3JpY2FsQ29sb3JtYXBPcHRpb25zXG4pOiBQcm9taXNlPEltYWdlRGF0YT4ge1xuICAvLyBXZSBsb2FkIGltYWdlIGRhdGEgKHNpbmdsZSBvciBtdWx0aSBhc3NldCBiYXNlZCBvbiBudW1iZXIgb2YgcmVxdWVzdHMpIGFuZCBjb2xvcm1hcCBpbiBwYXJhbGxlbFxuICBjb25zdCBbc3RhY0ltYWdlcywgY29sb3JtYXBdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgIGxvYWRTVEFDSW1hZ2VEYXRhKGFzc2V0UmVxdWVzdHMpLFxuICAgIChjb2xvcm1hcElkICE9PSBDQVRFR09SSUNBTF9DT0xPUk1BUF9JRCAmJiBtZW1vaXplZExvYWRDb2xvcm1hcChjb2xvcm1hcElkKSkgfHwgbnVsbFxuICBdKTtcbiAgbGV0IGltYWdlQ29sb3JtYXAgPSBjb2xvcm1hcDtcbiAgaWYgKGNvbG9ybWFwSWQgPT09IENBVEVHT1JJQ0FMX0NPTE9STUFQX0lEKSB7XG4gICAgaW1hZ2VDb2xvcm1hcCA9IGdlbmVyYXRlQ2F0ZWdvcmljYWxDb2xvcm1hcFRleHR1cmUoY2F0ZWdvcmljYWxPcHRpb25zKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YWNJbWFnZXMsXG4gICAgaW1hZ2VDb2xvcm1hcFxuICB9O1xufVxuXG4vKipcbiAqIENhY2hlIGxvYWRpbmcgb2YgY29sb3JtYXAuIEVhY2ggY29sb3JtYXAgZmlsZSBpcyB2ZXJ5IHNtYWxsLCBvbiB0aGUgb3JkZXIgb2YgYSBmZXcgaHVuZHJlZCBieXRlcyxcbiAqIHNvIGEgZ2xvYmFsIGNhY2hlIGxpa2UgdGhpcyBpcyBub3QgZXhwZWN0ZWQgdG8gZWF0IHVwIHRvbyBtdWNoIG1lbW9yeS5cbiAqIE1vc3QgY29sb3JtYXBzIGFyZSBsb2FkZWQgZnJvbSBDRE4uIEluIGNhc2UgY29sb3JtYXBJZCBpcyBjYXRlZ29yaWNhbCwgdGhlIGltYWdlIGlzIGNyZWF0ZWQgZnJvbVxuICogY2F0ZWdvcmljYWwgY29sb3JtYXAgb3B0aW9ucy5cbiAqIE5PVEU6IHRoaXMgaW1wbGVtZW50YXRpb24gd2lsbCBjYWNoZSBwcm9taXNlIHJlamVjdGlvbnMgYXMgd2VsbCwgYnV0IHNpbmNlIHRoZXNlIGFyZSBzbWFsbCBmaWxlc1xuICogb24gdGhlIENETiwgdGhhdCdzIGFuIGFjY2VwdGFibGUgcmlzayBmb3IgdGhlIHRpbWUgYmVpbmcuXG4gKi9cbmNvbnN0IG1lbW9pemVkTG9hZENvbG9ybWFwOiAoY29sb3JtYXBJZDogc3RyaW5nKSA9PiBQcm9taXNlPENvbG9ybWFwSW1hZ2VEYXRhIHwgbnVsbD4gfCBudWxsID1cbiAgbWVtb2l6ZSgoY29sb3JtYXBJZDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGNvbG9ybWFwSWQgPT09IENBVEVHT1JJQ0FMX0NPTE9STUFQX0lEKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxvYWRDb2xvcm1hcChjb2xvcm1hcElkKTtcbiAgICB9XG4gIH0pO1xuXG4vKipcbiAqIExvYWQgUE5HIGNvbG9ybWFwLlxuICogU2luY2UgdGhlIGNvbG9ybWFwIGZpbGVzIGFyZSBzbyBzbWFsbCAoY291cGxlIGh1bmRyZWQgYnl0ZXMpLCB3ZSBsb2FkIHRoZW0gYWx3YXlzLCBldmVuIGZvciBhblxuICogUkdCIGNvbXBvc2l0ZSB3aGVyZSB0aGUgY29sb3JtYXAgd29uJ3QgYmUgdXNlZC4gQWZ0ZXIgdGhlIGZpcnN0IGxvYWQsIHRoZSBjb2xvcm1hcCBzaG91bGQgYmVcbiAqIGxvYWRlZCBmcm9tIHRoZSBkaXNrIGNhY2hlLiBCeSBsb2FkaW5nIGFsd2F5cywgd2UgY2FuIHByZXZlbnQgdW5uZWNlc3NhcmlseSB0cmlnZ2VyaW5nXG4gKiBnZXRUaWxlRGF0YSwgd2hpY2ggcmVkdWNlcyBmbGFzaGluZyBmcm9tIHJlbG9hZGluZyB0aGUgaW1hZ2VzIG9uIHRoZSBHUFUuXG4gKlxuICogQHBhcmFtIGNvbG9ybWFwSWQgICAgICBJRCBvZiBjb2xvcm1hcCBQTkdcbiAqXG4gKiBAcmV0dXJucyBpbWFnZSBvYmplY3QgdG8gcGFzcyB0byBUZXh0dXJlMkQgY29uc3RydWN0b3JcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZENvbG9ybWFwKGNvbG9ybWFwSWQ6IHN0cmluZyk6IFByb21pc2U8Q29sb3JtYXBJbWFnZURhdGEgfCBudWxsPiB7XG4gIGlmICghY29sb3JtYXBJZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcmVxdWVzdCA9IGF3YWl0IGdldEFzc2V0UmVxdWVzdCh7XG4gICAgdXJsOiBSYXN0ZXJMYXllclJlc291cmNlcy5yYXN0ZXJDb2xvck1hcChjb2xvcm1hcElkKSxcbiAgICByYXN0ZXJTZXJ2ZXJVcmw6ICcnLFxuICAgIG9wdGlvbnM6IHt9XG4gIH0pO1xuICByZXR1cm4gbG9hZEltYWdlKHJlcXVlc3QudXJsLCBDT0xPUk1BUF9URVhUVVJFX1BBUkFNRVRFUlMsIHJlcXVlc3Qub3B0aW9ucyk7XG59XG5cbi8qKlxuICogR2V0IHRoZSByZXF1ZXN0IGRhdGEgZm9yIGxvYWRpbmcgYSBzaW5nbGUgb3IgbXVsdGkgYXNzZXQgU1RBQyBtZXRhZGF0YSBvYmplY3QuXG4gKiBAcGFyYW0gb3B0aW9ucyBTVEFDIG1ldGFkYXRhIG9iamVjdCBhbmQgdXNlci1kZWZpbmVkIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBJbWFnZSBkYXRhLCBvciBudWxsIGlmIHRoZSBTVEFDIG1ldGFkYXRhIG9iamVjdCBpcyBub3Qgc3VwcG9ydGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U1RBQ0ltYWdlUmVxdWVzdHMoXG4gIG9wdGlvbnM6IEdldFRpbGVEYXRhUHJvcHNcbik6IFByb21pc2U8QXNzZXRSZXF1ZXN0RGF0YVtdIHwgbnVsbD4ge1xuICBjb25zdCB7bG9hZEFzc2V0SWRzfSA9IG9wdGlvbnM7XG5cbiAgaWYgKGxvYWRBc3NldElkcy5sZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgZ2V0U2luZ2xlQXNzZXRTVEFDUmVxdWVzdChvcHRpb25zKTtcbiAgICByZXR1cm4gcmVxdWVzdCA/IFtyZXF1ZXN0XSA6IG51bGw7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgZ2V0TXVsdGlBc3NldFNUQUNSZXF1ZXN0KG9wdGlvbnMpO1xufVxuXG4vLyBUT0RPOiBpbWFnZSBsb2FkaW5nIHNob3VsZCByZWFsbHkgYmUgX2RyaXZlbiBieSB0aGUgbW9kdWxlc19cbi8vIEUuZy4gdGhlIHVzZXIgY2hvb3NlcyB3aGF0IGtpbmQgb2YgcGlwZWxpbmUgdGhleSB3YW50IG9uIHRoZSBHUFUsIHRoZW4gZnJvbSB0aG9zZSBtb2R1bGVzIHdlIGNhblxuLy8gc2VlIHdoZXRoZXIgdGhlIHVzZXIgd2FudHMgdGhlIHBhbnNoYXJwZW5lZCBiYW5kLCBjb2xvcm1hcCwgZXRjXG4vKipcbiAqIExvYWQgaW1hZ2VzIGRlZmluZWQgYnkgYSBTVEFDIG1ldGFkYXRhIG9iamVjdCBwbHVzIHVzZXItZGVmaW5lZCBwYXJhbWV0ZXJzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU1RBQ0ltYWdlRGF0YShyZXF1ZXN0czogQXNzZXRSZXF1ZXN0RGF0YVtdKTogUHJvbWlzZTxJbWFnZURhdGE+IHtcbiAgcmV0dXJuIHJlcXVlc3RzLmxlbmd0aCA9PT0gMSA/IGxvYWRTaW5nbGVBc3NldFNUQUMocmVxdWVzdHNbMF0pIDogbG9hZE11bHRpQXNzZXRTVEFDKHJlcXVlc3RzKTtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRoYXQgZm9ybXMgYW4gYXNzZXQgcmVxdWVzdCBiYXNlZCBvbiBnaXZlbiBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXNzZXRSZXF1ZXN0KHtcbiAgdXJsLFxuICByYXN0ZXJTZXJ2ZXJVcmwsXG4gIHBhcmFtcyxcbiAgb3B0aW9ucyxcbiAgdXNlTWFzayA9IHRydWUsXG4gIHJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlc1xufToge1xuICB1cmw6IHN0cmluZztcbiAgcmFzdGVyU2VydmVyVXJsOiBzdHJpbmc7XG4gIHBhcmFtcz86IFVSTFNlYXJjaFBhcmFtcyB8IG51bGw7XG4gIG9wdGlvbnM6IFJlcXVlc3RJbml0O1xuICB1c2VNYXNrPzogYm9vbGVhbjtcbiAgcmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzPzogbnVtYmVyW10gfCBudWxsO1xufSk6IFByb21pc2U8QXNzZXRSZXF1ZXN0RGF0YT4ge1xuICBjb25zdCByZXF1ZXN0VXJsID0gdXJsO1xuICBjb25zdCByZXF1ZXN0UGFyYW1zID0gcGFyYW1zID8/IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gIGNvbnN0IGFzc2V0VXJsID0gcmVxdWVzdFBhcmFtcyA/IGAke3JlcXVlc3RVcmx9PyR7cmVxdWVzdFBhcmFtcy50b1N0cmluZygpfWAgOiByZXF1ZXN0VXJsO1xuICByZXR1cm4ge1xuICAgIHVybDogYXNzZXRVcmwsXG4gICAgcmFzdGVyU2VydmVyVXJsLFxuICAgIG9wdGlvbnM6IHJlcXVlc3RPcHRpb25zLFxuICAgIHVzZU1hc2ssXG4gICAgcmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzXG4gIH07XG59XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiBmb3IgZm9ybWluZyBhIHJlcXVlc3QgZm9yIGEgc2luZ2xlIGFzc2V0IFNUQUMgbWV0YWRhdGEgb2JqZWN0LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eSwgbWF4LXN0YXRlbWVudHNcbmFzeW5jIGZ1bmN0aW9uIGdldFNpbmdsZUFzc2V0U1RBQ1JlcXVlc3QoXG4gIG9wdGlvbnM6IEdldFRpbGVEYXRhUHJvcHNcbik6IFByb21pc2U8QXNzZXRSZXF1ZXN0RGF0YSB8IG51bGw+IHtcbiAgY29uc3Qge1xuICAgIHN0YWMsXG4gICAgbG9hZEFzc2V0SWRzLFxuICAgIGxvYWRCYW5kSW5kZXhlcyxcbiAgICBzaWduYWwsXG4gICAgdXNlU1RBQ1NlYXJjaGluZyxcbiAgICBpbmRleDoge3gsIHksIHp9LFxuICAgIHN0YWNTZWFyY2hQcm92aWRlcixcbiAgICBzdGFydERhdGUsXG4gICAgZW5kRGF0ZSxcbiAgICBfc3RhY1F1ZXJ5XG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHVzZU1hc2sgPSB0cnVlO1xuXG4gIC8vIE9ubHkgYSBzaW5nbGUgVVJMIGJlY2F1c2Ugb25seSBhIHNpbmdsZSBhc3NldFxuICBsZXQgdXJsSW5mbzoge3VybDogc3RyaW5nOyByYXN0ZXJTZXJ2ZXJVcmw6IHN0cmluZ30gfCBudWxsID0gbnVsbDtcbiAgbGV0IHVybFBhcmFtczogVVJMU2VhcmNoUGFyYW1zIHwgbnVsbCA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgbGV0IHJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlczogbnVtYmVyW10gfCBudWxsID0gbG9hZEJhbmRJbmRleGVzO1xuICBpZiAodXNlU1RBQ1NlYXJjaGluZyAmJiBzdGFjLnR5cGUgIT09ICdGZWF0dXJlJykge1xuICAgIHVybFBhcmFtcyA9IGdldFN0YWNBcGlVcmxQYXJhbXMoe1xuICAgICAgc3RhYyxcbiAgICAgIHN0YWNTZWFyY2hQcm92aWRlcixcbiAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGUsXG4gICAgICBtYXNrOiB1c2VNYXNrLFxuICAgICAgbG9hZEFzc2V0SWRzLFxuICAgICAgX3N0YWNRdWVyeVxuICAgIH0pO1xuICAgIHVybEluZm8gPSBnZXRUaXRpbGVyVXJsKHtzdGFjLCB1c2VTVEFDU2VhcmNoaW5nLCB4LCB5LCB6fSk7XG4gIH0gZWxzZSBpZiAoc3RhYy50eXBlID09PSAnRmVhdHVyZScpIHtcbiAgICAvLyBzdGFjIGlzIGFuIEl0ZW1cbiAgICB1cmxQYXJhbXMgPSBnZXRTaW5nbGVDT0dVcmxQYXJhbXMoe1xuICAgICAgc3RhYyxcbiAgICAgIGxvYWRBc3NldElkOiBsb2FkQXNzZXRJZHNbMF0sXG4gICAgICBsb2FkQmFuZEluZGV4ZXMsXG4gICAgICBtYXNrOiB1c2VNYXNrXG4gICAgfSk7XG4gICAgdXJsSW5mbyA9IGdldFRpdGlsZXJVcmwoe3N0YWMsIHVzZVNUQUNTZWFyY2hpbmcsIHgsIHksIHp9KTtcbiAgICByZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXMgPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKCF1cmxJbmZvLnVybCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGdldEFzc2V0UmVxdWVzdCh7XG4gICAgLi4udXJsSW5mbyxcbiAgICBwYXJhbXM6IHVybFBhcmFtcyxcbiAgICBvcHRpb25zOiB7c2lnbmFsfSxcbiAgICB1c2VNYXNrLFxuICAgIHJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlc1xuICB9KTtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciBmb3JtaW5nIHJlcXVlc3RzIGZvciBhIG11bHRpIGFzc2V0IFNUQUMgbWV0YWRhdGEgb2JqZWN0LlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRNdWx0aUFzc2V0U1RBQ1JlcXVlc3QoXG4gIG9wdGlvbnM6IEdldFRpbGVEYXRhUHJvcHNcbik6IFByb21pc2U8QXNzZXRSZXF1ZXN0RGF0YVtdIHwgbnVsbD4ge1xuICBjb25zdCB7XG4gICAgc3RhYyxcbiAgICBsb2FkQXNzZXRJZHMsXG4gICAgbG9hZEJhbmRJbmRleGVzLFxuICAgIHNpZ25hbCxcbiAgICB1c2VTVEFDU2VhcmNoaW5nLFxuICAgIHN0YWNTZWFyY2hQcm92aWRlcixcbiAgICBzdGFydERhdGUsXG4gICAgZW5kRGF0ZSxcbiAgICBpbmRleDoge3gsIHksIHp9LFxuICAgIF9zdGFjUXVlcnlcbiAgfSA9IG9wdGlvbnM7XG5cbiAgLy8gTXVsdGlwbGUgdXJscywgb25lIGZvciBlYWNoIGFzc2V0XG4gIGxldCByZXF1ZXN0RGF0YToge1xuICAgIHVybDogc3RyaW5nO1xuICAgIHJhc3RlclNlcnZlclVybDogc3RyaW5nO1xuICAgIHBhcmFtczogVVJMU2VhcmNoUGFyYW1zIHwgbnVsbDtcbiAgICBvcHRpb25zPzogUmVxdWVzdEluaXQ7XG4gIH1bXSA9IFtdO1xuXG4gIC8vIFdlIGFzc3VtZSB0aGF0IHRoZXJlJ3Mgb25seSBvbmUgdmFsaWRpdHkgbWFzayBmb3IgdGhlIGVudGlyZSBhc3NldCwgYW5kIHRoZXJlZm9yZSBhbnkgb2YgdGhlXG4gIC8vIHJlcXVlc3RzIHdvdWxkIHJldHVybiB0aGUgc2FtZSB2YWxpZGl0eSBiaXRtYXAuIFRoZXJlZm9yZSB3ZSBvbmx5IHJlcXVlc3QgYSBtYXNrIGZvciB0aGUgZmlyc3RcbiAgLy8gYXNzZXRcbiAgY29uc3QgcmVxdWVzdE1hc2s6IGJvb2xlYW5bXSA9IG5ldyBBcnJheShsb2FkQXNzZXRJZHMubGVuZ3RoKS5maWxsKGZhbHNlKTtcbiAgcmVxdWVzdE1hc2tbMF0gPSB0cnVlO1xuXG4gIGlmICh1c2VTVEFDU2VhcmNoaW5nICYmIHN0YWMudHlwZSAhPT0gJ0ZlYXR1cmUnKSB7XG4gICAgcmVxdWVzdERhdGEgPSB6aXAobG9hZEFzc2V0SWRzLCByZXF1ZXN0TWFzaykubWFwKChbYXNzZXRJZCwgbWFza10pID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IGdldFN0YWNBcGlVcmxQYXJhbXMoe1xuICAgICAgICBzdGFjLFxuICAgICAgICBzdGFjU2VhcmNoUHJvdmlkZXIsXG4gICAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgICAgZW5kRGF0ZSxcbiAgICAgICAgbWFzayxcbiAgICAgICAgbG9hZEFzc2V0SWRzOiBbYXNzZXRJZF0sXG4gICAgICAgIF9zdGFjUXVlcnlcbiAgICAgIH0pO1xuICAgICAgY29uc3QgdXJsSW5mbyA9IGdldFRpdGlsZXJVcmwoe3N0YWMsIHVzZVNUQUNTZWFyY2hpbmcsIHgsIHksIHp9KTtcbiAgICAgIHJldHVybiB7Li4udXJsSW5mbywgcGFyYW1zfTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChzdGFjLnR5cGUgPT09ICdGZWF0dXJlJykge1xuICAgIHJlcXVlc3REYXRhID0gemlwMyhsb2FkQXNzZXRJZHMsIGxvYWRCYW5kSW5kZXhlcywgcmVxdWVzdE1hc2spLm1hcChcbiAgICAgIChbYXNzZXRJZCwgYmFuZEluZGV4LCBtYXNrXSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBnZXRTaW5nbGVDT0dVcmxQYXJhbXMoe1xuICAgICAgICAgIHN0YWMsXG4gICAgICAgICAgbG9hZEFzc2V0SWQ6IGFzc2V0SWQsXG4gICAgICAgICAgbG9hZEJhbmRJbmRleGVzOiBbYmFuZEluZGV4XSxcbiAgICAgICAgICBtYXNrXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB1cmxJbmZvID0gZ2V0VGl0aWxlclVybCh7c3RhYywgdXNlU1RBQ1NlYXJjaGluZywgeCwgeSwgen0pO1xuICAgICAgICByZXR1cm4gey4uLnVybEluZm8sIHBhcmFtc307XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc1ZhbGlkUmVxdWVzdERhdGEocmVxdWVzdERhdGEpKSB7XG4gICAgcmV0dXJuIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcmVxdWVzdERhdGEubWFwKHJlcXVlc3QgPT5cbiAgICAgICAgZ2V0QXNzZXRSZXF1ZXN0KHsuLi5yZXF1ZXN0LCBvcHRpb25zOiByZXF1ZXN0Lm9wdGlvbnMgPz8ge3NpZ25hbH19KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBMb2FkIGltYWdlIGRhdGEgd2hlbiBjb25zb2xpZGF0ZWQgaW4gYmFuZHMgd2l0aGluIGEgc2luZ2xlIFNUQUMgQXNzZXRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZFNpbmdsZUFzc2V0U1RBQyhyZXF1ZXN0OiBBc3NldFJlcXVlc3REYXRhKTogUHJvbWlzZTxJbWFnZURhdGE+IHtcbiAgY29uc3QgaW1hZ2VCYW5kcyA9IGF3YWl0IGxvYWROcHlBcnJheShyZXF1ZXN0LCB0cnVlKTtcblxuICBpZiAoIWltYWdlQmFuZHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW1hZ2VCYW5kc1xuICAgIH07XG4gIH1cblxuICBjb25zdCBpbWFnZU1hc2sgPSAocmVxdWVzdC51c2VNYXNrICYmIGltYWdlQmFuZHMucG9wKCkpIHx8IG51bGw7XG4gIGxldCBtYXBwZWRJbWFnZUJhbmRzID0gaW1hZ2VCYW5kcztcbiAgaWYgKHJlcXVlc3QucmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzKSB7XG4gICAgbWFwcGVkSW1hZ2VCYW5kcyA9IHJlcXVlc3QucmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzLm1hcChpID0+IGltYWdlQmFuZHNbaV0pO1xuICB9XG4gIHJldHVybiB7aW1hZ2VCYW5kczogbWFwcGVkSW1hZ2VCYW5kcywgaW1hZ2VNYXNrfTtcbn1cblxuLyoqXG4gKiBMb2FkIGltYWdlIGRhdGEgd2hlbiBzcGxpdCBhbW9uZyBtdWx0aXBsZSBTVEFDIEFzc2V0c1xuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkTXVsdGlBc3NldFNUQUMocmVxdWVzdHM6IEFzc2V0UmVxdWVzdERhdGFbXSk6IFByb21pc2U8SW1hZ2VEYXRhPiB7XG4gIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChyZXF1ZXN0cy5tYXAocmVxdWVzdCA9PiBsb2FkTnB5QXJyYXkocmVxdWVzdCwgdHJ1ZSkpKTtcbiAgLy8gVGhlIGZpcnN0IHJlcXVlc3QgaW5jbHVkZXMgYSBtYXNrXG4gIGNvbnN0IGltYWdlTWFzayA9IHJlc3VsdHNbMF0/LnBvcCgpIHx8IG51bGw7XG4gIGNvbnN0IGltYWdlQmFuZHMgPSByZXN1bHRzLmZsYXQoKS5maWx0ZXIoYmFuZCA9PiBiYW5kICE9PSBudWxsKSBhcyBJbWFnZURhdGFbJ2ltYWdlQmFuZHMnXTtcbiAgcmV0dXJuIHtpbWFnZUJhbmRzLCBpbWFnZU1hc2t9O1xufVxuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciB0d28gYXJyYXlzIHNpbXVsdGFuZW91c2x5LCBzaW1pbGFyIHRvIFB5dGhvbidzIHppcCBidWlsdGluXG4gKi9cbmZ1bmN0aW9uIHppcDxUMSwgVDI+KGE6IFQxW10sIGI6IFQyW10pOiBbVDEsIFQyXVtdIHtcbiAgcmV0dXJuIGEubWFwKChrLCBpKSA9PiBbaywgYltpXV0pO1xufVxuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciB0aHJlZSBhcnJheXMgc2ltdWx0YW5lb3VzbHksIHNpbWlsYXIgdG8gUHl0aG9uJ3MgemlwIGJ1aWx0aW5cbiAqL1xuZnVuY3Rpb24gemlwMzxUMSwgVDIsIFQzPihhOiBUMVtdLCBiOiBUMltdLCBjOiBUM1tdKTogW1QxLCBUMiwgVDNdW10ge1xuICByZXR1cm4gYS5tYXAoKGssIGkpID0+IFtrLCBiW2ldLCBjW2ldXSk7XG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhbGwgYXJyYXkgZWxlbWVudHMgYXJlIHN0cmluZ3NcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZFJlcXVlc3REYXRhKFxuICBhcnI6IHt1cmw6IHVua25vd247IHBhcmFtczogdW5rbm93bjsgb3B0aW9ucz86IHVua25vd259W11cbik6IGFyciBpcyB7dXJsOiBzdHJpbmc7IHBhcmFtczogVVJMU2VhcmNoUGFyYW1zOyBvcHRpb25zOiB1bmtub3dufVtdIHtcbiAgcmV0dXJuIGFyci5ldmVyeSh4ID0+IHR5cGVvZiB4Py51cmwgPT09ICdzdHJpbmcnICYmIHg/LnBhcmFtcyAhPT0gbnVsbCk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGJhc2U2NCBpbWFnZSBkYXRhIHVybCBmb3IgY2F0ZWdvcmljYWwgY29sb3JtYXBcbiAqIEBwYXJhbSBjYXRlZ29yaWNhbE9wdGlvbnMgLSBjb2xvciBtYXAgY29uZmlndXJhdGlvbiBhbmQgbWluLW1heCB2YWx1ZXMgb2YgY2F0ZWdvcmljYWwgYmFuZFxuICogQHJldHVybnMgYmFzZTY0IGltYWdlIGRhdGEgdXJsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYXRlZ29yaWNhbENvbG9ybWFwRGF0YVVybChcbiAgY2F0ZWdvcmljYWxPcHRpb25zOiBDYXRlZ29yaWNhbENvbG9ybWFwT3B0aW9uc1xuKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGJpdG1hcCA9IGdlbmVyYXRlQ2F0ZWdvcmljYWxCaXRtYXBBcnJheShjYXRlZ29yaWNhbE9wdGlvbnMpO1xuICBpZiAoIWJpdG1hcCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBnZXRJbWFnZURhdGFVUkwoYml0bWFwLCBDQVRFR09SSUNBTF9URVhUVVJFX1dJRFRILCAxKTtcbn1cblxuLyoqXG4gKiBMb2FkIHRlcnJhaW4gbWVzaCBmcm9tIHJhc3RlciB0aWxlIHNlcnZlclxuICogQHBhcmFtIHByb3BzIC0gcHJvcGVydGllcyB0byBsb2FkIHRlcnJhaW4gZGF0YVxuICogQHJldHVybnMgdGVycmFpbiBtZXNoIGRhdGFcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRUZXJyYWluKHByb3BzOiB7XG4gIGluZGV4OiB7eDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcn07XG4gIHNpZ25hbDogQWJvcnRTaWduYWw7XG4gIHJhc3RlclRpbGVTZXJ2ZXJVcmxzOiBzdHJpbmdbXTtcbiAgYm91bmRzRm9yR2VvbWV0cnk/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbn0pOiBQcm9taXNlPFRlcnJhaW5EYXRhIHwgbnVsbD4ge1xuICBjb25zdCB7XG4gICAgaW5kZXg6IHt4LCB5LCB6fSxcbiAgICBib3VuZHNGb3JHZW9tZXRyeSxcbiAgICBzaWduYWwsXG4gICAgcmFzdGVyVGlsZVNlcnZlclVybHNcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IG1lc2hNYXhFcnJvciA9IGdldE1lc2hNYXhFcnJvcih6LCBNRVNIX01VTFRJUExJRVIpO1xuICBjb25zdCB0ZXJyYWluVXJsSW5mbyA9IGdldFRlcnJhaW5VcmwocmFzdGVyVGlsZVNlcnZlclVybHMsIHgsIHksIHosIG1lc2hNYXhFcnJvcik7XG4gIGNvbnN0IGxvYWRlck9wdGlvbnMgPSBnZXRMb2FkZXJPcHRpb25zKCk7XG4gIGNvbnN0IG51bUF0dGVtcHRzID0gMSArIGdldEFwcGxpY2F0aW9uQ29uZmlnKCkucmFzdGVyU2VydmVyTWF4UmV0cmllcztcblxuICBjb25zdCBtZXNoID0gYXdhaXQgZ2V0UmVxdWVzdFRocm90dGxlKCkudGhyb3R0bGVSZXF1ZXN0KFxuICAgIHRlcnJhaW5VcmxJbmZvLnJhc3RlclNlcnZlclVybCxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8IG51bUF0dGVtcHRzOyBhdHRlbXB0KyspIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gKGF3YWl0IGxvYWQodGVycmFpblVybEluZm8udXJsLCBRdWFudGl6ZWRNZXNoTG9hZGVyLCB7XG4gICAgICAgICAgICBmZXRjaDoge3NpZ25hbH0sXG4gICAgICAgICAgICAncXVhbnRpemVkLW1lc2gnOiB7XG4gICAgICAgICAgICAgIC4uLmxvYWRlck9wdGlvbnNbJ3F1YW50aXplZC1tZXNoJ10sXG4gICAgICAgICAgICAgIGJvdW5kczogYm91bmRzRm9yR2VvbWV0cnksXG4gICAgICAgICAgICAgIHNraXJ0SGVpZ2h0OiBtZXNoTWF4RXJyb3IgKiBTS0lSVF9IRUlHSFRfTVVMVElQTElFUlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKSBhcyBQcm9taXNlPFRlcnJhaW5EYXRhPjtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBSZXRyeSBpZiBTZXJ2aWNlIFRlbXBvcmFyaWx5IFVuYXZhaWxhYmxlIDUwMyBlcnJvciBldGMuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXR0ZW1wdCA8IG51bUF0dGVtcHRzICYmXG4gICAgICAgICAgICBlcnJvciBpbnN0YW5jZW9mIEZldGNoRXJyb3IgJiZcbiAgICAgICAgICAgIGdldEFwcGxpY2F0aW9uQ29uZmlnKCkucmFzdGVyU2VydmVyU2VydmVyRXJyb3JzVG9SZXRyeT8uaW5jbHVkZXMoXG4gICAgICAgICAgICAgIGVycm9yLnJlc3BvbnNlPy5zdGF0dXMgYXMgbnVtYmVyXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBhd2FpdCBzbGVlcChnZXRBcHBsaWNhdGlvbkNvbmZpZygpLnJhc3RlclNlcnZlclJldHJ5RGVsYXkpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICk7XG5cbiAgcmV0dXJuIG1lc2g7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT0EsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBRUEsSUFBQUksWUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBRUEsSUFBQU8sT0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsU0FBQSxHQUFBUixPQUFBO0FBTUEsSUFBQVMsZ0JBQUEsR0FBQVQsT0FBQTtBQVNBLElBQUFVLElBQUEsR0FBQVYsT0FBQTtBQVFBLElBQUFXLGdCQUFBLEdBQUFYLE9BQUE7QUFBc0QsU0FBQVksUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFkLE1BQUEsQ0FBQWUsZ0JBQUEsQ0FBQWxCLENBQUEsRUFBQUcsTUFBQSxDQUFBYyx5QkFBQSxDQUFBZixDQUFBLEtBQUFILE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLEdBQUFhLE9BQUEsV0FBQWQsQ0FBQSxJQUFBRSxNQUFBLENBQUFnQixjQUFBLENBQUFuQixDQUFBLEVBQUFDLENBQUEsRUFBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBTixDQUFBLEVBQUFELENBQUEsaUJBQUFELENBQUEsSUF2Q3REO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTb0IsZUFBZUEsQ0FBQ0MsTUFBa0IsRUFBRUMsS0FBYSxFQUFFQyxNQUFjLEVBQWlCO0VBQ2hHLElBQU1DLE1BQU0sR0FBR0MsUUFBUSxDQUFDQyxhQUFhLENBQUMsUUFBUSxDQUFDO0VBQy9DLElBQUksQ0FBQ0YsTUFBTSxDQUFDRyxVQUFVLEVBQUU7SUFDdEIsT0FBTyxJQUFJO0VBQ2I7RUFDQUgsTUFBTSxDQUFDSSxZQUFZLENBQUMsT0FBTyxLQUFBQyxNQUFBLENBQUtQLEtBQUssQ0FBRSxDQUFDO0VBQ3hDRSxNQUFNLENBQUNJLFlBQVksQ0FBQyxRQUFRLEtBQUFDLE1BQUEsQ0FBS04sTUFBTSxDQUFFLENBQUM7RUFDMUMsSUFBTU8sR0FBRyxHQUFHTixNQUFNLENBQUNHLFVBQVUsQ0FBQyxJQUFJLENBQUM7RUFDbkMsSUFBSSxDQUFDRyxHQUFHLEVBQUU7SUFDUixPQUFPLElBQUk7RUFDYjtFQUNBLEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHVCxLQUFLLEVBQUVTLENBQUMsRUFBRSxFQUFFO0lBQzlCLElBQUFDLGdCQUFBLEdBQXFCWCxNQUFNLENBQUNZLFFBQVEsQ0FBQ0YsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7TUFBQUcsaUJBQUEsT0FBQUMsZUFBQSxhQUFBSCxnQkFBQTtNQUEvQy9CLENBQUMsR0FBQWlDLGlCQUFBO01BQUVFLENBQUMsR0FBQUYsaUJBQUE7TUFBRUcsQ0FBQyxHQUFBSCxpQkFBQTtNQUFFSSxDQUFDLEdBQUFKLGlCQUFBO0lBQ2pCLElBQUlJLENBQUMsS0FBSyxDQUFDLEVBQUU7TUFDWFIsR0FBRyxDQUFDUyxTQUFTLFVBQUFWLE1BQUEsQ0FBVTVCLENBQUMsUUFBQTRCLE1BQUEsQ0FBS08sQ0FBQyxRQUFBUCxNQUFBLENBQUtRLENBQUMsTUFBRztNQUN2Q1AsR0FBRyxDQUFDVSxRQUFRLENBQUNULENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQjtFQUNGO0VBQ0EsT0FBT1AsTUFBTSxDQUFDaUIsU0FBUyxDQUFDLFdBQVcsQ0FBQztBQUN0Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQyxlQUFlLEdBQUcsR0FBRzs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsdUJBQXVCLEdBQUcsQ0FBQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQSxTQU9zQkMsVUFBVUEsQ0FBQUMsRUFBQSxFQUFBQyxHQUFBLEVBQUFDLEdBQUE7RUFBQSxPQUFBQyxXQUFBLENBQUFyQyxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQW9CaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBLFNBQUFtQyxZQUFBO0VBQUFBLFdBQUEsT0FBQUMsa0JBQUEsMkJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQXBCTyxTQUFBQyxRQUNMQyxhQUFpQyxFQUNqQ0MsVUFBa0IsRUFDbEJDLGtCQUE4QztJQUFBLElBQUFDLGtCQUFBLEVBQUFDLG1CQUFBLEVBQUFDLFVBQUEsRUFBQUMsUUFBQSxFQUFBQyxhQUFBO0lBQUEsT0FBQVYsWUFBQSxZQUFBVyxJQUFBLFVBQUFDLFNBQUFDLFFBQUE7TUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtRQUFBO1VBQUFGLFFBQUEsQ0FBQUUsSUFBQTtVQUFBLE9BR1RDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLENBQy9DQyxpQkFBaUIsQ0FBQ2YsYUFBYSxDQUFDLEVBQy9CQyxVQUFVLEtBQUtlLCtCQUF1QixJQUFJQyxvQkFBb0IsQ0FBQ2hCLFVBQVUsQ0FBQyxJQUFLLElBQUksQ0FDckYsQ0FBQztRQUFBO1VBQUFFLGtCQUFBLEdBQUFPLFFBQUEsQ0FBQVEsSUFBQTtVQUFBZCxtQkFBQSxPQUFBdEIsZUFBQSxhQUFBcUIsa0JBQUE7VUFIS0UsVUFBVSxHQUFBRCxtQkFBQTtVQUFFRSxRQUFRLEdBQUFGLG1CQUFBO1VBSXZCRyxhQUFhLEdBQUdELFFBQVE7VUFDNUIsSUFBSUwsVUFBVSxLQUFLZSwrQkFBdUIsRUFBRTtZQUMxQ1QsYUFBYSxHQUFHLElBQUFZLDRDQUFrQyxFQUFDakIsa0JBQWtCLENBQUM7VUFDeEU7VUFBQyxPQUFBUSxRQUFBLENBQUFVLE1BQUEsV0FBQTdELGFBQUEsQ0FBQUEsYUFBQSxLQUVJOEMsVUFBVTtZQUNiRSxhQUFhLEVBQWJBO1VBQWE7UUFBQTtRQUFBO1VBQUEsT0FBQUcsUUFBQSxDQUFBVyxJQUFBO01BQUE7SUFBQSxHQUFBdEIsT0FBQTtFQUFBLENBRWhCO0VBQUEsT0FBQUosV0FBQSxDQUFBckMsS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUFVRCxJQUFNeUQsb0JBQXNGLEdBQzFGLElBQUFLLG1CQUFPLEVBQUMsVUFBQ3JCLFVBQWtCLEVBQUs7RUFDOUIsSUFBSUEsVUFBVSxLQUFLZSwrQkFBdUIsRUFBRTtJQUMxQyxPQUFPLElBQUk7RUFDYixDQUFDLE1BQU07SUFDTCxPQUFPTyxZQUFZLENBQUN0QixVQUFVLENBQUM7RUFDakM7QUFDRixDQUFDLENBQUM7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVZBLFNBV2VzQixZQUFZQSxDQUFBQyxHQUFBO0VBQUEsT0FBQUMsYUFBQSxDQUFBbkUsS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUFhM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBLFNBQUFpRSxjQUFBO0VBQUFBLGFBQUEsT0FBQTdCLGtCQUFBLDJCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FiQSxTQUFBNEIsU0FBNEJ6QixVQUFrQjtJQUFBLElBQUEwQixPQUFBO0lBQUEsT0FBQTlCLFlBQUEsWUFBQVcsSUFBQSxVQUFBb0IsVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUFsQixJQUFBLEdBQUFrQixTQUFBLENBQUFqQixJQUFBO1FBQUE7VUFBQSxJQUN2Q1gsVUFBVTtZQUFBNEIsU0FBQSxDQUFBakIsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBaUIsU0FBQSxDQUFBVCxNQUFBLFdBQ04sSUFBSTtRQUFBO1VBQUFTLFNBQUEsQ0FBQWpCLElBQUE7VUFBQSxPQUdTa0IsZUFBZSxDQUFDO1lBQ3BDQyxHQUFHLEVBQUVDLHlCQUFvQixDQUFDQyxjQUFjLENBQUNoQyxVQUFVLENBQUM7WUFDcERpQyxlQUFlLEVBQUUsRUFBRTtZQUNuQkMsT0FBTyxFQUFFLENBQUM7VUFDWixDQUFDLENBQUM7UUFBQTtVQUpJUixPQUFPLEdBQUFFLFNBQUEsQ0FBQVgsSUFBQTtVQUFBLE9BQUFXLFNBQUEsQ0FBQVQsTUFBQSxXQUtOLElBQUFnQixtQkFBUyxFQUFDVCxPQUFPLENBQUNJLEdBQUcsRUFBRU0scUNBQTJCLEVBQUVWLE9BQU8sQ0FBQ1EsT0FBTyxDQUFDO1FBQUE7UUFBQTtVQUFBLE9BQUFOLFNBQUEsQ0FBQVIsSUFBQTtNQUFBO0lBQUEsR0FBQUssUUFBQTtFQUFBLENBQzVFO0VBQUEsT0FBQUQsYUFBQSxDQUFBbkUsS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUFBQSxTQU9xQjhFLG9CQUFvQkEsQ0FBQUMsR0FBQTtFQUFBLE9BQUFDLHFCQUFBLENBQUFsRixLQUFBLE9BQUFFLFNBQUE7QUFBQSxFQWExQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQSxTQUFBZ0Ysc0JBQUE7RUFBQUEscUJBQUEsT0FBQTVDLGtCQUFBLDJCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FoQk8sU0FBQTJDLFNBQ0xOLE9BQXlCO0lBQUEsSUFBQU8sWUFBQSxFQUFBZixPQUFBO0lBQUEsT0FBQTlCLFlBQUEsWUFBQVcsSUFBQSxVQUFBbUMsVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUFqQyxJQUFBLEdBQUFpQyxTQUFBLENBQUFoQyxJQUFBO1FBQUE7VUFFbEI4QixZQUFZLEdBQUlQLE9BQU8sQ0FBdkJPLFlBQVk7VUFBQSxNQUVmQSxZQUFZLENBQUNqRixNQUFNLEtBQUssQ0FBQztZQUFBbUYsU0FBQSxDQUFBaEMsSUFBQTtZQUFBO1VBQUE7VUFBQWdDLFNBQUEsQ0FBQWhDLElBQUE7VUFBQSxPQUNMaUMseUJBQXlCLENBQUNWLE9BQU8sQ0FBQztRQUFBO1VBQWxEUixPQUFPLEdBQUFpQixTQUFBLENBQUExQixJQUFBO1VBQUEsT0FBQTBCLFNBQUEsQ0FBQXhCLE1BQUEsV0FDTk8sT0FBTyxHQUFHLENBQUNBLE9BQU8sQ0FBQyxHQUFHLElBQUk7UUFBQTtVQUFBaUIsU0FBQSxDQUFBaEMsSUFBQTtVQUFBLE9BR3RCa0Msd0JBQXdCLENBQUNYLE9BQU8sQ0FBQztRQUFBO1VBQUEsT0FBQVMsU0FBQSxDQUFBeEIsTUFBQSxXQUFBd0IsU0FBQSxDQUFBMUIsSUFBQTtRQUFBO1FBQUE7VUFBQSxPQUFBMEIsU0FBQSxDQUFBdkIsSUFBQTtNQUFBO0lBQUEsR0FBQW9CLFFBQUE7RUFBQSxDQUMvQztFQUFBLE9BQUFELHFCQUFBLENBQUFsRixLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQUFBLFNBUXFCdUQsaUJBQWlCQSxDQUFBZ0MsR0FBQTtFQUFBLE9BQUFDLGtCQUFBLENBQUExRixLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQUl2QztBQUNBO0FBQ0E7QUFGQSxTQUFBd0YsbUJBQUE7RUFBQUEsa0JBQUEsT0FBQXBELGtCQUFBLDJCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FKTyxTQUFBbUQsU0FBaUNDLFFBQTRCO0lBQUEsT0FBQXJELFlBQUEsWUFBQVcsSUFBQSxVQUFBMkMsVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUF6QyxJQUFBLEdBQUF5QyxTQUFBLENBQUF4QyxJQUFBO1FBQUE7VUFBQSxPQUFBd0MsU0FBQSxDQUFBaEMsTUFBQSxXQUMzRDhCLFFBQVEsQ0FBQ3pGLE1BQU0sS0FBSyxDQUFDLEdBQUc0RixtQkFBbUIsQ0FBQ0gsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdJLGtCQUFrQixDQUFDSixRQUFRLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQUUsU0FBQSxDQUFBL0IsSUFBQTtNQUFBO0lBQUEsR0FBQTRCLFFBQUE7RUFBQSxDQUMvRjtFQUFBLE9BQUFELGtCQUFBLENBQUExRixLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQUFBLFNBS3FCc0UsZUFBZUEsQ0FBQXlCLEdBQUE7RUFBQSxPQUFBQyxnQkFBQSxDQUFBbEcsS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUE2QnJDO0FBQ0E7QUFDQTtBQUNBO0FBQUEsU0FBQWdHLGlCQUFBO0VBQUFBLGdCQUFBLE9BQUE1RCxrQkFBQSwyQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBaENPLFNBQUEyRCxTQUFBQyxJQUFBO0lBQUEsSUFBQTNCLEdBQUEsRUFBQUcsZUFBQSxFQUFBeUIsTUFBQSxFQUFBeEIsT0FBQSxFQUFBeUIsWUFBQSxFQUFBQyxPQUFBLEVBQUFDLDJCQUFBLEVBQUFDLFVBQUEsRUFBQUMsYUFBQSxFQUFBQyxjQUFBLEVBQUFDLFFBQUE7SUFBQSxPQUFBckUsWUFBQSxZQUFBVyxJQUFBLFVBQUEyRCxVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQXpELElBQUEsR0FBQXlELFNBQUEsQ0FBQXhELElBQUE7UUFBQTtVQUNMbUIsR0FBRyxHQUFBMkIsSUFBQSxDQUFIM0IsR0FBRyxFQUNIRyxlQUFlLEdBQUF3QixJQUFBLENBQWZ4QixlQUFlLEVBQ2Z5QixNQUFNLEdBQUFELElBQUEsQ0FBTkMsTUFBTSxFQUNOeEIsT0FBTyxHQUFBdUIsSUFBQSxDQUFQdkIsT0FBTyxFQUFBeUIsWUFBQSxHQUFBRixJQUFBLENBQ1BHLE9BQU8sRUFBUEEsT0FBTyxHQUFBRCxZQUFBLGNBQUcsSUFBSSxHQUFBQSxZQUFBLEVBQ2RFLDJCQUEyQixHQUFBSixJQUFBLENBQTNCSSwyQkFBMkI7VUFTckJDLFVBQVUsR0FBR2hDLEdBQUc7VUFDaEJpQyxhQUFhLEdBQUdMLE1BQU0sYUFBTkEsTUFBTSxjQUFOQSxNQUFNLEdBQUksSUFBSVUsZUFBZSxDQUFDLENBQUM7VUFDL0NKLGNBQWMsR0FBRzlCLE9BQU87VUFFeEIrQixRQUFRLEdBQUdGLGFBQWEsTUFBQXhGLE1BQUEsQ0FBTXVGLFVBQVUsT0FBQXZGLE1BQUEsQ0FBSXdGLGFBQWEsQ0FBQ00sUUFBUSxDQUFDLENBQUMsSUFBS1AsVUFBVTtVQUFBLE9BQUFLLFNBQUEsQ0FBQWhELE1BQUEsV0FDbEY7WUFDTFcsR0FBRyxFQUFFbUMsUUFBUTtZQUNiaEMsZUFBZSxFQUFmQSxlQUFlO1lBQ2ZDLE9BQU8sRUFBRThCLGNBQWM7WUFDdkJKLE9BQU8sRUFBUEEsT0FBTztZQUNQQywyQkFBMkIsRUFBM0JBO1VBQ0YsQ0FBQztRQUFBO1FBQUE7VUFBQSxPQUFBTSxTQUFBLENBQUEvQyxJQUFBO01BQUE7SUFBQSxHQUFBb0MsUUFBQTtFQUFBLENBQ0Y7RUFBQSxPQUFBRCxnQkFBQSxDQUFBbEcsS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUFBQSxTQU1jcUYseUJBQXlCQSxDQUFBMEIsR0FBQTtFQUFBLE9BQUFDLDBCQUFBLENBQUFsSCxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQTREeEM7QUFDQTtBQUNBO0FBRkEsU0FBQWdILDJCQUFBO0VBQUFBLDBCQUFBLE9BQUE1RSxrQkFBQSwyQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBNURBLFNBQUEyRSxTQUNFdEMsT0FBeUI7SUFBQSxJQUFBdUMsSUFBQSxFQUFBaEMsWUFBQSxFQUFBaUMsZUFBQSxFQUFBQyxNQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGNBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsa0JBQUEsRUFBQUMsU0FBQSxFQUFBQyxPQUFBLEVBQUFDLFVBQUEsRUFBQXhCLE9BQUEsRUFBQXlCLE9BQUEsRUFBQUMsU0FBQSxFQUFBekIsMkJBQUE7SUFBQSxPQUFBakUsWUFBQSxZQUFBVyxJQUFBLFVBQUFnRixVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQTlFLElBQUEsR0FBQThFLFNBQUEsQ0FBQTdFLElBQUE7UUFBQTtVQUd2QjhELElBQUksR0FVRnZDLE9BQU8sQ0FWVHVDLElBQUksRUFDSmhDLFlBQVksR0FTVlAsT0FBTyxDQVRUTyxZQUFZLEVBQ1ppQyxlQUFlLEdBUWJ4QyxPQUFPLENBUlR3QyxlQUFlLEVBQ2ZDLE1BQU0sR0FPSnpDLE9BQU8sQ0FQVHlDLE1BQU0sRUFDTkMsZ0JBQWdCLEdBTWQxQyxPQUFPLENBTlQwQyxnQkFBZ0IsRUFBQUMsY0FBQSxHQU1kM0MsT0FBTyxDQUxUdUQsS0FBSyxFQUFHWCxDQUFDLEdBQUFELGNBQUEsQ0FBREMsQ0FBQyxFQUFFQyxDQUFDLEdBQUFGLGNBQUEsQ0FBREUsQ0FBQyxFQUFFQyxDQUFDLEdBQUFILGNBQUEsQ0FBREcsQ0FBQyxFQUNmQyxrQkFBa0IsR0FJaEIvQyxPQUFPLENBSlQrQyxrQkFBa0IsRUFDbEJDLFNBQVMsR0FHUGhELE9BQU8sQ0FIVGdELFNBQVMsRUFDVEMsT0FBTyxHQUVMakQsT0FBTyxDQUZUaUQsT0FBTyxFQUNQQyxVQUFVLEdBQ1JsRCxPQUFPLENBRFRrRCxVQUFVO1VBR054QixPQUFPLEdBQUcsSUFBSSxFQUVwQjtVQUNJeUIsT0FBc0QsR0FBRyxJQUFJO1VBQzdEQyxTQUFpQyxHQUFHLElBQUlsQixlQUFlLENBQUMsQ0FBQztVQUN6RFAsMkJBQTRDLEdBQUdhLGVBQWU7VUFBQSxNQUM5REUsZ0JBQWdCLElBQUlILElBQUksQ0FBQ2lCLElBQUksS0FBSyxTQUFTO1lBQUFGLFNBQUEsQ0FBQTdFLElBQUE7WUFBQTtVQUFBO1VBQzdDMkUsU0FBUyxHQUFHLElBQUFLLHdCQUFtQixFQUFDO1lBQzlCbEIsSUFBSSxFQUFKQSxJQUFJO1lBQ0pRLGtCQUFrQixFQUFsQkEsa0JBQWtCO1lBQ2xCQyxTQUFTLEVBQVRBLFNBQVM7WUFDVEMsT0FBTyxFQUFQQSxPQUFPO1lBQ1BTLElBQUksRUFBRWhDLE9BQU87WUFDYm5CLFlBQVksRUFBWkEsWUFBWTtZQUNaMkMsVUFBVSxFQUFWQTtVQUNGLENBQUMsQ0FBQztVQUNGQyxPQUFPLEdBQUcsSUFBQVEsa0JBQWEsRUFBQztZQUFDcEIsSUFBSSxFQUFKQSxJQUFJO1lBQUVHLGdCQUFnQixFQUFoQkEsZ0JBQWdCO1lBQUVFLENBQUMsRUFBREEsQ0FBQztZQUFFQyxDQUFDLEVBQURBLENBQUM7WUFBRUMsQ0FBQyxFQUFEQTtVQUFDLENBQUMsQ0FBQztVQUFDUSxTQUFBLENBQUE3RSxJQUFBO1VBQUE7UUFBQTtVQUFBLE1BQ2xEOEQsSUFBSSxDQUFDaUIsSUFBSSxLQUFLLFNBQVM7WUFBQUYsU0FBQSxDQUFBN0UsSUFBQTtZQUFBO1VBQUE7VUFDaEM7VUFDQTJFLFNBQVMsR0FBRyxJQUFBUSwwQkFBcUIsRUFBQztZQUNoQ3JCLElBQUksRUFBSkEsSUFBSTtZQUNKc0IsV0FBVyxFQUFFdEQsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUM1QmlDLGVBQWUsRUFBZkEsZUFBZTtZQUNma0IsSUFBSSxFQUFFaEM7VUFDUixDQUFDLENBQUM7VUFDRnlCLE9BQU8sR0FBRyxJQUFBUSxrQkFBYSxFQUFDO1lBQUNwQixJQUFJLEVBQUpBLElBQUk7WUFBRUcsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7WUFBRUUsQ0FBQyxFQUFEQSxDQUFDO1lBQUVDLENBQUMsRUFBREEsQ0FBQztZQUFFQyxDQUFDLEVBQURBO1VBQUMsQ0FBQyxDQUFDO1VBQzFEbkIsMkJBQTJCLEdBQUcsSUFBSTtVQUFDMkIsU0FBQSxDQUFBN0UsSUFBQTtVQUFBO1FBQUE7VUFBQSxPQUFBNkUsU0FBQSxDQUFBckUsTUFBQSxXQUU1QixJQUFJO1FBQUE7VUFBQSxJQUdSa0UsT0FBTyxDQUFDdkQsR0FBRztZQUFBMEQsU0FBQSxDQUFBN0UsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBNkUsU0FBQSxDQUFBckUsTUFBQSxXQUNQLElBQUk7UUFBQTtVQUFBcUUsU0FBQSxDQUFBN0UsSUFBQTtVQUFBLE9BR0FrQixlQUFlLENBQUF2RSxhQUFBLENBQUFBLGFBQUEsS0FDdkIrSCxPQUFPO1lBQ1YzQixNQUFNLEVBQUU0QixTQUFTO1lBQ2pCcEQsT0FBTyxFQUFFO2NBQUN5QyxNQUFNLEVBQU5BO1lBQU0sQ0FBQztZQUNqQmYsT0FBTyxFQUFQQSxPQUFPO1lBQ1BDLDJCQUEyQixFQUEzQkE7VUFBMkIsRUFDNUIsQ0FBQztRQUFBO1VBQUEsT0FBQTJCLFNBQUEsQ0FBQXJFLE1BQUEsV0FBQXFFLFNBQUEsQ0FBQXZFLElBQUE7UUFBQTtRQUFBO1VBQUEsT0FBQXVFLFNBQUEsQ0FBQXBFLElBQUE7TUFBQTtJQUFBLEdBQUFvRCxRQUFBO0VBQUEsQ0FDSDtFQUFBLE9BQUFELDBCQUFBLENBQUFsSCxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQUFBLFNBS2NzRix3QkFBd0JBLENBQUFtRCxHQUFBO0VBQUEsT0FBQUMseUJBQUEsQ0FBQTVJLEtBQUEsT0FBQUUsU0FBQTtBQUFBO0FBc0V2QztBQUNBO0FBQ0E7QUFGQSxTQUFBMEksMEJBQUE7RUFBQUEseUJBQUEsT0FBQXRHLGtCQUFBLDJCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0F0RUEsU0FBQXFHLFNBQ0VoRSxPQUF5QjtJQUFBLElBQUF1QyxJQUFBLEVBQUFoQyxZQUFBLEVBQUFpQyxlQUFBLEVBQUFDLE1BQUEsRUFBQUMsZ0JBQUEsRUFBQUssa0JBQUEsRUFBQUMsU0FBQSxFQUFBQyxPQUFBLEVBQUFnQixlQUFBLEVBQUFyQixDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxFQUFBSSxVQUFBLEVBQUFnQixXQUFBLEVBQUFDLFdBQUE7SUFBQSxPQUFBekcsWUFBQSxZQUFBVyxJQUFBLFVBQUErRixVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQTdGLElBQUEsR0FBQTZGLFNBQUEsQ0FBQTVGLElBQUE7UUFBQTtVQUd2QjhELElBQUksR0FVRnZDLE9BQU8sQ0FWVHVDLElBQUksRUFDSmhDLFlBQVksR0FTVlAsT0FBTyxDQVRUTyxZQUFZLEVBQ1ppQyxlQUFlLEdBUWJ4QyxPQUFPLENBUlR3QyxlQUFlLEVBQ2ZDLE1BQU0sR0FPSnpDLE9BQU8sQ0FQVHlDLE1BQU0sRUFDTkMsZ0JBQWdCLEdBTWQxQyxPQUFPLENBTlQwQyxnQkFBZ0IsRUFDaEJLLGtCQUFrQixHQUtoQi9DLE9BQU8sQ0FMVCtDLGtCQUFrQixFQUNsQkMsU0FBUyxHQUlQaEQsT0FBTyxDQUpUZ0QsU0FBUyxFQUNUQyxPQUFPLEdBR0xqRCxPQUFPLENBSFRpRCxPQUFPLEVBQUFnQixlQUFBLEdBR0xqRSxPQUFPLENBRlR1RCxLQUFLLEVBQUdYLENBQUMsR0FBQXFCLGVBQUEsQ0FBRHJCLENBQUMsRUFBRUMsQ0FBQyxHQUFBb0IsZUFBQSxDQUFEcEIsQ0FBQyxFQUFFQyxDQUFDLEdBQUFtQixlQUFBLENBQURuQixDQUFDLEVBQ2ZJLFVBQVUsR0FDUmxELE9BQU8sQ0FEVGtELFVBQVUsRUFHWjtVQUNJZ0IsV0FLRCxHQUFHLEVBQUUsRUFFUjtVQUNBO1VBQ0E7VUFDTUMsV0FBc0IsR0FBRyxJQUFJRyxLQUFLLENBQUMvRCxZQUFZLENBQUNqRixNQUFNLENBQUMsQ0FBQ2lKLElBQUksQ0FBQyxLQUFLLENBQUM7VUFDekVKLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO1VBRXJCLElBQUl6QixnQkFBZ0IsSUFBSUgsSUFBSSxDQUFDaUIsSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUMvQ1UsV0FBVyxHQUFHTSxHQUFHLENBQUNqRSxZQUFZLEVBQUU0RCxXQUFXLENBQUMsQ0FBQ00sR0FBRyxDQUFDLFVBQUFDLEtBQUEsRUFBcUI7Y0FBQSxJQUFBQyxLQUFBLE9BQUFoSSxlQUFBLGFBQUErSCxLQUFBO2dCQUFuQkUsT0FBTyxHQUFBRCxLQUFBO2dCQUFFakIsSUFBSSxHQUFBaUIsS0FBQTtjQUM5RCxJQUFNbkQsTUFBTSxHQUFHLElBQUFpQyx3QkFBbUIsRUFBQztnQkFDakNsQixJQUFJLEVBQUpBLElBQUk7Z0JBQ0pRLGtCQUFrQixFQUFsQkEsa0JBQWtCO2dCQUNsQkMsU0FBUyxFQUFUQSxTQUFTO2dCQUNUQyxPQUFPLEVBQVBBLE9BQU87Z0JBQ1BTLElBQUksRUFBSkEsSUFBSTtnQkFDSm5ELFlBQVksRUFBRSxDQUFDcUUsT0FBTyxDQUFDO2dCQUN2QjFCLFVBQVUsRUFBVkE7Y0FDRixDQUFDLENBQUM7Y0FDRixJQUFNQyxPQUFPLEdBQUcsSUFBQVEsa0JBQWEsRUFBQztnQkFBQ3BCLElBQUksRUFBSkEsSUFBSTtnQkFBRUcsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7Z0JBQUVFLENBQUMsRUFBREEsQ0FBQztnQkFBRUMsQ0FBQyxFQUFEQSxDQUFDO2dCQUFFQyxDQUFDLEVBQURBO2NBQUMsQ0FBQyxDQUFDO2NBQ2hFLE9BQUExSCxhQUFBLENBQUFBLGFBQUEsS0FBVytILE9BQU87Z0JBQUUzQixNQUFNLEVBQU5BO2NBQU07WUFDNUIsQ0FBQyxDQUFDO1VBQ0osQ0FBQyxNQUFNLElBQUllLElBQUksQ0FBQ2lCLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDbENVLFdBQVcsR0FBR1csSUFBSSxDQUFDdEUsWUFBWSxFQUFFaUMsZUFBZSxFQUFFMkIsV0FBVyxDQUFDLENBQUNNLEdBQUcsQ0FDaEUsVUFBQUssS0FBQSxFQUFnQztjQUFBLElBQUFDLEtBQUEsT0FBQXBJLGVBQUEsYUFBQW1JLEtBQUE7Z0JBQTlCRixPQUFPLEdBQUFHLEtBQUE7Z0JBQUVDLFNBQVMsR0FBQUQsS0FBQTtnQkFBRXJCLElBQUksR0FBQXFCLEtBQUE7Y0FDeEIsSUFBTXZELE1BQU0sR0FBRyxJQUFBb0MsMEJBQXFCLEVBQUM7Z0JBQ25DckIsSUFBSSxFQUFKQSxJQUFJO2dCQUNKc0IsV0FBVyxFQUFFZSxPQUFPO2dCQUNwQnBDLGVBQWUsRUFBRSxDQUFDd0MsU0FBUyxDQUFDO2dCQUM1QnRCLElBQUksRUFBSkE7Y0FDRixDQUFDLENBQUM7Y0FDRixJQUFNUCxPQUFPLEdBQUcsSUFBQVEsa0JBQWEsRUFBQztnQkFBQ3BCLElBQUksRUFBSkEsSUFBSTtnQkFBRUcsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7Z0JBQUVFLENBQUMsRUFBREEsQ0FBQztnQkFBRUMsQ0FBQyxFQUFEQSxDQUFDO2dCQUFFQyxDQUFDLEVBQURBO2NBQUMsQ0FBQyxDQUFDO2NBQ2hFLE9BQUExSCxhQUFBLENBQUFBLGFBQUEsS0FBVytILE9BQU87Z0JBQUUzQixNQUFNLEVBQU5BO2NBQU07WUFDNUIsQ0FDRixDQUFDO1VBQ0g7VUFBQyxLQUVHeUQsa0JBQWtCLENBQUNmLFdBQVcsQ0FBQztZQUFBRyxTQUFBLENBQUE1RixJQUFBO1lBQUE7VUFBQTtVQUFBNEYsU0FBQSxDQUFBNUYsSUFBQTtVQUFBLE9BQ3BCQyxPQUFPLENBQUNDLEdBQUcsQ0FDdEJ1RixXQUFXLENBQUNPLEdBQUcsQ0FBQyxVQUFBakYsT0FBTztZQUFBLElBQUEwRixnQkFBQTtZQUFBLE9BQ3JCdkYsZUFBZSxDQUFBdkUsYUFBQSxDQUFBQSxhQUFBLEtBQUtvRSxPQUFPO2NBQUVRLE9BQU8sR0FBQWtGLGdCQUFBLEdBQUUxRixPQUFPLENBQUNRLE9BQU8sY0FBQWtGLGdCQUFBLGNBQUFBLGdCQUFBLEdBQUk7Z0JBQUN6QyxNQUFNLEVBQU5BO2NBQU07WUFBQyxFQUFDLENBQUM7VUFBQSxDQUNyRSxDQUNGLENBQUM7UUFBQTtVQUFBLE9BQUE0QixTQUFBLENBQUFwRixNQUFBLFdBQUFvRixTQUFBLENBQUF0RixJQUFBO1FBQUE7VUFBQSxPQUFBc0YsU0FBQSxDQUFBcEYsTUFBQSxXQUdJLElBQUk7UUFBQTtRQUFBO1VBQUEsT0FBQW9GLFNBQUEsQ0FBQW5GLElBQUE7TUFBQTtJQUFBLEdBQUE4RSxRQUFBO0VBQUEsQ0FDWjtFQUFBLE9BQUFELHlCQUFBLENBQUE1SSxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQUFBLFNBS2M2RixtQkFBbUJBLENBQUFpRSxJQUFBO0VBQUEsT0FBQUMsb0JBQUEsQ0FBQWpLLEtBQUEsT0FBQUUsU0FBQTtBQUFBO0FBaUJsQztBQUNBO0FBQ0E7QUFGQSxTQUFBK0oscUJBQUE7RUFBQUEsb0JBQUEsT0FBQTNILGtCQUFBLDJCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FqQkEsU0FBQTBILFNBQW1DN0YsT0FBeUI7SUFBQSxJQUFBOEYsVUFBQSxFQUFBQyxTQUFBLEVBQUFDLGdCQUFBO0lBQUEsT0FBQTlILFlBQUEsWUFBQVcsSUFBQSxVQUFBb0gsVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUFsSCxJQUFBLEdBQUFrSCxTQUFBLENBQUFqSCxJQUFBO1FBQUE7VUFBQWlILFNBQUEsQ0FBQWpILElBQUE7VUFBQSxPQUNqQyxJQUFBa0gsc0JBQVksRUFBQ25HLE9BQU8sRUFBRSxJQUFJLENBQUM7UUFBQTtVQUE5QzhGLFVBQVUsR0FBQUksU0FBQSxDQUFBM0csSUFBQTtVQUFBLElBRVh1RyxVQUFVO1lBQUFJLFNBQUEsQ0FBQWpILElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQWlILFNBQUEsQ0FBQXpHLE1BQUEsV0FDTjtZQUNMcUcsVUFBVSxFQUFWQTtVQUNGLENBQUM7UUFBQTtVQUdHQyxTQUFTLEdBQUkvRixPQUFPLENBQUNrQyxPQUFPLElBQUk0RCxVQUFVLENBQUNNLEdBQUcsQ0FBQyxDQUFDLElBQUssSUFBSTtVQUMzREosZ0JBQWdCLEdBQUdGLFVBQVU7VUFDakMsSUFBSTlGLE9BQU8sQ0FBQ21DLDJCQUEyQixFQUFFO1lBQ3ZDNkQsZ0JBQWdCLEdBQUdoRyxPQUFPLENBQUNtQywyQkFBMkIsQ0FBQzhDLEdBQUcsQ0FBQyxVQUFBbEksQ0FBQztjQUFBLE9BQUkrSSxVQUFVLENBQUMvSSxDQUFDLENBQUM7WUFBQSxFQUFDO1VBQ2hGO1VBQUMsT0FBQW1KLFNBQUEsQ0FBQXpHLE1BQUEsV0FDTTtZQUFDcUcsVUFBVSxFQUFFRSxnQkFBZ0I7WUFBRUQsU0FBUyxFQUFUQTtVQUFTLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQUcsU0FBQSxDQUFBeEcsSUFBQTtNQUFBO0lBQUEsR0FBQW1HLFFBQUE7RUFBQSxDQUNqRDtFQUFBLE9BQUFELG9CQUFBLENBQUFqSyxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQUFBLFNBS2M4RixrQkFBa0JBLENBQUEwRSxJQUFBO0VBQUEsT0FBQUMsbUJBQUEsQ0FBQTNLLEtBQUEsT0FBQUUsU0FBQTtBQUFBO0FBUWpDO0FBQ0E7QUFDQTtBQUZBLFNBQUF5SyxvQkFBQTtFQUFBQSxtQkFBQSxPQUFBckksa0JBQUEsMkJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQVJBLFNBQUFvSSxTQUFrQ2hGLFFBQTRCO0lBQUEsSUFBQWlGLFNBQUE7SUFBQSxJQUFBQyxPQUFBLEVBQUFWLFNBQUEsRUFBQUQsVUFBQTtJQUFBLE9BQUE1SCxZQUFBLFlBQUFXLElBQUEsVUFBQTZILFVBQUFDLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBM0gsSUFBQSxHQUFBMkgsU0FBQSxDQUFBMUgsSUFBQTtRQUFBO1VBQUEwSCxTQUFBLENBQUExSCxJQUFBO1VBQUEsT0FDdENDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDb0MsUUFBUSxDQUFDMEQsR0FBRyxDQUFDLFVBQUFqRixPQUFPO1lBQUEsT0FBSSxJQUFBbUcsc0JBQVksRUFBQ25HLE9BQU8sRUFBRSxJQUFJLENBQUM7VUFBQSxFQUFDLENBQUM7UUFBQTtVQUFqRnlHLE9BQU8sR0FBQUUsU0FBQSxDQUFBcEgsSUFBQTtVQUNiO1VBQ013RyxTQUFTLEdBQUcsRUFBQVMsU0FBQSxHQUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGNBQUFELFNBQUEsdUJBQVZBLFNBQUEsQ0FBWUosR0FBRyxDQUFDLENBQUMsS0FBSSxJQUFJO1VBQ3JDTixVQUFVLEdBQUdXLE9BQU8sQ0FBQ0csSUFBSSxDQUFDLENBQUMsQ0FBQ3JMLE1BQU0sQ0FBQyxVQUFBc0wsSUFBSTtZQUFBLE9BQUlBLElBQUksS0FBSyxJQUFJO1VBQUEsRUFBQztVQUFBLE9BQUFGLFNBQUEsQ0FBQWxILE1BQUEsV0FDeEQ7WUFBQ3FHLFVBQVUsRUFBVkEsVUFBVTtZQUFFQyxTQUFTLEVBQVRBO1VBQVMsQ0FBQztRQUFBO1FBQUE7VUFBQSxPQUFBWSxTQUFBLENBQUFqSCxJQUFBO01BQUE7SUFBQSxHQUFBNkcsUUFBQTtFQUFBLENBQy9CO0VBQUEsT0FBQUQsbUJBQUEsQ0FBQTNLLEtBQUEsT0FBQUUsU0FBQTtBQUFBO0FBS0QsU0FBU21KLEdBQUdBLENBQVMxSCxDQUFPLEVBQUVELENBQU8sRUFBYztFQUNqRCxPQUFPQyxDQUFDLENBQUMySCxHQUFHLENBQUMsVUFBQzZCLENBQUMsRUFBRS9KLENBQUM7SUFBQSxPQUFLLENBQUMrSixDQUFDLEVBQUV6SixDQUFDLENBQUNOLENBQUMsQ0FBQyxDQUFDO0VBQUEsRUFBQztBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTc0ksSUFBSUEsQ0FBYS9ILENBQU8sRUFBRUQsQ0FBTyxFQUFFMEosQ0FBTyxFQUFrQjtFQUNuRSxPQUFPekosQ0FBQyxDQUFDMkgsR0FBRyxDQUFDLFVBQUM2QixDQUFDLEVBQUUvSixDQUFDO0lBQUEsT0FBSyxDQUFDK0osQ0FBQyxFQUFFekosQ0FBQyxDQUFDTixDQUFDLENBQUMsRUFBRWdLLENBQUMsQ0FBQ2hLLENBQUMsQ0FBQyxDQUFDO0VBQUEsRUFBQztBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTMEksa0JBQWtCQSxDQUN6QnVCLEdBQXlELEVBQ1U7RUFDbkUsT0FBT0EsR0FBRyxDQUFDQyxLQUFLLENBQUMsVUFBQTdELENBQUM7SUFBQSxPQUFJLFFBQU9BLENBQUMsYUFBREEsQ0FBQyx1QkFBREEsQ0FBQyxDQUFFaEQsR0FBRyxNQUFLLFFBQVEsSUFBSSxDQUFBZ0QsQ0FBQyxhQUFEQSxDQUFDLHVCQUFEQSxDQUFDLENBQUVwQixNQUFNLE1BQUssSUFBSTtFQUFBLEVBQUM7QUFDekU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNrRiw2QkFBNkJBLENBQzNDM0ksa0JBQThDLEVBQy9CO0VBQ2YsSUFBTWxDLE1BQU0sR0FBRyxJQUFBOEssK0NBQThCLEVBQUM1SSxrQkFBa0IsQ0FBQztFQUNqRSxJQUFJLENBQUNsQyxNQUFNLEVBQUU7SUFDWCxPQUFPLElBQUk7RUFDYjtFQUNBLE9BQU9ELGVBQWUsQ0FBQ0MsTUFBTSxFQUFFK0ssMENBQXlCLEVBQUUsQ0FBQyxDQUFDO0FBQzlEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQSxTQUtzQkMsV0FBV0EsQ0FBQUMsSUFBQTtFQUFBLE9BQUFDLFlBQUEsQ0FBQTVMLEtBQUEsT0FBQUUsU0FBQTtBQUFBO0FBQUEsU0FBQTBMLGFBQUE7RUFBQUEsWUFBQSxPQUFBdEosa0JBQUEsMkJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQUExQixTQUFBcUosVUFBMkJDLEtBS2pDO0lBQUEsSUFBQUMsWUFBQSxFQUFBdEUsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQXFFLGlCQUFBLEVBQUExRSxNQUFBLEVBQUEyRSxvQkFBQSxFQUFBQyxZQUFBLEVBQUFDLGNBQUEsRUFBQUMsYUFBQSxFQUFBQyxXQUFBLEVBQUFDLElBQUE7SUFBQSxPQUFBL0osWUFBQSxZQUFBVyxJQUFBLFVBQUFxSixXQUFBQyxVQUFBO01BQUEsa0JBQUFBLFVBQUEsQ0FBQW5KLElBQUEsR0FBQW1KLFVBQUEsQ0FBQWxKLElBQUE7UUFBQTtVQUFBeUksWUFBQSxHQU1LRCxLQUFLLENBSlAxRCxLQUFLLEVBQUdYLENBQUMsR0FBQXNFLFlBQUEsQ0FBRHRFLENBQUMsRUFBRUMsQ0FBQyxHQUFBcUUsWUFBQSxDQUFEckUsQ0FBQyxFQUFFQyxDQUFDLEdBQUFvRSxZQUFBLENBQURwRSxDQUFDLEVBQ2ZxRSxpQkFBaUIsR0FHZkYsS0FBSyxDQUhQRSxpQkFBaUIsRUFDakIxRSxNQUFNLEdBRUp3RSxLQUFLLENBRlB4RSxNQUFNLEVBQ04yRSxvQkFBb0IsR0FDbEJILEtBQUssQ0FEUEcsb0JBQW9CO1VBR2hCQyxZQUFZLEdBQUcsSUFBQU8sb0JBQWUsRUFBQzlFLENBQUMsRUFBRTVGLGVBQWUsQ0FBQztVQUNsRG9LLGNBQWMsR0FBRyxJQUFBTyxrQkFBYSxFQUFDVCxvQkFBb0IsRUFBRXhFLENBQUMsRUFBRUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUV1RSxZQUFZLENBQUM7VUFDM0VFLGFBQWEsR0FBRyxJQUFBTywyQkFBZ0IsRUFBQyxDQUFDO1VBQ2xDTixXQUFXLEdBQUcsQ0FBQyxHQUFHLElBQUFPLDJCQUFvQixFQUFDLENBQUMsQ0FBQ0Msc0JBQXNCO1VBQUFMLFVBQUEsQ0FBQWxKLElBQUE7VUFBQSxPQUVsRCxJQUFBd0osbUNBQWtCLEVBQUMsQ0FBQyxDQUFDQyxlQUFlLENBQ3JEWixjQUFjLENBQUN2SCxlQUFlLG1CQUFBdEMsa0JBQUEsMkJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQUM5QixTQUFBd0ssVUFBQTtZQUFBLElBQUFDLE9BQUEsRUFBQUMscUJBQUEsRUFBQUMsZUFBQTtZQUFBLE9BQUE1SyxZQUFBLFlBQUFXLElBQUEsVUFBQWtLLFdBQUFDLFVBQUE7Y0FBQSxrQkFBQUEsVUFBQSxDQUFBaEssSUFBQSxHQUFBZ0ssVUFBQSxDQUFBL0osSUFBQTtnQkFBQTtrQkFDVzJKLE9BQU8sR0FBRyxDQUFDO2dCQUFBO2tCQUFBLE1BQUVBLE9BQU8sR0FBR1osV0FBVztvQkFBQWdCLFVBQUEsQ0FBQS9KLElBQUE7b0JBQUE7a0JBQUE7a0JBQUErSixVQUFBLENBQUFoSyxJQUFBO2tCQUFBZ0ssVUFBQSxDQUFBL0osSUFBQTtrQkFBQSxPQUV6QixJQUFBZ0ssVUFBSSxFQUFDbkIsY0FBYyxDQUFDMUgsR0FBRyxFQUFFOEksNEJBQW1CLEVBQUU7b0JBQzFEQyxLQUFLLEVBQUU7c0JBQUNsRyxNQUFNLEVBQU5BO29CQUFNLENBQUM7b0JBQ2YsZ0JBQWdCLEVBQUFySCxhQUFBLENBQUFBLGFBQUEsS0FDWG1NLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQztzQkFDbENxQixNQUFNLEVBQUV6QixpQkFBaUI7c0JBQ3pCMEIsV0FBVyxFQUFFeEIsWUFBWSxHQUFHbEs7b0JBQXVCO2tCQUV2RCxDQUFDLENBQUM7Z0JBQUE7a0JBQUEsT0FBQXFMLFVBQUEsQ0FBQXZKLE1BQUEsV0FBQXVKLFVBQUEsQ0FBQXpKLElBQUE7Z0JBQUE7a0JBQUF5SixVQUFBLENBQUFoSyxJQUFBO2tCQUFBZ0ssVUFBQSxDQUFBTSxFQUFBLEdBQUFOLFVBQUE7a0JBQUEsTUFJQUosT0FBTyxHQUFHWixXQUFXLElBQ3JCZ0IsVUFBQSxDQUFBTSxFQUFBLFlBQWlCQyxnQkFBVSxLQUFBVixxQkFBQSxHQUMzQixJQUFBTiwyQkFBb0IsRUFBQyxDQUFDLENBQUNpQiwrQkFBK0IsY0FBQVgscUJBQUEsZUFBdERBLHFCQUFBLENBQXdEWSxRQUFRLEVBQUFYLGVBQUEsR0FDOURFLFVBQUEsQ0FBQU0sRUFBQSxDQUFNSSxRQUFRLGNBQUFaLGVBQUEsdUJBQWRBLGVBQUEsQ0FBZ0JhLE1BQ2xCLENBQUM7b0JBQUFYLFVBQUEsQ0FBQS9KLElBQUE7b0JBQUE7a0JBQUE7a0JBQUErSixVQUFBLENBQUEvSixJQUFBO2tCQUFBLE9BRUssSUFBQTJLLGtCQUFLLEVBQUMsSUFBQXJCLDJCQUFvQixFQUFDLENBQUMsQ0FBQ3NCLHNCQUFzQixDQUFDO2dCQUFBO2tCQUFBLE9BQUFiLFVBQUEsQ0FBQXZKLE1BQUE7Z0JBQUE7a0JBbkJuQm1KLE9BQU8sRUFBRTtrQkFBQUksVUFBQSxDQUFBL0osSUFBQTtrQkFBQTtnQkFBQTtrQkFBQSxPQUFBK0osVUFBQSxDQUFBdkosTUFBQSxXQXdCL0MsSUFBSTtnQkFBQTtnQkFBQTtrQkFBQSxPQUFBdUosVUFBQSxDQUFBdEosSUFBQTtjQUFBO1lBQUEsR0FBQWlKLFNBQUE7VUFBQSxDQUNaLEVBQ0gsQ0FBQztRQUFBO1VBN0JLVixJQUFJLEdBQUFFLFVBQUEsQ0FBQTVJLElBQUE7VUFBQSxPQUFBNEksVUFBQSxDQUFBMUksTUFBQSxXQStCSHdJLElBQUk7UUFBQTtRQUFBO1VBQUEsT0FBQUUsVUFBQSxDQUFBekksSUFBQTtNQUFBO0lBQUEsR0FBQThILFNBQUE7RUFBQSxDQUNaO0VBQUEsT0FBQUQsWUFBQSxDQUFBNUwsS0FBQSxPQUFBRSxTQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
662
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfdGVycmFpbiIsIl9tZW1vaXplIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb21tb25VdGlscyIsIl9jb25zdGFudHMiLCJfdXRpbHMiLCJfY29uZmlnIiwiX2dwdVV0aWxzIiwiX3Jhc3RlclRpbGVVdGlscyIsIl91cmwiLCJfcmVxdWVzdFRocm90dGxlIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJnZXRJbWFnZURhdGFVUkwiLCJiaXRtYXAiLCJ3aWR0aCIsImhlaWdodCIsImNhbnZhcyIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImdldENvbnRleHQiLCJzZXRBdHRyaWJ1dGUiLCJjb25jYXQiLCJjdHgiLCJpIiwiX2JpdG1hcCRzdWJhcnJheSIsInN1YmFycmF5IiwiX2JpdG1hcCRzdWJhcnJheTIiLCJfc2xpY2VkVG9BcnJheTIiLCJnIiwiYiIsImEiLCJmaWxsU3R5bGUiLCJmaWxsUmVjdCIsInRvRGF0YVVSTCIsIk1FU0hfTVVMVElQTElFUiIsIlNLSVJUX0hFSUdIVF9NVUxUSVBMSUVSIiwibG9hZEltYWdlcyIsIl94IiwiX3gyIiwiX3gzIiwiX2xvYWRJbWFnZXMiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsImFzc2V0UmVxdWVzdHMiLCJjb2xvcm1hcElkIiwiY2F0ZWdvcmljYWxPcHRpb25zIiwiX3lpZWxkJFByb21pc2UkYWxsIiwiX3lpZWxkJFByb21pc2UkYWxsMiIsInN0YWNJbWFnZXMiLCJjb2xvcm1hcCIsImltYWdlQ29sb3JtYXAiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiUHJvbWlzZSIsImFsbCIsImxvYWRTVEFDSW1hZ2VEYXRhIiwiQ0FURUdPUklDQUxfQ09MT1JNQVBfSUQiLCJtZW1vaXplZExvYWRDb2xvcm1hcCIsInNlbnQiLCJnZW5lcmF0ZUNhdGVnb3JpY2FsQ29sb3JtYXBUZXh0dXJlIiwiYWJydXB0Iiwic3RvcCIsIm1lbW9pemUiLCJsb2FkQ29sb3JtYXAiLCJfeDQiLCJfbG9hZENvbG9ybWFwIiwiX2NhbGxlZTIiLCJyZXF1ZXN0IiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiZ2V0QXNzZXRSZXF1ZXN0IiwidXJsIiwiUmFzdGVyTGF5ZXJSZXNvdXJjZXMiLCJyYXN0ZXJDb2xvck1hcCIsInJhc3RlclNlcnZlclVybCIsIm9wdGlvbnMiLCJsb2FkSW1hZ2UiLCJDT0xPUk1BUF9URVhUVVJFX1BBUkFNRVRFUlMiLCJnZXRTVEFDSW1hZ2VSZXF1ZXN0cyIsIl94NSIsIl9nZXRTVEFDSW1hZ2VSZXF1ZXN0cyIsIl9jYWxsZWUzIiwibG9hZEFzc2V0SWRzIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiZ2V0U2luZ2xlQXNzZXRTVEFDUmVxdWVzdCIsImdldE11bHRpQXNzZXRTVEFDUmVxdWVzdCIsIl94NiIsIl9sb2FkU1RBQ0ltYWdlRGF0YSIsIl9jYWxsZWU0IiwicmVxdWVzdHMiLCJfY2FsbGVlNCQiLCJfY29udGV4dDQiLCJsb2FkU2luZ2xlQXNzZXRTVEFDIiwibG9hZE11bHRpQXNzZXRTVEFDIiwiX3g3IiwiX2dldEFzc2V0UmVxdWVzdCIsIl9jYWxsZWU1IiwiX3JlZiIsInBhcmFtcyIsIl9yZWYkdXNlTWFzayIsInVzZU1hc2siLCJyZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXMiLCJyZXF1ZXN0VXJsIiwicmVxdWVzdFBhcmFtcyIsInJlcXVlc3RPcHRpb25zIiwiYXNzZXRVcmwiLCJfY2FsbGVlNSQiLCJfY29udGV4dDUiLCJVUkxTZWFyY2hQYXJhbXMiLCJ0b1N0cmluZyIsIl94OCIsIl9nZXRTaW5nbGVBc3NldFNUQUNSZXF1ZXN0IiwiX2NhbGxlZTYiLCJzdGFjIiwibG9hZEJhbmRJbmRleGVzIiwic2lnbmFsIiwidXNlU1RBQ1NlYXJjaGluZyIsIl9vcHRpb25zJGluZGV4IiwieCIsInkiLCJ6Iiwic3RhY1NlYXJjaFByb3ZpZGVyIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsIl9zdGFjUXVlcnkiLCJ1cmxJbmZvIiwidXJsUGFyYW1zIiwiYXNzZXQiLCJfY2FsbGVlNiQiLCJfY29udGV4dDYiLCJpbmRleCIsInR5cGUiLCJnZXRTdGFjQXBpVXJsUGFyYW1zIiwibWFzayIsImdldFRpdGlsZXJVcmwiLCJnZXRTaW5nbGVDT0dVcmxQYXJhbXMiLCJsb2FkQXNzZXRJZCIsInJhc3RlclNlcnZlck1heFJldHJpZXMiLCJyYXN0ZXJTZXJ2ZXJSZXRyeURlbGF5IiwicmFzdGVyU2VydmVyU2VydmVyRXJyb3JzVG9SZXRyeSIsInJhc3RlclNlcnZlck1heFBlclNlcnZlclJlcXVlc3RzIiwiX3g5IiwiX2dldE11bHRpQXNzZXRTVEFDUmVxdWVzdCIsIl9jYWxsZWU3IiwiX29wdGlvbnMkaW5kZXgyIiwicmVxdWVzdERhdGEiLCJyZXF1ZXN0TWFzayIsImFzc2V0cyIsIl9jYWxsZWU3JCIsIl9jb250ZXh0NyIsIkFycmF5IiwiZmlsbCIsInppcCIsIm1hcCIsIl9yZWYyIiwiX3JlZjMiLCJhc3NldElkIiwiemlwMyIsIl9yZWY0IiwiX3JlZjUiLCJiYW5kSW5kZXgiLCJpc1ZhbGlkUmVxdWVzdERhdGEiLCJfcmVxdWVzdCRvcHRpb25zIiwiX3gxMCIsIl9sb2FkU2luZ2xlQXNzZXRTVEFDIiwiX2NhbGxlZTgiLCJpbWFnZUJhbmRzIiwiaW1hZ2VNYXNrIiwibWFwcGVkSW1hZ2VCYW5kcyIsIl9jYWxsZWU4JCIsIl9jb250ZXh0OCIsImxvYWROcHlBcnJheSIsInBvcCIsIl94MTEiLCJfbG9hZE11bHRpQXNzZXRTVEFDIiwiX2NhbGxlZTkiLCJfcmVzdWx0cyQiLCJyZXN1bHRzIiwiX2NhbGxlZTkkIiwiX2NvbnRleHQ5IiwiZmxhdCIsImJhbmQiLCJrIiwiYyIsImFyciIsImV2ZXJ5IiwiZ2V0Q2F0ZWdvcmljYWxDb2xvcm1hcERhdGFVcmwiLCJnZW5lcmF0ZUNhdGVnb3JpY2FsQml0bWFwQXJyYXkiLCJDQVRFR09SSUNBTF9URVhUVVJFX1dJRFRIIiwibG9hZFRlcnJhaW4iLCJfeDEyIiwiX2xvYWRUZXJyYWluIiwiX2NhbGxlZTExIiwicHJvcHMiLCJfcHJvcHMkaW5kZXgiLCJib3VuZHNGb3JHZW9tZXRyeSIsInJhc3RlclRpbGVTZXJ2ZXJVcmxzIiwibWVzaE1heEVycm9yIiwidGVycmFpblVybEluZm8iLCJsb2FkZXJPcHRpb25zIiwibnVtQXR0ZW1wdHMiLCJtZXNoIiwiX2NhbGxlZTExJCIsIl9jb250ZXh0MTEiLCJnZXRNZXNoTWF4RXJyb3IiLCJnZXRUZXJyYWluVXJsIiwiZ2V0TG9hZGVyT3B0aW9ucyIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZ2V0UmVxdWVzdFRocm90dGxlIiwidGhyb3R0bGVSZXF1ZXN0IiwiX2NhbGxlZTEwIiwiYXR0ZW1wdCIsIl9yZWY3IiwiX3Byb3BzJHJhc3RlclNlcnZlclNlIiwiX2Vycm9yJHJlc3BvbnNlIiwiX3Byb3BzJHJhc3RlclNlcnZlclJlIiwiX2NhbGxlZTEwJCIsIl9jb250ZXh0MTAiLCJsb2FkIiwiUXVhbnRpemVkTWVzaExvYWRlciIsImZldGNoIiwiYm91bmRzIiwic2tpcnRIZWlnaHQiLCJ0MCIsIkZldGNoRXJyb3IiLCJpbmNsdWRlcyIsInJlc3BvbnNlIiwic3RhdHVzIiwic2xlZXAiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcmFzdGVyLXRpbGUvaW1hZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9ucyB0byBjcmVhdGUgb2JqZWN0cyB0byBwYXNzIHRvIGRlY2suZ2wtcmFzdGVyXG4gKi9cblxuaW1wb3J0IHtsb2FkLCBGZXRjaEVycm9yfSBmcm9tICdAbG9hZGVycy5nbC9jb3JlJztcbmltcG9ydCB7UXVhbnRpemVkTWVzaExvYWRlcn0gZnJvbSAnQGxvYWRlcnMuZ2wvdGVycmFpbic7XG5pbXBvcnQgbWVtb2l6ZSBmcm9tICdsb2Rhc2gvbWVtb2l6ZSc7XG5cbmltcG9ydCB7c2xlZXB9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7Z2V0TG9hZGVyT3B0aW9uc30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtnZXRBcHBsaWNhdGlvbkNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7Q0FURUdPUklDQUxfQ09MT1JNQVBfSUR9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7XG4gIGxvYWROcHlBcnJheSxcbiAgZ2VuZXJhdGVDYXRlZ29yaWNhbENvbG9ybWFwVGV4dHVyZSxcbiAgbG9hZEltYWdlLFxuICBDT0xPUk1BUF9URVhUVVJFX1BBUkFNRVRFUlNcbn0gZnJvbSAnLi9ncHUtdXRpbHMnO1xuaW1wb3J0IHtDQVRFR09SSUNBTF9URVhUVVJFX1dJRFRILCBnZW5lcmF0ZUNhdGVnb3JpY2FsQml0bWFwQXJyYXl9IGZyb20gJy4vcmFzdGVyLXRpbGUtdXRpbHMnO1xuaW1wb3J0IHtcbiAgR2V0VGlsZURhdGFQcm9wcyxcbiAgSW1hZ2VEYXRhLFxuICBUZXJyYWluRGF0YSxcbiAgQXNzZXRSZXF1ZXN0RGF0YSxcbiAgQ2F0ZWdvcmljYWxDb2xvcm1hcE9wdGlvbnMsXG4gIENvbG9ybWFwSW1hZ2VEYXRhXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgZ2V0VGl0aWxlclVybCxcbiAgZ2V0VGVycmFpblVybCxcbiAgZ2V0U2luZ2xlQ09HVXJsUGFyYW1zLFxuICBnZXRTdGFjQXBpVXJsUGFyYW1zLFxuICBnZXRNZXNoTWF4RXJyb3IsXG4gIFJhc3RlckxheWVyUmVzb3VyY2VzXG59IGZyb20gJy4vdXJsJztcbmltcG9ydCB7Z2V0UmVxdWVzdFRocm90dGxlfSBmcm9tICcuL3JlcXVlc3QtdGhyb3R0bGUnO1xuXG4vKipcbiAqIENyZWF0ZSBkYXRhVXJsIGltYWdlIGZyb20gYml0bWFwIGFycmF5XG4gKiBAcGFyYW0gYml0bWFwIC0gUkdCQSBieXRlIGJpdG1hcCBhcnJheVxuICogQHBhcmFtIHdpZHRoIC0gd2lkdGggb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gaGVpZ2h0IC0gaGVpZ2h0IG9mIHRoZSBpbWFnZVxuICogQHJldHVybnMgYmFzZTY0IGRhdGEgdXJsIG9mIHRoZSBpbWFnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VEYXRhVVJMKGJpdG1hcDogVWludDhBcnJheSwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gIGlmICghY2FudmFzLmdldENvbnRleHQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjYW52YXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsIGAke3dpZHRofWApO1xuICBjYW52YXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHtoZWlnaHR9YCk7XG4gIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICBpZiAoIWN0eCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgd2lkdGg7IGkrKykge1xuICAgIGNvbnN0IFtyLCBnLCBiLCBhXSA9IGJpdG1hcC5zdWJhcnJheShpICogNCwgaSAqIDQgKyA0KTtcbiAgICBpZiAoYSAhPT0gMCkge1xuICAgICAgY3R4LmZpbGxTdHlsZSA9IGByZ2IoJHtyfSwgJHtnfSwgJHtifSlgO1xuICAgICAgY3R4LmZpbGxSZWN0KGksIDAsIDEsIDEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyk7XG59XG5cbi8vIEdsb2JhbCBtdWx0aXBsaWVyIHRvIGJlIGFwcGxpZWQgdG8gdGVycmFpbiBtZXNoIHJlc29sdXRpb25cbi8vIEEgc21hbGxlciBudW1iZXIgdG93YXJkcyAwIHdpbGwgY2F1c2UgZ2VuZXJhdGlvbiBvZiBtZXNoIGRhdGEgd2l0aCBhIHNtYWxsZXIgbWF4IGVycm9yIGFuZCB0aHVzIGFcbi8vIGhpZ2hlciByZXNvbHV0aW9uIG1lc2hcbmNvbnN0IE1FU0hfTVVMVElQTElFUiA9IDAuODtcblxuLyoqXG4gKiBNdWx0aXBsaWVyIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBoZWlnaHQgb2YgdGVycmFpbiBtZXNoIHNraXJ0cy5cbiAqIFRoZSBza2lydCBpcyBhbiBleHRlbnNpb24gb2YgdGhlIHRlcnJhaW4gbWVzaCB0aGF0IGhlbHBzIHByZXZlbnQgZ2FwcyBiZXR3ZWVuIHRlcnJhaW4gdGlsZXNcbiAqIGJ5IGV4dGVuZGluZyB0aGUgbWVzaCBlZGdlcyBkb3dud2FyZC4gVGhpcyBtdWx0aXBsaWVyIGlzIGFwcGxpZWQgdG8gdGhlIG1lc2gncyBtYXhpbXVtIGVycm9yXG4gKiB0byBkZXRlcm1pbmUgdGhlIHNraXJ0IGhlaWdodCwgZW5zdXJpbmcgbm8gZ2FwcyBhcmUgdmlzaWJsZS5cbiAqL1xuY29uc3QgU0tJUlRfSEVJR0hUX01VTFRJUExJRVIgPSAzO1xuXG4vKipcbiAqIExvYWQgaW1hZ2VzIHJlcXVpcmVkIGZvciByYXN0ZXIgdGlsZVxuICogQHBhcmFtIGFzc2V0UmVxdWVzdHMgLSBTVEFDIGFzc2V0IHJlcXVlc3RzXG4gKiBAcGFyYW0gY29sb3JtYXBJZCAtIGNvbG9ybWFwIGlkXG4gKiBAcGFyYW0gY2F0ZWdvcmljYWxPcHRpb25zIC0gY2F0ZWdvcmljYWwgb3B0aW9ucyByZXF1cmVkIGZvciBtYWtpbmcgb2YgY2F0ZWdvcmljYWwgY29sb3JtYXBcbiAqIEByZXR1cm5zIGltYWdlcyBtYXBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRJbWFnZXMoXG4gIGFzc2V0UmVxdWVzdHM6IEFzc2V0UmVxdWVzdERhdGFbXSxcbiAgY29sb3JtYXBJZDogc3RyaW5nLFxuICBjYXRlZ29yaWNhbE9wdGlvbnM6IENhdGVnb3JpY2FsQ29sb3JtYXBPcHRpb25zXG4pOiBQcm9taXNlPEltYWdlRGF0YT4ge1xuICAvLyBXZSBsb2FkIGltYWdlIGRhdGEgKHNpbmdsZSBvciBtdWx0aSBhc3NldCBiYXNlZCBvbiBudW1iZXIgb2YgcmVxdWVzdHMpIGFuZCBjb2xvcm1hcCBpbiBwYXJhbGxlbFxuICBjb25zdCBbc3RhY0ltYWdlcywgY29sb3JtYXBdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgIGxvYWRTVEFDSW1hZ2VEYXRhKGFzc2V0UmVxdWVzdHMpLFxuICAgIChjb2xvcm1hcElkICE9PSBDQVRFR09SSUNBTF9DT0xPUk1BUF9JRCAmJiBtZW1vaXplZExvYWRDb2xvcm1hcChjb2xvcm1hcElkKSkgfHwgbnVsbFxuICBdKTtcbiAgbGV0IGltYWdlQ29sb3JtYXAgPSBjb2xvcm1hcDtcbiAgaWYgKGNvbG9ybWFwSWQgPT09IENBVEVHT1JJQ0FMX0NPTE9STUFQX0lEKSB7XG4gICAgaW1hZ2VDb2xvcm1hcCA9IGdlbmVyYXRlQ2F0ZWdvcmljYWxDb2xvcm1hcFRleHR1cmUoY2F0ZWdvcmljYWxPcHRpb25zKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YWNJbWFnZXMsXG4gICAgaW1hZ2VDb2xvcm1hcFxuICB9O1xufVxuXG4vKipcbiAqIENhY2hlIGxvYWRpbmcgb2YgY29sb3JtYXAuIEVhY2ggY29sb3JtYXAgZmlsZSBpcyB2ZXJ5IHNtYWxsLCBvbiB0aGUgb3JkZXIgb2YgYSBmZXcgaHVuZHJlZCBieXRlcyxcbiAqIHNvIGEgZ2xvYmFsIGNhY2hlIGxpa2UgdGhpcyBpcyBub3QgZXhwZWN0ZWQgdG8gZWF0IHVwIHRvbyBtdWNoIG1lbW9yeS5cbiAqIE1vc3QgY29sb3JtYXBzIGFyZSBsb2FkZWQgZnJvbSBDRE4uIEluIGNhc2UgY29sb3JtYXBJZCBpcyBjYXRlZ29yaWNhbCwgdGhlIGltYWdlIGlzIGNyZWF0ZWQgZnJvbVxuICogY2F0ZWdvcmljYWwgY29sb3JtYXAgb3B0aW9ucy5cbiAqIE5PVEU6IHRoaXMgaW1wbGVtZW50YXRpb24gd2lsbCBjYWNoZSBwcm9taXNlIHJlamVjdGlvbnMgYXMgd2VsbCwgYnV0IHNpbmNlIHRoZXNlIGFyZSBzbWFsbCBmaWxlc1xuICogb24gdGhlIENETiwgdGhhdCdzIGFuIGFjY2VwdGFibGUgcmlzayBmb3IgdGhlIHRpbWUgYmVpbmcuXG4gKi9cbmNvbnN0IG1lbW9pemVkTG9hZENvbG9ybWFwOiAoY29sb3JtYXBJZDogc3RyaW5nKSA9PiBQcm9taXNlPENvbG9ybWFwSW1hZ2VEYXRhIHwgbnVsbD4gfCBudWxsID1cbiAgbWVtb2l6ZSgoY29sb3JtYXBJZDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGNvbG9ybWFwSWQgPT09IENBVEVHT1JJQ0FMX0NPTE9STUFQX0lEKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxvYWRDb2xvcm1hcChjb2xvcm1hcElkKTtcbiAgICB9XG4gIH0pO1xuXG4vKipcbiAqIExvYWQgUE5HIGNvbG9ybWFwLlxuICogU2luY2UgdGhlIGNvbG9ybWFwIGZpbGVzIGFyZSBzbyBzbWFsbCAoY291cGxlIGh1bmRyZWQgYnl0ZXMpLCB3ZSBsb2FkIHRoZW0gYWx3YXlzLCBldmVuIGZvciBhblxuICogUkdCIGNvbXBvc2l0ZSB3aGVyZSB0aGUgY29sb3JtYXAgd29uJ3QgYmUgdXNlZC4gQWZ0ZXIgdGhlIGZpcnN0IGxvYWQsIHRoZSBjb2xvcm1hcCBzaG91bGQgYmVcbiAqIGxvYWRlZCBmcm9tIHRoZSBkaXNrIGNhY2hlLiBCeSBsb2FkaW5nIGFsd2F5cywgd2UgY2FuIHByZXZlbnQgdW5uZWNlc3NhcmlseSB0cmlnZ2VyaW5nXG4gKiBnZXRUaWxlRGF0YSwgd2hpY2ggcmVkdWNlcyBmbGFzaGluZyBmcm9tIHJlbG9hZGluZyB0aGUgaW1hZ2VzIG9uIHRoZSBHUFUuXG4gKlxuICogQHBhcmFtIGNvbG9ybWFwSWQgICAgICBJRCBvZiBjb2xvcm1hcCBQTkdcbiAqXG4gKiBAcmV0dXJucyBpbWFnZSBvYmplY3QgdG8gcGFzcyB0byBUZXh0dXJlMkQgY29uc3RydWN0b3JcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZENvbG9ybWFwKGNvbG9ybWFwSWQ6IHN0cmluZyk6IFByb21pc2U8Q29sb3JtYXBJbWFnZURhdGEgfCBudWxsPiB7XG4gIGlmICghY29sb3JtYXBJZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcmVxdWVzdCA9IGF3YWl0IGdldEFzc2V0UmVxdWVzdCh7XG4gICAgdXJsOiBSYXN0ZXJMYXllclJlc291cmNlcy5yYXN0ZXJDb2xvck1hcChjb2xvcm1hcElkKSxcbiAgICByYXN0ZXJTZXJ2ZXJVcmw6ICcnLFxuICAgIG9wdGlvbnM6IHt9XG4gIH0pO1xuICByZXR1cm4gbG9hZEltYWdlKHJlcXVlc3QudXJsLCBDT0xPUk1BUF9URVhUVVJFX1BBUkFNRVRFUlMsIHJlcXVlc3Qub3B0aW9ucyk7XG59XG5cbi8qKlxuICogR2V0IHRoZSByZXF1ZXN0IGRhdGEgZm9yIGxvYWRpbmcgYSBzaW5nbGUgb3IgbXVsdGkgYXNzZXQgU1RBQyBtZXRhZGF0YSBvYmplY3QuXG4gKiBAcGFyYW0gb3B0aW9ucyBTVEFDIG1ldGFkYXRhIG9iamVjdCBhbmQgdXNlci1kZWZpbmVkIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBJbWFnZSBkYXRhLCBvciBudWxsIGlmIHRoZSBTVEFDIG1ldGFkYXRhIG9iamVjdCBpcyBub3Qgc3VwcG9ydGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U1RBQ0ltYWdlUmVxdWVzdHMoXG4gIG9wdGlvbnM6IEdldFRpbGVEYXRhUHJvcHNcbik6IFByb21pc2U8QXNzZXRSZXF1ZXN0RGF0YVtdIHwgbnVsbD4ge1xuICBjb25zdCB7bG9hZEFzc2V0SWRzfSA9IG9wdGlvbnM7XG5cbiAgaWYgKGxvYWRBc3NldElkcy5sZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgZ2V0U2luZ2xlQXNzZXRTVEFDUmVxdWVzdChvcHRpb25zKTtcbiAgICByZXR1cm4gcmVxdWVzdCA/IFtyZXF1ZXN0XSA6IG51bGw7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgZ2V0TXVsdGlBc3NldFNUQUNSZXF1ZXN0KG9wdGlvbnMpO1xufVxuXG4vLyBUT0RPOiBpbWFnZSBsb2FkaW5nIHNob3VsZCByZWFsbHkgYmUgX2RyaXZlbiBieSB0aGUgbW9kdWxlc19cbi8vIEUuZy4gdGhlIHVzZXIgY2hvb3NlcyB3aGF0IGtpbmQgb2YgcGlwZWxpbmUgdGhleSB3YW50IG9uIHRoZSBHUFUsIHRoZW4gZnJvbSB0aG9zZSBtb2R1bGVzIHdlIGNhblxuLy8gc2VlIHdoZXRoZXIgdGhlIHVzZXIgd2FudHMgdGhlIHBhbnNoYXJwZW5lZCBiYW5kLCBjb2xvcm1hcCwgZXRjXG4vKipcbiAqIExvYWQgaW1hZ2VzIGRlZmluZWQgYnkgYSBTVEFDIG1ldGFkYXRhIG9iamVjdCBwbHVzIHVzZXItZGVmaW5lZCBwYXJhbWV0ZXJzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU1RBQ0ltYWdlRGF0YShyZXF1ZXN0czogQXNzZXRSZXF1ZXN0RGF0YVtdKTogUHJvbWlzZTxJbWFnZURhdGE+IHtcbiAgcmV0dXJuIHJlcXVlc3RzLmxlbmd0aCA9PT0gMSA/IGxvYWRTaW5nbGVBc3NldFNUQUMocmVxdWVzdHNbMF0pIDogbG9hZE11bHRpQXNzZXRTVEFDKHJlcXVlc3RzKTtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRoYXQgZm9ybXMgYW4gYXNzZXQgcmVxdWVzdCBiYXNlZCBvbiBnaXZlbiBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXNzZXRSZXF1ZXN0KHtcbiAgdXJsLFxuICByYXN0ZXJTZXJ2ZXJVcmwsXG4gIHBhcmFtcyxcbiAgb3B0aW9ucyxcbiAgdXNlTWFzayA9IHRydWUsXG4gIHJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlc1xufToge1xuICB1cmw6IHN0cmluZztcbiAgcmFzdGVyU2VydmVyVXJsOiBzdHJpbmc7XG4gIHBhcmFtcz86IFVSTFNlYXJjaFBhcmFtcyB8IG51bGw7XG4gIG9wdGlvbnM6IFJlcXVlc3RJbml0O1xuICB1c2VNYXNrPzogYm9vbGVhbjtcbiAgcmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzPzogbnVtYmVyW10gfCBudWxsO1xufSk6IFByb21pc2U8QXNzZXRSZXF1ZXN0RGF0YT4ge1xuICBjb25zdCByZXF1ZXN0VXJsID0gdXJsO1xuICBjb25zdCByZXF1ZXN0UGFyYW1zID0gcGFyYW1zID8/IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gIGNvbnN0IGFzc2V0VXJsID0gcmVxdWVzdFBhcmFtcyA/IGAke3JlcXVlc3RVcmx9PyR7cmVxdWVzdFBhcmFtcy50b1N0cmluZygpfWAgOiByZXF1ZXN0VXJsO1xuICByZXR1cm4ge1xuICAgIHVybDogYXNzZXRVcmwsXG4gICAgcmFzdGVyU2VydmVyVXJsLFxuICAgIG9wdGlvbnM6IHJlcXVlc3RPcHRpb25zLFxuICAgIHVzZU1hc2ssXG4gICAgcmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzXG4gIH07XG59XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiBmb3IgZm9ybWluZyBhIHJlcXVlc3QgZm9yIGEgc2luZ2xlIGFzc2V0IFNUQUMgbWV0YWRhdGEgb2JqZWN0LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eSwgbWF4LXN0YXRlbWVudHNcbmFzeW5jIGZ1bmN0aW9uIGdldFNpbmdsZUFzc2V0U1RBQ1JlcXVlc3QoXG4gIG9wdGlvbnM6IEdldFRpbGVEYXRhUHJvcHNcbik6IFByb21pc2U8QXNzZXRSZXF1ZXN0RGF0YSB8IG51bGw+IHtcbiAgY29uc3Qge1xuICAgIHN0YWMsXG4gICAgbG9hZEFzc2V0SWRzLFxuICAgIGxvYWRCYW5kSW5kZXhlcyxcbiAgICBzaWduYWwsXG4gICAgdXNlU1RBQ1NlYXJjaGluZyxcbiAgICBpbmRleDoge3gsIHksIHp9LFxuICAgIHN0YWNTZWFyY2hQcm92aWRlcixcbiAgICBzdGFydERhdGUsXG4gICAgZW5kRGF0ZSxcbiAgICBfc3RhY1F1ZXJ5XG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHVzZU1hc2sgPSB0cnVlO1xuXG4gIC8vIE9ubHkgYSBzaW5nbGUgVVJMIGJlY2F1c2Ugb25seSBhIHNpbmdsZSBhc3NldFxuICBsZXQgdXJsSW5mbzoge3VybDogc3RyaW5nOyByYXN0ZXJTZXJ2ZXJVcmw6IHN0cmluZ30gfCBudWxsID0gbnVsbDtcbiAgbGV0IHVybFBhcmFtczogVVJMU2VhcmNoUGFyYW1zIHwgbnVsbCA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgbGV0IHJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlczogbnVtYmVyW10gfCBudWxsID0gbG9hZEJhbmRJbmRleGVzO1xuICBpZiAodXNlU1RBQ1NlYXJjaGluZyAmJiBzdGFjLnR5cGUgIT09ICdGZWF0dXJlJykge1xuICAgIHVybFBhcmFtcyA9IGdldFN0YWNBcGlVcmxQYXJhbXMoe1xuICAgICAgc3RhYyxcbiAgICAgIHN0YWNTZWFyY2hQcm92aWRlcixcbiAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGUsXG4gICAgICBtYXNrOiB1c2VNYXNrLFxuICAgICAgbG9hZEFzc2V0SWRzLFxuICAgICAgX3N0YWNRdWVyeVxuICAgIH0pO1xuICAgIHVybEluZm8gPSBnZXRUaXRpbGVyVXJsKHtzdGFjLCB1c2VTVEFDU2VhcmNoaW5nLCB4LCB5LCB6fSk7XG4gIH0gZWxzZSBpZiAoc3RhYy50eXBlID09PSAnRmVhdHVyZScpIHtcbiAgICAvLyBzdGFjIGlzIGFuIEl0ZW1cbiAgICB1cmxQYXJhbXMgPSBnZXRTaW5nbGVDT0dVcmxQYXJhbXMoe1xuICAgICAgc3RhYyxcbiAgICAgIGxvYWRBc3NldElkOiBsb2FkQXNzZXRJZHNbMF0sXG4gICAgICBsb2FkQmFuZEluZGV4ZXMsXG4gICAgICBtYXNrOiB1c2VNYXNrXG4gICAgfSk7XG4gICAgdXJsSW5mbyA9IGdldFRpdGlsZXJVcmwoe3N0YWMsIHVzZVNUQUNTZWFyY2hpbmcsIHgsIHksIHp9KTtcbiAgICByZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXMgPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKCF1cmxJbmZvLnVybCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgYXNzZXQgPSBhd2FpdCBnZXRBc3NldFJlcXVlc3Qoe1xuICAgIC4uLnVybEluZm8sXG4gICAgcGFyYW1zOiB1cmxQYXJhbXMsXG4gICAgb3B0aW9uczoge3NpZ25hbH0sXG4gICAgdXNlTWFzayxcbiAgICByZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXNcbiAgfSk7XG4gIC8vIFBhc3MgcGVyLWxheWVyIG92ZXJyaWRlIGZvciByZXRyaWVzIGlmIHByZXNlbnQgb24gU1RBQyBtZXRhZGF0YVxuICByZXR1cm4ge1xuICAgIC4uLmFzc2V0LFxuICAgIHJhc3RlclNlcnZlck1heFJldHJpZXM6IHN0YWMucmFzdGVyU2VydmVyTWF4UmV0cmllcyxcbiAgICByYXN0ZXJTZXJ2ZXJSZXRyeURlbGF5OiBzdGFjLnJhc3RlclNlcnZlclJldHJ5RGVsYXksXG4gICAgcmFzdGVyU2VydmVyU2VydmVyRXJyb3JzVG9SZXRyeTogc3RhYy5yYXN0ZXJTZXJ2ZXJTZXJ2ZXJFcnJvcnNUb1JldHJ5LFxuICAgIHJhc3RlclNlcnZlck1heFBlclNlcnZlclJlcXVlc3RzOiBzdGFjLnJhc3RlclNlcnZlck1heFBlclNlcnZlclJlcXVlc3RzXG4gIH07XG59XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiBmb3IgZm9ybWluZyByZXF1ZXN0cyBmb3IgYSBtdWx0aSBhc3NldCBTVEFDIG1ldGFkYXRhIG9iamVjdC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TXVsdGlBc3NldFNUQUNSZXF1ZXN0KFxuICBvcHRpb25zOiBHZXRUaWxlRGF0YVByb3BzXG4pOiBQcm9taXNlPEFzc2V0UmVxdWVzdERhdGFbXSB8IG51bGw+IHtcbiAgY29uc3Qge1xuICAgIHN0YWMsXG4gICAgbG9hZEFzc2V0SWRzLFxuICAgIGxvYWRCYW5kSW5kZXhlcyxcbiAgICBzaWduYWwsXG4gICAgdXNlU1RBQ1NlYXJjaGluZyxcbiAgICBzdGFjU2VhcmNoUHJvdmlkZXIsXG4gICAgc3RhcnREYXRlLFxuICAgIGVuZERhdGUsXG4gICAgaW5kZXg6IHt4LCB5LCB6fSxcbiAgICBfc3RhY1F1ZXJ5XG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIE11bHRpcGxlIHVybHMsIG9uZSBmb3IgZWFjaCBhc3NldFxuICBsZXQgcmVxdWVzdERhdGE6IHtcbiAgICB1cmw6IHN0cmluZztcbiAgICByYXN0ZXJTZXJ2ZXJVcmw6IHN0cmluZztcbiAgICBwYXJhbXM6IFVSTFNlYXJjaFBhcmFtcyB8IG51bGw7XG4gICAgb3B0aW9ucz86IFJlcXVlc3RJbml0O1xuICB9W10gPSBbXTtcblxuICAvLyBXZSBhc3N1bWUgdGhhdCB0aGVyZSdzIG9ubHkgb25lIHZhbGlkaXR5IG1hc2sgZm9yIHRoZSBlbnRpcmUgYXNzZXQsIGFuZCB0aGVyZWZvcmUgYW55IG9mIHRoZVxuICAvLyByZXF1ZXN0cyB3b3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsaWRpdHkgYml0bWFwLiBUaGVyZWZvcmUgd2Ugb25seSByZXF1ZXN0IGEgbWFzayBmb3IgdGhlIGZpcnN0XG4gIC8vIGFzc2V0XG4gIGNvbnN0IHJlcXVlc3RNYXNrOiBib29sZWFuW10gPSBuZXcgQXJyYXkobG9hZEFzc2V0SWRzLmxlbmd0aCkuZmlsbChmYWxzZSk7XG4gIHJlcXVlc3RNYXNrWzBdID0gdHJ1ZTtcblxuICBpZiAodXNlU1RBQ1NlYXJjaGluZyAmJiBzdGFjLnR5cGUgIT09ICdGZWF0dXJlJykge1xuICAgIHJlcXVlc3REYXRhID0gemlwKGxvYWRBc3NldElkcywgcmVxdWVzdE1hc2spLm1hcCgoW2Fzc2V0SWQsIG1hc2tdKSA9PiB7XG4gICAgICBjb25zdCBwYXJhbXMgPSBnZXRTdGFjQXBpVXJsUGFyYW1zKHtcbiAgICAgICAgc3RhYyxcbiAgICAgICAgc3RhY1NlYXJjaFByb3ZpZGVyLFxuICAgICAgICBzdGFydERhdGUsXG4gICAgICAgIGVuZERhdGUsXG4gICAgICAgIG1hc2ssXG4gICAgICAgIGxvYWRBc3NldElkczogW2Fzc2V0SWRdLFxuICAgICAgICBfc3RhY1F1ZXJ5XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHVybEluZm8gPSBnZXRUaXRpbGVyVXJsKHtzdGFjLCB1c2VTVEFDU2VhcmNoaW5nLCB4LCB5LCB6fSk7XG4gICAgICByZXR1cm4gey4uLnVybEluZm8sIHBhcmFtc307XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoc3RhYy50eXBlID09PSAnRmVhdHVyZScpIHtcbiAgICByZXF1ZXN0RGF0YSA9IHppcDMobG9hZEFzc2V0SWRzLCBsb2FkQmFuZEluZGV4ZXMsIHJlcXVlc3RNYXNrKS5tYXAoXG4gICAgICAoW2Fzc2V0SWQsIGJhbmRJbmRleCwgbWFza10pID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gZ2V0U2luZ2xlQ09HVXJsUGFyYW1zKHtcbiAgICAgICAgICBzdGFjLFxuICAgICAgICAgIGxvYWRBc3NldElkOiBhc3NldElkLFxuICAgICAgICAgIGxvYWRCYW5kSW5kZXhlczogW2JhbmRJbmRleF0sXG4gICAgICAgICAgbWFza1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdXJsSW5mbyA9IGdldFRpdGlsZXJVcmwoe3N0YWMsIHVzZVNUQUNTZWFyY2hpbmcsIHgsIHksIHp9KTtcbiAgICAgICAgcmV0dXJuIHsuLi51cmxJbmZvLCBwYXJhbXN9O1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBpZiAoaXNWYWxpZFJlcXVlc3REYXRhKHJlcXVlc3REYXRhKSkge1xuICAgIGNvbnN0IGFzc2V0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcmVxdWVzdERhdGEubWFwKHJlcXVlc3QgPT5cbiAgICAgICAgZ2V0QXNzZXRSZXF1ZXN0KHsuLi5yZXF1ZXN0LCBvcHRpb25zOiByZXF1ZXN0Lm9wdGlvbnMgPz8ge3NpZ25hbH19KVxuICAgICAgKVxuICAgICk7XG4gICAgLy8gUHJvcGFnYXRlIHBlci1sYXllciByZXRyeSBvdmVycmlkZVxuICAgIHJldHVybiBhc3NldHMubWFwKGFzc2V0ID0+ICh7XG4gICAgICAuLi5hc3NldCxcbiAgICAgIHJhc3RlclNlcnZlck1heFJldHJpZXM6IG9wdGlvbnMuc3RhYy5yYXN0ZXJTZXJ2ZXJNYXhSZXRyaWVzLFxuICAgICAgcmFzdGVyU2VydmVyUmV0cnlEZWxheTogb3B0aW9ucy5zdGFjLnJhc3RlclNlcnZlclJldHJ5RGVsYXksXG4gICAgICByYXN0ZXJTZXJ2ZXJTZXJ2ZXJFcnJvcnNUb1JldHJ5OiBvcHRpb25zLnN0YWMucmFzdGVyU2VydmVyU2VydmVyRXJyb3JzVG9SZXRyeSxcbiAgICAgIHJhc3RlclNlcnZlck1heFBlclNlcnZlclJlcXVlc3RzOiBvcHRpb25zLnN0YWMucmFzdGVyU2VydmVyTWF4UGVyU2VydmVyUmVxdWVzdHNcbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBMb2FkIGltYWdlIGRhdGEgd2hlbiBjb25zb2xpZGF0ZWQgaW4gYmFuZHMgd2l0aGluIGEgc2luZ2xlIFNUQUMgQXNzZXRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZFNpbmdsZUFzc2V0U1RBQyhyZXF1ZXN0OiBBc3NldFJlcXVlc3REYXRhKTogUHJvbWlzZTxJbWFnZURhdGE+IHtcbiAgY29uc3QgaW1hZ2VCYW5kcyA9IGF3YWl0IGxvYWROcHlBcnJheShyZXF1ZXN0LCB0cnVlKTtcblxuICBpZiAoIWltYWdlQmFuZHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW1hZ2VCYW5kc1xuICAgIH07XG4gIH1cblxuICBjb25zdCBpbWFnZU1hc2sgPSAocmVxdWVzdC51c2VNYXNrICYmIGltYWdlQmFuZHMucG9wKCkpIHx8IG51bGw7XG4gIGxldCBtYXBwZWRJbWFnZUJhbmRzID0gaW1hZ2VCYW5kcztcbiAgaWYgKHJlcXVlc3QucmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzKSB7XG4gICAgbWFwcGVkSW1hZ2VCYW5kcyA9IHJlcXVlc3QucmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzLm1hcChpID0+IGltYWdlQmFuZHNbaV0pO1xuICB9XG4gIHJldHVybiB7aW1hZ2VCYW5kczogbWFwcGVkSW1hZ2VCYW5kcywgaW1hZ2VNYXNrfTtcbn1cblxuLyoqXG4gKiBMb2FkIGltYWdlIGRhdGEgd2hlbiBzcGxpdCBhbW9uZyBtdWx0aXBsZSBTVEFDIEFzc2V0c1xuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkTXVsdGlBc3NldFNUQUMocmVxdWVzdHM6IEFzc2V0UmVxdWVzdERhdGFbXSk6IFByb21pc2U8SW1hZ2VEYXRhPiB7XG4gIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChyZXF1ZXN0cy5tYXAocmVxdWVzdCA9PiBsb2FkTnB5QXJyYXkocmVxdWVzdCwgdHJ1ZSkpKTtcbiAgLy8gVGhlIGZpcnN0IHJlcXVlc3QgaW5jbHVkZXMgYSBtYXNrXG4gIGNvbnN0IGltYWdlTWFzayA9IHJlc3VsdHNbMF0/LnBvcCgpIHx8IG51bGw7XG4gIGNvbnN0IGltYWdlQmFuZHMgPSByZXN1bHRzLmZsYXQoKS5maWx0ZXIoYmFuZCA9PiBiYW5kICE9PSBudWxsKSBhcyBJbWFnZURhdGFbJ2ltYWdlQmFuZHMnXTtcbiAgcmV0dXJuIHtpbWFnZUJhbmRzLCBpbWFnZU1hc2t9O1xufVxuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciB0d28gYXJyYXlzIHNpbXVsdGFuZW91c2x5LCBzaW1pbGFyIHRvIFB5dGhvbidzIHppcCBidWlsdGluXG4gKi9cbmZ1bmN0aW9uIHppcDxUMSwgVDI+KGE6IFQxW10sIGI6IFQyW10pOiBbVDEsIFQyXVtdIHtcbiAgcmV0dXJuIGEubWFwKChrLCBpKSA9PiBbaywgYltpXV0pO1xufVxuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciB0aHJlZSBhcnJheXMgc2ltdWx0YW5lb3VzbHksIHNpbWlsYXIgdG8gUHl0aG9uJ3MgemlwIGJ1aWx0aW5cbiAqL1xuZnVuY3Rpb24gemlwMzxUMSwgVDIsIFQzPihhOiBUMVtdLCBiOiBUMltdLCBjOiBUM1tdKTogW1QxLCBUMiwgVDNdW10ge1xuICByZXR1cm4gYS5tYXAoKGssIGkpID0+IFtrLCBiW2ldLCBjW2ldXSk7XG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhbGwgYXJyYXkgZWxlbWVudHMgYXJlIHN0cmluZ3NcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZFJlcXVlc3REYXRhKFxuICBhcnI6IHt1cmw6IHVua25vd247IHBhcmFtczogdW5rbm93bjsgb3B0aW9ucz86IHVua25vd259W11cbik6IGFyciBpcyB7dXJsOiBzdHJpbmc7IHBhcmFtczogVVJMU2VhcmNoUGFyYW1zOyBvcHRpb25zOiB1bmtub3dufVtdIHtcbiAgcmV0dXJuIGFyci5ldmVyeSh4ID0+IHR5cGVvZiB4Py51cmwgPT09ICdzdHJpbmcnICYmIHg/LnBhcmFtcyAhPT0gbnVsbCk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGJhc2U2NCBpbWFnZSBkYXRhIHVybCBmb3IgY2F0ZWdvcmljYWwgY29sb3JtYXBcbiAqIEBwYXJhbSBjYXRlZ29yaWNhbE9wdGlvbnMgLSBjb2xvciBtYXAgY29uZmlndXJhdGlvbiBhbmQgbWluLW1heCB2YWx1ZXMgb2YgY2F0ZWdvcmljYWwgYmFuZFxuICogQHJldHVybnMgYmFzZTY0IGltYWdlIGRhdGEgdXJsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYXRlZ29yaWNhbENvbG9ybWFwRGF0YVVybChcbiAgY2F0ZWdvcmljYWxPcHRpb25zOiBDYXRlZ29yaWNhbENvbG9ybWFwT3B0aW9uc1xuKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGJpdG1hcCA9IGdlbmVyYXRlQ2F0ZWdvcmljYWxCaXRtYXBBcnJheShjYXRlZ29yaWNhbE9wdGlvbnMpO1xuICBpZiAoIWJpdG1hcCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBnZXRJbWFnZURhdGFVUkwoYml0bWFwLCBDQVRFR09SSUNBTF9URVhUVVJFX1dJRFRILCAxKTtcbn1cblxuLyoqXG4gKiBMb2FkIHRlcnJhaW4gbWVzaCBmcm9tIHJhc3RlciB0aWxlIHNlcnZlclxuICogQHBhcmFtIHByb3BzIC0gcHJvcGVydGllcyB0byBsb2FkIHRlcnJhaW4gZGF0YVxuICogQHJldHVybnMgdGVycmFpbiBtZXNoIGRhdGFcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRUZXJyYWluKHByb3BzOiB7XG4gIGluZGV4OiB7eDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcn07XG4gIHNpZ25hbDogQWJvcnRTaWduYWw7XG4gIHJhc3RlclRpbGVTZXJ2ZXJVcmxzOiBzdHJpbmdbXTtcbiAgYm91bmRzRm9yR2VvbWV0cnk/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgcmFzdGVyU2VydmVyTWF4UmV0cmllczogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICByYXN0ZXJTZXJ2ZXJSZXRyeURlbGF5OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHJhc3RlclNlcnZlclNlcnZlckVycm9yc1RvUmV0cnk/OiBudW1iZXJbXTtcbiAgcmFzdGVyU2VydmVyTWF4UGVyU2VydmVyUmVxdWVzdHM/OiBudW1iZXI7XG59KTogUHJvbWlzZTxUZXJyYWluRGF0YSB8IG51bGw+IHtcbiAgY29uc3Qge1xuICAgIGluZGV4OiB7eCwgeSwgen0sXG4gICAgYm91bmRzRm9yR2VvbWV0cnksXG4gICAgc2lnbmFsLFxuICAgIHJhc3RlclRpbGVTZXJ2ZXJVcmxzLFxuICAgIHJhc3RlclNlcnZlck1heFJldHJpZXMsXG4gICAgcmFzdGVyU2VydmVyTWF4UGVyU2VydmVyUmVxdWVzdHNcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IG1lc2hNYXhFcnJvciA9IGdldE1lc2hNYXhFcnJvcih6LCBNRVNIX01VTFRJUExJRVIpO1xuICBjb25zdCB0ZXJyYWluVXJsSW5mbyA9IGdldFRlcnJhaW5VcmwocmFzdGVyVGlsZVNlcnZlclVybHMsIHgsIHksIHosIG1lc2hNYXhFcnJvcik7XG4gIGNvbnN0IGxvYWRlck9wdGlvbnMgPSBnZXRMb2FkZXJPcHRpb25zKCk7XG4gIGNvbnN0IG51bUF0dGVtcHRzID0gMSArIChyYXN0ZXJTZXJ2ZXJNYXhSZXRyaWVzID8/IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkucmFzdGVyU2VydmVyTWF4UmV0cmllcyk7XG5cbiAgY29uc3QgbWVzaCA9IGF3YWl0IGdldFJlcXVlc3RUaHJvdHRsZSgpLnRocm90dGxlUmVxdWVzdChcbiAgICB0ZXJyYWluVXJsSW5mby5yYXN0ZXJTZXJ2ZXJVcmwsXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgZm9yIChsZXQgYXR0ZW1wdCA9IDA7IGF0dGVtcHQgPCBudW1BdHRlbXB0czsgYXR0ZW1wdCsrKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIChhd2FpdCBsb2FkKHRlcnJhaW5VcmxJbmZvLnVybCwgUXVhbnRpemVkTWVzaExvYWRlciwge1xuICAgICAgICAgICAgZmV0Y2g6IHtzaWduYWx9LFxuICAgICAgICAgICAgJ3F1YW50aXplZC1tZXNoJzoge1xuICAgICAgICAgICAgICAuLi5sb2FkZXJPcHRpb25zWydxdWFudGl6ZWQtbWVzaCddLFxuICAgICAgICAgICAgICBib3VuZHM6IGJvdW5kc0Zvckdlb21ldHJ5LFxuICAgICAgICAgICAgICBza2lydEhlaWdodDogbWVzaE1heEVycm9yICogU0tJUlRfSEVJR0hUX01VTFRJUExJRVJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSkgYXMgUHJvbWlzZTxUZXJyYWluRGF0YT47XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgLy8gUmV0cnkgaWYgU2VydmljZSBUZW1wb3JhcmlseSBVbmF2YWlsYWJsZSA1MDMgZXJyb3IgZXRjLlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGF0dGVtcHQgPCBudW1BdHRlbXB0cyAmJlxuICAgICAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBGZXRjaEVycm9yICYmXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIHByb3BzLnJhc3RlclNlcnZlclNlcnZlckVycm9yc1RvUmV0cnkgPz9cbiAgICAgICAgICAgICAgZ2V0QXBwbGljYXRpb25Db25maWcoKS5yYXN0ZXJTZXJ2ZXJTZXJ2ZXJFcnJvcnNUb1JldHJ5XG4gICAgICAgICAgICApPy5pbmNsdWRlcyhlcnJvci5yZXNwb25zZT8uc3RhdHVzIGFzIG51bWJlcilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGF3YWl0IHNsZWVwKFxuICAgICAgICAgICAgICBwcm9wcy5yYXN0ZXJTZXJ2ZXJSZXRyeURlbGF5ID8/IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkucmFzdGVyU2VydmVyUmV0cnlEZWxheVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbiAgICByYXN0ZXJTZXJ2ZXJNYXhQZXJTZXJ2ZXJSZXF1ZXN0c1xuICApO1xuXG4gIHJldHVybiBtZXNoO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUVBLElBQUFJLFlB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
|
|
@@ -98,6 +98,10 @@ export default class RasterTileLayer extends KeplerLayer {
|
|
|
98
98
|
shouldLoadTerrain: boolean;
|
|
99
99
|
metadata: {
|
|
100
100
|
rasterTileServerUrls: string[];
|
|
101
|
+
rasterServerMaxRetries?: number;
|
|
102
|
+
rasterServerRetryDelay?: number;
|
|
103
|
+
rasterServerServerErrorsToRetry?: number[];
|
|
104
|
+
rasterServerMaxPerServerRequests?: number;
|
|
101
105
|
};
|
|
102
106
|
globalBounds: DataSourceParams['globalBounds'];
|
|
103
107
|
}, tileSource: any): Promise<any>;
|