@carto/kepler.gl 0.0.83 → 0.0.84
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/actions/action-wrapper.d.ts +1 -6
- package/dist/actions/action-wrapper.js +3 -3
- package/dist/components/common/checkbox.js +4 -4
- package/dist/components/common/data-table/grid.js +3 -3
- package/dist/components/common/data-table/index.d.ts +1 -2
- package/dist/components/common/data-table/index.js +6 -6
- package/dist/components/common/item-selector/item-selector.js +3 -3
- package/dist/components/common/portaled.js +6 -6
- package/dist/components/common/time-range-slider.js +3 -3
- package/dist/components/container.js +4 -4
- package/dist/components/editor/editor.js +6 -6
- package/dist/components/editor/feature-styles.js +3 -3
- package/dist/components/editor/handle-style.js +3 -3
- package/dist/components/filters/filter-panels/polygon-filter-panel.js +4 -4
- package/dist/components/modal-container.js +3 -3
- package/dist/components/modals/image-modal-container.js +4 -4
- package/dist/components/modals/load-data-modal.js +3 -3
- package/dist/components/plot-container.js +3 -3
- package/dist/components/side-panel/filter-panel/filter-panel.js +3 -3
- package/dist/components/side-panel/layer-panel/color-range-selector.d.ts +1 -4
- package/dist/components/side-panel/layer-panel/color-range-selector.js +4 -4
- package/dist/components/side-panel.js +3 -3
- package/dist/constants/default-settings.js +2 -2
- package/dist/deckgl-layers/layer-utils/cluster-utils.js +3 -3
- package/dist/layers/aggregation-layer.js +4 -4
- package/dist/layers/geojson-layer/geojson-layer.js +3 -3
- package/dist/layers/heatmap-layer/heatmap-layer.js +3 -3
- package/dist/layers/layer-text-label.js +1 -1
- package/dist/layers/trip-layer/trip-layer.js +5 -5
- package/dist/reducers/map-style-updaters.d.ts +1 -10
- package/dist/reducers/map-style-updaters.js +3 -3
- package/dist/reducers/vis-state-merger.js +6 -6
- package/dist/reducers/vis-state-updaters.js +13 -13
- package/dist/schemas/dataset-schema.d.ts +1 -1
- package/dist/schemas/dataset-schema.js +4 -4
- package/dist/schemas/vis-state-schema.js +7 -7
- package/dist/utils/dataset-utils.js +3 -3
- package/dist/utils/export-utils.js +3 -3
- package/dist/utils/filter-utils.js +7 -7
- package/dist/utils/map-style-utils/mapbox-gl-style-editor.d.ts +3 -18
- package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +6 -6
- package/dist/utils/observe-dimensions.js +3 -3
- package/dist/utils/split-map-utils.js +3 -3
- package/package.json +3 -26
- package/src/actions/action-wrapper.ts +1 -1
- package/src/components/common/checkbox.tsx +1 -1
- package/src/components/common/data-table/grid.tsx +1 -1
- package/src/components/common/data-table/index.tsx +2 -2
- package/src/components/common/item-selector/item-selector.tsx +1 -1
- package/src/components/common/portaled.tsx +2 -2
- package/src/components/common/time-range-slider.tsx +1 -1
- package/src/components/container.tsx +1 -1
- package/src/components/editor/editor.tsx +1 -1
- package/src/components/editor/feature-styles.ts +1 -1
- package/src/components/editor/handle-style.ts +1 -1
- package/src/components/filters/filter-panels/polygon-filter-panel.tsx +1 -1
- package/src/components/modal-container.tsx +1 -1
- package/src/components/modals/image-modal-container.tsx +1 -1
- package/src/components/modals/load-data-modal.tsx +1 -1
- package/src/components/plot-container.tsx +1 -1
- package/src/components/side-panel/filter-panel/filter-panel.tsx +1 -1
- package/src/components/side-panel/layer-panel/color-range-selector.tsx +1 -1
- package/src/components/side-panel.tsx +1 -1
- package/src/deckgl-layers/layer-utils/cluster-utils.ts +1 -1
- package/src/layers/aggregation-layer.ts +1 -1
- package/src/layers/geojson-layer/geojson-layer.ts +1 -1
- package/src/layers/heatmap-layer/heatmap-layer.ts +1 -1
- package/src/layers/layer-text-label.ts +1 -1
- package/src/layers/trip-layer/trip-layer.ts +2 -2
- package/src/reducers/map-style-updaters.ts +1 -1
- package/src/reducers/vis-state-merger.ts +3 -3
- package/src/reducers/vis-state-updaters.ts +4 -4
- package/src/schemas/dataset-schema.ts +1 -1
- package/src/schemas/vis-state-schema.ts +2 -2
- package/src/utils/dataset-utils.ts +1 -1
- package/src/utils/export-utils.ts +1 -1
- package/src/utils/filter-utils.ts +2 -2
- package/src/utils/map-style-utils/mapbox-gl-style-editor.ts +2 -2
- package/src/utils/observe-dimensions.ts +1 -1
- package/src/utils/split-map-utils.ts +1 -1
|
@@ -26,9 +26,9 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
26
26
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
27
27
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
28
28
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
29
|
-
var
|
|
30
|
-
var
|
|
31
|
-
var
|
|
29
|
+
var _uniq = _interopRequireDefault(require("lodash/uniq"));
|
|
30
|
+
var _pick = _interopRequireDefault(require("lodash/pick"));
|
|
31
|
+
var _flattendeep = _interopRequireDefault(require("lodash/flattendeep"));
|
|
32
32
|
var _utils = require("../utils/utils");
|
|
33
33
|
var _filterUtils = require("../utils/filter-utils");
|
|
34
34
|
var _splitMapUtils = require("../utils/split-map-utils");
|
|
@@ -78,7 +78,7 @@ function mergeFilters(state, filtersToMerge, fromConfig) {
|
|
|
78
78
|
updatedFilters = (0, _gpuFilterUtils.resetFilterGpuMode)(updatedFilters);
|
|
79
79
|
updatedFilters = (0, _gpuFilterUtils.assignGpuChannels)(updatedFilters);
|
|
80
80
|
// filter data
|
|
81
|
-
var datasetsToFilter = (0,
|
|
81
|
+
var datasetsToFilter = (0, _uniq["default"])((0, _flattendeep["default"])(validated.map(function (f) {
|
|
82
82
|
return f.dataId;
|
|
83
83
|
})));
|
|
84
84
|
var filtered = (0, _filterUtils.applyFiltersToDatasets)(datasetsToFilter, updatedDatasets, updatedFilters, state.layers);
|
|
@@ -232,7 +232,7 @@ function mergeInteractions(state, interactionToBeMerged, fromConfig) {
|
|
|
232
232
|
merged[key] = _objectSpread(_objectSpread({}, state.interactionConfig[key]), {}, {
|
|
233
233
|
enabled: Boolean(enabled)
|
|
234
234
|
}, currentConfig ? {
|
|
235
|
-
config: (0,
|
|
235
|
+
config: (0, _pick["default"])(_objectSpread(_objectSpread({}, currentConfig), configToMerge), Object.keys(currentConfig))
|
|
236
236
|
} : {});
|
|
237
237
|
});
|
|
238
238
|
}
|
|
@@ -566,4 +566,4 @@ var VIS_STATE_MERGERS = exports.VIS_STATE_MERGERS = [{
|
|
|
566
566
|
merge: mergeAnimationConfig,
|
|
567
567
|
prop: 'animationConfig'
|
|
568
568
|
}];
|
|
569
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoMiIsIl9sb2Rhc2gzIiwiX3V0aWxzIiwiX2ZpbHRlclV0aWxzIiwiX3NwbGl0TWFwVXRpbHMiLCJfZ3B1RmlsdGVyVXRpbHMiLCJfZGVmYXVsdFNldHRpbmdzIiwiX3NjaGVtYXMiLCJfZXhjbHVkZWQiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJtZXJnZUZpbHRlcnMiLCJzdGF0ZSIsImZpbHRlcnNUb01lcmdlIiwiZnJvbUNvbmZpZyIsIl92YWxpZGF0ZUZpbHRlcnNVcGRhdCIsInZhbGlkYXRlRmlsdGVyc1VwZGF0ZURhdGFzZXRzIiwidmFsaWRhdGVkIiwiZmFpbGVkIiwidXBkYXRlZERhdGFzZXRzIiwidXBkYXRlZEZpbHRlcnMiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZmlsdGVycyIsInJlc2V0RmlsdGVyR3B1TW9kZSIsImFzc2lnbkdwdUNoYW5uZWxzIiwiZGF0YXNldHNUb0ZpbHRlciIsInVuaXEiLCJmbGF0dGVuRGVlcCIsIm1hcCIsImRhdGFJZCIsImZpbHRlcmVkIiwiYXBwbHlGaWx0ZXJzVG9EYXRhc2V0cyIsImxheWVycyIsImRhdGFzZXRzIiwiZmlsdGVyVG9CZU1lcmdlZCIsImNyZWF0ZUxheWVyRnJvbUNvbmZpZyIsImxheWVyQ29uZmlnIiwiX3ZhbGlkYXRlTGF5ZXJzQnlEYXRhIiwidmFsaWRhdGVMYXllcnNCeURhdGFzZXRzIiwibGF5ZXJDbGFzc2VzIiwibmV3TGF5ZXIiLCJ1cGRhdGVMYXllckRvbWFpbiIsInNlcmlhbGl6ZUxheWVyIiwic2F2ZWRWaXNTdGF0ZSIsInZpc1N0YXRlU2NoZW1hIiwiQ1VSUkVOVF9WRVJTSU9OIiwic2F2ZSIsImxheWVyT3JkZXIiLCJ2aXNTdGF0ZSIsImxvYWRlZExheWVyIiwibG9hZCIsIm1lcmdlTGF5ZXJzIiwibGF5ZXJzVG9NZXJnZSIsInVuZGVmaW5lZCIsInByZXNlcnZlTGF5ZXJPcmRlciIsImwiLCJpZCIsIl92YWxpZGF0ZUxheWVyc0J5RGF0YTIiLCJtZXJnZWRMYXllciIsInVubWVyZ2VkIiwiX2luc2VydExheWVyQXRSaWdodE9yIiwiaW5zZXJ0TGF5ZXJBdFJpZ2h0T3JkZXIiLCJuZXdMYXllck9yZGVyIiwibmV3TGF5ZXJzIiwibGF5ZXJUb0JlTWVyZ2VkIiwiY3VycmVudExheWVycyIsImxheWVyc1RvSW5zZXJ0IiwiY3VycmVudE9yZGVyIiwicHJlc2VydmVkT3JkZXIiLCJsYXllck9yZGVyUXVldWUiLCJpIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJleHBlY3RlZElkeCIsImluZGV4T2YiLCJpbnNlcnRBdCIsInByZWNlZWRJZHgiLCJwcmVjZWVkTGF5ZXIiLCJhcnJheUluc2VydCIsImVyciIsImZpbmRJbmRleCIsIm1lcmdlSW50ZXJhY3Rpb25zIiwiaW50ZXJhY3Rpb25Ub0JlTWVyZ2VkIiwibWVyZ2VkIiwia2V5IiwiaW50ZXJhY3Rpb25Db25maWciLCJjdXJyZW50Q29uZmlnIiwiY29uZmlnIiwiX3JlZiIsImVuYWJsZWQiLCJjb25maWdTYXZlZCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJjb25maWdUb01lcmdlIiwiX21lcmdlSW50ZXJhY3Rpb25Ub29sIiwibWVyZ2VJbnRlcmFjdGlvblRvb2x0aXBDb25maWciLCJtZXJnZWRUb29sdGlwIiwidW5tZXJnZWRUb29sdGlwIiwiZmllbGRzVG9TaG93IiwidG9vbHRpcCIsIkJvb2xlYW4iLCJwaWNrIiwibWVyZ2VTcGxpdE1hcHMiLCJzcGxpdE1hcHMiLCJzbSIsImVudHJpZXMiLCJfcmVmMiIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkyIiwicHVzaFRvIiwiZmluZCIsImdldEluaXRpYWxNYXBMYXllcnNGb3JTcGxpdE1hcCIsInNwbGl0TWFwc1RvQmVNZXJnZWQiLCJ0b29sdGlwQ29uZmlnIiwiX2xvb3AiLCJhbGxGaWVsZHMiLCJmaWVsZHMiLCJkIiwiZm91bmRGaWVsZHNUb1Nob3ciLCJtZXRhZGF0YSIsImlzRHluYW1pY1NwYXRpYWxJbmRleCIsImZpZWxkIiwiaW5jbHVkZXMiLCJtZXJnZUxheWVyQmxlbmRpbmciLCJsYXllckJsZW5kaW5nIiwiTEFZRVJfQkxFTkRJTkdTIiwibWVyZ2VBbmltYXRpb25Db25maWciLCJhbmltYXRpb24iLCJjdXJyZW50VGltZSIsImFuaW1hdGlvbkNvbmZpZyIsImRvbWFpbiIsInZhbGlkYXRlU2F2ZWRMYXllckNvbHVtbnMiLCJzYXZlZENvbHMiLCJlbXB0eUNvbHMiLCJjb2x1bW5zIiwiX2xvb3AyIiwiX09iamVjdCRrZXlzIiwiX2kiLCJzYXZlZCIsImZpZWxkSWR4IiwiX3JlZjQiLCJhbGxDb2xGb3VuZCIsImV2ZXJ5IiwidmFsaWRhdGVDb2x1bW4iLCJjb2x1bW4iLCJvcHRpb25hbCIsInZhbGlkYXRvciIsInZhbGlkYXRlU2F2ZWRUZXh0TGFiZWwiLCJfcmVmNSIsInNhdmVkVGV4dExhYmVsIiwiX3JlZjYiLCJsYXllclRleHRMYWJlbCIsInNhdmVkVGV4dExhYmVscyIsInRleHRMYWJlbCIsImZkIiwicmVkdWNlIiwiYWNjdSIsInZhbGlkYXRlU2F2ZWRWaXN1YWxDaGFubmVscyIsInNhdmVkTGF5ZXIiLCJ2YWx1ZXMiLCJ2aXN1YWxDaGFubmVscyIsIl9yZWY3Iiwic2NhbGUiLCJmb3VuZEZpZWxkIiwiY29sb3JGaWVsZFByb3BzIiwiX3NhdmVkTGF5ZXIkY29uZmlnJGZpIiwiY29sb3JDb2x1bW4iLCJjb2xvckNvbHVtbkZpZWxkIiwiY29sb3JDb2x1bW5JZHgiLCJmb3VuZENoYW5uZWwiLCJ1cGRhdGVMYXllckNvbmZpZyIsInZhbGlkYXRlVmlzdWFsQ2hhbm5lbCIsImxheWVyIiwiX2xheWVyJGNvbmZpZyIsInZhbGlkYXRlTGF5ZXIiLCJ2YWxpZGF0ZUxheWVyV2l0aERhdGEiLCJfcmVmMTAiLCJvcHRpb25zIiwidHlwZSIsImhhc093blByb3BlcnR5IiwibGFiZWwiLCJjb2xvciIsImlzVmlzaWJsZSIsImhpZGRlbiIsImhpZ2hsaWdodENvbG9yIiwidmlzaWJpbGl0eUJ5Wm9vbSIsImNvbHVtbkNvbmZpZyIsImdldExheWVyQ29sdW1ucyIsImFsbG93RW1wdHlDb2x1bW4iLCJ2aXNDb25maWciLCJjb3B5TGF5ZXJDb25maWciLCJzaGFsbG93Q29weSIsImlzVmFsaWRNZXJnZXIiLCJtZXJnZXIiLCJpc09iamVjdCIsIm1lcmdlIiwicHJvcCIsIlZJU19TVEFURV9NRVJHRVJTIiwiZXhwb3J0cyIsInRvTWVyZ2VQcm9wIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlZHVjZXJzL3Zpcy1zdGF0ZS1tZXJnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnO1xuaW1wb3J0IHBpY2sgZnJvbSAnbG9kYXNoLnBpY2snO1xuaW1wb3J0IGZsYXR0ZW5EZWVwIGZyb20gJ2xvZGFzaC5mbGF0dGVuZGVlcCc7XG5pbXBvcnQge2lzT2JqZWN0LCBhcnJheUluc2VydH0gZnJvbSAndXRpbHMvdXRpbHMnO1xuaW1wb3J0IHthcHBseUZpbHRlcnNUb0RhdGFzZXRzLCB2YWxpZGF0ZUZpbHRlcnNVcGRhdGVEYXRhc2V0c30gZnJvbSAndXRpbHMvZmlsdGVyLXV0aWxzJztcblxuaW1wb3J0IHtnZXRJbml0aWFsTWFwTGF5ZXJzRm9yU3BsaXRNYXB9IGZyb20gJ3V0aWxzL3NwbGl0LW1hcC11dGlscyc7XG5pbXBvcnQge3Jlc2V0RmlsdGVyR3B1TW9kZSwgYXNzaWduR3B1Q2hhbm5lbHN9IGZyb20gJ3V0aWxzL2dwdS1maWx0ZXItdXRpbHMnO1xuaW1wb3J0IHtMQVlFUl9CTEVORElOR1N9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7Q1VSUkVOVF9WRVJTSU9OLCB2aXNTdGF0ZVNjaGVtYX0gZnJvbSAnc2NoZW1hcyc7XG5cbmltcG9ydCB7VmlzU3RhdGUsIERhdGFzZXRzfSBmcm9tICcuL3Zpcy1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge0tlcGxlclRhYmxlfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge1BhcnNlZENvbmZpZywgUGFyc2VkTGF5ZXJ9IGZyb20gJ3NjaGVtYXMnO1xuaW1wb3J0IHtMYXllciwgTGF5ZXJDb2x1bW5zLCBMYXllckNvbHVtbn0gZnJvbSAnbGF5ZXJzJztcbmltcG9ydCB7VG9vbHRpcEluZm99IGZyb20gJy4vdmlzLXN0YXRlLXVwZGF0ZXJzJztcbmltcG9ydCB7U2F2ZWRJbnRlcmFjdGlvbkNvbmZpZ30gZnJvbSAnc2NoZW1hcy9zY2hlbWEtbWFuYWdlcic7XG5cbmV4cG9ydCB0eXBlIE1lcmdlciA9IHtcbiAgbWVyZ2U6IChzdGF0ZTogVmlzU3RhdGUsIGNvbmZpZzogYW55LCBmcm9tQ29uZmlnPzogYm9vbGVhbikgPT4gVmlzU3RhdGU7XG4gIHByb3A6IHN0cmluZztcbiAgdG9NZXJnZVByb3A/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgVmlzU3RhdGVNZXJnZXJzID0gTWVyZ2VyW107XG5cbi8qKlxuICogTWVyZ2UgbG9hZGVkIGZpbHRlcnMgd2l0aCBjdXJyZW50IHN0YXRlLCBpZiBubyBmaWVsZHMgb3IgZGF0YSBhcmUgbG9hZGVkXG4gKiBzYXZlIGl0IGZvciBsYXRlclxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRmlsdGVycyhcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBmaWx0ZXJzVG9NZXJnZTogTm9uTnVsbGFibGU8UGFyc2VkQ29uZmlnWyd2aXNTdGF0ZSddPlsnZmlsdGVycyddLFxuICBmcm9tQ29uZmlnPzogYm9vbGVhblxuKTogVmlzU3RhdGUge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVyc1RvTWVyZ2UpIHx8ICFmaWx0ZXJzVG9NZXJnZS5sZW5ndGgpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCB7dmFsaWRhdGVkLCBmYWlsZWQsIHVwZGF0ZWREYXRhc2V0c30gPSB2YWxpZGF0ZUZpbHRlcnNVcGRhdGVEYXRhc2V0cyhzdGF0ZSwgZmlsdGVyc1RvTWVyZ2UpO1xuXG4gIC8vIG1lcmdlIGZpbHRlciB3aXRoIGV4aXN0aW5nXG4gIGxldCB1cGRhdGVkRmlsdGVycyA9IFsuLi4oc3RhdGUuZmlsdGVycyB8fCBbXSksIC4uLnZhbGlkYXRlZF07XG4gIHVwZGF0ZWRGaWx0ZXJzID0gcmVzZXRGaWx0ZXJHcHVNb2RlKHVwZGF0ZWRGaWx0ZXJzKTtcbiAgdXBkYXRlZEZpbHRlcnMgPSBhc3NpZ25HcHVDaGFubmVscyh1cGRhdGVkRmlsdGVycyk7XG4gIC8vIGZpbHRlciBkYXRhXG4gIGNvbnN0IGRhdGFzZXRzVG9GaWx0ZXIgPSB1bmlxKGZsYXR0ZW5EZWVwKHZhbGlkYXRlZC5tYXAoZiA9PiBmLmRhdGFJZCkpKTtcblxuICBjb25zdCBmaWx0ZXJlZCA9IGFwcGx5RmlsdGVyc1RvRGF0YXNldHMoXG4gICAgZGF0YXNldHNUb0ZpbHRlcixcbiAgICB1cGRhdGVkRGF0YXNldHMsXG4gICAgdXBkYXRlZEZpbHRlcnMsXG4gICAgc3RhdGUubGF5ZXJzXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBmaWx0ZXJzOiB1cGRhdGVkRmlsdGVycyxcbiAgICBkYXRhc2V0czogZmlsdGVyZWQsXG4gICAgZmlsdGVyVG9CZU1lcmdlZDogWy4uLnN0YXRlLmZpbHRlclRvQmVNZXJnZWQsIC4uLmZhaWxlZF1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxheWVyRnJvbUNvbmZpZyhzdGF0ZTogVmlzU3RhdGUsIGxheWVyQ29uZmlnOiBhbnkpOiBMYXllciB8IG51bGwge1xuICAvLyBmaXJzdCB2YWxpZGF0ZSBjb25maWcgYWdhaW5zdCBkYXRhc2V0XG4gIGNvbnN0IHt2YWxpZGF0ZWQsIGZhaWxlZH0gPSB2YWxpZGF0ZUxheWVyc0J5RGF0YXNldHMoc3RhdGUuZGF0YXNldHMsIHN0YXRlLmxheWVyQ2xhc3NlcywgW1xuICAgIGxheWVyQ29uZmlnXG4gIF0pO1xuXG4gIGlmIChmYWlsZWQ/Lmxlbmd0aCB8fCAhdmFsaWRhdGVkLmxlbmd0aCkge1xuICAgIC8vIGZhaWxlZFxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgbmV3TGF5ZXIgPSB2YWxpZGF0ZWRbMF07XG4gIG5ld0xheWVyLnVwZGF0ZUxheWVyRG9tYWluKHN0YXRlLmRhdGFzZXRzKTtcbiAgcmV0dXJuIG5ld0xheWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplTGF5ZXIobmV3TGF5ZXIpOiBQYXJzZWRMYXllciB7XG4gIGNvbnN0IHNhdmVkVmlzU3RhdGUgPSB2aXNTdGF0ZVNjaGVtYVtDVVJSRU5UX1ZFUlNJT05dLnNhdmUoe1xuICAgIGxheWVyczogW25ld0xheWVyXSxcbiAgICBsYXllck9yZGVyOiBbMF1cbiAgfSkudmlzU3RhdGU7XG4gIGNvbnN0IGxvYWRlZExheWVyID0gdmlzU3RhdGVTY2hlbWFbQ1VSUkVOVF9WRVJTSU9OXS5sb2FkKHNhdmVkVmlzU3RhdGUpLnZpc1N0YXRlLmxheWVyc1swXTtcbiAgcmV0dXJuIGxvYWRlZExheWVyO1xufVxuXG4vKipcbiAqIE1lcmdlIGxheWVycyBmcm9tIGRlLXNlcmlhbGl6ZWQgc3RhdGUsIGlmIG5vIGZpZWxkcyBvciBkYXRhIGFyZSBsb2FkZWRcbiAqIHNhdmUgaXQgZm9yIGxhdGVyXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VMYXllcnMoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgbGF5ZXJzVG9NZXJnZTogTm9uTnVsbGFibGU8UGFyc2VkQ29uZmlnWyd2aXNTdGF0ZSddPlsnbGF5ZXJzJ10gPSBbXSxcbiAgZnJvbUNvbmZpZz86IGJvb2xlYW5cbik6IFZpc1N0YXRlIHtcbiAgY29uc3QgcHJlc2VydmVMYXllck9yZGVyID0gZnJvbUNvbmZpZyA/IGxheWVyc1RvTWVyZ2UubWFwKGwgPT4gbC5pZCkgOiBzdGF0ZS5wcmVzZXJ2ZUxheWVyT3JkZXI7XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGxheWVyc1RvTWVyZ2UpIHx8ICFsYXllcnNUb01lcmdlLmxlbmd0aCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IHt2YWxpZGF0ZWQ6IG1lcmdlZExheWVyLCBmYWlsZWQ6IHVubWVyZ2VkfSA9IHZhbGlkYXRlTGF5ZXJzQnlEYXRhc2V0cyhcbiAgICBzdGF0ZS5kYXRhc2V0cyxcbiAgICBzdGF0ZS5sYXllckNsYXNzZXMsXG4gICAgbGF5ZXJzVG9NZXJnZVxuICApO1xuXG4gIC8vIHB1dCBuZXcgbGF5ZXJzIGluIGZyb250IG9mIGN1cnJlbnQgbGF5ZXJzXG4gIGNvbnN0IHtuZXdMYXllck9yZGVyLCBuZXdMYXllcnN9ID0gaW5zZXJ0TGF5ZXJBdFJpZ2h0T3JkZXIoXG4gICAgc3RhdGUubGF5ZXJzLFxuICAgIG1lcmdlZExheWVyLFxuICAgIHN0YXRlLmxheWVyT3JkZXIsXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHByZXNlcnZlTGF5ZXJPcmRlclxuICApO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbGF5ZXJzOiBuZXdMYXllcnMsXG4gICAgbGF5ZXJPcmRlcjogbmV3TGF5ZXJPcmRlcixcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgcHJlc2VydmVMYXllck9yZGVyLFxuICAgIGxheWVyVG9CZU1lcmdlZDogWy4uLnN0YXRlLmxheWVyVG9CZU1lcmdlZCwgLi4udW5tZXJnZWRdXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRMYXllckF0UmlnaHRPcmRlcihcbiAgY3VycmVudExheWVycyxcbiAgbGF5ZXJzVG9JbnNlcnQsXG4gIGN1cnJlbnRPcmRlcixcbiAgcHJlc2VydmVkT3JkZXI6IHN0cmluZ1tdID0gW11cbikge1xuICAvLyBwZXJzZXJ2ZWRPcmRlciBbJ2EnLCAnYicsICdjJ107XG4gIC8vIGxheWVyT3JkZXIgWzEsIDAsIDNdXG4gIC8vIGxheWVyT3JkZXJNYXAgWydhJywgJ2MnXVxuICBsZXQgbGF5ZXJPcmRlclF1ZXVlID0gY3VycmVudE9yZGVyLm1hcChpID0+IGN1cnJlbnRMYXllcnNbaV0uaWQpO1xuICBsZXQgbmV3TGF5ZXJzID0gY3VycmVudExheWVycztcblxuICBmb3IgKGNvbnN0IG5ld0xheWVyIG9mIGxheWVyc1RvSW5zZXJ0KSB7XG4gICAgLy8gZmluZCB3aGVyZSB0byBpbnNlcnQgaXRcbiAgICBjb25zdCBleHBlY3RlZElkeCA9IHByZXNlcnZlZE9yZGVyLmluZGV4T2YobmV3TGF5ZXIuaWQpO1xuICAgIC8vIGlmIGNhbnQgZmluZCBwbGFjZSB0byBpbnNlcnQsIGluc2VydCBhdCB0aGUgZm9udFxuICAgIGxldCBpbnNlcnRBdCA9IDA7XG5cbiAgICBpZiAoZXhwZWN0ZWRJZHggPiAwKSB7XG4gICAgICAvLyBsb29rIGZvciBsYXllciB0byBpbnNlcnQgYWZ0ZXJcbiAgICAgIGxldCBpID0gZXhwZWN0ZWRJZHggKyAxO1xuICAgICAgbGV0IHByZWNlZWRJZHggPSAtMTtcbiAgICAgIHdoaWxlIChpLS0gPiAwICYmIHByZWNlZWRJZHggPT09IC0xKSB7XG4gICAgICAgIGNvbnN0IHByZWNlZWRMYXllciA9IHByZXNlcnZlZE9yZGVyW2ldO1xuICAgICAgICBwcmVjZWVkSWR4ID0gbGF5ZXJPcmRlclF1ZXVlLmluZGV4T2YocHJlY2VlZExheWVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZWNlZWRJZHggPiAtMSkge1xuICAgICAgICBpbnNlcnRBdCA9IHByZWNlZWRJZHggKyAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxheWVyT3JkZXJRdWV1ZSA9IGFycmF5SW5zZXJ0KGxheWVyT3JkZXJRdWV1ZSwgaW5zZXJ0QXQsIG5ld0xheWVyLmlkKTtcbiAgICBuZXdMYXllcnMgPSBuZXdMYXllcnMuY29uY2F0KG5ld0xheWVyKTtcbiAgfVxuXG4gIC8vIHJlY29uc3RydWN0IGxheWVyT3JkZXIgYWZ0ZXIgaW5zZXJ0XG4gIGNvbnN0IG5ld0xheWVyT3JkZXIgPSBsYXllck9yZGVyUXVldWUubWFwKGlkID0+IG5ld0xheWVycy5maW5kSW5kZXgobCA9PiBsLmlkID09PSBpZCkpO1xuXG4gIHJldHVybiB7XG4gICAgbmV3TGF5ZXJPcmRlcixcbiAgICBuZXdMYXllcnNcbiAgfTtcbn1cblxuLyoqXG4gKiBNZXJnZSBpbnRlcmFjdGlvbnMgd2l0aCBzYXZlZCBjb25maWdcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUludGVyYWN0aW9ucyhcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBpbnRlcmFjdGlvblRvQmVNZXJnZWQ6IFBhcnRpYWw8U2F2ZWRJbnRlcmFjdGlvbkNvbmZpZz4gfCB1bmRlZmluZWQsXG4gIGZyb21Db25maWc/OiBib29sZWFuXG4pOiBWaXNTdGF0ZSB7XG4gIGNvbnN0IG1lcmdlZDogUGFydGlhbDxTYXZlZEludGVyYWN0aW9uQ29uZmlnPiA9IHt9O1xuICBjb25zdCB1bm1lcmdlZDogUGFydGlhbDxTYXZlZEludGVyYWN0aW9uQ29uZmlnPiA9IHt9O1xuXG4gIGlmIChpbnRlcmFjdGlvblRvQmVNZXJnZWQpIHtcbiAgICAoT2JqZWN0LmtleXMoaW50ZXJhY3Rpb25Ub0JlTWVyZ2VkKSBhcyBBcnJheTxrZXlvZiBTYXZlZEludGVyYWN0aW9uQ29uZmlnPikuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKCFzdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZ1trZXldKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY3VycmVudENvbmZpZyA9XG4gICAgICAgIGtleSA9PT0gJ3Rvb2x0aXAnIHx8IGtleSA9PT0gJ2JydXNoJyA/IHN0YXRlLmludGVyYWN0aW9uQ29uZmlnW2tleV0uY29uZmlnIDogbnVsbDtcblxuICAgICAgY29uc3Qge2VuYWJsZWQsIC4uLmNvbmZpZ1NhdmVkfSA9IGludGVyYWN0aW9uVG9CZU1lcmdlZFtrZXldIHx8IHt9O1xuXG4gICAgICBsZXQgY29uZmlnVG9NZXJnZSA9IGNvbmZpZ1NhdmVkO1xuXG4gICAgICBpZiAoa2V5ID09PSAndG9vbHRpcCcpIHtcbiAgICAgICAgY29uc3Qge21lcmdlZFRvb2x0aXAsIHVubWVyZ2VkVG9vbHRpcH0gPSBtZXJnZUludGVyYWN0aW9uVG9vbHRpcENvbmZpZyhcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICBjb25maWdTYXZlZCBhcyBTYXZlZEludGVyYWN0aW9uQ29uZmlnWyd0b29sdGlwJ11cbiAgICAgICAgKTtcblxuICAgICAgICAvLyBtZXJnZSBuZXcgZGF0YXNldCB0b29sdGlwcyB3aXRoIG9yaWdpbmFsIGRhdGFzZXQgdG9vbHRpcHNcbiAgICAgICAgY29uZmlnVG9NZXJnZSA9IHtcbiAgICAgICAgICBmaWVsZHNUb1Nob3c6IHtcbiAgICAgICAgICAgIC4uLihjdXJyZW50Q29uZmlnIGFzIFRvb2x0aXBJbmZvWydjb25maWcnXSkuZmllbGRzVG9TaG93LFxuICAgICAgICAgICAgLi4ubWVyZ2VkVG9vbHRpcFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoT2JqZWN0LmtleXModW5tZXJnZWRUb29sdGlwKS5sZW5ndGgpIHtcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgdW5tZXJnZWQudG9vbHRpcCA9IHtmaWVsZHNUb1Nob3c6IHVubWVyZ2VkVG9vbHRpcCwgZW5hYmxlZDogQm9vbGVhbihlbmFibGVkKX07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgbWVyZ2VkW2tleV0gPSB7XG4gICAgICAgIC4uLnN0YXRlLmludGVyYWN0aW9uQ29uZmlnW2tleV0sXG4gICAgICAgIGVuYWJsZWQ6IEJvb2xlYW4oZW5hYmxlZCksXG4gICAgICAgIC4uLihjdXJyZW50Q29uZmlnXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGNvbmZpZzogcGljayhcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAuLi5jdXJyZW50Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgLi4uY29uZmlnVG9NZXJnZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoY3VycmVudENvbmZpZylcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge30pXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgaW50ZXJhY3Rpb25Db25maWc6IHtcbiAgICAgIC4uLnN0YXRlLmludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgLi4ubWVyZ2VkXG4gICAgfSxcbiAgICBpbnRlcmFjdGlvblRvQmVNZXJnZWQ6IHVubWVyZ2VkXG4gIH07XG59XG5cbi8qKlxuICogTWVyZ2Ugc3BsaXRNYXBzIGNvbmZpZyB3aXRoIGN1cnJlbnQgdmlzU3RldGUuXG4gKiAxLiBpZiBjdXJyZW50IG1hcCBpcyBzcGxpdCwgYnV0IHNwbGl0TWFwIERPRVNOT1QgY29udGFpbiBtYXBzXG4gKiAgICA6IGRvbid0IG1lcmdlIGFueXRoaW5nXG4gKiAyLiBpZiBjdXJyZW50IG1hcCBpcyBOT1Qgc3BsaXQsIGJ1dCBzcGxpdE1hcHMgY29udGFpbiBtYXBzXG4gKiAgICA6IGFkZCB0byBzcGxpdE1hcHMsIGFuZCBhZGQgY3VycmVudCBsYXllcnMgdG8gc3BsaXRNYXBzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVNwbGl0TWFwcyhcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBzcGxpdE1hcHM6IE5vbk51bGxhYmxlPFBhcnNlZENvbmZpZ1sndmlzU3RhdGUnXT5bJ3NwbGl0TWFwcyddID0gW10sXG4gIGZyb21Db25maWc/OiBib29sZWFuXG4pOiBWaXNTdGF0ZSB7XG4gIGNvbnN0IG1lcmdlZCA9IFsuLi5zdGF0ZS5zcGxpdE1hcHNdO1xuICBjb25zdCB1bm1lcmdlZCA9IFtdO1xuICBzcGxpdE1hcHMuZm9yRWFjaCgoc20sIGkpID0+IHtcbiAgICBPYmplY3QuZW50cmllcyhzbS5sYXllcnMpLmZvckVhY2goKFtpZCwgdmFsdWVdKSA9PiB7XG4gICAgICAvLyBjaGVjayBpZiBsYXllciBleGlzdHNcbiAgICAgIGNvbnN0IHB1c2hUbyA9IHN0YXRlLmxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gaWQpID8gbWVyZ2VkIDogdW5tZXJnZWQ7XG5cbiAgICAgIC8vIGNyZWF0ZSBtYXAgcGFuZWwgaWYgY3VycmVudCBtYXAgaXMgbm90IHNwbGl0XG4gICAgICBwdXNoVG9baV0gPSBwdXNoVG9baV0gfHwge1xuICAgICAgICBsYXllcnM6IHB1c2hUbyA9PT0gbWVyZ2VkID8gZ2V0SW5pdGlhbE1hcExheWVyc0ZvclNwbGl0TWFwKHN0YXRlLmxheWVycykgOiBbXVxuICAgICAgfTtcbiAgICAgIHB1c2hUb1tpXS5sYXllcnMgPSB7XG4gICAgICAgIC4uLnB1c2hUb1tpXS5sYXllcnMsXG4gICAgICAgIFtpZF06IHZhbHVlXG4gICAgICB9O1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHNwbGl0TWFwczogbWVyZ2VkLFxuICAgIHNwbGl0TWFwc1RvQmVNZXJnZWQ6IFsuLi5zdGF0ZS5zcGxpdE1hcHNUb0JlTWVyZ2VkLCAuLi51bm1lcmdlZF1cbiAgfTtcbn1cblxuLyoqXG4gKiBNZXJnZSBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwIHdpdGggc2F2ZWQgY29uZmlnLFxuICogdmFsaWRhdGUgZmllbGRzVG9TaG93XG4gKlxuICogQHBhcmFtIHN0YXRlXG4gKiBAcGFyYW0gdG9vbHRpcENvbmZpZ1xuICogQHJldHVybiAtIHttZXJnZWRUb29sdGlwOiB7fSwgdW5tZXJnZWRUb29sdGlwOiB7fX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlSW50ZXJhY3Rpb25Ub29sdGlwQ29uZmlnKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHRvb2x0aXBDb25maWc6IFBpY2s8VG9vbHRpcEluZm9bJ2NvbmZpZyddLCAnZmllbGRzVG9TaG93Jz4gfCBudWxsID0gbnVsbFxuKSB7XG4gIGNvbnN0IHVubWVyZ2VkVG9vbHRpcDogVG9vbHRpcEluZm9bJ2NvbmZpZyddWydmaWVsZHNUb1Nob3cnXSA9IHt9O1xuICBjb25zdCBtZXJnZWRUb29sdGlwOiBUb29sdGlwSW5mb1snY29uZmlnJ11bJ2ZpZWxkc1RvU2hvdyddID0ge307XG5cbiAgaWYgKFxuICAgICF0b29sdGlwQ29uZmlnIHx8XG4gICAgIXRvb2x0aXBDb25maWcuZmllbGRzVG9TaG93IHx8XG4gICAgIU9iamVjdC5rZXlzKHRvb2x0aXBDb25maWcuZmllbGRzVG9TaG93KS5sZW5ndGhcbiAgKSB7XG4gICAgcmV0dXJuIHttZXJnZWRUb29sdGlwLCB1bm1lcmdlZFRvb2x0aXB9O1xuICB9XG5cbiAgZm9yIChjb25zdCBkYXRhSWQgaW4gdG9vbHRpcENvbmZpZy5maWVsZHNUb1Nob3cpIHtcbiAgICBpZiAoIXN0YXRlLmRhdGFzZXRzW2RhdGFJZF0pIHtcbiAgICAgIC8vIGlzIG5vdCB5ZXQgbG9hZGVkXG4gICAgICB1bm1lcmdlZFRvb2x0aXBbZGF0YUlkXSA9IHRvb2x0aXBDb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGlmIGRhdGFzZXQgaXMgbG9hZGVkXG4gICAgICBjb25zdCBhbGxGaWVsZHMgPSBzdGF0ZS5kYXRhc2V0c1tkYXRhSWRdLmZpZWxkcy5tYXAoZCA9PiBkLm5hbWUpO1xuICAgICAgY29uc3QgZm91bmRGaWVsZHNUb1Nob3cgPSAoc3RhdGUuZGF0YXNldHNbZGF0YUlkXS5tZXRhZGF0YSBhcyBhbnkpLmlzRHluYW1pY1NwYXRpYWxJbmRleFxuICAgICAgICA/IHRvb2x0aXBDb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF1cbiAgICAgICAgOiB0b29sdGlwQ29uZmlnLmZpZWxkc1RvU2hvd1tkYXRhSWRdLmZpbHRlcihmaWVsZCA9PiBhbGxGaWVsZHMuaW5jbHVkZXMoZmllbGQubmFtZSkpO1xuXG4gICAgICBtZXJnZWRUb29sdGlwW2RhdGFJZF0gPSBmb3VuZEZpZWxkc1RvU2hvdztcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge21lcmdlZFRvb2x0aXAsIHVubWVyZ2VkVG9vbHRpcH07XG59XG4vKipcbiAqIE1lcmdlIGxheWVyQmxlbmRpbmcgd2l0aCBzYXZlZFxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlTGF5ZXJCbGVuZGluZyhcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBsYXllckJsZW5kaW5nOiBOb25OdWxsYWJsZTxQYXJzZWRDb25maWdbJ3Zpc1N0YXRlJ10+WydsYXllckJsZW5kaW5nJ10sXG4gIGZyb21Db25maWc/OiBib29sZWFuXG4pOiBWaXNTdGF0ZSB7XG4gIGlmIChsYXllckJsZW5kaW5nICYmIExBWUVSX0JMRU5ESU5HU1tsYXllckJsZW5kaW5nXSkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGxheWVyQmxlbmRpbmdcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG4vKipcbiAqIE1lcmdlIGFuaW1hdGlvbiBjb25maWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQW5pbWF0aW9uQ29uZmlnKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFuaW1hdGlvbjogTm9uTnVsbGFibGU8UGFyc2VkQ29uZmlnWyd2aXNTdGF0ZSddPlsnYW5pbWF0aW9uQ29uZmlnJ10sXG4gIGZyb21Db25maWc/OiBib29sZWFuXG4pOiBWaXNTdGF0ZSB7XG4gIGlmIChhbmltYXRpb24gJiYgYW5pbWF0aW9uLmN1cnJlbnRUaW1lKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYW5pbWF0aW9uQ29uZmlnOiB7XG4gICAgICAgIC4uLnN0YXRlLmFuaW1hdGlvbkNvbmZpZyxcbiAgICAgICAgLi4uYW5pbWF0aW9uLFxuICAgICAgICBkb21haW46IG51bGxcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHNhdmVkIGxheWVyIGNvbHVtbnMgd2l0aCBuZXcgZGF0YSxcbiAqIHVwZGF0ZSBmaWVsZElkeCBiYXNlZCBvbiBuZXcgZmllbGRzXG4gKlxuICogQHBhcmFtIGZpZWxkc1xuICogQHBhcmFtIHNhdmVkQ29sc1xuICogQHBhcmFtIGVtcHR5Q29sc1xuICogQHJldHVybiAtIHZhbGlkYXRlZCBjb2x1bW5zIG9yIG51bGxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTYXZlZExheWVyQ29sdW1ucyhcbiAgZmllbGRzOiBLZXBsZXJUYWJsZVsnZmllbGRzJ10sXG4gIHNhdmVkQ29sczoge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgfSA9IHt9LFxuICBlbXB0eUNvbHM6IExheWVyQ29sdW1uc1xuKSB7XG4gIC8vIFByZXBhcmUgY29sdW1ucyBmb3IgdGhlIHZhbGlkYXRvclxuICBjb25zdCBjb2x1bW5zOiB0eXBlb2YgZW1wdHlDb2xzID0ge307XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGVtcHR5Q29scykpIHtcbiAgICBjb2x1bW5zW2tleV0gPSB7Li4uZW1wdHlDb2xzW2tleV19O1xuXG4gICAgY29uc3Qgc2F2ZWQgPSBzYXZlZENvbHNba2V5XTtcbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGNvbnN0IGZpZWxkSWR4ID0gZmllbGRzLmZpbmRJbmRleCgoe25hbWV9KSA9PiBuYW1lID09PSBzYXZlZCk7XG5cbiAgICAgIGlmIChmaWVsZElkeCA+IC0xKSB7XG4gICAgICAgIC8vIHVwZGF0ZSBmb3VuZCBjb2x1bW5zXG4gICAgICAgIGNvbHVtbnNba2V5XS5maWVsZElkeCA9IGZpZWxkSWR4O1xuICAgICAgICBjb2x1bW5zW2tleV0udmFsdWUgPSBzYXZlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBmaW5kIGFjdHVhbCBjb2x1bW4gZmllbGRJZHgsIGluIGNhc2UgaXQgaGFzIGNoYW5nZWRcbiAgY29uc3QgYWxsQ29sRm91bmQgPSBPYmplY3Qua2V5cyhjb2x1bW5zKS5ldmVyeShrZXkgPT5cbiAgICB2YWxpZGF0ZUNvbHVtbihjb2x1bW5zW2tleV0sIGNvbHVtbnMsIGZpZWxkcylcbiAgKTtcblxuICBpZiAoYWxsQ29sRm91bmQpIHtcbiAgICByZXR1cm4gY29sdW1ucztcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVDb2x1bW4oXG4gIGNvbHVtbjogTGF5ZXJDb2x1bW4gJiB7dmFsaWRhdG9yPzogdHlwZW9mIHZhbGlkYXRlQ29sdW1ufSxcbiAgY29sdW1uczogTGF5ZXJDb2x1bW5zLFxuICBhbGxGaWVsZHM6IEtlcGxlclRhYmxlWydmaWVsZHMnXVxuKTogYm9vbGVhbiB7XG4gIGlmIChjb2x1bW4ub3B0aW9uYWwgfHwgY29sdW1uLnZhbHVlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGNvbHVtbi52YWxpZGF0b3IpIHtcbiAgICByZXR1cm4gY29sdW1uLnZhbGlkYXRvcihjb2x1bW4sIGNvbHVtbnMsIGFsbEZpZWxkcyk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHNhdmVkIHRleHQgbGFiZWwgY29uZmlnIHdpdGggbmV3IGRhdGFcbiAqIHJlZmVyIHRvIHZpcy1zdGF0ZS1zY2hlbWEuanMgVGV4dExhYmVsU2NoZW1hVjFcbiAqXG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IGZpZWxkc1xuICogQHBhcmFtIHtPYmplY3R9IHNhdmVkVGV4dExhYmVsXG4gKiBAcmV0dXJuIHtPYmplY3R9IC0gdmFsaWRhdGVkIHRleHRsYWJlbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTYXZlZFRleHRMYWJlbChmaWVsZHMsIFtsYXllclRleHRMYWJlbF0sIHNhdmVkVGV4dExhYmVsKSB7XG4gIGNvbnN0IHNhdmVkVGV4dExhYmVscyA9IEFycmF5LmlzQXJyYXkoc2F2ZWRUZXh0TGFiZWwpID8gc2F2ZWRUZXh0TGFiZWwgOiBbc2F2ZWRUZXh0TGFiZWxdO1xuXG4gIC8vIHZhbGlkYXRlIGZpZWxkXG4gIHJldHVybiBzYXZlZFRleHRMYWJlbHMubWFwKHRleHRMYWJlbCA9PiB7XG4gICAgY29uc3QgZmllbGQgPSB0ZXh0TGFiZWwuZmllbGRcbiAgICAgID8gZmllbGRzLmZpbmQoZmQgPT5cbiAgICAgICAgICBPYmplY3Qua2V5cyh0ZXh0TGFiZWwuZmllbGQpLmV2ZXJ5KGtleSA9PiB0ZXh0TGFiZWwuZmllbGRba2V5XSA9PT0gZmRba2V5XSlcbiAgICAgICAgKVxuICAgICAgOiBudWxsO1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGxheWVyVGV4dExhYmVsKS5yZWR1Y2UoXG4gICAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICBba2V5XToga2V5ID09PSAnZmllbGQnID8gZmllbGQgOiB0ZXh0TGFiZWxba2V5XSB8fCBsYXllclRleHRMYWJlbFtrZXldXG4gICAgICB9KSxcbiAgICAgIHt9XG4gICAgKTtcbiAgfSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgc2F2ZWQgdmlzdWFsIGNoYW5uZWxzIGNvbmZpZyB3aXRoIG5ldyBkYXRhLFxuICogcmVmZXIgdG8gdmlzLXN0YXRlLXNjaGVtYS5qcyBWaXN1YWxDaGFubmVsU2NoZW1hVjFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2F2ZWRWaXN1YWxDaGFubmVscyhcbiAgZmllbGRzOiBLZXBsZXJUYWJsZVsnZmllbGRzJ10sXG4gIG5ld0xheWVyOiBMYXllcixcbiAgc2F2ZWRMYXllcjogUGFyc2VkTGF5ZXJcbik6IG51bGwgfCBMYXllciB7XG4gIE9iamVjdC52YWx1ZXMobmV3TGF5ZXIudmlzdWFsQ2hhbm5lbHMpLmZvckVhY2goKHtmaWVsZCwgc2NhbGUsIGtleX0pID0+IHtcbiAgICBsZXQgZm91bmRGaWVsZDtcbiAgICBjb25zdCBjb2xvckZpZWxkUHJvcHMgPSB7fTtcbiAgICBpZiAoc2F2ZWRMYXllci5jb25maWcpIHtcbiAgICAgIGlmIChzYXZlZExheWVyLmNvbmZpZ1tmaWVsZF0pIHtcbiAgICAgICAgZm91bmRGaWVsZCA9IGZpZWxkcy5maW5kKFxuICAgICAgICAgIGZkID0+IHNhdmVkTGF5ZXIuY29uZmlnICYmIGZkLm5hbWUgPT09IHNhdmVkTGF5ZXIuY29uZmlnW2ZpZWxkXS5uYW1lXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzYXZlZExheWVyLmNvbmZpZ1tmaWVsZF0/LmNvbG9yQ29sdW1uKSB7XG4gICAgICAgIGNvbnN0IGNvbG9yQ29sdW1uRmllbGQgPSBmaWVsZHMuZmluZChcbiAgICAgICAgICBmZCA9PiBzYXZlZExheWVyLmNvbmZpZyAmJiBmZC5uYW1lID09PSBzYXZlZExheWVyLmNvbmZpZ1tmaWVsZF0uY29sb3JDb2x1bW5cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoY29sb3JDb2x1bW5GaWVsZCkge1xuICAgICAgICAgIChjb2xvckZpZWxkUHJvcHMgYXMgYW55KS5jb2xvckNvbHVtbiA9IGNvbG9yQ29sdW1uRmllbGQubmFtZTtcbiAgICAgICAgICAoY29sb3JGaWVsZFByb3BzIGFzIGFueSkuY29sb3JDb2x1bW5JZHggPSBjb2xvckNvbHVtbkZpZWxkLmZpZWxkSWR4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvdW5kQ2hhbm5lbCA9IHtcbiAgICAgICAgLi4uKGZvdW5kRmllbGQgPyB7W2ZpZWxkXTogey4uLmZvdW5kRmllbGQsIC4uLmNvbG9yRmllbGRQcm9wc319IDoge30pLFxuICAgICAgICAuLi4oc2F2ZWRMYXllci5jb25maWdbc2NhbGVdID8ge1tzY2FsZV06IHNhdmVkTGF5ZXIuY29uZmlnW3NjYWxlXX0gOiB7fSlcbiAgICAgIH07XG4gICAgICBpZiAoT2JqZWN0LmtleXMoZm91bmRDaGFubmVsKS5sZW5ndGgpIHtcbiAgICAgICAgbmV3TGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoZm91bmRDaGFubmVsKTtcbiAgICAgIH1cblxuICAgICAgbmV3TGF5ZXIudmFsaWRhdGVWaXN1YWxDaGFubmVsKGtleSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG5ld0xheWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMYXllcnNCeURhdGFzZXRzKFxuICBkYXRhc2V0czogRGF0YXNldHMsXG4gIGxheWVyQ2xhc3NlczogVmlzU3RhdGVbJ2xheWVyQ2xhc3NlcyddLFxuICBsYXllcnM6IE5vbk51bGxhYmxlPFBhcnNlZENvbmZpZ1sndmlzU3RhdGUnXT5bJ2xheWVycyddID0gW11cbikge1xuICBjb25zdCB2YWxpZGF0ZWQ6IExheWVyW10gPSBbXTtcbiAgY29uc3QgZmFpbGVkOiBOb25OdWxsYWJsZTxQYXJzZWRDb25maWdbJ3Zpc1N0YXRlJ10+WydsYXllcnMnXSA9IFtdO1xuXG4gIGxheWVycy5mb3JFYWNoKGxheWVyID0+IHtcbiAgICBsZXQgdmFsaWRhdGVMYXllcjogTGF5ZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGlmIChsYXllcj8uY29uZmlnPy5kYXRhSWQpIHtcbiAgICAgIGlmIChkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXSkge1xuICAgICAgICAvLyBkYXRhc2V0cyBhcmUgYWxyZWFkeSBsb2FkZWRcbiAgICAgICAgdmFsaWRhdGVMYXllciA9IHZhbGlkYXRlTGF5ZXJXaXRoRGF0YShkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXSwgbGF5ZXIsIGxheWVyQ2xhc3Nlcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlTGF5ZXIpIHtcbiAgICAgIHZhbGlkYXRlZC5wdXNoKHZhbGlkYXRlTGF5ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkYXRhc2V0cyBub3QgeWV0IGxvYWRlZFxuICAgICAgZmFpbGVkLnB1c2gobGF5ZXIpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHt2YWxpZGF0ZWQsIGZhaWxlZH07XG59XG4vKipcbiAqIFZhbGlkYXRlIHNhdmVkIGxheWVyIGNvbmZpZyB3aXRoIG5ldyBkYXRhLFxuICogdXBkYXRlIGZpZWxkSWR4IGJhc2VkIG9uIG5ldyBmaWVsZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTGF5ZXJXaXRoRGF0YShcbiAge2ZpZWxkcywgaWQ6IGRhdGFJZH06IEtlcGxlclRhYmxlLFxuICBzYXZlZExheWVyOiBQYXJzZWRMYXllcixcbiAgbGF5ZXJDbGFzc2VzOiBWaXNTdGF0ZVsnbGF5ZXJDbGFzc2VzJ10sXG4gIG9wdGlvbnM6IHtcbiAgICBhbGxvd0VtcHR5Q29sdW1uPzogYm9vbGVhbjtcbiAgfSA9IHt9XG4pOiBMYXllciB8IG51bGwge1xuICBjb25zdCB7dHlwZX0gPSBzYXZlZExheWVyO1xuICAvLyBsYXllciBkb2VzbnQgaGF2ZSBhIHZhbGlkIHR5cGVcbiAgaWYgKCF0eXBlIHx8ICFsYXllckNsYXNzZXMuaGFzT3duUHJvcGVydHkodHlwZSkgfHwgIXNhdmVkTGF5ZXIuY29uZmlnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBsZXQgbmV3TGF5ZXIgPSBuZXcgbGF5ZXJDbGFzc2VzW3R5cGVdKHtcbiAgICBpZDogc2F2ZWRMYXllci5pZCxcbiAgICBkYXRhSWQsXG4gICAgbGFiZWw6IHNhdmVkTGF5ZXIuY29uZmlnLmxhYmVsLFxuICAgIGNvbG9yOiBzYXZlZExheWVyLmNvbmZpZy5jb2xvcixcbiAgICBpc1Zpc2libGU6IHNhdmVkTGF5ZXIuY29uZmlnLmlzVmlzaWJsZSxcbiAgICBoaWRkZW46IHNhdmVkTGF5ZXIuY29uZmlnLmhpZGRlbixcbiAgICBoaWdobGlnaHRDb2xvcjogc2F2ZWRMYXllci5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgdmlzaWJpbGl0eUJ5Wm9vbTogKHNhdmVkTGF5ZXIuY29uZmlnIGFzIGFueSkudmlzaWJpbGl0eUJ5Wm9vbSBcbiAgfSk7XG5cbiAgLy8gZmluZCBjb2x1bW4gZmllbGRJZHhcbiAgY29uc3QgY29sdW1uQ29uZmlnID0gbmV3TGF5ZXIuZ2V0TGF5ZXJDb2x1bW5zKCk7XG4gIGlmIChPYmplY3Qua2V5cyhjb2x1bW5Db25maWcpLmxlbmd0aCkge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB2YWxpZGF0ZVNhdmVkTGF5ZXJDb2x1bW5zKGZpZWxkcywgc2F2ZWRMYXllci5jb25maWcuY29sdW1ucywgY29sdW1uQ29uZmlnKTtcbiAgICBpZiAoY29sdW1ucykge1xuICAgICAgbmV3TGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoe2NvbHVtbnN9KTtcbiAgICB9IGVsc2UgaWYgKCFvcHRpb25zLmFsbG93RW1wdHlDb2x1bW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8vIHZpc3VhbCBjaGFubmVsIGZpZWxkIGlzIHNhdmVkIHRvIGJlIHtuYW1lLCB0eXBlfVxuICAvLyBmaW5kIHZpc3VhbCBjaGFubmVsIGZpZWxkIGJ5IG1hdGNoaW5nIGJvdGggbmFtZSBhbmQgdHlwZVxuICAvLyByZWZlciB0byB2aXMtc3RhdGUtc2NoZW1hLmpzIFZpc3VhbENoYW5uZWxTY2hlbWFWMVxuICBuZXdMYXllciA9IHZhbGlkYXRlU2F2ZWRWaXN1YWxDaGFubmVscyhmaWVsZHMsIG5ld0xheWVyLCBzYXZlZExheWVyKTtcblxuICBjb25zdCB0ZXh0TGFiZWwgPVxuICAgIHNhdmVkTGF5ZXIuY29uZmlnLnRleHRMYWJlbCAmJiBuZXdMYXllci5jb25maWcudGV4dExhYmVsXG4gICAgICA/IHZhbGlkYXRlU2F2ZWRUZXh0TGFiZWwoZmllbGRzLCBuZXdMYXllci5jb25maWcudGV4dExhYmVsLCBzYXZlZExheWVyLmNvbmZpZy50ZXh0TGFiZWwpXG4gICAgICA6IG5ld0xheWVyLmNvbmZpZy50ZXh0TGFiZWw7XG5cbiAgLy8gY29weSB2aXNDb25maWcgb3ZlciB0byBlbXB0eUxheWVyIHRvIG1ha2Ugc3VyZSBpdCBoYXMgYWxsIHRoZSBwcm9wc1xuICBjb25zdCB2aXNDb25maWcgPSBuZXdMYXllci5jb3B5TGF5ZXJDb25maWcoXG4gICAgbmV3TGF5ZXIuY29uZmlnLnZpc0NvbmZpZyxcbiAgICBzYXZlZExheWVyLmNvbmZpZy52aXNDb25maWcgfHwge30sXG4gICAge3NoYWxsb3dDb3B5OiBbJ2NvbG9yUmFuZ2UnLCAnc3Ryb2tlQ29sb3JSYW5nZSddfVxuICApO1xuXG4gIG5ld0xheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICB2aXNDb25maWcsXG4gICAgdGV4dExhYmVsXG4gIH0pO1xuXG4gIHJldHVybiBuZXdMYXllcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRNZXJnZXIobWVyZ2VyOiBNZXJnZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzT2JqZWN0KG1lcmdlcikgJiYgdHlwZW9mIG1lcmdlci5tZXJnZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgbWVyZ2VyLnByb3AgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgY29uc3QgVklTX1NUQVRFX01FUkdFUlM6IFZpc1N0YXRlTWVyZ2VycyA9IFtcbiAge21lcmdlOiBtZXJnZUxheWVycywgcHJvcDogJ2xheWVycycsIHRvTWVyZ2VQcm9wOiAnbGF5ZXJUb0JlTWVyZ2VkJ30sXG4gIHttZXJnZTogbWVyZ2VGaWx0ZXJzLCBwcm9wOiAnZmlsdGVycycsIHRvTWVyZ2VQcm9wOiAnZmlsdGVyVG9CZU1lcmdlZCd9LFxuICB7bWVyZ2U6IG1lcmdlSW50ZXJhY3Rpb25zLCBwcm9wOiAnaW50ZXJhY3Rpb25Db25maWcnLCB0b01lcmdlUHJvcDogJ2ludGVyYWN0aW9uVG9CZU1lcmdlZCd9LFxuICB7bWVyZ2U6IG1lcmdlTGF5ZXJCbGVuZGluZywgcHJvcDogJ2xheWVyQmxlbmRpbmcnfSxcbiAge21lcmdlOiBtZXJnZVNwbGl0TWFwcywgcHJvcDogJ3NwbGl0TWFwcycsIHRvTWVyZ2VQcm9wOiAnc3BsaXRNYXBzVG9CZU1lcmdlZCd9LFxuICB7bWVyZ2U6IG1lcmdlQW5pbWF0aW9uQ29uZmlnLCBwcm9wOiAnYW5pbWF0aW9uQ29uZmlnJ31cbl07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksWUFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssY0FBQSxH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LFVBQVUsQ0FBQ3RFLE1BQU0sQ0FBQ2lFLFNBQVMsSUFBSWhILFFBQVEsQ0FBQytDLE1BQU0sQ0FBQ2lFLFNBQVMsR0FDcEROLHNCQUFzQixDQUFDL0IsTUFBTSxFQUFFM0UsUUFBUSxDQUFDK0MsTUFBTSxDQUFDaUUsU0FBUyxFQUFFSyxVQUFVLENBQUN0RSxNQUFNLENBQUNpRSxTQUFTLENBQUMsR0FDdEZoSCxRQUFRLENBQUMrQyxNQUFNLENBQUNpRSxTQUFTOztFQUUvQjtFQUNBLElBQU1vQyxTQUFTLEdBQUdwSixRQUFRLENBQUNxSixlQUFlLENBQ3hDckosUUFBUSxDQUFDK0MsTUFBTSxDQUFDcUcsU0FBUyxFQUN6Qi9CLFVBQVUsQ0FBQ3RFLE1BQU0sQ0FBQ3FHLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFDakM7SUFBQ0UsV0FBVyxFQUFFLENBQUMsWUFBWSxFQUFFLGtCQUFrQjtFQUFDLENBQ2xELENBQUM7RUFFRHRKLFFBQVEsQ0FBQ2lJLGlCQUFpQixDQUFDO0lBQ3pCbUIsU0FBUyxFQUFUQSxTQUFTO0lBQ1RwQyxTQUFTLEVBQVRBO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsT0FBT2hILFFBQVE7QUFDakI7QUFFTyxTQUFTdUosYUFBYUEsQ0FBQ0MsTUFBYyxFQUFXO0VBQ3JELE9BQU8sSUFBQUMsZUFBUSxFQUFDRCxNQUFNLENBQUMsSUFBSSxPQUFPQSxNQUFNLENBQUNFLEtBQUssS0FBSyxVQUFVLElBQUksT0FBT0YsTUFBTSxDQUFDRyxJQUFJLEtBQUssUUFBUTtBQUNsRztBQUVPLElBQU1DLGlCQUFrQyxHQUFBQyxPQUFBLENBQUFELGlCQUFBLEdBQUcsQ0FDaEQ7RUFBQ0YsS0FBSyxFQUFFL0ksV0FBVztFQUFFZ0osSUFBSSxFQUFFLFFBQVE7RUFBRUcsV0FBVyxFQUFFO0FBQWlCLENBQUMsRUFDcEU7RUFBQ0osS0FBSyxFQUFFeEwsWUFBWTtFQUFFeUwsSUFBSSxFQUFFLFNBQVM7RUFBRUcsV0FBVyxFQUFFO0FBQWtCLENBQUMsRUFDdkU7RUFBQ0osS0FBSyxFQUFFakgsaUJBQWlCO0VBQUVrSCxJQUFJLEVBQUUsbUJBQW1CO0VBQUVHLFdBQVcsRUFBRTtBQUF1QixDQUFDLEVBQzNGO0VBQUNKLEtBQUssRUFBRXhFLGtCQUFrQjtFQUFFeUUsSUFBSSxFQUFFO0FBQWUsQ0FBQyxFQUNsRDtFQUFDRCxLQUFLLEVBQUU3RixjQUFjO0VBQUU4RixJQUFJLEVBQUUsV0FBVztFQUFFRyxXQUFXLEVBQUU7QUFBcUIsQ0FBQyxFQUM5RTtFQUFDSixLQUFLLEVBQUVyRSxvQkFBb0I7RUFBRXNFLElBQUksRUFBRTtBQUFpQixDQUFDLENBQ3ZEIiwiaWdub3JlTGlzdCI6W119
|
|
569
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdW5pcSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3BpY2siLCJfZmxhdHRlbmRlZXAiLCJfdXRpbHMiLCJfZmlsdGVyVXRpbHMiLCJfc3BsaXRNYXBVdGlscyIsIl9ncHVGaWx0ZXJVdGlscyIsIl9kZWZhdWx0U2V0dGluZ3MiLCJfc2NoZW1hcyIsIl9leGNsdWRlZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiciIsImUiLCJ0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsImYiLCJUeXBlRXJyb3IiLCJvIiwiYSIsInUiLCJjYWxsIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0Iiwib3duS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm1lcmdlRmlsdGVycyIsInN0YXRlIiwiZmlsdGVyc1RvTWVyZ2UiLCJmcm9tQ29uZmlnIiwiX3ZhbGlkYXRlRmlsdGVyc1VwZGF0IiwidmFsaWRhdGVGaWx0ZXJzVXBkYXRlRGF0YXNldHMiLCJ2YWxpZGF0ZWQiLCJmYWlsZWQiLCJ1cGRhdGVkRGF0YXNldHMiLCJ1cGRhdGVkRmlsdGVycyIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJmaWx0ZXJzIiwicmVzZXRGaWx0ZXJHcHVNb2RlIiwiYXNzaWduR3B1Q2hhbm5lbHMiLCJkYXRhc2V0c1RvRmlsdGVyIiwidW5pcSIsImZsYXR0ZW5EZWVwIiwibWFwIiwiZGF0YUlkIiwiZmlsdGVyZWQiLCJhcHBseUZpbHRlcnNUb0RhdGFzZXRzIiwibGF5ZXJzIiwiZGF0YXNldHMiLCJmaWx0ZXJUb0JlTWVyZ2VkIiwiY3JlYXRlTGF5ZXJGcm9tQ29uZmlnIiwibGF5ZXJDb25maWciLCJfdmFsaWRhdGVMYXllcnNCeURhdGEiLCJ2YWxpZGF0ZUxheWVyc0J5RGF0YXNldHMiLCJsYXllckNsYXNzZXMiLCJuZXdMYXllciIsInVwZGF0ZUxheWVyRG9tYWluIiwic2VyaWFsaXplTGF5ZXIiLCJzYXZlZFZpc1N0YXRlIiwidmlzU3RhdGVTY2hlbWEiLCJDVVJSRU5UX1ZFUlNJT04iLCJzYXZlIiwibGF5ZXJPcmRlciIsInZpc1N0YXRlIiwibG9hZGVkTGF5ZXIiLCJsb2FkIiwibWVyZ2VMYXllcnMiLCJsYXllcnNUb01lcmdlIiwidW5kZWZpbmVkIiwicHJlc2VydmVMYXllck9yZGVyIiwibCIsImlkIiwiX3ZhbGlkYXRlTGF5ZXJzQnlEYXRhMiIsIm1lcmdlZExheWVyIiwidW5tZXJnZWQiLCJfaW5zZXJ0TGF5ZXJBdFJpZ2h0T3IiLCJpbnNlcnRMYXllckF0UmlnaHRPcmRlciIsIm5ld0xheWVyT3JkZXIiLCJuZXdMYXllcnMiLCJsYXllclRvQmVNZXJnZWQiLCJjdXJyZW50TGF5ZXJzIiwibGF5ZXJzVG9JbnNlcnQiLCJjdXJyZW50T3JkZXIiLCJwcmVzZXJ2ZWRPcmRlciIsImxheWVyT3JkZXJRdWV1ZSIsImkiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImV4cGVjdGVkSWR4IiwiaW5kZXhPZiIsImluc2VydEF0IiwicHJlY2VlZElkeCIsInByZWNlZWRMYXllciIsImFycmF5SW5zZXJ0IiwiZXJyIiwiZmluZEluZGV4IiwibWVyZ2VJbnRlcmFjdGlvbnMiLCJpbnRlcmFjdGlvblRvQmVNZXJnZWQiLCJtZXJnZWQiLCJrZXkiLCJpbnRlcmFjdGlvbkNvbmZpZyIsImN1cnJlbnRDb25maWciLCJjb25maWciLCJfcmVmIiwiZW5hYmxlZCIsImNvbmZpZ1NhdmVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsImNvbmZpZ1RvTWVyZ2UiLCJfbWVyZ2VJbnRlcmFjdGlvblRvb2wiLCJtZXJnZUludGVyYWN0aW9uVG9vbHRpcENvbmZpZyIsIm1lcmdlZFRvb2x0aXAiLCJ1bm1lcmdlZFRvb2x0aXAiLCJmaWVsZHNUb1Nob3ciLCJ0b29sdGlwIiwiQm9vbGVhbiIsInBpY2siLCJtZXJnZVNwbGl0TWFwcyIsInNwbGl0TWFwcyIsInNtIiwiZW50cmllcyIsIl9yZWYyIiwiX3JlZjMiLCJfc2xpY2VkVG9BcnJheTIiLCJwdXNoVG8iLCJmaW5kIiwiZ2V0SW5pdGlhbE1hcExheWVyc0ZvclNwbGl0TWFwIiwic3BsaXRNYXBzVG9CZU1lcmdlZCIsInRvb2x0aXBDb25maWciLCJfbG9vcCIsImFsbEZpZWxkcyIsImZpZWxkcyIsImQiLCJmb3VuZEZpZWxkc1RvU2hvdyIsIm1ldGFkYXRhIiwiaXNEeW5hbWljU3BhdGlhbEluZGV4IiwiZmllbGQiLCJpbmNsdWRlcyIsIm1lcmdlTGF5ZXJCbGVuZGluZyIsImxheWVyQmxlbmRpbmciLCJMQVlFUl9CTEVORElOR1MiLCJtZXJnZUFuaW1hdGlvbkNvbmZpZyIsImFuaW1hdGlvbiIsImN1cnJlbnRUaW1lIiwiYW5pbWF0aW9uQ29uZmlnIiwiZG9tYWluIiwidmFsaWRhdGVTYXZlZExheWVyQ29sdW1ucyIsInNhdmVkQ29scyIsImVtcHR5Q29scyIsImNvbHVtbnMiLCJfbG9vcDIiLCJfT2JqZWN0JGtleXMiLCJfaSIsInNhdmVkIiwiZmllbGRJZHgiLCJfcmVmNCIsImFsbENvbEZvdW5kIiwiZXZlcnkiLCJ2YWxpZGF0ZUNvbHVtbiIsImNvbHVtbiIsIm9wdGlvbmFsIiwidmFsaWRhdG9yIiwidmFsaWRhdGVTYXZlZFRleHRMYWJlbCIsIl9yZWY1Iiwic2F2ZWRUZXh0TGFiZWwiLCJfcmVmNiIsImxheWVyVGV4dExhYmVsIiwic2F2ZWRUZXh0TGFiZWxzIiwidGV4dExhYmVsIiwiZmQiLCJyZWR1Y2UiLCJhY2N1IiwidmFsaWRhdGVTYXZlZFZpc3VhbENoYW5uZWxzIiwic2F2ZWRMYXllciIsInZhbHVlcyIsInZpc3VhbENoYW5uZWxzIiwiX3JlZjciLCJzY2FsZSIsImZvdW5kRmllbGQiLCJjb2xvckZpZWxkUHJvcHMiLCJfc2F2ZWRMYXllciRjb25maWckZmkiLCJjb2xvckNvbHVtbiIsImNvbG9yQ29sdW1uRmllbGQiLCJjb2xvckNvbHVtbklkeCIsImZvdW5kQ2hhbm5lbCIsInVwZGF0ZUxheWVyQ29uZmlnIiwidmFsaWRhdGVWaXN1YWxDaGFubmVsIiwibGF5ZXIiLCJfbGF5ZXIkY29uZmlnIiwidmFsaWRhdGVMYXllciIsInZhbGlkYXRlTGF5ZXJXaXRoRGF0YSIsIl9yZWYxMCIsIm9wdGlvbnMiLCJ0eXBlIiwiaGFzT3duUHJvcGVydHkiLCJsYWJlbCIsImNvbG9yIiwiaXNWaXNpYmxlIiwiaGlkZGVuIiwiaGlnaGxpZ2h0Q29sb3IiLCJ2aXNpYmlsaXR5Qnlab29tIiwiY29sdW1uQ29uZmlnIiwiZ2V0TGF5ZXJDb2x1bW5zIiwiYWxsb3dFbXB0eUNvbHVtbiIsInZpc0NvbmZpZyIsImNvcHlMYXllckNvbmZpZyIsInNoYWxsb3dDb3B5IiwiaXNWYWxpZE1lcmdlciIsIm1lcmdlciIsImlzT2JqZWN0IiwibWVyZ2UiLCJwcm9wIiwiVklTX1NUQVRFX01FUkdFUlMiLCJleHBvcnRzIiwidG9NZXJnZVByb3AiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVkdWNlcnMvdmlzLXN0YXRlLW1lcmdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQgcGljayBmcm9tICdsb2Rhc2gvcGljayc7XG5pbXBvcnQgZmxhdHRlbkRlZXAgZnJvbSAnbG9kYXNoL2ZsYXR0ZW5kZWVwJztcbmltcG9ydCB7aXNPYmplY3QsIGFycmF5SW5zZXJ0fSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge2FwcGx5RmlsdGVyc1RvRGF0YXNldHMsIHZhbGlkYXRlRmlsdGVyc1VwZGF0ZURhdGFzZXRzfSBmcm9tICd1dGlscy9maWx0ZXItdXRpbHMnO1xuXG5pbXBvcnQge2dldEluaXRpYWxNYXBMYXllcnNGb3JTcGxpdE1hcH0gZnJvbSAndXRpbHMvc3BsaXQtbWFwLXV0aWxzJztcbmltcG9ydCB7cmVzZXRGaWx0ZXJHcHVNb2RlLCBhc3NpZ25HcHVDaGFubmVsc30gZnJvbSAndXRpbHMvZ3B1LWZpbHRlci11dGlscyc7XG5pbXBvcnQge0xBWUVSX0JMRU5ESU5HU30gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuaW1wb3J0IHtDVVJSRU5UX1ZFUlNJT04sIHZpc1N0YXRlU2NoZW1hfSBmcm9tICdzY2hlbWFzJztcblxuaW1wb3J0IHtWaXNTdGF0ZSwgRGF0YXNldHN9IGZyb20gJy4vdmlzLXN0YXRlLXVwZGF0ZXJzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7UGFyc2VkQ29uZmlnLCBQYXJzZWRMYXllcn0gZnJvbSAnc2NoZW1hcyc7XG5pbXBvcnQge0xheWVyLCBMYXllckNvbHVtbnMsIExheWVyQ29sdW1ufSBmcm9tICdsYXllcnMnO1xuaW1wb3J0IHtUb29sdGlwSW5mb30gZnJvbSAnLi92aXMtc3RhdGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtTYXZlZEludGVyYWN0aW9uQ29uZmlnfSBmcm9tICdzY2hlbWFzL3NjaGVtYS1tYW5hZ2VyJztcblxuZXhwb3J0IHR5cGUgTWVyZ2VyID0ge1xuICBtZXJnZTogKHN0YXRlOiBWaXNTdGF0ZSwgY29uZmlnOiBhbnksIGZyb21Db25maWc/OiBib29sZWFuKSA9PiBWaXNTdGF0ZTtcbiAgcHJvcDogc3RyaW5nO1xuICB0b01lcmdlUHJvcD86IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBWaXNTdGF0ZU1lcmdlcnMgPSBNZXJnZXJbXTtcblxuLyoqXG4gKiBNZXJnZSBsb2FkZWQgZmlsdGVycyB3aXRoIGN1cnJlbnQgc3RhdGUsIGlmIG5vIGZpZWxkcyBvciBkYXRhIGFyZSBsb2FkZWRcbiAqIHNhdmUgaXQgZm9yIGxhdGVyXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VGaWx0ZXJzKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGZpbHRlcnNUb01lcmdlOiBOb25OdWxsYWJsZTxQYXJzZWRDb25maWdbJ3Zpc1N0YXRlJ10+WydmaWx0ZXJzJ10sXG4gIGZyb21Db25maWc/OiBib29sZWFuXG4pOiBWaXNTdGF0ZSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShmaWx0ZXJzVG9NZXJnZSkgfHwgIWZpbHRlcnNUb01lcmdlLmxlbmd0aCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IHt2YWxpZGF0ZWQsIGZhaWxlZCwgdXBkYXRlZERhdGFzZXRzfSA9IHZhbGlkYXRlRmlsdGVyc1VwZGF0ZURhdGFzZXRzKHN0YXRlLCBmaWx0ZXJzVG9NZXJnZSk7XG5cbiAgLy8gbWVyZ2UgZmlsdGVyIHdpdGggZXhpc3RpbmdcbiAgbGV0IHVwZGF0ZWRGaWx0ZXJzID0gWy4uLihzdGF0ZS5maWx0ZXJzIHx8IFtdKSwgLi4udmFsaWRhdGVkXTtcbiAgdXBkYXRlZEZpbHRlcnMgPSByZXNldEZpbHRlckdwdU1vZGUodXBkYXRlZEZpbHRlcnMpO1xuICB1cGRhdGVkRmlsdGVycyA9IGFzc2lnbkdwdUNoYW5uZWxzKHVwZGF0ZWRGaWx0ZXJzKTtcbiAgLy8gZmlsdGVyIGRhdGFcbiAgY29uc3QgZGF0YXNldHNUb0ZpbHRlciA9IHVuaXEoZmxhdHRlbkRlZXAodmFsaWRhdGVkLm1hcChmID0+IGYuZGF0YUlkKSkpO1xuXG4gIGNvbnN0IGZpbHRlcmVkID0gYXBwbHlGaWx0ZXJzVG9EYXRhc2V0cyhcbiAgICBkYXRhc2V0c1RvRmlsdGVyLFxuICAgIHVwZGF0ZWREYXRhc2V0cyxcbiAgICB1cGRhdGVkRmlsdGVycyxcbiAgICBzdGF0ZS5sYXllcnNcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGZpbHRlcnM6IHVwZGF0ZWRGaWx0ZXJzLFxuICAgIGRhdGFzZXRzOiBmaWx0ZXJlZCxcbiAgICBmaWx0ZXJUb0JlTWVyZ2VkOiBbLi4uc3RhdGUuZmlsdGVyVG9CZU1lcmdlZCwgLi4uZmFpbGVkXVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGF5ZXJGcm9tQ29uZmlnKHN0YXRlOiBWaXNTdGF0ZSwgbGF5ZXJDb25maWc6IGFueSk6IExheWVyIHwgbnVsbCB7XG4gIC8vIGZpcnN0IHZhbGlkYXRlIGNvbmZpZyBhZ2FpbnN0IGRhdGFzZXRcbiAgY29uc3Qge3ZhbGlkYXRlZCwgZmFpbGVkfSA9IHZhbGlkYXRlTGF5ZXJzQnlEYXRhc2V0cyhzdGF0ZS5kYXRhc2V0cywgc3RhdGUubGF5ZXJDbGFzc2VzLCBbXG4gICAgbGF5ZXJDb25maWdcbiAgXSk7XG5cbiAgaWYgKGZhaWxlZD8ubGVuZ3RoIHx8ICF2YWxpZGF0ZWQubGVuZ3RoKSB7XG4gICAgLy8gZmFpbGVkXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBuZXdMYXllciA9IHZhbGlkYXRlZFswXTtcbiAgbmV3TGF5ZXIudXBkYXRlTGF5ZXJEb21haW4oc3RhdGUuZGF0YXNldHMpO1xuICByZXR1cm4gbmV3TGF5ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVMYXllcihuZXdMYXllcik6IFBhcnNlZExheWVyIHtcbiAgY29uc3Qgc2F2ZWRWaXNTdGF0ZSA9IHZpc1N0YXRlU2NoZW1hW0NVUlJFTlRfVkVSU0lPTl0uc2F2ZSh7XG4gICAgbGF5ZXJzOiBbbmV3TGF5ZXJdLFxuICAgIGxheWVyT3JkZXI6IFswXVxuICB9KS52aXNTdGF0ZTtcbiAgY29uc3QgbG9hZGVkTGF5ZXIgPSB2aXNTdGF0ZVNjaGVtYVtDVVJSRU5UX1ZFUlNJT05dLmxvYWQoc2F2ZWRWaXNTdGF0ZSkudmlzU3RhdGUubGF5ZXJzWzBdO1xuICByZXR1cm4gbG9hZGVkTGF5ZXI7XG59XG5cbi8qKlxuICogTWVyZ2UgbGF5ZXJzIGZyb20gZGUtc2VyaWFsaXplZCBzdGF0ZSwgaWYgbm8gZmllbGRzIG9yIGRhdGEgYXJlIGxvYWRlZFxuICogc2F2ZSBpdCBmb3IgbGF0ZXJcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUxheWVycyhcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBsYXllcnNUb01lcmdlOiBOb25OdWxsYWJsZTxQYXJzZWRDb25maWdbJ3Zpc1N0YXRlJ10+WydsYXllcnMnXSA9IFtdLFxuICBmcm9tQ29uZmlnPzogYm9vbGVhblxuKTogVmlzU3RhdGUge1xuICBjb25zdCBwcmVzZXJ2ZUxheWVyT3JkZXIgPSBmcm9tQ29uZmlnID8gbGF5ZXJzVG9NZXJnZS5tYXAobCA9PiBsLmlkKSA6IHN0YXRlLnByZXNlcnZlTGF5ZXJPcmRlcjtcblxuICBpZiAoIUFycmF5LmlzQXJyYXkobGF5ZXJzVG9NZXJnZSkgfHwgIWxheWVyc1RvTWVyZ2UubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3Qge3ZhbGlkYXRlZDogbWVyZ2VkTGF5ZXIsIGZhaWxlZDogdW5tZXJnZWR9ID0gdmFsaWRhdGVMYXllcnNCeURhdGFzZXRzKFxuICAgIHN0YXRlLmRhdGFzZXRzLFxuICAgIHN0YXRlLmxheWVyQ2xhc3NlcyxcbiAgICBsYXllcnNUb01lcmdlXG4gICk7XG5cbiAgLy8gcHV0IG5ldyBsYXllcnMgaW4gZnJvbnQgb2YgY3VycmVudCBsYXllcnNcbiAgY29uc3Qge25ld0xheWVyT3JkZXIsIG5ld0xheWVyc30gPSBpbnNlcnRMYXllckF0UmlnaHRPcmRlcihcbiAgICBzdGF0ZS5sYXllcnMsXG4gICAgbWVyZ2VkTGF5ZXIsXG4gICAgc3RhdGUubGF5ZXJPcmRlcixcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgcHJlc2VydmVMYXllck9yZGVyXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXllcnM6IG5ld0xheWVycyxcbiAgICBsYXllck9yZGVyOiBuZXdMYXllck9yZGVyLFxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBwcmVzZXJ2ZUxheWVyT3JkZXIsXG4gICAgbGF5ZXJUb0JlTWVyZ2VkOiBbLi4uc3RhdGUubGF5ZXJUb0JlTWVyZ2VkLCAuLi51bm1lcmdlZF1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydExheWVyQXRSaWdodE9yZGVyKFxuICBjdXJyZW50TGF5ZXJzLFxuICBsYXllcnNUb0luc2VydCxcbiAgY3VycmVudE9yZGVyLFxuICBwcmVzZXJ2ZWRPcmRlcjogc3RyaW5nW10gPSBbXVxuKSB7XG4gIC8vIHBlcnNlcnZlZE9yZGVyIFsnYScsICdiJywgJ2MnXTtcbiAgLy8gbGF5ZXJPcmRlciBbMSwgMCwgM11cbiAgLy8gbGF5ZXJPcmRlck1hcCBbJ2EnLCAnYyddXG4gIGxldCBsYXllck9yZGVyUXVldWUgPSBjdXJyZW50T3JkZXIubWFwKGkgPT4gY3VycmVudExheWVyc1tpXS5pZCk7XG4gIGxldCBuZXdMYXllcnMgPSBjdXJyZW50TGF5ZXJzO1xuXG4gIGZvciAoY29uc3QgbmV3TGF5ZXIgb2YgbGF5ZXJzVG9JbnNlcnQpIHtcbiAgICAvLyBmaW5kIHdoZXJlIHRvIGluc2VydCBpdFxuICAgIGNvbnN0IGV4cGVjdGVkSWR4ID0gcHJlc2VydmVkT3JkZXIuaW5kZXhPZihuZXdMYXllci5pZCk7XG4gICAgLy8gaWYgY2FudCBmaW5kIHBsYWNlIHRvIGluc2VydCwgaW5zZXJ0IGF0IHRoZSBmb250XG4gICAgbGV0IGluc2VydEF0ID0gMDtcblxuICAgIGlmIChleHBlY3RlZElkeCA+IDApIHtcbiAgICAgIC8vIGxvb2sgZm9yIGxheWVyIHRvIGluc2VydCBhZnRlclxuICAgICAgbGV0IGkgPSBleHBlY3RlZElkeCArIDE7XG4gICAgICBsZXQgcHJlY2VlZElkeCA9IC0xO1xuICAgICAgd2hpbGUgKGktLSA+IDAgJiYgcHJlY2VlZElkeCA9PT0gLTEpIHtcbiAgICAgICAgY29uc3QgcHJlY2VlZExheWVyID0gcHJlc2VydmVkT3JkZXJbaV07XG4gICAgICAgIHByZWNlZWRJZHggPSBsYXllck9yZGVyUXVldWUuaW5kZXhPZihwcmVjZWVkTGF5ZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJlY2VlZElkeCA+IC0xKSB7XG4gICAgICAgIGluc2VydEF0ID0gcHJlY2VlZElkeCArIDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGF5ZXJPcmRlclF1ZXVlID0gYXJyYXlJbnNlcnQobGF5ZXJPcmRlclF1ZXVlLCBpbnNlcnRBdCwgbmV3TGF5ZXIuaWQpO1xuICAgIG5ld0xheWVycyA9IG5ld0xheWVycy5jb25jYXQobmV3TGF5ZXIpO1xuICB9XG5cbiAgLy8gcmVjb25zdHJ1Y3QgbGF5ZXJPcmRlciBhZnRlciBpbnNlcnRcbiAgY29uc3QgbmV3TGF5ZXJPcmRlciA9IGxheWVyT3JkZXJRdWV1ZS5tYXAoaWQgPT4gbmV3TGF5ZXJzLmZpbmRJbmRleChsID0+IGwuaWQgPT09IGlkKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBuZXdMYXllck9yZGVyLFxuICAgIG5ld0xheWVyc1xuICB9O1xufVxuXG4vKipcbiAqIE1lcmdlIGludGVyYWN0aW9ucyB3aXRoIHNhdmVkIGNvbmZpZ1xuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlSW50ZXJhY3Rpb25zKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGludGVyYWN0aW9uVG9CZU1lcmdlZDogUGFydGlhbDxTYXZlZEludGVyYWN0aW9uQ29uZmlnPiB8IHVuZGVmaW5lZCxcbiAgZnJvbUNvbmZpZz86IGJvb2xlYW5cbik6IFZpc1N0YXRlIHtcbiAgY29uc3QgbWVyZ2VkOiBQYXJ0aWFsPFNhdmVkSW50ZXJhY3Rpb25Db25maWc+ID0ge307XG4gIGNvbnN0IHVubWVyZ2VkOiBQYXJ0aWFsPFNhdmVkSW50ZXJhY3Rpb25Db25maWc+ID0ge307XG5cbiAgaWYgKGludGVyYWN0aW9uVG9CZU1lcmdlZCkge1xuICAgIChPYmplY3Qua2V5cyhpbnRlcmFjdGlvblRvQmVNZXJnZWQpIGFzIEFycmF5PGtleW9mIFNhdmVkSW50ZXJhY3Rpb25Db25maWc+KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoIXN0YXRlLmludGVyYWN0aW9uQ29uZmlnW2tleV0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjdXJyZW50Q29uZmlnID1cbiAgICAgICAga2V5ID09PSAndG9vbHRpcCcgfHwga2V5ID09PSAnYnJ1c2gnID8gc3RhdGUuaW50ZXJhY3Rpb25Db25maWdba2V5XS5jb25maWcgOiBudWxsO1xuXG4gICAgICBjb25zdCB7ZW5hYmxlZCwgLi4uY29uZmlnU2F2ZWR9ID0gaW50ZXJhY3Rpb25Ub0JlTWVyZ2VkW2tleV0gfHwge307XG5cbiAgICAgIGxldCBjb25maWdUb01lcmdlID0gY29uZmlnU2F2ZWQ7XG5cbiAgICAgIGlmIChrZXkgPT09ICd0b29sdGlwJykge1xuICAgICAgICBjb25zdCB7bWVyZ2VkVG9vbHRpcCwgdW5tZXJnZWRUb29sdGlwfSA9IG1lcmdlSW50ZXJhY3Rpb25Ub29sdGlwQ29uZmlnKFxuICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIGNvbmZpZ1NhdmVkIGFzIFNhdmVkSW50ZXJhY3Rpb25Db25maWdbJ3Rvb2x0aXAnXVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIG1lcmdlIG5ldyBkYXRhc2V0IHRvb2x0aXBzIHdpdGggb3JpZ2luYWwgZGF0YXNldCB0b29sdGlwc1xuICAgICAgICBjb25maWdUb01lcmdlID0ge1xuICAgICAgICAgIGZpZWxkc1RvU2hvdzoge1xuICAgICAgICAgICAgLi4uKGN1cnJlbnRDb25maWcgYXMgVG9vbHRpcEluZm9bJ2NvbmZpZyddKS5maWVsZHNUb1Nob3csXG4gICAgICAgICAgICAuLi5tZXJnZWRUb29sdGlwXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh1bm1lcmdlZFRvb2x0aXApLmxlbmd0aCkge1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICB1bm1lcmdlZC50b29sdGlwID0ge2ZpZWxkc1RvU2hvdzogdW5tZXJnZWRUb29sdGlwLCBlbmFibGVkOiBCb29sZWFuKGVuYWJsZWQpfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBtZXJnZWRba2V5XSA9IHtcbiAgICAgICAgLi4uc3RhdGUuaW50ZXJhY3Rpb25Db25maWdba2V5XSxcbiAgICAgICAgZW5hYmxlZDogQm9vbGVhbihlbmFibGVkKSxcbiAgICAgICAgLi4uKGN1cnJlbnRDb25maWdcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgY29uZmlnOiBwaWNrKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRDb25maWcsXG4gICAgICAgICAgICAgICAgICAuLi5jb25maWdUb01lcmdlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50Q29uZmlnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7fSlcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBpbnRlcmFjdGlvbkNvbmZpZzoge1xuICAgICAgLi4uc3RhdGUuaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAuLi5tZXJnZWRcbiAgICB9LFxuICAgIGludGVyYWN0aW9uVG9CZU1lcmdlZDogdW5tZXJnZWRcbiAgfTtcbn1cblxuLyoqXG4gKiBNZXJnZSBzcGxpdE1hcHMgY29uZmlnIHdpdGggY3VycmVudCB2aXNTdGV0ZS5cbiAqIDEuIGlmIGN1cnJlbnQgbWFwIGlzIHNwbGl0LCBidXQgc3BsaXRNYXAgRE9FU05PVCBjb250YWluIG1hcHNcbiAqICAgIDogZG9uJ3QgbWVyZ2UgYW55dGhpbmdcbiAqIDIuIGlmIGN1cnJlbnQgbWFwIGlzIE5PVCBzcGxpdCwgYnV0IHNwbGl0TWFwcyBjb250YWluIG1hcHNcbiAqICAgIDogYWRkIHRvIHNwbGl0TWFwcywgYW5kIGFkZCBjdXJyZW50IGxheWVycyB0byBzcGxpdE1hcHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlU3BsaXRNYXBzKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHNwbGl0TWFwczogTm9uTnVsbGFibGU8UGFyc2VkQ29uZmlnWyd2aXNTdGF0ZSddPlsnc3BsaXRNYXBzJ10gPSBbXSxcbiAgZnJvbUNvbmZpZz86IGJvb2xlYW5cbik6IFZpc1N0YXRlIHtcbiAgY29uc3QgbWVyZ2VkID0gWy4uLnN0YXRlLnNwbGl0TWFwc107XG4gIGNvbnN0IHVubWVyZ2VkID0gW107XG4gIHNwbGl0TWFwcy5mb3JFYWNoKChzbSwgaSkgPT4ge1xuICAgIE9iamVjdC5lbnRyaWVzKHNtLmxheWVycykuZm9yRWFjaCgoW2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgIC8vIGNoZWNrIGlmIGxheWVyIGV4aXN0c1xuICAgICAgY29uc3QgcHVzaFRvID0gc3RhdGUubGF5ZXJzLmZpbmQobCA9PiBsLmlkID09PSBpZCkgPyBtZXJnZWQgOiB1bm1lcmdlZDtcblxuICAgICAgLy8gY3JlYXRlIG1hcCBwYW5lbCBpZiBjdXJyZW50IG1hcCBpcyBub3Qgc3BsaXRcbiAgICAgIHB1c2hUb1tpXSA9IHB1c2hUb1tpXSB8fCB7XG4gICAgICAgIGxheWVyczogcHVzaFRvID09PSBtZXJnZWQgPyBnZXRJbml0aWFsTWFwTGF5ZXJzRm9yU3BsaXRNYXAoc3RhdGUubGF5ZXJzKSA6IFtdXG4gICAgICB9O1xuICAgICAgcHVzaFRvW2ldLmxheWVycyA9IHtcbiAgICAgICAgLi4ucHVzaFRvW2ldLmxheWVycyxcbiAgICAgICAgW2lkXTogdmFsdWVcbiAgICAgIH07XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgc3BsaXRNYXBzOiBtZXJnZWQsXG4gICAgc3BsaXRNYXBzVG9CZU1lcmdlZDogWy4uLnN0YXRlLnNwbGl0TWFwc1RvQmVNZXJnZWQsIC4uLnVubWVyZ2VkXVxuICB9O1xufVxuXG4vKipcbiAqIE1lcmdlIGludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAgd2l0aCBzYXZlZCBjb25maWcsXG4gKiB2YWxpZGF0ZSBmaWVsZHNUb1Nob3dcbiAqXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEBwYXJhbSB0b29sdGlwQ29uZmlnXG4gKiBAcmV0dXJuIC0ge21lcmdlZFRvb2x0aXA6IHt9LCB1bm1lcmdlZFRvb2x0aXA6IHt9fVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VJbnRlcmFjdGlvblRvb2x0aXBDb25maWcoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgdG9vbHRpcENvbmZpZzogUGljazxUb29sdGlwSW5mb1snY29uZmlnJ10sICdmaWVsZHNUb1Nob3cnPiB8IG51bGwgPSBudWxsXG4pIHtcbiAgY29uc3QgdW5tZXJnZWRUb29sdGlwOiBUb29sdGlwSW5mb1snY29uZmlnJ11bJ2ZpZWxkc1RvU2hvdyddID0ge307XG4gIGNvbnN0IG1lcmdlZFRvb2x0aXA6IFRvb2x0aXBJbmZvWydjb25maWcnXVsnZmllbGRzVG9TaG93J10gPSB7fTtcblxuICBpZiAoXG4gICAgIXRvb2x0aXBDb25maWcgfHxcbiAgICAhdG9vbHRpcENvbmZpZy5maWVsZHNUb1Nob3cgfHxcbiAgICAhT2JqZWN0LmtleXModG9vbHRpcENvbmZpZy5maWVsZHNUb1Nob3cpLmxlbmd0aFxuICApIHtcbiAgICByZXR1cm4ge21lcmdlZFRvb2x0aXAsIHVubWVyZ2VkVG9vbHRpcH07XG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFJZCBpbiB0b29sdGlwQ29uZmlnLmZpZWxkc1RvU2hvdykge1xuICAgIGlmICghc3RhdGUuZGF0YXNldHNbZGF0YUlkXSkge1xuICAgICAgLy8gaXMgbm90IHlldCBsb2FkZWRcbiAgICAgIHVubWVyZ2VkVG9vbHRpcFtkYXRhSWRdID0gdG9vbHRpcENvbmZpZy5maWVsZHNUb1Nob3dbZGF0YUlkXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaWYgZGF0YXNldCBpcyBsb2FkZWRcbiAgICAgIGNvbnN0IGFsbEZpZWxkcyA9IHN0YXRlLmRhdGFzZXRzW2RhdGFJZF0uZmllbGRzLm1hcChkID0+IGQubmFtZSk7XG4gICAgICBjb25zdCBmb3VuZEZpZWxkc1RvU2hvdyA9IChzdGF0ZS5kYXRhc2V0c1tkYXRhSWRdLm1ldGFkYXRhIGFzIGFueSkuaXNEeW5hbWljU3BhdGlhbEluZGV4XG4gICAgICAgID8gdG9vbHRpcENvbmZpZy5maWVsZHNUb1Nob3dbZGF0YUlkXVxuICAgICAgICA6IHRvb2x0aXBDb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF0uZmlsdGVyKGZpZWxkID0+IGFsbEZpZWxkcy5pbmNsdWRlcyhmaWVsZC5uYW1lKSk7XG5cbiAgICAgIG1lcmdlZFRvb2x0aXBbZGF0YUlkXSA9IGZvdW5kRmllbGRzVG9TaG93O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7bWVyZ2VkVG9vbHRpcCwgdW5tZXJnZWRUb29sdGlwfTtcbn1cbi8qKlxuICogTWVyZ2UgbGF5ZXJCbGVuZGluZyB3aXRoIHNhdmVkXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VMYXllckJsZW5kaW5nKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGxheWVyQmxlbmRpbmc6IE5vbk51bGxhYmxlPFBhcnNlZENvbmZpZ1sndmlzU3RhdGUnXT5bJ2xheWVyQmxlbmRpbmcnXSxcbiAgZnJvbUNvbmZpZz86IGJvb2xlYW5cbik6IFZpc1N0YXRlIHtcbiAgaWYgKGxheWVyQmxlbmRpbmcgJiYgTEFZRVJfQkxFTkRJTkdTW2xheWVyQmxlbmRpbmddKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbGF5ZXJCbGVuZGluZ1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59XG5cbi8qKlxuICogTWVyZ2UgYW5pbWF0aW9uIGNvbmZpZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VBbmltYXRpb25Db25maWcoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYW5pbWF0aW9uOiBOb25OdWxsYWJsZTxQYXJzZWRDb25maWdbJ3Zpc1N0YXRlJ10+WydhbmltYXRpb25Db25maWcnXSxcbiAgZnJvbUNvbmZpZz86IGJvb2xlYW5cbik6IFZpc1N0YXRlIHtcbiAgaWYgKGFuaW1hdGlvbiAmJiBhbmltYXRpb24uY3VycmVudFRpbWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBhbmltYXRpb25Db25maWc6IHtcbiAgICAgICAgLi4uc3RhdGUuYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICAuLi5hbmltYXRpb24sXG4gICAgICAgIGRvbWFpbjogbnVsbFxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgc2F2ZWQgbGF5ZXIgY29sdW1ucyB3aXRoIG5ldyBkYXRhLFxuICogdXBkYXRlIGZpZWxkSWR4IGJhc2VkIG9uIG5ldyBmaWVsZHNcbiAqXG4gKiBAcGFyYW0gZmllbGRzXG4gKiBAcGFyYW0gc2F2ZWRDb2xzXG4gKiBAcGFyYW0gZW1wdHlDb2xzXG4gKiBAcmV0dXJuIC0gdmFsaWRhdGVkIGNvbHVtbnMgb3IgbnVsbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNhdmVkTGF5ZXJDb2x1bW5zKFxuICBmaWVsZHM6IEtlcGxlclRhYmxlWydmaWVsZHMnXSxcbiAgc2F2ZWRDb2xzOiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9ID0ge30sXG4gIGVtcHR5Q29sczogTGF5ZXJDb2x1bW5zXG4pIHtcbiAgLy8gUHJlcGFyZSBjb2x1bW5zIGZvciB0aGUgdmFsaWRhdG9yXG4gIGNvbnN0IGNvbHVtbnM6IHR5cGVvZiBlbXB0eUNvbHMgPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZW1wdHlDb2xzKSkge1xuICAgIGNvbHVtbnNba2V5XSA9IHsuLi5lbXB0eUNvbHNba2V5XX07XG5cbiAgICBjb25zdCBzYXZlZCA9IHNhdmVkQ29sc1trZXldO1xuICAgIGlmIChzYXZlZCkge1xuICAgICAgY29uc3QgZmllbGRJZHggPSBmaWVsZHMuZmluZEluZGV4KCh7bmFtZX0pID0+IG5hbWUgPT09IHNhdmVkKTtcblxuICAgICAgaWYgKGZpZWxkSWR4ID4gLTEpIHtcbiAgICAgICAgLy8gdXBkYXRlIGZvdW5kIGNvbHVtbnNcbiAgICAgICAgY29sdW1uc1trZXldLmZpZWxkSWR4ID0gZmllbGRJZHg7XG4gICAgICAgIGNvbHVtbnNba2V5XS52YWx1ZSA9IHNhdmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGZpbmQgYWN0dWFsIGNvbHVtbiBmaWVsZElkeCwgaW4gY2FzZSBpdCBoYXMgY2hhbmdlZFxuICBjb25zdCBhbGxDb2xGb3VuZCA9IE9iamVjdC5rZXlzKGNvbHVtbnMpLmV2ZXJ5KGtleSA9PlxuICAgIHZhbGlkYXRlQ29sdW1uKGNvbHVtbnNba2V5XSwgY29sdW1ucywgZmllbGRzKVxuICApO1xuXG4gIGlmIChhbGxDb2xGb3VuZCkge1xuICAgIHJldHVybiBjb2x1bW5zO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvbHVtbihcbiAgY29sdW1uOiBMYXllckNvbHVtbiAmIHt2YWxpZGF0b3I/OiB0eXBlb2YgdmFsaWRhdGVDb2x1bW59LFxuICBjb2x1bW5zOiBMYXllckNvbHVtbnMsXG4gIGFsbEZpZWxkczogS2VwbGVyVGFibGVbJ2ZpZWxkcyddXG4pOiBib29sZWFuIHtcbiAgaWYgKGNvbHVtbi5vcHRpb25hbCB8fCBjb2x1bW4udmFsdWUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoY29sdW1uLnZhbGlkYXRvcikge1xuICAgIHJldHVybiBjb2x1bW4udmFsaWRhdG9yKGNvbHVtbiwgY29sdW1ucywgYWxsRmllbGRzKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgc2F2ZWQgdGV4dCBsYWJlbCBjb25maWcgd2l0aCBuZXcgZGF0YVxuICogcmVmZXIgdG8gdmlzLXN0YXRlLXNjaGVtYS5qcyBUZXh0TGFiZWxTY2hlbWFWMVxuICpcbiAqIEBwYXJhbSB7QXJyYXk8T2JqZWN0Pn0gZmllbGRzXG4gKiBAcGFyYW0ge09iamVjdH0gc2F2ZWRUZXh0TGFiZWxcbiAqIEByZXR1cm4ge09iamVjdH0gLSB2YWxpZGF0ZWQgdGV4dGxhYmVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNhdmVkVGV4dExhYmVsKGZpZWxkcywgW2xheWVyVGV4dExhYmVsXSwgc2F2ZWRUZXh0TGFiZWwpIHtcbiAgY29uc3Qgc2F2ZWRUZXh0TGFiZWxzID0gQXJyYXkuaXNBcnJheShzYXZlZFRleHRMYWJlbCkgPyBzYXZlZFRleHRMYWJlbCA6IFtzYXZlZFRleHRMYWJlbF07XG5cbiAgLy8gdmFsaWRhdGUgZmllbGRcbiAgcmV0dXJuIHNhdmVkVGV4dExhYmVscy5tYXAodGV4dExhYmVsID0+IHtcbiAgICBjb25zdCBmaWVsZCA9IHRleHRMYWJlbC5maWVsZFxuICAgICAgPyBmaWVsZHMuZmluZChmZCA9PlxuICAgICAgICAgIE9iamVjdC5rZXlzKHRleHRMYWJlbC5maWVsZCkuZXZlcnkoa2V5ID0+IHRleHRMYWJlbC5maWVsZFtrZXldID09PSBmZFtrZXldKVxuICAgICAgICApXG4gICAgICA6IG51bGw7XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMobGF5ZXJUZXh0TGFiZWwpLnJlZHVjZShcbiAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtrZXldOiBrZXkgPT09ICdmaWVsZCcgPyBmaWVsZCA6IHRleHRMYWJlbFtrZXldIHx8IGxheWVyVGV4dExhYmVsW2tleV1cbiAgICAgIH0pLFxuICAgICAge31cbiAgICApO1xuICB9KTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzYXZlZCB2aXN1YWwgY2hhbm5lbHMgY29uZmlnIHdpdGggbmV3IGRhdGEsXG4gKiByZWZlciB0byB2aXMtc3RhdGUtc2NoZW1hLmpzIFZpc3VhbENoYW5uZWxTY2hlbWFWMVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTYXZlZFZpc3VhbENoYW5uZWxzKFxuICBmaWVsZHM6IEtlcGxlclRhYmxlWydmaWVsZHMnXSxcbiAgbmV3TGF5ZXI6IExheWVyLFxuICBzYXZlZExheWVyOiBQYXJzZWRMYXllclxuKTogbnVsbCB8IExheWVyIHtcbiAgT2JqZWN0LnZhbHVlcyhuZXdMYXllci52aXN1YWxDaGFubmVscykuZm9yRWFjaCgoe2ZpZWxkLCBzY2FsZSwga2V5fSkgPT4ge1xuICAgIGxldCBmb3VuZEZpZWxkO1xuICAgIGNvbnN0IGNvbG9yRmllbGRQcm9wcyA9IHt9O1xuICAgIGlmIChzYXZlZExheWVyLmNvbmZpZykge1xuICAgICAgaWYgKHNhdmVkTGF5ZXIuY29uZmlnW2ZpZWxkXSkge1xuICAgICAgICBmb3VuZEZpZWxkID0gZmllbGRzLmZpbmQoXG4gICAgICAgICAgZmQgPT4gc2F2ZWRMYXllci5jb25maWcgJiYgZmQubmFtZSA9PT0gc2F2ZWRMYXllci5jb25maWdbZmllbGRdLm5hbWVcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNhdmVkTGF5ZXIuY29uZmlnW2ZpZWxkXT8uY29sb3JDb2x1bW4pIHtcbiAgICAgICAgY29uc3QgY29sb3JDb2x1bW5GaWVsZCA9IGZpZWxkcy5maW5kKFxuICAgICAgICAgIGZkID0+IHNhdmVkTGF5ZXIuY29uZmlnICYmIGZkLm5hbWUgPT09IHNhdmVkTGF5ZXIuY29uZmlnW2ZpZWxkXS5jb2xvckNvbHVtblxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChjb2xvckNvbHVtbkZpZWxkKSB7XG4gICAgICAgICAgKGNvbG9yRmllbGRQcm9wcyBhcyBhbnkpLmNvbG9yQ29sdW1uID0gY29sb3JDb2x1bW5GaWVsZC5uYW1lO1xuICAgICAgICAgIChjb2xvckZpZWxkUHJvcHMgYXMgYW55KS5jb2xvckNvbHVtbklkeCA9IGNvbG9yQ29sdW1uRmllbGQuZmllbGRJZHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZm91bmRDaGFubmVsID0ge1xuICAgICAgICAuLi4oZm91bmRGaWVsZCA/IHtbZmllbGRdOiB7Li4uZm91bmRGaWVsZCwgLi4uY29sb3JGaWVsZFByb3BzfX0gOiB7fSksXG4gICAgICAgIC4uLihzYXZlZExheWVyLmNvbmZpZ1tzY2FsZV0gPyB7W3NjYWxlXTogc2F2ZWRMYXllci5jb25maWdbc2NhbGVdfSA6IHt9KVxuICAgICAgfTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhmb3VuZENoYW5uZWwpLmxlbmd0aCkge1xuICAgICAgICBuZXdMYXllci51cGRhdGVMYXllckNvbmZpZyhmb3VuZENoYW5uZWwpO1xuICAgICAgfVxuXG4gICAgICBuZXdMYXllci52YWxpZGF0ZVZpc3VhbENoYW5uZWwoa2V5KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbmV3TGF5ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxheWVyc0J5RGF0YXNldHMoXG4gIGRhdGFzZXRzOiBEYXRhc2V0cyxcbiAgbGF5ZXJDbGFzc2VzOiBWaXNTdGF0ZVsnbGF5ZXJDbGFzc2VzJ10sXG4gIGxheWVyczogTm9uTnVsbGFibGU8UGFyc2VkQ29uZmlnWyd2aXNTdGF0ZSddPlsnbGF5ZXJzJ10gPSBbXVxuKSB7XG4gIGNvbnN0IHZhbGlkYXRlZDogTGF5ZXJbXSA9IFtdO1xuICBjb25zdCBmYWlsZWQ6IE5vbk51bGxhYmxlPFBhcnNlZENvbmZpZ1sndmlzU3RhdGUnXT5bJ2xheWVycyddID0gW107XG5cbiAgbGF5ZXJzLmZvckVhY2gobGF5ZXIgPT4ge1xuICAgIGxldCB2YWxpZGF0ZUxheWVyOiBMYXllciB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKGxheWVyPy5jb25maWc/LmRhdGFJZCkge1xuICAgICAgaWYgKGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdKSB7XG4gICAgICAgIC8vIGRhdGFzZXRzIGFyZSBhbHJlYWR5IGxvYWRlZFxuICAgICAgICB2YWxpZGF0ZUxheWVyID0gdmFsaWRhdGVMYXllcldpdGhEYXRhKGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdLCBsYXllciwgbGF5ZXJDbGFzc2VzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVMYXllcikge1xuICAgICAgdmFsaWRhdGVkLnB1c2godmFsaWRhdGVMYXllcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGRhdGFzZXRzIG5vdCB5ZXQgbG9hZGVkXG4gICAgICBmYWlsZWQucHVzaChsYXllcik7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge3ZhbGlkYXRlZCwgZmFpbGVkfTtcbn1cbi8qKlxuICogVmFsaWRhdGUgc2F2ZWQgbGF5ZXIgY29uZmlnIHdpdGggbmV3IGRhdGEsXG4gKiB1cGRhdGUgZmllbGRJZHggYmFzZWQgb24gbmV3IGZpZWxkc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMYXllcldpdGhEYXRhKFxuICB7ZmllbGRzLCBpZDogZGF0YUlkfTogS2VwbGVyVGFibGUsXG4gIHNhdmVkTGF5ZXI6IFBhcnNlZExheWVyLFxuICBsYXllckNsYXNzZXM6IFZpc1N0YXRlWydsYXllckNsYXNzZXMnXSxcbiAgb3B0aW9uczoge1xuICAgIGFsbG93RW1wdHlDb2x1bW4/OiBib29sZWFuO1xuICB9ID0ge31cbik6IExheWVyIHwgbnVsbCB7XG4gIGNvbnN0IHt0eXBlfSA9IHNhdmVkTGF5ZXI7XG4gIC8vIGxheWVyIGRvZXNudCBoYXZlIGEgdmFsaWQgdHlwZVxuICBpZiAoIXR5cGUgfHwgIWxheWVyQ2xhc3Nlcy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSB8fCAhc2F2ZWRMYXllci5jb25maWcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGxldCBuZXdMYXllciA9IG5ldyBsYXllckNsYXNzZXNbdHlwZV0oe1xuICAgIGlkOiBzYXZlZExheWVyLmlkLFxuICAgIGRhdGFJZCxcbiAgICBsYWJlbDogc2F2ZWRMYXllci5jb25maWcubGFiZWwsXG4gICAgY29sb3I6IHNhdmVkTGF5ZXIuY29uZmlnLmNvbG9yLFxuICAgIGlzVmlzaWJsZTogc2F2ZWRMYXllci5jb25maWcuaXNWaXNpYmxlLFxuICAgIGhpZGRlbjogc2F2ZWRMYXllci5jb25maWcuaGlkZGVuLFxuICAgIGhpZ2hsaWdodENvbG9yOiBzYXZlZExheWVyLmNvbmZpZy5oaWdobGlnaHRDb2xvcixcbiAgICB2aXNpYmlsaXR5Qnlab29tOiAoc2F2ZWRMYXllci5jb25maWcgYXMgYW55KS52aXNpYmlsaXR5Qnlab29tIFxuICB9KTtcblxuICAvLyBmaW5kIGNvbHVtbiBmaWVsZElkeFxuICBjb25zdCBjb2x1bW5Db25maWcgPSBuZXdMYXllci5nZXRMYXllckNvbHVtbnMoKTtcbiAgaWYgKE9iamVjdC5rZXlzKGNvbHVtbkNvbmZpZykubGVuZ3RoKSB7XG4gICAgY29uc3QgY29sdW1ucyA9IHZhbGlkYXRlU2F2ZWRMYXllckNvbHVtbnMoZmllbGRzLCBzYXZlZExheWVyLmNvbmZpZy5jb2x1bW5zLCBjb2x1bW5Db25maWcpO1xuICAgIGlmIChjb2x1bW5zKSB7XG4gICAgICBuZXdMYXllci51cGRhdGVMYXllckNvbmZpZyh7Y29sdW1uc30pO1xuICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMuYWxsb3dFbXB0eUNvbHVtbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLy8gdmlzdWFsIGNoYW5uZWwgZmllbGQgaXMgc2F2ZWQgdG8gYmUge25hbWUsIHR5cGV9XG4gIC8vIGZpbmQgdmlzdWFsIGNoYW5uZWwgZmllbGQgYnkgbWF0Y2hpbmcgYm90aCBuYW1lIGFuZCB0eXBlXG4gIC8vIHJlZmVyIHRvIHZpcy1zdGF0ZS1zY2hlbWEuanMgVmlzdWFsQ2hhbm5lbFNjaGVtYVYxXG4gIG5ld0xheWVyID0gdmFsaWRhdGVTYXZlZFZpc3VhbENoYW5uZWxzKGZpZWxkcywgbmV3TGF5ZXIsIHNhdmVkTGF5ZXIpO1xuXG4gIGNvbnN0IHRleHRMYWJlbCA9XG4gICAgc2F2ZWRMYXllci5jb25maWcudGV4dExhYmVsICYmIG5ld0xheWVyLmNvbmZpZy50ZXh0TGFiZWxcbiAgICAgID8gdmFsaWRhdGVTYXZlZFRleHRMYWJlbChmaWVsZHMsIG5ld0xheWVyLmNvbmZpZy50ZXh0TGFiZWwsIHNhdmVkTGF5ZXIuY29uZmlnLnRleHRMYWJlbClcbiAgICAgIDogbmV3TGF5ZXIuY29uZmlnLnRleHRMYWJlbDtcblxuICAvLyBjb3B5IHZpc0NvbmZpZyBvdmVyIHRvIGVtcHR5TGF5ZXIgdG8gbWFrZSBzdXJlIGl0IGhhcyBhbGwgdGhlIHByb3BzXG4gIGNvbnN0IHZpc0NvbmZpZyA9IG5ld0xheWVyLmNvcHlMYXllckNvbmZpZyhcbiAgICBuZXdMYXllci5jb25maWcudmlzQ29uZmlnLFxuICAgIHNhdmVkTGF5ZXIuY29uZmlnLnZpc0NvbmZpZyB8fCB7fSxcbiAgICB7c2hhbGxvd0NvcHk6IFsnY29sb3JSYW5nZScsICdzdHJva2VDb2xvclJhbmdlJ119XG4gICk7XG5cbiAgbmV3TGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgIHZpc0NvbmZpZyxcbiAgICB0ZXh0TGFiZWxcbiAgfSk7XG5cbiAgcmV0dXJuIG5ld0xheWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1lcmdlcihtZXJnZXI6IE1lcmdlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNPYmplY3QobWVyZ2VyKSAmJiB0eXBlb2YgbWVyZ2VyLm1lcmdlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBtZXJnZXIucHJvcCA9PT0gJ3N0cmluZyc7XG59XG5cbmV4cG9ydCBjb25zdCBWSVNfU1RBVEVfTUVSR0VSUzogVmlzU3RhdGVNZXJnZXJzID0gW1xuICB7bWVyZ2U6IG1lcmdlTGF5ZXJzLCBwcm9wOiAnbGF5ZXJzJywgdG9NZXJnZVByb3A6ICdsYXllclRvQmVNZXJnZWQnfSxcbiAge21lcmdlOiBtZXJnZUZpbHRlcnMsIHByb3A6ICdmaWx0ZXJzJywgdG9NZXJnZVByb3A6ICdmaWx0ZXJUb0JlTWVyZ2VkJ30sXG4gIHttZXJnZTogbWVyZ2VJbnRlcmFjdGlvbnMsIHByb3A6ICdpbnRlcmFjdGlvbkNvbmZpZycsIHRvTWVyZ2VQcm9wOiAnaW50ZXJhY3Rpb25Ub0JlTWVyZ2VkJ30sXG4gIHttZXJnZTogbWVyZ2VMYXllckJsZW5kaW5nLCBwcm9wOiAnbGF5ZXJCbGVuZGluZyd9LFxuICB7bWVyZ2U6IG1lcmdlU3BsaXRNYXBzLCBwcm9wOiAnc3BsaXRNYXBzJywgdG9NZXJnZVByb3A6ICdzcGxpdE1hcHNUb0JlTWVyZ2VkJ30sXG4gIHttZXJnZTogbWVyZ2VBbmltYXRpb25Db25maWcsIHByb3A6ICdhbmltYXRpb25Db25maWcnfVxuXTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxZQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxjQUFBLEdB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VUFBVSxDQUFDdEUsTUFBTSxDQUFDaUUsU0FBUyxJQUFJaEgsUUFBUSxDQUFDK0MsTUFBTSxDQUFDaUUsU0FBUyxHQUNwRE4sc0JBQXNCLENBQUMvQixNQUFNLEVBQUUzRSxRQUFRLENBQUMrQyxNQUFNLENBQUNpRSxTQUFTLEVBQUVLLFVBQVUsQ0FBQ3RFLE1BQU0sQ0FBQ2lFLFNBQVMsQ0FBQyxHQUN0RmhILFFBQVEsQ0FBQytDLE1BQU0sQ0FBQ2lFLFNBQVM7O0VBRS9CO0VBQ0EsSUFBTW9DLFNBQVMsR0FBR3BKLFFBQVEsQ0FBQ3FKLGVBQWUsQ0FDeENySixRQUFRLENBQUMrQyxNQUFNLENBQUNxRyxTQUFTLEVBQ3pCL0IsVUFBVSxDQUFDdEUsTUFBTSxDQUFDcUcsU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUNqQztJQUFDRSxXQUFXLEVBQUUsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCO0VBQUMsQ0FDbEQsQ0FBQztFQUVEdEosUUFBUSxDQUFDaUksaUJBQWlCLENBQUM7SUFDekJtQixTQUFTLEVBQVRBLFNBQVM7SUFDVHBDLFNBQVMsRUFBVEE7RUFDRixDQUFDLENBQUM7RUFFRixPQUFPaEgsUUFBUTtBQUNqQjtBQUVPLFNBQVN1SixhQUFhQSxDQUFDQyxNQUFjLEVBQVc7RUFDckQsT0FBTyxJQUFBQyxlQUFRLEVBQUNELE1BQU0sQ0FBQyxJQUFJLE9BQU9BLE1BQU0sQ0FBQ0UsS0FBSyxLQUFLLFVBQVUsSUFBSSxPQUFPRixNQUFNLENBQUNHLElBQUksS0FBSyxRQUFRO0FBQ2xHO0FBRU8sSUFBTUMsaUJBQWtDLEdBQUFDLE9BQUEsQ0FBQUQsaUJBQUEsR0FBRyxDQUNoRDtFQUFDRixLQUFLLEVBQUUvSSxXQUFXO0VBQUVnSixJQUFJLEVBQUUsUUFBUTtFQUFFRyxXQUFXLEVBQUU7QUFBaUIsQ0FBQyxFQUNwRTtFQUFDSixLQUFLLEVBQUV4TCxZQUFZO0VBQUV5TCxJQUFJLEVBQUUsU0FBUztFQUFFRyxXQUFXLEVBQUU7QUFBa0IsQ0FBQyxFQUN2RTtFQUFDSixLQUFLLEVBQUVqSCxpQkFBaUI7RUFBRWtILElBQUksRUFBRSxtQkFBbUI7RUFBRUcsV0FBVyxFQUFFO0FBQXVCLENBQUMsRUFDM0Y7RUFBQ0osS0FBSyxFQUFFeEUsa0JBQWtCO0VBQUV5RSxJQUFJLEVBQUU7QUFBZSxDQUFDLEVBQ2xEO0VBQUNELEtBQUssRUFBRTdGLGNBQWM7RUFBRThGLElBQUksRUFBRSxXQUFXO0VBQUVHLFdBQVcsRUFBRTtBQUFxQixDQUFDLEVBQzlFO0VBQUNKLEtBQUssRUFBRXJFLG9CQUFvQjtFQUFFc0UsSUFBSSxFQUFFO0FBQWlCLENBQUMsQ0FDdkQiLCJpZ25vcmVMaXN0IjpbXX0=
|