@kepler.gl/reducers 3.0.0-alpha.1 → 3.0.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/dist/combined-updaters.js +15 -22
- package/dist/composer-helpers.js +1 -21
- package/dist/composers.js +1 -21
- package/dist/core.js +1 -21
- package/dist/data-utils.js +5 -22
- package/dist/export-utils.js +1 -21
- package/dist/index.js +1 -21
- package/dist/interaction-utils.js +8 -23
- package/dist/layer-utils.js +4 -24
- package/dist/map-state-updaters.js +1 -21
- package/dist/map-state.js +1 -21
- package/dist/map-style-updaters.js +2 -22
- package/dist/map-style.js +1 -21
- package/dist/merger-handler.js +1 -21
- package/dist/middleware.js +6 -22
- package/dist/provider-state-updaters.d.ts +0 -7
- package/dist/provider-state-updaters.js +2 -92
- package/dist/provider-state.js +2 -22
- package/dist/root.js +1 -21
- package/dist/ui-state-updaters.js +1 -21
- package/dist/ui-state.js +1 -21
- package/dist/vis-state-merger.d.ts +5 -1
- package/dist/vis-state-merger.js +30 -36
- package/dist/vis-state-selectors.js +8 -24
- package/dist/vis-state-updaters.d.ts +1 -1
- package/dist/vis-state-updaters.js +48 -28
- package/dist/vis-state.d.ts +4 -4
- package/dist/vis-state.js +1 -21
- package/package.json +20 -19
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
// Copyright (c) 2023 Uber Technologies, Inc.
|
|
2
|
-
//
|
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
5
|
-
// in the Software without restriction, including without limitation the rights
|
|
6
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
8
|
-
// furnished to do so, subject to the following conditions:
|
|
9
|
-
//
|
|
10
|
-
// The above copyright notice and this permission notice shall be included in
|
|
11
|
-
// all copies or substantial portions of the Software.
|
|
12
|
-
//
|
|
13
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
-
// THE SOFTWARE.
|
|
20
|
-
|
|
21
1
|
"use strict";
|
|
22
2
|
|
|
23
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
@@ -25,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
25
5
|
Object.defineProperty(exports, "__esModule", {
|
|
26
6
|
value: true
|
|
27
7
|
});
|
|
28
|
-
exports.
|
|
8
|
+
exports.resetProviderStatusUpdater = exports.loadCloudMapErrorUpdater = exports.loadCloudMapSuccessUpdater = exports.loadCloudMapUpdater = exports.exportFileErrorUpdater = exports.postSaveLoadSuccessUpdater = exports.exportFileSuccessUpdater = exports.exportFileToCloudUpdater = exports.INITIAL_PROVIDER_STATE = void 0;
|
|
29
9
|
|
|
30
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
31
11
|
|
|
@@ -437,76 +417,6 @@ var resetProviderStatusUpdater = function resetProviderStatusUpdater(state) {
|
|
|
437
417
|
successInfo: {}
|
|
438
418
|
});
|
|
439
419
|
};
|
|
440
|
-
/**
|
|
441
|
-
* Set current cloudProvider
|
|
442
|
-
*/
|
|
443
|
-
|
|
444
420
|
|
|
445
421
|
exports.resetProviderStatusUpdater = resetProviderStatusUpdater;
|
|
446
|
-
|
|
447
|
-
var setCloudProviderUpdater = function setCloudProviderUpdater(state, action) {
|
|
448
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
449
|
-
isProviderLoading: false,
|
|
450
|
-
providerError: null,
|
|
451
|
-
successInfo: {},
|
|
452
|
-
currentProvider: action.payload
|
|
453
|
-
});
|
|
454
|
-
};
|
|
455
|
-
|
|
456
|
-
exports.setCloudProviderUpdater = setCloudProviderUpdater;
|
|
457
|
-
|
|
458
|
-
var getSavedMapsUpdater = function getSavedMapsUpdater(state, action) {
|
|
459
|
-
var provider = action.payload;
|
|
460
|
-
|
|
461
|
-
if (!_validateProvider(provider, 'listMaps')) {
|
|
462
|
-
return state;
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
var getSavedMapsTask = (0, _tasks2.GET_SAVED_MAPS_TASK)(provider).bimap( // success
|
|
466
|
-
function (visualizations) {
|
|
467
|
-
return (0, _actions.getSavedMapsSuccess)({
|
|
468
|
-
visualizations: visualizations,
|
|
469
|
-
provider: provider
|
|
470
|
-
});
|
|
471
|
-
}, // error
|
|
472
|
-
function (error) {
|
|
473
|
-
return (0, _actions.getSavedMapsError)({
|
|
474
|
-
error: error,
|
|
475
|
-
provider: provider
|
|
476
|
-
});
|
|
477
|
-
});
|
|
478
|
-
return (0, _tasks.withTask)(_objectSpread(_objectSpread({}, state), {}, {
|
|
479
|
-
isProviderLoading: true
|
|
480
|
-
}), getSavedMapsTask);
|
|
481
|
-
};
|
|
482
|
-
|
|
483
|
-
exports.getSavedMapsUpdater = getSavedMapsUpdater;
|
|
484
|
-
|
|
485
|
-
var getSavedMapsSuccessUpdater = function getSavedMapsSuccessUpdater(state, action) {
|
|
486
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
487
|
-
isProviderLoading: false,
|
|
488
|
-
visualizations: action.payload.visualizations
|
|
489
|
-
});
|
|
490
|
-
};
|
|
491
|
-
|
|
492
|
-
exports.getSavedMapsSuccessUpdater = getSavedMapsSuccessUpdater;
|
|
493
|
-
|
|
494
|
-
var getSavedMapsErrorUpdater = function getSavedMapsErrorUpdater(state, action) {
|
|
495
|
-
var message = (0, _utils.getError)(action.payload.error) || "Error getting saved maps from ".concat(state.currentProvider);
|
|
496
|
-
|
|
497
|
-
_console["default"].warn(action.payload.error);
|
|
498
|
-
|
|
499
|
-
var newState = _objectSpread(_objectSpread({}, state), {}, {
|
|
500
|
-
currentProvider: null,
|
|
501
|
-
isProviderLoading: false
|
|
502
|
-
});
|
|
503
|
-
|
|
504
|
-
return (0, _tasks.withTask)(newState, createGlobalNotificationTasks({
|
|
505
|
-
type: 'error',
|
|
506
|
-
message: message,
|
|
507
|
-
delayClose: false
|
|
508
|
-
}));
|
|
509
|
-
};
|
|
510
|
-
|
|
511
|
-
exports.getSavedMapsErrorUpdater = getSavedMapsErrorUpdater;
|
|
512
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm92aWRlci1zdGF0ZS11cGRhdGVycy50cyJdLCJuYW1lcyI6WyJJTklUSUFMX1BST1ZJREVSX1NUQVRFIiwiaXNQcm92aWRlckxvYWRpbmciLCJpc0Nsb3VkTWFwTG9hZGluZyIsInByb3ZpZGVyRXJyb3IiLCJjdXJyZW50UHJvdmlkZXIiLCJzdWNjZXNzSW5mbyIsIm1hcFNhdmVkIiwidmlzdWFsaXphdGlvbnMiLCJjcmVhdGVBY3Rpb25UYXNrIiwiYWN0aW9uIiwicGF5bG9hZCIsIm1hcCIsIl8iLCJfdmFsaWRhdGVQcm92aWRlciIsInByb3ZpZGVyIiwibWV0aG9kIiwiQ29uc29sZSIsImVycm9yIiwibmFtZSIsImNyZWF0ZUdsb2JhbE5vdGlmaWNhdGlvblRhc2tzIiwidHlwZSIsIm1lc3NhZ2UiLCJkZWxheUNsb3NlIiwiaWQiLCJzdWNjZXNzTm90ZSIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTIiwic3VjY2VzcyIsInRvcGljIiwiREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTIiwiZ2xvYmFsIiwidGFzayIsImV4cG9ydEZpbGVUb0Nsb3VkVXBkYXRlciIsInN0YXRlIiwibWFwRGF0YSIsIm9wdGlvbnMiLCJvblN1Y2Nlc3MiLCJvbkVycm9yIiwiY2xvc2VNb2RhbCIsIm5ld1N0YXRlIiwidXBsb2FkRmlsZVRhc2siLCJiaW1hcCIsInJlc3BvbnNlIiwiZXhwb3J0RmlsZVN1Y2Nlc3NVcGRhdGVyIiwiaXNQdWJsaWMiLCJ0YXNrcyIsImZpbHRlciIsImQiLCJsZW5ndGgiLCJwb3N0U2F2ZUxvYWRTdWNjZXNzVXBkYXRlciIsImV4cG9ydEZpbGVFcnJvclVwZGF0ZXIiLCJpc0ZpbGVDb25mbGljdCIsIk9WRVJXUklURV9NQVBfSUQiLCJsb2FkQ2xvdWRNYXBVcGRhdGVyIiwibG9hZFBhcmFtcyIsIndhcm4iLCJGSUxFX0NPTkZMSUNUX01TRyIsImNoZWNrTG9hZE1hcFJlc3BvbnNlRXJyb3IiLCJFcnJvciIsImRhdGFzZXRzIiwiY29uZmlnIiwiZ2V0RGF0YXNldEhhbmRsZXIiLCJmb3JtYXQiLCJkZWZhdWx0SGFuZGxlciIsIkRBVEFTRVRfSEFORExFUlMiLCJEQVRBU0VUX0ZPUk1BVFMiLCJjc3YiLCJzdXBwb3J0ZWRGb3JtYXQiLCJPYmplY3QiLCJrZXlzIiwiayIsImpvaW4iLCJwYXJzZUxvYWRNYXBSZXNwb25zZSIsInByb2Nlc3Nvck1ldGhvZCIsInBhcnNlZERhdGFzZXRzIiwiZHMiLCJpIiwia2VwbGVyZ2wiLCJpbmZvIiwiZGF0YSIsImxvYWRDbG91ZE1hcFN1Y2Nlc3NVcGRhdGVyIiwiZm9ybWF0RXJyb3IiLCJsb2FkQ2xvdWRNYXBFcnJvclVwZGF0ZXIiLCJyZXNldFByb3ZpZGVyU3RhdHVzVXBkYXRlciIsInNldENsb3VkUHJvdmlkZXJVcGRhdGVyIiwiZ2V0U2F2ZWRNYXBzVXBkYXRlciIsImdldFNhdmVkTWFwc1Rhc2siLCJnZXRTYXZlZE1hcHNTdWNjZXNzVXBkYXRlciIsImdldFNhdmVkTWFwc0Vycm9yVXBkYXRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFPQTs7QUFlQTs7QUFRQTs7QUFDQTs7Ozs7O0FBa0JPLElBQU1BLHNCQUFxQyxHQUFHO0FBQ25EQyxFQUFBQSxpQkFBaUIsRUFBRSxLQURnQztBQUVuREMsRUFBQUEsaUJBQWlCLEVBQUUsS0FGZ0M7QUFHbkRDLEVBQUFBLGFBQWEsRUFBRSxJQUhvQztBQUluREMsRUFBQUEsZUFBZSxFQUFFLElBSmtDO0FBS25EQyxFQUFBQSxXQUFXLEVBQUUsRUFMc0M7QUFNbkRDLEVBQUFBLFFBQVEsRUFBRSxJQU55QztBQU9uREMsRUFBQUEsY0FBYyxFQUFFO0FBUG1DLENBQTlDOzs7QUFVUCxTQUFTQyxnQkFBVCxDQUEwQkMsTUFBMUIsRUFBa0NDLE9BQWxDLEVBQTJDO0FBQ3pDLE1BQUksT0FBT0QsTUFBUCxLQUFrQixVQUF0QixFQUFrQztBQUNoQyxXQUFPLDJCQUFjRSxHQUFkLENBQWtCLFVBQUFDLENBQUM7QUFBQSxhQUFJSCxNQUFNLENBQUNDLE9BQUQsQ0FBVjtBQUFBLEtBQW5CLENBQVA7QUFDRDs7QUFFRCxTQUFPLElBQVA7QUFDRDs7QUFFRCxTQUFTRyxpQkFBVCxDQUEyQkMsUUFBM0IsRUFBcUNDLE1BQXJDLEVBQTZDO0FBQzNDLE1BQUksQ0FBQ0QsUUFBTCxFQUFlO0FBQ2JFLHdCQUFRQyxLQUFSOztBQUNBLFdBQU8sS0FBUDtBQUNEOztBQUVELE1BQUksT0FBT0gsUUFBUSxDQUFDQyxNQUFELENBQWYsS0FBNEIsVUFBaEMsRUFBNEM7QUFDMUNDLHdCQUFRQyxLQUFSLFdBQWlCRixNQUFqQixtREFBZ0VELFFBQVEsQ0FBQ0ksSUFBekU7O0FBQ0EsV0FBTyxLQUFQO0FBQ0Q7O0FBRUQsU0FBTyxJQUFQO0FBQ0Q7O0FBRUQsU0FBU0MsNkJBQVQsT0FRRztBQUFBLE1BUERDLElBT0MsUUFQREEsSUFPQztBQUFBLE1BTkRDLE9BTUMsUUFOREEsT0FNQztBQUFBLDZCQUxEQyxVQUtDO0FBQUEsTUFMREEsVUFLQyxnQ0FMWSxJQUtaO0FBQ0QsTUFBTUMsRUFBRSxHQUFHLDRCQUFYO0FBQ0EsTUFBTUMsV0FBVyxHQUFHO0FBQ2xCRCxJQUFBQSxFQUFFLEVBQUZBLEVBRGtCO0FBRWxCSCxJQUFBQSxJQUFJLEVBQUVLLHNDQUEyQkwsSUFBSSxJQUFJLEVBQW5DLEtBQTBDSyxzQ0FBMkJDLE9BRnpEO0FBR2xCQyxJQUFBQSxLQUFLLEVBQUVDLHVDQUE0QkMsTUFIakI7QUFJbEJSLElBQUFBLE9BQU8sRUFBUEE7QUFKa0IsR0FBcEI7QUFNQSxNQUFNUyxJQUFJLEdBQUcsMkJBQWNuQixHQUFkLENBQWtCLFVBQUFDLENBQUM7QUFBQSxXQUFJLDhCQUFnQlksV0FBaEIsQ0FBSjtBQUFBLEdBQW5CLENBQWI7QUFDQSxTQUFPRixVQUFVLEdBQUcsQ0FBQ1EsSUFBRCxFQUFPLHdCQUFXLElBQVgsRUFBaUJuQixHQUFqQixDQUFxQixVQUFBQyxDQUFDO0FBQUEsV0FBSSxpQ0FBbUJXLEVBQW5CLENBQUo7QUFBQSxHQUF0QixDQUFQLENBQUgsR0FBK0QsQ0FBQ08sSUFBRCxDQUFoRjtBQUNEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUEyQixDQUN0Q0MsS0FEc0MsRUFFdEN2QixNQUZzQyxFQUdwQjtBQUFBLHdCQUN3REEsTUFBTSxDQUFDQyxPQUQvRDtBQUFBLE1BQ1h1QixPQURXLG1CQUNYQSxPQURXO0FBQUEsTUFDRm5CLFFBREUsbUJBQ0ZBLFFBREU7QUFBQSw4Q0FDUW9CLE9BRFI7QUFBQSxNQUNRQSxPQURSLHNDQUNrQixFQURsQjtBQUFBLE1BQ3NCQyxTQUR0QixtQkFDc0JBLFNBRHRCO0FBQUEsTUFDaUNDLE9BRGpDLG1CQUNpQ0EsT0FEakM7QUFBQSxNQUMwQ0MsVUFEMUMsbUJBQzBDQSxVQUQxQzs7QUFHbEIsTUFBSSxDQUFDeEIsaUJBQWlCLENBQUNDLFFBQUQsRUFBVyxXQUFYLENBQXRCLEVBQStDO0FBQzdDLFdBQU9rQixLQUFQO0FBQ0Q7O0FBRUQsTUFBTU0sUUFBUSxtQ0FDVE4sS0FEUztBQUVaL0IsSUFBQUEsaUJBQWlCLEVBQUUsSUFGUDtBQUdaRyxJQUFBQSxlQUFlLEVBQUVVLFFBQVEsQ0FBQ0k7QUFIZCxJQUFkLENBUGtCLENBYWxCOzs7QUFDQSxNQUFNUixPQUFPLEdBQUc7QUFDZHVCLElBQUFBLE9BQU8sRUFBUEEsT0FEYztBQUVkQyxJQUFBQSxPQUFPLEVBQVBBO0FBRmMsR0FBaEI7QUFJQSxNQUFNSyxjQUFjLEdBQUcsdUNBQTBCO0FBQUN6QixJQUFBQSxRQUFRLEVBQVJBLFFBQUQ7QUFBV0osSUFBQUEsT0FBTyxFQUFQQTtBQUFYLEdBQTFCLEVBQStDOEIsS0FBL0MsRUFDckI7QUFDQSxZQUFBQyxRQUFRO0FBQUEsV0FBSSxnQ0FBa0I7QUFBQ0EsTUFBQUEsUUFBUSxFQUFSQSxRQUFEO0FBQVczQixNQUFBQSxRQUFRLEVBQVJBLFFBQVg7QUFBcUJvQixNQUFBQSxPQUFPLEVBQVBBLE9BQXJCO0FBQThCQyxNQUFBQSxTQUFTLEVBQVRBLFNBQTlCO0FBQXlDRSxNQUFBQSxVQUFVLEVBQVZBO0FBQXpDLEtBQWxCLENBQUo7QUFBQSxHQUZhLEVBR3JCO0FBQ0EsWUFBQXBCLEtBQUs7QUFBQSxXQUFJLDhCQUFnQjtBQUFDQSxNQUFBQSxLQUFLLEVBQUxBLEtBQUQ7QUFBUUgsTUFBQUEsUUFBUSxFQUFSQSxRQUFSO0FBQWtCb0IsTUFBQUEsT0FBTyxFQUFQQSxPQUFsQjtBQUEyQkUsTUFBQUEsT0FBTyxFQUFQQTtBQUEzQixLQUFoQixDQUFKO0FBQUEsR0FKZ0IsQ0FBdkI7QUFPQSxTQUFPLHFCQUFTRSxRQUFULEVBQW1CQyxjQUFuQixDQUFQO0FBQ0QsQ0E3Qk07Ozs7QUErQkEsSUFBTUcsd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUEyQixDQUN0Q1YsS0FEc0MsRUFFdEN2QixNQUZzQyxFQUdwQjtBQUFBLHlCQUNnREEsTUFBTSxDQUFDQyxPQUR2RDtBQUFBLE1BQ1grQixRQURXLG9CQUNYQSxRQURXO0FBQUEsTUFDRDNCLFFBREMsb0JBQ0RBLFFBREM7QUFBQSwrQ0FDU29CLE9BRFQ7QUFBQSxNQUNTQSxPQURULHNDQUNtQixFQURuQjtBQUFBLE1BQ3VCQyxTQUR2QixvQkFDdUJBLFNBRHZCO0FBQUEsTUFDa0NFLFVBRGxDLG9CQUNrQ0EsVUFEbEM7O0FBR2xCLE1BQU1DLFFBQVEsbUNBQ1ROLEtBRFM7QUFFWi9CLElBQUFBLGlCQUFpQixFQUFFLEtBRlA7QUFHWjtBQUNBSSxJQUFBQSxXQUFXLEVBQUVvQztBQUpELEtBS1IsQ0FBQ1AsT0FBTyxDQUFDUyxRQUFULEdBQ0E7QUFDRXJDLElBQUFBLFFBQVEsRUFBRVEsUUFBUSxDQUFDSTtBQURyQixHQURBLEdBSUEsRUFUUSxDQUFkOztBQVlBLE1BQU0wQixLQUFLLEdBQUcsQ0FDWnBDLGdCQUFnQixDQUFDMkIsU0FBRCxFQUFZO0FBQUNNLElBQUFBLFFBQVEsRUFBUkEsUUFBRDtBQUFXM0IsSUFBQUEsUUFBUSxFQUFSQSxRQUFYO0FBQXFCb0IsSUFBQUEsT0FBTyxFQUFQQTtBQUFyQixHQUFaLENBREosRUFFWkcsVUFBVSxJQUNSLDJCQUFjMUIsR0FBZCxDQUFrQixVQUFBQyxDQUFDO0FBQUEsV0FBSSx5REFBb0NvQixLQUFLLENBQUM1QixlQUExQyxPQUFKO0FBQUEsR0FBbkIsQ0FIVSxFQUlaeUMsTUFKWSxDQUlMLFVBQUFDLENBQUM7QUFBQSxXQUFJQSxDQUFKO0FBQUEsR0FKSSxDQUFkO0FBTUEsU0FBT0YsS0FBSyxDQUFDRyxNQUFOLEdBQWUscUJBQVNULFFBQVQsRUFBbUJNLEtBQW5CLENBQWYsR0FBMkNOLFFBQWxEO0FBQ0QsQ0F6Qk07QUEyQlA7QUFDQTtBQUNBOzs7OztBQUNPLElBQU1VLDBCQUEwQixHQUFHLFNBQTdCQSwwQkFBNkIsQ0FDeENoQixLQUR3QyxFQUV4Q3ZCLE1BRndDLEVBR3RCO0FBQ2xCLE1BQU1ZLE9BQU8sR0FBR1osTUFBTSxDQUFDQyxPQUFQLDhCQUFxQ3NCLEtBQUssQ0FBQzVCLGVBQTNDLGFBQWhCO0FBRUEsTUFBTXdDLEtBQUssSUFDVCwyQkFBY2pDLEdBQWQsQ0FBa0IsVUFBQUMsQ0FBQztBQUFBLFdBQUksMEJBQVksSUFBWixDQUFKO0FBQUEsR0FBbkIsQ0FEUyxFQUVULDJCQUFjRCxHQUFkLENBQWtCLFVBQUFDLENBQUM7QUFBQSxXQUFJLG1DQUFKO0FBQUEsR0FBbkIsQ0FGUyw2Q0FHTk8sNkJBQTZCLENBQUM7QUFBQ0UsSUFBQUEsT0FBTyxFQUFQQTtBQUFELEdBQUQsQ0FIdkIsRUFBWDtBQU1BLFNBQU8scUJBQVNXLEtBQVQsRUFBZ0JZLEtBQWhCLENBQVA7QUFDRCxDQWJNOzs7O0FBZUEsSUFBTUssc0JBQXNCLEdBQUcsU0FBekJBLHNCQUF5QixDQUNwQ2pCLEtBRG9DLEVBRXBDdkIsTUFGb0MsRUFHbEI7QUFBQSx5QkFDaUJBLE1BQU0sQ0FBQ0MsT0FEeEI7QUFBQSxNQUNYTyxLQURXLG9CQUNYQSxLQURXO0FBQUEsTUFDSkgsUUFESSxvQkFDSkEsUUFESTtBQUFBLE1BQ01zQixPQUROLG9CQUNNQSxPQUROOztBQUdsQixNQUFNRSxRQUFRLG1DQUNUTixLQURTO0FBRVovQixJQUFBQSxpQkFBaUIsRUFBRTtBQUZQLElBQWQ7O0FBS0EsTUFBSWlELGNBQWMsQ0FBQ2pDLEtBQUQsQ0FBbEIsRUFBMkI7QUFDekJxQixJQUFBQSxRQUFRLENBQUNoQyxRQUFULEdBQW9CUSxRQUFRLENBQUNJLElBQTdCO0FBQ0EsV0FBTyxxQkFBU29CLFFBQVQsRUFBbUIsQ0FBQywyQkFBYzNCLEdBQWQsQ0FBa0IsVUFBQUMsQ0FBQztBQUFBLGFBQUksMEJBQVl1QywyQkFBWixDQUFKO0FBQUEsS0FBbkIsQ0FBRCxDQUFuQixDQUFQO0FBQ0Q7O0FBRURiLEVBQUFBLFFBQVEsQ0FBQ25DLGFBQVQsR0FBeUIscUJBQVNjLEtBQVQsQ0FBekI7QUFDQSxNQUFNYSxJQUFJLEdBQUd0QixnQkFBZ0IsQ0FBQzRCLE9BQUQsRUFBVTtBQUFDbkIsSUFBQUEsS0FBSyxFQUFMQSxLQUFEO0FBQVFILElBQUFBLFFBQVEsRUFBUkE7QUFBUixHQUFWLENBQTdCO0FBRUEsU0FBT2dCLElBQUksR0FBRyxxQkFBU1EsUUFBVCxFQUFtQlIsSUFBbkIsQ0FBSCxHQUE4QlEsUUFBekM7QUFDRCxDQXBCTTs7OztBQXNCQSxJQUFNYyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQXNCLENBQ2pDcEIsS0FEaUMsRUFFakN2QixNQUZpQyxFQUdmO0FBQUEseUJBQ2lDQSxNQUFNLENBQUNDLE9BRHhDO0FBQUEsTUFDWDJDLFVBRFcsb0JBQ1hBLFVBRFc7QUFBQSxNQUNDdkMsUUFERCxvQkFDQ0EsUUFERDtBQUFBLE1BQ1dxQixTQURYLG9CQUNXQSxTQURYO0FBQUEsTUFDc0JDLE9BRHRCLG9CQUNzQkEsT0FEdEI7O0FBRWxCLE1BQUksQ0FBQ2lCLFVBQUwsRUFBaUI7QUFDZnJDLHdCQUFRc0MsSUFBUixDQUFhLHlDQUFiOztBQUNBLFdBQU90QixLQUFQO0FBQ0Q7O0FBQ0QsTUFBSSxDQUFDbkIsaUJBQWlCLENBQUNDLFFBQUQsRUFBVyxhQUFYLENBQXRCLEVBQWlEO0FBQy9DLFdBQU9rQixLQUFQO0FBQ0Q7O0FBRUQsTUFBTU0sUUFBUSxtQ0FDVE4sS0FEUztBQUVaL0IsSUFBQUEsaUJBQWlCLEVBQUUsSUFGUDtBQUdaQyxJQUFBQSxpQkFBaUIsRUFBRTtBQUhQLElBQWQsQ0FWa0IsQ0FnQmxCOzs7QUFDQSxNQUFNcUMsY0FBYyxHQUFHLGlDQUFvQjtBQUFDekIsSUFBQUEsUUFBUSxFQUFSQSxRQUFEO0FBQVdKLElBQUFBLE9BQU8sRUFBRTJDO0FBQXBCLEdBQXBCLEVBQXFEYixLQUFyRCxFQUNyQjtBQUNBO0FBQ0EsWUFBQUMsUUFBUTtBQUFBLFdBQUksa0NBQW9CO0FBQUNBLE1BQUFBLFFBQVEsRUFBUkEsUUFBRDtBQUFXWSxNQUFBQSxVQUFVLEVBQVZBLFVBQVg7QUFBdUJ2QyxNQUFBQSxRQUFRLEVBQVJBLFFBQXZCO0FBQWlDcUIsTUFBQUEsU0FBUyxFQUFUQSxTQUFqQztBQUE0Q0MsTUFBQUEsT0FBTyxFQUFQQTtBQUE1QyxLQUFwQixDQUFKO0FBQUEsR0FIYSxFQUlyQjtBQUNBO0FBQ0EsWUFBQW5CLEtBQUs7QUFBQSxXQUFJLGdDQUFrQjtBQUFDQSxNQUFBQSxLQUFLLEVBQUxBLEtBQUQ7QUFBUUgsTUFBQUEsUUFBUSxFQUFSQSxRQUFSO0FBQWtCc0IsTUFBQUEsT0FBTyxFQUFQQTtBQUFsQixLQUFsQixDQUFKO0FBQUEsR0FOZ0IsQ0FBdkI7QUFTQSxTQUFPLHFCQUFTRSxRQUFULEVBQW1CQyxjQUFuQixDQUFQO0FBQ0QsQ0E5Qk07Ozs7QUFnQ1AsU0FBU1csY0FBVCxDQUF3QmpDLEtBQXhCLEVBQStCO0FBQzdCLFNBQU9BLEtBQUssSUFBSUEsS0FBSyxDQUFDSSxPQUFOLEtBQWtCa0MsaUNBQWxDO0FBQ0Q7O0FBRUQsU0FBU0MseUJBQVQsQ0FBbUNmLFFBQW5DLEVBQTZDO0FBQzNDLE1BQUksQ0FBQ0EsUUFBRCxJQUFhLENBQUMsMEJBQWNBLFFBQWQsQ0FBbEIsRUFBMkM7QUFDekMsV0FBTyxJQUFJZ0IsS0FBSixDQUFVLDRCQUFWLENBQVA7QUFDRDs7QUFDRCxNQUFJLENBQUMsMEJBQWNoQixRQUFRLENBQUM5QixHQUF2QixDQUFMLEVBQWtDO0FBQ2hDLFdBQU8sSUFBSThDLEtBQUosMERBQVA7QUFDRDs7QUFDRCxNQUFJLENBQUNoQixRQUFRLENBQUM5QixHQUFULENBQWErQyxRQUFkLElBQTBCLENBQUNqQixRQUFRLENBQUM5QixHQUFULENBQWFnRCxNQUE1QyxFQUFvRDtBQUNsRCxXQUFPLElBQUlGLEtBQUosOEVBQVA7QUFDRDs7QUFFRCxTQUFPLElBQVA7QUFDRDs7QUFFRCxTQUFTRyxpQkFBVCxDQUEyQkMsTUFBM0IsRUFBbUM7QUFDakMsTUFBTUMsY0FBYyxHQUFHQyw2QkFBaUJDLDJCQUFnQkMsR0FBakMsQ0FBdkI7O0FBQ0EsTUFBSSxDQUFDSixNQUFMLEVBQWE7QUFDWDdDLHdCQUFRc0MsSUFBUixDQUFhLHNFQUFiOztBQUNBLFdBQU9RLGNBQVA7QUFDRDs7QUFFRCxNQUFJLENBQUNDLDZCQUFpQkYsTUFBakIsQ0FBTCxFQUErQjtBQUM3QixRQUFNSyxlQUFlLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSiwwQkFBWixFQUNyQnJELEdBRHFCLENBQ2pCLFVBQUEwRCxDQUFDO0FBQUEsd0JBQVFBLENBQVI7QUFBQSxLQURnQixFQUVyQkMsSUFGcUIsQ0FFaEIsSUFGZ0IsQ0FBeEI7O0FBR0F0RCx3QkFBUXNDLElBQVIsMEJBQ29CTyxNQURwQixpQ0FDaURLLGVBRGpEOztBQUdBLFdBQU9KLGNBQVA7QUFDRDs7QUFFRCxTQUFPQyw2QkFBaUJGLE1BQWpCLENBQVA7QUFDRDs7QUFFRCxTQUFTVSxvQkFBVCxDQUE4QjlCLFFBQTlCLEVBQXdDWSxVQUF4QyxFQUFvRHZDLFFBQXBELEVBQThEO0FBQUEsTUFDckRILEdBRHFELEdBQ3RDOEIsUUFEc0MsQ0FDckQ5QixHQURxRDtBQUFBLE1BQ2hEa0QsTUFEZ0QsR0FDdENwQixRQURzQyxDQUNoRG9CLE1BRGdEO0FBRTVELE1BQU1XLGVBQWUsR0FBR1osaUJBQWlCLENBQUNDLE1BQUQsQ0FBekM7QUFFQSxNQUFNWSxjQUFjLEdBQUcsb0JBQVE5RCxHQUFHLENBQUMrQyxRQUFaLEVBQXNCL0MsR0FBdEIsQ0FBMEIsVUFBQytELEVBQUQsRUFBS0MsQ0FBTCxFQUFXO0FBQzFELFFBQUlkLE1BQU0sS0FBS0csMkJBQWdCWSxRQUEvQixFQUF5QztBQUN2QztBQUNBLGFBQU9KLGVBQWUsQ0FBQ0UsRUFBRCxDQUF0QjtBQUNEOztBQUNELFFBQU1HLElBQUksR0FBSUgsRUFBRSxJQUFJQSxFQUFFLENBQUNHLElBQVYsSUFBbUI7QUFBQ3RELE1BQUFBLEVBQUUsRUFBRSwyQkFBZSxDQUFmO0FBQUwsS0FBaEM7QUFDQSxRQUFNdUQsSUFBSSxHQUFHTixlQUFlLENBQUNFLEVBQUUsQ0FBQ0ksSUFBSCxJQUFXSixFQUFaLENBQTVCO0FBQ0EsV0FBTztBQUFDRyxNQUFBQSxJQUFJLEVBQUpBLElBQUQ7QUFBT0MsTUFBQUEsSUFBSSxFQUFKQTtBQUFQLEtBQVA7QUFDRCxHQVJzQixDQUF2Qjs7QUFVQSxNQUFNRCxJQUFJLG1DQUNMbEUsR0FBRyxDQUFDa0UsSUFEQztBQUVSL0QsSUFBQUEsUUFBUSxFQUFFQSxRQUFRLENBQUNJLElBRlg7QUFHUm1DLElBQUFBLFVBQVUsRUFBVkE7QUFIUSxJQUFWOztBQUtBO0FBQ0VLLElBQUFBLFFBQVEsRUFBRWUsY0FEWjtBQUVFSSxJQUFBQSxJQUFJLEVBQUpBO0FBRkYsS0FHTWxFLEdBQUcsQ0FBQ2dELE1BQUosR0FBYTtBQUFDQSxJQUFBQSxNQUFNLEVBQUVoRCxHQUFHLENBQUNnRDtBQUFiLEdBQWIsR0FBb0MsRUFIMUM7QUFLRDs7QUFFTSxJQUFNb0IsMEJBQTBCLEdBQUcsU0FBN0JBLDBCQUE2QixDQUN4Qy9DLEtBRHdDLEVBRXhDdkIsTUFGd0MsRUFHdEI7QUFBQSx5QkFDMkNBLE1BQU0sQ0FBQ0MsT0FEbEQ7QUFBQSxNQUNYK0IsUUFEVyxvQkFDWEEsUUFEVztBQUFBLE1BQ0RZLFVBREMsb0JBQ0RBLFVBREM7QUFBQSxNQUNXdkMsUUFEWCxvQkFDV0EsUUFEWDtBQUFBLE1BQ3FCcUIsU0FEckIsb0JBQ3FCQSxTQURyQjtBQUFBLE1BQ2dDQyxPQURoQyxvQkFDZ0NBLE9BRGhDO0FBR2xCLE1BQU00QyxXQUFXLEdBQUd4Qix5QkFBeUIsQ0FBQ2YsUUFBRCxDQUE3Qzs7QUFDQSxNQUFJdUMsV0FBSixFQUFpQjtBQUNmO0FBQ0EsV0FBTy9CLHNCQUFzQixDQUFDakIsS0FBRCxFQUFRO0FBQ25DdEIsTUFBQUEsT0FBTyxFQUFFO0FBQUNPLFFBQUFBLEtBQUssRUFBRStELFdBQVI7QUFBcUJsRSxRQUFBQSxRQUFRLEVBQVJBLFFBQXJCO0FBQStCc0IsUUFBQUEsT0FBTyxFQUFQQTtBQUEvQjtBQUQwQixLQUFSLENBQTdCO0FBR0Q7O0FBRUQsTUFBTUUsUUFBUSxtQ0FDVE4sS0FEUztBQUVaMUIsSUFBQUEsUUFBUSxFQUFFUSxRQUFRLENBQUNJLElBRlA7QUFHWmQsSUFBQUEsZUFBZSxFQUFFVSxRQUFRLENBQUNJLElBSGQ7QUFJWmhCLElBQUFBLGlCQUFpQixFQUFFLEtBSlA7QUFLWkQsSUFBQUEsaUJBQWlCLEVBQUU7QUFMUCxJQUFkOztBQVFBLE1BQU1TLE9BQU8sR0FBRzZELG9CQUFvQixDQUFDOUIsUUFBRCxFQUFXWSxVQUFYLEVBQXVCdkMsUUFBdkIsQ0FBcEM7QUFFQSxNQUFNOEIsS0FBSyxHQUFHLENBQ1osMkJBQWNqQyxHQUFkLENBQWtCLFVBQUFDLENBQUM7QUFBQSxXQUFJLDJCQUFhRixPQUFiLENBQUo7QUFBQSxHQUFuQixDQURZLEVBRVpGLGdCQUFnQixDQUFDMkIsU0FBRCxFQUFZO0FBQUNNLElBQUFBLFFBQVEsRUFBUkEsUUFBRDtBQUFXWSxJQUFBQSxVQUFVLEVBQVZBLFVBQVg7QUFBdUJ2QyxJQUFBQSxRQUFRLEVBQVJBO0FBQXZCLEdBQVosQ0FGSixFQUdaLDJCQUFjSCxHQUFkLENBQWtCLFVBQUFDLENBQUM7QUFBQSxXQUFJLHFEQUFnQ0UsUUFBUSxDQUFDSSxJQUF6QyxhQUFKO0FBQUEsR0FBbkIsQ0FIWSxFQUlaMkIsTUFKWSxDQUlMLFVBQUFDLENBQUM7QUFBQSxXQUFJQSxDQUFKO0FBQUEsR0FKSSxDQUFkO0FBTUEsU0FBT0YsS0FBSyxDQUFDRyxNQUFOLEdBQWUscUJBQVNULFFBQVQsRUFBbUJNLEtBQW5CLENBQWYsR0FBMkNOLFFBQWxEO0FBQ0QsQ0EvQk07Ozs7QUFpQ0EsSUFBTTJDLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBMkIsQ0FDdENqRCxLQURzQyxFQUV0Q3ZCLE1BRnNDLEVBR3BCO0FBQ2xCLE1BQU1ZLE9BQU8sR0FBRyxxQkFBU1osTUFBTSxDQUFDQyxPQUFQLENBQWVPLEtBQXhCLDhCQUFoQjs7QUFFQUQsc0JBQVFzQyxJQUFSLENBQWFqQyxPQUFiOztBQUVBLE1BQU1pQixRQUFRLG1DQUNUTixLQURTO0FBRVovQixJQUFBQSxpQkFBaUIsRUFBRSxLQUZQO0FBR1pDLElBQUFBLGlCQUFpQixFQUFFLEtBSFA7QUFJWkMsSUFBQUEsYUFBYSxFQUFFO0FBSkgsSUFBZDs7QUFPQSxTQUFPLHFCQUNMbUMsUUFESyxFQUVMbkIsNkJBQTZCLENBQUM7QUFBQ0MsSUFBQUEsSUFBSSxFQUFFLE9BQVA7QUFBZ0JDLElBQUFBLE9BQU8sRUFBUEEsT0FBaEI7QUFBeUJDLElBQUFBLFVBQVUsRUFBRTtBQUFyQyxHQUFELENBRnhCLENBQVA7QUFJRCxDQW5CTTs7OztBQXFCQSxJQUFNNEQsMEJBQTBCLEdBQUcsU0FBN0JBLDBCQUE2QixDQUFDbEQsS0FBRDtBQUFBLHlDQUNyQ0EsS0FEcUM7QUFFeEMvQixJQUFBQSxpQkFBaUIsRUFBRSxLQUZxQjtBQUd4Q0UsSUFBQUEsYUFBYSxFQUFFLElBSHlCO0FBSXhDRCxJQUFBQSxpQkFBaUIsRUFBRSxLQUpxQjtBQUt4Q0csSUFBQUEsV0FBVyxFQUFFO0FBTDJCO0FBQUEsQ0FBbkM7QUFRUDtBQUNBO0FBQ0E7Ozs7O0FBQ08sSUFBTThFLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBMEIsQ0FDckNuRCxLQURxQyxFQUVyQ3ZCLE1BRnFDO0FBQUEseUNBSWxDdUIsS0FKa0M7QUFLckMvQixJQUFBQSxpQkFBaUIsRUFBRSxLQUxrQjtBQU1yQ0UsSUFBQUEsYUFBYSxFQUFFLElBTnNCO0FBT3JDRSxJQUFBQSxXQUFXLEVBQUUsRUFQd0I7QUFRckNELElBQUFBLGVBQWUsRUFBRUssTUFBTSxDQUFDQztBQVJhO0FBQUEsQ0FBaEM7Ozs7QUFXQSxJQUFNMEUsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFzQixDQUNqQ3BELEtBRGlDLEVBRWpDdkIsTUFGaUMsRUFHZjtBQUNsQixNQUFNSyxRQUFRLEdBQUdMLE1BQU0sQ0FBQ0MsT0FBeEI7O0FBQ0EsTUFBSSxDQUFDRyxpQkFBaUIsQ0FBQ0MsUUFBRCxFQUFXLFVBQVgsQ0FBdEIsRUFBOEM7QUFDNUMsV0FBT2tCLEtBQVA7QUFDRDs7QUFFRCxNQUFNcUQsZ0JBQWdCLEdBQUcsaUNBQW9CdkUsUUFBcEIsRUFBOEIwQixLQUE5QixFQUN2QjtBQUNBLFlBQUFqQyxjQUFjO0FBQUEsV0FBSSxrQ0FBb0I7QUFBQ0EsTUFBQUEsY0FBYyxFQUFkQSxjQUFEO0FBQWlCTyxNQUFBQSxRQUFRLEVBQVJBO0FBQWpCLEtBQXBCLENBQUo7QUFBQSxHQUZTLEVBR3ZCO0FBQ0EsWUFBQUcsS0FBSztBQUFBLFdBQUksZ0NBQWtCO0FBQUNBLE1BQUFBLEtBQUssRUFBTEEsS0FBRDtBQUFRSCxNQUFBQSxRQUFRLEVBQVJBO0FBQVIsS0FBbEIsQ0FBSjtBQUFBLEdBSmtCLENBQXpCO0FBT0EsU0FBTyxxREFFQWtCLEtBRkE7QUFHSC9CLElBQUFBLGlCQUFpQixFQUFFO0FBSGhCLE1BS0xvRixnQkFMSyxDQUFQO0FBT0QsQ0F2Qk07Ozs7QUF5QkEsSUFBTUMsMEJBQTBCLEdBQUcsU0FBN0JBLDBCQUE2QixDQUN4Q3RELEtBRHdDLEVBRXhDdkIsTUFGd0M7QUFBQSx5Q0FJckN1QixLQUpxQztBQUt4Qy9CLElBQUFBLGlCQUFpQixFQUFFLEtBTHFCO0FBTXhDTSxJQUFBQSxjQUFjLEVBQUVFLE1BQU0sQ0FBQ0MsT0FBUCxDQUFlSDtBQU5TO0FBQUEsQ0FBbkM7Ozs7QUFTQSxJQUFNZ0Ysd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUEyQixDQUN0Q3ZELEtBRHNDLEVBRXRDdkIsTUFGc0MsRUFHcEI7QUFDbEIsTUFBTVksT0FBTyxHQUNYLHFCQUFTWixNQUFNLENBQUNDLE9BQVAsQ0FBZU8sS0FBeEIsNkNBQW1FZSxLQUFLLENBQUM1QixlQUF6RSxDQURGOztBQUdBWSxzQkFBUXNDLElBQVIsQ0FBYTdDLE1BQU0sQ0FBQ0MsT0FBUCxDQUFlTyxLQUE1Qjs7QUFFQSxNQUFNcUIsUUFBUSxtQ0FDVE4sS0FEUztBQUVaNUIsSUFBQUEsZUFBZSxFQUFFLElBRkw7QUFHWkgsSUFBQUEsaUJBQWlCLEVBQUU7QUFIUCxJQUFkOztBQU1BLFNBQU8scUJBQ0xxQyxRQURLLEVBRUxuQiw2QkFBNkIsQ0FBQztBQUFDQyxJQUFBQSxJQUFJLEVBQUUsT0FBUDtBQUFnQkMsSUFBQUEsT0FBTyxFQUFQQSxPQUFoQjtBQUF5QkMsSUFBQUEsVUFBVSxFQUFFO0FBQXJDLEdBQUQsQ0FGeEIsQ0FBUDtBQUlELENBbkJNIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHt3aXRoVGFza30gZnJvbSAncmVhY3QtcGFsbS90YXNrcyc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkLCBnZXRFcnJvciwgaXNQbGFpbk9iamVjdCwgdG9BcnJheX0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge1xuICBFWFBPUlRfRklMRV9UT19DTE9VRF9UQVNLLFxuICBBQ1RJT05fVEFTSyxcbiAgREVMQVlfVEFTSyxcbiAgTE9BRF9DTE9VRF9NQVBfVEFTSyxcbiAgR0VUX1NBVkVEX01BUFNfVEFTS1xufSBmcm9tICdAa2VwbGVyLmdsL3Rhc2tzJztcbmltcG9ydCB7XG4gIGV4cG9ydEZpbGVTdWNjZXNzLFxuICBleHBvcnRGaWxlRXJyb3IsXG4gIHBvc3RTYXZlTG9hZFN1Y2Nlc3MsXG4gIGxvYWRDbG91ZE1hcFN1Y2Nlc3MsXG4gIGdldFNhdmVkTWFwc1N1Y2Nlc3MsXG4gIGdldFNhdmVkTWFwc0Vycm9yLFxuICBsb2FkQ2xvdWRNYXBFcnJvcixcbiAgcmVzZXRQcm92aWRlclN0YXR1cyxcbiAgcmVtb3ZlTm90aWZpY2F0aW9uLFxuICB0b2dnbGVNb2RhbCxcbiAgYWRkTm90aWZpY2F0aW9uLFxuICBhZGREYXRhVG9NYXAsXG4gIFByb3ZpZGVyQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMsXG4gIERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyxcbiAgREFUQVNFVF9GT1JNQVRTLFxuICBPVkVSV1JJVEVfTUFQX0lEXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7RXhwb3J0RmlsZVRvQ2xvdWRQYXlsb2FkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtGSUxFX0NPTkZMSUNUX01TRywgTWFwTGlzdEl0ZW19IGZyb20gJ0BrZXBsZXIuZ2wvY2xvdWQtcHJvdmlkZXJzJztcbmltcG9ydCB7REFUQVNFVF9IQU5ETEVSU30gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcblxudHlwZSBBY3Rpb25QYXlsb2FkPFA+ID0ge1xuICB0eXBlPzogc3RyaW5nO1xuICBwYXlsb2FkOiBQO1xufTtcblxuZXhwb3J0IHR5cGUgUHJvdmlkZXJTdGF0ZSA9IHtcbiAgaXNQcm92aWRlckxvYWRpbmc6IGJvb2xlYW47XG4gIGlzQ2xvdWRNYXBMb2FkaW5nOiBib29sZWFuO1xuICBwcm92aWRlckVycm9yOiBhbnk7XG4gIGN1cnJlbnRQcm92aWRlcjogc3RyaW5nIHwgbnVsbDtcbiAgc3VjY2Vzc0luZm86IGFueTtcbiAgbWFwU2F2ZWQ6IG51bGwgfCBzdHJpbmc7XG4gIGluaXRpYWxTdGF0ZT86IGFueTtcbiAgdmlzdWFsaXphdGlvbnM6IE1hcExpc3RJdGVtW107XG59O1xuXG5leHBvcnQgY29uc3QgSU5JVElBTF9QUk9WSURFUl9TVEFURTogUHJvdmlkZXJTdGF0ZSA9IHtcbiAgaXNQcm92aWRlckxvYWRpbmc6IGZhbHNlLFxuICBpc0Nsb3VkTWFwTG9hZGluZzogZmFsc2UsXG4gIHByb3ZpZGVyRXJyb3I6IG51bGwsXG4gIGN1cnJlbnRQcm92aWRlcjogbnVsbCxcbiAgc3VjY2Vzc0luZm86IHt9LFxuICBtYXBTYXZlZDogbnVsbCxcbiAgdmlzdWFsaXphdGlvbnM6IFtdXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVBY3Rpb25UYXNrKGFjdGlvbiwgcGF5bG9hZCkge1xuICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBBQ1RJT05fVEFTSygpLm1hcChfID0+IGFjdGlvbihwYXlsb2FkKSk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gX3ZhbGlkYXRlUHJvdmlkZXIocHJvdmlkZXIsIG1ldGhvZCkge1xuICBpZiAoIXByb3ZpZGVyKSB7XG4gICAgQ29uc29sZS5lcnJvcihgcHJvdmlkZXIgaXMgbm90IGRlZmluZWRgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIHByb3ZpZGVyW21ldGhvZF0gIT09ICdmdW5jdGlvbicpIHtcbiAgICBDb25zb2xlLmVycm9yKGAke21ldGhvZH0gaXMgbm90IGEgZnVuY3Rpb24gb2YgQ2xvdWQgcHJvdmlkZXI6ICR7cHJvdmlkZXIubmFtZX1gKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR2xvYmFsTm90aWZpY2F0aW9uVGFza3Moe1xuICB0eXBlLFxuICBtZXNzYWdlLFxuICBkZWxheUNsb3NlID0gdHJ1ZVxufToge1xuICB0eXBlPzogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGRlbGF5Q2xvc2U/OiBib29sZWFuO1xufSkge1xuICBjb25zdCBpZCA9IGdlbmVyYXRlSGFzaElkKCk7XG4gIGNvbnN0IHN1Y2Nlc3NOb3RlID0ge1xuICAgIGlkLFxuICAgIHR5cGU6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTW3R5cGUgfHwgJyddIHx8IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTLnN1Y2Nlc3MsXG4gICAgdG9waWM6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUy5nbG9iYWwsXG4gICAgbWVzc2FnZVxuICB9O1xuICBjb25zdCB0YXNrID0gQUNUSU9OX1RBU0soKS5tYXAoXyA9PiBhZGROb3RpZmljYXRpb24oc3VjY2Vzc05vdGUpKTtcbiAgcmV0dXJuIGRlbGF5Q2xvc2UgPyBbdGFzaywgREVMQVlfVEFTSygzMDAwKS5tYXAoXyA9PiByZW1vdmVOb3RpZmljYXRpb24oaWQpKV0gOiBbdGFza107XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2Qgd2lsbCBleHBvcnQgdGhlIGN1cnJlbnQga2VwbGVyIGNvbmZpZyBmaWxlIHRvIHRoZSBjaG9zZW4gY2xvdWQgcHJvZGVyXG4gKiBhZGQgcmV0dXJucyBhIHNoYXJlIFVSTFxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGV4cG9ydEZpbGVUb0Nsb3VkVXBkYXRlciA9IChcbiAgc3RhdGU6IFByb3ZpZGVyU3RhdGUsXG4gIGFjdGlvbjogQWN0aW9uUGF5bG9hZDxFeHBvcnRGaWxlVG9DbG91ZFBheWxvYWQ+XG4pOiBQcm92aWRlclN0YXRlID0+IHtcbiAgY29uc3Qge21hcERhdGEsIHByb3ZpZGVyLCBvcHRpb25zID0ge30sIG9uU3VjY2Vzcywgb25FcnJvciwgY2xvc2VNb2RhbH0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBpZiAoIV92YWxpZGF0ZVByb3ZpZGVyKHByb3ZpZGVyLCAndXBsb2FkTWFwJykpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpc1Byb3ZpZGVyTG9hZGluZzogdHJ1ZSxcbiAgICBjdXJyZW50UHJvdmlkZXI6IHByb3ZpZGVyLm5hbWVcbiAgfTtcblxuICAvLyBwYXlsb2FkIGNhbGxlZCBieSBwcm92aWRlci51cGxvYWRNYXBcbiAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICBtYXBEYXRhLFxuICAgIG9wdGlvbnNcbiAgfTtcbiAgY29uc3QgdXBsb2FkRmlsZVRhc2sgPSBFWFBPUlRfRklMRV9UT19DTE9VRF9UQVNLKHtwcm92aWRlciwgcGF5bG9hZH0pLmJpbWFwKFxuICAgIC8vIHN1Y2Nlc3NcbiAgICByZXNwb25zZSA9PiBleHBvcnRGaWxlU3VjY2Vzcyh7cmVzcG9uc2UsIHByb3ZpZGVyLCBvcHRpb25zLCBvblN1Y2Nlc3MsIGNsb3NlTW9kYWx9KSxcbiAgICAvLyBlcnJvclxuICAgIGVycm9yID0+IGV4cG9ydEZpbGVFcnJvcih7ZXJyb3IsIHByb3ZpZGVyLCBvcHRpb25zLCBvbkVycm9yfSlcbiAgKTtcblxuICByZXR1cm4gd2l0aFRhc2sobmV3U3RhdGUsIHVwbG9hZEZpbGVUYXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCBleHBvcnRGaWxlU3VjY2Vzc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBQcm92aWRlclN0YXRlLFxuICBhY3Rpb246IEFjdGlvblBheWxvYWQ8UHJvdmlkZXJBY3Rpb25zLkV4cG9ydEZpbGVTdWNjZXNzUGF5bG9hZD5cbik6IFByb3ZpZGVyU3RhdGUgPT4ge1xuICBjb25zdCB7cmVzcG9uc2UsIHByb3ZpZGVyLCBvcHRpb25zID0ge30sIG9uU3VjY2VzcywgY2xvc2VNb2RhbH0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpc1Byb3ZpZGVyTG9hZGluZzogZmFsc2UsXG4gICAgLy8gVE9ETzogZG8gd2UgYWx3YXlzIGhhdmUgdG8gc3RvcmUgdGhpcz9cbiAgICBzdWNjZXNzSW5mbzogcmVzcG9uc2UsXG4gICAgLi4uKCFvcHRpb25zLmlzUHVibGljXG4gICAgICA/IHtcbiAgICAgICAgICBtYXBTYXZlZDogcHJvdmlkZXIubmFtZVxuICAgICAgICB9XG4gICAgICA6IHt9KVxuICB9O1xuXG4gIGNvbnN0IHRhc2tzID0gW1xuICAgIGNyZWF0ZUFjdGlvblRhc2sob25TdWNjZXNzLCB7cmVzcG9uc2UsIHByb3ZpZGVyLCBvcHRpb25zfSksXG4gICAgY2xvc2VNb2RhbCAmJlxuICAgICAgQUNUSU9OX1RBU0soKS5tYXAoXyA9PiBwb3N0U2F2ZUxvYWRTdWNjZXNzKGBNYXAgc2F2ZWQgdG8gJHtzdGF0ZS5jdXJyZW50UHJvdmlkZXJ9IWApKVxuICBdLmZpbHRlcihkID0+IGQpO1xuXG4gIHJldHVybiB0YXNrcy5sZW5ndGggPyB3aXRoVGFzayhuZXdTdGF0ZSwgdGFza3MpIDogbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIENsb3NlIG1vZGFsIG9uIHN1Y2Nlc3MgYW5kIGRpc3BsYXkgbm90aWZpY2F0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBwb3N0U2F2ZUxvYWRTdWNjZXNzVXBkYXRlciA9IChcbiAgc3RhdGU6IFByb3ZpZGVyU3RhdGUsXG4gIGFjdGlvbjogQWN0aW9uUGF5bG9hZDxQcm92aWRlckFjdGlvbnMuUG9zdFNhdmVMb2FkU3VjY2Vzc1BheWxvYWQ+XG4pOiBQcm92aWRlclN0YXRlID0+IHtcbiAgY29uc3QgbWVzc2FnZSA9IGFjdGlvbi5wYXlsb2FkIHx8IGBTYXZlZCAvIExvYWQgdG8gJHtzdGF0ZS5jdXJyZW50UHJvdmlkZXJ9IFN1Y2Nlc3NgO1xuXG4gIGNvbnN0IHRhc2tzID0gW1xuICAgIEFDVElPTl9UQVNLKCkubWFwKF8gPT4gdG9nZ2xlTW9kYWwobnVsbCkpLFxuICAgIEFDVElPTl9UQVNLKCkubWFwKF8gPT4gcmVzZXRQcm92aWRlclN0YXR1cygpKSxcbiAgICAuLi5jcmVhdGVHbG9iYWxOb3RpZmljYXRpb25UYXNrcyh7bWVzc2FnZX0pXG4gIF07XG5cbiAgcmV0dXJuIHdpdGhUYXNrKHN0YXRlLCB0YXNrcyk7XG59O1xuXG5leHBvcnQgY29uc3QgZXhwb3J0RmlsZUVycm9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFByb3ZpZGVyU3RhdGUsXG4gIGFjdGlvbjogQWN0aW9uUGF5bG9hZDxQcm92aWRlckFjdGlvbnMuRXhwb3J0RmlsZUVycm9yUGF5bG9hZD5cbik6IFByb3ZpZGVyU3RhdGUgPT4ge1xuICBjb25zdCB7ZXJyb3IsIHByb3ZpZGVyLCBvbkVycm9yfSA9IGFjdGlvbi5wYXlsb2FkO1xuXG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlzUHJvdmlkZXJMb2FkaW5nOiBmYWxzZVxuICB9O1xuXG4gIGlmIChpc0ZpbGVDb25mbGljdChlcnJvcikpIHtcbiAgICBuZXdTdGF0ZS5tYXBTYXZlZCA9IHByb3ZpZGVyLm5hbWU7XG4gICAgcmV0dXJuIHdpdGhUYXNrKG5ld1N0YXRlLCBbQUNUSU9OX1RBU0soKS5tYXAoXyA9PiB0b2dnbGVNb2RhbChPVkVSV1JJVEVfTUFQX0lEKSldKTtcbiAgfVxuXG4gIG5ld1N0YXRlLnByb3ZpZGVyRXJyb3IgPSBnZXRFcnJvcihlcnJvcik7XG4gIGNvbnN0IHRhc2sgPSBjcmVhdGVBY3Rpb25UYXNrKG9uRXJyb3IsIHtlcnJvciwgcHJvdmlkZXJ9KTtcblxuICByZXR1cm4gdGFzayA/IHdpdGhUYXNrKG5ld1N0YXRlLCB0YXNrKSA6IG5ld1N0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGxvYWRDbG91ZE1hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBQcm92aWRlclN0YXRlLFxuICBhY3Rpb246IEFjdGlvblBheWxvYWQ8UHJvdmlkZXJBY3Rpb25zLkxvYWRDbG91ZE1hcFBheWxvYWQ+XG4pOiBQcm92aWRlclN0YXRlID0+IHtcbiAgY29uc3Qge2xvYWRQYXJhbXMsIHByb3ZpZGVyLCBvblN1Y2Nlc3MsIG9uRXJyb3J9ID0gYWN0aW9uLnBheWxvYWQ7XG4gIGlmICghbG9hZFBhcmFtcykge1xuICAgIENvbnNvbGUud2FybignbG9hZCBtYXAgZXJyb3I6IGxvYWRQYXJhbXMgaXMgdW5kZWZpbmVkJyk7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGlmICghX3ZhbGlkYXRlUHJvdmlkZXIocHJvdmlkZXIsICdkb3dubG9hZE1hcCcpKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgaXNQcm92aWRlckxvYWRpbmc6IHRydWUsXG4gICAgaXNDbG91ZE1hcExvYWRpbmc6IHRydWVcbiAgfTtcblxuICAvLyBwYXlsb2FkIGNhbGxlZCBieSBwcm92aWRlci5kb3dubG9hZE1hcFxuICBjb25zdCB1cGxvYWRGaWxlVGFzayA9IExPQURfQ0xPVURfTUFQX1RBU0soe3Byb3ZpZGVyLCBwYXlsb2FkOiBsb2FkUGFyYW1zfSkuYmltYXAoXG4gICAgLy8gc3VjY2Vzc1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICByZXNwb25zZSA9PiBsb2FkQ2xvdWRNYXBTdWNjZXNzKHtyZXNwb25zZSwgbG9hZFBhcmFtcywgcHJvdmlkZXIsIG9uU3VjY2Vzcywgb25FcnJvcn0pLFxuICAgIC8vIGVycm9yXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIGVycm9yID0+IGxvYWRDbG91ZE1hcEVycm9yKHtlcnJvciwgcHJvdmlkZXIsIG9uRXJyb3J9KVxuICApO1xuXG4gIHJldHVybiB3aXRoVGFzayhuZXdTdGF0ZSwgdXBsb2FkRmlsZVRhc2spO1xufTtcblxuZnVuY3Rpb24gaXNGaWxlQ29uZmxpY3QoZXJyb3IpIHtcbiAgcmV0dXJuIGVycm9yICYmIGVycm9yLm1lc3NhZ2UgPT09IEZJTEVfQ09ORkxJQ1RfTVNHO1xufVxuXG5mdW5jdGlvbiBjaGVja0xvYWRNYXBSZXNwb25zZUVycm9yKHJlc3BvbnNlKSB7XG4gIGlmICghcmVzcG9uc2UgfHwgIWlzUGxhaW5PYmplY3QocmVzcG9uc2UpKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcignTG9hZCBtYXAgcmVzcG9uc2UgaXMgZW1wdHknKTtcbiAgfVxuICBpZiAoIWlzUGxhaW5PYmplY3QocmVzcG9uc2UubWFwKSkge1xuICAgIHJldHVybiBuZXcgRXJyb3IoYExvYWQgbWFwIHJlc3BvbnNlIHNob3VsZCBiZSBhbiBvYmplY3QgcHJvcGVydHkgXCJtYXBcImApO1xuICB9XG4gIGlmICghcmVzcG9uc2UubWFwLmRhdGFzZXRzIHx8ICFyZXNwb25zZS5tYXAuY29uZmlnKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihgTG9hZCBtYXAgcmVzcG9uc2UubWFwIHNob3VsZCBiZSBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0eSBkYXRhc2V0cyBvciBjb25maWdgKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXREYXRhc2V0SGFuZGxlcihmb3JtYXQpIHtcbiAgY29uc3QgZGVmYXVsdEhhbmRsZXIgPSBEQVRBU0VUX0hBTkRMRVJTW0RBVEFTRVRfRk9STUFUUy5jc3ZdO1xuICBpZiAoIWZvcm1hdCkge1xuICAgIENvbnNvbGUud2FybignZm9ybWF0IGlzIG5vdCBwcm92aWRlZCBpbiBsb2FkIG1hcCByZXNwb25zZSwgd2lsbCB1c2UgY3N2IGJ5IGRlZmF1bHQnKTtcbiAgICByZXR1cm4gZGVmYXVsdEhhbmRsZXI7XG4gIH1cblxuICBpZiAoIURBVEFTRVRfSEFORExFUlNbZm9ybWF0XSkge1xuICAgIGNvbnN0IHN1cHBvcnRlZEZvcm1hdCA9IE9iamVjdC5rZXlzKERBVEFTRVRfRk9STUFUUylcbiAgICAgIC5tYXAoayA9PiBgJyR7a30nYClcbiAgICAgIC5qb2luKCcsICcpO1xuICAgIENvbnNvbGUud2FybihcbiAgICAgIGB1bmtub3duIGZvcm1hdCAke2Zvcm1hdH0uIFBsZWFzZSB1c2Ugb25lIG9mICR7c3VwcG9ydGVkRm9ybWF0fSwgd2lsbCB1c2UgY3N2IGJ5IGRlZmF1bHRgXG4gICAgKTtcbiAgICByZXR1cm4gZGVmYXVsdEhhbmRsZXI7XG4gIH1cblxuICByZXR1cm4gREFUQVNFVF9IQU5ETEVSU1tmb3JtYXRdO1xufVxuXG5mdW5jdGlvbiBwYXJzZUxvYWRNYXBSZXNwb25zZShyZXNwb25zZSwgbG9hZFBhcmFtcywgcHJvdmlkZXIpIHtcbiAgY29uc3Qge21hcCwgZm9ybWF0fSA9IHJlc3BvbnNlO1xuICBjb25zdCBwcm9jZXNzb3JNZXRob2QgPSBnZXREYXRhc2V0SGFuZGxlcihmb3JtYXQpO1xuXG4gIGNvbnN0IHBhcnNlZERhdGFzZXRzID0gdG9BcnJheShtYXAuZGF0YXNldHMpLm1hcCgoZHMsIGkpID0+IHtcbiAgICBpZiAoZm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2wpIHtcbiAgICAgIC8vIG5vIG5lZWQgdG8gb2J0YWluIGlkLCBkaXJlY3RseSBwYXNzIHRoZW0gaW5cbiAgICAgIHJldHVybiBwcm9jZXNzb3JNZXRob2QoZHMpO1xuICAgIH1cbiAgICBjb25zdCBpbmZvID0gKGRzICYmIGRzLmluZm8pIHx8IHtpZDogZ2VuZXJhdGVIYXNoSWQoNil9O1xuICAgIGNvbnN0IGRhdGEgPSBwcm9jZXNzb3JNZXRob2QoZHMuZGF0YSB8fCBkcyk7XG4gICAgcmV0dXJuIHtpbmZvLCBkYXRhfTtcbiAgfSk7XG5cbiAgY29uc3QgaW5mbyA9IHtcbiAgICAuLi5tYXAuaW5mbyxcbiAgICBwcm92aWRlcjogcHJvdmlkZXIubmFtZSxcbiAgICBsb2FkUGFyYW1zXG4gIH07XG4gIHJldHVybiB7XG4gICAgZGF0YXNldHM6IHBhcnNlZERhdGFzZXRzLFxuICAgIGluZm8sXG4gICAgLi4uKG1hcC5jb25maWcgPyB7Y29uZmlnOiBtYXAuY29uZmlnfSA6IHt9KVxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgbG9hZENsb3VkTWFwU3VjY2Vzc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBQcm92aWRlclN0YXRlLFxuICBhY3Rpb246IEFjdGlvblBheWxvYWQ8UHJvdmlkZXJBY3Rpb25zLkxvYWRDbG91ZE1hcFN1Y2Nlc3NQYXlsb2FkPlxuKTogUHJvdmlkZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtyZXNwb25zZSwgbG9hZFBhcmFtcywgcHJvdmlkZXIsIG9uU3VjY2Vzcywgb25FcnJvcn0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBjb25zdCBmb3JtYXRFcnJvciA9IGNoZWNrTG9hZE1hcFJlc3BvbnNlRXJyb3IocmVzcG9uc2UpO1xuICBpZiAoZm9ybWF0RXJyb3IpIHtcbiAgICAvLyBpZiByZXNwb25zZSBmb3JtYXQgaXMgbm90IGNvcnJlY3RcbiAgICByZXR1cm4gZXhwb3J0RmlsZUVycm9yVXBkYXRlcihzdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge2Vycm9yOiBmb3JtYXRFcnJvciwgcHJvdmlkZXIsIG9uRXJyb3J9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBTYXZlZDogcHJvdmlkZXIubmFtZSxcbiAgICBjdXJyZW50UHJvdmlkZXI6IHByb3ZpZGVyLm5hbWUsXG4gICAgaXNDbG91ZE1hcExvYWRpbmc6IGZhbHNlLFxuICAgIGlzUHJvdmlkZXJMb2FkaW5nOiBmYWxzZVxuICB9O1xuXG4gIGNvbnN0IHBheWxvYWQgPSBwYXJzZUxvYWRNYXBSZXNwb25zZShyZXNwb25zZSwgbG9hZFBhcmFtcywgcHJvdmlkZXIpO1xuXG4gIGNvbnN0IHRhc2tzID0gW1xuICAgIEFDVElPTl9UQVNLKCkubWFwKF8gPT4gYWRkRGF0YVRvTWFwKHBheWxvYWQpKSxcbiAgICBjcmVhdGVBY3Rpb25UYXNrKG9uU3VjY2Vzcywge3Jlc3BvbnNlLCBsb2FkUGFyYW1zLCBwcm92aWRlcn0pLFxuICAgIEFDVElPTl9UQVNLKCkubWFwKF8gPT4gcG9zdFNhdmVMb2FkU3VjY2VzcyhgTWFwIGZyb20gJHtwcm92aWRlci5uYW1lfSBsb2FkZWRgKSlcbiAgXS5maWx0ZXIoZCA9PiBkKTtcblxuICByZXR1cm4gdGFza3MubGVuZ3RoID8gd2l0aFRhc2sobmV3U3RhdGUsIHRhc2tzKSA6IG5ld1N0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGxvYWRDbG91ZE1hcEVycm9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFByb3ZpZGVyU3RhdGUsXG4gIGFjdGlvbjogQWN0aW9uUGF5bG9hZDxQcm92aWRlckFjdGlvbnMuTG9hZENsb3VkTWFwRXJyb3JQYXlsb2FkPlxuKTogUHJvdmlkZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBnZXRFcnJvcihhY3Rpb24ucGF5bG9hZC5lcnJvcikgfHwgYEVycm9yIGxvYWRpbmcgc2F2ZWQgbWFwYDtcblxuICBDb25zb2xlLndhcm4obWVzc2FnZSk7XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgaXNQcm92aWRlckxvYWRpbmc6IGZhbHNlLFxuICAgIGlzQ2xvdWRNYXBMb2FkaW5nOiBmYWxzZSxcbiAgICBwcm92aWRlckVycm9yOiBudWxsXG4gIH07XG5cbiAgcmV0dXJuIHdpdGhUYXNrKFxuICAgIG5ld1N0YXRlLFxuICAgIGNyZWF0ZUdsb2JhbE5vdGlmaWNhdGlvblRhc2tzKHt0eXBlOiAnZXJyb3InLCBtZXNzYWdlLCBkZWxheUNsb3NlOiBmYWxzZX0pXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRQcm92aWRlclN0YXR1c1VwZGF0ZXIgPSAoc3RhdGU6IFByb3ZpZGVyU3RhdGUpOiBQcm92aWRlclN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBpc1Byb3ZpZGVyTG9hZGluZzogZmFsc2UsXG4gIHByb3ZpZGVyRXJyb3I6IG51bGwsXG4gIGlzQ2xvdWRNYXBMb2FkaW5nOiBmYWxzZSxcbiAgc3VjY2Vzc0luZm86IHt9XG59KTtcblxuLyoqXG4gKiBTZXQgY3VycmVudCBjbG91ZFByb3ZpZGVyXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRDbG91ZFByb3ZpZGVyVXBkYXRlciA9IChcbiAgc3RhdGU6IFByb3ZpZGVyU3RhdGUsXG4gIGFjdGlvbjogQWN0aW9uUGF5bG9hZDxQcm92aWRlckFjdGlvbnMuU2V0Q2xvdWRQcm92aWRlclBheWxvYWQ+XG4pOiBQcm92aWRlclN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBpc1Byb3ZpZGVyTG9hZGluZzogZmFsc2UsXG4gIHByb3ZpZGVyRXJyb3I6IG51bGwsXG4gIHN1Y2Nlc3NJbmZvOiB7fSxcbiAgY3VycmVudFByb3ZpZGVyOiBhY3Rpb24ucGF5bG9hZFxufSk7XG5cbmV4cG9ydCBjb25zdCBnZXRTYXZlZE1hcHNVcGRhdGVyID0gKFxuICBzdGF0ZTogUHJvdmlkZXJTdGF0ZSxcbiAgYWN0aW9uOiBBY3Rpb25QYXlsb2FkPFByb3ZpZGVyQWN0aW9ucy5HZXRTYXZlZE1hcHNQYXlsb2FkPlxuKTogUHJvdmlkZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHByb3ZpZGVyID0gYWN0aW9uLnBheWxvYWQ7XG4gIGlmICghX3ZhbGlkYXRlUHJvdmlkZXIocHJvdmlkZXIsICdsaXN0TWFwcycpKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgZ2V0U2F2ZWRNYXBzVGFzayA9IEdFVF9TQVZFRF9NQVBTX1RBU0socHJvdmlkZXIpLmJpbWFwKFxuICAgIC8vIHN1Y2Nlc3NcbiAgICB2aXN1YWxpemF0aW9ucyA9PiBnZXRTYXZlZE1hcHNTdWNjZXNzKHt2aXN1YWxpemF0aW9ucywgcHJvdmlkZXJ9KSxcbiAgICAvLyBlcnJvclxuICAgIGVycm9yID0+IGdldFNhdmVkTWFwc0Vycm9yKHtlcnJvciwgcHJvdmlkZXJ9KVxuICApO1xuXG4gIHJldHVybiB3aXRoVGFzayhcbiAgICB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGlzUHJvdmlkZXJMb2FkaW5nOiB0cnVlXG4gICAgfSxcbiAgICBnZXRTYXZlZE1hcHNUYXNrXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2F2ZWRNYXBzU3VjY2Vzc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBQcm92aWRlclN0YXRlLFxuICBhY3Rpb246IEFjdGlvblBheWxvYWQ8UHJvdmlkZXJBY3Rpb25zLkdldFNhdmVkTWFwc1N1Y2Nlc3NQYXlsb2FkPlxuKTogUHJvdmlkZXJTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgaXNQcm92aWRlckxvYWRpbmc6IGZhbHNlLFxuICB2aXN1YWxpemF0aW9uczogYWN0aW9uLnBheWxvYWQudmlzdWFsaXphdGlvbnNcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0U2F2ZWRNYXBzRXJyb3JVcGRhdGVyID0gKFxuICBzdGF0ZTogUHJvdmlkZXJTdGF0ZSxcbiAgYWN0aW9uOiBBY3Rpb25QYXlsb2FkPFByb3ZpZGVyQWN0aW9ucy5HZXRTYXZlZE1hcHNFcnJvclBheWxvYWQ+XG4pOiBQcm92aWRlclN0YXRlID0+IHtcbiAgY29uc3QgbWVzc2FnZSA9XG4gICAgZ2V0RXJyb3IoYWN0aW9uLnBheWxvYWQuZXJyb3IpIHx8IGBFcnJvciBnZXR0aW5nIHNhdmVkIG1hcHMgZnJvbSAke3N0YXRlLmN1cnJlbnRQcm92aWRlcn1gO1xuXG4gIENvbnNvbGUud2FybihhY3Rpb24ucGF5bG9hZC5lcnJvcik7XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgY3VycmVudFByb3ZpZGVyOiBudWxsLFxuICAgIGlzUHJvdmlkZXJMb2FkaW5nOiBmYWxzZVxuICB9O1xuXG4gIHJldHVybiB3aXRoVGFzayhcbiAgICBuZXdTdGF0ZSxcbiAgICBjcmVhdGVHbG9iYWxOb3RpZmljYXRpb25UYXNrcyh7dHlwZTogJ2Vycm9yJywgbWVzc2FnZSwgZGVsYXlDbG9zZTogZmFsc2V9KVxuICApO1xufTtcbiJdfQ==
|
|
422
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm92aWRlci1zdGF0ZS11cGRhdGVycy50cyJdLCJuYW1lcyI6WyJJTklUSUFMX1BST1ZJREVSX1NUQVRFIiwiaXNQcm92aWRlckxvYWRpbmciLCJpc0Nsb3VkTWFwTG9hZGluZyIsInByb3ZpZGVyRXJyb3IiLCJjdXJyZW50UHJvdmlkZXIiLCJzdWNjZXNzSW5mbyIsIm1hcFNhdmVkIiwidmlzdWFsaXphdGlvbnMiLCJjcmVhdGVBY3Rpb25UYXNrIiwiYWN0aW9uIiwicGF5bG9hZCIsIm1hcCIsIl8iLCJfdmFsaWRhdGVQcm92aWRlciIsInByb3ZpZGVyIiwibWV0aG9kIiwiQ29uc29sZSIsImVycm9yIiwibmFtZSIsImNyZWF0ZUdsb2JhbE5vdGlmaWNhdGlvblRhc2tzIiwidHlwZSIsIm1lc3NhZ2UiLCJkZWxheUNsb3NlIiwiaWQiLCJzdWNjZXNzTm90ZSIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTIiwic3VjY2VzcyIsInRvcGljIiwiREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTIiwiZ2xvYmFsIiwidGFzayIsImV4cG9ydEZpbGVUb0Nsb3VkVXBkYXRlciIsInN0YXRlIiwibWFwRGF0YSIsIm9wdGlvbnMiLCJvblN1Y2Nlc3MiLCJvbkVycm9yIiwiY2xvc2VNb2RhbCIsIm5ld1N0YXRlIiwidXBsb2FkRmlsZVRhc2siLCJiaW1hcCIsInJlc3BvbnNlIiwiZXhwb3J0RmlsZVN1Y2Nlc3NVcGRhdGVyIiwiaXNQdWJsaWMiLCJ0YXNrcyIsImZpbHRlciIsImQiLCJsZW5ndGgiLCJwb3N0U2F2ZUxvYWRTdWNjZXNzVXBkYXRlciIsImV4cG9ydEZpbGVFcnJvclVwZGF0ZXIiLCJpc0ZpbGVDb25mbGljdCIsIk9WRVJXUklURV9NQVBfSUQiLCJsb2FkQ2xvdWRNYXBVcGRhdGVyIiwibG9hZFBhcmFtcyIsIndhcm4iLCJGSUxFX0NPTkZMSUNUX01TRyIsImNoZWNrTG9hZE1hcFJlc3BvbnNlRXJyb3IiLCJFcnJvciIsImRhdGFzZXRzIiwiY29uZmlnIiwiZ2V0RGF0YXNldEhhbmRsZXIiLCJmb3JtYXQiLCJkZWZhdWx0SGFuZGxlciIsIkRBVEFTRVRfSEFORExFUlMiLCJEQVRBU0VUX0ZPUk1BVFMiLCJjc3YiLCJzdXBwb3J0ZWRGb3JtYXQiLCJPYmplY3QiLCJrZXlzIiwiayIsImpvaW4iLCJwYXJzZUxvYWRNYXBSZXNwb25zZSIsInByb2Nlc3Nvck1ldGhvZCIsInBhcnNlZERhdGFzZXRzIiwiZHMiLCJpIiwia2VwbGVyZ2wiLCJpbmZvIiwiZGF0YSIsImxvYWRDbG91ZE1hcFN1Y2Nlc3NVcGRhdGVyIiwiZm9ybWF0RXJyb3IiLCJsb2FkQ2xvdWRNYXBFcnJvclVwZGF0ZXIiLCJyZXNldFByb3ZpZGVyU3RhdHVzVXBkYXRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQU1BOztBQWFBOztBQVFBOztBQUNBOzs7Ozs7QUFrQk8sSUFBTUEsc0JBQXFDLEdBQUc7QUFDbkRDLEVBQUFBLGlCQUFpQixFQUFFLEtBRGdDO0FBRW5EQyxFQUFBQSxpQkFBaUIsRUFBRSxLQUZnQztBQUduREMsRUFBQUEsYUFBYSxFQUFFLElBSG9DO0FBSW5EQyxFQUFBQSxlQUFlLEVBQUUsSUFKa0M7QUFLbkRDLEVBQUFBLFdBQVcsRUFBRSxFQUxzQztBQU1uREMsRUFBQUEsUUFBUSxFQUFFLElBTnlDO0FBT25EQyxFQUFBQSxjQUFjLEVBQUU7QUFQbUMsQ0FBOUM7OztBQVVQLFNBQVNDLGdCQUFULENBQTBCQyxNQUExQixFQUFrQ0MsT0FBbEMsRUFBMkM7QUFDekMsTUFBSSxPQUFPRCxNQUFQLEtBQWtCLFVBQXRCLEVBQWtDO0FBQ2hDLFdBQU8sMkJBQWNFLEdBQWQsQ0FBa0IsVUFBQUMsQ0FBQztBQUFBLGFBQUlILE1BQU0sQ0FBQ0MsT0FBRCxDQUFWO0FBQUEsS0FBbkIsQ0FBUDtBQUNEOztBQUVELFNBQU8sSUFBUDtBQUNEOztBQUVELFNBQVNHLGlCQUFULENBQTJCQyxRQUEzQixFQUFxQ0MsTUFBckMs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d0JBQXdCLEdBQUcsU0FBM0JBLHdCQUEyQixDQUN0Q2pELEtBRHNDLEVBRXRDdkIsTUFGc0MsRUFHcEI7QUFDbEIsTUFBTVksT0FBTyxHQUFHLHFCQUFTWixNQUFNLENBQUNDLE9BQVAsQ0FBZU8sS0FBeEIsOEJBQWhCOztBQUVBRCxzQkFBUXNDLElBQVIsQ0FBYWpDLE9BQWI7O0FBRUEsTUFBTWlCLFFBQVEsbUNBQ1ROLEtBRFM7QUFFWi9CLElBQUFBLGlCQUFpQixFQUFFLEtBRlA7QUFHWkMsSUFBQUEsaUJBQWlCLEVBQUUsS0FIUDtBQUlaQyxJQUFBQSxhQUFhLEVBQUU7QUFKSCxJQUFkOztBQU9BLFNBQU8scUJBQ0xtQyxRQURLLEVBRUxuQiw2QkFBNkIsQ0FBQztBQUFDQyxJQUFBQSxJQUFJLEVBQUUsT0FBUDtBQUFnQkMsSUFBQUEsT0FBTyxFQUFQQSxPQUFoQjtBQUF5QkMsSUFBQUEsVUFBVSxFQUFFO0FBQXJDLEdBQUQsQ0FGeEIsQ0FBUDtBQUlELENBbkJNOzs7O0FBcUJBLElBQU00RCwwQkFBMEIsR0FBRyxTQUE3QkEsMEJBQTZCLENBQUNsRCxLQUFEO0FBQUEseUNBQ3JDQSxLQURxQztBQUV4Qy9CLElBQUFBLGlCQUFpQixFQUFFLEtBRnFCO0FBR3hDRSxJQUFBQSxhQUFhLEVBQUUsSUFIeUI7QUFJeENELElBQUFBLGlCQUFpQixFQUFFLEtBSnFCO0FBS3hDRyxJQUFBQSxXQUFXLEVBQUU7QUFMMkI7QUFBQSxDQUFuQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7d2l0aFRhc2t9IGZyb20gJ3JlYWN0LXBhbG0vdGFza3MnO1xuaW1wb3J0IENvbnNvbGUgZnJvbSAnZ2xvYmFsL2NvbnNvbGUnO1xuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZCwgZ2V0RXJyb3IsIGlzUGxhaW5PYmplY3QsIHRvQXJyYXl9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtcbiAgRVhQT1JUX0ZJTEVfVE9fQ0xPVURfVEFTSyxcbiAgQUNUSU9OX1RBU0ssXG4gIERFTEFZX1RBU0ssXG4gIExPQURfQ0xPVURfTUFQX1RBU0tcbn0gZnJvbSAnQGtlcGxlci5nbC90YXNrcyc7XG5pbXBvcnQge1xuICBleHBvcnRGaWxlU3VjY2VzcyxcbiAgZXhwb3J0RmlsZUVycm9yLFxuICBwb3N0U2F2ZUxvYWRTdWNjZXNzLFxuICBsb2FkQ2xvdWRNYXBTdWNjZXNzLFxuICBsb2FkQ2xvdWRNYXBFcnJvcixcbiAgcmVzZXRQcm92aWRlclN0YXR1cyxcbiAgcmVtb3ZlTm90aWZpY2F0aW9uLFxuICB0b2dnbGVNb2RhbCxcbiAgYWRkTm90aWZpY2F0aW9uLFxuICBhZGREYXRhVG9NYXAsXG4gIFByb3ZpZGVyQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMsXG4gIERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyxcbiAgREFUQVNFVF9GT1JNQVRTLFxuICBPVkVSV1JJVEVfTUFQX0lEXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7RXhwb3J0RmlsZVRvQ2xvdWRQYXlsb2FkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtGSUxFX0NPTkZMSUNUX01TRywgTWFwTGlzdEl0ZW19IGZyb20gJ0BrZXBsZXIuZ2wvY2xvdWQtcHJvdmlkZXJzJztcbmltcG9ydCB7REFUQVNFVF9IQU5ETEVSU30gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcblxudHlwZSBBY3Rpb25QYXlsb2FkPFA+ID0ge1xuICB0eXBlPzogc3RyaW5nO1xuICBwYXlsb2FkOiBQO1xufTtcblxuZXhwb3J0IHR5cGUgUHJvdmlkZXJTdGF0ZSA9IHtcbiAgaXNQcm92aWRlckxvYWRpbmc6IGJvb2xlYW47XG4gIGlzQ2xvdWRNYXBMb2FkaW5nOiBib29sZWFuO1xuICBwcm92aWRlckVycm9yOiBhbnk7XG4gIGN1cnJlbnRQcm92aWRlcjogc3RyaW5nIHwgbnVsbDtcbiAgc3VjY2Vzc0luZm86IGFueTtcbiAgbWFwU2F2ZWQ6IG51bGwgfCBzdHJpbmc7XG4gIGluaXRpYWxTdGF0ZT86IGFueTtcbiAgdmlzdWFsaXphdGlvbnM6IE1hcExpc3RJdGVtW107XG59O1xuXG5leHBvcnQgY29uc3QgSU5JVElBTF9QUk9WSURFUl9TVEFURTogUHJvdmlkZXJTdGF0ZSA9IHtcbiAgaXNQcm92aWRlckxvYWRpbmc6IGZhbHNlLFxuICBpc0Nsb3VkTWFwTG9hZGluZzogZmFsc2UsXG4gIHByb3ZpZGVyRXJyb3I6IG51bGwsXG4gIGN1cnJlbnRQcm92aWRlcjogbnVsbCxcbiAgc3VjY2Vzc0luZm86IHt9LFxuICBtYXBTYXZlZDogbnVsbCxcbiAgdmlzdWFsaXphdGlvbnM6IFtdXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVBY3Rpb25UYXNrKGFjdGlvbiwgcGF5bG9hZCkge1xuICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBBQ1RJT05fVEFTSygpLm1hcChfID0+IGFjdGlvbihwYXlsb2FkKSk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gX3ZhbGlkYXRlUHJvdmlkZXIocHJvdmlkZXIsIG1ldGhvZCkge1xuICBpZiAoIXByb3ZpZGVyKSB7XG4gICAgQ29uc29sZS5lcnJvcihgcHJvdmlkZXIgaXMgbm90IGRlZmluZWRgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIHByb3ZpZGVyW21ldGhvZF0gIT09ICdmdW5jdGlvbicpIHtcbiAgICBDb25zb2xlLmVycm9yKGAke21ldGhvZH0gaXMgbm90IGEgZnVuY3Rpb24gb2YgQ2xvdWQgcHJvdmlkZXI6ICR7cHJvdmlkZXIubmFtZX1gKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR2xvYmFsTm90aWZpY2F0aW9uVGFza3Moe1xuICB0eXBlLFxuICBtZXNzYWdlLFxuICBkZWxheUNsb3NlID0gdHJ1ZVxufToge1xuICB0eXBlPzogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGRlbGF5Q2xvc2U/OiBib29sZWFuO1xufSkge1xuICBjb25zdCBpZCA9IGdlbmVyYXRlSGFzaElkKCk7XG4gIGNvbnN0IHN1Y2Nlc3NOb3RlID0ge1xuICAgIGlkLFxuICAgIHR5cGU6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTW3R5cGUgfHwgJyddIHx8IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTLnN1Y2Nlc3MsXG4gICAgdG9waWM6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUy5nbG9iYWwsXG4gICAgbWVzc2FnZVxuICB9O1xuICBjb25zdCB0YXNrID0gQUNUSU9OX1RBU0soKS5tYXAoXyA9PiBhZGROb3RpZmljYXRpb24oc3VjY2Vzc05vdGUpKTtcbiAgcmV0dXJuIGRlbGF5Q2xvc2UgPyBbdGFzaywgREVMQVlfVEFTSygzMDAwKS5tYXAoXyA9PiByZW1vdmVOb3RpZmljYXRpb24oaWQpKV0gOiBbdGFza107XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2Qgd2lsbCBleHBvcnQgdGhlIGN1cnJlbnQga2VwbGVyIGNvbmZpZyBmaWxlIHRvIHRoZSBjaG9zZW4gY2xvdWQgcHJvZGVyXG4gKiBhZGQgcmV0dXJucyBhIHNoYXJlIFVSTFxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGV4cG9ydEZpbGVUb0Nsb3VkVXBkYXRlciA9IChcbiAgc3RhdGU6IFByb3ZpZGVyU3RhdGUsXG4gIGFjdGlvbjogQWN0aW9uUGF5bG9hZDxFeHBvcnRGaWxlVG9DbG91ZFBheWxvYWQ+XG4pOiBQcm92aWRlclN0YXRlID0+IHtcbiAgY29uc3Qge21hcERhdGEsIHByb3ZpZGVyLCBvcHRpb25zID0ge30sIG9uU3VjY2Vzcywgb25FcnJvciwgY2xvc2VNb2RhbH0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBpZiAoIV92YWxpZGF0ZVByb3ZpZGVyKHByb3ZpZGVyLCAndXBsb2FkTWFwJykpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpc1Byb3ZpZGVyTG9hZGluZzogdHJ1ZSxcbiAgICBjdXJyZW50UHJvdmlkZXI6IHByb3ZpZGVyLm5hbWVcbiAgfTtcblxuICAvLyBwYXlsb2FkIGNhbGxlZCBieSBwcm92aWRlci51cGxvYWRNYXBcbiAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICBtYXBEYXRhLFxuICAgIG9wdGlvbnNcbiAgfTtcbiAgY29uc3QgdXBsb2FkRmlsZVRhc2sgPSBFWFBPUlRfRklMRV9UT19DTE9VRF9UQVNLKHtwcm92aWRlciwgcGF5bG9hZH0pLmJpbWFwKFxuICAgIC8vIHN1Y2Nlc3NcbiAgICByZXNwb25zZSA9PiBleHBvcnRGaWxlU3VjY2Vzcyh7cmVzcG9uc2UsIHByb3ZpZGVyLCBvcHRpb25zLCBvblN1Y2Nlc3MsIGNsb3NlTW9kYWx9KSxcbiAgICAvLyBlcnJvclxuICAgIGVycm9yID0+IGV4cG9ydEZpbGVFcnJvcih7ZXJyb3IsIHByb3ZpZGVyLCBvcHRpb25zLCBvbkVycm9yfSlcbiAgKTtcblxuICByZXR1cm4gd2l0aFRhc2sobmV3U3RhdGUsIHVwbG9hZEZpbGVUYXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCBleHBvcnRGaWxlU3VjY2Vzc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBQcm92aWRlclN0YXRlLFxuICBhY3Rpb246IEFjdGlvblBheWxvYWQ8UHJvdmlkZXJBY3Rpb25zLkV4cG9ydEZpbGVTdWNjZXNzUGF5bG9hZD5cbik6IFByb3ZpZGVyU3RhdGUgPT4ge1xuICBjb25zdCB7cmVzcG9uc2UsIHByb3ZpZGVyLCBvcHRpb25zID0ge30sIG9uU3VjY2VzcywgY2xvc2VNb2RhbH0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpc1Byb3ZpZGVyTG9hZGluZzogZmFsc2UsXG4gICAgLy8gVE9ETzogZG8gd2UgYWx3YXlzIGhhdmUgdG8gc3RvcmUgdGhpcz9cbiAgICBzdWNjZXNzSW5mbzogcmVzcG9uc2UsXG4gICAgLi4uKCFvcHRpb25zLmlzUHVibGljXG4gICAgICA/IHtcbiAgICAgICAgICBtYXBTYXZlZDogcHJvdmlkZXIubmFtZVxuICAgICAgICB9XG4gICAgICA6IHt9KVxuICB9O1xuXG4gIGNvbnN0IHRhc2tzID0gW1xuICAgIGNyZWF0ZUFjdGlvblRhc2sob25TdWNjZXNzLCB7cmVzcG9uc2UsIHByb3ZpZGVyLCBvcHRpb25zfSksXG4gICAgY2xvc2VNb2RhbCAmJlxuICAgICAgQUNUSU9OX1RBU0soKS5tYXAoXyA9PiBwb3N0U2F2ZUxvYWRTdWNjZXNzKGBNYXAgc2F2ZWQgdG8gJHtzdGF0ZS5jdXJyZW50UHJvdmlkZXJ9IWApKVxuICBdLmZpbHRlcihkID0+IGQpO1xuXG4gIHJldHVybiB0YXNrcy5sZW5ndGggPyB3aXRoVGFzayhuZXdTdGF0ZSwgdGFza3MpIDogbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIENsb3NlIG1vZGFsIG9uIHN1Y2Nlc3MgYW5kIGRpc3BsYXkgbm90aWZpY2F0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBwb3N0U2F2ZUxvYWRTdWNjZXNzVXBkYXRlciA9IChcbiAgc3RhdGU6IFByb3ZpZGVyU3RhdGUsXG4gIGFjdGlvbjogQWN0aW9uUGF5bG9hZDxQcm92aWRlckFjdGlvbnMuUG9zdFNhdmVMb2FkU3VjY2Vzc1BheWxvYWQ+XG4pOiBQcm92aWRlclN0YXRlID0+IHtcbiAgY29uc3QgbWVzc2FnZSA9IGFjdGlvbi5wYXlsb2FkIHx8IGBTYXZlZCAvIExvYWQgdG8gJHtzdGF0ZS5jdXJyZW50UHJvdmlkZXJ9IFN1Y2Nlc3NgO1xuXG4gIGNvbnN0IHRhc2tzID0gW1xuICAgIEFDVElPTl9UQVNLKCkubWFwKF8gPT4gdG9nZ2xlTW9kYWwobnVsbCkpLFxuICAgIEFDVElPTl9UQVNLKCkubWFwKF8gPT4gcmVzZXRQcm92aWRlclN0YXR1cygpKSxcbiAgICAuLi5jcmVhdGVHbG9iYWxOb3RpZmljYXRpb25UYXNrcyh7bWVzc2FnZX0pXG4gIF07XG5cbiAgcmV0dXJuIHdpdGhUYXNrKHN0YXRlLCB0YXNrcyk7XG59O1xuXG5leHBvcnQgY29uc3QgZXhwb3J0RmlsZUVycm9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFByb3ZpZGVyU3RhdGUsXG4gIGFjdGlvbjogQWN0aW9uUGF5bG9hZDxQcm92aWRlckFjdGlvbnMuRXhwb3J0RmlsZUVycm9yUGF5bG9hZD5cbik6IFByb3ZpZGVyU3RhdGUgPT4ge1xuICBjb25zdCB7ZXJyb3IsIHByb3ZpZGVyLCBvbkVycm9yfSA9IGFjdGlvbi5wYXlsb2FkO1xuXG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlzUHJvdmlkZXJMb2FkaW5nOiBmYWxzZVxuICB9O1xuXG4gIGlmIChpc0ZpbGVDb25mbGljdChlcnJvcikpIHtcbiAgICBuZXdTdGF0ZS5tYXBTYXZlZCA9IHByb3ZpZGVyLm5hbWU7XG4gICAgcmV0dXJuIHdpdGhUYXNrKG5ld1N0YXRlLCBbQUNUSU9OX1RBU0soKS5tYXAoXyA9PiB0b2dnbGVNb2RhbChPVkVSV1JJVEVfTUFQX0lEKSldKTtcbiAgfVxuXG4gIG5ld1N0YXRlLnByb3ZpZGVyRXJyb3IgPSBnZXRFcnJvcihlcnJvcik7XG4gIGNvbnN0IHRhc2sgPSBjcmVhdGVBY3Rpb25UYXNrKG9uRXJyb3IsIHtlcnJvciwgcHJvdmlkZXJ9KTtcblxuICByZXR1cm4gdGFzayA/IHdpdGhUYXNrKG5ld1N0YXRlLCB0YXNrKSA6IG5ld1N0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGxvYWRDbG91ZE1hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBQcm92aWRlclN0YXRlLFxuICBhY3Rpb246IEFjdGlvblBheWxvYWQ8UHJvdmlkZXJBY3Rpb25zLkxvYWRDbG91ZE1hcFBheWxvYWQ+XG4pOiBQcm92aWRlclN0YXRlID0+IHtcbiAgY29uc3Qge2xvYWRQYXJhbXMsIHByb3ZpZGVyLCBvblN1Y2Nlc3MsIG9uRXJyb3J9ID0gYWN0aW9uLnBheWxvYWQ7XG4gIGlmICghbG9hZFBhcmFtcykge1xuICAgIENvbnNvbGUud2FybignbG9hZCBtYXAgZXJyb3I6IGxvYWRQYXJhbXMgaXMgdW5kZWZpbmVkJyk7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGlmICghX3ZhbGlkYXRlUHJvdmlkZXIocHJvdmlkZXIsICdkb3dubG9hZE1hcCcpKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgaXNQcm92aWRlckxvYWRpbmc6IHRydWUsXG4gICAgaXNDbG91ZE1hcExvYWRpbmc6IHRydWVcbiAgfTtcblxuICAvLyBwYXlsb2FkIGNhbGxlZCBieSBwcm92aWRlci5kb3dubG9hZE1hcFxuICBjb25zdCB1cGxvYWRGaWxlVGFzayA9IExPQURfQ0xPVURfTUFQX1RBU0soe3Byb3ZpZGVyLCBwYXlsb2FkOiBsb2FkUGFyYW1zfSkuYmltYXAoXG4gICAgLy8gc3VjY2Vzc1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICByZXNwb25zZSA9PiBsb2FkQ2xvdWRNYXBTdWNjZXNzKHtyZXNwb25zZSwgbG9hZFBhcmFtcywgcHJvdmlkZXIsIG9uU3VjY2Vzcywgb25FcnJvcn0pLFxuICAgIC8vIGVycm9yXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIGVycm9yID0+IGxvYWRDbG91ZE1hcEVycm9yKHtlcnJvciwgcHJvdmlkZXIsIG9uRXJyb3J9KVxuICApO1xuXG4gIHJldHVybiB3aXRoVGFzayhuZXdTdGF0ZSwgdXBsb2FkRmlsZVRhc2spO1xufTtcblxuZnVuY3Rpb24gaXNGaWxlQ29uZmxpY3QoZXJyb3IpIHtcbiAgcmV0dXJuIGVycm9yICYmIGVycm9yLm1lc3NhZ2UgPT09IEZJTEVfQ09ORkxJQ1RfTVNHO1xufVxuXG5mdW5jdGlvbiBjaGVja0xvYWRNYXBSZXNwb25zZUVycm9yKHJlc3BvbnNlKSB7XG4gIGlmICghcmVzcG9uc2UgfHwgIWlzUGxhaW5PYmplY3QocmVzcG9uc2UpKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcignTG9hZCBtYXAgcmVzcG9uc2UgaXMgZW1wdHknKTtcbiAgfVxuICBpZiAoIWlzUGxhaW5PYmplY3QocmVzcG9uc2UubWFwKSkge1xuICAgIHJldHVybiBuZXcgRXJyb3IoYExvYWQgbWFwIHJlc3BvbnNlIHNob3VsZCBiZSBhbiBvYmplY3QgcHJvcGVydHkgXCJtYXBcImApO1xuICB9XG4gIGlmICghcmVzcG9uc2UubWFwLmRhdGFzZXRzIHx8ICFyZXNwb25zZS5tYXAuY29uZmlnKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihgTG9hZCBtYXAgcmVzcG9uc2UubWFwIHNob3VsZCBiZSBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0eSBkYXRhc2V0cyBvciBjb25maWdgKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXREYXRhc2V0SGFuZGxlcihmb3JtYXQpIHtcbiAgY29uc3QgZGVmYXVsdEhhbmRsZXIgPSBEQVRBU0VUX0hBTkRMRVJTW0RBVEFTRVRfRk9STUFUUy5jc3ZdO1xuICBpZiAoIWZvcm1hdCkge1xuICAgIENvbnNvbGUud2FybignZm9ybWF0IGlzIG5vdCBwcm92aWRlZCBpbiBsb2FkIG1hcCByZXNwb25zZSwgd2lsbCB1c2UgY3N2IGJ5IGRlZmF1bHQnKTtcbiAgICByZXR1cm4gZGVmYXVsdEhhbmRsZXI7XG4gIH1cblxuICBpZiAoIURBVEFTRVRfSEFORExFUlNbZm9ybWF0XSkge1xuICAgIGNvbnN0IHN1cHBvcnRlZEZvcm1hdCA9IE9iamVjdC5rZXlzKERBVEFTRVRfRk9STUFUUylcbiAgICAgIC5tYXAoayA9PiBgJyR7a30nYClcbiAgICAgIC5qb2luKCcsICcpO1xuICAgIENvbnNvbGUud2FybihcbiAgICAgIGB1bmtub3duIGZvcm1hdCAke2Zvcm1hdH0uIFBsZWFzZSB1c2Ugb25lIG9mICR7c3VwcG9ydGVkRm9ybWF0fSwgd2lsbCB1c2UgY3N2IGJ5IGRlZmF1bHRgXG4gICAgKTtcbiAgICByZXR1cm4gZGVmYXVsdEhhbmRsZXI7XG4gIH1cblxuICByZXR1cm4gREFUQVNFVF9IQU5ETEVSU1tmb3JtYXRdO1xufVxuXG5mdW5jdGlvbiBwYXJzZUxvYWRNYXBSZXNwb25zZShyZXNwb25zZSwgbG9hZFBhcmFtcywgcHJvdmlkZXIpIHtcbiAgY29uc3Qge21hcCwgZm9ybWF0fSA9IHJlc3BvbnNlO1xuICBjb25zdCBwcm9jZXNzb3JNZXRob2QgPSBnZXREYXRhc2V0SGFuZGxlcihmb3JtYXQpO1xuXG4gIGNvbnN0IHBhcnNlZERhdGFzZXRzID0gdG9BcnJheShtYXAuZGF0YXNldHMpLm1hcCgoZHMsIGkpID0+IHtcbiAgICBpZiAoZm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2wpIHtcbiAgICAgIC8vIG5vIG5lZWQgdG8gb2J0YWluIGlkLCBkaXJlY3RseSBwYXNzIHRoZW0gaW5cbiAgICAgIHJldHVybiBwcm9jZXNzb3JNZXRob2QoZHMpO1xuICAgIH1cbiAgICBjb25zdCBpbmZvID0gKGRzICYmIGRzLmluZm8pIHx8IHtpZDogZ2VuZXJhdGVIYXNoSWQoNil9O1xuICAgIGNvbnN0IGRhdGEgPSBwcm9jZXNzb3JNZXRob2QoZHMuZGF0YSB8fCBkcyk7XG4gICAgcmV0dXJuIHtpbmZvLCBkYXRhfTtcbiAgfSk7XG5cbiAgY29uc3QgaW5mbyA9IHtcbiAgICAuLi5tYXAuaW5mbyxcbiAgICBwcm92aWRlcjogcHJvdmlkZXIubmFtZSxcbiAgICBsb2FkUGFyYW1zXG4gIH07XG4gIHJldHVybiB7XG4gICAgZGF0YXNldHM6IHBhcnNlZERhdGFzZXRzLFxuICAgIGluZm8sXG4gICAgLi4uKG1hcC5jb25maWcgPyB7Y29uZmlnOiBtYXAuY29uZmlnfSA6IHt9KVxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgbG9hZENsb3VkTWFwU3VjY2Vzc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBQcm92aWRlclN0YXRlLFxuICBhY3Rpb246IEFjdGlvblBheWxvYWQ8UHJvdmlkZXJBY3Rpb25zLkxvYWRDbG91ZE1hcFN1Y2Nlc3NQYXlsb2FkPlxuKTogUHJvdmlkZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtyZXNwb25zZSwgbG9hZFBhcmFtcywgcHJvdmlkZXIsIG9uU3VjY2Vzcywgb25FcnJvcn0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBjb25zdCBmb3JtYXRFcnJvciA9IGNoZWNrTG9hZE1hcFJlc3BvbnNlRXJyb3IocmVzcG9uc2UpO1xuICBpZiAoZm9ybWF0RXJyb3IpIHtcbiAgICAvLyBpZiByZXNwb25zZSBmb3JtYXQgaXMgbm90IGNvcnJlY3RcbiAgICByZXR1cm4gZXhwb3J0RmlsZUVycm9yVXBkYXRlcihzdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge2Vycm9yOiBmb3JtYXRFcnJvciwgcHJvdmlkZXIsIG9uRXJyb3J9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBTYXZlZDogcHJvdmlkZXIubmFtZSxcbiAgICBjdXJyZW50UHJvdmlkZXI6IHByb3ZpZGVyLm5hbWUsXG4gICAgaXNDbG91ZE1hcExvYWRpbmc6IGZhbHNlLFxuICAgIGlzUHJvdmlkZXJMb2FkaW5nOiBmYWxzZVxuICB9O1xuXG4gIGNvbnN0IHBheWxvYWQgPSBwYXJzZUxvYWRNYXBSZXNwb25zZShyZXNwb25zZSwgbG9hZFBhcmFtcywgcHJvdmlkZXIpO1xuXG4gIGNvbnN0IHRhc2tzID0gW1xuICAgIEFDVElPTl9UQVNLKCkubWFwKF8gPT4gYWRkRGF0YVRvTWFwKHBheWxvYWQpKSxcbiAgICBjcmVhdGVBY3Rpb25UYXNrKG9uU3VjY2Vzcywge3Jlc3BvbnNlLCBsb2FkUGFyYW1zLCBwcm92aWRlcn0pLFxuICAgIEFDVElPTl9UQVNLKCkubWFwKF8gPT4gcG9zdFNhdmVMb2FkU3VjY2VzcyhgTWFwIGZyb20gJHtwcm92aWRlci5uYW1lfSBsb2FkZWRgKSlcbiAgXS5maWx0ZXIoZCA9PiBkKTtcblxuICByZXR1cm4gdGFza3MubGVuZ3RoID8gd2l0aFRhc2sobmV3U3RhdGUsIHRhc2tzKSA6IG5ld1N0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGxvYWRDbG91ZE1hcEVycm9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFByb3ZpZGVyU3RhdGUsXG4gIGFjdGlvbjogQWN0aW9uUGF5bG9hZDxQcm92aWRlckFjdGlvbnMuTG9hZENsb3VkTWFwRXJyb3JQYXlsb2FkPlxuKTogUHJvdmlkZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBnZXRFcnJvcihhY3Rpb24ucGF5bG9hZC5lcnJvcikgfHwgYEVycm9yIGxvYWRpbmcgc2F2ZWQgbWFwYDtcblxuICBDb25zb2xlLndhcm4obWVzc2FnZSk7XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgaXNQcm92aWRlckxvYWRpbmc6IGZhbHNlLFxuICAgIGlzQ2xvdWRNYXBMb2FkaW5nOiBmYWxzZSxcbiAgICBwcm92aWRlckVycm9yOiBudWxsXG4gIH07XG5cbiAgcmV0dXJuIHdpdGhUYXNrKFxuICAgIG5ld1N0YXRlLFxuICAgIGNyZWF0ZUdsb2JhbE5vdGlmaWNhdGlvblRhc2tzKHt0eXBlOiAnZXJyb3InLCBtZXNzYWdlLCBkZWxheUNsb3NlOiBmYWxzZX0pXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRQcm92aWRlclN0YXR1c1VwZGF0ZXIgPSAoc3RhdGU6IFByb3ZpZGVyU3RhdGUpOiBQcm92aWRlclN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBpc1Byb3ZpZGVyTG9hZGluZzogZmFsc2UsXG4gIHByb3ZpZGVyRXJyb3I6IG51bGwsXG4gIGlzQ2xvdWRNYXBMb2FkaW5nOiBmYWxzZSxcbiAgc3VjY2Vzc0luZm86IHt9XG59KTtcbiJdfQ==
|
package/dist/provider-state.js
CHANGED
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
// Copyright (c) 2023 Uber Technologies, Inc.
|
|
2
|
-
//
|
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
5
|
-
// in the Software without restriction, including without limitation the rights
|
|
6
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
8
|
-
// furnished to do so, subject to the following conditions:
|
|
9
|
-
//
|
|
10
|
-
// The above copyright notice and this permission notice shall be included in
|
|
11
|
-
// all copies or substantial portions of the Software.
|
|
12
|
-
//
|
|
13
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
-
// THE SOFTWARE.
|
|
20
|
-
|
|
21
1
|
"use strict";
|
|
22
2
|
|
|
23
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
@@ -47,7 +27,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
47
27
|
* Important: Do not rename `actionHandler` or the assignment pattern of property value.
|
|
48
28
|
* It is used to generate documentation
|
|
49
29
|
*/
|
|
50
|
-
var actionHandler = (_actionHandler = {}, (0, _defineProperty2["default"])(_actionHandler, _actions.ProviderActionTypes.EXPORT_FILE_TO_CLOUD, providerStateUpdaters.exportFileToCloudUpdater), (0, _defineProperty2["default"])(_actionHandler, _actions.ProviderActionTypes.EXPORT_FILE_SUCCESS, providerStateUpdaters.exportFileSuccessUpdater), (0, _defineProperty2["default"])(_actionHandler, _actions.ProviderActionTypes.EXPORT_FILE_ERROR, providerStateUpdaters.exportFileErrorUpdater), (0, _defineProperty2["default"])(_actionHandler, _actions.ProviderActionTypes.RESET_PROVIDER_STATUS, providerStateUpdaters.resetProviderStatusUpdater), (0, _defineProperty2["default"])(_actionHandler, _actions.ProviderActionTypes.
|
|
30
|
+
var actionHandler = (_actionHandler = {}, (0, _defineProperty2["default"])(_actionHandler, _actions.ProviderActionTypes.EXPORT_FILE_TO_CLOUD, providerStateUpdaters.exportFileToCloudUpdater), (0, _defineProperty2["default"])(_actionHandler, _actions.ProviderActionTypes.EXPORT_FILE_SUCCESS, providerStateUpdaters.exportFileSuccessUpdater), (0, _defineProperty2["default"])(_actionHandler, _actions.ProviderActionTypes.EXPORT_FILE_ERROR, providerStateUpdaters.exportFileErrorUpdater), (0, _defineProperty2["default"])(_actionHandler, _actions.ProviderActionTypes.RESET_PROVIDER_STATUS, providerStateUpdaters.resetProviderStatusUpdater), (0, _defineProperty2["default"])(_actionHandler, _actions.ProviderActionTypes.POST_SAVE_LOAD_SUCCESS, providerStateUpdaters.postSaveLoadSuccessUpdater), (0, _defineProperty2["default"])(_actionHandler, _actions.ProviderActionTypes.LOAD_CLOUD_MAP, providerStateUpdaters.loadCloudMapUpdater), (0, _defineProperty2["default"])(_actionHandler, _actions.ProviderActionTypes.LOAD_CLOUD_MAP_SUCCESS, providerStateUpdaters.loadCloudMapSuccessUpdater), (0, _defineProperty2["default"])(_actionHandler, _actions.ProviderActionTypes.LOAD_CLOUD_MAP_ERROR, providerStateUpdaters.loadCloudMapErrorUpdater), _actionHandler); // construct provider-state reducer
|
|
51
31
|
|
|
52
32
|
var providerStateReducerFactory = function providerStateReducerFactory() {
|
|
53
33
|
var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
@@ -63,4 +43,4 @@ exports.providerStateReducerFactory = providerStateReducerFactory;
|
|
|
63
43
|
var _default = providerStateReducerFactory();
|
|
64
44
|
|
|
65
45
|
exports["default"] = _default;
|
|
66
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm92aWRlci1zdGF0ZS50cyJdLCJuYW1lcyI6WyJhY3Rpb25IYW5kbGVyIiwiQWN0aW9uVHlwZXMiLCJFWFBPUlRfRklMRV9UT19DTE9VRCIsInByb3ZpZGVyU3RhdGVVcGRhdGVycyIsImV4cG9ydEZpbGVUb0Nsb3VkVXBkYXRlciIsIkVYUE9SVF9GSUxFX1NVQ0NFU1MiLCJleHBvcnRGaWxlU3VjY2Vzc1VwZGF0ZXIiLCJFWFBPUlRfRklMRV9FUlJPUiIsImV4cG9ydEZpbGVFcnJvclVwZGF0ZXIiLCJSRVNFVF9QUk9WSURFUl9TVEFUVVMiLCJyZXNldFByb3ZpZGVyU3RhdHVzVXBkYXRlciIsIlBPU1RfU0FWRV9MT0FEX1NVQ0NFU1MiLCJwb3N0U2F2ZUxvYWRTdWNjZXNzVXBkYXRlciIsIkxPQURfQ0xPVURfTUFQIiwibG9hZENsb3VkTWFwVXBkYXRlciIsIkxPQURfQ0xPVURfTUFQX1NVQ0NFU1MiLCJsb2FkQ2xvdWRNYXBTdWNjZXNzVXBkYXRlciIsIkxPQURfQ0xPVURfTUFQX0VSUk9SIiwibG9hZENsb3VkTWFwRXJyb3JVcGRhdGVyIiwicHJvdmlkZXJTdGF0ZVJlZHVjZXJGYWN0b3J5IiwiaW5pdGlhbFN0YXRlIiwiSU5JVElBTF9QUk9WSURFUl9TVEFURSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsYUFBYSwwRUFDaEJDLDZCQUFZQyxvQkFESSxFQUNtQkMscUJBQXFCLENBQUNDLHdCQUR6QyxvREFFaEJILDZCQUFZSSxtQkFGSSxFQUVrQkYscUJBQXFCLENBQUNHLHdCQUZ4QyxvREFHaEJMLDZCQUFZTSxpQkFISSxFQUdnQkoscUJBQXFCLENBQUNLLHNCQUh0QyxvREFJaEJQLDZCQUFZUSxxQkFKSSxFQUlvQk4scUJBQXFCLENBQUNPLDBCQUoxQyxvREFLaEJULDZCQUFZVSxzQkFMSSxFQUtxQlIscUJBQXFCLENBQUNTLDBCQUwzQyxvREFNaEJYLDZCQUFZWSxjQU5JLEVBTWFWLHFCQUFxQixDQUFDVyxtQkFObkMsb0RBT2hCYiw2QkFBWWMsc0JBUEksRUFPcUJaLHFCQUFxQixDQUFDYSwwQkFQM0Msb0RBUWhCZiw2QkFBWWdCLG9CQVJJLEVBUW1CZCxxQkFBcUIsQ0FBQ2Usd0JBUnpDLGtCQUFuQixDLENBV0E7O0FBQ08sSUFBTUMsMkJBQTJCLEdBQUcsU0FBOUJBLDJCQUE4QjtBQUFBLE1BQUNDLFlBQUQsdUVBQWdCLEVBQWhCO0FBQUEsU0FDekM7QUFDQSxxQ0FBY3BCLGFBQWQsZ0RBQ0tHLHFCQUFxQixDQUFDa0Isc0JBRDNCLEdBRUtELFlBRkw7QUFHRUEsTUFBQUEsWUFBWSxFQUFaQTtBQUhGO0FBRnlDO0FBQUEsQ0FBcEM7Ozs7ZUFRUUQsMkJBQTJCLEUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2hhbmRsZUFjdGlvbnN9IGZyb20gJ3JlZHV4LWFjdGlvbnMnO1xuaW1wb3J0ICogYXMgcHJvdmlkZXJTdGF0ZVVwZGF0ZXJzIGZyb20gJy4vcHJvdmlkZXItc3RhdGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtQcm92aWRlckFjdGlvblR5cGVzIGFzIEFjdGlvblR5cGVzfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuXG4vKipcbiAqIEltcG9ydGFudDogRG8gbm90IHJlbmFtZSBgYWN0aW9uSGFuZGxlcmAgb3IgdGhlIGFzc2lnbm1lbnQgcGF0dGVybiBvZiBwcm9wZXJ0eSB2YWx1ZS5cbiAqIEl0IGlzIHVzZWQgdG8gZ2VuZXJhdGUgZG9jdW1lbnRhdGlvblxuICovXG5jb25zdCBhY3Rpb25IYW5kbGVyID0ge1xuICBbQWN0aW9uVHlwZXMuRVhQT1JUX0ZJTEVfVE9fQ0xPVURdOiBwcm92aWRlclN0YXRlVXBkYXRlcnMuZXhwb3J0RmlsZVRvQ2xvdWRVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuRVhQT1JUX0ZJTEVfU1VDQ0VTU106IHByb3ZpZGVyU3RhdGVVcGRhdGVycy5leHBvcnRGaWxlU3VjY2Vzc1VwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5FWFBPUlRfRklMRV9FUlJPUl06IHByb3ZpZGVyU3RhdGVVcGRhdGVycy5leHBvcnRGaWxlRXJyb3JVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuUkVTRVRfUFJPVklERVJfU1RBVFVTXTogcHJvdmlkZXJTdGF0ZVVwZGF0ZXJzLnJlc2V0UHJvdmlkZXJTdGF0dXNVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuUE9TVF9TQVZFX0xPQURfU1VDQ0VTU106IHByb3ZpZGVyU3RhdGVVcGRhdGVycy5wb3N0U2F2ZUxvYWRTdWNjZXNzVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLkxPQURfQ0xPVURfTUFQXTogcHJvdmlkZXJTdGF0ZVVwZGF0ZXJzLmxvYWRDbG91ZE1hcFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5MT0FEX0NMT1VEX01BUF9TVUNDRVNTXTogcHJvdmlkZXJTdGF0ZVVwZGF0ZXJzLmxvYWRDbG91ZE1hcFN1Y2Nlc3NVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuTE9BRF9DTE9VRF9NQVBfRVJST1JdOiBwcm92aWRlclN0YXRlVXBkYXRlcnMubG9hZENsb3VkTWFwRXJyb3JVcGRhdGVyXG59O1xuXG4vLyBjb25zdHJ1Y3QgcHJvdmlkZXItc3RhdGUgcmVkdWNlclxuZXhwb3J0IGNvbnN0IHByb3ZpZGVyU3RhdGVSZWR1Y2VyRmFjdG9yeSA9IChpbml0aWFsU3RhdGUgPSB7fSkgPT5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICBoYW5kbGVBY3Rpb25zKGFjdGlvbkhhbmRsZXIsIHtcbiAgICAuLi5wcm92aWRlclN0YXRlVXBkYXRlcnMuSU5JVElBTF9QUk9WSURFUl9TVEFURSxcbiAgICAuLi5pbml0aWFsU3RhdGUsXG4gICAgaW5pdGlhbFN0YXRlXG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBwcm92aWRlclN0YXRlUmVkdWNlckZhY3RvcnkoKTtcbiJdfQ==
|
package/dist/root.js
CHANGED
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
// Copyright (c) 2023 Uber Technologies, Inc.
|
|
2
|
-
//
|
|
3
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
5
|
-
// in the Software without restriction, including without limitation the rights
|
|
6
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
8
|
-
// furnished to do so, subject to the following conditions:
|
|
9
|
-
//
|
|
10
|
-
// The above copyright notice and this permission notice shall be included in
|
|
11
|
-
// all copies or substantial portions of the Software.
|
|
12
|
-
//
|
|
13
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
-
// THE SOFTWARE.
|
|
20
|
-
|
|
21
1
|
"use strict";
|
|
22
2
|
|
|
23
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
@@ -246,4 +226,4 @@ function decorate(target) {
|
|
|
246
226
|
var keplerGlReducer = decorate(_keplerGlReducer);
|
|
247
227
|
var _default = keplerGlReducer;
|
|
248
228
|
exports["default"] = _default;
|
|
249
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yb290LnRzIl0sIm5hbWVzIjpbImluaXRpYWxDb3JlU3RhdGUiLCJwcm92aWRlSW5pdGlhbFN0YXRlIiwiaW5pdGlhbFN0YXRlIiwiZXh0cmFSZWR1Y2VycyIsImNvcmVSZWR1Y2VyIiwiaGFuZGxlUmVnaXN0ZXJFbnRyeSIsInN0YXRlIiwicGF5bG9hZCIsImlkIiwibWludCIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwibWFwU3R5bGVzUmVwbGFjZURlZmF1bHQiLCJpbml0aWFsVWlTdGF0ZSIsInByZXZpb3VzU3RhdGUiLCJ1bmRlZmluZWQiLCJoYW5kbGVEZWxldGVFbnRyeSIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJhY2N1IiwiY3VyciIsImhhbmRsZVJlbmFtZUVudHJ5Iiwib2xkSWQiLCJuZXdJZCIsImFjdGlvbiIsImZvckVhY2giLCJ1cGRhdGVJdGVtU3RhdGUiLCJoYW5kbGVycyIsIkFjdGlvblR5cGVzIiwiUkVHSVNURVJfRU5UUlkiLCJERUxFVEVfRU5UUlkiLCJSRU5BTUVfRU5UUlkiLCJfa2VwbGVyR2xSZWR1Y2VyIiwibWVyZ2VJbml0aWFsU3RhdGUiLCJzYXZlZCIsInByb3ZpZGVkIiwiZXh0cmFJbml0aWFsU3RhdGVLZXlzIiwibmV3U3RhdGUiLCJrZXkiLCJkZWNvcmF0ZSIsInRhcmdldCIsInNhdmVkSW5pdGlhbFN0YXRlIiwidGFyZ2V0SW5pdGlhbFN0YXRlIiwicGx1Z2luIiwiY3VzdG9tUmVkdWNlciIsIm9wdGlvbnMiLCJuZXh0U3RhdGUiLCJ0eXBlIiwib3ZlcnJpZGUiLCJpbmlTdCIsIm1lcmdlZCIsInRhcmdldFJlZHVjZXIiLCJrZXBsZXJHbFJlZHVjZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBRUE7Ozs7OztBQUVBO0FBQ0EsSUFBTUEsZ0JBQWdCLEdBQUcsRUFBekI7O0FBRU8sU0FBU0MsbUJBQVQsQ0FBNkJDLFlBQTdCLEVBQTJD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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNFTixFQUFBQSxNQUFNLENBQUN2QyxZQUFQLEdBQXNCLFNBQVNBLFlBQVQsQ0FBc0JnRCxLQUF0QixFQUFpRDtBQUFBLFFBQXBCL0MsYUFBb0IsdUVBQUosRUFBSTtBQUNyRTtBQUNBLFFBQU1rQyxxQkFBcUIsR0FBR3BCLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZZixhQUFaLENBQTlCO0FBQ0EsUUFBTWdELE1BQU0sR0FBR2pCLGlCQUFpQixDQUFDUyxrQkFBRCxFQUFxQk8sS0FBckIsRUFBNEJiLHFCQUE1QixDQUFoQztBQUNBLFFBQU1lLGFBQWEsR0FBR25ELG1CQUFtQixDQUFDa0QsTUFBRCxFQUFTaEQsYUFBVCxDQUF6QztBQUVBLFdBQU9xQyxRQUFRLENBQUNZLGFBQUQsRUFBZ0JELE1BQWhCLENBQWY7QUFDRCxHQVBEOztBQVNBLFNBQU9WLE1BQVA7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsSUFBTVksZUFBZSxHQUFHYixRQUFRLENBQUNQLGdCQUFELENBQWhDO2VBQ2VvQixlIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtBY3Rpb25UeXBlcywga2VwbGVyR2xJbml0LCBfYWN0aW9uRm9yLCBfdXBkYXRlUHJvcGVydHl9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge2hhbmRsZUFjdGlvbnN9IGZyb20gJ3JlZHV4LWFjdGlvbnMnO1xuXG5pbXBvcnQge2NvcmVSZWR1Y2VyRmFjdG9yeX0gZnJvbSAnLi9jb3JlJztcblxuLy8gSU5JVElBTF9TVEFURVxuY29uc3QgaW5pdGlhbENvcmVTdGF0ZSA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUluaXRpYWxTdGF0ZShpbml0aWFsU3RhdGUsIGV4dHJhUmVkdWNlcnM/KSB7XG4gIGNvbnN0IGNvcmVSZWR1Y2VyID0gY29yZVJlZHVjZXJGYWN0b3J5KGluaXRpYWxTdGF0ZSwgZXh0cmFSZWR1Y2Vycyk7XG5cbiAgY29uc3QgaGFuZGxlUmVnaXN0ZXJFbnRyeSA9IChcbiAgICBzdGF0ZSxcbiAgICB7XG4gICAgICBwYXlsb2FkOiB7XG4gICAgICAgIGlkLFxuICAgICAgICBtaW50LFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgbWFwYm94QXBpVXJsLFxuICAgICAgICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCxcbiAgICAgICAgaW5pdGlhbFVpU3RhdGVcbiAgICAgIH1cbiAgICB9XG4gICkgPT4ge1xuICAgIC8vIGJ5IGRlZmF1bHQsIGFsd2F5cyBjcmVhdGUgYSBtaW50IHN0YXRlIGV2ZW4gaWYgdGhlIHNhbWUgaWQgYWxyZWFkeSBleGlzdFxuICAgIC8vIGlmIHN0YXRlLmlkIGV4aXN0IGFuZCBtaW50PWZhbHNlLCBrZWVwIHRoZSBleGlzdGluZyBzdGF0ZVxuICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSBzdGF0ZVtpZF0gJiYgbWludCA9PT0gZmFsc2UgPyBzdGF0ZVtpZF0gOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLy8gcmVnaXN0ZXIgZW50cnkgdG8ga2VwbGVyLmdsIHBhc3NpbmcgaW4gbWFwYm94IGNvbmZpZyB0byBtYXBTdHlsZVxuICAgICAgLi4uc3RhdGUsXG4gICAgICBbaWRdOiBjb3JlUmVkdWNlcihcbiAgICAgICAgcHJldmlvdXNTdGF0ZSxcbiAgICAgICAga2VwbGVyR2xJbml0KHttYXBib3hBcGlBY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsLCBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCwgaW5pdGlhbFVpU3RhdGV9KVxuICAgICAgKVxuICAgIH07XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlRW50cnkgPSAoc3RhdGUsIHtwYXlsb2FkOiBpZH0pID0+XG4gICAgT2JqZWN0LmtleXMoc3RhdGUpLnJlZHVjZShcbiAgICAgIChhY2N1LCBjdXJyKSA9PiAoe1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICAuLi4oY3VyciA9PT0gaWQgPyB7fSA6IHtbY3Vycl06IHN0YXRlW2N1cnJdfSlcbiAgICAgIH0pLFxuICAgICAge31cbiAgICApO1xuXG4gIGNvbnN0IGhhbmRsZVJlbmFtZUVudHJ5ID0gKHN0YXRlLCB7cGF5bG9hZDoge29sZElkLCBuZXdJZH19KSA9PlxuICAgIE9iamVjdC5rZXlzKHN0YXRlKS5yZWR1Y2UoXG4gICAgICAoYWNjdSwgY3VycikgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgLi4ue1tjdXJyID09PSBvbGRJZCA/IG5ld0lkIDogY3Vycl06IHN0YXRlW2N1cnJdfVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG5cbiAgcmV0dXJuIChzdGF0ZSA9IGluaXRpYWxDb3JlU3RhdGUsIGFjdGlvbikgPT4ge1xuICAgIC8vIHVwZGF0ZSBjaGlsZCBzdGF0ZXNcbiAgICBPYmplY3Qua2V5cyhzdGF0ZSkuZm9yRWFjaChpZCA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVJdGVtU3RhdGUgPSBjb3JlUmVkdWNlcihzdGF0ZVtpZF0sIF9hY3Rpb25Gb3IoaWQsIGFjdGlvbikpO1xuICAgICAgc3RhdGUgPSBfdXBkYXRlUHJvcGVydHkoc3RhdGUsIGlkLCB1cGRhdGVJdGVtU3RhdGUpO1xuICAgIH0pO1xuXG4gICAgLy8gcGVyZm9ybSBhZGRpdGlvbmFsIHN0YXRlIHJlZHVjaW5nIChlLmcuIHN3aXRjaCBhY3Rpb24udHlwZSBldGMuLi4pXG4gICAgY29uc3QgaGFuZGxlcnMgPSB7XG4gICAgICBbQWN0aW9uVHlwZXMuUkVHSVNURVJfRU5UUlldOiBoYW5kbGVSZWdpc3RlckVudHJ5LFxuICAgICAgW0FjdGlvblR5cGVzLkRFTEVURV9FTlRSWV06IGhhbmRsZURlbGV0ZUVudHJ5LFxuICAgICAgW0FjdGlvblR5cGVzLlJFTkFNRV9FTlRSWV06IGhhbmRsZVJlbmFtZUVudHJ5XG4gICAgfTtcblxuICAgIC8vIFRPRE86IFVuZGVyc3RhbmQgd2h5IHRoZSBMaW50IHNlZXMgYW4gZXJyb3IgaGVyZSwgd2hpbGUgdGhlIElERSBkb2VzIG5vdC5cbiAgICByZXR1cm4gaGFuZGxlQWN0aW9ucyhoYW5kbGVycywgaW5pdGlhbENvcmVTdGF0ZSkoc3RhdGUsIGFjdGlvbik7XG4gIH07XG59XG5cbmNvbnN0IF9rZXBsZXJHbFJlZHVjZXIgPSBwcm92aWRlSW5pdGlhbFN0YXRlKGluaXRpYWxDb3JlU3RhdGUpO1xuXG5mdW5jdGlvbiBtZXJnZUluaXRpYWxTdGF0ZShzYXZlZCA9IHt9LCBwcm92aWRlZCA9IHt9LCBleHRyYUluaXRpYWxTdGF0ZUtleXM6IHN0cmluZ1tdID0gW10pIHtcbiAgY29uc3Qga2V5cyA9IFsnbWFwU3RhdGUnLCAnbWFwU3R5bGUnLCAndmlzU3RhdGUnLCAndWlTdGF0ZScsIC4uLmV4dHJhSW5pdGlhbFN0YXRlS2V5c107XG5cbiAgLy8gc2hhbGxvdyBtZXJnZSBlYWNoIHJlZHVjZXJcbiAgY29uc3QgbmV3U3RhdGUgPSBrZXlzLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIC4uLihzYXZlZFtrZXldICYmIHByb3ZpZGVkW2tleV1cbiAgICAgICAgPyB7W2tleV06IHsuLi5zYXZlZFtrZXldLCAuLi5wcm92aWRlZFtrZXldfX1cbiAgICAgICAgOiB7W2tleV06IHNhdmVkW2tleV0gfHwgcHJvdmlkZWRba2V5XSB8fCB7fX0pXG4gICAgfSksXG4gICAge31cbiAgKTtcblxuICByZXR1cm4gbmV3U3RhdGU7XG59XG5cbmZ1bmN0aW9uIGRlY29yYXRlKHRhcmdldCwgc2F2ZWRJbml0aWFsU3RhdGUgPSB7fSkge1xuICBjb25zdCB0YXJnZXRJbml0aWFsU3RhdGUgPSBzYXZlZEluaXRpYWxTdGF0ZTtcblxuICAvKipcbiAgICogUmV0dXJucyBhIGtlcGxlci5nbCByZWR1Y2VyIHRoYXQgd2lsbCBhbHNvIHBhc3MgZWFjaCBhY3Rpb24gdGhyb3VnaCBhZGRpdGlvbmFsIHJlZHVjZXJzIHNwaWVjaWZpZWQuXG4gICAqIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGVpdGhlciBhIHJlZHVjZXIgbWFwIG9yIGEgcmVkdWNlciBmdW5jdGlvbi5cbiAgICogVGhlIHN0YXRlIHBhc3NlZCBpbnRvIHRoZSBhZGRpdGlvbmFsIGFjdGlvbiBoYW5kbGVyIGlzIHRoZSBpbnN0YW5jZSBzdGF0ZS5cbiAgICogSXQgd2lsbCBpbmNsdWRlIGFsbCB0aGUgc3VicmVkdWNlcnMgYHZpc1N0YXRlYCwgYHVpU3RhdGVgLCBgbWFwU3RhdGVgIGFuZCBgbWFwU3R5bGVgLlxuICAgKiBgLnBsdWdpbmAgaXMgb25seSBtZWFudCB0byBiZSBjYWxsZWQgb25jZSB3aGVuIG1vdW50aW5nIHRoZSBrZXBsZXJHbFJlZHVjZXIgdG8gdGhlIHN0b3JlLlxuICAgKiAqKk5vdGUqKiBUaGlzIGlzIGFuIGFkdmFuY2VkIG9wdGlvbiB0byBnaXZlIHlvdSBtb3JlIGZyZWVkb20gdG8gbW9kaWZ5IHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUga2VwbGVyLmdsIGluc3RhbmNlLlxuICAgKiBZb3Ugc2hvdWxkIG9ubHkgdXNlIHRoaXMgdG8gYWRkaW5nIGFkZGl0aW9uYWwgYWN0aW9ucyBpbnN0ZWFkIG9mIHJlcGxhY2luZyBkZWZhdWx0IGFjdGlvbnMuXG4gICAqXG4gICAqIEBtaXhpbiBrZXBsZXJHbFJlZHVjZXIucGx1Z2luXG4gICAqIEBtZW1iZXJvZiBrZXBsZXJHbFJlZHVjZXJcbiAgICogQHBhcmFtIHtPYmplY3R8RnVuY3Rpb259IGN1c3RvbVJlZHVjZXIgLSBBIHJlZHVjZXIgbWFwIG9yIGEgcmVkdWNlclxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIG9wdGlvbnMgdG8gYmUgYXBwbGllZCB0byBjdXN0b20gcmVkdWNlciBsb2dpY1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5vdmVycmlkZSAtIG9iamVjdHMgdGhhdCBkZXNjcmliZSB3aGljaCBhY3Rpb24gdG8gb3ZlcnJpZGUsIGUuZy4ge1tBY3Rpb25UeXBlcy5MQVlFUl9UWVBFX0NIQU5HRV06IHRydWV9XG4gICAqIEBwdWJsaWNcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgbXlLZXBsZXJHbFJlZHVjZXIgPSBrZXBsZXJHbFJlZHVjZXJcbiAgICogIC5wbHVnaW4oe1xuICAgKiAgICAvLyAxLiBhcyByZWR1Y2VyIG1hcFxuICAgKiAgICBISURFX0FORF9TSE9XX1NJREVfUEFORUw6IChzdGF0ZSwgYWN0aW9uKSA9PiAoe1xuICAgKiAgICAgIC4uLnN0YXRlLFxuICAgKiAgICAgIHVpU3RhdGU6IHtcbiAgICogICAgICAgIC4uLnN0YXRlLnVpU3RhdGUsXG4gICAqICAgICAgICByZWFkT25seTogIXN0YXRlLnVpU3RhdGUucmVhZE9ubHlcbiAgICogICAgICB9XG4gICAqICAgIH0pXG4gICAqICB9KVxuICAgKiAucGx1Z2luKGhhbmRsZUFjdGlvbnMoe1xuICAgKiAgIC8vIDIuIGFzIHJlZHVjZXJcbiAgICogICAnSElERV9NQVBfQ09OVFJPTFMnOiAoc3RhdGUsIGFjdGlvbikgPT4gKHtcbiAgICogICAgIC4uLnN0YXRlLFxuICAgKiAgICAgdWlTdGF0ZToge1xuICAgKiAgICAgICAuLi5zdGF0ZS51aVN0YXRlLFxuICAgKiAgICAgICBtYXBDb250cm9sczogaGlkZGVuTWFwQ29udHJvbFxuICAgKiAgICAgfVxuICAgKiAgIH0pXG4gICAqIH0sIHt9KSk7XG4gICAqL1xuICB0YXJnZXQucGx1Z2luID0gZnVuY3Rpb24gcGx1Z2luKGN1c3RvbVJlZHVjZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIGN1c3RvbVJlZHVjZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICAvLyBpZiBvbmx5IHByb3ZpZGVkIGEgcmVkdWNlck1hcCwgd3JhcCBpdCBpbiBhIHJlZHVjZXJcbiAgICAgIGN1c3RvbVJlZHVjZXIgPSBoYW5kbGVBY3Rpb25zKGN1c3RvbVJlZHVjZXIsIHt9KTtcbiAgICB9XG5cbiAgICAvLyB1c2UgJ2Z1bmN0aW9uJyBrZXl3b3JkIHRvIGVuYWJsZSAndGhpcydcbiAgICByZXR1cm4gZGVjb3JhdGUoKHN0YXRlID0ge30sIGFjdGlvbjoge3R5cGU/OiBzdHJpbmd9ID0ge30pID0+IHtcbiAgICAgIGxldCBuZXh0U3RhdGUgPSBzdGF0ZTtcbiAgICAgIGlmIChhY3Rpb24udHlwZSAmJiAhb3B0aW9ucz8ub3ZlcnJpZGU/LlthY3Rpb24udHlwZV0pIHtcbiAgICAgICAgbmV4dFN0YXRlID0gdGhpcyhzdGF0ZSwgYWN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgLy8gZm9yIGVhY2ggZW50cnkgaW4gdGhlIHN0YXRlblxuICAgICAgT2JqZWN0LmtleXMobmV4dFN0YXRlKS5mb3JFYWNoKGlkID0+IHtcbiAgICAgICAgLy8gdXBkYXRlIGNoaWxkIHN0YXRlc1xuICAgICAgICBuZXh0U3RhdGUgPSBfdXBkYXRlUHJvcGVydHkoXG4gICAgICAgICAgbmV4dFN0YXRlLFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIGN1c3RvbVJlZHVjZXIobmV4dFN0YXRlW2lkXSwgX2FjdGlvbkZvcihpZCwgYWN0aW9uKSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJuIGEgcmVkdWNlciB0aGF0IGluaXRpYXRlZCB3aXRoIGN1c3RvbSBpbml0aWFsIHN0YXRlLlxuICAgKiBUaGUgcGFyYW1ldGVyIHNob3VsZCBiZSBhbiBvYmplY3QgbWFwcGluZyBmcm9tIGBzdWJyZWR1Y2VyYCBuYW1lIHRvIGN1c3RvbSBzdWJyZWR1Y2VyIHN0YXRlLFxuICAgKiB3aGljaCB3aWxsIGJlIHNoYWxsb3cgKiptZXJnZWQqKiB3aXRoIGRlZmF1bHQgaW5pdGlhbCBzdGF0ZS5cbiAgICpcbiAgICogRGVmYXVsdCBzdWJyZWR1Y2VyIHN0YXRlOlxuICAgKiAgLSBbYHZpc1N0YXRlYF0oLi92aXMtc3RhdGUubWQjSU5JVElBTF9WSVNfU1RBVEUpXG4gICAqICAtIFtgbWFwU3RhdGVgXSguL21hcC1zdGF0ZS5tZCNJTklUSUFMX01BUF9TVEFURSlcbiAgICogIC0gW2BtYXBTdHlsZWBdKC4vbWFwLXN0eWxlLm1kI0lOSVRJQUxfTUFQX1NUWUxFKVxuICAgKiAgLSBbYHVpU3RhdGVgXSguL3VpLXN0YXRlLm1kI0lOSVRJQUxfVUlfU1RBVEUpXG4gICAqIEBtaXhpbiBrZXBsZXJHbFJlZHVjZXIuaW5pdGlhbFN0YXRlXG4gICAqIEBtZW1iZXJvZiBrZXBsZXJHbFJlZHVjZXJcbiAgICogQHBhcmFtIHtPYmplY3R9IGluaVN0IC0gY3VzdG9tIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIGRlZmF1bHQgaW5pdGlhbCBzdGF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gZXh0cmFSZWR1Y2VycyAtIG9wdGlvbmFsIGN1c3RvbSByZWR1Y2VycyBpbiBhZGRpdGlvbiB0byB0aGUgZGVmYXVsdCBgdmlzU3RhdGVgLCBgbWFwU3RhdGVgLCBgbWFwU3R5bGVgLCBhbmQgYHVpU3RhdGVgXG4gICAqIEBwdWJsaWNcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgbXlLZXBsZXJHbFJlZHVjZXIgPSBrZXBsZXJHbFJlZHVjZXJcbiAgICogIC5pbml0aWFsU3RhdGUoe1xuICAgKiAgICB1aVN0YXRlOiB7cmVhZE9ubHk6IHRydWV9XG4gICAqICB9KTtcbiAgICovXG4gIHRhcmdldC5pbml0aWFsU3RhdGUgPSBmdW5jdGlvbiBpbml0aWFsU3RhdGUoaW5pU3QsIGV4dHJhUmVkdWNlcnMgPSB7fSkge1xuICAgIC8vIHBhc3NpbmcgdGhyb3VnaCBleHRyYUluaXRpYWxTdGF0ZUtleXMgYW5kIGV4dHJhUmVkdWNlcnMgYWxsb3dzIGV4dGVybmFsIGN1c3RvbWl6YXRpb24gYnkgYWRkaW5nIGFkZGl0aW9uYWwgc3VicmVkdWNlcnMgYW5kIHN0YXRlIGJleW9uZCB0aGUgZGVmYXVsdCBgdmlzU3RhdGVgLCBgbWFwU3RhdGVgLCBgbWFwU3R5bGVgLCBhbmQgYHVpU3RhdGVgXG4gICAgY29uc3QgZXh0cmFJbml0aWFsU3RhdGVLZXlzID0gT2JqZWN0LmtleXMoZXh0cmFSZWR1Y2Vycyk7XG4gICAgY29uc3QgbWVyZ2VkID0gbWVyZ2VJbml0aWFsU3RhdGUodGFyZ2V0SW5pdGlhbFN0YXRlLCBpbmlTdCwgZXh0cmFJbml0aWFsU3RhdGVLZXlzKTtcbiAgICBjb25zdCB0YXJnZXRSZWR1Y2VyID0gcHJvdmlkZUluaXRpYWxTdGF0ZShtZXJnZWQsIGV4dHJhUmVkdWNlcnMpO1xuXG4gICAgcmV0dXJuIGRlY29yYXRlKHRhcmdldFJlZHVjZXIsIG1lcmdlZCk7XG4gIH07XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuLyoqXG4gKiBLZXBsZXIuZ2wgcmVkdWNlciB0byBiZSBtb3VudGVkIHRvIHlvdXIgc3RvcmUuIFlvdSBjYW4gbW91bnQgYGtlcGxlckdsUmVkdWNlcmAgYXQgcHJvcGVydHkgYGtlcGxlckdsYCwgaWYgeW91IGNob29zZVxuICogdG8gbW91bnQgaXQgYXQgYW5vdGhlciBhZGRyZXNzIGUuZy4gYGZvb2AgeW91IHdpbGwgbmVlZCB0byBzcGVjaWZ5IGl0IHdoZW4geW91IG1vdW50IGBLZXBsZXJHbGAgY29tcG9uZW50IGluIHlvdXIgYXBwIHdpdGggYGdldFN0YXRlOiBzdGF0ZSA9PiBzdGF0ZS5mb29gXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciBmcm9tICdrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuICogaW1wb3J0IHtjcmVhdGVTdG9yZSwgY29tYmluZVJlZHVjZXJzLCBhcHBseU1pZGRsZXdhcmUsIGNvbXBvc2V9IGZyb20gJ3JlZHV4JztcbiAqIGltcG9ydCB7dGFza01pZGRsZXdhcmV9IGZyb20gJ3JlYWN0LXBhbG0vdGFza3MnO1xuICpcbiAqIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHt9O1xuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogICAvLyA8LS0gbW91bnQga2VwbGVyLmdsIHJlZHVjZXIgaW4geW91ciBhcHBcbiAqICAga2VwbGVyR2w6IGtlcGxlckdsUmVkdWNlcixcbiAqXG4gKiAgIC8vIFlvdXIgb3RoZXIgcmVkdWNlcnMgaGVyZVxuICogICBhcHA6IGFwcFJlZHVjZXJcbiAqIH0pO1xuICpcbiAqIC8vIHVzaW5nIGNyZWF0ZVN0b3JlXG4gKiBleHBvcnQgZGVmYXVsdCBjcmVhdGVTdG9yZShyZWR1Y2VyLCBpbml0aWFsU3RhdGUsIGFwcGx5TWlkZGxld2FyZSh0YXNrTWlkZGxld2FyZSkpO1xuICovXG5jb25zdCBrZXBsZXJHbFJlZHVjZXIgPSBkZWNvcmF0ZShfa2VwbGVyR2xSZWR1Y2VyKTtcbmV4cG9ydCBkZWZhdWx0IGtlcGxlckdsUmVkdWNlcjtcbiJdfQ==
|
|
229
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yb290LnRzIl0sIm5hbWVzIjpbImluaXRpYWxDb3JlU3RhdGUiLCJwcm92aWRlSW5pdGlhbFN0YXRlIiwiaW5pdGlhbFN0YXRlIiwiZXh0cmFSZWR1Y2VycyIsImNvcmVSZWR1Y2VyIiwiaGFuZGxlUmVnaXN0ZXJFbnRyeSIsInN0YXRlIiwicGF5bG9hZCIsImlkIiwibWludCIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwibWFwU3R5bGVzUmVwbGFjZURlZmF1bHQiLCJpbml0aWFsVWlTdGF0ZSIsInByZXZpb3VzU3RhdGUiLCJ1bmRlZmluZWQiLCJoYW5kbGVEZWxldGVFbnRyeSIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJhY2N1IiwiY3VyciIsImhhbmRsZVJlbmFtZUVudHJ5Iiwib2xkSWQiLCJuZXdJZCIsImFjdGlvbiIsImZvckVhY2giLCJ1cGRhdGVJdGVtU3RhdGUiLCJoYW5kbGVycyIsIkFjdGlvblR5cGVzIiwiUkVHSVNURVJfRU5UUlkiLCJERUxFVEVfRU5UUlkiLCJSRU5BTUVfRU5UUlkiLCJfa2VwbGVyR2xSZWR1Y2VyIiwibWVyZ2VJbml0aWFsU3RhdGUiLCJzYXZlZCIsInByb3ZpZGVkIiwiZXh0cmFJbml0aWFsU3RhdGVLZXlzIiwibmV3U3RhdGUiLCJrZXkiLCJkZWNvcmF0ZSIsInRhcmdldCIsInNhdmVkSW5pdGlhbFN0YXRlIiwidGFyZ2V0SW5pdGlhbFN0YXRlIiwicGx1Z2luIiwiY3VzdG9tUmVkdWNlciIsIm9wdGlvbnMiLCJuZXh0U3RhdGUiLCJ0eXBlIiwib3ZlcnJpZGUiLCJpbmlTdCIsIm1lcmdlZCIsInRhcmdldFJlZHVjZXIiLCJrZXBsZXJHbFJlZHVjZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQTs7QUFDQTs7QUFFQTs7Ozs7O0FBRUE7QUFDQSxJQUFNQSxnQkFBZ0IsR0FBRyxFQUF6Qjs7QUFFTyxTQUFTQyxtQkFBVCxDQUE2QkMsWUFBN0IsRUFBMkND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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0VOLEVBQUFBLE1BQU0sQ0FBQ3ZDLFlBQVAsR0FBc0IsU0FBU0EsWUFBVCxDQUFzQmdELEtBQXRCLEVBQWlEO0FBQUEsUUFBcEIvQyxhQUFvQix1RUFBSixFQUFJO0FBQ3JFO0FBQ0EsUUFBTWtDLHFCQUFxQixHQUFHcEIsTUFBTSxDQUFDQyxJQUFQLENBQVlmLGFBQVosQ0FBOUI7QUFDQSxRQUFNZ0QsTUFBTSxHQUFHakIsaUJBQWlCLENBQUNTLGtCQUFELEVBQXFCTyxLQUFyQixFQUE0QmIscUJBQTVCLENBQWhDO0FBQ0EsUUFBTWUsYUFBYSxHQUFHbkQsbUJBQW1CLENBQUNrRCxNQUFELEVBQVNoRCxhQUFULENBQXpDO0FBRUEsV0FBT3FDLFFBQVEsQ0FBQ1ksYUFBRCxFQUFnQkQsTUFBaEIsQ0FBZjtBQUNELEdBUEQ7O0FBU0EsU0FBT1YsTUFBUDtBQUNEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxJQUFNWSxlQUFlLEdBQUdiLFFBQVEsQ0FBQ1AsZ0JBQUQsQ0FBaEM7ZUFDZW9CLGUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0FjdGlvblR5cGVzLCBrZXBsZXJHbEluaXQsIF9hY3Rpb25Gb3IsIF91cGRhdGVQcm9wZXJ0eX0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7aGFuZGxlQWN0aW9uc30gZnJvbSAncmVkdXgtYWN0aW9ucyc7XG5cbmltcG9ydCB7Y29yZVJlZHVjZXJGYWN0b3J5fSBmcm9tICcuL2NvcmUnO1xuXG4vLyBJTklUSUFMX1NUQVRFXG5jb25zdCBpbml0aWFsQ29yZVN0YXRlID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSW5pdGlhbFN0YXRlKGluaXRpYWxTdGF0ZSwgZXh0cmFSZWR1Y2Vycz8pIHtcbiAgY29uc3QgY29yZVJlZHVjZXIgPSBjb3JlUmVkdWNlckZhY3RvcnkoaW5pdGlhbFN0YXRlLCBleHRyYVJlZHVjZXJzKTtcblxuICBjb25zdCBoYW5kbGVSZWdpc3RlckVudHJ5ID0gKFxuICAgIHN0YXRlLFxuICAgIHtcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgaWQsXG4gICAgICAgIG1pbnQsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0LFxuICAgICAgICBpbml0aWFsVWlTdGF0ZVxuICAgICAgfVxuICAgIH1cbiAgKSA9PiB7XG4gICAgLy8gYnkgZGVmYXVsdCwgYWx3YXlzIGNyZWF0ZSBhIG1pbnQgc3RhdGUgZXZlbiBpZiB0aGUgc2FtZSBpZCBhbHJlYWR5IGV4aXN0XG4gICAgLy8gaWYgc3RhdGUuaWQgZXhpc3QgYW5kIG1pbnQ9ZmFsc2UsIGtlZXAgdGhlIGV4aXN0aW5nIHN0YXRlXG4gICAgY29uc3QgcHJldmlvdXNTdGF0ZSA9IHN0YXRlW2lkXSAmJiBtaW50ID09PSBmYWxzZSA/IHN0YXRlW2lkXSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiB7XG4gICAgICAvLyByZWdpc3RlciBlbnRyeSB0byBrZXBsZXIuZ2wgcGFzc2luZyBpbiBtYXBib3ggY29uZmlnIHRvIG1hcFN0eWxlXG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIFtpZF06IGNvcmVSZWR1Y2VyKFxuICAgICAgICBwcmV2aW91c1N0YXRlLFxuICAgICAgICBrZXBsZXJHbEluaXQoe21hcGJveEFwaUFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmwsIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0LCBpbml0aWFsVWlTdGF0ZX0pXG4gICAgICApXG4gICAgfTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEZWxldGVFbnRyeSA9IChzdGF0ZSwge3BheWxvYWQ6IGlkfSkgPT5cbiAgICBPYmplY3Qua2V5cyhzdGF0ZSkucmVkdWNlKFxuICAgICAgKGFjY3UsIGN1cnIpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIC4uLihjdXJyID09PSBpZCA/IHt9IDoge1tjdXJyXTogc3RhdGVbY3Vycl19KVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG5cbiAgY29uc3QgaGFuZGxlUmVuYW1lRW50cnkgPSAoc3RhdGUsIHtwYXlsb2FkOiB7b2xkSWQsIG5ld0lkfX0pID0+XG4gICAgT2JqZWN0LmtleXMoc3RhdGUpLnJlZHVjZShcbiAgICAgIChhY2N1LCBjdXJyKSA9PiAoe1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICAuLi57W2N1cnIgPT09IG9sZElkID8gbmV3SWQgOiBjdXJyXTogc3RhdGVbY3Vycl19XG4gICAgICB9KSxcbiAgICAgIHt9XG4gICAgKTtcblxuICByZXR1cm4gKHN0YXRlID0gaW5pdGlhbENvcmVTdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgLy8gdXBkYXRlIGNoaWxkIHN0YXRlc1xuICAgIE9iamVjdC5rZXlzKHN0YXRlKS5mb3JFYWNoKGlkID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZUl0ZW1TdGF0ZSA9IGNvcmVSZWR1Y2VyKHN0YXRlW2lkXSwgX2FjdGlvbkZvcihpZCwgYWN0aW9uKSk7XG4gICAgICBzdGF0ZSA9IF91cGRhdGVQcm9wZXJ0eShzdGF0ZSwgaWQsIHVwZGF0ZUl0ZW1TdGF0ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBwZXJmb3JtIGFkZGl0aW9uYWwgc3RhdGUgcmVkdWNpbmcgKGUuZy4gc3dpdGNoIGFjdGlvbi50eXBlIGV0Yy4uLilcbiAgICBjb25zdCBoYW5kbGVycyA9IHtcbiAgICAgIFtBY3Rpb25UeXBlcy5SRUdJU1RFUl9FTlRSWV06IGhhbmRsZVJlZ2lzdGVyRW50cnksXG4gICAgICBbQWN0aW9uVHlwZXMuREVMRVRFX0VOVFJZXTogaGFuZGxlRGVsZXRlRW50cnksXG4gICAgICBbQWN0aW9uVHlwZXMuUkVOQU1FX0VOVFJZXTogaGFuZGxlUmVuYW1lRW50cnlcbiAgICB9O1xuXG4gICAgLy8gVE9ETzogVW5kZXJzdGFuZCB3aHkgdGhlIExpbnQgc2VlcyBhbiBlcnJvciBoZXJlLCB3aGlsZSB0aGUgSURFIGRvZXMgbm90LlxuICAgIHJldHVybiBoYW5kbGVBY3Rpb25zKGhhbmRsZXJzLCBpbml0aWFsQ29yZVN0YXRlKShzdGF0ZSwgYWN0aW9uKTtcbiAgfTtcbn1cblxuY29uc3QgX2tlcGxlckdsUmVkdWNlciA9IHByb3ZpZGVJbml0aWFsU3RhdGUoaW5pdGlhbENvcmVTdGF0ZSk7XG5cbmZ1bmN0aW9uIG1lcmdlSW5pdGlhbFN0YXRlKHNhdmVkID0ge30sIHByb3ZpZGVkID0ge30sIGV4dHJhSW5pdGlhbFN0YXRlS2V5czogc3RyaW5nW10gPSBbXSkge1xuICBjb25zdCBrZXlzID0gWydtYXBTdGF0ZScsICdtYXBTdHlsZScsICd2aXNTdGF0ZScsICd1aVN0YXRlJywgLi4uZXh0cmFJbml0aWFsU3RhdGVLZXlzXTtcblxuICAvLyBzaGFsbG93IG1lcmdlIGVhY2ggcmVkdWNlclxuICBjb25zdCBuZXdTdGF0ZSA9IGtleXMucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgLi4uKHNhdmVkW2tleV0gJiYgcHJvdmlkZWRba2V5XVxuICAgICAgICA/IHtba2V5XTogey4uLnNhdmVkW2tleV0sIC4uLnByb3ZpZGVkW2tleV19fVxuICAgICAgICA6IHtba2V5XTogc2F2ZWRba2V5XSB8fCBwcm92aWRlZFtrZXldIHx8IHt9fSlcbiAgICB9KSxcbiAgICB7fVxuICApO1xuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZnVuY3Rpb24gZGVjb3JhdGUodGFyZ2V0LCBzYXZlZEluaXRpYWxTdGF0ZSA9IHt9KSB7XG4gIGNvbnN0IHRhcmdldEluaXRpYWxTdGF0ZSA9IHNhdmVkSW5pdGlhbFN0YXRlO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEga2VwbGVyLmdsIHJlZHVjZXIgdGhhdCB3aWxsIGFsc28gcGFzcyBlYWNoIGFjdGlvbiB0aHJvdWdoIGFkZGl0aW9uYWwgcmVkdWNlcnMgc3BpZWNpZmllZC5cbiAgICogVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgZWl0aGVyIGEgcmVkdWNlciBtYXAgb3IgYSByZWR1Y2VyIGZ1bmN0aW9uLlxuICAgKiBUaGUgc3RhdGUgcGFzc2VkIGludG8gdGhlIGFkZGl0aW9uYWwgYWN0aW9uIGhhbmRsZXIgaXMgdGhlIGluc3RhbmNlIHN0YXRlLlxuICAgKiBJdCB3aWxsIGluY2x1ZGUgYWxsIHRoZSBzdWJyZWR1Y2VycyBgdmlzU3RhdGVgLCBgdWlTdGF0ZWAsIGBtYXBTdGF0ZWAgYW5kIGBtYXBTdHlsZWAuXG4gICAqIGAucGx1Z2luYCBpcyBvbmx5IG1lYW50IHRvIGJlIGNhbGxlZCBvbmNlIHdoZW4gbW91bnRpbmcgdGhlIGtlcGxlckdsUmVkdWNlciB0byB0aGUgc3RvcmUuXG4gICAqICoqTm90ZSoqIFRoaXMgaXMgYW4gYWR2YW5jZWQgb3B0aW9uIHRvIGdpdmUgeW91IG1vcmUgZnJlZWRvbSB0byBtb2RpZnkgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBrZXBsZXIuZ2wgaW5zdGFuY2UuXG4gICAqIFlvdSBzaG91bGQgb25seSB1c2UgdGhpcyB0byBhZGRpbmcgYWRkaXRpb25hbCBhY3Rpb25zIGluc3RlYWQgb2YgcmVwbGFjaW5nIGRlZmF1bHQgYWN0aW9ucy5cbiAgICpcbiAgICogQG1peGluIGtlcGxlckdsUmVkdWNlci5wbHVnaW5cbiAgICogQG1lbWJlcm9mIGtlcGxlckdsUmVkdWNlclxuICAgKiBAcGFyYW0ge09iamVjdHxGdW5jdGlvbn0gY3VzdG9tUmVkdWNlciAtIEEgcmVkdWNlciBtYXAgb3IgYSByZWR1Y2VyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0byBiZSBhcHBsaWVkIHRvIGN1c3RvbSByZWR1Y2VyIGxvZ2ljXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zLm92ZXJyaWRlIC0gb2JqZWN0cyB0aGF0IGRlc2NyaWJlIHdoaWNoIGFjdGlvbiB0byBvdmVycmlkZSwgZS5nLiB7W0FjdGlvblR5cGVzLkxBWUVSX1RZUEVfQ0hBTkdFXTogdHJ1ZX1cbiAgICogQHB1YmxpY1xuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBteUtlcGxlckdsUmVkdWNlciA9IGtlcGxlckdsUmVkdWNlclxuICAgKiAgLnBsdWdpbih7XG4gICAqICAgIC8vIDEuIGFzIHJlZHVjZXIgbWFwXG4gICAqICAgIEhJREVfQU5EX1NIT1dfU0lERV9QQU5FTDogKHN0YXRlLCBhY3Rpb24pID0+ICh7XG4gICAqICAgICAgLi4uc3RhdGUsXG4gICAqICAgICAgdWlTdGF0ZToge1xuICAgKiAgICAgICAgLi4uc3RhdGUudWlTdGF0ZSxcbiAgICogICAgICAgIHJlYWRPbmx5OiAhc3RhdGUudWlTdGF0ZS5yZWFkT25seVxuICAgKiAgICAgIH1cbiAgICogICAgfSlcbiAgICogIH0pXG4gICAqIC5wbHVnaW4oaGFuZGxlQWN0aW9ucyh7XG4gICAqICAgLy8gMi4gYXMgcmVkdWNlclxuICAgKiAgICdISURFX01BUF9DT05UUk9MUyc6IChzdGF0ZSwgYWN0aW9uKSA9PiAoe1xuICAgKiAgICAgLi4uc3RhdGUsXG4gICAqICAgICB1aVN0YXRlOiB7XG4gICAqICAgICAgIC4uLnN0YXRlLnVpU3RhdGUsXG4gICAqICAgICAgIG1hcENvbnRyb2xzOiBoaWRkZW5NYXBDb250cm9sXG4gICAqICAgICB9XG4gICAqICAgfSlcbiAgICogfSwge30pKTtcbiAgICovXG4gIHRhcmdldC5wbHVnaW4gPSBmdW5jdGlvbiBwbHVnaW4oY3VzdG9tUmVkdWNlciwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgY3VzdG9tUmVkdWNlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIC8vIGlmIG9ubHkgcHJvdmlkZWQgYSByZWR1Y2VyTWFwLCB3cmFwIGl0IGluIGEgcmVkdWNlclxuICAgICAgY3VzdG9tUmVkdWNlciA9IGhhbmRsZUFjdGlvbnMoY3VzdG9tUmVkdWNlciwge30pO1xuICAgIH1cblxuICAgIC8vIHVzZSAnZnVuY3Rpb24nIGtleXdvcmQgdG8gZW5hYmxlICd0aGlzJ1xuICAgIHJldHVybiBkZWNvcmF0ZSgoc3RhdGUgPSB7fSwgYWN0aW9uOiB7dHlwZT86IHN0cmluZ30gPSB7fSkgPT4ge1xuICAgICAgbGV0IG5leHRTdGF0ZSA9IHN0YXRlO1xuICAgICAgaWYgKGFjdGlvbi50eXBlICYmICFvcHRpb25zPy5vdmVycmlkZT8uW2FjdGlvbi50eXBlXSkge1xuICAgICAgICBuZXh0U3RhdGUgPSB0aGlzKHN0YXRlLCBhY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyBmb3IgZWFjaCBlbnRyeSBpbiB0aGUgc3RhdGVuXG4gICAgICBPYmplY3Qua2V5cyhuZXh0U3RhdGUpLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAvLyB1cGRhdGUgY2hpbGQgc3RhdGVzXG4gICAgICAgIG5leHRTdGF0ZSA9IF91cGRhdGVQcm9wZXJ0eShcbiAgICAgICAgICBuZXh0U3RhdGUsXG4gICAgICAgICAgaWQsXG4gICAgICAgICAgY3VzdG9tUmVkdWNlcihuZXh0U3RhdGVbaWRdLCBfYWN0aW9uRm9yKGlkLCBhY3Rpb24pKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV4dFN0YXRlO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSByZWR1Y2VyIHRoYXQgaW5pdGlhdGVkIHdpdGggY3VzdG9tIGluaXRpYWwgc3RhdGUuXG4gICAqIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGFuIG9iamVjdCBtYXBwaW5nIGZyb20gYHN1YnJlZHVjZXJgIG5hbWUgdG8gY3VzdG9tIHN1YnJlZHVjZXIgc3RhdGUsXG4gICAqIHdoaWNoIHdpbGwgYmUgc2hhbGxvdyAqKm1lcmdlZCoqIHdpdGggZGVmYXVsdCBpbml0aWFsIHN0YXRlLlxuICAgKlxuICAgKiBEZWZhdWx0IHN1YnJlZHVjZXIgc3RhdGU6XG4gICAqICAtIFtgdmlzU3RhdGVgXSguL3Zpcy1zdGF0ZS5tZCNJTklUSUFMX1ZJU19TVEFURSlcbiAgICogIC0gW2BtYXBTdGF0ZWBdKC4vbWFwLXN0YXRlLm1kI0lOSVRJQUxfTUFQX1NUQVRFKVxuICAgKiAgLSBbYG1hcFN0eWxlYF0oLi9tYXAtc3R5bGUubWQjSU5JVElBTF9NQVBfU1RZTEUpXG4gICAqICAtIFtgdWlTdGF0ZWBdKC4vdWktc3RhdGUubWQjSU5JVElBTF9VSV9TVEFURSlcbiAgICogQG1peGluIGtlcGxlckdsUmVkdWNlci5pbml0aWFsU3RhdGVcbiAgICogQG1lbWJlcm9mIGtlcGxlckdsUmVkdWNlclxuICAgKiBAcGFyYW0ge09iamVjdH0gaW5pU3QgLSBjdXN0b20gc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggZGVmYXVsdCBpbml0aWFsIHN0YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBleHRyYVJlZHVjZXJzIC0gb3B0aW9uYWwgY3VzdG9tIHJlZHVjZXJzIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGB2aXNTdGF0ZWAsIGBtYXBTdGF0ZWAsIGBtYXBTdHlsZWAsIGFuZCBgdWlTdGF0ZWBcbiAgICogQHB1YmxpY1xuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBteUtlcGxlckdsUmVkdWNlciA9IGtlcGxlckdsUmVkdWNlclxuICAgKiAgLmluaXRpYWxTdGF0ZSh7XG4gICAqICAgIHVpU3RhdGU6IHtyZWFkT25seTogdHJ1ZX1cbiAgICogIH0pO1xuICAgKi9cbiAgdGFyZ2V0LmluaXRpYWxTdGF0ZSA9IGZ1bmN0aW9uIGluaXRpYWxTdGF0ZShpbmlTdCwgZXh0cmFSZWR1Y2VycyA9IHt9KSB7XG4gICAgLy8gcGFzc2luZyB0aHJvdWdoIGV4dHJhSW5pdGlhbFN0YXRlS2V5cyBhbmQgZXh0cmFSZWR1Y2VycyBhbGxvd3MgZXh0ZXJuYWwgY3VzdG9taXphdGlvbiBieSBhZGRpbmcgYWRkaXRpb25hbCBzdWJyZWR1Y2VycyBhbmQgc3RhdGUgYmV5b25kIHRoZSBkZWZhdWx0IGB2aXNTdGF0ZWAsIGBtYXBTdGF0ZWAsIGBtYXBTdHlsZWAsIGFuZCBgdWlTdGF0ZWBcbiAgICBjb25zdCBleHRyYUluaXRpYWxTdGF0ZUtleXMgPSBPYmplY3Qua2V5cyhleHRyYVJlZHVjZXJzKTtcbiAgICBjb25zdCBtZXJnZWQgPSBtZXJnZUluaXRpYWxTdGF0ZSh0YXJnZXRJbml0aWFsU3RhdGUsIGluaVN0LCBleHRyYUluaXRpYWxTdGF0ZUtleXMpO1xuICAgIGNvbnN0IHRhcmdldFJlZHVjZXIgPSBwcm92aWRlSW5pdGlhbFN0YXRlKG1lcmdlZCwgZXh0cmFSZWR1Y2Vycyk7XG5cbiAgICByZXR1cm4gZGVjb3JhdGUodGFyZ2V0UmVkdWNlciwgbWVyZ2VkKTtcbiAgfTtcblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG4vKipcbiAqIEtlcGxlci5nbCByZWR1Y2VyIHRvIGJlIG1vdW50ZWQgdG8geW91ciBzdG9yZS4gWW91IGNhbiBtb3VudCBga2VwbGVyR2xSZWR1Y2VyYCBhdCBwcm9wZXJ0eSBga2VwbGVyR2xgLCBpZiB5b3UgY2hvb3NlXG4gKiB0byBtb3VudCBpdCBhdCBhbm90aGVyIGFkZHJlc3MgZS5nLiBgZm9vYCB5b3Ugd2lsbCBuZWVkIHRvIHNwZWNpZnkgaXQgd2hlbiB5b3UgbW91bnQgYEtlcGxlckdsYCBjb21wb25lbnQgaW4geW91ciBhcHAgd2l0aCBgZ2V0U3RhdGU6IHN0YXRlID0+IHN0YXRlLmZvb2BcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyIGZyb20gJ2tlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiBpbXBvcnQge2NyZWF0ZVN0b3JlLCBjb21iaW5lUmVkdWNlcnMsIGFwcGx5TWlkZGxld2FyZSwgY29tcG9zZX0gZnJvbSAncmVkdXgnO1xuICogaW1wb3J0IHt0YXNrTWlkZGxld2FyZX0gZnJvbSAncmVhY3QtcGFsbS90YXNrcyc7XG4gKlxuICogY29uc3QgaW5pdGlhbFN0YXRlID0ge307XG4gKiBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gKiAgIC8vIDwtLSBtb3VudCBrZXBsZXIuZ2wgcmVkdWNlciBpbiB5b3VyIGFwcFxuICogICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICpcbiAqICAgLy8gWW91ciBvdGhlciByZWR1Y2VycyBoZXJlXG4gKiAgIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogLy8gdXNpbmcgY3JlYXRlU3RvcmVcbiAqIGV4cG9ydCBkZWZhdWx0IGNyZWF0ZVN0b3JlKHJlZHVjZXIsIGluaXRpYWxTdGF0ZSwgYXBwbHlNaWRkbGV3YXJlKHRhc2tNaWRkbGV3YXJlKSk7XG4gKi9cbmNvbnN0IGtlcGxlckdsUmVkdWNlciA9IGRlY29yYXRlKF9rZXBsZXJHbFJlZHVjZXIpO1xuZXhwb3J0IGRlZmF1bHQga2VwbGVyR2xSZWR1Y2VyO1xuIl19
|