@kepler.gl/reducers 3.3.0-alpha.10 → 3.3.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/combined-updaters.js +1 -1
- package/dist/cjs/layer-utils.js +1 -1
- package/dist/cjs/map-state-updaters.js +1 -1
- package/dist/cjs/map-style-updaters.js +4 -5
- package/dist/cjs/merger-handler.js +2 -2
- package/dist/cjs/middleware.js +4 -6
- package/dist/cjs/provider-state-updaters.js +15 -16
- package/dist/cjs/root.js +2 -2
- package/dist/cjs/vis-state-merger.js +43 -21
- package/dist/cjs/vis-state-selectors.js +26 -8
- package/dist/cjs/vis-state-updaters.js +214 -164
- package/dist/esm/combined-updaters.js +1 -1
- package/dist/esm/layer-utils.js +1 -1
- package/dist/esm/map-state-updaters.js +1 -1
- package/dist/esm/map-style-updaters.js +2 -2
- package/dist/esm/merger-handler.js +2 -2
- package/dist/esm/middleware.js +4 -6
- package/dist/esm/provider-state-updaters.js +4 -4
- package/dist/esm/root.js +2 -2
- package/dist/esm/vis-state-merger.js +39 -18
- package/dist/esm/vis-state-selectors.js +25 -7
- package/dist/esm/vis-state-updaters.js +210 -159
- package/dist/middleware.d.ts +2 -2
- package/dist/root.d.ts +1 -1
- package/dist/vis-state-selectors.d.ts +53 -6
- package/dist/vis-state-updaters.d.ts +4 -3
- package/package.json +16 -17
|
@@ -481,4 +481,4 @@ export var replaceDataInMapUpdater = function replaceDataInMapUpdater(state, _re
|
|
|
481
481
|
}));
|
|
482
482
|
return nextState;
|
|
483
483
|
};
|
|
484
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0b2dnbGVNb2RhbFVwZGF0ZXIiLCJsb2FkRmlsZXNTdWNjZXNzVXBkYXRlciIsInVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlciIsInRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwidWlTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsInJlY2VpdmVNYXBDb25maWdVcGRhdGVyIiwidWlTdGF0ZVJlY2VpdmVNYXBDb25maWdVcGRhdGVyIiwidXBkYXRlVmlzRGF0YVVwZGF0ZXIiLCJ2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyIiwic2V0TWFwSW5mb1VwZGF0ZXIiLCJsYXllclR5cGVDaGFuZ2VVcGRhdGVyIiwidmlzU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZSIsInN0YXRlTWFwQ29uZmlnVXBkYXRlciIsIm1hcFN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwic2V0TWFwU3BsaXRNb2RlVXBkYXRlciIsIm1hcFN0YXRlU2V0TWFwU3BsaXRNb2RlVXBkYXRlciIsInNldE1hcFZpZXdNb2RlVXBkYXRlciIsIm1hcFN0eWxlQ2hhbmdlVXBkYXRlciIsInN0eWxlTWFwQ29uZmlnVXBkYXRlciIsImZpbGVzVG9EYXRhUGF5bG9hZCIsInBheWxvYWRfIiwiYXBwbHlfIiwid2l0aF8iLCJpZl8iLCJjb21wb3NlXyIsIm1lcmdlXyIsInBpY2tfIiwiaXNQbGFpbk9iamVjdCIsImNvbXB1dGVTcGxpdE1hcExheWVycyIsImZpbmRNYXBCb3VuZHMiLCJCQVNFX01BUF9DT0xPUl9NT0RFUyIsIk9WRVJMQVlfQkxFTkRJTkdTIiwiTk9fTUFQX0lEIiwiTWFwU3BsaXRNb2RlIiwiZ2V0QmFzZW1hcENvbG9yc0ZvclN0eWxlIiwiREVGQVVMVF9CQVNFTUFQX0NPTE9SIiwiY29tYmluZWRVcGRhdGVycyIsImlzVmFsaWRDb25maWciLCJjb25maWciLCJ2ZXJzaW9uIiwiZGVmYXVsdEFkZERhdGFUb01hcE9wdGlvbnMiLCJjZW50ZXJNYXAiLCJrZWVwRXhpc3RpbmdDb25maWciLCJhdXRvQ3JlYXRlTGF5ZXJzIiwiYXV0b0NyZWF0ZVRvb2x0aXBzIiwiYWRkRGF0YVRvTWFwVXBkYXRlciIsInN0YXRlIiwiX3JlZiIsIl9kYXRhc2V0cyQiLCJfZGF0YXNldHMkMiIsIl9kYXRhc2V0cyQzIiwicGF5bG9hZCIsImRhdGFzZXRzIiwiaW5mbyIsIm9wdGlvbnMiLCJfb2JqZWN0U3ByZWFkIiwiaXNQcm9ncmVzc2l2ZUxvYWRpbmciLCJBcnJheSIsImlzQXJyYXkiLCJmb3JtYXQiLCJpZCIsInZpc1N0YXRlIiwicGFyc2VkQ29uZmlnIiwic2NoZW1hIiwicGFyc2VTYXZlZENvbmZpZyIsIm9sZExheWVycyIsImxheWVycyIsImZpbHRlck5ld2x5QWRkZWRMYXllcnMiLCJmaWx0ZXIiLCJubCIsImZpbmQiLCJvbCIsImZpbmRNYXBCb3VuZHNJZkNlbnRlcmVkIiwiYm91bmRzIiwidW5kZWZpbmVkIiwiQm9vbGVhbiIsIl9yZWYyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwicmVhZE9ubHkiLCJhY3Rpb24iLCJwYXlsb2FkcyIsInJlc3VsdCIsIm5leHRTdGF0ZSIsImZpbGVMb2FkaW5nIiwiZmlsZUxvYWRpbmdQcm9ncmVzcyIsInN0YXRlV2l0aERhdGEiLCJtYXAiLCJwIiwiYWRkRGF0YVRvTWFwQ29tcG9zZWQiLCJ1cGRhdGVPdmVybGF5QmxlbmRpbmciLCJvdmVybGF5QmxlbmRpbmciLCJub3JtYWwiLCJ2YWx1ZSIsInVwZGF0ZURhcmtCYXNlTWFwTGF5ZXJzIiwiZGFya0Jhc2VNYXBFbmFibGVkIiwibGF5ZXJJZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImxheWVyIiwidmlzQ29uZmlnU2V0dGluZ3MiLCJ2aXNDb25maWciLCJ1cGRhdGVMYXllckNvbmZpZyIsImNvbWJpbmVkTWFwU3R5bGVDaGFuZ2VVcGRhdGVyIiwiX21hcFN0YXRlJGdsb2JlIiwibWFwU3R5bGUiLCJnZXRDb2xvck1vZGUiLCJrZXkiLCJfbWFwU3R5bGUkbWFwU3R5bGVzJGsiLCJtYXBTdHlsZXMiLCJjb2xvck1vZGUiLCJwcmV2Q29sb3JNb2RlIiwic3R5bGVUeXBlIiwibmV4dENvbG9yTW9kZSIsIm1hcFN0YXRlIiwiREFSSyIsInNjcmVlbiIsIkxJR0hUIiwiZGFya2VuIiwiZ2xvYmUiLCJlbmFibGVkIiwiYmFzZW1hcCIsImxhYmVscyIsImFkbWluTGluZXMiLCJ3YXRlciIsInN5bmNHbG9iZUNvbmZpZ0NvbG9yc1RvU3R5bGUiLCJfbWFwU3RhdGUkZ2xvYmUyIiwibmV4dFN0eWxlT2JqIiwibmV4dEdsb2JlQ29uZmlnIiwic3VyZmFjZUNvbG9yIiwiYmFja2dyb3VuZEZpbGxDb2xvciIsIndhdGVyQ29sb3IiLCJiYXNlbWFwV2F0ZXJGaWxsQ29sb3IiLCJhZG1pbkxpbmVzQ29sb3IiLCJiYXNlbWFwQWRtaW5MaW5lQ29sb3IiLCJiYXNlbWFwQ29sb3JzIiwic3R5bGUiLCJsYXllckdyb3VwcyIsImNvbWJpbmVkU2V0TWFwVmlld01vZGVVcGRhdGVyIiwiX21hcFN0YXRlJGdsb2JlMyIsImNvbWJpbmVkTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlciIsIm9sZExheWVySW5kZXgiLCJmaW5kSW5kZXgiLCJvbGRMYXllciIsIm5ld0xheWVyIiwiX25ld1N0YXRlJHVpU3RhdGUkbWFwIiwibmV3U3RhdGUiLCJ1aVN0YXRlIiwiaXNTcGxpdCIsInNwbGl0TWFwcyIsImlzTGVnZW5kQWN0aXZlIiwibWFwQ29udHJvbHMiLCJtYXBMZWdlbmQiLCJhY3RpdmUiLCJwYW5lbElkIiwiaW5kZXgiLCJfbmV3VWlTdGF0ZSRtYXBDb250cm8iLCJtYXBTcGxpdE1vZGUiLCJwcmV2TW9kZSIsIm5ld01hcFN0YXRlIiwibmV3VmlzU3RhdGUiLCJTSU5HTEVfTUFQIiwiRFVBTF9NQVAiLCJTV0lQRV9DT01QQVJFIiwiZHVwbGljYXRlIiwibmV3VWlTdGF0ZSIsImRlZmF1bHRSZXBsYWNlRGF0YVRvTWFwT3B0aW9ucyIsInJlcGxhY2VEYXRhSW5NYXBVcGRhdGVyIiwiX3JlZjMiLCJkYXRhc2V0VG9SZXBsYWNlSWQiLCJkYXRhc2V0VG9Vc2UiLCJfcGF5bG9hZCRvcHRpb25zIiwiYWRkRGF0YVRvTWFwT3B0aW9ucyIsImRhdGFJZFRvVXNlIiwicHJlcGFyZWRTdGF0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21iaW5lZC11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICB0b2dnbGVNb2RhbFVwZGF0ZXIsXG4gIGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyIGFzIHVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlcixcbiAgdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyB1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciBhcyB1aVN0YXRlUmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXJcbn0gZnJvbSAnLi91aS1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICB1cGRhdGVWaXNEYXRhVXBkYXRlciBhcyB2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLFxuICBzZXRNYXBJbmZvVXBkYXRlcixcbiAgbGF5ZXJUeXBlQ2hhbmdlVXBkYXRlcixcbiAgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyIGFzIHZpc1N0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICBwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZVxufSBmcm9tICcuL3Zpcy1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciBhcyBzdGF0ZU1hcENvbmZpZ1VwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyBtYXBTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlcixcbiAgc2V0TWFwU3BsaXRNb2RlVXBkYXRlciBhcyBtYXBTdGF0ZVNldE1hcFNwbGl0TW9kZVVwZGF0ZXIsXG4gIHNldE1hcFZpZXdNb2RlVXBkYXRlclxufSBmcm9tICcuL21hcC1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIsXG4gIHJlY2VpdmVNYXBDb25maWdVcGRhdGVyIGFzIHN0eWxlTWFwQ29uZmlnVXBkYXRlclxufSBmcm9tICcuL21hcC1zdHlsZS11cGRhdGVycyc7XG5pbXBvcnQge2ZpbGVzVG9EYXRhUGF5bG9hZH0gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7cGF5bG9hZF8sIGFwcGx5Xywgd2l0aF8sIGlmXywgY29tcG9zZV8sIG1lcmdlXywgcGlja199IGZyb20gJy4vY29tcG9zZXItaGVscGVycyc7XG5pbXBvcnQge01hcFN0YXRlLCBVaVN0YXRlLCBBZGREYXRhVG9NYXBQYXlsb2FkLCBQYXJzZWRDb25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtNYXBTdHlsZX0gZnJvbSAnLi9tYXAtc3R5bGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtQcm92aWRlclN0YXRlfSBmcm9tICcuL3Byb3ZpZGVyLXN0YXRlLXVwZGF0ZXJzJztcbmltcG9ydCB7XG4gIGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uLFxuICBNYXBTdHlsZUNoYW5nZVVwZGF0ZXJBY3Rpb24sXG4gIExheWVyVHlwZUNoYW5nZVVwZGF0ZXJBY3Rpb24sXG4gIFRvZ2dsZVNwbGl0TWFwVXBkYXRlckFjdGlvbixcbiAgUmVwbGFjZURhdGFJbk1hcFBheWxvYWQsXG4gIE1hcFN0YXRlQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcbmltcG9ydCB7TGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7aXNQbGFpbk9iamVjdCwgY29tcHV0ZVNwbGl0TWFwTGF5ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7ZmluZE1hcEJvdW5kc30gZnJvbSAnLi9kYXRhLXV0aWxzJztcbmltcG9ydCB7QkFTRV9NQVBfQ09MT1JfTU9ERVMsIE9WRVJMQVlfQkxFTkRJTkdTLCBOT19NQVBfSUQsIE1hcFNwbGl0TW9kZX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUsIERFRkFVTFRfQkFTRU1BUF9DT0xPUn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcblxuZXhwb3J0IHR5cGUgS2VwbGVyR2xTdGF0ZSA9IHtcbiAgdmlzU3RhdGU6IFZpc1N0YXRlO1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG4gIG1hcFN0eWxlOiBNYXBTdHlsZTtcbiAgdWlTdGF0ZTogVWlTdGF0ZTtcbiAgcHJvdmlkZXJTdGF0ZTogUHJvdmlkZXJTdGF0ZTtcbn07XG5cbi8vIGNvbXBvc2UgYWN0aW9uIHRvIGFwcGx5IHJlc3VsdCBtdWx0aXBsZSByZWR1Y2Vycywgd2l0aCB0aGUgb3V0cHV0IG9mIG9uZVxuXG4vKipcbiAqIFNvbWUgYWN0aW9ucyB3aWxsIGFmZmVjdCB0aGUgZW50aXJlIGtlcGxlci5sZyBpbnN0YW5jZSBzdGF0ZS5cbiAqIFRoZSB1cGRhdGVycyBmb3IgdGhlc2UgYWN0aW9ucyBpcyBleHBvcnRlZCBhcyBgY29tYmluZWRVcGRhdGVyc2AuIFRoZXNlIHVwZGF0ZXIgdGFrZSB0aGUgZW50aXJlIGluc3RhbmNlIHN0YXRlXG4gKiBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIFJlYWQgbW9yZSBhYm91dCBbVXNpbmcgdXBkYXRlcnNdKC4uL2FkdmFuY2VkLXVzYWdlL3VzaW5nLXVwZGF0ZXJzLm1kKVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7Y29tYmluZWRVcGRhdGVyc30gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBhZGQgZGF0YSB0byBtYXAgYWZ0ZXIgcmVjZWl2aW5nIGRhdGEgZnJvbSByZW1vdGUgc291cmNlc1xuICogICAgY2FzZSAnTE9BRF9SRU1PVEVfUkVTT1VSQ0VfU1VDQ0VTUyc6XG4gKiAgICAgIHJldHVybiB7XG4gKiAgICAgICAgLi4uc3RhdGUsXG4gKiAgICAgICAga2VwbGVyR2w6IHtcbiAqICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLFxuICogICAgICAgICAgLy8gcGFzcyBpbiBrZXBsZXIuZ2wgaW5zdGFuY2Ugc3RhdGUgdG8gY29tYmluZWRVcGRhdGVyc1xuICogICAgICAgICAgbWFwOiAgY29tYmluZWRVcGRhdGVycy5hZGREYXRhVG9NYXBVcGRhdGVyKFxuICogICAgICAgICAgIHN0YXRlLmtlcGxlckdsLm1hcCxcbiAqICAgICAgICAgICB7XG4gKiAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gKiAgICAgICAgICAgICAgIGRhdGFzZXRzOiBhY3Rpb24uZGF0YXNldHMsXG4gKiAgICAgICAgICAgICAgIG9wdGlvbnM6IHtyZWFkT25seTogdHJ1ZX0sXG4gKiAgICAgICAgICAgICAgIGNvbmZpZzogYWN0aW9uLmNvbmZpZ1xuICogICAgICAgICAgICAgIH1cbiAqICAgICAgICAgICAgfVxuICogICAgICAgICAgKVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBjb21iaW5lZFVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkQ29uZmlnID0gY29uZmlnID0+XG4gIGlzUGxhaW5PYmplY3QoY29uZmlnKSAmJiBpc1BsYWluT2JqZWN0KGNvbmZpZy5jb25maWcpICYmIGNvbmZpZy52ZXJzaW9uO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEFkZERhdGFUb01hcE9wdGlvbnMgPSB7XG4gIGNlbnRlck1hcDogdHJ1ZSxcbiAga2VlcEV4aXN0aW5nQ29uZmlnOiBmYWxzZSxcbiAgYXV0b0NyZWF0ZUxheWVyczogdHJ1ZSxcbiAgYXV0b0NyZWF0ZVRvb2x0aXBzOiB0cnVlXG59O1xuXG4vKipcbiAqIENvbWJpbmUgZGF0YSBhbmQgZnVsbCBjb25maWd1cmF0aW9uIHVwZGF0ZSBpbiBhIHNpbmdsZSBhY3Rpb25cbiAqXG4gKiBAbWVtYmVyb2YgY29tYmluZWRVcGRhdGVyc1xuICogQHBhcmFtIHtPYmplY3R9IHN0YXRlIGtlcGxlci5nbCBpbnN0YW5jZSBzdGF0ZSwgY29udGFpbmluZyBhbGwgc3VicmVkdWNlciBzdGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvblxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbi5wYXlsb2FkIGB7ZGF0YXNldHMsIG9wdGlvbnMsIGNvbmZpZ31gXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQuZGF0YXNldHMgLSAqKipyZXF1aXJlZCoqIGRhdGFzZXRzIGNhbiBiZSBhIGRhdGFzZXQgb3IgYW4gYXJyYXkgb2YgZGF0YXNldHNcbiAqIEVhY2ggZGF0YXNldCBvYmplY3QgbmVlZHMgdG8gaGF2ZSBgaW5mb2AgYW5kIGBkYXRhYCBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBbYWN0aW9uLnBheWxvYWQub3B0aW9uc10gb3B0aW9uIG9iamVjdCBge2NlbnRlck1hcDogdHJ1ZSwgcGFkZGluZzoge2xlZnQ6IDMwMH19YFxuICogQHBhcmFtIFthY3Rpb24ucGF5bG9hZC5jb25maWddIG1hcCBjb25maWdcbiAqIEBwYXJhbSBbYWN0aW9uLnBheWxvYWQuaW5mb10gbWFwIGluZm8gY29udGFpbnMgdGl0bGUgYW5kIGRlc2NyaXB0aW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEYXRhc2V0XG4gKiBAcHJvcGVydHkgaW5mbyAtaW5mbyBvZiBhIGRhdGFzZXRcbiAqIEBwcm9wZXJ0eSBpbmZvLmlkIC0gaWQgb2YgdGhpcyBkYXRhc2V0LiBJZiBjb25maWcgaXMgZGVmaW5lZCwgYGlkYCBzaG91bGQgbWF0Y2hlcyB0aGUgYGRhdGFJZGAgaW4gY29uZmlnLlxuICogQHByb3BlcnR5IGluZm8ubGFiZWwgLSBBIGRpc3BsYXkgbmFtZSBvZiB0aGlzIGRhdGFzZXRcbiAqIEBwcm9wZXJ0eSBkYXRhIC0gKioqcmVxdWlyZWQqKiBUaGUgZGF0YSBvYmplY3QsIGluIGEgdGFidWxhciBmb3JtYXQgd2l0aCAyIHByb3BlcnRpZXMgYGZpZWxkc2AgYW5kIGByb3dzYFxuICogQHByb3BlcnR5IGRhdGEuZmllbGRzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiBmaWVsZHMsXG4gKiBAcHJvcGVydHkgZGF0YS5maWVsZHMubmFtZSAtICoqKnJlcXVpcmVkKiogTmFtZSBvZiB0aGUgZmllbGQsXG4gKiBAcHJvcGVydHkgZGF0YS5yb3dzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiByb3dzLCBpbiBhIHRhYnVsYXIgZm9ybWF0IHdpdGggYGZpZWxkc2AgYW5kIGByb3dzYFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZERhdGFUb01hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICB7cGF5bG9hZH06IHtwYXlsb2FkOiBBZGREYXRhVG9NYXBQYXlsb2FkfVxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGNvbnN0IHtkYXRhc2V0cywgY29uZmlnLCBpbmZvfSA9IHBheWxvYWQ7XG5cbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAuLi5kZWZhdWx0QWRkRGF0YVRvTWFwT3B0aW9ucyxcbiAgICAuLi5wYXlsb2FkLm9wdGlvbnNcbiAgfTtcblxuICAvLyBjaGVjayBpZiBwcm9ncmVzc2l2ZSBsb2FkaW5nIGRhdGFzZXQgYnkgYmF0Y2hlcywgYW5kIHVwZGF0ZSB2aXNTdGF0ZSBkaXJlY3RseVxuICBjb25zdCBpc1Byb2dyZXNzaXZlTG9hZGluZyA9XG4gICAgQXJyYXkuaXNBcnJheShkYXRhc2V0cykgJiZcbiAgICBkYXRhc2V0c1swXT8uaW5mby5mb3JtYXQgPT09ICdhcnJvdycgJiZcbiAgICBkYXRhc2V0c1swXT8uaW5mby5pZCAmJlxuICAgIGRhdGFzZXRzWzBdPy5pbmZvLmlkIGluIHN0YXRlLnZpc1N0YXRlLmRhdGFzZXRzO1xuICBpZiAoaXNQcm9ncmVzc2l2ZUxvYWRpbmcpIHtcbiAgICByZXR1cm4gY29tcG9zZV88S2VwbGVyR2xTdGF0ZT4oW1xuICAgICAgcGlja18oJ3Zpc1N0YXRlJykoXG4gICAgICAgIGFwcGx5XzxWaXNTdGF0ZSwgYW55Pih2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLCB7XG4gICAgICAgICAgZGF0YXNldHMsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBjb25maWdcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICBdKShzdGF0ZSk7XG4gIH1cblxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGxldCBwYXJzZWRDb25maWc6IFBhcnNlZENvbmZpZyA9IGNvbmZpZztcblxuICBpZiAoaXNWYWxpZENvbmZpZyhjb25maWcpKSB7XG4gICAgLy8gaWYgcGFzc2VkIGluIHNhdmVkIGNvbmZpZ1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBwYXJzZWRDb25maWcgPSBzdGF0ZS52aXNTdGF0ZS5zY2hlbWEucGFyc2VTYXZlZENvbmZpZyhjb25maWcpO1xuICB9XG4gIGNvbnN0IG9sZExheWVycyA9IHN0YXRlLnZpc1N0YXRlLmxheWVycztcbiAgY29uc3QgZmlsdGVyTmV3bHlBZGRlZExheWVycyA9IChsYXllcnM6IExheWVyW10pID0+XG4gICAgbGF5ZXJzLmZpbHRlcihubCA9PiAhb2xkTGF5ZXJzLmZpbmQob2wgPT4gb2wgPT09IG5sKSk7XG5cbiAgLy8gUmV0dXJucyB1bmRlZmluZWQgaWYgbm90IGZvdW5kLCB0byBtYWtlIHR5cGVzY3JpcHQgaGFwcHlcbiAgY29uc3QgZmluZE1hcEJvdW5kc0lmQ2VudGVyZWQgPSAobGF5ZXJzOiBMYXllcltdKSA9PiB7XG4gICAgY29uc3QgYm91bmRzID0gb3B0aW9ucy5jZW50ZXJNYXAgJiYgZmluZE1hcEJvdW5kcyhsYXllcnMpO1xuICAgIHJldHVybiBib3VuZHMgPyBib3VuZHMgOiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgcmV0dXJuIGNvbXBvc2VfPEtlcGxlckdsU3RhdGU+KFtcbiAgICBwaWNrXygndmlzU3RhdGUnKShcbiAgICAgIC8vIHRoaXMgcGFydCBjYW4gYmUgYXN5bmNcbiAgICAgIGFwcGx5XzxWaXNTdGF0ZSwgYW55Pih2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLCB7XG4gICAgICAgIGRhdGFzZXRzLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBjb25maWc6IHBhcnNlZENvbmZpZ1xuICAgICAgfSlcbiAgICApLFxuXG4gICAgaWZfKEJvb2xlYW4oaW5mbyksIHBpY2tfKCd2aXNTdGF0ZScpKGFwcGx5XzxWaXNTdGF0ZSwgYW55PihzZXRNYXBJbmZvVXBkYXRlciwge2luZm99KSkpLFxuICAgIC8vIE5vdGUgdGhhdCBmaXQgYm91bmRzIGhlcmUgd29uJ3QgYmUgY2FsbGVkIGluIGNhc2UgZGF0YXNldHMgYXJlIGNyZWF0ZWQgaW4gVGFza3MuXG4gICAgLy8gQSBzZXBhcmF0ZSBUYXNrIHRvIHVwZGF0ZSBib3VuZHMgaXMgY3JlYXRlZCBvbmNlIHRoZSBkYXRhc2V0cyBhcmUgcmVhZHkuXG4gICAgd2l0aF8oKHt2aXNTdGF0ZX0pID0+XG4gICAgICBwaWNrXygnbWFwU3RhdGUnKShcbiAgICAgICAgYXBwbHlfKFxuICAgICAgICAgIHN0YXRlTWFwQ29uZmlnVXBkYXRlcixcbiAgICAgICAgICBwYXlsb2FkXyh7XG4gICAgICAgICAgICBjb25maWc6IHBhcnNlZENvbmZpZyxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBib3VuZHM6IGZpbmRNYXBCb3VuZHNJZkNlbnRlcmVkKGZpbHRlck5ld2x5QWRkZWRMYXllcnModmlzU3RhdGUubGF5ZXJzKSlcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKSxcbiAgICBwaWNrXygnbWFwU3R5bGUnKShhcHBseV8oc3R5bGVNYXBDb25maWdVcGRhdGVyLCBwYXlsb2FkXyh7Y29uZmlnOiBwYXJzZWRDb25maWcsIG9wdGlvbnN9KSkpLFxuICAgIHBpY2tfKCd1aVN0YXRlJykoXG4gICAgICBhcHBseV8odWlTdGF0ZVJlY2VpdmVNYXBDb25maWdVcGRhdGVyLCBwYXlsb2FkXyh7Y29uZmlnOiBwYXJzZWRDb25maWcsIG9wdGlvbnN9KSlcbiAgICApLFxuICAgIHBpY2tfKCd1aVN0YXRlJykoYXBwbHlfKHVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlciwgcGF5bG9hZF8obnVsbCkpKSxcblxuICAgIHBpY2tfKCd1aVN0YXRlJykoYXBwbHlfKHRvZ2dsZU1vZGFsVXBkYXRlciwgcGF5bG9hZF8obnVsbCkpKSxcbiAgICBwaWNrXygndWlTdGF0ZScpKFxuICAgICAgbWVyZ2VfKFxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3JlYWRPbmx5JylcbiAgICAgICAgICA/IHtyZWFkT25seTogb3B0aW9ucy5yZWFkT25seX1cbiAgICAgICAgICA6IHt9XG4gICAgICApXG4gICAgKVxuICBdKShzdGF0ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICBhY3Rpb246IGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgLy8gc3RpbGwgbW9yZSB0byBsb2FkXG4gIGNvbnN0IHBheWxvYWRzID0gZmlsZXNUb0RhdGFQYXlsb2FkKGFjdGlvbi5yZXN1bHQpO1xuICBjb25zdCBuZXh0U3RhdGUgPSBjb21wb3NlXyhbXG4gICAgcGlja18oJ3Zpc1N0YXRlJykoXG4gICAgICBtZXJnZV8oe1xuICAgICAgICBmaWxlTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGZpbGVMb2FkaW5nUHJvZ3Jlc3M6IHt9XG4gICAgICB9KVxuICAgIClcbiAgXSkoc3RhdGUpO1xuICAvLyBtYWtlIG11bHRpcGxlIGFkZCBkYXRhIHRvIG1hcCBjYWxsc1xuICBjb25zdCBzdGF0ZVdpdGhEYXRhID0gY29tcG9zZV8ocGF5bG9hZHMubWFwKHAgPT4gYXBwbHlfKGFkZERhdGFUb01hcFVwZGF0ZXIsIHBheWxvYWRfKHApKSkpKFxuICAgIG5leHRTdGF0ZVxuICApO1xuICByZXR1cm4gc3RhdGVXaXRoRGF0YSBhcyBLZXBsZXJHbFN0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZERhdGFUb01hcENvbXBvc2VkID0gYWRkRGF0YVRvTWFwVXBkYXRlcjtcblxuLyoqXG4gKiBIZWxwZXIgd2hpY2ggdXBkYXRlcyBtYXAgb3ZlcmxheSBibGVuZGluZyBtb2RlIGluIHZpc1N0YXRlLFxuICogYnV0IG9ubHkgaWYgaXQncyBub3QgY3VycmVudGx5IGluIHRoZSBgbm9ybWFsYCBtb2RlLlxuICovXG5jb25zdCB1cGRhdGVPdmVybGF5QmxlbmRpbmcgPSBvdmVybGF5QmxlbmRpbmcgPT4gdmlzU3RhdGUgPT4ge1xuICBpZiAodmlzU3RhdGUub3ZlcmxheUJsZW5kaW5nICE9PSBPVkVSTEFZX0JMRU5ESU5HUy5ub3JtYWwudmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udmlzU3RhdGUsXG4gICAgICBvdmVybGF5QmxlbmRpbmdcbiAgICB9O1xuICB9XG4gIHJldHVybiB2aXNTdGF0ZTtcbn07XG5cbi8qKlxuICogSGVscGVyIHdoaWNoIHVwZGF0ZXMgYGRhcmtCYXNlTWFwRW5hYmxlZGAgaW4gYWxsIHRoZSBsYXllcnMgaW4gdmlzU3RhdGUgd2hpY2hcbiAqIGhhdmUgdGhpcyBjb25maWcgc2V0dGluZyAob3IgaW4gb25lIHNwZWNpZmljIGxheWVyIGlmIHRoZSBgbGF5ZXJJZGAgcGFyYW0gaXMgcHJvdmlkZWQpLlxuICovXG5jb25zdCB1cGRhdGVEYXJrQmFzZU1hcExheWVycyA9XG4gIChkYXJrQmFzZU1hcEVuYWJsZWQ6IGJvb2xlYW4sIGxheWVySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PlxuICB2aXNTdGF0ZSA9PiAoe1xuICAgIC4uLnZpc1N0YXRlLFxuICAgIGxheWVyczogdmlzU3RhdGUubGF5ZXJzLm1hcChsYXllciA9PiB7XG4gICAgICBpZiAoIWxheWVySWQgfHwgbGF5ZXIuaWQgPT09IGxheWVySWQpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsYXllci52aXNDb25maWdTZXR0aW5ncywgJ2RhcmtCYXNlTWFwRW5hYmxlZCcpKSB7XG4gICAgICAgICAgY29uc3Qge3Zpc0NvbmZpZ30gPSBsYXllci5jb25maWc7XG4gICAgICAgICAgcmV0dXJuIGxheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgICAgIHZpc0NvbmZpZzogey4uLnZpc0NvbmZpZywgZGFya0Jhc2VNYXBFbmFibGVkfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbGF5ZXI7XG4gICAgfSlcbiAgfSk7XG5cbi8qKlxuICogVXBkYXRlciB0aGF0IGNoYW5nZXMgdGhlIG1hcCBzdHlsZSBieSBjYWxsaW5nIG1hcFN0eWxlQ2hhbmdlVXBkYXRlciBvbiB2aXNTdGF0ZS5cbiAqIEluIGFkZGl0aW9uIHRvIHRoYXQsIGl0IGRvZXMgdGhlIGZvbGxvd2luZzpcbiAqXG4gKiAgIDEuIFVwZGF0ZSBtYXAgb3ZlcmxheSBibGVuZGluZyBtb2RlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZVxuICogICAgICBiYXNlIG1hcCwgYnV0IG9ubHkgaWYgaXQncyBub3QgaW4gdGhlIGBub3JtYWxgIG1vZGUuXG4gKlxuICogICAyLiBVcGRhdGUgYWxsIHRoZSBsYXllcnMgd2hpY2ggaGF2ZSB0aGUgYGRhcmtCYXNlTWFwRW5hYmxlZGAgY29uZmlnIHNldHRpbmdcbiAqICAgICAgYWRqdXN0aW5nIGl0IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZSBiYXNlIG1hcC5cbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBjb21iaW5lZE1hcFN0eWxlQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTWFwU3R5bGVDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3Qge3BheWxvYWR9ID0gYWN0aW9uO1xuICBjb25zdCB7bWFwU3R5bGV9ID0gc3RhdGU7XG4gIGNvbnN0IGdldENvbG9yTW9kZSA9IGtleSA9PiBtYXBTdHlsZS5tYXBTdHlsZXNba2V5XT8uY29sb3JNb2RlO1xuICBjb25zdCBwcmV2Q29sb3JNb2RlID0gZ2V0Q29sb3JNb2RlKG1hcFN0eWxlLnN0eWxlVHlwZSk7XG4gIGNvbnN0IG5leHRDb2xvck1vZGUgPSBnZXRDb2xvck1vZGUocGF5bG9hZC5zdHlsZVR5cGUpO1xuICBsZXQge3Zpc1N0YXRlLCBtYXBTdGF0ZX0gPSBzdGF0ZTtcbiAgaWYgKG5leHRDb2xvck1vZGUgIT09IHByZXZDb2xvck1vZGUpIHtcbiAgICBzd2l0Y2ggKG5leHRDb2xvck1vZGUpIHtcbiAgICAgIGNhc2UgQkFTRV9NQVBfQ09MT1JfTU9ERVMuREFSSzpcbiAgICAgICAgdmlzU3RhdGUgPSBjb21wb3NlXyhbXG4gICAgICAgICAgdXBkYXRlT3ZlcmxheUJsZW5kaW5nKE9WRVJMQVlfQkxFTkRJTkdTLnNjcmVlbi52YWx1ZSksXG4gICAgICAgICAgdXBkYXRlRGFya0Jhc2VNYXBMYXllcnModHJ1ZSlcbiAgICAgICAgXSkodmlzU3RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQkFTRV9NQVBfQ09MT1JfTU9ERVMuTElHSFQ6XG4gICAgICAgIHZpc1N0YXRlID0gY29tcG9zZV8oW1xuICAgICAgICAgIHVwZGF0ZU92ZXJsYXlCbGVuZGluZyhPVkVSTEFZX0JMRU5ESU5HUy5kYXJrZW4udmFsdWUpLFxuICAgICAgICAgIHVwZGF0ZURhcmtCYXNlTWFwTGF5ZXJzKGZhbHNlKVxuICAgICAgICBdKSh2aXNTdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gIH1cblxuICAvLyBVcGRhdGUgZ2xvYmUgY29uZmlnIGNvbG9ycyB3aGVuIHN0eWxlIGNoYW5nZXMgYW5kIGdsb2JlIGlzIGVuYWJsZWRcbiAgaWYgKG1hcFN0YXRlLmdsb2JlPy5lbmFibGVkKSB7XG4gICAgLy8gU3dpdGNoaW5nIGZyb20gXCJObyBCYXNlbWFwXCIgdG8gYSBiYXNlbWFwIC0gcmVzdG9yZSBiYXNlbWFwIHN1Yi10b2dnbGVzXG4gICAgaWYgKHBheWxvYWQuc3R5bGVUeXBlICE9PSBOT19NQVBfSUQgJiYgbWFwU3R5bGUuc3R5bGVUeXBlID09PSBOT19NQVBfSUQpIHtcbiAgICAgIG1hcFN0YXRlID0ge1xuICAgICAgICAuLi5tYXBTdGF0ZSxcbiAgICAgICAgZ2xvYmU6IHtcbiAgICAgICAgICAuLi5tYXBTdGF0ZS5nbG9iZSxcbiAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgIC4uLm1hcFN0YXRlLmdsb2JlLmNvbmZpZyxcbiAgICAgICAgICAgIGJhc2VtYXA6IHRydWUsXG4gICAgICAgICAgICBsYWJlbHM6IHRydWUsXG4gICAgICAgICAgICBhZG1pbkxpbmVzOiB0cnVlLFxuICAgICAgICAgICAgd2F0ZXI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIG1hcFN0YXRlID0gc3luY0dsb2JlQ29uZmlnQ29sb3JzVG9TdHlsZShtYXBTdGF0ZSwgbWFwU3R5bGUsIHBheWxvYWQuc3R5bGVUeXBlKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgdmlzU3RhdGUsXG4gICAgbWFwU3RhdGUsXG4gICAgbWFwU3R5bGU6IG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihtYXBTdHlsZSwge3BheWxvYWQ6IHsuLi5wYXlsb2FkfX0pXG4gIH07XG59O1xuXG4vKipcbiAqIERlcml2ZSBnbG9iZSBiYXNlbWFwIGNvbG9ycyAoc3VyZmFjZSAvIHdhdGVyIC8gYWRtaW4gbGluZXMpIGZyb20gYSBtYXAgc3R5bGUgYW5kXG4gKiByZXR1cm4gYW4gdXBkYXRlZCBtYXBTdGF0ZSB3aXRoIHRob3NlIGNvbG9ycyB3cml0dGVuIGludG8gYGdsb2JlLmNvbmZpZ2AuIFVzZWQgYm90aFxuICogd2hlbiB0aGUgYmFzZSBtYXAgc3R5bGUgY2hhbmdlcyBhbmQgd2hlbiBlbnRlcmluZyBnbG9iZSBtb2RlLCBzbyB0aGUgZ2xvYmUgYWx3YXlzXG4gKiByZWZsZWN0cyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGJhc2VtYXAgaW5zdGVhZCBvZiB0aGUgc3RhdGljIERFRkFVTFRfR0xPQkVfQ09ORklHLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3luY0dsb2JlQ29uZmlnQ29sb3JzVG9TdHlsZShcbiAgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICBtYXBTdHlsZTogTWFwU3R5bGUsXG4gIHN0eWxlVHlwZTogc3RyaW5nXG4pOiBNYXBTdGF0ZSB7XG4gIGlmICghbWFwU3RhdGUuZ2xvYmU/LmVuYWJsZWQpIHtcbiAgICByZXR1cm4gbWFwU3RhdGU7XG4gIH1cblxuICBjb25zdCBuZXh0U3R5bGVPYmogPSBtYXBTdHlsZS5tYXBTdHlsZXNbc3R5bGVUeXBlXTtcbiAgY29uc3QgbmV4dEdsb2JlQ29uZmlnID0gey4uLm1hcFN0YXRlLmdsb2JlLmNvbmZpZ307XG5cbiAgaWYgKHN0eWxlVHlwZSA9PT0gTk9fTUFQX0lEKSB7XG4gICAgbmV4dEdsb2JlQ29uZmlnLmJhc2VtYXAgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcubGFiZWxzID0gZmFsc2U7XG4gICAgbmV4dEdsb2JlQ29uZmlnLmFkbWluTGluZXMgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcud2F0ZXIgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcuc3VyZmFjZUNvbG9yID0gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhY2tncm91bmRGaWxsQ29sb3I7XG4gICAgbmV4dEdsb2JlQ29uZmlnLndhdGVyQ29sb3IgPSBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcFdhdGVyRmlsbENvbG9yO1xuICAgIG5leHRHbG9iZUNvbmZpZy5hZG1pbkxpbmVzQ29sb3IgPSBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcEFkbWluTGluZUNvbG9yO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGJhc2VtYXBDb2xvcnMgPSBuZXh0U3R5bGVPYmpcbiAgICAgID8gZ2V0QmFzZW1hcENvbG9yc0ZvclN0eWxlKHN0eWxlVHlwZSwge1xuICAgICAgICAgIHN0eWxlOiBuZXh0U3R5bGVPYmouc3R5bGUsXG4gICAgICAgICAgbGF5ZXJHcm91cHM6IG5leHRTdHlsZU9iai5sYXllckdyb3Vwc1xuICAgICAgICB9KVxuICAgICAgOiAvLyBTdHlsZSBvYmplY3Qgbm90IHlldCBsb2FkZWQgLSB1c2Uga25vd24gcHJlc2V0cyBieSBzdHlsZSB0eXBlXG4gICAgICAgIGdldEJhc2VtYXBDb2xvcnNGb3JTdHlsZShzdHlsZVR5cGUpO1xuICAgIG5leHRHbG9iZUNvbmZpZy5zdXJmYWNlQ29sb3IgPSBiYXNlbWFwQ29sb3JzLmJhY2tncm91bmRGaWxsQ29sb3I7XG4gICAgbmV4dEdsb2JlQ29uZmlnLndhdGVyQ29sb3IgPSBiYXNlbWFwQ29sb3JzLmJhc2VtYXBXYXRlckZpbGxDb2xvcjtcbiAgICBuZXh0R2xvYmVDb25maWcuYWRtaW5MaW5lc0NvbG9yID0gYmFzZW1hcENvbG9ycy5iYXNlbWFwQWRtaW5MaW5lQ29sb3I7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLm1hcFN0YXRlLFxuICAgIGdsb2JlOiB7XG4gICAgICAuLi5tYXBTdGF0ZS5nbG9iZSxcbiAgICAgIGNvbmZpZzogbmV4dEdsb2JlQ29uZmlnXG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFVwZGF0ZXIgdGhhdCBzd2l0Y2hlcyB0aGUgbWFwIHZpZXcgbW9kZSAoMkQgLyAzRCAvIEdsb2JlKS4gUnVucyB0aGUgYmFzZSBtYXAtc3RhdGVcbiAqIHVwZGF0ZXIgYW5kLCB3aGVuIGVudGVyaW5nIGdsb2JlIG1vZGUsIHN5bmNzIHRoZSBnbG9iZSBiYXNlbWFwIGNvbG9ycyB0byB0aGVcbiAqIGN1cnJlbnRseSBzZWxlY3RlZCBtYXAgc3R5bGUgc28gdGhlIGdsb2JlIGRvZXNuJ3Qgc2hvdyBzdGFsZSBkZWZhdWx0IGNvbG9ycy5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbWJpbmVkU2V0TWFwVmlld01vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogS2VwbGVyR2xTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuU2V0TWFwVmlld01vZGVVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgbGV0IG1hcFN0YXRlID0gc2V0TWFwVmlld01vZGVVcGRhdGVyKHN0YXRlLm1hcFN0YXRlLCBhY3Rpb24pO1xuXG4gIGlmIChtYXBTdGF0ZS5nbG9iZT8uZW5hYmxlZCkge1xuICAgIG1hcFN0YXRlID0gc3luY0dsb2JlQ29uZmlnQ29sb3JzVG9TdHlsZShtYXBTdGF0ZSwgc3RhdGUubWFwU3R5bGUsIHN0YXRlLm1hcFN0eWxlLnN0eWxlVHlwZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcFN0YXRlXG4gIH07XG59O1xuXG4vKipcbiAqIFVwZGF0ZXIgdGhhdCBjaGFuZ2VzIHRoZSBsYXllciB0eXBlIGJ5IGNhbGxpbmcgYGxheWVyVHlwZUNoYW5nZVVwZGF0ZXJgIG9uIHZpc1N0YXRlLlxuICogSW4gYWRkaXRpb24gdG8gdGhhdCwgaWYgdGhlIG5ldyBsYXllciB0eXBlIGhhcyB0aGUgYGRhcmtCYXNlTWFwRW5hYmxlZGAgY29uZmlnXG4gKiBzZXR0aW5nLCB3ZSBhZGp1c3QgaXQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBjb2xvck1vZGUgb2YgdGhlIGJhc2UgbWFwLnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbWJpbmVkTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGxldCB7dmlzU3RhdGV9ID0gc3RhdGU7XG4gIGNvbnN0IG9sZExheWVySW5kZXggPSB2aXNTdGF0ZS5sYXllcnMuZmluZEluZGV4KGxheWVyID0+IGxheWVyID09PSBhY3Rpb24ub2xkTGF5ZXIpO1xuICB2aXNTdGF0ZSA9IGxheWVyVHlwZUNoYW5nZVVwZGF0ZXIodmlzU3RhdGUsIGFjdGlvbik7XG4gIGNvbnN0IG5ld0xheWVyID0gdmlzU3RhdGUubGF5ZXJzW29sZExheWVySW5kZXhdO1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5ld0xheWVyPy52aXNDb25maWdTZXR0aW5ncywgJ2RhcmtCYXNlTWFwRW5hYmxlZCcpKSB7XG4gICAgY29uc3Qge21hcFN0eWxlfSA9IHN0YXRlO1xuICAgIGNvbnN0IHtjb2xvck1vZGV9ID0gbWFwU3R5bGUubWFwU3R5bGVzW21hcFN0eWxlLnN0eWxlVHlwZV07XG4gICAgY29uc3Qge2RhcmtCYXNlTWFwRW5hYmxlZH0gPSBuZXdMYXllci5jb25maWcudmlzQ29uZmlnO1xuICAgIHN3aXRjaCAoY29sb3JNb2RlKSB7XG4gICAgICBjYXNlIEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUks6XG4gICAgICAgIGlmICghZGFya0Jhc2VNYXBFbmFibGVkKSB7XG4gICAgICAgICAgdmlzU3RhdGUgPSB1cGRhdGVEYXJrQmFzZU1hcExheWVycyh0cnVlLCBuZXdMYXllci5pZCkodmlzU3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVDpcbiAgICAgICAgaWYgKGRhcmtCYXNlTWFwRW5hYmxlZCkge1xuICAgICAgICAgIHZpc1N0YXRlID0gdXBkYXRlRGFya0Jhc2VNYXBMYXllcnMoZmFsc2UsIG5ld0xheWVyLmlkKSh2aXNTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHZpc1N0YXRlXG4gIH07XG59O1xuXG4vKipcbiAqIE1ha2UgbWFwTGVnZW5kIGFjdGl2ZSB3aGVuIHRvZ2dsZVNwbGl0TWFwIGFjdGlvbiBpcyBjYWxsZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogVG9nZ2xlU3BsaXRNYXBVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgdmlzU3RhdGU6IHZpc1N0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLnZpc1N0YXRlLCBhY3Rpb24pLFxuICAgIHVpU3RhdGU6IHVpU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIoc3RhdGUudWlTdGF0ZSksXG4gICAgbWFwU3RhdGU6IG1hcFN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLm1hcFN0YXRlKVxuICB9O1xuXG4gIGNvbnN0IGlzU3BsaXQgPSBuZXdTdGF0ZS52aXNTdGF0ZS5zcGxpdE1hcHMubGVuZ3RoICE9PSAwO1xuICBjb25zdCBpc0xlZ2VuZEFjdGl2ZSA9IG5ld1N0YXRlLnVpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uYWN0aXZlO1xuICBpZiAoaXNTcGxpdCAmJiAhaXNMZWdlbmRBY3RpdmUpIHtcbiAgICBuZXdTdGF0ZS51aVN0YXRlID0gdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIobmV3U3RhdGUudWlTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge3BhbmVsSWQ6ICdtYXBMZWdlbmQnLCBpbmRleDogYWN0aW9uLnBheWxvYWR9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIFNldCBtYXAgc3BsaXQgbW9kZSB1cGRhdGVyIC0gY29vcmRpbmF0ZXMgc3RhdGUgY2hhbmdlcyBhY3Jvc3MgdmlzU3RhdGUsIG1hcFN0YXRlLCBhbmQgdWlTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0TWFwU3BsaXRNb2RlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldE1hcFNwbGl0TW9kZVVwZGF0ZXJBY3Rpb25cbik6IEtlcGxlckdsU3RhdGUgPT4ge1xuICBjb25zdCB7bWFwU3BsaXRNb2RlfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBjb25zdCBwcmV2TW9kZSA9IHN0YXRlLm1hcFN0YXRlLm1hcFNwbGl0TW9kZTtcblxuICBpZiAobWFwU3BsaXRNb2RlID09PSBwcmV2TW9kZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IG5ld01hcFN0YXRlID0gbWFwU3RhdGVTZXRNYXBTcGxpdE1vZGVVcGRhdGVyKHN0YXRlLm1hcFN0YXRlLCBhY3Rpb24pO1xuXG4gIGxldCBuZXdWaXNTdGF0ZSA9IHsuLi5zdGF0ZS52aXNTdGF0ZX07XG5cbiAgc3dpdGNoIChtYXBTcGxpdE1vZGUpIHtcbiAgICBjYXNlIE1hcFNwbGl0TW9kZS5TSU5HTEVfTUFQOlxuICAgICAgbmV3VmlzU3RhdGUgPSB7XG4gICAgICAgIC4uLm5ld1Zpc1N0YXRlLFxuICAgICAgICBzcGxpdE1hcHM6IFtdXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuRFVBTF9NQVA6XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuU1dJUEVfQ09NUEFSRTpcbiAgICAgIGlmIChwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVApIHtcbiAgICAgICAgbmV3VmlzU3RhdGUgPSB7XG4gICAgICAgICAgLi4ubmV3VmlzU3RhdGUsXG4gICAgICAgICAgc3BsaXRNYXBzOiBjb21wdXRlU3BsaXRNYXBMYXllcnMobmV3VmlzU3RhdGUubGF5ZXJzLCB7XG4gICAgICAgICAgICBkdXBsaWNhdGU6IG1hcFNwbGl0TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkVcbiAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgbGV0IG5ld1VpU3RhdGUgPSB1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLnVpU3RhdGUpO1xuXG4gIGNvbnN0IGlzU3BsaXQgPSBuZXdWaXNTdGF0ZS5zcGxpdE1hcHMubGVuZ3RoICE9PSAwO1xuICBjb25zdCBpc0xlZ2VuZEFjdGl2ZSA9IG5ld1VpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uYWN0aXZlO1xuICBpZiAoaXNTcGxpdCAmJiAhaXNMZWdlbmRBY3RpdmUpIHtcbiAgICBuZXdVaVN0YXRlID0gdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIobmV3VWlTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge3BhbmVsSWQ6ICdtYXBMZWdlbmQnLCBpbmRleDogMH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbWFwU3RhdGU6IG5ld01hcFN0YXRlLFxuICAgIHZpc1N0YXRlOiBuZXdWaXNTdGF0ZSxcbiAgICB1aVN0YXRlOiBuZXdVaVN0YXRlXG4gIH07XG59O1xuXG5jb25zdCBkZWZhdWx0UmVwbGFjZURhdGFUb01hcE9wdGlvbnMgPSB7XG4gIGtlZXBFeGlzdGluZ0NvbmZpZzogdHJ1ZSxcbiAgY2VudGVyTWFwOiB0cnVlLFxuICBhdXRvQ3JlYXRlTGF5ZXJzOiBmYWxzZVxufTtcblxuLyoqXG4gKiBVcGRhdGVyIHJlcGxhY2UgYSBkYXRhc2V0IGluIHN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCByZXBsYWNlRGF0YUluTWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIHtwYXlsb2FkfToge3BheWxvYWQ6IFJlcGxhY2VEYXRhSW5NYXBQYXlsb2FkfVxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGNvbnN0IHtkYXRhc2V0VG9SZXBsYWNlSWQsIGRhdGFzZXRUb1VzZSwgb3B0aW9ucyA9IHt9fSA9IHBheWxvYWQ7XG4gIGNvbnN0IGFkZERhdGFUb01hcE9wdGlvbnMgPSB7Li4uZGVmYXVsdFJlcGxhY2VEYXRhVG9NYXBPcHRpb25zLCAuLi5vcHRpb25zfTtcblxuICAvLyBjaGVjayBpZiBkYXRhc2V0IGlzIHRoZXJlXG4gIGlmICghc3RhdGUudmlzU3RhdGUuZGF0YXNldHNbZGF0YXNldFRvUmVwbGFjZUlkXSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICAvLyBkYXRhc2V0VG9Vc2UgaXMgUHJvdG9EYXRhc2V0XG4gIGNvbnN0IGRhdGFJZFRvVXNlID0gZGF0YXNldFRvVXNlLmluZm8uaWQ7XG4gIGlmICghZGF0YUlkVG9Vc2UpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgLy8gcmVtb3ZlIGRhdGFzZXQgYW5kIHB1dCBkZXBlbmRlbmNpZXMgaW4gdG9CZU1lcmdlZFxuICBjb25zdCBwcmVwYXJlZFN0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIHZpc1N0YXRlOiBwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZShzdGF0ZS52aXNTdGF0ZSwgZGF0YXNldFRvUmVwbGFjZUlkLCBkYXRhSWRUb1VzZSlcbiAgfTtcblxuICBjb25zdCBuZXh0U3RhdGUgPSBhZGREYXRhVG9NYXBVcGRhdGVyKFxuICAgIHByZXBhcmVkU3RhdGUsXG4gICAgcGF5bG9hZF8oe1xuICAgICAgZGF0YXNldHM6IGRhdGFzZXRUb1VzZSxcbiAgICAgIC8vIHNob3VsZCB6b29tIHRvIG5ldyBkYXRhc2V0XG4gICAgICBvcHRpb25zOiBhZGREYXRhVG9NYXBPcHRpb25zXG4gICAgfSlcbiAgKTtcblxuICByZXR1cm4gbmV4dFN0YXRlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDQTs7QUFFQSxTQUNFQSxrQkFBa0IsRUFDbEJDLHVCQUF1QixJQUFJQyw4QkFBOEIsRUFDekRDLHVCQUF1QixFQUN2QkMscUJBQXFCLElBQUlDLDRCQUE0QixFQUNyREMsdUJBQXVCLElBQUlDLDhCQUE4QixRQUNwRCxxQkFBcUI7QUFDNUIsU0FDRUMsb0JBQW9CLElBQUlDLDRCQUE0QixFQUNwREMsaUJBQWlCLEVBQ2pCQyxzQkFBc0IsRUFDdEJQLHFCQUFxQixJQUFJUSw2QkFBNkIsRUFDdERDLDZCQUE2QixRQUN4QixzQkFBc0I7QUFDN0IsU0FDRVAsdUJBQXVCLElBQUlRLHFCQUFxQixFQUNoRFYscUJBQXFCLElBQUlXLDZCQUE2QixFQUN0REMsc0JBQXNCLElBQUlDLDhCQUE4QixFQUN4REMscUJBQXFCLFFBQ2hCLHNCQUFzQjtB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
|
|
484
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0b2dnbGVNb2RhbFVwZGF0ZXIiLCJsb2FkRmlsZXNTdWNjZXNzVXBkYXRlciIsInVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlciIsInRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwidWlTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsInJlY2VpdmVNYXBDb25maWdVcGRhdGVyIiwidWlTdGF0ZVJlY2VpdmVNYXBDb25maWdVcGRhdGVyIiwidXBkYXRlVmlzRGF0YVVwZGF0ZXIiLCJ2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyIiwic2V0TWFwSW5mb1VwZGF0ZXIiLCJsYXllclR5cGVDaGFuZ2VVcGRhdGVyIiwidmlzU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZSIsInN0YXRlTWFwQ29uZmlnVXBkYXRlciIsIm1hcFN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwic2V0TWFwU3BsaXRNb2RlVXBkYXRlciIsIm1hcFN0YXRlU2V0TWFwU3BsaXRNb2RlVXBkYXRlciIsInNldE1hcFZpZXdNb2RlVXBkYXRlciIsIm1hcFN0eWxlQ2hhbmdlVXBkYXRlciIsInN0eWxlTWFwQ29uZmlnVXBkYXRlciIsImZpbGVzVG9EYXRhUGF5bG9hZCIsInBheWxvYWRfIiwiYXBwbHlfIiwid2l0aF8iLCJpZl8iLCJjb21wb3NlXyIsIm1lcmdlXyIsInBpY2tfIiwiaXNQbGFpbk9iamVjdCIsImNvbXB1dGVTcGxpdE1hcExheWVycyIsImZpbmRNYXBCb3VuZHMiLCJCQVNFX01BUF9DT0xPUl9NT0RFUyIsIk9WRVJMQVlfQkxFTkRJTkdTIiwiTk9fTUFQX0lEIiwiTWFwU3BsaXRNb2RlIiwiZ2V0QmFzZW1hcENvbG9yc0ZvclN0eWxlIiwiREVGQVVMVF9CQVNFTUFQX0NPTE9SIiwiY29tYmluZWRVcGRhdGVycyIsImlzVmFsaWRDb25maWciLCJjb25maWciLCJ2ZXJzaW9uIiwiZGVmYXVsdEFkZERhdGFUb01hcE9wdGlvbnMiLCJjZW50ZXJNYXAiLCJrZWVwRXhpc3RpbmdDb25maWciLCJhdXRvQ3JlYXRlTGF5ZXJzIiwiYXV0b0NyZWF0ZVRvb2x0aXBzIiwiYWRkRGF0YVRvTWFwVXBkYXRlciIsInN0YXRlIiwiX3JlZiIsIl9kYXRhc2V0cyQiLCJfZGF0YXNldHMkMiIsIl9kYXRhc2V0cyQzIiwicGF5bG9hZCIsImRhdGFzZXRzIiwiaW5mbyIsIm9wdGlvbnMiLCJfb2JqZWN0U3ByZWFkIiwiaXNQcm9ncmVzc2l2ZUxvYWRpbmciLCJBcnJheSIsImlzQXJyYXkiLCJmb3JtYXQiLCJpZCIsInZpc1N0YXRlIiwicGFyc2VkQ29uZmlnIiwic2NoZW1hIiwicGFyc2VTYXZlZENvbmZpZyIsIm9sZExheWVycyIsImxheWVycyIsImZpbHRlck5ld2x5QWRkZWRMYXllcnMiLCJmaWx0ZXIiLCJubCIsImZpbmQiLCJvbCIsImZpbmRNYXBCb3VuZHNJZkNlbnRlcmVkIiwiYm91bmRzIiwidW5kZWZpbmVkIiwiQm9vbGVhbiIsIl9yZWYyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwicmVhZE9ubHkiLCJhY3Rpb24iLCJwYXlsb2FkcyIsInJlc3VsdCIsIm5leHRTdGF0ZSIsImZpbGVMb2FkaW5nIiwiZmlsZUxvYWRpbmdQcm9ncmVzcyIsInN0YXRlV2l0aERhdGEiLCJtYXAiLCJwIiwiYWRkRGF0YVRvTWFwQ29tcG9zZWQiLCJ1cGRhdGVPdmVybGF5QmxlbmRpbmciLCJvdmVybGF5QmxlbmRpbmciLCJub3JtYWwiLCJ2YWx1ZSIsInVwZGF0ZURhcmtCYXNlTWFwTGF5ZXJzIiwiZGFya0Jhc2VNYXBFbmFibGVkIiwibGF5ZXJJZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImxheWVyIiwidmlzQ29uZmlnU2V0dGluZ3MiLCJ2aXNDb25maWciLCJ1cGRhdGVMYXllckNvbmZpZyIsImNvbWJpbmVkTWFwU3R5bGVDaGFuZ2VVcGRhdGVyIiwiX21hcFN0YXRlJGdsb2JlIiwibWFwU3R5bGUiLCJnZXRDb2xvck1vZGUiLCJrZXkiLCJfbWFwU3R5bGUkbWFwU3R5bGVzJGsiLCJtYXBTdHlsZXMiLCJjb2xvck1vZGUiLCJwcmV2Q29sb3JNb2RlIiwic3R5bGVUeXBlIiwibmV4dENvbG9yTW9kZSIsIm1hcFN0YXRlIiwiREFSSyIsInNjcmVlbiIsIkxJR0hUIiwiZGFya2VuIiwiZ2xvYmUiLCJlbmFibGVkIiwiYmFzZW1hcCIsImxhYmVscyIsImFkbWluTGluZXMiLCJ3YXRlciIsInN5bmNHbG9iZUNvbmZpZ0NvbG9yc1RvU3R5bGUiLCJfbWFwU3RhdGUkZ2xvYmUyIiwibmV4dFN0eWxlT2JqIiwibmV4dEdsb2JlQ29uZmlnIiwic3VyZmFjZUNvbG9yIiwiYmFja2dyb3VuZEZpbGxDb2xvciIsIndhdGVyQ29sb3IiLCJiYXNlbWFwV2F0ZXJGaWxsQ29sb3IiLCJhZG1pbkxpbmVzQ29sb3IiLCJiYXNlbWFwQWRtaW5MaW5lQ29sb3IiLCJiYXNlbWFwQ29sb3JzIiwic3R5bGUiLCJsYXllckdyb3VwcyIsImNvbWJpbmVkU2V0TWFwVmlld01vZGVVcGRhdGVyIiwiX21hcFN0YXRlJGdsb2JlMyIsImNvbWJpbmVkTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlciIsIm9sZExheWVySW5kZXgiLCJmaW5kSW5kZXgiLCJvbGRMYXllciIsIm5ld0xheWVyIiwiX25ld1N0YXRlJHVpU3RhdGUkbWFwIiwibmV3U3RhdGUiLCJ1aVN0YXRlIiwiaXNTcGxpdCIsInNwbGl0TWFwcyIsImlzTGVnZW5kQWN0aXZlIiwibWFwQ29udHJvbHMiLCJtYXBMZWdlbmQiLCJhY3RpdmUiLCJwYW5lbElkIiwiaW5kZXgiLCJfbmV3VWlTdGF0ZSRtYXBDb250cm8iLCJtYXBTcGxpdE1vZGUiLCJwcmV2TW9kZSIsIm5ld01hcFN0YXRlIiwibmV3VmlzU3RhdGUiLCJTSU5HTEVfTUFQIiwiRFVBTF9NQVAiLCJTV0lQRV9DT01QQVJFIiwiZHVwbGljYXRlIiwibmV3VWlTdGF0ZSIsImRlZmF1bHRSZXBsYWNlRGF0YVRvTWFwT3B0aW9ucyIsInJlcGxhY2VEYXRhSW5NYXBVcGRhdGVyIiwiX3JlZjMiLCJkYXRhc2V0VG9SZXBsYWNlSWQiLCJkYXRhc2V0VG9Vc2UiLCJfcGF5bG9hZCRvcHRpb25zIiwiYWRkRGF0YVRvTWFwT3B0aW9ucyIsImRhdGFJZFRvVXNlIiwicHJlcGFyZWRTdGF0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21iaW5lZC11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICB0b2dnbGVNb2RhbFVwZGF0ZXIsXG4gIGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyIGFzIHVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlcixcbiAgdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyB1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciBhcyB1aVN0YXRlUmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXJcbn0gZnJvbSAnLi91aS1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICB1cGRhdGVWaXNEYXRhVXBkYXRlciBhcyB2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLFxuICBzZXRNYXBJbmZvVXBkYXRlcixcbiAgbGF5ZXJUeXBlQ2hhbmdlVXBkYXRlcixcbiAgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyIGFzIHZpc1N0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICBwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZVxufSBmcm9tICcuL3Zpcy1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciBhcyBzdGF0ZU1hcENvbmZpZ1VwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyBtYXBTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlcixcbiAgc2V0TWFwU3BsaXRNb2RlVXBkYXRlciBhcyBtYXBTdGF0ZVNldE1hcFNwbGl0TW9kZVVwZGF0ZXIsXG4gIHNldE1hcFZpZXdNb2RlVXBkYXRlclxufSBmcm9tICcuL21hcC1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIsXG4gIHJlY2VpdmVNYXBDb25maWdVcGRhdGVyIGFzIHN0eWxlTWFwQ29uZmlnVXBkYXRlclxufSBmcm9tICcuL21hcC1zdHlsZS11cGRhdGVycyc7XG5pbXBvcnQge2ZpbGVzVG9EYXRhUGF5bG9hZH0gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7cGF5bG9hZF8sIGFwcGx5Xywgd2l0aF8sIGlmXywgY29tcG9zZV8sIG1lcmdlXywgcGlja199IGZyb20gJy4vY29tcG9zZXItaGVscGVycyc7XG5pbXBvcnQge01hcFN0YXRlLCBVaVN0YXRlLCBBZGREYXRhVG9NYXBQYXlsb2FkLCBQYXJzZWRDb25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtNYXBTdHlsZX0gZnJvbSAnLi9tYXAtc3R5bGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtQcm92aWRlclN0YXRlfSBmcm9tICcuL3Byb3ZpZGVyLXN0YXRlLXVwZGF0ZXJzJztcbmltcG9ydCB7XG4gIGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uLFxuICBNYXBTdHlsZUNoYW5nZVVwZGF0ZXJBY3Rpb24sXG4gIExheWVyVHlwZUNoYW5nZVVwZGF0ZXJBY3Rpb24sXG4gIFRvZ2dsZVNwbGl0TWFwVXBkYXRlckFjdGlvbixcbiAgUmVwbGFjZURhdGFJbk1hcFBheWxvYWQsXG4gIE1hcFN0YXRlQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcbmltcG9ydCB7TGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7aXNQbGFpbk9iamVjdCwgY29tcHV0ZVNwbGl0TWFwTGF5ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7ZmluZE1hcEJvdW5kc30gZnJvbSAnLi9kYXRhLXV0aWxzJztcbmltcG9ydCB7XG4gIEJBU0VfTUFQX0NPTE9SX01PREVTLFxuICBPVkVSTEFZX0JMRU5ESU5HUyxcbiAgTk9fTUFQX0lELFxuICBNYXBTcGxpdE1vZGVcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUsIERFRkFVTFRfQkFTRU1BUF9DT0xPUn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcblxuZXhwb3J0IHR5cGUgS2VwbGVyR2xTdGF0ZSA9IHtcbiAgdmlzU3RhdGU6IFZpc1N0YXRlO1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG4gIG1hcFN0eWxlOiBNYXBTdHlsZTtcbiAgdWlTdGF0ZTogVWlTdGF0ZTtcbiAgcHJvdmlkZXJTdGF0ZTogUHJvdmlkZXJTdGF0ZTtcbn07XG5cbi8vIGNvbXBvc2UgYWN0aW9uIHRvIGFwcGx5IHJlc3VsdCBtdWx0aXBsZSByZWR1Y2Vycywgd2l0aCB0aGUgb3V0cHV0IG9mIG9uZVxuXG4vKipcbiAqIFNvbWUgYWN0aW9ucyB3aWxsIGFmZmVjdCB0aGUgZW50aXJlIGtlcGxlci5sZyBpbnN0YW5jZSBzdGF0ZS5cbiAqIFRoZSB1cGRhdGVycyBmb3IgdGhlc2UgYWN0aW9ucyBpcyBleHBvcnRlZCBhcyBgY29tYmluZWRVcGRhdGVyc2AuIFRoZXNlIHVwZGF0ZXIgdGFrZSB0aGUgZW50aXJlIGluc3RhbmNlIHN0YXRlXG4gKiBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIFJlYWQgbW9yZSBhYm91dCBbVXNpbmcgdXBkYXRlcnNdKC4uL2FkdmFuY2VkLXVzYWdlL3VzaW5nLXVwZGF0ZXJzLm1kKVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7Y29tYmluZWRVcGRhdGVyc30gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBhZGQgZGF0YSB0byBtYXAgYWZ0ZXIgcmVjZWl2aW5nIGRhdGEgZnJvbSByZW1vdGUgc291cmNlc1xuICogICAgY2FzZSAnTE9BRF9SRU1PVEVfUkVTT1VSQ0VfU1VDQ0VTUyc6XG4gKiAgICAgIHJldHVybiB7XG4gKiAgICAgICAgLi4uc3RhdGUsXG4gKiAgICAgICAga2VwbGVyR2w6IHtcbiAqICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLFxuICogICAgICAgICAgLy8gcGFzcyBpbiBrZXBsZXIuZ2wgaW5zdGFuY2Ugc3RhdGUgdG8gY29tYmluZWRVcGRhdGVyc1xuICogICAgICAgICAgbWFwOiAgY29tYmluZWRVcGRhdGVycy5hZGREYXRhVG9NYXBVcGRhdGVyKFxuICogICAgICAgICAgIHN0YXRlLmtlcGxlckdsLm1hcCxcbiAqICAgICAgICAgICB7XG4gKiAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gKiAgICAgICAgICAgICAgIGRhdGFzZXRzOiBhY3Rpb24uZGF0YXNldHMsXG4gKiAgICAgICAgICAgICAgIG9wdGlvbnM6IHtyZWFkT25seTogdHJ1ZX0sXG4gKiAgICAgICAgICAgICAgIGNvbmZpZzogYWN0aW9uLmNvbmZpZ1xuICogICAgICAgICAgICAgIH1cbiAqICAgICAgICAgICAgfVxuICogICAgICAgICAgKVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBjb21iaW5lZFVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkQ29uZmlnID0gY29uZmlnID0+XG4gIGlzUGxhaW5PYmplY3QoY29uZmlnKSAmJiBpc1BsYWluT2JqZWN0KGNvbmZpZy5jb25maWcpICYmIGNvbmZpZy52ZXJzaW9uO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEFkZERhdGFUb01hcE9wdGlvbnMgPSB7XG4gIGNlbnRlck1hcDogdHJ1ZSxcbiAga2VlcEV4aXN0aW5nQ29uZmlnOiBmYWxzZSxcbiAgYXV0b0NyZWF0ZUxheWVyczogdHJ1ZSxcbiAgYXV0b0NyZWF0ZVRvb2x0aXBzOiB0cnVlXG59O1xuXG4vKipcbiAqIENvbWJpbmUgZGF0YSBhbmQgZnVsbCBjb25maWd1cmF0aW9uIHVwZGF0ZSBpbiBhIHNpbmdsZSBhY3Rpb25cbiAqXG4gKiBAbWVtYmVyb2YgY29tYmluZWRVcGRhdGVyc1xuICogQHBhcmFtIHtPYmplY3R9IHN0YXRlIGtlcGxlci5nbCBpbnN0YW5jZSBzdGF0ZSwgY29udGFpbmluZyBhbGwgc3VicmVkdWNlciBzdGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvblxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbi5wYXlsb2FkIGB7ZGF0YXNldHMsIG9wdGlvbnMsIGNvbmZpZ31gXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQuZGF0YXNldHMgLSAqKipyZXF1aXJlZCoqIGRhdGFzZXRzIGNhbiBiZSBhIGRhdGFzZXQgb3IgYW4gYXJyYXkgb2YgZGF0YXNldHNcbiAqIEVhY2ggZGF0YXNldCBvYmplY3QgbmVlZHMgdG8gaGF2ZSBgaW5mb2AgYW5kIGBkYXRhYCBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBbYWN0aW9uLnBheWxvYWQub3B0aW9uc10gb3B0aW9uIG9iamVjdCBge2NlbnRlck1hcDogdHJ1ZSwgcGFkZGluZzoge2xlZnQ6IDMwMH19YFxuICogQHBhcmFtIFthY3Rpb24ucGF5bG9hZC5jb25maWddIG1hcCBjb25maWdcbiAqIEBwYXJhbSBbYWN0aW9uLnBheWxvYWQuaW5mb10gbWFwIGluZm8gY29udGFpbnMgdGl0bGUgYW5kIGRlc2NyaXB0aW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEYXRhc2V0XG4gKiBAcHJvcGVydHkgaW5mbyAtaW5mbyBvZiBhIGRhdGFzZXRcbiAqIEBwcm9wZXJ0eSBpbmZvLmlkIC0gaWQgb2YgdGhpcyBkYXRhc2V0LiBJZiBjb25maWcgaXMgZGVmaW5lZCwgYGlkYCBzaG91bGQgbWF0Y2hlcyB0aGUgYGRhdGFJZGAgaW4gY29uZmlnLlxuICogQHByb3BlcnR5IGluZm8ubGFiZWwgLSBBIGRpc3BsYXkgbmFtZSBvZiB0aGlzIGRhdGFzZXRcbiAqIEBwcm9wZXJ0eSBkYXRhIC0gKioqcmVxdWlyZWQqKiBUaGUgZGF0YSBvYmplY3QsIGluIGEgdGFidWxhciBmb3JtYXQgd2l0aCAyIHByb3BlcnRpZXMgYGZpZWxkc2AgYW5kIGByb3dzYFxuICogQHByb3BlcnR5IGRhdGEuZmllbGRzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiBmaWVsZHMsXG4gKiBAcHJvcGVydHkgZGF0YS5maWVsZHMubmFtZSAtICoqKnJlcXVpcmVkKiogTmFtZSBvZiB0aGUgZmllbGQsXG4gKiBAcHJvcGVydHkgZGF0YS5yb3dzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiByb3dzLCBpbiBhIHRhYnVsYXIgZm9ybWF0IHdpdGggYGZpZWxkc2AgYW5kIGByb3dzYFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZERhdGFUb01hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICB7cGF5bG9hZH06IHtwYXlsb2FkOiBBZGREYXRhVG9NYXBQYXlsb2FkfVxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGNvbnN0IHtkYXRhc2V0cywgY29uZmlnLCBpbmZvfSA9IHBheWxvYWQ7XG5cbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAuLi5kZWZhdWx0QWRkRGF0YVRvTWFwT3B0aW9ucyxcbiAgICAuLi5wYXlsb2FkLm9wdGlvbnNcbiAgfTtcblxuICAvLyBjaGVjayBpZiBwcm9ncmVzc2l2ZSBsb2FkaW5nIGRhdGFzZXQgYnkgYmF0Y2hlcywgYW5kIHVwZGF0ZSB2aXNTdGF0ZSBkaXJlY3RseVxuICBjb25zdCBpc1Byb2dyZXNzaXZlTG9hZGluZyA9XG4gICAgQXJyYXkuaXNBcnJheShkYXRhc2V0cykgJiZcbiAgICBkYXRhc2V0c1swXT8uaW5mby5mb3JtYXQgPT09ICdhcnJvdycgJiZcbiAgICBkYXRhc2V0c1swXT8uaW5mby5pZCAmJlxuICAgIGRhdGFzZXRzWzBdPy5pbmZvLmlkIGluIHN0YXRlLnZpc1N0YXRlLmRhdGFzZXRzO1xuICBpZiAoaXNQcm9ncmVzc2l2ZUxvYWRpbmcpIHtcbiAgICByZXR1cm4gY29tcG9zZV88S2VwbGVyR2xTdGF0ZT4oW1xuICAgICAgcGlja18oJ3Zpc1N0YXRlJykoXG4gICAgICAgIGFwcGx5XzxWaXNTdGF0ZSwgYW55Pih2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLCB7XG4gICAgICAgICAgZGF0YXNldHMsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBjb25maWdcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICBdKShzdGF0ZSk7XG4gIH1cblxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGxldCBwYXJzZWRDb25maWc6IFBhcnNlZENvbmZpZyA9IGNvbmZpZztcblxuICBpZiAoaXNWYWxpZENvbmZpZyhjb25maWcpKSB7XG4gICAgLy8gaWYgcGFzc2VkIGluIHNhdmVkIGNvbmZpZ1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBwYXJzZWRDb25maWcgPSBzdGF0ZS52aXNTdGF0ZS5zY2hlbWEucGFyc2VTYXZlZENvbmZpZyhjb25maWcpO1xuICB9XG4gIGNvbnN0IG9sZExheWVycyA9IHN0YXRlLnZpc1N0YXRlLmxheWVycztcbiAgY29uc3QgZmlsdGVyTmV3bHlBZGRlZExheWVycyA9IChsYXllcnM6IExheWVyW10pID0+XG4gICAgbGF5ZXJzLmZpbHRlcihubCA9PiAhb2xkTGF5ZXJzLmZpbmQob2wgPT4gb2wgPT09IG5sKSk7XG5cbiAgLy8gUmV0dXJucyB1bmRlZmluZWQgaWYgbm90IGZvdW5kLCB0byBtYWtlIHR5cGVzY3JpcHQgaGFwcHlcbiAgY29uc3QgZmluZE1hcEJvdW5kc0lmQ2VudGVyZWQgPSAobGF5ZXJzOiBMYXllcltdKSA9PiB7XG4gICAgY29uc3QgYm91bmRzID0gb3B0aW9ucy5jZW50ZXJNYXAgJiYgZmluZE1hcEJvdW5kcyhsYXllcnMpO1xuICAgIHJldHVybiBib3VuZHMgPyBib3VuZHMgOiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgcmV0dXJuIGNvbXBvc2VfPEtlcGxlckdsU3RhdGU+KFtcbiAgICBwaWNrXygndmlzU3RhdGUnKShcbiAgICAgIC8vIHRoaXMgcGFydCBjYW4gYmUgYXN5bmNcbiAgICAgIGFwcGx5XzxWaXNTdGF0ZSwgYW55Pih2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLCB7XG4gICAgICAgIGRhdGFzZXRzLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBjb25maWc6IHBhcnNlZENvbmZpZ1xuICAgICAgfSlcbiAgICApLFxuXG4gICAgaWZfKEJvb2xlYW4oaW5mbyksIHBpY2tfKCd2aXNTdGF0ZScpKGFwcGx5XzxWaXNTdGF0ZSwgYW55PihzZXRNYXBJbmZvVXBkYXRlciwge2luZm99KSkpLFxuICAgIC8vIE5vdGUgdGhhdCBmaXQgYm91bmRzIGhlcmUgd29uJ3QgYmUgY2FsbGVkIGluIGNhc2UgZGF0YXNldHMgYXJlIGNyZWF0ZWQgaW4gVGFza3MuXG4gICAgLy8gQSBzZXBhcmF0ZSBUYXNrIHRvIHVwZGF0ZSBib3VuZHMgaXMgY3JlYXRlZCBvbmNlIHRoZSBkYXRhc2V0cyBhcmUgcmVhZHkuXG4gICAgd2l0aF8oKHt2aXNTdGF0ZX0pID0+XG4gICAgICBwaWNrXygnbWFwU3RhdGUnKShcbiAgICAgICAgYXBwbHlfKFxuICAgICAgICAgIHN0YXRlTWFwQ29uZmlnVXBkYXRlcixcbiAgICAgICAgICBwYXlsb2FkXyh7XG4gICAgICAgICAgICBjb25maWc6IHBhcnNlZENvbmZpZyxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBib3VuZHM6IGZpbmRNYXBCb3VuZHNJZkNlbnRlcmVkKGZpbHRlck5ld2x5QWRkZWRMYXllcnModmlzU3RhdGUubGF5ZXJzKSlcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKSxcbiAgICBwaWNrXygnbWFwU3R5bGUnKShhcHBseV8oc3R5bGVNYXBDb25maWdVcGRhdGVyLCBwYXlsb2FkXyh7Y29uZmlnOiBwYXJzZWRDb25maWcsIG9wdGlvbnN9KSkpLFxuICAgIHBpY2tfKCd1aVN0YXRlJykoXG4gICAgICBhcHBseV8odWlTdGF0ZVJlY2VpdmVNYXBDb25maWdVcGRhdGVyLCBwYXlsb2FkXyh7Y29uZmlnOiBwYXJzZWRDb25maWcsIG9wdGlvbnN9KSlcbiAgICApLFxuICAgIHBpY2tfKCd1aVN0YXRlJykoYXBwbHlfKHVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlciwgcGF5bG9hZF8obnVsbCkpKSxcblxuICAgIHBpY2tfKCd1aVN0YXRlJykoYXBwbHlfKHRvZ2dsZU1vZGFsVXBkYXRlciwgcGF5bG9hZF8obnVsbCkpKSxcbiAgICBwaWNrXygndWlTdGF0ZScpKFxuICAgICAgbWVyZ2VfKFxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3JlYWRPbmx5JylcbiAgICAgICAgICA/IHtyZWFkT25seTogb3B0aW9ucy5yZWFkT25seX1cbiAgICAgICAgICA6IHt9XG4gICAgICApXG4gICAgKVxuICBdKShzdGF0ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICBhY3Rpb246IGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgLy8gc3RpbGwgbW9yZSB0byBsb2FkXG4gIGNvbnN0IHBheWxvYWRzID0gZmlsZXNUb0RhdGFQYXlsb2FkKGFjdGlvbi5yZXN1bHQpO1xuICBjb25zdCBuZXh0U3RhdGUgPSBjb21wb3NlXyhbXG4gICAgcGlja18oJ3Zpc1N0YXRlJykoXG4gICAgICBtZXJnZV8oe1xuICAgICAgICBmaWxlTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGZpbGVMb2FkaW5nUHJvZ3Jlc3M6IHt9XG4gICAgICB9KVxuICAgIClcbiAgXSkoc3RhdGUpO1xuICAvLyBtYWtlIG11bHRpcGxlIGFkZCBkYXRhIHRvIG1hcCBjYWxsc1xuICBjb25zdCBzdGF0ZVdpdGhEYXRhID0gY29tcG9zZV8ocGF5bG9hZHMubWFwKHAgPT4gYXBwbHlfKGFkZERhdGFUb01hcFVwZGF0ZXIsIHBheWxvYWRfKHApKSkpKFxuICAgIG5leHRTdGF0ZVxuICApO1xuICByZXR1cm4gc3RhdGVXaXRoRGF0YSBhcyBLZXBsZXJHbFN0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZERhdGFUb01hcENvbXBvc2VkID0gYWRkRGF0YVRvTWFwVXBkYXRlcjtcblxuLyoqXG4gKiBIZWxwZXIgd2hpY2ggdXBkYXRlcyBtYXAgb3ZlcmxheSBibGVuZGluZyBtb2RlIGluIHZpc1N0YXRlLFxuICogYnV0IG9ubHkgaWYgaXQncyBub3QgY3VycmVudGx5IGluIHRoZSBgbm9ybWFsYCBtb2RlLlxuICovXG5jb25zdCB1cGRhdGVPdmVybGF5QmxlbmRpbmcgPSBvdmVybGF5QmxlbmRpbmcgPT4gdmlzU3RhdGUgPT4ge1xuICBpZiAodmlzU3RhdGUub3ZlcmxheUJsZW5kaW5nICE9PSBPVkVSTEFZX0JMRU5ESU5HUy5ub3JtYWwudmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udmlzU3RhdGUsXG4gICAgICBvdmVybGF5QmxlbmRpbmdcbiAgICB9O1xuICB9XG4gIHJldHVybiB2aXNTdGF0ZTtcbn07XG5cbi8qKlxuICogSGVscGVyIHdoaWNoIHVwZGF0ZXMgYGRhcmtCYXNlTWFwRW5hYmxlZGAgaW4gYWxsIHRoZSBsYXllcnMgaW4gdmlzU3RhdGUgd2hpY2hcbiAqIGhhdmUgdGhpcyBjb25maWcgc2V0dGluZyAob3IgaW4gb25lIHNwZWNpZmljIGxheWVyIGlmIHRoZSBgbGF5ZXJJZGAgcGFyYW0gaXMgcHJvdmlkZWQpLlxuICovXG5jb25zdCB1cGRhdGVEYXJrQmFzZU1hcExheWVycyA9XG4gIChkYXJrQmFzZU1hcEVuYWJsZWQ6IGJvb2xlYW4sIGxheWVySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PlxuICB2aXNTdGF0ZSA9PiAoe1xuICAgIC4uLnZpc1N0YXRlLFxuICAgIGxheWVyczogdmlzU3RhdGUubGF5ZXJzLm1hcChsYXllciA9PiB7XG4gICAgICBpZiAoIWxheWVySWQgfHwgbGF5ZXIuaWQgPT09IGxheWVySWQpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsYXllci52aXNDb25maWdTZXR0aW5ncywgJ2RhcmtCYXNlTWFwRW5hYmxlZCcpKSB7XG4gICAgICAgICAgY29uc3Qge3Zpc0NvbmZpZ30gPSBsYXllci5jb25maWc7XG4gICAgICAgICAgcmV0dXJuIGxheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgICAgIHZpc0NvbmZpZzogey4uLnZpc0NvbmZpZywgZGFya0Jhc2VNYXBFbmFibGVkfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbGF5ZXI7XG4gICAgfSlcbiAgfSk7XG5cbi8qKlxuICogVXBkYXRlciB0aGF0IGNoYW5nZXMgdGhlIG1hcCBzdHlsZSBieSBjYWxsaW5nIG1hcFN0eWxlQ2hhbmdlVXBkYXRlciBvbiB2aXNTdGF0ZS5cbiAqIEluIGFkZGl0aW9uIHRvIHRoYXQsIGl0IGRvZXMgdGhlIGZvbGxvd2luZzpcbiAqXG4gKiAgIDEuIFVwZGF0ZSBtYXAgb3ZlcmxheSBibGVuZGluZyBtb2RlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZVxuICogICAgICBiYXNlIG1hcCwgYnV0IG9ubHkgaWYgaXQncyBub3QgaW4gdGhlIGBub3JtYWxgIG1vZGUuXG4gKlxuICogICAyLiBVcGRhdGUgYWxsIHRoZSBsYXllcnMgd2hpY2ggaGF2ZSB0aGUgYGRhcmtCYXNlTWFwRW5hYmxlZGAgY29uZmlnIHNldHRpbmdcbiAqICAgICAgYWRqdXN0aW5nIGl0IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZSBiYXNlIG1hcC5cbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBjb21iaW5lZE1hcFN0eWxlQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTWFwU3R5bGVDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3Qge3BheWxvYWR9ID0gYWN0aW9uO1xuICBjb25zdCB7bWFwU3R5bGV9ID0gc3RhdGU7XG4gIGNvbnN0IGdldENvbG9yTW9kZSA9IGtleSA9PiBtYXBTdHlsZS5tYXBTdHlsZXNba2V5XT8uY29sb3JNb2RlO1xuICBjb25zdCBwcmV2Q29sb3JNb2RlID0gZ2V0Q29sb3JNb2RlKG1hcFN0eWxlLnN0eWxlVHlwZSk7XG4gIGNvbnN0IG5leHRDb2xvck1vZGUgPSBnZXRDb2xvck1vZGUocGF5bG9hZC5zdHlsZVR5cGUpO1xuICBsZXQge3Zpc1N0YXRlLCBtYXBTdGF0ZX0gPSBzdGF0ZTtcbiAgaWYgKG5leHRDb2xvck1vZGUgIT09IHByZXZDb2xvck1vZGUpIHtcbiAgICBzd2l0Y2ggKG5leHRDb2xvck1vZGUpIHtcbiAgICAgIGNhc2UgQkFTRV9NQVBfQ09MT1JfTU9ERVMuREFSSzpcbiAgICAgICAgdmlzU3RhdGUgPSBjb21wb3NlXyhbXG4gICAgICAgICAgdXBkYXRlT3ZlcmxheUJsZW5kaW5nKE9WRVJMQVlfQkxFTkRJTkdTLnNjcmVlbi52YWx1ZSksXG4gICAgICAgICAgdXBkYXRlRGFya0Jhc2VNYXBMYXllcnModHJ1ZSlcbiAgICAgICAgXSkodmlzU3RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQkFTRV9NQVBfQ09MT1JfTU9ERVMuTElHSFQ6XG4gICAgICAgIHZpc1N0YXRlID0gY29tcG9zZV8oW1xuICAgICAgICAgIHVwZGF0ZU92ZXJsYXlCbGVuZGluZyhPVkVSTEFZX0JMRU5ESU5HUy5kYXJrZW4udmFsdWUpLFxuICAgICAgICAgIHVwZGF0ZURhcmtCYXNlTWFwTGF5ZXJzKGZhbHNlKVxuICAgICAgICBdKSh2aXNTdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gIH1cblxuICAvLyBVcGRhdGUgZ2xvYmUgY29uZmlnIGNvbG9ycyB3aGVuIHN0eWxlIGNoYW5nZXMgYW5kIGdsb2JlIGlzIGVuYWJsZWRcbiAgaWYgKG1hcFN0YXRlLmdsb2JlPy5lbmFibGVkKSB7XG4gICAgLy8gU3dpdGNoaW5nIGZyb20gXCJObyBCYXNlbWFwXCIgdG8gYSBiYXNlbWFwIC0gcmVzdG9yZSBiYXNlbWFwIHN1Yi10b2dnbGVzXG4gICAgaWYgKHBheWxvYWQuc3R5bGVUeXBlICE9PSBOT19NQVBfSUQgJiYgbWFwU3R5bGUuc3R5bGVUeXBlID09PSBOT19NQVBfSUQpIHtcbiAgICAgIG1hcFN0YXRlID0ge1xuICAgICAgICAuLi5tYXBTdGF0ZSxcbiAgICAgICAgZ2xvYmU6IHtcbiAgICAgICAgICAuLi5tYXBTdGF0ZS5nbG9iZSxcbiAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgIC4uLm1hcFN0YXRlLmdsb2JlLmNvbmZpZyxcbiAgICAgICAgICAgIGJhc2VtYXA6IHRydWUsXG4gICAgICAgICAgICBsYWJlbHM6IHRydWUsXG4gICAgICAgICAgICBhZG1pbkxpbmVzOiB0cnVlLFxuICAgICAgICAgICAgd2F0ZXI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIG1hcFN0YXRlID0gc3luY0dsb2JlQ29uZmlnQ29sb3JzVG9TdHlsZShtYXBTdGF0ZSwgbWFwU3R5bGUsIHBheWxvYWQuc3R5bGVUeXBlKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgdmlzU3RhdGUsXG4gICAgbWFwU3RhdGUsXG4gICAgbWFwU3R5bGU6IG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihtYXBTdHlsZSwge3BheWxvYWQ6IHsuLi5wYXlsb2FkfX0pXG4gIH07XG59O1xuXG4vKipcbiAqIERlcml2ZSBnbG9iZSBiYXNlbWFwIGNvbG9ycyAoc3VyZmFjZSAvIHdhdGVyIC8gYWRtaW4gbGluZXMpIGZyb20gYSBtYXAgc3R5bGUgYW5kXG4gKiByZXR1cm4gYW4gdXBkYXRlZCBtYXBTdGF0ZSB3aXRoIHRob3NlIGNvbG9ycyB3cml0dGVuIGludG8gYGdsb2JlLmNvbmZpZ2AuIFVzZWQgYm90aFxuICogd2hlbiB0aGUgYmFzZSBtYXAgc3R5bGUgY2hhbmdlcyBhbmQgd2hlbiBlbnRlcmluZyBnbG9iZSBtb2RlLCBzbyB0aGUgZ2xvYmUgYWx3YXlzXG4gKiByZWZsZWN0cyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGJhc2VtYXAgaW5zdGVhZCBvZiB0aGUgc3RhdGljIERFRkFVTFRfR0xPQkVfQ09ORklHLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3luY0dsb2JlQ29uZmlnQ29sb3JzVG9TdHlsZShcbiAgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICBtYXBTdHlsZTogTWFwU3R5bGUsXG4gIHN0eWxlVHlwZTogc3RyaW5nXG4pOiBNYXBTdGF0ZSB7XG4gIGlmICghbWFwU3RhdGUuZ2xvYmU/LmVuYWJsZWQpIHtcbiAgICByZXR1cm4gbWFwU3RhdGU7XG4gIH1cblxuICBjb25zdCBuZXh0U3R5bGVPYmogPSBtYXBTdHlsZS5tYXBTdHlsZXNbc3R5bGVUeXBlXTtcbiAgY29uc3QgbmV4dEdsb2JlQ29uZmlnID0gey4uLm1hcFN0YXRlLmdsb2JlLmNvbmZpZ307XG5cbiAgaWYgKHN0eWxlVHlwZSA9PT0gTk9fTUFQX0lEKSB7XG4gICAgbmV4dEdsb2JlQ29uZmlnLmJhc2VtYXAgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcubGFiZWxzID0gZmFsc2U7XG4gICAgbmV4dEdsb2JlQ29uZmlnLmFkbWluTGluZXMgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcud2F0ZXIgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcuc3VyZmFjZUNvbG9yID0gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhY2tncm91bmRGaWxsQ29sb3I7XG4gICAgbmV4dEdsb2JlQ29uZmlnLndhdGVyQ29sb3IgPSBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcFdhdGVyRmlsbENvbG9yO1xuICAgIG5leHRHbG9iZUNvbmZpZy5hZG1pbkxpbmVzQ29sb3IgPSBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcEFkbWluTGluZUNvbG9yO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGJhc2VtYXBDb2xvcnMgPSBuZXh0U3R5bGVPYmpcbiAgICAgID8gZ2V0QmFzZW1hcENvbG9yc0ZvclN0eWxlKHN0eWxlVHlwZSwge1xuICAgICAgICAgIHN0eWxlOiBuZXh0U3R5bGVPYmouc3R5bGUsXG4gICAgICAgICAgbGF5ZXJHcm91cHM6IG5leHRTdHlsZU9iai5sYXllckdyb3Vwc1xuICAgICAgICB9KVxuICAgICAgOiAvLyBTdHlsZSBvYmplY3Qgbm90IHlldCBsb2FkZWQgLSB1c2Uga25vd24gcHJlc2V0cyBieSBzdHlsZSB0eXBlXG4gICAgICAgIGdldEJhc2VtYXBDb2xvcnNGb3JTdHlsZShzdHlsZVR5cGUpO1xuICAgIG5leHRHbG9iZUNvbmZpZy5zdXJmYWNlQ29sb3IgPSBiYXNlbWFwQ29sb3JzLmJhY2tncm91bmRGaWxsQ29sb3I7XG4gICAgbmV4dEdsb2JlQ29uZmlnLndhdGVyQ29sb3IgPSBiYXNlbWFwQ29sb3JzLmJhc2VtYXBXYXRlckZpbGxDb2xvcjtcbiAgICBuZXh0R2xvYmVDb25maWcuYWRtaW5MaW5lc0NvbG9yID0gYmFzZW1hcENvbG9ycy5iYXNlbWFwQWRtaW5MaW5lQ29sb3I7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLm1hcFN0YXRlLFxuICAgIGdsb2JlOiB7XG4gICAgICAuLi5tYXBTdGF0ZS5nbG9iZSxcbiAgICAgIGNvbmZpZzogbmV4dEdsb2JlQ29uZmlnXG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFVwZGF0ZXIgdGhhdCBzd2l0Y2hlcyB0aGUgbWFwIHZpZXcgbW9kZSAoMkQgLyAzRCAvIEdsb2JlKS4gUnVucyB0aGUgYmFzZSBtYXAtc3RhdGVcbiAqIHVwZGF0ZXIgYW5kLCB3aGVuIGVudGVyaW5nIGdsb2JlIG1vZGUsIHN5bmNzIHRoZSBnbG9iZSBiYXNlbWFwIGNvbG9ycyB0byB0aGVcbiAqIGN1cnJlbnRseSBzZWxlY3RlZCBtYXAgc3R5bGUgc28gdGhlIGdsb2JlIGRvZXNuJ3Qgc2hvdyBzdGFsZSBkZWZhdWx0IGNvbG9ycy5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbWJpbmVkU2V0TWFwVmlld01vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogS2VwbGVyR2xTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuU2V0TWFwVmlld01vZGVVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgbGV0IG1hcFN0YXRlID0gc2V0TWFwVmlld01vZGVVcGRhdGVyKHN0YXRlLm1hcFN0YXRlLCBhY3Rpb24pO1xuXG4gIGlmIChtYXBTdGF0ZS5nbG9iZT8uZW5hYmxlZCkge1xuICAgIG1hcFN0YXRlID0gc3luY0dsb2JlQ29uZmlnQ29sb3JzVG9TdHlsZShtYXBTdGF0ZSwgc3RhdGUubWFwU3R5bGUsIHN0YXRlLm1hcFN0eWxlLnN0eWxlVHlwZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcFN0YXRlXG4gIH07XG59O1xuXG4vKipcbiAqIFVwZGF0ZXIgdGhhdCBjaGFuZ2VzIHRoZSBsYXllciB0eXBlIGJ5IGNhbGxpbmcgYGxheWVyVHlwZUNoYW5nZVVwZGF0ZXJgIG9uIHZpc1N0YXRlLlxuICogSW4gYWRkaXRpb24gdG8gdGhhdCwgaWYgdGhlIG5ldyBsYXllciB0eXBlIGhhcyB0aGUgYGRhcmtCYXNlTWFwRW5hYmxlZGAgY29uZmlnXG4gKiBzZXR0aW5nLCB3ZSBhZGp1c3QgaXQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBjb2xvck1vZGUgb2YgdGhlIGJhc2UgbWFwLnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbWJpbmVkTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGxldCB7dmlzU3RhdGV9ID0gc3RhdGU7XG4gIGNvbnN0IG9sZExheWVySW5kZXggPSB2aXNTdGF0ZS5sYXllcnMuZmluZEluZGV4KGxheWVyID0+IGxheWVyID09PSBhY3Rpb24ub2xkTGF5ZXIpO1xuICB2aXNTdGF0ZSA9IGxheWVyVHlwZUNoYW5nZVVwZGF0ZXIodmlzU3RhdGUsIGFjdGlvbik7XG4gIGNvbnN0IG5ld0xheWVyID0gdmlzU3RhdGUubGF5ZXJzW29sZExheWVySW5kZXhdO1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5ld0xheWVyPy52aXNDb25maWdTZXR0aW5ncywgJ2RhcmtCYXNlTWFwRW5hYmxlZCcpKSB7XG4gICAgY29uc3Qge21hcFN0eWxlfSA9IHN0YXRlO1xuICAgIGNvbnN0IHtjb2xvck1vZGV9ID0gbWFwU3R5bGUubWFwU3R5bGVzW21hcFN0eWxlLnN0eWxlVHlwZV07XG4gICAgY29uc3Qge2RhcmtCYXNlTWFwRW5hYmxlZH0gPSBuZXdMYXllci5jb25maWcudmlzQ29uZmlnO1xuICAgIHN3aXRjaCAoY29sb3JNb2RlKSB7XG4gICAgICBjYXNlIEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUks6XG4gICAgICAgIGlmICghZGFya0Jhc2VNYXBFbmFibGVkKSB7XG4gICAgICAgICAgdmlzU3RhdGUgPSB1cGRhdGVEYXJrQmFzZU1hcExheWVycyh0cnVlLCBuZXdMYXllci5pZCkodmlzU3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVDpcbiAgICAgICAgaWYgKGRhcmtCYXNlTWFwRW5hYmxlZCkge1xuICAgICAgICAgIHZpc1N0YXRlID0gdXBkYXRlRGFya0Jhc2VNYXBMYXllcnMoZmFsc2UsIG5ld0xheWVyLmlkKSh2aXNTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHZpc1N0YXRlXG4gIH07XG59O1xuXG4vKipcbiAqIE1ha2UgbWFwTGVnZW5kIGFjdGl2ZSB3aGVuIHRvZ2dsZVNwbGl0TWFwIGFjdGlvbiBpcyBjYWxsZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogVG9nZ2xlU3BsaXRNYXBVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgdmlzU3RhdGU6IHZpc1N0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLnZpc1N0YXRlLCBhY3Rpb24pLFxuICAgIHVpU3RhdGU6IHVpU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIoc3RhdGUudWlTdGF0ZSksXG4gICAgbWFwU3RhdGU6IG1hcFN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLm1hcFN0YXRlKVxuICB9O1xuXG4gIGNvbnN0IGlzU3BsaXQgPSBuZXdTdGF0ZS52aXNTdGF0ZS5zcGxpdE1hcHMubGVuZ3RoICE9PSAwO1xuICBjb25zdCBpc0xlZ2VuZEFjdGl2ZSA9IG5ld1N0YXRlLnVpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uYWN0aXZlO1xuICBpZiAoaXNTcGxpdCAmJiAhaXNMZWdlbmRBY3RpdmUpIHtcbiAgICBuZXdTdGF0ZS51aVN0YXRlID0gdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIobmV3U3RhdGUudWlTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge3BhbmVsSWQ6ICdtYXBMZWdlbmQnLCBpbmRleDogYWN0aW9uLnBheWxvYWR9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIFNldCBtYXAgc3BsaXQgbW9kZSB1cGRhdGVyIC0gY29vcmRpbmF0ZXMgc3RhdGUgY2hhbmdlcyBhY3Jvc3MgdmlzU3RhdGUsIG1hcFN0YXRlLCBhbmQgdWlTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0TWFwU3BsaXRNb2RlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldE1hcFNwbGl0TW9kZVVwZGF0ZXJBY3Rpb25cbik6IEtlcGxlckdsU3RhdGUgPT4ge1xuICBjb25zdCB7bWFwU3BsaXRNb2RlfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBjb25zdCBwcmV2TW9kZSA9IHN0YXRlLm1hcFN0YXRlLm1hcFNwbGl0TW9kZTtcblxuICBpZiAobWFwU3BsaXRNb2RlID09PSBwcmV2TW9kZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IG5ld01hcFN0YXRlID0gbWFwU3RhdGVTZXRNYXBTcGxpdE1vZGVVcGRhdGVyKHN0YXRlLm1hcFN0YXRlLCBhY3Rpb24pO1xuXG4gIGxldCBuZXdWaXNTdGF0ZSA9IHsuLi5zdGF0ZS52aXNTdGF0ZX07XG5cbiAgc3dpdGNoIChtYXBTcGxpdE1vZGUpIHtcbiAgICBjYXNlIE1hcFNwbGl0TW9kZS5TSU5HTEVfTUFQOlxuICAgICAgbmV3VmlzU3RhdGUgPSB7XG4gICAgICAgIC4uLm5ld1Zpc1N0YXRlLFxuICAgICAgICBzcGxpdE1hcHM6IFtdXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuRFVBTF9NQVA6XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuU1dJUEVfQ09NUEFSRTpcbiAgICAgIGlmIChwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVApIHtcbiAgICAgICAgbmV3VmlzU3RhdGUgPSB7XG4gICAgICAgICAgLi4ubmV3VmlzU3RhdGUsXG4gICAgICAgICAgc3BsaXRNYXBzOiBjb21wdXRlU3BsaXRNYXBMYXllcnMobmV3VmlzU3RhdGUubGF5ZXJzLCB7XG4gICAgICAgICAgICBkdXBsaWNhdGU6IG1hcFNwbGl0TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkVcbiAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgbGV0IG5ld1VpU3RhdGUgPSB1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLnVpU3RhdGUpO1xuXG4gIGNvbnN0IGlzU3BsaXQgPSBuZXdWaXNTdGF0ZS5zcGxpdE1hcHMubGVuZ3RoICE9PSAwO1xuICBjb25zdCBpc0xlZ2VuZEFjdGl2ZSA9IG5ld1VpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uYWN0aXZlO1xuICBpZiAoaXNTcGxpdCAmJiAhaXNMZWdlbmRBY3RpdmUpIHtcbiAgICBuZXdVaVN0YXRlID0gdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIobmV3VWlTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge3BhbmVsSWQ6ICdtYXBMZWdlbmQnLCBpbmRleDogMH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbWFwU3RhdGU6IG5ld01hcFN0YXRlLFxuICAgIHZpc1N0YXRlOiBuZXdWaXNTdGF0ZSxcbiAgICB1aVN0YXRlOiBuZXdVaVN0YXRlXG4gIH07XG59O1xuXG5jb25zdCBkZWZhdWx0UmVwbGFjZURhdGFUb01hcE9wdGlvbnMgPSB7XG4gIGtlZXBFeGlzdGluZ0NvbmZpZzogdHJ1ZSxcbiAgY2VudGVyTWFwOiB0cnVlLFxuICBhdXRvQ3JlYXRlTGF5ZXJzOiBmYWxzZVxufTtcblxuLyoqXG4gKiBVcGRhdGVyIHJlcGxhY2UgYSBkYXRhc2V0IGluIHN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCByZXBsYWNlRGF0YUluTWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIHtwYXlsb2FkfToge3BheWxvYWQ6IFJlcGxhY2VEYXRhSW5NYXBQYXlsb2FkfVxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGNvbnN0IHtkYXRhc2V0VG9SZXBsYWNlSWQsIGRhdGFzZXRUb1VzZSwgb3B0aW9ucyA9IHt9fSA9IHBheWxvYWQ7XG4gIGNvbnN0IGFkZERhdGFUb01hcE9wdGlvbnMgPSB7Li4uZGVmYXVsdFJlcGxhY2VEYXRhVG9NYXBPcHRpb25zLCAuLi5vcHRpb25zfTtcblxuICAvLyBjaGVjayBpZiBkYXRhc2V0IGlzIHRoZXJlXG4gIGlmICghc3RhdGUudmlzU3RhdGUuZGF0YXNldHNbZGF0YXNldFRvUmVwbGFjZUlkXSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICAvLyBkYXRhc2V0VG9Vc2UgaXMgUHJvdG9EYXRhc2V0XG4gIGNvbnN0IGRhdGFJZFRvVXNlID0gZGF0YXNldFRvVXNlLmluZm8uaWQ7XG4gIGlmICghZGF0YUlkVG9Vc2UpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgLy8gcmVtb3ZlIGRhdGFzZXQgYW5kIHB1dCBkZXBlbmRlbmNpZXMgaW4gdG9CZU1lcmdlZFxuICBjb25zdCBwcmVwYXJlZFN0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIHZpc1N0YXRlOiBwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZShzdGF0ZS52aXNTdGF0ZSwgZGF0YXNldFRvUmVwbGFjZUlkLCBkYXRhSWRUb1VzZSlcbiAgfTtcblxuICBjb25zdCBuZXh0U3RhdGUgPSBhZGREYXRhVG9NYXBVcGRhdGVyKFxuICAgIHByZXBhcmVkU3RhdGUsXG4gICAgcGF5bG9hZF8oe1xuICAgICAgZGF0YXNldHM6IGRhdGFzZXRUb1VzZSxcbiAgICAgIC8vIHNob3VsZCB6b29tIHRvIG5ldyBkYXRhc2V0XG4gICAgICBvcHRpb25zOiBhZGREYXRhVG9NYXBPcHRpb25zXG4gICAgfSlcbiAgKTtcblxuICByZXR1cm4gbmV4dFN0YXRlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDQTs7QUFFQSxTQUNFQSxrQkFBa0IsRUFDbEJDLHVCQUF1QixJQUFJQyw4QkFBOEIsRUFDekRDLHVCQUF1QixFQUN2QkMscUJBQXFCLElBQUlDLDRCQUE0QixFQUNyREMsdUJBQXVCLElBQUlDLDhCQUE4QixRQUNwRCxxQkFBcUI7QUFDNUIsU0FDRUMsb0JBQW9CLElBQUlDLDRCQUE0QixFQUNwREMsaUJBQWlCLEVBQ2pCQyxzQkFBc0IsRUFDdEJQLHFCQUFxQixJQUFJUSw2QkFBNkIsRUFDdERDLDZCQUE2QixRQUN4QixzQkFBc0I7QUFDN0IsU0FDRVAsdUJBQXVCLElBQUlRLHFCQUFxQixFQUNoRFYscUJBQXFCLElBQUlXLDZCQUE2QixFQUN0REMsc0JBQXNCLElBQUlDLDhCQUE4QixFQUN4REMscUJBQXFC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
|
package/dist/esm/layer-utils.js
CHANGED
|
@@ -599,4 +599,4 @@ export function areAnyDeckLayersLoading(layers) {
|
|
|
599
599
|
return layer.internalState && !layer.isLoaded;
|
|
600
600
|
});
|
|
601
601
|
}
|
|
602
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb25zb2xlIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVCIsIk9WRVJMQVlfVFlQRV9DT05TVCIsImdldEVkaXRvckxheWVyIiwiaXNGdW5jdGlvbiIsImdldE1hcExheWVyc0Zyb21TcGxpdE1hcHMiLCJEYXRhUm93IiwiaXNQbGFpbk9iamVjdCIsImFycmF5TW92ZSIsImdlbmVyYXRlSGFzaElkIiwiVGhyZWVEQnVpbGRpbmdMYXllciIsImZpbmREZWZhdWx0TGF5ZXIiLCJkYXRhc2V0IiwibGF5ZXJDbGFzc2VzIiwibGF5ZXJQcm9wcyIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJwcmV2aW91cyIsImxjIiwicmVzdWx0IiwiZmluZERlZmF1bHRMYXllclByb3BzIiwicHJvcHMiLCJBcnJheSIsImlzQXJyYXkiLCJmb3VuZExheWVycyIsImNvbmNhdCIsIm1hcCIsInAiLCJfb2JqZWN0U3ByZWFkIiwidHlwZSIsImRhdGFJZCIsImlkIiwiaXNWaXNpYmxlIiwibGF5ZXIiLCJzZXRJbml0aWFsTGF5ZXJDb25maWciLCJkYXRhQ29udGFpbmVyIiwibWVyZ2VMYXllclZpc0NvbmZpZ0Zvck5ld0RhdGFzZXRzIiwic3RhdGUiLCJwYXRjaCIsImRhdGFzZXRJZHNUb1BhdGNoIiwibGVuZ3RoIiwiaGFzRGVmaW5lZFBhdGNoVmFsdWUiLCJzb21lIiwia2V5IiwidW5kZWZpbmVkIiwiZGF0YXNldElkU2V0IiwiU2V0IiwibGF5ZXJzIiwiY29uZmlnIiwiaGFzIiwic2V0dGluZ3MiLCJ2aXNDb25maWdTZXR0aW5ncyIsImFsbG93ZWRLZXlzIiwiZmlsdGVyIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwicGFydGlhbCIsImFjYyIsInVwZGF0ZUxheWVyVmlzQ29uZmlnIiwiY2FsY3VsYXRlTGF5ZXJEYXRhIiwib2xkTGF5ZXJEYXRhIiwibGF5ZXJEYXRhIiwiaXNWYWxpZCIsIl9vbGREYXRhVXBkYXRlVHJpZ2dlcnMiLCJoYXNBbGxDb2x1bW5zIiwiZm9ybWF0TGF5ZXJEYXRhIiwiZGF0YXNldHMiLCJ1cGRhdGVMYXllckNvbmZpZyIsImVycm9yTWVzc2FnZSIsImVyciIsImVycm9yIiwiRXJyb3IiLCJtZXNzYWdlIiwic3Vic3RyaW5nIiwiZ2V0TGF5ZXJIb3ZlclByb3AiLCJfcmVmIiwiYW5pbWF0aW9uQ29uZmlnIiwiaW50ZXJhY3Rpb25Db25maWciLCJob3ZlckluZm8iLCJsYXllcnNUb1JlbmRlciIsInRvb2x0aXAiLCJlbmFibGVkIiwicGlja2VkIiwib2JqZWN0Iiwib3ZlcmxheSIsImlkeCIsImluZGV4IiwiZ2V0SG92ZXJEYXRhIiwiX2RhdGFzZXRzJGRhdGFJZCIsImZpZWxkcyIsImRhdGEiLCJmaWVsZHNUb1Nob3ciLCJjdXJyZW50VGltZSIsInJlbmRlckRlY2tHbExheWVyIiwibGF5ZXJDYWxsYmFja3MiLCJsYXllckluZGV4IiwiY2xpY2tlZCIsIm1hcFN0YXRlIiwibWFwTGF5ZXJzIiwiZXhwZXJpbWVudGFsQ29udGV4dCIsIl9yZWYyIiwiZ3B1RmlsdGVyIiwib2JqZWN0SG92ZXJlZCIsInZpc2libGUiLCJyZW5kZXJMYXllciIsImlzTGF5ZXJSZW5kZXJhYmxlIiwic2hvdWxkUmVuZGVyTGF5ZXIiLCJpc0xheWVyVmlzaWJsZSIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiYWNjdSIsIl9kZWZpbmVQcm9wZXJ0eSIsIm92ZXJsYXlUeXBlIiwiZGVja2dsIiwicHJlcGFyZUxheWVyc1RvUmVuZGVyIiwiZ2V0Q3VzdG9tRGVja0xheWVycyIsImRlY2tHbFByb3BzIiwiYm90dG9tRGVja0xheWVycyIsInRvcERlY2tMYXllcnMiLCJ0b3BMYXllcnMiLCJiaW5kTGF5ZXJDYWxsYmFja3MiLCJhcmd1bWVudHMiLCJ2YWwiLCJjb21wdXRlRGVja0xheWVyc0Zyb21MYXllck9yZGVyIiwibGF5ZXJPcmRlciIsImN1cnJlbnRMYXllcnNGb3JEZWNrIiwicmVuZGVyUHJvcHMiLCJoYXNTaGFkb3dFZmZlY3QiLCJzbGljZSIsInJldmVyc2UiLCJvdmVybGF5cyIsImVsZW1lbnQiLCJsYXllckdyb3VwIiwibGF5ZXJJZCIsImZpbmRJbmRleCIsIl9yZWYzIiwiYmluZGVkTGF5ZXJDYWxsYmFja3MiLCJsYXllck92ZXJsYXkiLCJjb21wdXRlRGVja0xheWVycyIsIl9yZWY0Iiwib3B0aW9ucyIsInZpc1N0YXRlIiwibWFwU3R5bGUiLCJlZmZlY3RzIiwic3BsaXRNYXBzIiwiX3JlZjUiLCJtYXBJbmRleCIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwicHJpbWFyeU1hcCIsImxheWVyc0ZvckRlY2siLCJlZGl0b3JJbmZvIiwiZGF0YUxheWVycyIsImVmZmVjdCIsIl9yZWY2IiwidmlzaWJsZUxheWVyR3JvdXBzIiwicHVzaCIsInRocmVlREJ1aWxkaW5nQ29sb3IiLCJ1cGRhdGVUcmlnZ2VycyIsImdldEZpbGxDb2xvciIsIl9nZXRDdXN0b21EZWNrTGF5ZXJzIiwiX2dldEN1c3RvbURlY2tMYXllcnMyIiwiX3NsaWNlZFRvQXJyYXkiLCJjdXN0b21Cb3R0b21EZWNrTGF5ZXJzIiwiY3VzdG9tVG9wRGVja0xheWVycyIsImVkaXRvckxheWVyIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZ2V0TGF5ZXJPcmRlckZyb21MYXllcnMiLCJfcmVmNyIsImdldE5ld0xheWVyR3JvdXAiLCJfcHJvcHMkaWQiLCJfcHJvcHMkbGFiZWwiLCJfcHJvcHMkaXNWaXNpYmxlIiwiX3Byb3BzJGxheWVyT3JkZXIiLCJfcHJvcHMkaXNJbmNsdWRlZEluTGUiLCJsYWJlbCIsImlzSW5jbHVkZWRJbkxlZ2VuZCIsImFkZExheWVyT3JHcm91cFRvTGF5ZXJPcmRlciIsImF0SW5kZXgiLCJzcGxpY2UiLCJyZW1vdmVFbGVtZW50RnJvbUxheWVyT3JkZXIiLCJlbGVtZW50SWQiLCJuZXdMYXllck9yZGVyIiwiZW50cnkiLCJncm91cCIsImdldExheWVyR3JvdXBGcm9tTGF5ZXJPcmRlciIsImxheWVyR3JvdXBJZCIsImkiLCJncnAiLCJmaW5kUGFyZW50R3JvdXBGb3JMYXllciIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsImUiLCJuZXN0ZWQiLCJmIiwiZ2V0SW5kZXhGcm9tTGF5ZXJFbnRyeUlkIiwibGF5ZXJFbnRyeUlkIiwiaXNMYXllclByZXNlbnRJbkxheWVyT3JkZXIiLCJmb3VuZCIsInJlcGxhY2VMYXllckVudHJ5SW5MYXllck9yZGVyIiwib2xkRW50cnkiLCJuZXdFbnRyeSIsIm9sZEVudHJ5SWQiLCJ1cGRhdGVMYXllckdyb3VwSW5MYXllck9yZGVyIiwibmV3TGF5ZXJHcm91cCIsImdldEZsYXRMYXllck9yZGVyIiwib3JkZXJFbnRyeSIsImJ1aWxkTGF5ZXJPcmRlckhpZXJhcmNoeSIsInZhbGlkTGF5ZXJzIiwiQm9vbGVhbiIsImZpbmQiLCJsIiwiaGlkZGVuIiwicmVtb3ZlR2hvc3RMYXllckZyb21MYXllck9yZGVyIiwicmVvcmRlckxheWVyT3JkZXIiLCJvcmlnaW5MYXllcklkIiwiZGVzdGluYXRpb25MYXllcklkIiwiYWN0aXZlSW5kZXgiLCJvdmVySW5kZXgiLCJhZGRMYXllclRvTGF5ZXJPcmRlciIsImdldExheWVySG92ZXJQcm9wVmFsdWUiLCJmaWVsZEluZGV4IiwidmFsdWVBdCIsImFyZUFueURlY2tMYXllcnNMb2FkaW5nIiwiaW50ZXJuYWxTdGF0ZSIsImlzTG9hZGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xheWVyLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBDb25zb2xlIGZyb20gJ2dsb2JhbC9jb25zb2xlJztcblxuaW1wb3J0IHtHRU9DT0RFUl9MQVlFUl9JRCwgTElHSFRfQU5EX1NIQURPV19FRkZFQ1R9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7TGF5ZXIgYXMgRGVja0xheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbnR5cGUgRGVja0xheWVyUHJvcHMgPSBhbnk7XG5pbXBvcnQge1xuICBGaWVsZCxcbiAgTGF5ZXJWaXNDb25maWcsXG4gIFRvb2x0aXBGaWVsZCxcbiAgQ29tcGFyZVR5cGUsXG4gIFNwbGl0TWFwTGF5ZXJzLFxuICBFZGl0b3IsXG4gIEZlYXR1cmUsXG4gIEZlYXR1cmVTZWxlY3Rpb25Db250ZXh0LFxuICBCaW5kZWRMYXllckNhbGxiYWNrcyxcbiAgTGF5ZXJDYWxsYmFja3MsXG4gIFZpZXdwb3J0LFxuICBMYXllck9yZGVyR3JvdXAsXG4gIExheWVyT3JkZXIsXG4gIExheWVyT3JkZXJFbnRyeSxcbiAgRmxhdExheWVyT3JkZXIsXG4gIExheWVyT3JkZXJIaWVyYXJjaHlcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZSxcbiAgRmluZERlZmF1bHRMYXllclByb3BzLFxuICBMYXllcixcbiAgTGF5ZXJDbGFzc2VzVHlwZSxcbiAgT1ZFUkxBWV9UWVBFX0NPTlNULFxuICBnZXRFZGl0b3JMYXllclxufSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5cbmltcG9ydCBLZXBsZXJUYWJsZSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQge2lzRnVuY3Rpb24sIGdldE1hcExheWVyc0Zyb21TcGxpdE1hcHMsIERhdGFSb3csIGlzUGxhaW5PYmplY3R9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHthcnJheU1vdmUsIGdlbmVyYXRlSGFzaElkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5cbmltcG9ydCB7VGhyZWVEQnVpbGRpbmdMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcblxuZXhwb3J0IHR5cGUgTGF5ZXJzVG9SZW5kZXIgPSB7XG4gIFtsYXllcklkOiBzdHJpbmddOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSA9IHtcbiAgcG9pbnRzOiBhbnlbXTtcbiAgY29sb3JWYWx1ZT86IGFueTtcbiAgZWxldmF0aW9uVmFsdWU/OiBhbnk7XG4gIGFnZ3JlZ2F0ZWREYXRhPzogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICB7XG4gICAgICBtZWFzdXJlOiBzdHJpbmc7XG4gICAgICB2YWx1ZT86IGFueTtcbiAgICB9XG4gID47XG59O1xuXG5leHBvcnQgdHlwZSBMYXllckhvdmVyUHJvcCA9IHtcbiAgZGF0YTogRGF0YVJvdyB8IEFnZ3JlZ2F0aW9uTGF5ZXJIb3ZlckRhdGEgfCBhbnlbXSB8IG51bGw7XG4gIGZpZWxkczogRmllbGRbXTtcbiAgZmllbGRzVG9TaG93OiBUb29sdGlwRmllbGRbXTtcbiAgbGF5ZXI6IExheWVyO1xuICBwcmltYXJ5RGF0YT86IERhdGFSb3cgfCBBZ2dyZWdhdGlvbkxheWVySG92ZXJEYXRhIHwgYW55W10gfCBudWxsO1xuICBjb21wYXJlVHlwZT86IENvbXBhcmVUeXBlO1xuICBjdXJyZW50VGltZT86IFZpc1N0YXRlWydhbmltYXRpb25Db25maWcnXVsnY3VycmVudFRpbWUnXTtcbn07XG5cbi8qKlxuICogRmluZCBkZWZhdWx0IGxheWVycyBmcm9tIGZpZWxkc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZERlZmF1bHRMYXllcihkYXRhc2V0OiBLZXBsZXJUYWJsZSwgbGF5ZXJDbGFzc2VzOiBMYXllckNsYXNzZXNUeXBlKTogTGF5ZXJbXSB7XG4gIGlmICghZGF0YXNldCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGxheWVyUHJvcHMgPSAoT2JqZWN0LmtleXMobGF5ZXJDbGFzc2VzKSBhcyBBcnJheTxrZXlvZiBMYXllckNsYXNzZXNUeXBlPikucmVkdWNlKFxuICAgIChwcmV2aW91cywgbGMpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdDogRmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWUgPVxuICAgICAgICB0eXBlb2YgbGF5ZXJDbGFzc2VzW2xjXS5maW5kRGVmYXVsdExheWVyUHJvcHMgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICA/IGxheWVyQ2xhc3Nlc1tsY10uZmluZERlZmF1bHRMYXllclByb3BzKGRhdGFzZXQsIHByZXZpb3VzKVxuICAgICAgICAgIDoge3Byb3BzOiBbXX07XG5cbiAgICAgIGNvbnN0IHByb3BzID0gQXJyYXkuaXNBcnJheShyZXN1bHQpID8gcmVzdWx0IDogcmVzdWx0LnByb3BzIHx8IFtdO1xuICAgICAgY29uc3QgZm91bmRMYXllcnMgPSByZXN1bHQuZm91bmRMYXllcnMgfHwgcHJldmlvdXM7XG5cbiAgICAgIHJldHVybiBmb3VuZExheWVycy5jb25jYXQoXG4gICAgICAgIHByb3BzLm1hcChwID0+ICh7XG4gICAgICAgICAgLi4ucCxcbiAgICAgICAgICB0eXBlOiBsYyxcbiAgICAgICAgICBkYXRhSWQ6IGRhdGFzZXQuaWQsXG4gICAgICAgICAgLy8gc2V0IGFyYyBsYXllciBpbml0aWFsIHZpc2libGl0eSB0byBmYWxzZSwgYmVjYXVzZSBhcmNzIHRlbmQgdG8gYmUgdG9vIG11c3lcbiAgICAgICAgICAuLi4obGMgPT09ICdhcmMnIHx8IGxjID09PSAnbGluZScgPyB7aXNWaXNpYmxlOiBmYWxzZX0gOiB7fSlcbiAgICAgICAgfSkpXG4gICAgICApO1xuICAgIH0sXG4gICAgW10gYXMgKEZpbmREZWZhdWx0TGF5ZXJQcm9wcyAmIHt0eXBlOiBzdHJpbmd9KVtdXG4gICk7XG5cbiAgLy8gZ28gdGhyb3VnaCBhbGwgbGF5ZXJQcm9wcyB0byBjcmVhdGUgbGF5ZXJcbiAgcmV0dXJuIGxheWVyUHJvcHMubWFwKHByb3BzID0+IHtcbiAgICBjb25zdCBsYXllciA9IG5ldyBsYXllckNsYXNzZXNbcHJvcHMudHlwZV0ocHJvcHMpO1xuICAgIHJldHVybiB0eXBlb2YgbGF5ZXIuc2V0SW5pdGlhbExheWVyQ29uZmlnID09PSAnZnVuY3Rpb24nICYmIGRhdGFzZXQuZGF0YUNvbnRhaW5lclxuICAgICAgPyBsYXllci5zZXRJbml0aWFsTGF5ZXJDb25maWcoZGF0YXNldClcbiAgICAgIDogbGF5ZXI7XG4gIH0pO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgYHBhdGNoYCB0byBgY29uZmlnLnZpc0NvbmZpZ2Agb25seSBmb3IgbGF5ZXJzIHdob3NlIGBkYXRhSWRgIGlzIGluIGBkYXRhc2V0SWRzVG9QYXRjaGAuXG4gKiBMYXllcnMgZm9yIGRhdGFzZXRzIHRoYXQgd2VyZSBhbHJlYWR5IG9uIHRoZSBtYXAgYXJlIGxlZnQgdW5jaGFuZ2VkIOKAlCBgYWRkRGF0YVRvTWFwYFxuICogS2V5cyB3aG9zZSBwYXRjaCB2YWx1ZSBpcyBgdW5kZWZpbmVkYCBhcmUgc2tpcHBlZCBzbyBleGlzdGluZyB2aXNDb25maWcgaXMgbm90IGNsZWFyZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUxheWVyVmlzQ29uZmlnRm9yTmV3RGF0YXNldHMoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgcGF0Y2g6IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+IHwgdW5kZWZpbmVkLFxuICBkYXRhc2V0SWRzVG9QYXRjaDogc3RyaW5nW11cbik6IFZpc1N0YXRlIHtcbiAgaWYgKCFwYXRjaCB8fCAhT2JqZWN0LmtleXMocGF0Y2gpLmxlbmd0aCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IGhhc0RlZmluZWRQYXRjaFZhbHVlID0gKE9iamVjdC5rZXlzKHBhdGNoKSBhcyBBcnJheTxrZXlvZiBMYXllclZpc0NvbmZpZz4pLnNvbWUoXG4gICAga2V5ID0+IHBhdGNoW2tleV0gIT09IHVuZGVmaW5lZFxuICApO1xuICBpZiAoIWhhc0RlZmluZWRQYXRjaFZhbHVlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgZGF0YXNldElkU2V0ID0gbmV3IFNldChkYXRhc2V0SWRzVG9QYXRjaCk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXllcnM6IHN0YXRlLmxheWVycy5tYXAobGF5ZXIgPT4ge1xuICAgICAgaWYgKCFsYXllci5jb25maWcuZGF0YUlkIHx8ICFkYXRhc2V0SWRTZXQuaGFzKGxheWVyLmNvbmZpZy5kYXRhSWQpKSB7XG4gICAgICAgIHJldHVybiBsYXllcjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNldHRpbmdzID0gbGF5ZXIudmlzQ29uZmlnU2V0dGluZ3M7XG4gICAgICBpZiAoIXNldHRpbmdzKSB7XG4gICAgICAgIHJldHVybiBsYXllcjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFsbG93ZWRLZXlzID0gKE9iamVjdC5rZXlzKHBhdGNoKSBhcyBBcnJheTxrZXlvZiBMYXllclZpc0NvbmZpZz4pLmZpbHRlcihcbiAgICAgICAga2V5ID0+IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzZXR0aW5ncywga2V5KSAmJiBwYXRjaFtrZXldICE9PSB1bmRlZmluZWRcbiAgICAgICk7XG4gICAgICBpZiAoIWFsbG93ZWRLZXlzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbGF5ZXI7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJ0aWFsID0gYWxsb3dlZEtleXMucmVkdWNlPFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+PigoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgYWNjW2tleV0gPSBwYXRjaFtrZXldO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30pO1xuICAgICAgcmV0dXJuIGxheWVyLnVwZGF0ZUxheWVyVmlzQ29uZmlnKHBhcnRpYWwpO1xuICAgIH0pXG4gIH07XG59XG5cbnR5cGUgTWluVmlzU3RhdGVGb3JMYXllckRhdGEgPSB7XG4gIGRhdGFzZXRzOiBWaXNTdGF0ZVsnZGF0YXNldHMnXTtcbiAgYW5pbWF0aW9uQ29uZmlnOiBWaXNTdGF0ZVsnYW5pbWF0aW9uQ29uZmlnJ107XG59O1xuXG4vKipcbiAqIENhbGN1bGF0ZSBsYXllciBkYXRhIGJhc2VkIG9uIGxheWVyIHR5cGUsIGNvbCBDb25maWcsXG4gKiByZXR1cm4gdXBkYXRlZCBsYXllciBpZiBjb2xvckRvbWFpbiwgZGF0YU1hcCBoYXMgY2hhbmdlZC5cbiAqIEFsc28sIHJldHVybnMgdXBkYXRlZCBsYXllciBpbiBjYXNlIHRoZSBpbnB1dCBsYXllciB3YXMgaW4gaW52YWxpZCBzdGF0ZS5cbiAqIEFkZHMgYW4gZXJyb3IgbWVzc2FnZSB0byB0aGUgbGF5ZXIgaW4gY2FzZSBvZiBhbiBleGNlcHRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVMYXllckRhdGE8UyBleHRlbmRzIE1pblZpc1N0YXRlRm9yTGF5ZXJEYXRhPihcbiAgbGF5ZXI6IExheWVyLFxuICBzdGF0ZTogUyxcbiAgb2xkTGF5ZXJEYXRhPzogYW55XG4pOiB7XG4gIGxheWVyRGF0YTogYW55O1xuICBsYXllcjogTGF5ZXI7XG59IHtcbiAgbGV0IGxheWVyRGF0YTtcbiAgdHJ5IHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIGxheWVyIHVwZGF0ZXMgZGF0YSBhZnRlciBhbiBlcnJvclxuICAgIGlmICghbGF5ZXIuaXNWYWxpZCkge1xuICAgICAgbGF5ZXIuX29sZERhdGFVcGRhdGVUcmlnZ2VycyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoIWxheWVyLnR5cGUgfHwgIWxheWVyLmhhc0FsbENvbHVtbnMoKSB8fCAhbGF5ZXIuY29uZmlnLmRhdGFJZCkge1xuICAgICAgcmV0dXJuIHtsYXllciwgbGF5ZXJEYXRhOiB7fX07XG4gICAgfVxuXG4gICAgbGF5ZXJEYXRhID0gbGF5ZXIuZm9ybWF0TGF5ZXJEYXRhKHN0YXRlLmRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuXG4gICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgZGF0YSBmb3IgdGhlIGxheWVyIGlzIHVwZGF0ZWQgd2l0aG91dCBlcnJvcnNcbiAgICBpZiAoIWxheWVyLmlzVmFsaWQpIHtcbiAgICAgIC8vIFN3aXRjaCB0byB2aXNpYmxlIGFmdGVyIGFuIGVycm9yXG4gICAgICBsYXllciA9IGxheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgaXNWaXNpYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gICAgbGF5ZXIuaXNWYWxpZCA9IHRydWU7XG4gICAgbGF5ZXIuZXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgQ29uc29sZS5lcnJvcihlcnIpO1xuICAgIGxheWVyID0gbGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgaXNWaXNpYmxlOiBmYWxzZVxuICAgIH0pO1xuICAgIGxheWVyLmlzVmFsaWQgPSBmYWxzZTtcblxuICAgIGxheWVyLmVycm9yTWVzc2FnZSA9XG4gICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciAmJiBlcnIubWVzc2FnZSA/IGVyci5tZXNzYWdlLnN1YnN0cmluZygwLCAxMDApIDogJ1Vua25vd24gZXJyb3InO1xuXG4gICAgbGF5ZXJEYXRhID0ge307XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxheWVyLFxuICAgIGxheWVyRGF0YVxuICB9O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBwcm9wcyBwYXNzZWQgdG8gTGF5ZXJIb3ZlckluZm9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVySG92ZXJQcm9wKHtcbiAgYW5pbWF0aW9uQ29uZmlnLFxuICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgaG92ZXJJbmZvLFxuICBsYXllcnMsXG4gIGxheWVyc1RvUmVuZGVyLFxuICBkYXRhc2V0c1xufToge1xuICBpbnRlcmFjdGlvbkNvbmZpZzogVmlzU3RhdGVbJ2ludGVyYWN0aW9uQ29uZmlnJ107XG4gIGFuaW1hdGlvbkNvbmZpZzogVmlzU3RhdGVbJ2FuaW1hdGlvbkNvbmZpZyddO1xuICBob3ZlckluZm86IFZpc1N0YXRlWydob3ZlckluZm8nXTtcbiAgbGF5ZXJzOiBWaXNTdGF0ZVsnbGF5ZXJzJ107XG4gIGxheWVyc1RvUmVuZGVyOiBMYXllcnNUb1JlbmRlcjtcbiAgZGF0YXNldHM6IFZpc1N0YXRlWydkYXRhc2V0cyddO1xufSk6IExheWVySG92ZXJQcm9wIHwgbnVsbCB7XG4gIGlmIChpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmVuYWJsZWQgJiYgaG92ZXJJbmZvICYmIGhvdmVySW5mby5waWNrZWQpIHtcbiAgICAvLyBpZiBhbnl0aGluZyBob3ZlcmVkXG4gICAgY29uc3Qge29iamVjdCwgbGF5ZXI6IG92ZXJsYXl9ID0gaG92ZXJJbmZvO1xuXG4gICAgLy8gZGVja2dsIGxheWVyIHRvIGtlcGxlci1nbCBsYXllclxuICAgIGNvbnN0IGxheWVyID0gbGF5ZXJzW292ZXJsYXkucHJvcHMuaWR4XTtcblxuICAgIC8vIE5PVEU6IGZvciBiaW5hcnkgZm9ybWF0IEdlb2pzb25MYXllciwgZGVjayB3aWxsIHJldHVybiBvYmplY3Q9bnVsbCBidXQgaG92ZXJJbmZvLmluZGV4ID49IDBcbiAgICBpZiAoXG4gICAgICAob2JqZWN0IHx8IGhvdmVySW5mby5pbmRleCA+PSAwKSAmJlxuICAgICAgbGF5ZXIgJiZcbiAgICAgIGxheWVyLmdldEhvdmVyRGF0YSAmJlxuICAgICAgbGF5ZXJzVG9SZW5kZXJbbGF5ZXIuaWRdXG4gICAgKSB7XG4gICAgICAvLyBpZiBsYXllciBpcyB2aXNpYmxlIGFuZCBoYXZlIGhvdmVyZWQgZGF0YVxuICAgICAgY29uc3Qge1xuICAgICAgICBjb25maWc6IHtkYXRhSWR9XG4gICAgICB9ID0gbGF5ZXI7XG4gICAgICBpZiAoIWRhdGFJZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyLCBmaWVsZHN9ID0gZGF0YXNldHNbZGF0YUlkXTtcbiAgICAgIGNvbnN0IGRhdGE6IERhdGFSb3cgfCBudWxsID0gbGF5ZXIuZ2V0SG92ZXJEYXRhKFxuICAgICAgICBvYmplY3QgfHwgaG92ZXJJbmZvLmluZGV4LFxuICAgICAgICBkYXRhQ29udGFpbmVyLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICAgICAgaG92ZXJJbmZvXG4gICAgICApO1xuICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgZmllbGRzVG9TaG93ID0gaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5jb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGEsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgZmllbGRzVG9TaG93LFxuICAgICAgICBsYXllcixcbiAgICAgICAgY3VycmVudFRpbWU6IGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckRlY2tHbExheWVyKHByb3BzOiBhbnksIGxheWVyQ2FsbGJhY2tzOiB7W2tleTogc3RyaW5nXTogYW55fSkge1xuICBjb25zdCB7XG4gICAgZGF0YXNldHMsXG4gICAgbGF5ZXIsXG4gICAgbGF5ZXJJbmRleCxcbiAgICBkYXRhLFxuICAgIGhvdmVySW5mbyxcbiAgICBjbGlja2VkLFxuICAgIG1hcFN0YXRlLFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBtYXBMYXllcnMsXG4gICAgZXhwZXJpbWVudGFsQ29udGV4dFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXTtcbiAgY29uc3Qge2dwdUZpbHRlcn0gPSBkYXRhc2V0IHx8IHt9O1xuICBjb25zdCBvYmplY3RIb3ZlcmVkID0gY2xpY2tlZCB8fCBob3ZlckluZm87XG4gIGNvbnN0IHZpc2libGUgPSAhbWFwTGF5ZXJzIHx8IChtYXBMYXllcnMgJiYgbWFwTGF5ZXJzW2xheWVyLmlkXSk7XG4gIC8vIExheWVyIGlzIExheWVyIGNsYXNzXG4gIHJldHVybiBsYXllci5yZW5kZXJMYXllcih7XG4gICAgZGF0YSxcbiAgICBncHVGaWx0ZXIsXG4gICAgaWR4OiBsYXllckluZGV4LFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGxheWVyQ2FsbGJhY2tzLFxuICAgIG1hcFN0YXRlLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBvYmplY3RIb3ZlcmVkLFxuICAgIHZpc2libGUsXG4gICAgZGF0YXNldCxcbiAgICBleHBlcmltZW50YWxDb250ZXh0XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMYXllclJlbmRlcmFibGUobGF5ZXI6IExheWVyLCBsYXllckRhdGEpIHtcbiAgcmV0dXJuIGxheWVyLmlkICE9PSBHRU9DT0RFUl9MQVlFUl9JRCAmJiBsYXllci5zaG91bGRSZW5kZXJMYXllcihsYXllckRhdGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMYXllclZpc2libGUobGF5ZXIsIG1hcExheWVycykge1xuICByZXR1cm4gKFxuICAgIGxheWVyLmNvbmZpZy5pc1Zpc2libGUgJiZcbiAgICAvLyBpZiBsYXllci5pZCBpcyBub3QgaW4gbWFwTGF5ZXJzLCBkb24ndCByZW5kZXIgaXRcbiAgICAoIW1hcExheWVycyB8fCAobWFwTGF5ZXJzICYmIG1hcExheWVyc1tsYXllci5pZF0pKVxuICApO1xufVxuXG4vLyBQcmVwYXJlIGEgZGljdCBvZiBsYXllcnMgcmVuZGVyZWQgYnkgdGhlIGRlY2suZ2xcbi8vIE5vdGUsIGlzVmlzaWJsZTogZmFsc2UgbGF5ZXIgaXMgcGFzc2VkIHRvIGRlY2suZ2wgaGVyZVxuLy8gcmV0dXJuIHtbaWRdOiB0cnVlIFxcIGZhbHNlfVxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVMYXllcnNGb3JEZWNrKFxuICBsYXllcnM6IExheWVyW10sXG4gIGxheWVyRGF0YTogVmlzU3RhdGVbJ2xheWVyRGF0YSddXG4pOiB7XG4gIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG59IHtcbiAgcmV0dXJuIGxheWVycy5yZWR1Y2UoXG4gICAgKGFjY3UsIGxheWVyLCBpZHgpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2xheWVyLmlkXTpcbiAgICAgICAgaXNMYXllclJlbmRlcmFibGUobGF5ZXIsIGxheWVyRGF0YVtpZHhdKSAmJiBsYXllci5vdmVybGF5VHlwZSA9PT0gT1ZFUkxBWV9UWVBFX0NPTlNULmRlY2tnbFxuICAgIH0pLFxuICAgIHt9XG4gICk7XG59XG5cbi8vIFByZXBhcmUgYSBkaWN0IG9mIHJlbmRlcmVkIGxheWVycyByZW5kZXJlZCBpbiB0aGUgbWFwXG4vLyBUaGlzIGluY2x1ZGVzIG9ubHkgdGhlIHZpc2liaWxlIGxheWVycyBmb3Igc2luZ2xlIG1hcCB2aWV3IGFuZCBzcGxpdCBtYXAgdmlld1xuLy8gcmV0dXJuIHtbaWRdOiB0cnVlIFxcIGZhbHNlfVxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVMYXllcnNUb1JlbmRlcihcbiAgbGF5ZXJzOiBMYXllcltdLFxuICBsYXllckRhdGE6IFZpc1N0YXRlWydsYXllckRhdGEnXSxcbiAgbWFwTGF5ZXJzPzogU3BsaXRNYXBMYXllcnMgfCB1bmRlZmluZWQgfCBudWxsXG4pOiBMYXllcnNUb1JlbmRlciB7XG4gIHJldHVybiBsYXllcnMucmVkdWNlKFxuICAgIChhY2N1LCBsYXllciwgaWR4KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtsYXllci5pZF06IGlzTGF5ZXJSZW5kZXJhYmxlKGxheWVyLCBsYXllckRhdGFbaWR4XSkgJiYgaXNMYXllclZpc2libGUobGF5ZXIsIG1hcExheWVycylcbiAgICB9KSxcbiAgICB7fVxuICApO1xufVxuXG50eXBlIEN1c3RvbURlY2tMYXllciA9IERlY2tMYXllcjxEZWNrTGF5ZXJQcm9wcz47XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXN0b21EZWNrTGF5ZXJzKGRlY2tHbFByb3BzPzogYW55KTogW0N1c3RvbURlY2tMYXllcltdLCBDdXN0b21EZWNrTGF5ZXJbXV0ge1xuICBjb25zdCBib3R0b21EZWNrTGF5ZXJzID0gQXJyYXkuaXNBcnJheShkZWNrR2xQcm9wcz8ubGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LmxheWVyc1xuICAgIDogaXNGdW5jdGlvbihkZWNrR2xQcm9wcz8ubGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LmxheWVycygpXG4gICAgOiBbXTtcbiAgY29uc3QgdG9wRGVja0xheWVycyA9IEFycmF5LmlzQXJyYXkoZGVja0dsUHJvcHM/LnRvcExheWVycylcbiAgICA/IGRlY2tHbFByb3BzPy50b3BMYXllcnNcbiAgICA6IGlzRnVuY3Rpb24oZGVja0dsUHJvcHM/LnRvcExheWVycylcbiAgICA/IGRlY2tHbFByb3BzPy50b3BMYXllcnMoKVxuICAgIDogW107XG5cbiAgcmV0dXJuIFtib3R0b21EZWNrTGF5ZXJzLCB0b3BEZWNrTGF5ZXJzXTtcbn1cblxuZXhwb3J0IHR5cGUgQ29tcHV0ZURlY2tMYXllcnNQcm9wcyA9IHtcbiAgbWFwSW5kZXg/OiBudW1iZXI7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICBtYXBib3hBcGlVcmw/OiBzdHJpbmc7XG4gIHByaW1hcnlNYXA/OiBib29sZWFuO1xuICBsYXllcnNGb3JEZWNrPzoge1trZXk6IHN0cmluZ106IGJvb2xlYW59O1xuICBlZGl0b3JJbmZvPzoge1xuICAgIGVkaXRvcjogRWRpdG9yO1xuICAgIGVkaXRvck1lbnVBY3RpdmU6IGJvb2xlYW47XG4gICAgb25TZXRGZWF0dXJlczogKGZlYXR1cmVzOiBGZWF0dXJlW10pID0+IGFueTtcbiAgICBzZXRTZWxlY3RlZEZlYXR1cmU6IChcbiAgICAgIGZlYXR1cmU6IEZlYXR1cmUgfCBudWxsLFxuICAgICAgc2VsZWN0aW9uQ29udGV4dD86IEZlYXR1cmVTZWxlY3Rpb25Db250ZXh0XG4gICAgKSA9PiBhbnk7XG4gICAgb25BcHBseVBvbHlnb25GaWx0ZXJBbGw/OiAoZmVhdHVyZTogRmVhdHVyZSkgPT4gYW55O1xuICAgIGZlYXR1cmVDb2xsZWN0aW9uOiB7XG4gICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICBmZWF0dXJlczogRmVhdHVyZVtdO1xuICAgIH07XG4gICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlczogbnVtYmVyW107XG4gICAgdmlld3BvcnQ6IFZpZXdwb3J0O1xuICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRMYXllckNhbGxiYWNrcyhcbiAgbGF5ZXJDYWxsYmFja3M6IExheWVyQ2FsbGJhY2tzID0ge30sXG4gIGlkeDogbnVtYmVyXG4pOiBCaW5kZWRMYXllckNhbGxiYWNrcyB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhsYXllckNhbGxiYWNrcykucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2tleV06IHZhbCA9PiBsYXllckNhbGxiYWNrc1trZXldKGlkeCwgdmFsKVxuICAgIH0pLFxuICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsICh2YWw6IHVua25vd24pID0+IHZvaWQ+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVEZWNrTGF5ZXJzRnJvbUxheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IExheWVyT3JkZXIsXG4gIGxheWVyczogTGF5ZXJbXSxcbiAgbGF5ZXJEYXRhOiBhbnlbXSxcbiAgY3VycmVudExheWVyc0ZvckRlY2s6IHtba2V5OiBzdHJpbmddOiBib29sZWFufSxcbiAgcmVuZGVyUHJvcHM6IHtcbiAgICBkYXRhc2V0czogYW55O1xuICAgIGhvdmVySW5mbzogYW55O1xuICAgIGNsaWNrZWQ6IGFueTtcbiAgICBtYXBTdGF0ZTogYW55O1xuICAgIGludGVyYWN0aW9uQ29uZmlnOiBhbnk7XG4gICAgYW5pbWF0aW9uQ29uZmlnOiBhbnk7XG4gICAgbWFwTGF5ZXJzOiBhbnk7XG4gICAgaGFzU2hhZG93RWZmZWN0OiBib29sZWFuO1xuICB9LFxuICBsYXllckNhbGxiYWNrcz86IGFueVxuKTogYW55W10ge1xuICBjb25zdCB7ZGF0YXNldHMsIGhvdmVySW5mbywgY2xpY2tlZCwgbWFwU3RhdGUsIGludGVyYWN0aW9uQ29uZmlnLCBhbmltYXRpb25Db25maWcsIG1hcExheWVycywgaGFzU2hhZG93RWZmZWN0fSA9IHJlbmRlclByb3BzO1xuICByZXR1cm4gbGF5ZXJPcmRlclxuICAgIC5zbGljZSgpXG4gICAgLnJldmVyc2UoKVxuICAgIC5yZWR1Y2UoKG92ZXJsYXlzLCBlbGVtZW50KSA9PiB7XG4gICAgICBpZiAoaXNQbGFpbk9iamVjdChlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBsYXllckdyb3VwID0gZWxlbWVudCBhcyBMYXllck9yZGVyR3JvdXA7XG4gICAgICAgIGlmICghbGF5ZXJHcm91cC5pc1Zpc2libGUpIHtcbiAgICAgICAgICByZXR1cm4gb3ZlcmxheXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG92ZXJsYXlzLmNvbmNhdChcbiAgICAgICAgICBjb21wdXRlRGVja0xheWVyc0Zyb21MYXllck9yZGVyKFxuICAgICAgICAgICAgbGF5ZXJHcm91cC5sYXllck9yZGVyLFxuICAgICAgICAgICAgbGF5ZXJzLFxuICAgICAgICAgICAgbGF5ZXJEYXRhLFxuICAgICAgICAgICAgY3VycmVudExheWVyc0ZvckRlY2ssXG4gICAgICAgICAgICByZW5kZXJQcm9wcyxcbiAgICAgICAgICAgIGxheWVyQ2FsbGJhY2tzXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgbGF5ZXJJZCA9IGVsZW1lbnQgYXMgc3RyaW5nO1xuICAgICAgaWYgKCFjdXJyZW50TGF5ZXJzRm9yRGVja1tsYXllcklkXSkge1xuICAgICAgICByZXR1cm4gb3ZlcmxheXM7XG4gICAgICB9XG4gICAgICBjb25zdCBsYXllckluZGV4ID0gbGF5ZXJzLmZpbmRJbmRleCgoe2lkfSkgPT4gaWQgPT09IGxheWVySWQpO1xuICAgICAgaWYgKGxheWVySW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBvdmVybGF5cztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGJpbmRlZExheWVyQ2FsbGJhY2tzID0gbGF5ZXJDYWxsYmFja3NcbiAgICAgICAgPyBiaW5kTGF5ZXJDYWxsYmFja3MobGF5ZXJDYWxsYmFja3MsIGxheWVySW5kZXgpXG4gICAgICAgIDoge307XG4gICAgICBjb25zdCBsYXllciA9IGxheWVyc1tsYXllckluZGV4XTtcbiAgICAgIGNvbnN0IGRhdGEgPSBsYXllckRhdGFbbGF5ZXJJbmRleF07XG4gICAgICBjb25zdCBsYXllck92ZXJsYXkgPSByZW5kZXJEZWNrR2xMYXllcihcbiAgICAgICAge1xuICAgICAgICAgIGRhdGFzZXRzLFxuICAgICAgICAgIGxheWVyLFxuICAgICAgICAgIGxheWVySW5kZXgsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBob3ZlckluZm8sXG4gICAgICAgICAgY2xpY2tlZCxcbiAgICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgICBhbmltYXRpb25Db25maWcsXG4gICAgICAgICAgbWFwTGF5ZXJzLFxuICAgICAgICAgIGV4cGVyaW1lbnRhbENvbnRleHQ6IHtcbiAgICAgICAgICAgIGhhc1NoYWRvd0VmZmVjdFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYmluZGVkTGF5ZXJDYWxsYmFja3NcbiAgICAgICk7XG4gICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgfSwgW10gYXMgYW55W10pO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVEZWNrTGF5ZXJzKFxuICB7dmlzU3RhdGUsIG1hcFN0YXRlLCBtYXBTdHlsZX06IGFueSxcbiAgb3B0aW9ucz86IENvbXB1dGVEZWNrTGF5ZXJzUHJvcHMsXG4gIGxheWVyQ2FsbGJhY2tzPzogTGF5ZXJDYWxsYmFja3MsXG4gIGRlY2tHbFByb3BzPzogYW55XG4pOiBMYXllcltdIHtcbiAgY29uc3Qge1xuICAgIGRhdGFzZXRzLFxuICAgIGVmZmVjdHMsXG4gICAgbGF5ZXJzLFxuICAgIGxheWVyT3JkZXIsXG4gICAgbGF5ZXJEYXRhLFxuICAgIGhvdmVySW5mbyxcbiAgICBjbGlja2VkLFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBzcGxpdE1hcHNcbiAgfSA9IHZpc1N0YXRlO1xuXG4gIGNvbnN0IHttYXBJbmRleCwgbWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCwgcHJpbWFyeU1hcCwgbGF5ZXJzRm9yRGVjaywgZWRpdG9ySW5mb30gPVxuICAgIG9wdGlvbnMgfHwge307XG5cbiAgbGV0IGRhdGFMYXllcnM6IGFueVtdID0gW107XG5cbiAgY29uc3QgaGFzU2hhZG93RWZmZWN0ID0gZWZmZWN0cy5zb21lKGVmZmVjdCA9PiB7XG4gICAgcmV0dXJuIGVmZmVjdC50eXBlID09PSBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVC50eXBlO1xuICB9KTtcblxuICBpZiAobGF5ZXJEYXRhICYmIGxheWVyRGF0YS5sZW5ndGgpIHtcbiAgICBjb25zdCBtYXBMYXllcnMgPSBnZXRNYXBMYXllcnNGcm9tU3BsaXRNYXBzKHNwbGl0TWFwcywgbWFwSW5kZXggfHwgMCk7XG5cbiAgICBjb25zdCBjdXJyZW50TGF5ZXJzRm9yRGVjayA9IGxheWVyc0ZvckRlY2sgfHwgcHJlcGFyZUxheWVyc0ZvckRlY2sobGF5ZXJzLCBsYXllckRhdGEpO1xuXG4gICAgZGF0YUxheWVycyA9IGxheWVyT3JkZXJcbiAgICAgIC5zbGljZSgpXG4gICAgICAucmV2ZXJzZSgpXG4gICAgICAucmVkdWNlKChvdmVybGF5cywgZWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChlbGVtZW50KSkge1xuICAgICAgICAgIGNvbnN0IGxheWVyR3JvdXAgPSBlbGVtZW50IGFzIExheWVyT3JkZXJHcm91cDtcbiAgICAgICAgICBpZiAoIWxheWVyR3JvdXAuaXNWaXNpYmxlKSB7XG4gICAgICAgICAgICByZXR1cm4gb3ZlcmxheXM7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBvdmVybGF5cy5jb25jYXQoXG4gICAgICAgICAgICBjb21wdXRlRGVja0xheWVyc0Zyb21MYXllck9yZGVyKFxuICAgICAgICAgICAgICBsYXllckdyb3VwLmxheWVyT3JkZXIsXG4gICAgICAgICAgICAgIGxheWVycyxcbiAgICAgICAgICAgICAgbGF5ZXJEYXRhLFxuICAgICAgICAgICAgICBjdXJyZW50TGF5ZXJzRm9yRGVjayxcbiAgICAgICAgICAgICAge2RhdGFzZXRzLCBob3ZlckluZm8sIGNsaWNrZWQsIG1hcFN0YXRlLCBpbnRlcmFjdGlvbkNvbmZpZywgYW5pbWF0aW9uQ29uZmlnLCBtYXBMYXllcnMsIGhhc1NoYWRvd0VmZmVjdH0sXG4gICAgICAgICAgICAgIGxheWVyQ2FsbGJhY2tzXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYXllcklkID0gZWxlbWVudCBhcyBzdHJpbmc7XG4gICAgICAgIGlmICghY3VycmVudExheWVyc0ZvckRlY2tbbGF5ZXJJZF0pIHtcbiAgICAgICAgICByZXR1cm4gb3ZlcmxheXM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGF5ZXJJbmRleCA9IGxheWVycy5maW5kSW5kZXgoKHtpZH0pID0+IGlkID09PSBsYXllcklkKTtcbiAgICAgICAgaWYgKGxheWVySW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgcmV0dXJuIG92ZXJsYXlzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJpbmRlZExheWVyQ2FsbGJhY2tzID0gbGF5ZXJDYWxsYmFja3NcbiAgICAgICAgICA/IGJpbmRMYXllckNhbGxiYWNrcyhsYXllckNhbGxiYWNrcywgbGF5ZXJJbmRleClcbiAgICAgICAgICA6IHt9O1xuICAgICAgICBjb25zdCBsYXllciA9IGxheWVyc1tsYXllckluZGV4XTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGxheWVyRGF0YVtsYXllckluZGV4XTtcbiAgICAgICAgY29uc3QgbGF5ZXJPdmVybGF5ID0gcmVuZGVyRGVja0dsTGF5ZXIoXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGF0YXNldHMsXG4gICAgICAgICAgICBsYXllcixcbiAgICAgICAgICAgIGxheWVySW5kZXgsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgaG92ZXJJbmZvLFxuICAgICAgICAgICAgY2xpY2tlZCxcbiAgICAgICAgICAgIG1hcFN0YXRlLFxuICAgICAgICAgICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAgICAgICBhbmltYXRpb25Db25maWcsXG4gICAgICAgICAgICBtYXBMYXllcnMsXG4gICAgICAgICAgICBleHBlcmltZW50YWxDb250ZXh0OiB7XG4gICAgICAgICAgICAgIGhhc1NoYWRvd0VmZmVjdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgYmluZGVkTGF5ZXJDYWxsYmFja3NcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIG92ZXJsYXlzLmNvbmNhdChsYXllck92ZXJsYXkgfHwgW10pO1xuICAgICAgfSwgW10pO1xuICB9XG5cbiAgaWYgKCFwcmltYXJ5TWFwKSB7XG4gICAgcmV0dXJuIGRhdGFMYXllcnM7XG4gIH1cblxuICBpZiAoXG4gICAgbWFwU3R5bGU/LnZpc2libGVMYXllckdyb3Vwc1snM2QgYnVpbGRpbmcnXSAmJlxuICAgIHByaW1hcnlNYXAgJiZcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbiAmJlxuICAgIG1hcGJveEFwaVVybFxuICApIHtcbiAgICBkYXRhTGF5ZXJzLnB1c2goXG4gICAgICBuZXcgVGhyZWVEQnVpbGRpbmdMYXllcih7XG4gICAgICAgIGlkOiAnX2tlcGxlcmdsXzNkLWJ1aWxkaW5nJyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgdGhyZWVEQnVpbGRpbmdDb2xvcjogbWFwU3R5bGUudGhyZWVEQnVpbGRpbmdDb2xvcixcbiAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICBnZXRGaWxsQ29sb3I6IG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3JcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY29uc3QgW2N1c3RvbUJvdHRvbURlY2tMYXllcnMsIGN1c3RvbVRvcERlY2tMYXllcnNdID0gZ2V0Q3VzdG9tRGVja0xheWVycyhkZWNrR2xQcm9wcyk7XG5cbiAgY29uc3QgZWRpdG9yTGF5ZXI6IGFueVtdID0gW107XG4gIGlmIChlZGl0b3JJbmZvKSB7XG4gICAgZWRpdG9yTGF5ZXIucHVzaChcbiAgICAgIGdldEVkaXRvckxheWVyKHtcbiAgICAgICAgLi4uZWRpdG9ySW5mbyxcbiAgICAgICAgbWFwU3RhdGVcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBbLi4uY3VzdG9tQm90dG9tRGVja0xheWVycywgLi4uZGF0YUxheWVycywgLi4uY3VzdG9tVG9wRGVja0xheWVycywgLi4uZWRpdG9yTGF5ZXJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF5ZXJPcmRlckZyb21MYXllcnM8VCBleHRlbmRzIHtpZDogc3RyaW5nfT4obGF5ZXJzOiBUW10pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBsYXllcnMubWFwKCh7aWR9KSA9PiBpZCk7XG59XG5cbi8vIC0tLSBMYXllciBHcm91cCBVdGlsaXRpZXMgLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXdMYXllckdyb3VwKHByb3BzPzogUGFydGlhbDxMYXllck9yZGVyR3JvdXA+KTogTGF5ZXJPcmRlckdyb3VwIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogcHJvcHM/LmlkID8/IGdlbmVyYXRlSGFzaElkKDYpLFxuICAgIGxhYmVsOiBwcm9wcz8ubGFiZWwgPz8gJ05ldyBncm91cCcsXG4gICAgaXNWaXNpYmxlOiBwcm9wcz8uaXNWaXNpYmxlID8/IHRydWUsXG4gICAgbGF5ZXJPcmRlcjogcHJvcHM/LmxheWVyT3JkZXIgPz8gW10sXG4gICAgaXNJbmNsdWRlZEluTGVnZW5kOiBwcm9wcz8uaXNJbmNsdWRlZEluTGVnZW5kID8/IHRydWVcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZExheWVyT3JHcm91cFRvTGF5ZXJPcmRlcihcbiAgbGF5ZXJPcmRlcjogTGF5ZXJPcmRlcixcbiAgZWxlbWVudDogTGF5ZXJPcmRlckVudHJ5LFxuICBhdEluZGV4PzogbnVtYmVyXG4pOiBMYXllck9yZGVyIHtcbiAgY29uc3QgaWR4ID0gYXRJbmRleCA/PyAwO1xuICBjb25zdCByZXN1bHQgPSBbLi4ubGF5ZXJPcmRlcl07XG4gIHJlc3VsdC5zcGxpY2UoaWR4LCAwLCBlbGVtZW50KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUVsZW1lbnRGcm9tTGF5ZXJPcmRlcihcbiAgbGF5ZXJPcmRlcjogTGF5ZXJPcmRlcixcbiAgZWxlbWVudDogTGF5ZXJPcmRlckVudHJ5XG4pOiBMYXllck9yZGVyIHtcbiAgaWYgKCFsYXllck9yZGVyKSByZXR1cm4gW107XG4gIGNvbnN0IGVsZW1lbnRJZCA9IHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJyA/IGVsZW1lbnQgOiBlbGVtZW50LmlkO1xuICBsZXQgbmV3TGF5ZXJPcmRlciA9IGxheWVyT3JkZXIuZmlsdGVyKGVudHJ5ID0+IHtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChlbnRyeSkpIHtcbiAgICAgIHJldHVybiAoZW50cnkgYXMgTGF5ZXJPcmRlckdyb3VwKS5pZCAhPT0gZWxlbWVudElkO1xuICAgIH1cbiAgICByZXR1cm4gZW50cnkgIT09IGVsZW1lbnRJZDtcbiAgfSk7XG5cbiAgbmV3TGF5ZXJPcmRlciA9IG5ld0xheWVyT3JkZXIubWFwKGVudHJ5ID0+IHtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChlbnRyeSkpIHtcbiAgICAgIGNvbnN0IGdyb3VwID0gZW50cnkgYXMgTGF5ZXJPcmRlckdyb3VwO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ3JvdXAsXG4gICAgICAgIGxheWVyT3JkZXI6IHJlbW92ZUVsZW1lbnRGcm9tTGF5ZXJPcmRlcihncm91cC5sYXllck9yZGVyLCBlbGVtZW50SWQpXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gZW50cnk7XG4gIH0pO1xuXG4gIHJldHVybiBuZXdMYXllck9yZGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF5ZXJHcm91cEZyb21MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBsYXllckdyb3VwSWQ6IHN0cmluZ1xuKTogTGF5ZXJPcmRlckdyb3VwIHwgdW5kZWZpbmVkIHtcbiAgbGV0IGdyb3VwOiBMYXllck9yZGVyR3JvdXAgfCB1bmRlZmluZWQ7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGF5ZXJPcmRlci5sZW5ndGggJiYgIWdyb3VwOyBpKyspIHtcbiAgICBjb25zdCBlbnRyeSA9IGxheWVyT3JkZXJbaV07XG4gICAgaWYgKGlzUGxhaW5PYmplY3QoZW50cnkpKSB7XG4gICAgICBjb25zdCBncnAgPSBlbnRyeSBhcyBMYXllck9yZGVyR3JvdXA7XG4gICAgICBncm91cCA9XG4gICAgICAgIGdycC5pZCA9PT0gbGF5ZXJHcm91cElkID8gZ3JwIDogZ2V0TGF5ZXJHcm91cEZyb21MYXllck9yZGVyKGdycC5sYXllck9yZGVyLCBsYXllckdyb3VwSWQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZ3JvdXA7XG59XG5cbi8qKlxuICogRmluZCB0aGUgcGFyZW50IGdyb3VwIHRoYXQgY29udGFpbnMgYSBnaXZlbiBsYXllciBJRC5cbiAqIFJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBsYXllciBpcyBhdCB0aGUgcm9vdCBsZXZlbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQYXJlbnRHcm91cEZvckxheWVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBsYXllcklkOiBzdHJpbmdcbik6IExheWVyT3JkZXJHcm91cCB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgbGF5ZXJPcmRlcikge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGVudHJ5KSkge1xuICAgICAgY29uc3QgZ3JvdXAgPSBlbnRyeSBhcyBMYXllck9yZGVyR3JvdXA7XG4gICAgICBpZiAoZ3JvdXAubGF5ZXJPcmRlci5zb21lKGUgPT4gdHlwZW9mIGUgPT09ICdzdHJpbmcnICYmIGUgPT09IGxheWVySWQpKSB7XG4gICAgICAgIHJldHVybiBncm91cDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5lc3RlZCA9IGZpbmRQYXJlbnRHcm91cEZvckxheWVyKGdyb3VwLmxheWVyT3JkZXIsIGxheWVySWQpO1xuICAgICAgaWYgKG5lc3RlZCkgcmV0dXJuIG5lc3RlZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluZGV4RnJvbUxheWVyRW50cnlJZChsYXllck9yZGVyOiBMYXllck9yZGVyLCBsYXllckVudHJ5SWQ6IHN0cmluZyk6IG51bWJlciB7XG4gIHJldHVybiBsYXllck9yZGVyLmZpbmRJbmRleChlbnRyeSA9PlxuICAgIGlzUGxhaW5PYmplY3QoZW50cnkpID8gKGVudHJ5IGFzIExheWVyT3JkZXJHcm91cCkuaWQgPT09IGxheWVyRW50cnlJZCA6IGVudHJ5ID09PSBsYXllckVudHJ5SWRcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGF5ZXJQcmVzZW50SW5MYXllck9yZGVyKGxheWVyT3JkZXI6IExheWVyT3JkZXIsIGxheWVySWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXllck9yZGVyLmxlbmd0aCAmJiAhZm91bmQ7IGkrKykge1xuICAgIGNvbnN0IGVudHJ5ID0gbGF5ZXJPcmRlcltpXTtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChlbnRyeSkpIHtcbiAgICAgIGZvdW5kID0gaXNMYXllclByZXNlbnRJbkxheWVyT3JkZXIoKGVudHJ5IGFzIExheWVyT3JkZXJHcm91cCkubGF5ZXJPcmRlciwgbGF5ZXJJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvdW5kID0gbGF5ZXJJZCA9PT0gZW50cnk7XG4gICAgfVxuICB9XG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VMYXllckVudHJ5SW5MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBvbGRFbnRyeTogTGF5ZXJPcmRlckVudHJ5LFxuICBuZXdFbnRyeTogTGF5ZXJPcmRlckVudHJ5XG4pOiBMYXllck9yZGVyIHtcbiAgY29uc3Qgb2xkRW50cnlJZCA9IHR5cGVvZiBvbGRFbnRyeSA9PT0gJ3N0cmluZycgPyBvbGRFbnRyeSA6IG9sZEVudHJ5LmlkO1xuICByZXR1cm4gbGF5ZXJPcmRlci5tYXAoZW50cnkgPT4ge1xuICAgIGlmICh0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZW50cnkgPT09IG9sZEVudHJ5SWQgPyBuZXdFbnRyeSA6IGVudHJ5O1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChlbnRyeSkpIHtcbiAgICAgIGNvbnN0IGdycCA9IGVudHJ5IGFzIExheWVyT3JkZXJHcm91cDtcbiAgICAgIGlmIChncnAuaWQgPT09IG9sZEVudHJ5SWQpIHtcbiAgICAgICAgcmV0dXJuIG5ld0VudHJ5O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ3JwLFxuICAgICAgICBsYXllck9yZGVyOiByZXBsYWNlTGF5ZXJFbnRyeUluTGF5ZXJPcmRlcihncnAubGF5ZXJPcmRlciwgb2xkRW50cnksIG5ld0VudHJ5KVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUxheWVyR3JvdXBJbkxheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IExheWVyT3JkZXIsXG4gIG5ld0xheWVyR3JvdXA6IExheWVyT3JkZXJHcm91cFxuKTogTGF5ZXJPcmRlciB7XG4gIHJldHVybiBsYXllck9yZGVyLm1hcChlbnRyeSA9PiB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QoZW50cnkpKSB7XG4gICAgICBjb25zdCBncnAgPSBlbnRyeSBhcyBMYXllck9yZGVyR3JvdXA7XG4gICAgICBpZiAoZ3JwLmlkID09PSBuZXdMYXllckdyb3VwLmlkKSB7XG4gICAgICAgIHJldHVybiBuZXdMYXllckdyb3VwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ3JwLFxuICAgICAgICBsYXllck9yZGVyOiB1cGRhdGVMYXllckdyb3VwSW5MYXllck9yZGVyKGdycC5sYXllck9yZGVyLCBuZXdMYXllckdyb3VwKVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZsYXRMYXllck9yZGVyKGxheWVyT3JkZXI6IExheWVyT3JkZXIpOiBGbGF0TGF5ZXJPcmRlciB7XG4gIHJldHVybiBsYXllck9yZGVyLnJlZHVjZSgoYWNjLCBvcmRlckVudHJ5KSA9PiB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3Qob3JkZXJFbnRyeSkpIHtcbiAgICAgIHJldHVybiBbLi4uYWNjLCAuLi5nZXRGbGF0TGF5ZXJPcmRlcigob3JkZXJFbnRyeSBhcyBMYXllck9yZGVyR3JvdXApLmxheWVyT3JkZXIpXTtcbiAgICB9XG4gICAgcmV0dXJuIFsuLi5hY2MsIG9yZGVyRW50cnkgYXMgc3RyaW5nXTtcbiAgfSwgW10gYXMgRmxhdExheWVyT3JkZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRMYXllck9yZGVySGllcmFyY2h5KFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBsYXllcnM/OiBMYXllcltdIHwgcmVhZG9ubHkgTGF5ZXJbXVxuKTogTGF5ZXJPcmRlckhpZXJhcmNoeSB7XG4gIGNvbnN0IHZhbGlkTGF5ZXJzID0gbGF5ZXJzPy5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiBsYXllck9yZGVyLnJlZHVjZSgoYWNjLCBlbGVtZW50KSA9PiB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBbLi4uYWNjLCBbJ2xheWVyR3JvdXAnLCBlbGVtZW50IGFzIExheWVyT3JkZXJHcm91cF0gYXMgY29uc3RdO1xuICAgIH1cbiAgICBjb25zdCBsYXllciA9IHZhbGlkTGF5ZXJzPy5maW5kKGwgPT4gbC5pZCA9PT0gZWxlbWVudCk7XG4gICAgaWYgKCFsYXllciB8fCBsYXllci5jb25maWcuaGlkZGVuKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICByZXR1cm4gWy4uLmFjYywgWydsYXllcicsIGxheWVyXSBhcyBjb25zdF07XG4gIH0sIFtdIGFzIExheWVyT3JkZXJIaWVyYXJjaHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlR2hvc3RMYXllckZyb21MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBsYXllcnM6IHtpZDogc3RyaW5nfVtdXG4pOiBMYXllck9yZGVyIHtcbiAgcmV0dXJuIGxheWVyT3JkZXIucmVkdWNlKChhY2MsIGVudHJ5KSA9PiB7XG4gICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChsYXllcnMuZmluZChsID0+IGwuaWQgPT09IGVudHJ5KSkge1xuICAgICAgICBhY2MucHVzaChlbnRyeSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGdycCA9IGVudHJ5IGFzIExheWVyT3JkZXJHcm91cDtcbiAgICAgIGlmIChncnAubGF5ZXJPcmRlcikge1xuICAgICAgICBhY2MucHVzaCh7XG4gICAgICAgICAgLi4uZ3JwLFxuICAgICAgICAgIGxheWVyT3JkZXI6IHJlbW92ZUdob3N0TGF5ZXJGcm9tTGF5ZXJPcmRlcihncnAubGF5ZXJPcmRlciwgbGF5ZXJzKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10gYXMgTGF5ZXJPcmRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW9yZGVyTGF5ZXJPcmRlcihcbiAgbGF5ZXJPcmRlcjogVmlzU3RhdGVbJ2xheWVyT3JkZXInXSxcbiAgb3JpZ2luTGF5ZXJJZDogc3RyaW5nLFxuICBkZXN0aW5hdGlvbkxheWVySWQ6IHN0cmluZ1xuKTogVmlzU3RhdGVbJ2xheWVyT3JkZXInXSB7XG4gIGNvbnN0IGFjdGl2ZUluZGV4ID0gZ2V0SW5kZXhGcm9tTGF5ZXJFbnRyeUlkKGxheWVyT3JkZXIsIG9yaWdpbkxheWVySWQpO1xuICBjb25zdCBvdmVySW5kZXggPSBnZXRJbmRleEZyb21MYXllckVudHJ5SWQobGF5ZXJPcmRlciwgZGVzdGluYXRpb25MYXllcklkKTtcblxuICBpZiAoYWN0aXZlSW5kZXggPT09IC0xIHx8IG92ZXJJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gbGF5ZXJPcmRlcjtcbiAgfVxuICByZXR1cm4gYXJyYXlNb3ZlKGxheWVyT3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTGF5ZXJUb0xheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IFZpc1N0YXRlWydsYXllck9yZGVyJ10sXG4gIGxheWVySWQ6IHN0cmluZ1xuKTogTGF5ZXJPcmRlciB7XG4gIHJldHVybiBbbGF5ZXJJZCwgLi4ubGF5ZXJPcmRlcl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXllckhvdmVyUHJvcFZhbHVlKFxuICBkYXRhOiBEYXRhUm93IHwgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSB8IGFueVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgZmllbGRJbmRleDogbnVtYmVyXG4pIHtcbiAgaWYgKCFkYXRhKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoZGF0YSBpbnN0YW5jZW9mIERhdGFSb3cpIHJldHVybiBkYXRhLnZhbHVlQXQoZmllbGRJbmRleCk7XG4gIHJldHVybiBkYXRhW2ZpZWxkSW5kZXhdO1xufVxuXG4vKiogQ2hlY2tzIGlmIGFueSBEZWNrIGxheWVycyBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgbG9hZGluZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcmVBbnlEZWNrTGF5ZXJzTG9hZGluZyhsYXllcnM6IERlY2tMYXllcltdKTogYm9vbGVhbiB7XG4gIHJldHVybiBsYXllcnMuc29tZShcbiAgICAvLyBsYXllci5pc0xvYWRlZCBjaGFuZ2VzIGZyZXF1ZW50bHkgaW4gRGVjayAoZXZlbiBvbiBob3Zlcikgc28gd2UgY2hlY2sgYWRkaXRpb25hbCBwcm9wZXJ0aWVzXG4gICAgbGF5ZXIgPT4gbGF5ZXIuaW50ZXJuYWxTdGF0ZSAmJiAhbGF5ZXIuaXNMb2FkZWRcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBLE9BQU9BLE9BQU8sTUFBTSxnQkFBZ0I7QUFFcEMsU0FBUUMsaUJBQWlCLEVBQUVDLHVCQUF1QixRQUFPLHNCQUFzQjtBQXFCL0UsU0FLRUMsa0JBQWtCLEVBQ2xCQyxjQUFjLFFBQ1QsbUJBQW1CO0FBSTFCLFNBQVFDLFVBQVUsRUFBRUMseUJBQXlCLEVBQUVDLE9BQU8sRUFBRUMsYUFBYSxRQUFPLGtCQUFrQjtBQUM5RixTQUFRQyxTQUFTLEVBQUVDLGNBQWMsUUFBTyx5QkFBeUI7QUFFakUsU0FBUUMsbUJBQW1CLFFBQU8sMEJBQTBCO0FBNkI1RDtBQUNBO0FBQ0E7QUFD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QUFDa0csSUFBSSxDQUFDMkIsS0FBSyxDQUFDO01BQ2pCO0lBQ0YsQ0FBQyxNQUFNO01BQ0wsSUFBTUssR0FBRyxHQUFHTCxLQUF3QjtNQUNwQyxJQUFJSyxHQUFHLENBQUNoRSxVQUFVLEVBQUU7UUFDbEJsRSxHQUFHLENBQUNrRyxJQUFJLENBQUFoSSxhQUFBLENBQUFBLGFBQUEsS0FDSGdLLEdBQUc7VUFDTmhFLFVBQVUsRUFBRThGLDhCQUE4QixDQUFDOUIsR0FBRyxDQUFDaEUsVUFBVSxFQUFFN0UsTUFBTTtRQUFDLEVBQ25FLENBQUM7TUFDSjtJQUNGO0lBQ0EsT0FBT1csR0FBRztFQUNaLENBQUMsRUFBRSxFQUFnQixDQUFDO0FBQ3RCO0FBRUEsT0FBTyxTQUFTaUssaUJBQWlCQSxDQUMvQi9GLFVBQWtDLEVBQ2xDZ0csYUFBcUIsRUFDckJDLGtCQUEwQixFQUNGO0VBQ3hCLElBQU1DLFdBQVcsR0FBR3RCLHdCQUF3QixDQUFDNUUsVUFBVSxFQUFFZ0csYUFBYSxDQUFDO0VBQ3ZFLElBQU1HLFNBQVMsR0FBR3ZCLHdCQUF3QixDQUFDNUUsVUFBVSxFQUFFaUcsa0JBQWtCLENBQUM7RUFFMUUsSUFBSUMsV0FBVyxLQUFLLENBQUMsQ0FBQyxJQUFJQyxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7SUFDMUMsT0FBT25HLFVBQVU7RUFDbkI7RUFDQSxPQUFPckgsU0FBUyxDQUFDcUgsVUFBVSxFQUFFa0csV0FBVyxFQUFFQyxTQUFTLENBQUM7QUFDdEQ7QUFFQSxPQUFPLFNBQVNDLG9CQUFvQkEsQ0FDbENwRyxVQUFrQyxFQUNsQ1MsT0FBZSxFQUNIO0VBQ1osUUFBUUEsT0FBTyxFQUFBNUcsTUFBQSxDQUFBNkksa0JBQUEsQ0FBSzFDLFVBQVU7QUFDaEM7QUFFQSxPQUFPLFNBQVNxRyxzQkFBc0JBLENBQ3BDdEksSUFBb0UsRUFDcEV1SSxVQUFrQixFQUNsQjtFQUNBLElBQUksQ0FBQ3ZJLElBQUksRUFBRSxPQUFPL0MsU0FBUztFQUMzQixJQUFJK0MsSUFBSSxZQUFZdEYsT0FBTyxFQUFFLE9BQU9zRixJQUFJLENBQUN3SSxPQUFPLENBQUNELFVBQVUsQ0FBQztFQUM1RCxPQUFPdkksSUFBSSxDQUFDdUksVUFBVSxDQUFDO0FBQ3pCOztBQUVBO0FBQ0EsT0FBTyxTQUFTRSx1QkFBdUJBLENBQUNyTCxNQUFtQixFQUFXO0VBQ3BFLE9BQU9BLE1BQU0sQ0FBQ0wsSUFBSTtFQUNoQjtFQUNBLFVBQUFULEtBQUs7SUFBQSxPQUFJQSxLQUFLLENBQUNvTSxhQUFhLElBQUksQ0FBQ3BNLEtBQUssQ0FBQ3FNLFFBQVE7RUFBQSxDQUNqRCxDQUFDO0FBQ0giLCJpZ25vcmVMaXN0IjpbXX0=
|
|
602
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb25zb2xlIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVCIsIk9WRVJMQVlfVFlQRV9DT05TVCIsImdldEVkaXRvckxheWVyIiwiaXNGdW5jdGlvbiIsImdldE1hcExheWVyc0Zyb21TcGxpdE1hcHMiLCJEYXRhUm93IiwiaXNQbGFpbk9iamVjdCIsImFycmF5TW92ZSIsImdlbmVyYXRlSGFzaElkIiwiVGhyZWVEQnVpbGRpbmdMYXllciIsImZpbmREZWZhdWx0TGF5ZXIiLCJkYXRhc2V0IiwibGF5ZXJDbGFzc2VzIiwibGF5ZXJQcm9wcyIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJwcmV2aW91cyIsImxjIiwicmVzdWx0IiwiZmluZERlZmF1bHRMYXllclByb3BzIiwicHJvcHMiLCJBcnJheSIsImlzQXJyYXkiLCJmb3VuZExheWVycyIsImNvbmNhdCIsIm1hcCIsInAiLCJfb2JqZWN0U3ByZWFkIiwidHlwZSIsImRhdGFJZCIsImlkIiwiaXNWaXNpYmxlIiwibGF5ZXIiLCJzZXRJbml0aWFsTGF5ZXJDb25maWciLCJkYXRhQ29udGFpbmVyIiwibWVyZ2VMYXllclZpc0NvbmZpZ0Zvck5ld0RhdGFzZXRzIiwic3RhdGUiLCJwYXRjaCIsImRhdGFzZXRJZHNUb1BhdGNoIiwibGVuZ3RoIiwiaGFzRGVmaW5lZFBhdGNoVmFsdWUiLCJzb21lIiwia2V5IiwidW5kZWZpbmVkIiwiZGF0YXNldElkU2V0IiwiU2V0IiwibGF5ZXJzIiwiY29uZmlnIiwiaGFzIiwic2V0dGluZ3MiLCJ2aXNDb25maWdTZXR0aW5ncyIsImFsbG93ZWRLZXlzIiwiZmlsdGVyIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwicGFydGlhbCIsImFjYyIsInVwZGF0ZUxheWVyVmlzQ29uZmlnIiwiY2FsY3VsYXRlTGF5ZXJEYXRhIiwib2xkTGF5ZXJEYXRhIiwibGF5ZXJEYXRhIiwiaXNWYWxpZCIsIl9vbGREYXRhVXBkYXRlVHJpZ2dlcnMiLCJoYXNBbGxDb2x1bW5zIiwiZm9ybWF0TGF5ZXJEYXRhIiwiZGF0YXNldHMiLCJ1cGRhdGVMYXllckNvbmZpZyIsImVycm9yTWVzc2FnZSIsImVyciIsImVycm9yIiwiRXJyb3IiLCJtZXNzYWdlIiwic3Vic3RyaW5nIiwiZ2V0TGF5ZXJIb3ZlclByb3AiLCJfcmVmIiwiYW5pbWF0aW9uQ29uZmlnIiwiaW50ZXJhY3Rpb25Db25maWciLCJob3ZlckluZm8iLCJsYXllcnNUb1JlbmRlciIsInRvb2x0aXAiLCJlbmFibGVkIiwicGlja2VkIiwib2JqZWN0Iiwib3ZlcmxheSIsImlkeCIsImluZGV4IiwiZ2V0SG92ZXJEYXRhIiwiX2RhdGFzZXRzJGRhdGFJZCIsImZpZWxkcyIsImRhdGEiLCJmaWVsZHNUb1Nob3ciLCJjdXJyZW50VGltZSIsInJlbmRlckRlY2tHbExheWVyIiwibGF5ZXJDYWxsYmFja3MiLCJsYXllckluZGV4IiwiY2xpY2tlZCIsIm1hcFN0YXRlIiwibWFwTGF5ZXJzIiwiZXhwZXJpbWVudGFsQ29udGV4dCIsIl9yZWYyIiwiZ3B1RmlsdGVyIiwib2JqZWN0SG92ZXJlZCIsInZpc2libGUiLCJyZW5kZXJMYXllciIsImlzTGF5ZXJSZW5kZXJhYmxlIiwic2hvdWxkUmVuZGVyTGF5ZXIiLCJpc0xheWVyVmlzaWJsZSIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiYWNjdSIsIl9kZWZpbmVQcm9wZXJ0eSIsIm92ZXJsYXlUeXBlIiwiZGVja2dsIiwicHJlcGFyZUxheWVyc1RvUmVuZGVyIiwiZ2V0Q3VzdG9tRGVja0xheWVycyIsImRlY2tHbFByb3BzIiwiYm90dG9tRGVja0xheWVycyIsInRvcERlY2tMYXllcnMiLCJ0b3BMYXllcnMiLCJiaW5kTGF5ZXJDYWxsYmFja3MiLCJhcmd1bWVudHMiLCJ2YWwiLCJjb21wdXRlRGVja0xheWVyc0Zyb21MYXllck9yZGVyIiwibGF5ZXJPcmRlciIsImN1cnJlbnRMYXllcnNGb3JEZWNrIiwicmVuZGVyUHJvcHMiLCJoYXNTaGFkb3dFZmZlY3QiLCJzbGljZSIsInJldmVyc2UiLCJvdmVybGF5cyIsImVsZW1lbnQiLCJsYXllckdyb3VwIiwibGF5ZXJJZCIsImZpbmRJbmRleCIsIl9yZWYzIiwiYmluZGVkTGF5ZXJDYWxsYmFja3MiLCJsYXllck92ZXJsYXkiLCJjb21wdXRlRGVja0xheWVycyIsIl9yZWY0Iiwib3B0aW9ucyIsInZpc1N0YXRlIiwibWFwU3R5bGUiLCJlZmZlY3RzIiwic3BsaXRNYXBzIiwiX3JlZjUiLCJtYXBJbmRleCIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwicHJpbWFyeU1hcCIsImxheWVyc0ZvckRlY2siLCJlZGl0b3JJbmZvIiwiZGF0YUxheWVycyIsImVmZmVjdCIsIl9yZWY2IiwidmlzaWJsZUxheWVyR3JvdXBzIiwicHVzaCIsInRocmVlREJ1aWxkaW5nQ29sb3IiLCJ1cGRhdGVUcmlnZ2VycyIsImdldEZpbGxDb2xvciIsIl9nZXRDdXN0b21EZWNrTGF5ZXJzIiwiX2dldEN1c3RvbURlY2tMYXllcnMyIiwiX3NsaWNlZFRvQXJyYXkiLCJjdXN0b21Cb3R0b21EZWNrTGF5ZXJzIiwiY3VzdG9tVG9wRGVja0xheWVycyIsImVkaXRvckxheWVyIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZ2V0TGF5ZXJPcmRlckZyb21MYXllcnMiLCJfcmVmNyIsImdldE5ld0xheWVyR3JvdXAiLCJfcHJvcHMkaWQiLCJfcHJvcHMkbGFiZWwiLCJfcHJvcHMkaXNWaXNpYmxlIiwiX3Byb3BzJGxheWVyT3JkZXIiLCJfcHJvcHMkaXNJbmNsdWRlZEluTGUiLCJsYWJlbCIsImlzSW5jbHVkZWRJbkxlZ2VuZCIsImFkZExheWVyT3JHcm91cFRvTGF5ZXJPcmRlciIsImF0SW5kZXgiLCJzcGxpY2UiLCJyZW1vdmVFbGVtZW50RnJvbUxheWVyT3JkZXIiLCJlbGVtZW50SWQiLCJuZXdMYXllck9yZGVyIiwiZW50cnkiLCJncm91cCIsImdldExheWVyR3JvdXBGcm9tTGF5ZXJPcmRlciIsImxheWVyR3JvdXBJZCIsImkiLCJncnAiLCJmaW5kUGFyZW50R3JvdXBGb3JMYXllciIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsImUiLCJuZXN0ZWQiLCJmIiwiZ2V0SW5kZXhGcm9tTGF5ZXJFbnRyeUlkIiwibGF5ZXJFbnRyeUlkIiwiaXNMYXllclByZXNlbnRJbkxheWVyT3JkZXIiLCJmb3VuZCIsInJlcGxhY2VMYXllckVudHJ5SW5MYXllck9yZGVyIiwib2xkRW50cnkiLCJuZXdFbnRyeSIsIm9sZEVudHJ5SWQiLCJ1cGRhdGVMYXllckdyb3VwSW5MYXllck9yZGVyIiwibmV3TGF5ZXJHcm91cCIsImdldEZsYXRMYXllck9yZGVyIiwib3JkZXJFbnRyeSIsImJ1aWxkTGF5ZXJPcmRlckhpZXJhcmNoeSIsInZhbGlkTGF5ZXJzIiwiQm9vbGVhbiIsImZpbmQiLCJsIiwiaGlkZGVuIiwicmVtb3ZlR2hvc3RMYXllckZyb21MYXllck9yZGVyIiwicmVvcmRlckxheWVyT3JkZXIiLCJvcmlnaW5MYXllcklkIiwiZGVzdGluYXRpb25MYXllcklkIiwiYWN0aXZlSW5kZXgiLCJvdmVySW5kZXgiLCJhZGRMYXllclRvTGF5ZXJPcmRlciIsImdldExheWVySG92ZXJQcm9wVmFsdWUiLCJmaWVsZEluZGV4IiwidmFsdWVBdCIsImFyZUFueURlY2tMYXllcnNMb2FkaW5nIiwiaW50ZXJuYWxTdGF0ZSIsImlzTG9hZGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xheWVyLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBDb25zb2xlIGZyb20gJ2dsb2JhbC9jb25zb2xlJztcblxuaW1wb3J0IHtHRU9DT0RFUl9MQVlFUl9JRCwgTElHSFRfQU5EX1NIQURPV19FRkZFQ1R9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7TGF5ZXIgYXMgRGVja0xheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbnR5cGUgRGVja0xheWVyUHJvcHMgPSBhbnk7XG5pbXBvcnQge1xuICBGaWVsZCxcbiAgTGF5ZXJWaXNDb25maWcsXG4gIFRvb2x0aXBGaWVsZCxcbiAgQ29tcGFyZVR5cGUsXG4gIFNwbGl0TWFwTGF5ZXJzLFxuICBFZGl0b3IsXG4gIEZlYXR1cmUsXG4gIEZlYXR1cmVTZWxlY3Rpb25Db250ZXh0LFxuICBCaW5kZWRMYXllckNhbGxiYWNrcyxcbiAgTGF5ZXJDYWxsYmFja3MsXG4gIFZpZXdwb3J0LFxuICBMYXllck9yZGVyR3JvdXAsXG4gIExheWVyT3JkZXIsXG4gIExheWVyT3JkZXJFbnRyeSxcbiAgRmxhdExheWVyT3JkZXIsXG4gIExheWVyT3JkZXJIaWVyYXJjaHlcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZSxcbiAgRmluZERlZmF1bHRMYXllclByb3BzLFxuICBMYXllcixcbiAgTGF5ZXJDbGFzc2VzVHlwZSxcbiAgT1ZFUkxBWV9UWVBFX0NPTlNULFxuICBnZXRFZGl0b3JMYXllclxufSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5cbmltcG9ydCBLZXBsZXJUYWJsZSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQge2lzRnVuY3Rpb24sIGdldE1hcExheWVyc0Zyb21TcGxpdE1hcHMsIERhdGFSb3csIGlzUGxhaW5PYmplY3R9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHthcnJheU1vdmUsIGdlbmVyYXRlSGFzaElkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5cbmltcG9ydCB7VGhyZWVEQnVpbGRpbmdMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcblxuZXhwb3J0IHR5cGUgTGF5ZXJzVG9SZW5kZXIgPSB7XG4gIFtsYXllcklkOiBzdHJpbmddOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSA9IHtcbiAgcG9pbnRzOiBhbnlbXTtcbiAgY29sb3JWYWx1ZT86IGFueTtcbiAgZWxldmF0aW9uVmFsdWU/OiBhbnk7XG4gIGFnZ3JlZ2F0ZWREYXRhPzogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICB7XG4gICAgICBtZWFzdXJlOiBzdHJpbmc7XG4gICAgICB2YWx1ZT86IGFueTtcbiAgICB9XG4gID47XG59O1xuXG5leHBvcnQgdHlwZSBMYXllckhvdmVyUHJvcCA9IHtcbiAgZGF0YTogRGF0YVJvdyB8IEFnZ3JlZ2F0aW9uTGF5ZXJIb3ZlckRhdGEgfCBhbnlbXSB8IG51bGw7XG4gIGZpZWxkczogRmllbGRbXTtcbiAgZmllbGRzVG9TaG93OiBUb29sdGlwRmllbGRbXTtcbiAgbGF5ZXI6IExheWVyO1xuICBwcmltYXJ5RGF0YT86IERhdGFSb3cgfCBBZ2dyZWdhdGlvbkxheWVySG92ZXJEYXRhIHwgYW55W10gfCBudWxsO1xuICBjb21wYXJlVHlwZT86IENvbXBhcmVUeXBlO1xuICBjdXJyZW50VGltZT86IFZpc1N0YXRlWydhbmltYXRpb25Db25maWcnXVsnY3VycmVudFRpbWUnXTtcbn07XG5cbi8qKlxuICogRmluZCBkZWZhdWx0IGxheWVycyBmcm9tIGZpZWxkc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZERlZmF1bHRMYXllcihkYXRhc2V0OiBLZXBsZXJUYWJsZSwgbGF5ZXJDbGFzc2VzOiBMYXllckNsYXNzZXNUeXBlKTogTGF5ZXJbXSB7XG4gIGlmICghZGF0YXNldCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGxheWVyUHJvcHMgPSAoT2JqZWN0LmtleXMobGF5ZXJDbGFzc2VzKSBhcyBBcnJheTxrZXlvZiBMYXllckNsYXNzZXNUeXBlPikucmVkdWNlKFxuICAgIChwcmV2aW91cywgbGMpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdDogRmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWUgPVxuICAgICAgICB0eXBlb2YgbGF5ZXJDbGFzc2VzW2xjXS5maW5kRGVmYXVsdExheWVyUHJvcHMgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICA/IGxheWVyQ2xhc3Nlc1tsY10uZmluZERlZmF1bHRMYXllclByb3BzKGRhdGFzZXQsIHByZXZpb3VzKVxuICAgICAgICAgIDoge3Byb3BzOiBbXX07XG5cbiAgICAgIGNvbnN0IHByb3BzID0gQXJyYXkuaXNBcnJheShyZXN1bHQpID8gcmVzdWx0IDogcmVzdWx0LnByb3BzIHx8IFtdO1xuICAgICAgY29uc3QgZm91bmRMYXllcnMgPSByZXN1bHQuZm91bmRMYXllcnMgfHwgcHJldmlvdXM7XG5cbiAgICAgIHJldHVybiBmb3VuZExheWVycy5jb25jYXQoXG4gICAgICAgIHByb3BzLm1hcChwID0+ICh7XG4gICAgICAgICAgLi4ucCxcbiAgICAgICAgICB0eXBlOiBsYyxcbiAgICAgICAgICBkYXRhSWQ6IGRhdGFzZXQuaWQsXG4gICAgICAgICAgLy8gc2V0IGFyYyBsYXllciBpbml0aWFsIHZpc2libGl0eSB0byBmYWxzZSwgYmVjYXVzZSBhcmNzIHRlbmQgdG8gYmUgdG9vIG11c3lcbiAgICAgICAgICAuLi4obGMgPT09ICdhcmMnIHx8IGxjID09PSAnbGluZScgPyB7aXNWaXNpYmxlOiBmYWxzZX0gOiB7fSlcbiAgICAgICAgfSkpXG4gICAgICApO1xuICAgIH0sXG4gICAgW10gYXMgKEZpbmREZWZhdWx0TGF5ZXJQcm9wcyAmIHt0eXBlOiBzdHJpbmd9KVtdXG4gICk7XG5cbiAgLy8gZ28gdGhyb3VnaCBhbGwgbGF5ZXJQcm9wcyB0byBjcmVhdGUgbGF5ZXJcbiAgcmV0dXJuIGxheWVyUHJvcHMubWFwKHByb3BzID0+IHtcbiAgICBjb25zdCBsYXllciA9IG5ldyBsYXllckNsYXNzZXNbcHJvcHMudHlwZV0ocHJvcHMpO1xuICAgIHJldHVybiB0eXBlb2YgbGF5ZXIuc2V0SW5pdGlhbExheWVyQ29uZmlnID09PSAnZnVuY3Rpb24nICYmIGRhdGFzZXQuZGF0YUNvbnRhaW5lclxuICAgICAgPyBsYXllci5zZXRJbml0aWFsTGF5ZXJDb25maWcoZGF0YXNldClcbiAgICAgIDogbGF5ZXI7XG4gIH0pO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgYHBhdGNoYCB0byBgY29uZmlnLnZpc0NvbmZpZ2Agb25seSBmb3IgbGF5ZXJzIHdob3NlIGBkYXRhSWRgIGlzIGluIGBkYXRhc2V0SWRzVG9QYXRjaGAuXG4gKiBMYXllcnMgZm9yIGRhdGFzZXRzIHRoYXQgd2VyZSBhbHJlYWR5IG9uIHRoZSBtYXAgYXJlIGxlZnQgdW5jaGFuZ2VkIOKAlCBgYWRkRGF0YVRvTWFwYFxuICogS2V5cyB3aG9zZSBwYXRjaCB2YWx1ZSBpcyBgdW5kZWZpbmVkYCBhcmUgc2tpcHBlZCBzbyBleGlzdGluZyB2aXNDb25maWcgaXMgbm90IGNsZWFyZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUxheWVyVmlzQ29uZmlnRm9yTmV3RGF0YXNldHMoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgcGF0Y2g6IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+IHwgdW5kZWZpbmVkLFxuICBkYXRhc2V0SWRzVG9QYXRjaDogc3RyaW5nW11cbik6IFZpc1N0YXRlIHtcbiAgaWYgKCFwYXRjaCB8fCAhT2JqZWN0LmtleXMocGF0Y2gpLmxlbmd0aCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IGhhc0RlZmluZWRQYXRjaFZhbHVlID0gKE9iamVjdC5rZXlzKHBhdGNoKSBhcyBBcnJheTxrZXlvZiBMYXllclZpc0NvbmZpZz4pLnNvbWUoXG4gICAga2V5ID0+IHBhdGNoW2tleV0gIT09IHVuZGVmaW5lZFxuICApO1xuICBpZiAoIWhhc0RlZmluZWRQYXRjaFZhbHVlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgZGF0YXNldElkU2V0ID0gbmV3IFNldChkYXRhc2V0SWRzVG9QYXRjaCk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXllcnM6IHN0YXRlLmxheWVycy5tYXAobGF5ZXIgPT4ge1xuICAgICAgaWYgKCFsYXllci5jb25maWcuZGF0YUlkIHx8ICFkYXRhc2V0SWRTZXQuaGFzKGxheWVyLmNvbmZpZy5kYXRhSWQpKSB7XG4gICAgICAgIHJldHVybiBsYXllcjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNldHRpbmdzID0gbGF5ZXIudmlzQ29uZmlnU2V0dGluZ3M7XG4gICAgICBpZiAoIXNldHRpbmdzKSB7XG4gICAgICAgIHJldHVybiBsYXllcjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFsbG93ZWRLZXlzID0gKE9iamVjdC5rZXlzKHBhdGNoKSBhcyBBcnJheTxrZXlvZiBMYXllclZpc0NvbmZpZz4pLmZpbHRlcihcbiAgICAgICAga2V5ID0+IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzZXR0aW5ncywga2V5KSAmJiBwYXRjaFtrZXldICE9PSB1bmRlZmluZWRcbiAgICAgICk7XG4gICAgICBpZiAoIWFsbG93ZWRLZXlzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbGF5ZXI7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJ0aWFsID0gYWxsb3dlZEtleXMucmVkdWNlPFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+PigoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgYWNjW2tleV0gPSBwYXRjaFtrZXldO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30pO1xuICAgICAgcmV0dXJuIGxheWVyLnVwZGF0ZUxheWVyVmlzQ29uZmlnKHBhcnRpYWwpO1xuICAgIH0pXG4gIH07XG59XG5cbnR5cGUgTWluVmlzU3RhdGVGb3JMYXllckRhdGEgPSB7XG4gIGRhdGFzZXRzOiBWaXNTdGF0ZVsnZGF0YXNldHMnXTtcbiAgYW5pbWF0aW9uQ29uZmlnOiBWaXNTdGF0ZVsnYW5pbWF0aW9uQ29uZmlnJ107XG59O1xuXG4vKipcbiAqIENhbGN1bGF0ZSBsYXllciBkYXRhIGJhc2VkIG9uIGxheWVyIHR5cGUsIGNvbCBDb25maWcsXG4gKiByZXR1cm4gdXBkYXRlZCBsYXllciBpZiBjb2xvckRvbWFpbiwgZGF0YU1hcCBoYXMgY2hhbmdlZC5cbiAqIEFsc28sIHJldHVybnMgdXBkYXRlZCBsYXllciBpbiBjYXNlIHRoZSBpbnB1dCBsYXllciB3YXMgaW4gaW52YWxpZCBzdGF0ZS5cbiAqIEFkZHMgYW4gZXJyb3IgbWVzc2FnZSB0byB0aGUgbGF5ZXIgaW4gY2FzZSBvZiBhbiBleGNlcHRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVMYXllckRhdGE8UyBleHRlbmRzIE1pblZpc1N0YXRlRm9yTGF5ZXJEYXRhPihcbiAgbGF5ZXI6IExheWVyLFxuICBzdGF0ZTogUyxcbiAgb2xkTGF5ZXJEYXRhPzogYW55XG4pOiB7XG4gIGxheWVyRGF0YTogYW55O1xuICBsYXllcjogTGF5ZXI7XG59IHtcbiAgbGV0IGxheWVyRGF0YTtcbiAgdHJ5IHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIGxheWVyIHVwZGF0ZXMgZGF0YSBhZnRlciBhbiBlcnJvclxuICAgIGlmICghbGF5ZXIuaXNWYWxpZCkge1xuICAgICAgbGF5ZXIuX29sZERhdGFVcGRhdGVUcmlnZ2VycyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoIWxheWVyLnR5cGUgfHwgIWxheWVyLmhhc0FsbENvbHVtbnMoKSB8fCAhbGF5ZXIuY29uZmlnLmRhdGFJZCkge1xuICAgICAgcmV0dXJuIHtsYXllciwgbGF5ZXJEYXRhOiB7fX07XG4gICAgfVxuXG4gICAgbGF5ZXJEYXRhID0gbGF5ZXIuZm9ybWF0TGF5ZXJEYXRhKHN0YXRlLmRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuXG4gICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgZGF0YSBmb3IgdGhlIGxheWVyIGlzIHVwZGF0ZWQgd2l0aG91dCBlcnJvcnNcbiAgICBpZiAoIWxheWVyLmlzVmFsaWQpIHtcbiAgICAgIC8vIFN3aXRjaCB0byB2aXNpYmxlIGFmdGVyIGFuIGVycm9yXG4gICAgICBsYXllciA9IGxheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgaXNWaXNpYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gICAgbGF5ZXIuaXNWYWxpZCA9IHRydWU7XG4gICAgbGF5ZXIuZXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgQ29uc29sZS5lcnJvcihlcnIpO1xuICAgIGxheWVyID0gbGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgaXNWaXNpYmxlOiBmYWxzZVxuICAgIH0pO1xuICAgIGxheWVyLmlzVmFsaWQgPSBmYWxzZTtcblxuICAgIGxheWVyLmVycm9yTWVzc2FnZSA9XG4gICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciAmJiBlcnIubWVzc2FnZSA/IGVyci5tZXNzYWdlLnN1YnN0cmluZygwLCAxMDApIDogJ1Vua25vd24gZXJyb3InO1xuXG4gICAgbGF5ZXJEYXRhID0ge307XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxheWVyLFxuICAgIGxheWVyRGF0YVxuICB9O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBwcm9wcyBwYXNzZWQgdG8gTGF5ZXJIb3ZlckluZm9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVySG92ZXJQcm9wKHtcbiAgYW5pbWF0aW9uQ29uZmlnLFxuICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgaG92ZXJJbmZvLFxuICBsYXllcnMsXG4gIGxheWVyc1RvUmVuZGVyLFxuICBkYXRhc2V0c1xufToge1xuICBpbnRlcmFjdGlvbkNvbmZpZzogVmlzU3RhdGVbJ2ludGVyYWN0aW9uQ29uZmlnJ107XG4gIGFuaW1hdGlvbkNvbmZpZzogVmlzU3RhdGVbJ2FuaW1hdGlvbkNvbmZpZyddO1xuICBob3ZlckluZm86IFZpc1N0YXRlWydob3ZlckluZm8nXTtcbiAgbGF5ZXJzOiBWaXNTdGF0ZVsnbGF5ZXJzJ107XG4gIGxheWVyc1RvUmVuZGVyOiBMYXllcnNUb1JlbmRlcjtcbiAgZGF0YXNldHM6IFZpc1N0YXRlWydkYXRhc2V0cyddO1xufSk6IExheWVySG92ZXJQcm9wIHwgbnVsbCB7XG4gIGlmIChpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmVuYWJsZWQgJiYgaG92ZXJJbmZvICYmIGhvdmVySW5mby5waWNrZWQpIHtcbiAgICAvLyBpZiBhbnl0aGluZyBob3ZlcmVkXG4gICAgY29uc3Qge29iamVjdCwgbGF5ZXI6IG92ZXJsYXl9ID0gaG92ZXJJbmZvO1xuXG4gICAgLy8gZGVja2dsIGxheWVyIHRvIGtlcGxlci1nbCBsYXllclxuICAgIGNvbnN0IGxheWVyID0gbGF5ZXJzW292ZXJsYXkucHJvcHMuaWR4XTtcblxuICAgIC8vIE5PVEU6IGZvciBiaW5hcnkgZm9ybWF0IEdlb2pzb25MYXllciwgZGVjayB3aWxsIHJldHVybiBvYmplY3Q9bnVsbCBidXQgaG92ZXJJbmZvLmluZGV4ID49IDBcbiAgICBpZiAoXG4gICAgICAob2JqZWN0IHx8IGhvdmVySW5mby5pbmRleCA+PSAwKSAmJlxuICAgICAgbGF5ZXIgJiZcbiAgICAgIGxheWVyLmdldEhvdmVyRGF0YSAmJlxuICAgICAgbGF5ZXJzVG9SZW5kZXJbbGF5ZXIuaWRdXG4gICAgKSB7XG4gICAgICAvLyBpZiBsYXllciBpcyB2aXNpYmxlIGFuZCBoYXZlIGhvdmVyZWQgZGF0YVxuICAgICAgY29uc3Qge1xuICAgICAgICBjb25maWc6IHtkYXRhSWR9XG4gICAgICB9ID0gbGF5ZXI7XG4gICAgICBpZiAoIWRhdGFJZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyLCBmaWVsZHN9ID0gZGF0YXNldHNbZGF0YUlkXTtcbiAgICAgIGNvbnN0IGRhdGE6IERhdGFSb3cgfCBudWxsID0gbGF5ZXIuZ2V0SG92ZXJEYXRhKFxuICAgICAgICBvYmplY3QgfHwgaG92ZXJJbmZvLmluZGV4LFxuICAgICAgICBkYXRhQ29udGFpbmVyLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICAgICAgaG92ZXJJbmZvXG4gICAgICApO1xuICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgZmllbGRzVG9TaG93ID0gaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5jb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGEsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgZmllbGRzVG9TaG93LFxuICAgICAgICBsYXllcixcbiAgICAgICAgY3VycmVudFRpbWU6IGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckRlY2tHbExheWVyKHByb3BzOiBhbnksIGxheWVyQ2FsbGJhY2tzOiB7W2tleTogc3RyaW5nXTogYW55fSkge1xuICBjb25zdCB7XG4gICAgZGF0YXNldHMsXG4gICAgbGF5ZXIsXG4gICAgbGF5ZXJJbmRleCxcbiAgICBkYXRhLFxuICAgIGhvdmVySW5mbyxcbiAgICBjbGlja2VkLFxuICAgIG1hcFN0YXRlLFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBtYXBMYXllcnMsXG4gICAgZXhwZXJpbWVudGFsQ29udGV4dFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXTtcbiAgY29uc3Qge2dwdUZpbHRlcn0gPSBkYXRhc2V0IHx8IHt9O1xuICBjb25zdCBvYmplY3RIb3ZlcmVkID0gY2xpY2tlZCB8fCBob3ZlckluZm87XG4gIGNvbnN0IHZpc2libGUgPSAhbWFwTGF5ZXJzIHx8IChtYXBMYXllcnMgJiYgbWFwTGF5ZXJzW2xheWVyLmlkXSk7XG4gIC8vIExheWVyIGlzIExheWVyIGNsYXNzXG4gIHJldHVybiBsYXllci5yZW5kZXJMYXllcih7XG4gICAgZGF0YSxcbiAgICBncHVGaWx0ZXIsXG4gICAgaWR4OiBsYXllckluZGV4LFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGxheWVyQ2FsbGJhY2tzLFxuICAgIG1hcFN0YXRlLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBvYmplY3RIb3ZlcmVkLFxuICAgIHZpc2libGUsXG4gICAgZGF0YXNldCxcbiAgICBleHBlcmltZW50YWxDb250ZXh0XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMYXllclJlbmRlcmFibGUobGF5ZXI6IExheWVyLCBsYXllckRhdGEpIHtcbiAgcmV0dXJuIGxheWVyLmlkICE9PSBHRU9DT0RFUl9MQVlFUl9JRCAmJiBsYXllci5zaG91bGRSZW5kZXJMYXllcihsYXllckRhdGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMYXllclZpc2libGUobGF5ZXIsIG1hcExheWVycykge1xuICByZXR1cm4gKFxuICAgIGxheWVyLmNvbmZpZy5pc1Zpc2libGUgJiZcbiAgICAvLyBpZiBsYXllci5pZCBpcyBub3QgaW4gbWFwTGF5ZXJzLCBkb24ndCByZW5kZXIgaXRcbiAgICAoIW1hcExheWVycyB8fCAobWFwTGF5ZXJzICYmIG1hcExheWVyc1tsYXllci5pZF0pKVxuICApO1xufVxuXG4vLyBQcmVwYXJlIGEgZGljdCBvZiBsYXllcnMgcmVuZGVyZWQgYnkgdGhlIGRlY2suZ2xcbi8vIE5vdGUsIGlzVmlzaWJsZTogZmFsc2UgbGF5ZXIgaXMgcGFzc2VkIHRvIGRlY2suZ2wgaGVyZVxuLy8gcmV0dXJuIHtbaWRdOiB0cnVlIFxcIGZhbHNlfVxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVMYXllcnNGb3JEZWNrKFxuICBsYXllcnM6IExheWVyW10sXG4gIGxheWVyRGF0YTogVmlzU3RhdGVbJ2xheWVyRGF0YSddXG4pOiB7XG4gIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG59IHtcbiAgcmV0dXJuIGxheWVycy5yZWR1Y2UoXG4gICAgKGFjY3UsIGxheWVyLCBpZHgpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2xheWVyLmlkXTpcbiAgICAgICAgaXNMYXllclJlbmRlcmFibGUobGF5ZXIsIGxheWVyRGF0YVtpZHhdKSAmJiBsYXllci5vdmVybGF5VHlwZSA9PT0gT1ZFUkxBWV9UWVBFX0NPTlNULmRlY2tnbFxuICAgIH0pLFxuICAgIHt9XG4gICk7XG59XG5cbi8vIFByZXBhcmUgYSBkaWN0IG9mIHJlbmRlcmVkIGxheWVycyByZW5kZXJlZCBpbiB0aGUgbWFwXG4vLyBUaGlzIGluY2x1ZGVzIG9ubHkgdGhlIHZpc2liaWxlIGxheWVycyBmb3Igc2luZ2xlIG1hcCB2aWV3IGFuZCBzcGxpdCBtYXAgdmlld1xuLy8gcmV0dXJuIHtbaWRdOiB0cnVlIFxcIGZhbHNlfVxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVMYXllcnNUb1JlbmRlcihcbiAgbGF5ZXJzOiBMYXllcltdLFxuICBsYXllckRhdGE6IFZpc1N0YXRlWydsYXllckRhdGEnXSxcbiAgbWFwTGF5ZXJzPzogU3BsaXRNYXBMYXllcnMgfCB1bmRlZmluZWQgfCBudWxsXG4pOiBMYXllcnNUb1JlbmRlciB7XG4gIHJldHVybiBsYXllcnMucmVkdWNlKFxuICAgIChhY2N1LCBsYXllciwgaWR4KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtsYXllci5pZF06IGlzTGF5ZXJSZW5kZXJhYmxlKGxheWVyLCBsYXllckRhdGFbaWR4XSkgJiYgaXNMYXllclZpc2libGUobGF5ZXIsIG1hcExheWVycylcbiAgICB9KSxcbiAgICB7fVxuICApO1xufVxuXG50eXBlIEN1c3RvbURlY2tMYXllciA9IERlY2tMYXllcjxEZWNrTGF5ZXJQcm9wcz47XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXN0b21EZWNrTGF5ZXJzKGRlY2tHbFByb3BzPzogYW55KTogW0N1c3RvbURlY2tMYXllcltdLCBDdXN0b21EZWNrTGF5ZXJbXV0ge1xuICBjb25zdCBib3R0b21EZWNrTGF5ZXJzID0gQXJyYXkuaXNBcnJheShkZWNrR2xQcm9wcz8ubGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LmxheWVyc1xuICAgIDogaXNGdW5jdGlvbihkZWNrR2xQcm9wcz8ubGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LmxheWVycygpXG4gICAgOiBbXTtcbiAgY29uc3QgdG9wRGVja0xheWVycyA9IEFycmF5LmlzQXJyYXkoZGVja0dsUHJvcHM/LnRvcExheWVycylcbiAgICA/IGRlY2tHbFByb3BzPy50b3BMYXllcnNcbiAgICA6IGlzRnVuY3Rpb24oZGVja0dsUHJvcHM/LnRvcExheWVycylcbiAgICA/IGRlY2tHbFByb3BzPy50b3BMYXllcnMoKVxuICAgIDogW107XG5cbiAgcmV0dXJuIFtib3R0b21EZWNrTGF5ZXJzLCB0b3BEZWNrTGF5ZXJzXTtcbn1cblxuZXhwb3J0IHR5cGUgQ29tcHV0ZURlY2tMYXllcnNQcm9wcyA9IHtcbiAgbWFwSW5kZXg/OiBudW1iZXI7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICBtYXBib3hBcGlVcmw/OiBzdHJpbmc7XG4gIHByaW1hcnlNYXA/OiBib29sZWFuO1xuICBsYXllcnNGb3JEZWNrPzoge1trZXk6IHN0cmluZ106IGJvb2xlYW59O1xuICBlZGl0b3JJbmZvPzoge1xuICAgIGVkaXRvcjogRWRpdG9yO1xuICAgIGVkaXRvck1lbnVBY3RpdmU6IGJvb2xlYW47XG4gICAgb25TZXRGZWF0dXJlczogKGZlYXR1cmVzOiBGZWF0dXJlW10pID0+IGFueTtcbiAgICBzZXRTZWxlY3RlZEZlYXR1cmU6IChcbiAgICAgIGZlYXR1cmU6IEZlYXR1cmUgfCBudWxsLFxuICAgICAgc2VsZWN0aW9uQ29udGV4dD86IEZlYXR1cmVTZWxlY3Rpb25Db250ZXh0XG4gICAgKSA9PiBhbnk7XG4gICAgb25BcHBseVBvbHlnb25GaWx0ZXJBbGw/OiAoZmVhdHVyZTogRmVhdHVyZSkgPT4gYW55O1xuICAgIGZlYXR1cmVDb2xsZWN0aW9uOiB7XG4gICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICBmZWF0dXJlczogRmVhdHVyZVtdO1xuICAgIH07XG4gICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlczogbnVtYmVyW107XG4gICAgdmlld3BvcnQ6IFZpZXdwb3J0O1xuICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRMYXllckNhbGxiYWNrcyhcbiAgbGF5ZXJDYWxsYmFja3M6IExheWVyQ2FsbGJhY2tzID0ge30sXG4gIGlkeDogbnVtYmVyXG4pOiBCaW5kZWRMYXllckNhbGxiYWNrcyB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhsYXllckNhbGxiYWNrcykucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2tleV06IHZhbCA9PiBsYXllckNhbGxiYWNrc1trZXldKGlkeCwgdmFsKVxuICAgIH0pLFxuICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsICh2YWw6IHVua25vd24pID0+IHZvaWQ+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVEZWNrTGF5ZXJzRnJvbUxheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IExheWVyT3JkZXIsXG4gIGxheWVyczogTGF5ZXJbXSxcbiAgbGF5ZXJEYXRhOiBhbnlbXSxcbiAgY3VycmVudExheWVyc0ZvckRlY2s6IHtba2V5OiBzdHJpbmddOiBib29sZWFufSxcbiAgcmVuZGVyUHJvcHM6IHtcbiAgICBkYXRhc2V0czogYW55O1xuICAgIGhvdmVySW5mbzogYW55O1xuICAgIGNsaWNrZWQ6IGFueTtcbiAgICBtYXBTdGF0ZTogYW55O1xuICAgIGludGVyYWN0aW9uQ29uZmlnOiBhbnk7XG4gICAgYW5pbWF0aW9uQ29uZmlnOiBhbnk7XG4gICAgbWFwTGF5ZXJzOiBhbnk7XG4gICAgaGFzU2hhZG93RWZmZWN0OiBib29sZWFuO1xuICB9LFxuICBsYXllckNhbGxiYWNrcz86IGFueVxuKTogYW55W10ge1xuICBjb25zdCB7XG4gICAgZGF0YXNldHMsXG4gICAgaG92ZXJJbmZvLFxuICAgIGNsaWNrZWQsXG4gICAgbWFwU3RhdGUsXG4gICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgIG1hcExheWVycyxcbiAgICBoYXNTaGFkb3dFZmZlY3RcbiAgfSA9IHJlbmRlclByb3BzO1xuICByZXR1cm4gbGF5ZXJPcmRlclxuICAgIC5zbGljZSgpXG4gICAgLnJldmVyc2UoKVxuICAgIC5yZWR1Y2UoKG92ZXJsYXlzLCBlbGVtZW50KSA9PiB7XG4gICAgICBpZiAoaXNQbGFpbk9iamVjdChlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBsYXllckdyb3VwID0gZWxlbWVudCBhcyBMYXllck9yZGVyR3JvdXA7XG4gICAgICAgIGlmICghbGF5ZXJHcm91cC5pc1Zpc2libGUpIHtcbiAgICAgICAgICByZXR1cm4gb3ZlcmxheXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG92ZXJsYXlzLmNvbmNhdChcbiAgICAgICAgICBjb21wdXRlRGVja0xheWVyc0Zyb21MYXllck9yZGVyKFxuICAgICAgICAgICAgbGF5ZXJHcm91cC5sYXllck9yZGVyLFxuICAgICAgICAgICAgbGF5ZXJzLFxuICAgICAgICAgICAgbGF5ZXJEYXRhLFxuICAgICAgICAgICAgY3VycmVudExheWVyc0ZvckRlY2ssXG4gICAgICAgICAgICByZW5kZXJQcm9wcyxcbiAgICAgICAgICAgIGxheWVyQ2FsbGJhY2tzXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgbGF5ZXJJZCA9IGVsZW1lbnQgYXMgc3RyaW5nO1xuICAgICAgaWYgKCFjdXJyZW50TGF5ZXJzRm9yRGVja1tsYXllcklkXSkge1xuICAgICAgICByZXR1cm4gb3ZlcmxheXM7XG4gICAgICB9XG4gICAgICBjb25zdCBsYXllckluZGV4ID0gbGF5ZXJzLmZpbmRJbmRleCgoe2lkfSkgPT4gaWQgPT09IGxheWVySWQpO1xuICAgICAgaWYgKGxheWVySW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBvdmVybGF5cztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGJpbmRlZExheWVyQ2FsbGJhY2tzID0gbGF5ZXJDYWxsYmFja3NcbiAgICAgICAgPyBiaW5kTGF5ZXJDYWxsYmFja3MobGF5ZXJDYWxsYmFja3MsIGxheWVySW5kZXgpXG4gICAgICAgIDoge307XG4gICAgICBjb25zdCBsYXllciA9IGxheWVyc1tsYXllckluZGV4XTtcbiAgICAgIGNvbnN0IGRhdGEgPSBsYXllckRhdGFbbGF5ZXJJbmRleF07XG4gICAgICBjb25zdCBsYXllck92ZXJsYXkgPSByZW5kZXJEZWNrR2xMYXllcihcbiAgICAgICAge1xuICAgICAgICAgIGRhdGFzZXRzLFxuICAgICAgICAgIGxheWVyLFxuICAgICAgICAgIGxheWVySW5kZXgsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBob3ZlckluZm8sXG4gICAgICAgICAgY2xpY2tlZCxcbiAgICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgICBhbmltYXRpb25Db25maWcsXG4gICAgICAgICAgbWFwTGF5ZXJzLFxuICAgICAgICAgIGV4cGVyaW1lbnRhbENvbnRleHQ6IHtcbiAgICAgICAgICAgIGhhc1NoYWRvd0VmZmVjdFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYmluZGVkTGF5ZXJDYWxsYmFja3NcbiAgICAgICk7XG4gICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgfSwgW10gYXMgYW55W10pO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVEZWNrTGF5ZXJzKFxuICB7dmlzU3RhdGUsIG1hcFN0YXRlLCBtYXBTdHlsZX06IGFueSxcbiAgb3B0aW9ucz86IENvbXB1dGVEZWNrTGF5ZXJzUHJvcHMsXG4gIGxheWVyQ2FsbGJhY2tzPzogTGF5ZXJDYWxsYmFja3MsXG4gIGRlY2tHbFByb3BzPzogYW55XG4pOiBMYXllcltdIHtcbiAgY29uc3Qge1xuICAgIGRhdGFzZXRzLFxuICAgIGVmZmVjdHMsXG4gICAgbGF5ZXJzLFxuICAgIGxheWVyT3JkZXIsXG4gICAgbGF5ZXJEYXRhLFxuICAgIGhvdmVySW5mbyxcbiAgICBjbGlja2VkLFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBzcGxpdE1hcHNcbiAgfSA9IHZpc1N0YXRlO1xuXG4gIGNvbnN0IHttYXBJbmRleCwgbWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCwgcHJpbWFyeU1hcCwgbGF5ZXJzRm9yRGVjaywgZWRpdG9ySW5mb30gPVxuICAgIG9wdGlvbnMgfHwge307XG5cbiAgbGV0IGRhdGFMYXllcnM6IGFueVtdID0gW107XG5cbiAgY29uc3QgaGFzU2hhZG93RWZmZWN0ID0gZWZmZWN0cy5zb21lKGVmZmVjdCA9PiB7XG4gICAgcmV0dXJuIGVmZmVjdC50eXBlID09PSBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVC50eXBlO1xuICB9KTtcblxuICBpZiAobGF5ZXJEYXRhICYmIGxheWVyRGF0YS5sZW5ndGgpIHtcbiAgICBjb25zdCBtYXBMYXllcnMgPSBnZXRNYXBMYXllcnNGcm9tU3BsaXRNYXBzKHNwbGl0TWFwcywgbWFwSW5kZXggfHwgMCk7XG5cbiAgICBjb25zdCBjdXJyZW50TGF5ZXJzRm9yRGVjayA9IGxheWVyc0ZvckRlY2sgfHwgcHJlcGFyZUxheWVyc0ZvckRlY2sobGF5ZXJzLCBsYXllckRhdGEpO1xuXG4gICAgZGF0YUxheWVycyA9IGxheWVyT3JkZXJcbiAgICAgIC5zbGljZSgpXG4gICAgICAucmV2ZXJzZSgpXG4gICAgICAucmVkdWNlKChvdmVybGF5cywgZWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChlbGVtZW50KSkge1xuICAgICAgICAgIGNvbnN0IGxheWVyR3JvdXAgPSBlbGVtZW50IGFzIExheWVyT3JkZXJHcm91cDtcbiAgICAgICAgICBpZiAoIWxheWVyR3JvdXAuaXNWaXNpYmxlKSB7XG4gICAgICAgICAgICByZXR1cm4gb3ZlcmxheXM7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBvdmVybGF5cy5jb25jYXQoXG4gICAgICAgICAgICBjb21wdXRlRGVja0xheWVyc0Zyb21MYXllck9yZGVyKFxuICAgICAgICAgICAgICBsYXllckdyb3VwLmxheWVyT3JkZXIsXG4gICAgICAgICAgICAgIGxheWVycyxcbiAgICAgICAgICAgICAgbGF5ZXJEYXRhLFxuICAgICAgICAgICAgICBjdXJyZW50TGF5ZXJzRm9yRGVjayxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGFzZXRzLFxuICAgICAgICAgICAgICAgIGhvdmVySW5mbyxcbiAgICAgICAgICAgICAgICBjbGlja2VkLFxuICAgICAgICAgICAgICAgIG1hcFN0YXRlLFxuICAgICAgICAgICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICAgICAgICAgICAgICBtYXBMYXllcnMsXG4gICAgICAgICAgICAgICAgaGFzU2hhZG93RWZmZWN0XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGxheWVyQ2FsbGJhY2tzXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYXllcklkID0gZWxlbWVudCBhcyBzdHJpbmc7XG4gICAgICAgIGlmICghY3VycmVudExheWVyc0ZvckRlY2tbbGF5ZXJJZF0pIHtcbiAgICAgICAgICByZXR1cm4gb3ZlcmxheXM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGF5ZXJJbmRleCA9IGxheWVycy5maW5kSW5kZXgoKHtpZH0pID0+IGlkID09PSBsYXllcklkKTtcbiAgICAgICAgaWYgKGxheWVySW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgcmV0dXJuIG92ZXJsYXlzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJpbmRlZExheWVyQ2FsbGJhY2tzID0gbGF5ZXJDYWxsYmFja3NcbiAgICAgICAgICA/IGJpbmRMYXllckNhbGxiYWNrcyhsYXllckNhbGxiYWNrcywgbGF5ZXJJbmRleClcbiAgICAgICAgICA6IHt9O1xuICAgICAgICBjb25zdCBsYXllciA9IGxheWVyc1tsYXllckluZGV4XTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGxheWVyRGF0YVtsYXllckluZGV4XTtcbiAgICAgICAgY29uc3QgbGF5ZXJPdmVybGF5ID0gcmVuZGVyRGVja0dsTGF5ZXIoXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGF0YXNldHMsXG4gICAgICAgICAgICBsYXllcixcbiAgICAgICAgICAgIGxheWVySW5kZXgsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgaG92ZXJJbmZvLFxuICAgICAgICAgICAgY2xpY2tlZCxcbiAgICAgICAgICAgIG1hcFN0YXRlLFxuICAgICAgICAgICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAgICAgICBhbmltYXRpb25Db25maWcsXG4gICAgICAgICAgICBtYXBMYXllcnMsXG4gICAgICAgICAgICBleHBlcmltZW50YWxDb250ZXh0OiB7XG4gICAgICAgICAgICAgIGhhc1NoYWRvd0VmZmVjdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgYmluZGVkTGF5ZXJDYWxsYmFja3NcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIG92ZXJsYXlzLmNvbmNhdChsYXllck92ZXJsYXkgfHwgW10pO1xuICAgICAgfSwgW10pO1xuICB9XG5cbiAgaWYgKCFwcmltYXJ5TWFwKSB7XG4gICAgcmV0dXJuIGRhdGFMYXllcnM7XG4gIH1cblxuICBpZiAoXG4gICAgbWFwU3R5bGU/LnZpc2libGVMYXllckdyb3Vwc1snM2QgYnVpbGRpbmcnXSAmJlxuICAgIHByaW1hcnlNYXAgJiZcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbiAmJlxuICAgIG1hcGJveEFwaVVybFxuICApIHtcbiAgICBkYXRhTGF5ZXJzLnB1c2goXG4gICAgICBuZXcgVGhyZWVEQnVpbGRpbmdMYXllcih7XG4gICAgICAgIGlkOiAnX2tlcGxlcmdsXzNkLWJ1aWxkaW5nJyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgdGhyZWVEQnVpbGRpbmdDb2xvcjogbWFwU3R5bGUudGhyZWVEQnVpbGRpbmdDb2xvcixcbiAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICBnZXRGaWxsQ29sb3I6IG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3JcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY29uc3QgW2N1c3RvbUJvdHRvbURlY2tMYXllcnMsIGN1c3RvbVRvcERlY2tMYXllcnNdID0gZ2V0Q3VzdG9tRGVja0xheWVycyhkZWNrR2xQcm9wcyk7XG5cbiAgY29uc3QgZWRpdG9yTGF5ZXI6IGFueVtdID0gW107XG4gIGlmIChlZGl0b3JJbmZvKSB7XG4gICAgZWRpdG9yTGF5ZXIucHVzaChcbiAgICAgIGdldEVkaXRvckxheWVyKHtcbiAgICAgICAgLi4uZWRpdG9ySW5mbyxcbiAgICAgICAgbWFwU3RhdGVcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBbLi4uY3VzdG9tQm90dG9tRGVja0xheWVycywgLi4uZGF0YUxheWVycywgLi4uY3VzdG9tVG9wRGVja0xheWVycywgLi4uZWRpdG9yTGF5ZXJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF5ZXJPcmRlckZyb21MYXllcnM8VCBleHRlbmRzIHtpZDogc3RyaW5nfT4obGF5ZXJzOiBUW10pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBsYXllcnMubWFwKCh7aWR9KSA9PiBpZCk7XG59XG5cbi8vIC0tLSBMYXllciBHcm91cCBVdGlsaXRpZXMgLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXdMYXllckdyb3VwKHByb3BzPzogUGFydGlhbDxMYXllck9yZGVyR3JvdXA+KTogTGF5ZXJPcmRlckdyb3VwIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogcHJvcHM/LmlkID8/IGdlbmVyYXRlSGFzaElkKDYpLFxuICAgIGxhYmVsOiBwcm9wcz8ubGFiZWwgPz8gJ05ldyBncm91cCcsXG4gICAgaXNWaXNpYmxlOiBwcm9wcz8uaXNWaXNpYmxlID8/IHRydWUsXG4gICAgbGF5ZXJPcmRlcjogcHJvcHM/LmxheWVyT3JkZXIgPz8gW10sXG4gICAgaXNJbmNsdWRlZEluTGVnZW5kOiBwcm9wcz8uaXNJbmNsdWRlZEluTGVnZW5kID8/IHRydWVcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZExheWVyT3JHcm91cFRvTGF5ZXJPcmRlcihcbiAgbGF5ZXJPcmRlcjogTGF5ZXJPcmRlcixcbiAgZWxlbWVudDogTGF5ZXJPcmRlckVudHJ5LFxuICBhdEluZGV4PzogbnVtYmVyXG4pOiBMYXllck9yZGVyIHtcbiAgY29uc3QgaWR4ID0gYXRJbmRleCA/PyAwO1xuICBjb25zdCByZXN1bHQgPSBbLi4ubGF5ZXJPcmRlcl07XG4gIHJlc3VsdC5zcGxpY2UoaWR4LCAwLCBlbGVtZW50KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUVsZW1lbnRGcm9tTGF5ZXJPcmRlcihcbiAgbGF5ZXJPcmRlcjogTGF5ZXJPcmRlcixcbiAgZWxlbWVudDogTGF5ZXJPcmRlckVudHJ5XG4pOiBMYXllck9yZGVyIHtcbiAgaWYgKCFsYXllck9yZGVyKSByZXR1cm4gW107XG4gIGNvbnN0IGVsZW1lbnRJZCA9IHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJyA/IGVsZW1lbnQgOiBlbGVtZW50LmlkO1xuICBsZXQgbmV3TGF5ZXJPcmRlciA9IGxheWVyT3JkZXIuZmlsdGVyKGVudHJ5ID0+IHtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChlbnRyeSkpIHtcbiAgICAgIHJldHVybiAoZW50cnkgYXMgTGF5ZXJPcmRlckdyb3VwKS5pZCAhPT0gZWxlbWVudElkO1xuICAgIH1cbiAgICByZXR1cm4gZW50cnkgIT09IGVsZW1lbnRJZDtcbiAgfSk7XG5cbiAgbmV3TGF5ZXJPcmRlciA9IG5ld0xheWVyT3JkZXIubWFwKGVudHJ5ID0+IHtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChlbnRyeSkpIHtcbiAgICAgIGNvbnN0IGdyb3VwID0gZW50cnkgYXMgTGF5ZXJPcmRlckdyb3VwO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ3JvdXAsXG4gICAgICAgIGxheWVyT3JkZXI6IHJlbW92ZUVsZW1lbnRGcm9tTGF5ZXJPcmRlcihncm91cC5sYXllck9yZGVyLCBlbGVtZW50SWQpXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gZW50cnk7XG4gIH0pO1xuXG4gIHJldHVybiBuZXdMYXllck9yZGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF5ZXJHcm91cEZyb21MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBsYXllckdyb3VwSWQ6IHN0cmluZ1xuKTogTGF5ZXJPcmRlckdyb3VwIHwgdW5kZWZpbmVkIHtcbiAgbGV0IGdyb3VwOiBMYXllck9yZGVyR3JvdXAgfCB1bmRlZmluZWQ7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGF5ZXJPcmRlci5sZW5ndGggJiYgIWdyb3VwOyBpKyspIHtcbiAgICBjb25zdCBlbnRyeSA9IGxheWVyT3JkZXJbaV07XG4gICAgaWYgKGlzUGxhaW5PYmplY3QoZW50cnkpKSB7XG4gICAgICBjb25zdCBncnAgPSBlbnRyeSBhcyBMYXllck9yZGVyR3JvdXA7XG4gICAgICBncm91cCA9XG4gICAgICAgIGdycC5pZCA9PT0gbGF5ZXJHcm91cElkID8gZ3JwIDogZ2V0TGF5ZXJHcm91cEZyb21MYXllck9yZGVyKGdycC5sYXllck9yZGVyLCBsYXllckdyb3VwSWQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZ3JvdXA7XG59XG5cbi8qKlxuICogRmluZCB0aGUgcGFyZW50IGdyb3VwIHRoYXQgY29udGFpbnMgYSBnaXZlbiBsYXllciBJRC5cbiAqIFJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBsYXllciBpcyBhdCB0aGUgcm9vdCBsZXZlbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQYXJlbnRHcm91cEZvckxheWVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBsYXllcklkOiBzdHJpbmdcbik6IExheWVyT3JkZXJHcm91cCB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgbGF5ZXJPcmRlcikge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGVudHJ5KSkge1xuICAgICAgY29uc3QgZ3JvdXAgPSBlbnRyeSBhcyBMYXllck9yZGVyR3JvdXA7XG4gICAgICBpZiAoZ3JvdXAubGF5ZXJPcmRlci5zb21lKGUgPT4gdHlwZW9mIGUgPT09ICdzdHJpbmcnICYmIGUgPT09IGxheWVySWQpKSB7XG4gICAgICAgIHJldHVybiBncm91cDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5lc3RlZCA9IGZpbmRQYXJlbnRHcm91cEZvckxheWVyKGdyb3VwLmxheWVyT3JkZXIsIGxheWVySWQpO1xuICAgICAgaWYgKG5lc3RlZCkgcmV0dXJuIG5lc3RlZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluZGV4RnJvbUxheWVyRW50cnlJZChsYXllck9yZGVyOiBMYXllck9yZGVyLCBsYXllckVudHJ5SWQ6IHN0cmluZyk6IG51bWJlciB7XG4gIHJldHVybiBsYXllck9yZGVyLmZpbmRJbmRleChlbnRyeSA9PlxuICAgIGlzUGxhaW5PYmplY3QoZW50cnkpID8gKGVudHJ5IGFzIExheWVyT3JkZXJHcm91cCkuaWQgPT09IGxheWVyRW50cnlJZCA6IGVudHJ5ID09PSBsYXllckVudHJ5SWRcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGF5ZXJQcmVzZW50SW5MYXllck9yZGVyKGxheWVyT3JkZXI6IExheWVyT3JkZXIsIGxheWVySWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXllck9yZGVyLmxlbmd0aCAmJiAhZm91bmQ7IGkrKykge1xuICAgIGNvbnN0IGVudHJ5ID0gbGF5ZXJPcmRlcltpXTtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChlbnRyeSkpIHtcbiAgICAgIGZvdW5kID0gaXNMYXllclByZXNlbnRJbkxheWVyT3JkZXIoKGVudHJ5IGFzIExheWVyT3JkZXJHcm91cCkubGF5ZXJPcmRlciwgbGF5ZXJJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvdW5kID0gbGF5ZXJJZCA9PT0gZW50cnk7XG4gICAgfVxuICB9XG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VMYXllckVudHJ5SW5MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBvbGRFbnRyeTogTGF5ZXJPcmRlckVudHJ5LFxuICBuZXdFbnRyeTogTGF5ZXJPcmRlckVudHJ5XG4pOiBMYXllck9yZGVyIHtcbiAgY29uc3Qgb2xkRW50cnlJZCA9IHR5cGVvZiBvbGRFbnRyeSA9PT0gJ3N0cmluZycgPyBvbGRFbnRyeSA6IG9sZEVudHJ5LmlkO1xuICByZXR1cm4gbGF5ZXJPcmRlci5tYXAoZW50cnkgPT4ge1xuICAgIGlmICh0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZW50cnkgPT09IG9sZEVudHJ5SWQgPyBuZXdFbnRyeSA6IGVudHJ5O1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChlbnRyeSkpIHtcbiAgICAgIGNvbnN0IGdycCA9IGVudHJ5IGFzIExheWVyT3JkZXJHcm91cDtcbiAgICAgIGlmIChncnAuaWQgPT09IG9sZEVudHJ5SWQpIHtcbiAgICAgICAgcmV0dXJuIG5ld0VudHJ5O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ3JwLFxuICAgICAgICBsYXllck9yZGVyOiByZXBsYWNlTGF5ZXJFbnRyeUluTGF5ZXJPcmRlcihncnAubGF5ZXJPcmRlciwgb2xkRW50cnksIG5ld0VudHJ5KVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUxheWVyR3JvdXBJbkxheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IExheWVyT3JkZXIsXG4gIG5ld0xheWVyR3JvdXA6IExheWVyT3JkZXJHcm91cFxuKTogTGF5ZXJPcmRlciB7XG4gIHJldHVybiBsYXllck9yZGVyLm1hcChlbnRyeSA9PiB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QoZW50cnkpKSB7XG4gICAgICBjb25zdCBncnAgPSBlbnRyeSBhcyBMYXllck9yZGVyR3JvdXA7XG4gICAgICBpZiAoZ3JwLmlkID09PSBuZXdMYXllckdyb3VwLmlkKSB7XG4gICAgICAgIHJldHVybiBuZXdMYXllckdyb3VwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ3JwLFxuICAgICAgICBsYXllck9yZGVyOiB1cGRhdGVMYXllckdyb3VwSW5MYXllck9yZGVyKGdycC5sYXllck9yZGVyLCBuZXdMYXllckdyb3VwKVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZsYXRMYXllck9yZGVyKGxheWVyT3JkZXI6IExheWVyT3JkZXIpOiBGbGF0TGF5ZXJPcmRlciB7XG4gIHJldHVybiBsYXllck9yZGVyLnJlZHVjZSgoYWNjLCBvcmRlckVudHJ5KSA9PiB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3Qob3JkZXJFbnRyeSkpIHtcbiAgICAgIHJldHVybiBbLi4uYWNjLCAuLi5nZXRGbGF0TGF5ZXJPcmRlcigob3JkZXJFbnRyeSBhcyBMYXllck9yZGVyR3JvdXApLmxheWVyT3JkZXIpXTtcbiAgICB9XG4gICAgcmV0dXJuIFsuLi5hY2MsIG9yZGVyRW50cnkgYXMgc3RyaW5nXTtcbiAgfSwgW10gYXMgRmxhdExheWVyT3JkZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRMYXllck9yZGVySGllcmFyY2h5KFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBsYXllcnM/OiBMYXllcltdIHwgcmVhZG9ubHkgTGF5ZXJbXVxuKTogTGF5ZXJPcmRlckhpZXJhcmNoeSB7XG4gIGNvbnN0IHZhbGlkTGF5ZXJzID0gbGF5ZXJzPy5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiBsYXllck9yZGVyLnJlZHVjZSgoYWNjLCBlbGVtZW50KSA9PiB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBbLi4uYWNjLCBbJ2xheWVyR3JvdXAnLCBlbGVtZW50IGFzIExheWVyT3JkZXJHcm91cF0gYXMgY29uc3RdO1xuICAgIH1cbiAgICBjb25zdCBsYXllciA9IHZhbGlkTGF5ZXJzPy5maW5kKGwgPT4gbC5pZCA9PT0gZWxlbWVudCk7XG4gICAgaWYgKCFsYXllciB8fCBsYXllci5jb25maWcuaGlkZGVuKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICByZXR1cm4gWy4uLmFjYywgWydsYXllcicsIGxheWVyXSBhcyBjb25zdF07XG4gIH0sIFtdIGFzIExheWVyT3JkZXJIaWVyYXJjaHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlR2hvc3RMYXllckZyb21MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBsYXllcnM6IHtpZDogc3RyaW5nfVtdXG4pOiBMYXllck9yZGVyIHtcbiAgcmV0dXJuIGxheWVyT3JkZXIucmVkdWNlKChhY2MsIGVudHJ5KSA9PiB7XG4gICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChsYXllcnMuZmluZChsID0+IGwuaWQgPT09IGVudHJ5KSkge1xuICAgICAgICBhY2MucHVzaChlbnRyeSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGdycCA9IGVudHJ5IGFzIExheWVyT3JkZXJHcm91cDtcbiAgICAgIGlmIChncnAubGF5ZXJPcmRlcikge1xuICAgICAgICBhY2MucHVzaCh7XG4gICAgICAgICAgLi4uZ3JwLFxuICAgICAgICAgIGxheWVyT3JkZXI6IHJlbW92ZUdob3N0TGF5ZXJGcm9tTGF5ZXJPcmRlcihncnAubGF5ZXJPcmRlciwgbGF5ZXJzKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10gYXMgTGF5ZXJPcmRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW9yZGVyTGF5ZXJPcmRlcihcbiAgbGF5ZXJPcmRlcjogVmlzU3RhdGVbJ2xheWVyT3JkZXInXSxcbiAgb3JpZ2luTGF5ZXJJZDogc3RyaW5nLFxuICBkZXN0aW5hdGlvbkxheWVySWQ6IHN0cmluZ1xuKTogVmlzU3RhdGVbJ2xheWVyT3JkZXInXSB7XG4gIGNvbnN0IGFjdGl2ZUluZGV4ID0gZ2V0SW5kZXhGcm9tTGF5ZXJFbnRyeUlkKGxheWVyT3JkZXIsIG9yaWdpbkxheWVySWQpO1xuICBjb25zdCBvdmVySW5kZXggPSBnZXRJbmRleEZyb21MYXllckVudHJ5SWQobGF5ZXJPcmRlciwgZGVzdGluYXRpb25MYXllcklkKTtcblxuICBpZiAoYWN0aXZlSW5kZXggPT09IC0xIHx8IG92ZXJJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gbGF5ZXJPcmRlcjtcbiAgfVxuICByZXR1cm4gYXJyYXlNb3ZlKGxheWVyT3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTGF5ZXJUb0xheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IFZpc1N0YXRlWydsYXllck9yZGVyJ10sXG4gIGxheWVySWQ6IHN0cmluZ1xuKTogTGF5ZXJPcmRlciB7XG4gIHJldHVybiBbbGF5ZXJJZCwgLi4ubGF5ZXJPcmRlcl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXllckhvdmVyUHJvcFZhbHVlKFxuICBkYXRhOiBEYXRhUm93IHwgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSB8IGFueVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgZmllbGRJbmRleDogbnVtYmVyXG4pIHtcbiAgaWYgKCFkYXRhKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoZGF0YSBpbnN0YW5jZW9mIERhdGFSb3cpIHJldHVybiBkYXRhLnZhbHVlQXQoZmllbGRJbmRleCk7XG4gIHJldHVybiBkYXRhW2ZpZWxkSW5kZXhdO1xufVxuXG4vKiogQ2hlY2tzIGlmIGFueSBEZWNrIGxheWVycyBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgbG9hZGluZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcmVBbnlEZWNrTGF5ZXJzTG9hZGluZyhsYXllcnM6IERlY2tMYXllcltdKTogYm9vbGVhbiB7XG4gIHJldHVybiBsYXllcnMuc29tZShcbiAgICAvLyBsYXllci5pc0xvYWRlZCBjaGFuZ2VzIGZyZXF1ZW50bHkgaW4gRGVjayAoZXZlbiBvbiBob3Zlcikgc28gd2UgY2hlY2sgYWRkaXRpb25hbCBwcm9wZXJ0aWVzXG4gICAgbGF5ZXIgPT4gbGF5ZXIuaW50ZXJuYWxTdGF0ZSAmJiAhbGF5ZXIuaXNMb2FkZWRcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBLE9BQU9BLE9BQU8sTUFBTSxnQkFBZ0I7QUFFcEMsU0FBUUMsaUJBQWlCLEVBQUVDLHVCQUF1QixRQUFPLHNCQUFzQjtB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
|