Socket
Socket
Sign inDemoInstall

@atlas.js/atlas

Package Overview
Dependencies
45
Maintainers
2
Versions
23
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.2.0-alpha.3 to 2.2.0-alpha.4

4

package.json
{
"name": "@atlas.js/atlas",
"description": "A component-based Node.js library to reduce boilerplate and provide sane project structure 🍻",
"version": "2.2.0-alpha.3",
"version": "2.2.0-alpha.4",
"author": "Robert Rossmann <robert.rossmann@strv.com>",

@@ -34,3 +34,3 @@ "bugs": "https://github.com/strvcom/atlas.js/issues",

},
"gitHead": "ee441a017595bb0b88e20eec1df9cacddfdae96f"
"gitHead": "5a7ec5098e521b7d14d2ecdf584d1bef188c9bbf"
}

@@ -306,3 +306,5 @@ "use strict";

await (_context2 = _classPrivateFieldGet(this, _observers), _private.dispatch).call(_context2, 'afterStart', this);
this.log.info('atlas:ready');
this.log.info({
env: this.env
}, 'atlas:ready');
return this;

@@ -387,2 +389,2 @@ }

exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF0bGFzLm1qcyJdLCJuYW1lcyI6WyJBdGxhcyIsImluaXQiLCJvcHRpb25zIiwiY29uZmlnIiwiaG9va3MiLCJzZXJ2aWNlcyIsImFjdGlvbnMiLCJhbGlhc2VzIiwiYXRsYXMiLCJlbnYiLCJyb290IiwidHlwZXMiLCJwYXRocyIsIm1vZHVsZXMiLCJ0eXBlIiwicGF0aCIsInJlc29sdmUiLCJyZXF1aXJlIiwib3B0aW9uYWwiLCJsb2ciLCJkZWJ1ZyIsImJvb3RzdHJhcCIsImNvbXBvbmVudHMiLCJPYmplY3QiLCJrZXlzIiwiYWxpYXMiLCJIb29rIiwiZW50cmllcyIsImhvb2siLCJTZXJ2aWNlIiwic2VydmljZSIsIkFjdGlvbiIsImFjdGlvbiIsInByZXBhcmVkIiwic3RhcnRlZCIsImNvbnN0cnVjdG9yIiwiTWFwIiwicHJvY2VzcyIsIk5PREVfRU5WIiwiRnJhbWV3b3JrRXJyb3IiLCJta2NvbmZpZyIsImRlZmF1bHRzIiwibWtsb2ciLCJ2YWxpZGF0b3IiLCJBanYiLCJhanZLZXl3b3JkcyIsImtleXdvcmRzIiwibG9jYXRpb24iLCJhYnNvbHV0ZSIsImxvYWQiLCJvcHRyZXF1aXJlIiwiY29udGVudHMiLCJub3JtYWxpc2UiLCJkZWZhdWx0IiwiQ29tcG9uZW50Iiwib3B0cyIsImNvbXBvbmVudCIsInByZXBhcmUiLCJjYXRhbG9nIiwiY29udGFpbmVyIiwib2JzZXJ2ZXMiLCJzZXQiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiQXJyYXkiLCJmcm9tIiwiZXhwb3NlIiwiaW50ZXJuYWwiLCJ2YWx1ZSIsImZpbHRlciIsInJlc3VsdCIsIkJvb2xlYW4iLCJmb3JFYWNoIiwiZGlzcGF0Y2giLCJzdGFydCIsImVyciIsInN0b3AiLCJjYXRjaCIsInN0b3BFcnIiLCJmYXRhbCIsImluZm8iLCJlcnJvciIsInJldmVyc2UiLCJuYW1lIiwiYmFzZW5hbWUiLCJjd2QiLCJsZXZlbCIsInNlcmlhbGl6ZXJzIiwicGlubyIsInN0ZFNlcmlhbGl6ZXJzIiwi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LEdBQUdOLEdBQVI7QUFHQTtBQUNEO0FBQ0Y7O0FBR0QsU0FBSyxNQUFNLENBQUNuRCxLQUFELENBQVgsSUFBc0JuQixPQUF0QixFQUErQjtBQUM3QixhQUFPLEtBQUtBLE9BQUwsQ0FBYW1CLEtBQWIsQ0FBUDtBQUNEOztBQUVELDBDQUFnQixLQUFoQjs7QUFDQSwyQ0FBaUIsS0FBakI7O0FBRUEsVUFBYWlELGlCQUFQLE1BQUF0RSxLQUFLLEVBQVcsV0FBWCxFQUF3QixJQUF4QixDQUFYO0FBQ0EsU0FBS2UsR0FBTCxDQUFTOEQsSUFBVCxDQUFjLGVBQWQ7O0FBR0EsUUFBSUMsS0FBSixFQUFXO0FBQ1QsWUFBTUEsS0FBTjtBQUNEOztBQUVELFdBQU8sSUFBUDtBQUNEOztBQXBmUzs7Z0JBQU5sRixLLGNBQ2M7QUFDaEJtQixFQUFBQSxHQUFHLEVBQUU7QUFDSGlFLElBQUFBLElBQUksRUFBRXJFLElBQUksQ0FBQ3NFLFFBQUwsQ0FBY2hELE9BQU8sQ0FBQ2lELEdBQVIsRUFBZCxDQURIO0FBRUhDLElBQUFBLEtBQUssRUFBRSxNQUZKO0FBR0hDLElBQUFBLFdBQVcsRUFBRTtBQUNYWixNQUFBQSxHQUFHLEVBQUVhLElBQUksQ0FBQ0MsY0FBTCxDQUFvQmQsR0FEZDtBQUVYZSxNQUFBQSxHQUFHLEVBQUVGLElBQUksQ0FBQ0MsY0FBTCxDQUFvQkMsR0FGZDtBQUdYQyxNQUFBQSxHQUFHLEVBQUVILElBQUksQ0FBQ0MsY0FBTCxDQUFvQkU7QUFIZDtBQUhWLEdBRFc7QUFXaEJqRCxFQUFBQSxTQUFTLEVBQUU7QUFDVGtELElBQUFBLFNBQVMsRUFBRSxJQURGO0FBRVRDLElBQUFBLFdBQVcsRUFBRSxJQUZKO0FBR1RoRCxJQUFBQSxRQUFRLEVBQUUsQ0FDUixRQURRO0FBSEQ7QUFYSyxDOzs7Ozs7Ozs7Ozs7OztlQXNmTDlDLEsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXZSB1c2UgZm9yLWF3YWl0IHBhdHRlcm4gcXVpdGUgZXh0ZW5zaXZlbHkgaGVyZSBmb3IgbGVnaXRpbWF0ZSBwdXJwb3Nlc1xuLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgKiBhcyBBanYgZnJvbSAnYWp2J1xuaW1wb3J0ICogYXMgYWp2S2V5d29yZHMgZnJvbSAnYWp2LWtleXdvcmRzJ1xuaW1wb3J0ICogYXMgcGlubyBmcm9tICdwaW5vJ1xuaW1wb3J0IHtcbiAgZGVmYXVsdHNEZWVwIGFzIGRlZmF1bHRzLFxuICBpc1BsYWluT2JqZWN0LFxufSBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBGcmFtZXdvcmtFcnJvciB9IGZyb20gJ0BhdGxhcy5qcy9lcnJvcnMnXG5pbXBvcnQge1xuICBleHBvc2UsXG4gIGRpc3BhdGNoLFxuICBjb21wb25lbnQsXG4gIG1rY29uZmlnLFxuICBta2xvZyxcbiAgb3B0cmVxdWlyZSxcbn0gZnJvbSAnLi9wcml2YXRlJ1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyB5b3VyIGFwcGxpY2F0aW9uIGFuZCBhZ2dyZWdhdGVzIGFsbCBjb21wb25lbnRzIHRvZ2V0aGVyXG4gKlxuICogWW91IHNob3VsZCBnZW5lcmFsbHkgY3JlYXRlIG9ubHkgb25lIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgaW4gYSBwcm9ncmFtLlxuICovXG5jbGFzcyBBdGxhcyB7XG4gIHN0YXRpYyBkZWZhdWx0cyA9IHtcbiAgICBsb2c6IHtcbiAgICAgIG5hbWU6IHBhdGguYmFzZW5hbWUocHJvY2Vzcy5jd2QoKSksXG4gICAgICBsZXZlbDogJ2luZm8nLFxuICAgICAgc2VyaWFsaXplcnM6IHtcbiAgICAgICAgZXJyOiBwaW5vLnN0ZFNlcmlhbGl6ZXJzLmVycixcbiAgICAgICAgcmVxOiBwaW5vLnN0ZFNlcmlhbGl6ZXJzLnJlcSxcbiAgICAgICAgcmVzOiBwaW5vLnN0ZFNlcmlhbGl6ZXJzLnJlcyxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIHZhbGlkYXRvcjoge1xuICAgICAgYWxsRXJyb3JzOiB0cnVlLFxuICAgICAgdXNlRGVmYXVsdHM6IHRydWUsXG4gICAgICBrZXl3b3JkczogW1xuICAgICAgICAndHlwZW9mJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXNlIGEgYnJhbmQtbmV3IGF0bGFzIGluc3RhbmNlIGZyb20gdGhlIGdpdmVuIG1vZHVsZSBsb2NhdGlvbnNcbiAgICpcbiAgICogVXNlIHRoaXMgbWV0aG9kIHRvIHF1aWNrbHkgY29uZmlndXJlIEF0bGFzIGluc3RhbmNlIGJ5IHNpbXBseSB0ZWxsaW5nIGl0IHdoZXJlIHlvdXIgY29tcG9uZW50c1xuICAgKiBsaXZlIG9uIHRoZSBmaWxlc3lzdGVtLCBhbmQgQXRsYXMgd2lsbCBsb2FkIHRoZW0gZnJvbSB0aGUgZ2l2ZW4gbW9kdWxlIGxvY2F0aW9ucyBhbmQgYWRkIHRoZW1cbiAgICogdG8gdGhlIEF0bGFzIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgICAgb3B0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgICBvcHRpb25zLmVudiAgICAgICAgICAgICAgICAgICBUaGUgZW52aXJvbm1lbnQgdW5kZXIgd2hpY2ggdG8gb3BlcmF0ZVxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgICAgb3B0aW9ucy5yb290ICAgICAgICAgICAgICAgICAgVGhlIHJvb3QgZGlyZWN0b3J5IHRvIHdoaWNoIGFsbCBvdGhlclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgbWVudGlvbmVkIGhlcmUgYXJlIHJlbGF0aXZlXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgICBvcHRpb25zLmNvbmZpZz0nY29uZmlnJyAgICAgICBNb2R1bGUgbG9jYXRpb24gZm9yIHRoZSBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgICBvcHRpb25zLmhvb2tzPSdob29rcycgICAgICAgICBNb2R1bGUgbG9jYXRpb24gZm9yIHRoZSBob29rc1xuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgICAgb3B0aW9ucy5zZXJ2aWNlcz0nc2VydmljZXMnICAgTW9kdWxlIGxvY2F0aW9uIGZvciB0aGUgc2VydmljZXNcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgIG9wdGlvbnMuYWN0aW9ucz0nYWN0aW9ucycgICAgIE1vZHVsZSBsb2NhdGlvbiBmb3IgdGhlIGFjdGlvbnNcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgIG9wdGlvbnMuYWxpYXNlcz0nYWxpYXNlcycgICAgIE1vZHVsZSBsb2NhdGlvbiBmb3IgdGhlIGFsaWFzZXNcbiAgICogQHJldHVybiAgICB7QXRsYXN9XG4gICAqL1xuICBzdGF0aWMgaW5pdChvcHRpb25zID0ge30pIHtcbiAgICBkZWZhdWx0cyhvcHRpb25zLCB7XG4gICAgICBjb25maWc6ICdjb25maWcnLFxuICAgICAgaG9va3M6ICdob29rcycsXG4gICAgICBzZXJ2aWNlczogJ3NlcnZpY2VzJyxcbiAgICAgIGFjdGlvbnM6ICdhY3Rpb25zJyxcbiAgICAgIGFsaWFzZXM6ICdhbGlhc2VzJyxcbiAgICB9KVxuXG4gICAgY29uc3QgYXRsYXMgPSBuZXcgdGhpcyh7XG4gICAgICBlbnY6IG9wdGlvbnMuZW52LFxuICAgICAgcm9vdDogb3B0aW9ucy5yb290LFxuICAgICAgY29uZmlnOiBvcHRpb25zLmNvbmZpZyxcbiAgICB9KVxuICAgIGNvbnN0IHR5cGVzID0gW1xuICAgICAgJ2hvb2tzJyxcbiAgICAgICdzZXJ2aWNlcycsXG4gICAgICAnYWN0aW9ucycsXG4gICAgICAnYWxpYXNlcycsXG4gICAgXVxuICAgIGNvbnN0IHBhdGhzID0ge31cbiAgICBjb25zdCBtb2R1bGVzID0ge31cblxuICAgIGZvciAoY29uc3QgdHlwZSBvZiB0eXBlcykge1xuICAgICAgcGF0aHNbdHlwZV0gPSBwYXRoLnJlc29sdmUob3B0aW9ucy5yb290LCBvcHRpb25zW3R5cGVdKVxuICAgICAgbW9kdWxlc1t0eXBlXSA9IGF0bGFzLnJlcXVpcmUob3B0aW9uc1t0eXBlXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxuICAgIH1cblxuICAgIGF0bGFzLmxvZy5kZWJ1Zyh7IHBhdGhzIH0sICdhdGxhczppbml0JylcblxuICAgIHJldHVybiB0aGlzLmJvb3RzdHJhcChhdGxhcywgbW9kdWxlcylcbiAgfVxuXG4gIC8qKlxuICAgKiBCb290c3RyYXAgdGhlIGdpdmVuIEF0bGFzIGluc3RhbmNlIHdpdGggdGhlIHByb3ZpZGVkIG1vZHVsZXNcbiAgICpcbiAgICogVXNlIHRoaXMgbWV0aG9kIHRvIHF1aWNrbHkgc2V0IHVwIHRoZSBnaXZlbiBBdGxhcyBpbnN0YW5jZSB0byB1c2UgdGhlIHByb3ZpZGVkIGNvbXBvbmVudHMuIFRoaXNcbiAgICogaXMgdXNlZnVsIGlmIHlvdSBuZWVkIHRvIGhhdmUgbXVsdGlwbGUgZW50cnkgcG9pbnRzIHRvIHlvdXIgcHJvZ3JhbSBhbmQgc29tZSBlbnRyeXBvaW50cyBzaG91bGRcbiAgICogb25seSB1c2Ugc29tZSBjb21wb25lbnRzIGF2YWlsYWJsZS4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIGltcGxlbWVudGluZyB3b3JrZXJcbiAgICogcHJvY2Vzc2VzIHdoZXJlIHlvdSBvbmx5IG5lZWQgYSBzdWJzZXQgb2YgYWxsIGF2YWlsYWJsZSBjb21wb25lbnRzLiBUaGlzIG1ldGhvZCwgd2hpbGUgbW9yZVxuICAgKiB2ZXJib3NlIGFzIEF0bGFzLmluaXQoKSwgc3RpbGwgZnJlZXMgeW91IGZyb20gbWFudWFsbHkgYWRkaW5nIGFsbCB0aGUgY29tcG9uZW50cyBieSBoYW5kIHdoaWxlXG4gICAqIHByb3ZpZGluZyBncmVhdGVyIGZsZXhpYmlsaXR5IGFzIHRvIHdoaWNoIGNvbXBvbmVudHMgd2lsbCBiZSB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0gICAgIHtBdGxhc30gICBhdGxhcyAgICAgICAgICAgICAgICAgVGhlIEF0bGFzIGluc3RhbmNlIHRvIGJvb3RzdHJhcFxuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICBtb2R1bGVzPyAgICAgICAgICAgICAgQWxsIHRoZSBtb2R1bGVzIHdoaWNoIHNob3VsZCBiZSBhZGRlZCB0byBBdGxhc1xuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICBtb2R1bGVzLmFjdGlvbnMgICAgICAgQWN0aW9ucyB0byBhZGRcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgbW9kdWxlcy5ob29rcyAgICAgICAgIEhvb2tzIHRvIGFkZFxuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICBtb2R1bGVzLnNlcnZpY2VzICAgICAgU2VydmljZXMgdG8gYWRkXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gIG1vZHVsZXMuYWxpYXNlcyAgICAgICBBbGlhc2VzIGZvciBhbGwgdGhlIGNvbXBvbmVudHNcbiAgICogQHJldHVybiAgICB7QXRsYXN9ICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBBdGxhcyBpbnN0YW5jZSB3aXRoIGFsbCBjb21wb25lbnRzIGFkZGVkLCByZWFkeVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgc3RhcnRlZFxuICAgKi9cbiAgc3RhdGljIGJvb3RzdHJhcChhdGxhcywgbW9kdWxlcyA9IHt9KSB7XG4gICAgZGVmYXVsdHMobW9kdWxlcywge1xuICAgICAgLy8gY29uZmlnIG1vZHVsZSBpcyBsb2FkZWQgYnkgQXRsYXMgaW5zdGFuY2UgaXRzZWxmLCBzbyBpdCdzIG9rYXkgdG8gdXNlIGEgc3RyaW5nIGhlcmUgYW5kIGxldFxuICAgICAgLy8gQXRsYXMgbG9hZCBpdFxuICAgICAgY29uZmlnOiAnY29uZmlnJyxcbiAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbW9kdWxlcyBtdXN0IGFscmVhZHkgYmUgcHJvdmlkZWQgZGlyZWN0bHkgYXMgd2Ugd29uJ3QgbG9hZCB0aGVtXG4gICAgICBhY3Rpb25zOiB7fSxcbiAgICAgIGhvb2tzOiB7fSxcbiAgICAgIHNlcnZpY2VzOiB7fSxcbiAgICAgIGFsaWFzZXM6IHtcbiAgICAgICAgYWN0aW9uczoge30sXG4gICAgICAgIGhvb2tzOiB7fSxcbiAgICAgICAgc2VydmljZXM6IHt9LFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgYXRsYXMubG9nLmRlYnVnKHtcbiAgICAgIGVudjogYXRsYXMuZW52LFxuICAgICAgcm9vdDogYXRsYXMucm9vdCxcbiAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgYWN0aW9uczogT2JqZWN0LmtleXMobW9kdWxlcy5hY3Rpb25zKSxcbiAgICAgICAgaG9va3M6IE9iamVjdC5rZXlzKG1vZHVsZXMuaG9va3MpLFxuICAgICAgICBzZXJ2aWNlczogT2JqZWN0LmtleXMobW9kdWxlcy5zZXJ2aWNlcyksXG4gICAgICB9LFxuICAgIH0sICdhdGxhczpib290c3RyYXAnKVxuXG4gICAgLy8gSG9va3NcbiAgICBmb3IgKGNvbnN0IFthbGlhcywgSG9va10gb2YgT2JqZWN0LmVudHJpZXMobW9kdWxlcy5ob29rcykpIHtcbiAgICAgIGNvbnN0IGFsaWFzZXMgPSBtb2R1bGVzLmFsaWFzZXMuaG9va3NbYWxpYXNdXG4gICAgICBhdGxhcy5ob29rKGFsaWFzLCBIb29rLCB7IGFsaWFzZXMgfSlcbiAgICB9XG5cbiAgICAvLyBTZXJ2aWNlc1xuICAgIGZvciAoY29uc3QgW2FsaWFzLCBTZXJ2aWNlXSBvZiBPYmplY3QuZW50cmllcyhtb2R1bGVzLnNlcnZpY2VzKSkge1xuICAgICAgY29uc3QgYWxpYXNlcyA9IG1vZHVsZXMuYWxpYXNlcy5zZXJ2aWNlc1thbGlhc11cbiAgICAgIGF0bGFzLnNlcnZpY2UoYWxpYXMsIFNlcnZpY2UsIHsgYWxpYXNlcyB9KVxuICAgIH1cblxuICAgIC8vIEFjdGlvbnNcbiAgICBmb3IgKGNvbnN0IFthbGlhcywgQWN0aW9uXSBvZiBPYmplY3QuZW50cmllcyhtb2R1bGVzLmFjdGlvbnMpKSB7XG4gICAgICBjb25zdCBhbGlhc2VzID0gbW9kdWxlcy5hbGlhc2VzLmFjdGlvbnNbYWxpYXNdXG4gICAgICBhdGxhcy5hY3Rpb24oYWxpYXMsIEFjdGlvbiwgeyBhbGlhc2VzIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGF0bGFzXG4gIH1cblxuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBlbnZpcm9ubWVudCB1bmRlciB3aGljaCB0aGlzIGluc3RhbmNlIG9wZXJhdGVzXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIE5PREVfRU5WIGZyb20gdGhlIGVudmlyb25tZW50LlxuICAgKlxuICAgKiBAcmVhZG9ubHlcbiAgICogQHJldHVybiAgICB7U3RyaW5nfVxuICAgKi9cbiAgZ2V0IGVudigpIHtcbiAgICByZXR1cm4gdGhpcy4jZW52XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJvb3QgZm9sZGVyIHdoZXJlIGFsbCBvdGhlciBwYXRocyBzaG91bGQgYmUgcmVsYXRpdmUgdG9cbiAgICpcbiAgICogSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3Ugc2V0IHRoaXMgdG8gdGhlIHByb2plY3QncyByb290IGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHJlYWRvbmx5XG4gICAqIEByZXR1cm4gICAge1N0cmluZ31cbiAgICovXG4gIGdldCByb290KCkge1xuICAgIHJldHVybiB0aGlzLiNyb290XG4gIH1cblxuICAvKipcbiAgICogSXMgdGhpcyBpbnN0YW5jZSBpbiBhIHByZXBhcmVkIHN0YXRlP1xuICAgKlxuICAgKiBAcmVhZG9ubHlcbiAgICogQHJldHVybiAgICB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBwcmVwYXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy4jcHJlcGFyZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBJcyB0aGlzIGluc3RhbmNlIGluIGEgc3RhcnRlZCBzdGF0ZT9cbiAgICpcbiAgICogQHJlYWRvbmx5XG4gICAqIEByZXR1cm4gICAge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgc3RhcnRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy4jc3RhcnRlZFxuICB9XG5cbiAgLyoqXG4gICAqIEF0bGFzIGNvbmZpZ3VyYXRpb24sIGFzIHBhc3NlZCBpbiB0byB0aGUgY29uc3RydWN0b3JcbiAgICpcbiAgICogQHR5cGUgICAge09iamVjdH1cbiAgICovXG4gIGNvbmZpZyA9IHt9XG5cbiAgLyoqXG4gICAqIEFsbCBzZXJ2aWNlcyBhZGRlZCB0byB0aGlzIGluc3RhbmNlXG4gICAqXG4gICAqIEB0eXBlICAgIHtPYmplY3R9XG4gICAqL1xuICBzZXJ2aWNlcyA9IHt9XG5cbiAgLyoqXG4gICAqIEFsbCBhY3Rpb25zIGFkZGVkIHRvIHRoaXMgaW5zdGFuY2VcbiAgICpcbiAgICogQHR5cGUgICAge09iamVjdH1cbiAgICovXG4gIGFjdGlvbnMgPSB7fVxuXG4gICNlbnYgPSBudWxsXG4gICNyb290ID0gbnVsbFxuICAjcHJlcGFyZWQgPSBmYWxzZVxuICAjc3RhcnRlZCA9IGZhbHNlXG4gICNjYXRhbG9nID0ge1xuICAgIHNlcnZpY2VzOiBuZXcgTWFwKCksXG4gICAgaG9va3M6IG5ldyBNYXAoKSxcbiAgICBhY3Rpb25zOiBuZXcgTWFwKCksXG4gIH1cblxuICAjb2JzZXJ2ZXJzID0gbmV3IE1hcCgpXG5cbiAgLyoqXG4gICAqIEFuIGluc3RhbmNlIG9mIEFqdiB1c2VkIHRvIHZhbGlkYXRlIGNvbXBvbmVudCBjb25maWd1cmF0aW9uXG4gICAqIEB0eXBlICAgIHtBanZ9XG4gICAqL1xuICB2YWxpZGF0b3IgPSBudWxsXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdGlvbnMgICAgICAgICAgICAgT3B0aW9ucyBmb3IgdGhlIGluc3RhbmNlXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0aW9ucy5jb25maWcgICAgICBDb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhlIGluc3RhbmNlIGFuZCBmb3IgYWxsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlcyBvciBvdGhlciBjb21wb25lbnRzIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG9cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIG9wdGlvbnMucm9vdCAgICAgICAgVGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIG9wdGlvbnMuZW52ICAgICAgICAgVGhlIGVudmlyb25tZW50IHVuZGVyIHdoaWNoIHRoaXMgaW5zdGFuY2Ugb3BlcmF0ZXMuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb25lbnRzIG1heSB1c2UgdGhpcyB2YWx1ZSBmb3IgdmFyaW91cyBwdXJwb3Nlcy5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIE5PREVfRU5WLlxuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucyA9IHt9KSB7XG4gICAgLy8gSW5pdGlhbGlzZSBwcml2YXRlIHN0dWZmXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb2Nlc3MtZW52XG4gICAgdGhpcy4jZW52ID0gb3B0aW9ucy5lbnYgfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlZcbiAgICB0aGlzLiNyb290ID0gb3B0aW9ucy5yb290XG5cbiAgICAvLyBTYWZldHkgY2hlY2tzXG4gICAgaWYgKCF0aGlzLiNlbnYpIHtcbiAgICAgIHRocm93IG5ldyBGcmFtZXdvcmtFcnJvcignZW52IG5vdCBzcGVjaWZpZWQgYW5kIE5PREVfRU5WIHdhcyBub3Qgc2V0JylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRoaXMucm9vdCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBGcmFtZXdvcmtFcnJvcihgcm9vdCBtdXN0IGJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkLCBnb3QgJHtvcHRpb25zLnJvb3R9YClcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZyA9IHRoaXM6Om1rY29uZmlnKG9wdGlvbnMuY29uZmlnLCB7XG4gICAgICBhdGxhczogQXRsYXMuZGVmYXVsdHMsXG4gICAgICBzZXJ2aWNlczoge30sXG4gICAgICBob29rczoge30sXG4gICAgICBhY3Rpb25zOiB7fSxcbiAgICB9KVxuICAgIC8vIExvZ2dlciDwn4yyXG4gICAgdGhpcy5sb2cgPSB0aGlzOjpta2xvZyh0aGlzLmNvbmZpZy5hdGxhcy5sb2cpXG4gICAgLy8gQWp2IHZhbGlkYXRvciDinJNcbiAgICB0aGlzLnZhbGlkYXRvciA9IG5ldyBBanYodGhpcy5jb25maWcuYXRsYXMudmFsaWRhdG9yKVxuICAgIGFqdktleXdvcmRzKHRoaXMudmFsaWRhdG9yLCB0aGlzLmNvbmZpZy5hdGxhcy52YWxpZGF0b3Iua2V5d29yZHMpXG4gIH1cblxuICAvKipcbiAgICogUmVxdWlyZSBhIG1vZHVsZSBieSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290XG4gICAqXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgbG9jYXRpb24gICAgICAgICAgVGhlIG1vZHVsZSdzIGxvY2F0aW9uLCByZWxhdGl2ZSB0byByb290XG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0aW9ucz8gICAgICAgICAgT3B0aW9uc1xuICAgKiBAcGFyYW0gICAgIHtCb29sZWFufSAgIG9wdGlvbnMub3B0aW9uYWwgIElmIHRydWUsIHdpbGwgbm90IHRocm93IGlmIHRoZSBtb2R1bGUgZG9lcyBub3QgZXhpc3RcbiAgICogQHBhcmFtICAgICB7Qm9vbGVhbn0gICBvcHRpb25zLm5vcm1hbGlzZSBJZiB0cnVlLCBpdCB3aWxsIHByZWZlciB0aGUgRVMgbW9kdWxlcycgZGVmYXVsdCBleHBvcnRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyIG5hbWVkIGV4cG9ydHMgb3IgdGhlIENvbW1vbkpTIGV4cG9ydHNcbiAgICogQHBhcmFtICAgICB7Qm9vbGVhbn0gICBvcHRpb25zLmFic29sdXRlICBJZiB0cnVlLCB3aWxsIHRyeSB0byBsb2FkIHRoZSBtb2R1bGUgd2l0aG91dFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmluZyB0aGUgbW9kdWxlJ3MgbmFtZSB0byB0aGUgcHJvamVjdCByb290IChpdFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgbG9hZCB0aGUgbW9kdWxlIHVzaW5nIHN0YW5kYXJkIE5vZGUncyBtZWNoYW5pc20pXG4gICAqIEByZXR1cm4gICAge21peGVkfSAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1vZHVsZSdzIGNvbnRlbnRzXG4gICAqL1xuICByZXF1aXJlKGxvY2F0aW9uLCBvcHRpb25zID0ge30pIHtcbiAgICBsb2NhdGlvbiA9IG9wdGlvbnMuYWJzb2x1dGVcbiAgICAgID8gbG9jYXRpb25cbiAgICAgIDogcGF0aC5yZXNvbHZlKHRoaXMucm9vdCwgbG9jYXRpb24pXG5cbiAgICBjb25zdCBsb2FkID0gb3B0aW9ucy5vcHRpb25hbFxuICAgICAgPyBvcHRyZXF1aXJlXG4gICAgICA6IHJlcXVpcmVcbiAgICBjb25zdCBjb250ZW50cyA9IGxvYWQobG9jYXRpb24pXG5cbiAgICByZXR1cm4gb3B0aW9ucy5ub3JtYWxpc2UgJiYgaXNQbGFpbk9iamVjdChjb250ZW50cy5kZWZhdWx0KVxuICAgICAgPyBjb250ZW50cy5kZWZhdWx0XG4gICAgICA6IGNvbnRlbnRzXG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBzZXJ2aWNlIGludG8gdGhpcyBpbnN0YW5jZSBvZiBBdGxhcyB3aXRoIHRoZSBnaXZlbiBhbGlhc1xuICAgKlxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgICAgICBUaGUgYWxpYXMgZm9yIHRoZSBzZXJ2aWNlIC0gaXQgd2lsbCBiZSB1c2VkIGZvciBleHBvc2luZ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2VydmljZSdzIEFQSSBvbiB0aGUgYXRsYXMuc2VydmljZXMgb2JqZWN0IGFuZCBmb3JcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2luZyBjb25maWd1cmF0aW9uIGRhdGEgdG8gaXRcbiAgICogQHBhcmFtICAgICB7Y2xhc3N9ICAgICBDb21wb25lbnQgICAgICAgVGhlIHNlcnZpY2UgY2xhc3NcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBvcHRzICAgICAgICAgICAgUnVudGltZSBvcHRpb25zIGZvciB0aGUgc2VydmljZVxuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMuYWxpYXNlcyAgICBCaW5kaW5ncyB0byBvdGhlciBkZWZpbmVkIGNvbXBvbmVudHNcbiAgICogQHJldHVybiAgICB7dGhpc31cbiAgICovXG4gIHNlcnZpY2UoYWxpYXMsIENvbXBvbmVudCwgb3B0cyA9IHt9KSB7XG4gICAgdGhpczo6Y29tcG9uZW50KHtcbiAgICAgIHR5cGU6ICdzZXJ2aWNlJyxcbiAgICAgIGFsaWFzLFxuICAgICAgQ29tcG9uZW50LFxuICAgICAgYWxpYXNlczogb3B0cy5hbGlhc2VzLFxuICAgIH0sIHRoaXMuI2NhdGFsb2cuc2VydmljZXMpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgaG9vayBpbnRvIHRoaXMgaW5zdGFuY2Ugb2YgQXRsYXMgd2l0aCB0aGUgZ2l2ZW4gYWxpYXNcbiAgICpcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICBhbGlhcyAgICAgICAgICAgVGhlIGFsaWFzIGZvciB0aGUgaG9vayAtIGl0IHdpbGwgYmUgdXNlZCBmb3IgcGFzc2luZ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGRhdGEgdG8gaXRcbiAgICogQHBhcmFtICAgICB7Y2xhc3N9ICAgICBDb21wb25lbnQgICAgICAgVGhlIGhvb2sgY2xhc3NcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBvcHRzICAgICAgICAgICAgUnVudGltZSBvcHRpb25zIGZvciB0aGUgaG9va1xuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMuYWxpYXNlcyAgICBCaW5kaW5ncyB0byBvdGhlciBkZWZpbmVkIGNvbXBvbmVudHNcbiAgICogQHJldHVybiAgICB7dGhpc31cbiAgICovXG4gIGhvb2soYWxpYXMsIENvbXBvbmVudCwgb3B0cyA9IHt9KSB7XG4gICAgdGhpczo6Y29tcG9uZW50KHtcbiAgICAgIHR5cGU6ICdob29rJyxcbiAgICAgIGFsaWFzLFxuICAgICAgQ29tcG9uZW50LFxuICAgICAgYWxpYXNlczogb3B0cy5hbGlhc2VzLFxuICAgIH0sIHRoaXMuI2NhdGFsb2cuaG9va3MpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGFuIGFjdGlvbiBpbnRvIHRoaXMgaW5zdGFuY2Ugb2YgQXRsYXMgd2l0aCB0aGUgZ2l2ZW4gYWxpYXNcbiAgICpcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICBhbGlhcyAgICAgICAgICAgVGhlIGFsaWFzIGZvciB0aGUgYWN0aW9uIC0gaXQgd2lsbCBiZSB1c2VkIGZvciBleHBvc2luZ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYWN0aW9uJ3MgQVBJIG9uIHRoZSBhdGxhcy5hY3Rpb25zIG9iamVjdCBhbmQgZm9yXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpbmcgY29uZmlndXJhdGlvbiBkYXRhIHRvIGl0XG4gICAqIEBwYXJhbSAgICAge2NsYXNzfSAgICAgQ29tcG9uZW50ICAgICAgIFRoZSBhY3Rpb24gY2xhc3NcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBvcHRzICAgICAgICAgICAgUnVudGltZSBvcHRpb25zIGZvciB0aGUgYWN0aW9uXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0cy5hbGlhc2VzICAgIEJpbmRpbmdzIHRvIG90aGVyIGRlZmluZWQgY29tcG9uZW50c1xuICAgKiBAcmV0dXJuICAgIHt0aGlzfVxuICAgKi9cbiAgYWN0aW9uKGFsaWFzLCBDb21wb25lbnQsIG9wdHMgPSB7fSkge1xuICAgIHRoaXM6OmNvbXBvbmVudCh7XG4gICAgICB0eXBlOiAnYWN0aW9uJyxcbiAgICAgIGFsaWFzLFxuICAgICAgQ29tcG9uZW50LFxuICAgICAgYWxpYXNlczogb3B0cy5hbGlhc2VzLFxuICAgIH0sIHRoaXMuI2NhdGFsb2cuYWN0aW9ucylcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUHJlcGFyZSBhbGwgc2VydmljZXMgYW5kIGhvb2tzIGZvciB1c2VcbiAgICpcbiAgICogR2VuZXJhbGx5IHlvdSBzaG91bGQgdXNlIGBhdGxhcy5zdGFydCgpYCBpbnN0ZWFkIHRvIGdldCB5b3VyIGluc3RhbmNlIHVwIGFuZCBydW5uaW5nLiBIb3dldmVyLFxuICAgKiBzb21ldGltZXMgaXQgaXMgbmVjZXNzYXJ5IHRvIGdldCBhbGwgdGhlIHNlcnZpY2VzIGludG8gYSBcImdldC1yZWFkeVwiIHN0YXRlIGJlZm9yZSB0aGV5IHN0YXJ0XG4gICAqIGNvbm5lY3RpbmcgdG8gcmVtb3RlIHJlc291cmNlcyBvciBkb2luZyBhbnkgaW50ZW5zaXZlIEkvTyBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuICAgIHtQcm9taXNlPHRoaXM+fVxuICAgKi9cbiAgYXN5bmMgcHJlcGFyZSgpIHtcbiAgICBpZiAodGhpcy5wcmVwYXJlZCkge1xuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICBjb25zdCBjYXRhbG9nID0gdGhpcy4jY2F0YWxvZ1xuICAgIGNvbnN0IHsgc2VydmljZXMsIGFjdGlvbnMsIGhvb2tzIH0gPSBjYXRhbG9nXG5cbiAgICBmb3IgKGNvbnN0IFthbGlhcywgY29udGFpbmVyXSBvZiBob29rcykge1xuICAgICAgaWYgKCFjb250YWluZXIuQ29tcG9uZW50Lm9ic2VydmVzKSB7XG4gICAgICAgIHRocm93IG5ldyBGcmFtZXdvcmtFcnJvcihgSG9vayAke2FsaWFzfSBkb2VzIG5vdCBoYXZlIHN0YXRpYyAnb2JzZXJ2ZXMnIHByb3BlcnR5YClcbiAgICAgIH1cblxuICAgICAgLy8gUHJlcGFyZSBvYnNlcnZlcnMgb2YgQXRsYXMgaXRzZWxmXG4gICAgICBpZiAoY29udGFpbmVyLkNvbXBvbmVudC5vYnNlcnZlcyA9PT0gJ2F0bGFzJykge1xuICAgICAgICB0aGlzLiNvYnNlcnZlcnMuc2V0KGFsaWFzLCBjb250YWluZXIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUHJlcGFyZSBob29rc1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFsuLi5ob29rc10ubWFwKChbLCBjb250YWluZXJdKSA9PiBjb250YWluZXIucHJlcGFyZSh7IGNhdGFsb2cgfSkpKVxuXG4gICAgLy8gUHJlcGFyZSBhY3Rpb25zIGFuZCBzZXJ2aWNlcyBpbiBwYXJhbGxlbCDwn5qAXG4gICAgdm9pZCAoYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgLi4uQXJyYXkuZnJvbShhY3Rpb25zKS5tYXAoYXN5bmMgKFthbGlhcywgY29udGFpbmVyXSkgPT4gKHtcbiAgICAgICAgZXhwb3NlOiBjb250YWluZXIuQ29tcG9uZW50LmludGVybmFsID8gZmFsc2UgOiAnYWN0aW9ucycsXG4gICAgICAgIHZhbHVlOiBhd2FpdCBjb250YWluZXIucHJlcGFyZSh7IGNhdGFsb2csIGhvb2tzIH0pLFxuICAgICAgICBhbGlhcyxcbiAgICAgIH0pKSxcbiAgICAgIC4uLkFycmF5LmZyb20oc2VydmljZXMpLm1hcChhc3luYyAoW2FsaWFzLCBjb250YWluZXJdKSA9PiAoe1xuICAgICAgICBleHBvc2U6IGNvbnRhaW5lci5Db21wb25lbnQuaW50ZXJuYWwgPyBmYWxzZSA6ICdzZXJ2aWNlcycsXG4gICAgICAgIHZhbHVlOiBhd2FpdCBjb250YWluZXIucHJlcGFyZSh7IGNhdGFsb2csIGhvb2tzIH0pLFxuICAgICAgICBhbGlhcyxcbiAgICAgIH0pKSxcbiAgICBdKSlcbiAgICAgIC5maWx0ZXIocmVzdWx0ID0+IEJvb2xlYW4ocmVzdWx0LmV4cG9zZSkpXG4gICAgICAuZm9yRWFjaChyZXN1bHQgPT4gdGhpczo6ZXhwb3NlKHJlc3VsdC5leHBvc2UsIHJlc3VsdC5hbGlhcywgcmVzdWx0LnZhbHVlKSlcblxuICAgIHRoaXMuI3ByZXBhcmVkID0gdHJ1ZVxuICAgIGF3YWl0IHRoaXMuI29ic2VydmVyczo6ZGlzcGF0Y2goJ2FmdGVyUHJlcGFyZScsIHRoaXMpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGFsbCBzZXJ2aWNlc1xuICAgKlxuICAgKiBAcmV0dXJuICAgIHtQcm9taXNlPHRoaXM+fVxuICAgKi9cbiAgYXN5bmMgc3RhcnQoKSB7XG4gICAgY29uc3QgeyBhY3Rpb25zLCBzZXJ2aWNlcywgaG9va3MgfSA9IHRoaXMuI2NhdGFsb2dcblxuICAgIGF3YWl0IHRoaXMucHJlcGFyZSgpXG4gICAgYXdhaXQgdGhpcy4jb2JzZXJ2ZXJzOjpkaXNwYXRjaCgnYmVmb3JlU3RhcnQnLCB0aGlzKVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgLi4uQXJyYXkuZnJvbShob29rcyksXG4gICAgICAuLi5BcnJheS5mcm9tKGFjdGlvbnMpLFxuICAgIF0ubWFwKChbLCBjb250YWluZXJdKSA9PiBjb250YWluZXIuc3RhcnQoKSkpXG5cbiAgICAvLyBTdGFydCBhbGwgc2VydmljZXMsIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgYWRkZWQgdG8gdGhlIGluc3RhbmNlIPCfkqpcbiAgICAvLyBPcmRlcmluZyBpcyBpbXBvcnRhbnQgaGVyZSEgU29tZSBzZXJ2aWNlcyBzaG91bGQgYmUgc3RhcnRlZCBhcyB0aGUgbGFzdCBvbmVzIGJlY2F1c2UgdGhleVxuICAgIC8vIGV4cG9zZSBzb21lIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIG91dHNpZGUgd29ybGQgYW5kIHN0YXJ0aW5nIHRob3NlIGJlZm9yZSBpZS4gYSBkYXRhYmFzZVxuICAgIC8vIHNlcnZpY2UgaXMgc3RhcnRlZCBtaWdodCBicmVhayBzdHVmZiFcbiAgICBmb3IgKGNvbnN0IFssIGNvbnRhaW5lcl0gb2Ygc2VydmljZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGNvbnRhaW5lci5zdGFydCh7IGhvb2tzIH0pXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gUm9sbCBiYWNrXG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcCgpXG4gICAgICAgICAgLy8gU2hpdCBqdXN0IGdvdCBzZXJpb3VzIPCfmLFcbiAgICAgICAgICAuY2F0Y2goc3RvcEVyciA9PiB2b2lkIHRoaXMubG9nLmZhdGFsKHsgZXJyOiBzdG9wRXJyIH0sICdhdGxhczpzdGFydDpyb2xsYmFjay1mYWlsdXJlJykpXG5cbiAgICAgICAgLy8gUmUtdGhyb3cgdGhlIG9yaWdpbmFsIGVycm9yIHdoaWNoIGNhdXNlZCBBdGxhcyB0byBmYWlsIHRvIHN0YXJ0XG4gICAgICAgIHRocm93IGVyclxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuI3N0YXJ0ZWQgPSB0cnVlXG4gICAgYXdhaXQgdGhpcy4jb2JzZXJ2ZXJzOjpkaXNwYXRjaCgnYWZ0ZXJTdGFydCcsIHRoaXMpXG4gICAgdGhpcy5sb2cuaW5mbygnYXRsYXM6cmVhZHknKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIGFsbCBzZXJ2aWNlcywgdW5yZWdpc3RlciBhbGwgYWN0aW9ucyBhbmQgaG9va3MgYW5kIHVucHVibGlzaCBhbnkgQVBJcyBleHBvc2VkIGJ5IHRoZW1cbiAgICpcbiAgICogVGhpcyBwdXRzIHRoZSB3aG9sZSBhcHBsaWNhdGlvbiBpbnRvIGEgc3RhdGUgYXMgaXQgd2FzIGJlZm9yZSBgYXRsYXMucHJlcGFyZSgpYCBhbmQvb3JcbiAgICogYGF0bGFzLnN0YXJ0KClgIHdhcyBjYWxsZWQuXG4gICAqXG4gICAqIEByZXR1cm4gICAge1Byb21pc2U8dGhpcz59XG4gICAqL1xuICBhc3luYyBzdG9wKCkge1xuICAgIGNvbnN0IHsgc2VydmljZXMsIGFjdGlvbnMsIGhvb2tzIH0gPSB0aGlzLiNjYXRhbG9nXG5cbiAgICBhd2FpdCB0aGlzLiNvYnNlcnZlcnM6OmRpc3BhdGNoKCdiZWZvcmVTdG9wJywgdGhpcylcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIC4uLkFycmF5LmZyb20oaG9va3MpLFxuICAgICAgLi4uQXJyYXkuZnJvbShhY3Rpb25zKSxcbiAgICBdLm1hcCgoWywgY29udGFpbmVyXSkgPT4gY29udGFpbmVyLnN0b3AoKSkpXG5cbiAgICBsZXQgZXJyb3JcblxuICAgIC8vIFN0b3AgYWxsIHNlcnZpY2VzLCBpbiB0aGUgcmV2ZXJzZSBvcmRlciB0aGV5IHdlcmUgYWRkZWQgdG8gdGhlIGluc3RhbmNlIPCfkqpcbiAgICAvLyBUaGlzIHdpbGwgbWFrZSBzdXJlIHRoZSBtb3N0IGltcG9ydGFudCBzZXJ2aWNlcyBhcmUgc3RvcHBlZCBmaXJzdC5cbiAgICBmb3IgKGNvbnN0IFthbGlhcywgY29udGFpbmVyXSBvZiBBcnJheS5mcm9tKHNlcnZpY2VzKS5yZXZlcnNlKCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnNlcnZpY2VzW2FsaWFzXVxuICAgICAgICBhd2FpdCBjb250YWluZXIuc3RvcCh7IGhvb2tzIH0pXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgZXJyb3IgPSBlcnJcbiAgICAgICAgLy8gTGVhdmUgdGhpcyBzZXJ2aWNlIGFzIGlzIGFuZCBtb3ZlIHRvIHRoZSBuZXh0IHNlcnZpY2UuIFdlIHByb2JhYmx5IGNhbm5vdCBkbyBhbnl0aGluZyB0b1xuICAgICAgICAvLyBwcm9wZXJseSBzdG9wIHRoaXMgc2VydmljZS4g8J+ZgVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVucmVnaXN0ZXIgYWN0aW9uc1xuICAgIGZvciAoY29uc3QgW2FsaWFzXSBvZiBhY3Rpb25zKSB7XG4gICAgICBkZWxldGUgdGhpcy5hY3Rpb25zW2FsaWFzXVxuICAgIH1cblxuICAgIHRoaXMuI3N0YXJ0ZWQgPSBmYWxzZVxuICAgIHRoaXMuI3ByZXBhcmVkID0gZmFsc2VcblxuICAgIGF3YWl0IGhvb2tzOjpkaXNwYXRjaCgnYWZ0ZXJTdG9wJywgbnVsbClcbiAgICB0aGlzLmxvZy5pbmZvKCdhdGxhczpzdG9wcGVkJylcblxuICAgIC8vIElmIHRoZXJlIHdhcyBhbiBlcnJvciB0aHJvd24gaW4gb25lIG9mIHRoZSBzZXJ2aWNlcyBkdXJpbmcgLnN0b3AoKSwgcmUtdGhyb3cgaXQgbm93XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQXRsYXNcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF0bGFzLm1qcyJdLCJuYW1lcyI6WyJBdGxhcyIsImluaXQiLCJvcHRpb25zIiwiY29uZmlnIiwiaG9va3MiLCJzZXJ2aWNlcyIsImFjdGlvbnMiLCJhbGlhc2VzIiwiYXRsYXMiLCJlbnYiLCJyb290IiwidHlwZXMiLCJwYXRocyIsIm1vZHVsZXMiLCJ0eXBlIiwicGF0aCIsInJlc29sdmUiLCJyZXF1aXJlIiwib3B0aW9uYWwiLCJsb2ciLCJkZWJ1ZyIsImJvb3RzdHJhcCIsImNvbXBvbmVudHMiLCJPYmplY3QiLCJrZXlzIiwiYWxpYXMiLCJIb29rIiwiZW50cmllcyIsImhvb2siLCJTZXJ2aWNlIiwic2VydmljZSIsIkFjdGlvbiIsImFjdGlvbiIsInByZXBhcmVkIiwic3RhcnRlZCIsImNvbnN0cnVjdG9yIiwiTWFwIiwicHJvY2VzcyIsIk5PREVfRU5WIiwiRnJhbWV3b3JrRXJyb3IiLCJta2NvbmZpZyIsImRlZmF1bHRzIiwibWtsb2ciLCJ2YWxpZGF0b3IiLCJBanYiLCJhanZLZXl3b3JkcyIsImtleXdvcmRzIiwibG9jYXRpb24iLCJhYnNvbHV0ZSIsImxvYWQiLCJvcHRyZXF1aXJlIiwiY29udGVudHMiLCJub3JtYWxpc2UiLCJkZWZhdWx0IiwiQ29tcG9uZW50Iiwib3B0cyIsImNvbXBvbmVudCIsInByZXBhcmUiLCJjYXRhbG9nIiwiY29udGFpbmVyIiwib2JzZXJ2ZXMiLCJzZXQiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiQXJyYXkiLCJmcm9tIiwiZXhwb3NlIiwiaW50ZXJuYWwiLCJ2YWx1ZSIsImZpbHRlciIsInJlc3VsdCIsIkJvb2xlYW4iLCJmb3JFYWNoIiwiZGlzcGF0Y2giLCJzdGFydCIsImVyciIsInN0b3AiLCJjYXRjaCIsInN0b3BFcnIiLCJmYXRhbCIsImluZm8iLCJlcnJvciIsInJldmVyc2UiLCJuYW1lIiwiYmFzZW5hbWUiLCJjd2QiLCJsZXZlbCIsInNlcmlhbGl6ZXJzIiwicGlubyIsInN0ZFNlcmlhbGl6ZXJzIiwi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dWl0ZSBleHRlbnNpdmVseSBoZXJlIGZvciBsZWdpdGltYXRlIHB1cnBvc2VzXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCAqIGFzIEFqdiBmcm9tICdhanYnXG5pbXBvcnQgKiBhcyBhanZLZXl3b3JkcyBmcm9tICdhanYta2V5d29yZHMnXG5pbXBvcnQgKiBhcyBwaW5vIGZyb20gJ3Bpbm8nXG5pbXBvcnQge1xuICBkZWZhdWx0c0RlZXAgYXMgZGVmYXVsdHMsXG4gIGlzUGxhaW5PYmplY3QsXG59IGZyb20gJ2xvZGFzaCdcbmltcG9ydCB7IEZyYW1ld29ya0Vycm9yIH0gZnJvbSAnQGF0bGFzLmpzL2Vycm9ycydcbmltcG9ydCB7XG4gIGV4cG9zZSxcbiAgZGlzcGF0Y2gsXG4gIGNvbXBvbmVudCxcbiAgbWtjb25maWcsXG4gIG1rbG9nLFxuICBvcHRyZXF1aXJlLFxufSBmcm9tICcuL3ByaXZhdGUnXG5cbi8qKlxuICogVGhpcyBjbGFzcyByZXByZXNlbnRzIHlvdXIgYXBwbGljYXRpb24gYW5kIGFnZ3JlZ2F0ZXMgYWxsIGNvbXBvbmVudHMgdG9nZXRoZXJcbiAqXG4gKiBZb3Ugc2hvdWxkIGdlbmVyYWxseSBjcmVhdGUgb25seSBvbmUgaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBpbiBhIHByb2dyYW0uXG4gKi9cbmNsYXNzIEF0bGFzIHtcbiAgc3RhdGljIGRlZmF1bHRzID0ge1xuICAgIGxvZzoge1xuICAgICAgbmFtZTogcGF0aC5iYXNlbmFtZShwcm9jZXNzLmN3ZCgpKSxcbiAgICAgIGxldmVsOiAnaW5mbycsXG4gICAgICBzZXJpYWxpemVyczoge1xuICAgICAgICBlcnI6IHBpbm8uc3RkU2VyaWFsaXplcnMuZXJyLFxuICAgICAgICByZXE6IHBpbm8uc3RkU2VyaWFsaXplcnMucmVxLFxuICAgICAgICByZXM6IHBpbm8uc3RkU2VyaWFsaXplcnMucmVzLFxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgdmFsaWRhdG9yOiB7XG4gICAgICBhbGxFcnJvcnM6IHRydWUsXG4gICAgICB1c2VEZWZhdWx0czogdHJ1ZSxcbiAgICAgIGtleXdvcmRzOiBbXG4gICAgICAgICd0eXBlb2YnLFxuICAgICAgXSxcbiAgICB9LFxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpc2UgYSBicmFuZC1uZXcgYXRsYXMgaW5zdGFuY2UgZnJvbSB0aGUgZ2l2ZW4gbW9kdWxlIGxvY2F0aW9uc1xuICAgKlxuICAgKiBVc2UgdGhpcyBtZXRob2QgdG8gcXVpY2tseSBjb25maWd1cmUgQXRsYXMgaW5zdGFuY2UgYnkgc2ltcGx5IHRlbGxpbmcgaXQgd2hlcmUgeW91ciBjb21wb25lbnRzXG4gICAqIGxpdmUgb24gdGhlIGZpbGVzeXN0ZW0sIGFuZCBBdGxhcyB3aWxsIGxvYWQgdGhlbSBmcm9tIHRoZSBnaXZlbiBtb2R1bGUgbG9jYXRpb25zIGFuZCBhZGQgdGhlbVxuICAgKiB0byB0aGUgQXRsYXMgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgICBvcHRpb25zICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgIG9wdGlvbnMuZW52ICAgICAgICAgICAgICAgICAgIFRoZSBlbnZpcm9ubWVudCB1bmRlciB3aGljaCB0byBvcGVyYXRlXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgICBvcHRpb25zLnJvb3QgICAgICAgICAgICAgICAgICBUaGUgcm9vdCBkaXJlY3RvcnkgdG8gd2hpY2ggYWxsIG90aGVyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBtZW50aW9uZWQgaGVyZSBhcmUgcmVsYXRpdmVcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgIG9wdGlvbnMuY29uZmlnPSdjb25maWcnICAgICAgIE1vZHVsZSBsb2NhdGlvbiBmb3IgdGhlIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgIG9wdGlvbnMuaG9va3M9J2hvb2tzJyAgICAgICAgIE1vZHVsZSBsb2NhdGlvbiBmb3IgdGhlIGhvb2tzXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgICBvcHRpb25zLnNlcnZpY2VzPSdzZXJ2aWNlcycgICBNb2R1bGUgbG9jYXRpb24gZm9yIHRoZSBzZXJ2aWNlc1xuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgICAgb3B0aW9ucy5hY3Rpb25zPSdhY3Rpb25zJyAgICAgTW9kdWxlIGxvY2F0aW9uIGZvciB0aGUgYWN0aW9uc1xuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgICAgb3B0aW9ucy5hbGlhc2VzPSdhbGlhc2VzJyAgICAgTW9kdWxlIGxvY2F0aW9uIGZvciB0aGUgYWxpYXNlc1xuICAgKiBAcmV0dXJuICAgIHtBdGxhc31cbiAgICovXG4gIHN0YXRpYyBpbml0KG9wdGlvbnMgPSB7fSkge1xuICAgIGRlZmF1bHRzKG9wdGlvbnMsIHtcbiAgICAgIGNvbmZpZzogJ2NvbmZpZycsXG4gICAgICBob29rczogJ2hvb2tzJyxcbiAgICAgIHNlcnZpY2VzOiAnc2VydmljZXMnLFxuICAgICAgYWN0aW9uczogJ2FjdGlvbnMnLFxuICAgICAgYWxpYXNlczogJ2FsaWFzZXMnLFxuICAgIH0pXG5cbiAgICBjb25zdCBhdGxhcyA9IG5ldyB0aGlzKHtcbiAgICAgIGVudjogb3B0aW9ucy5lbnYsXG4gICAgICByb290OiBvcHRpb25zLnJvb3QsXG4gICAgICBjb25maWc6IG9wdGlvbnMuY29uZmlnLFxuICAgIH0pXG4gICAgY29uc3QgdHlwZXMgPSBbXG4gICAgICAnaG9va3MnLFxuICAgICAgJ3NlcnZpY2VzJyxcbiAgICAgICdhY3Rpb25zJyxcbiAgICAgICdhbGlhc2VzJyxcbiAgICBdXG4gICAgY29uc3QgcGF0aHMgPSB7fVxuICAgIGNvbnN0IG1vZHVsZXMgPSB7fVxuXG4gICAgZm9yIChjb25zdCB0eXBlIG9mIHR5cGVzKSB7XG4gICAgICBwYXRoc1t0eXBlXSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnJvb3QsIG9wdGlvbnNbdHlwZV0pXG4gICAgICBtb2R1bGVzW3R5cGVdID0gYXRsYXMucmVxdWlyZShvcHRpb25zW3R5cGVdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXG4gICAgfVxuXG4gICAgYXRsYXMubG9nLmRlYnVnKHsgcGF0aHMgfSwgJ2F0bGFzOmluaXQnKVxuXG4gICAgcmV0dXJuIHRoaXMuYm9vdHN0cmFwKGF0bGFzLCBtb2R1bGVzKVxuICB9XG5cbiAgLyoqXG4gICAqIEJvb3RzdHJhcCB0aGUgZ2l2ZW4gQXRsYXMgaW5zdGFuY2Ugd2l0aCB0aGUgcHJvdmlkZWQgbW9kdWxlc1xuICAgKlxuICAgKiBVc2UgdGhpcyBtZXRob2QgdG8gcXVpY2tseSBzZXQgdXAgdGhlIGdpdmVuIEF0bGFzIGluc3RhbmNlIHRvIHVzZSB0aGUgcHJvdmlkZWQgY29tcG9uZW50cy4gVGhpc1xuICAgKiBpcyB1c2VmdWwgaWYgeW91IG5lZWQgdG8gaGF2ZSBtdWx0aXBsZSBlbnRyeSBwb2ludHMgdG8geW91ciBwcm9ncmFtIGFuZCBzb21lIGVudHJ5cG9pbnRzIHNob3VsZFxuICAgKiBvbmx5IHVzZSBzb21lIGNvbXBvbmVudHMgYXZhaWxhYmxlLiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gaW1wbGVtZW50aW5nIHdvcmtlclxuICAgKiBwcm9jZXNzZXMgd2hlcmUgeW91IG9ubHkgbmVlZCBhIHN1YnNldCBvZiBhbGwgYXZhaWxhYmxlIGNvbXBvbmVudHMuIFRoaXMgbWV0aG9kLCB3aGlsZSBtb3JlXG4gICAqIHZlcmJvc2UgYXMgQXRsYXMuaW5pdCgpLCBzdGlsbCBmcmVlcyB5b3UgZnJvbSBtYW51YWxseSBhZGRpbmcgYWxsIHRoZSBjb21wb25lbnRzIGJ5IGhhbmQgd2hpbGVcbiAgICogcHJvdmlkaW5nIGdyZWF0ZXIgZmxleGliaWxpdHkgYXMgdG8gd2hpY2ggY29tcG9uZW50cyB3aWxsIGJlIHVzZWQuXG4gICAqXG4gICAqIEBwYXJhbSAgICAge0F0bGFzfSAgIGF0bGFzICAgICAgICAgICAgICAgICBUaGUgQXRsYXMgaW5zdGFuY2UgdG8gYm9vdHN0cmFwXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gIG1vZHVsZXM/ICAgICAgICAgICAgICBBbGwgdGhlIG1vZHVsZXMgd2hpY2ggc2hvdWxkIGJlIGFkZGVkIHRvIEF0bGFzXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gIG1vZHVsZXMuYWN0aW9ucyAgICAgICBBY3Rpb25zIHRvIGFkZFxuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICBtb2R1bGVzLmhvb2tzICAgICAgICAgSG9va3MgdG8gYWRkXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gIG1vZHVsZXMuc2VydmljZXMgICAgICBTZXJ2aWNlcyB0byBhZGRcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgbW9kdWxlcy5hbGlhc2VzICAgICAgIEFsaWFzZXMgZm9yIGFsbCB0aGUgY29tcG9uZW50c1xuICAgKiBAcmV0dXJuICAgIHtBdGxhc30gICAgICAgICAgICAgICAgICAgICAgICAgVGhlIEF0bGFzIGluc3RhbmNlIHdpdGggYWxsIGNvbXBvbmVudHMgYWRkZWQsIHJlYWR5XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBiZSBzdGFydGVkXG4gICAqL1xuICBzdGF0aWMgYm9vdHN0cmFwKGF0bGFzLCBtb2R1bGVzID0ge30pIHtcbiAgICBkZWZhdWx0cyhtb2R1bGVzLCB7XG4gICAgICAvLyBjb25maWcgbW9kdWxlIGlzIGxvYWRlZCBieSBBdGxhcyBpbnN0YW5jZSBpdHNlbGYsIHNvIGl0J3Mgb2theSB0byB1c2UgYSBzdHJpbmcgaGVyZSBhbmQgbGV0XG4gICAgICAvLyBBdGxhcyBsb2FkIGl0XG4gICAgICBjb25maWc6ICdjb25maWcnLFxuICAgICAgLy8gVGhlIGZvbGxvd2luZyBtb2R1bGVzIG11c3QgYWxyZWFkeSBiZSBwcm92aWRlZCBkaXJlY3RseSBhcyB3ZSB3b24ndCBsb2FkIHRoZW1cbiAgICAgIGFjdGlvbnM6IHt9LFxuICAgICAgaG9va3M6IHt9LFxuICAgICAgc2VydmljZXM6IHt9LFxuICAgICAgYWxpYXNlczoge1xuICAgICAgICBhY3Rpb25zOiB7fSxcbiAgICAgICAgaG9va3M6IHt9LFxuICAgICAgICBzZXJ2aWNlczoge30sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBhdGxhcy5sb2cuZGVidWcoe1xuICAgICAgZW52OiBhdGxhcy5lbnYsXG4gICAgICByb290OiBhdGxhcy5yb290LFxuICAgICAgY29tcG9uZW50czoge1xuICAgICAgICBhY3Rpb25zOiBPYmplY3Qua2V5cyhtb2R1bGVzLmFjdGlvbnMpLFxuICAgICAgICBob29rczogT2JqZWN0LmtleXMobW9kdWxlcy5ob29rcyksXG4gICAgICAgIHNlcnZpY2VzOiBPYmplY3Qua2V5cyhtb2R1bGVzLnNlcnZpY2VzKSxcbiAgICAgIH0sXG4gICAgfSwgJ2F0bGFzOmJvb3RzdHJhcCcpXG5cbiAgICAvLyBIb29rc1xuICAgIGZvciAoY29uc3QgW2FsaWFzLCBIb29rXSBvZiBPYmplY3QuZW50cmllcyhtb2R1bGVzLmhvb2tzKSkge1xuICAgICAgY29uc3QgYWxpYXNlcyA9IG1vZHVsZXMuYWxpYXNlcy5ob29rc1thbGlhc11cbiAgICAgIGF0bGFzLmhvb2soYWxpYXMsIEhvb2ssIHsgYWxpYXNlcyB9KVxuICAgIH1cblxuICAgIC8vIFNlcnZpY2VzXG4gICAgZm9yIChjb25zdCBbYWxpYXMsIFNlcnZpY2VdIG9mIE9iamVjdC5lbnRyaWVzKG1vZHVsZXMuc2VydmljZXMpKSB7XG4gICAgICBjb25zdCBhbGlhc2VzID0gbW9kdWxlcy5hbGlhc2VzLnNlcnZpY2VzW2FsaWFzXVxuICAgICAgYXRsYXMuc2VydmljZShhbGlhcywgU2VydmljZSwgeyBhbGlhc2VzIH0pXG4gICAgfVxuXG4gICAgLy8gQWN0aW9uc1xuICAgIGZvciAoY29uc3QgW2FsaWFzLCBBY3Rpb25dIG9mIE9iamVjdC5lbnRyaWVzKG1vZHVsZXMuYWN0aW9ucykpIHtcbiAgICAgIGNvbnN0IGFsaWFzZXMgPSBtb2R1bGVzLmFsaWFzZXMuYWN0aW9uc1thbGlhc11cbiAgICAgIGF0bGFzLmFjdGlvbihhbGlhcywgQWN0aW9uLCB7IGFsaWFzZXMgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gYXRsYXNcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGVudmlyb25tZW50IHVuZGVyIHdoaWNoIHRoaXMgaW5zdGFuY2Ugb3BlcmF0ZXNcbiAgICpcbiAgICogRGVmYXVsdHMgdG8gTk9ERV9FTlYgZnJvbSB0aGUgZW52aXJvbm1lbnQuXG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAcmV0dXJuICAgIHtTdHJpbmd9XG4gICAqL1xuICBnZXQgZW52KCkge1xuICAgIHJldHVybiB0aGlzLiNlbnZcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcm9vdCBmb2xkZXIgd2hlcmUgYWxsIG90aGVyIHBhdGhzIHNob3VsZCBiZSByZWxhdGl2ZSB0b1xuICAgKlxuICAgKiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBzZXQgdGhpcyB0byB0aGUgcHJvamVjdCdzIHJvb3QgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAcmVhZG9ubHlcbiAgICogQHJldHVybiAgICB7U3RyaW5nfVxuICAgKi9cbiAgZ2V0IHJvb3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuI3Jvb3RcbiAgfVxuXG4gIC8qKlxuICAgKiBJcyB0aGlzIGluc3RhbmNlIGluIGEgcHJlcGFyZWQgc3RhdGU/XG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAcmV0dXJuICAgIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IHByZXBhcmVkKCkge1xuICAgIHJldHVybiB0aGlzLiNwcmVwYXJlZFxuICB9XG5cbiAgLyoqXG4gICAqIElzIHRoaXMgaW5zdGFuY2UgaW4gYSBzdGFydGVkIHN0YXRlP1xuICAgKlxuICAgKiBAcmVhZG9ubHlcbiAgICogQHJldHVybiAgICB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBzdGFydGVkKCkge1xuICAgIHJldHVybiB0aGlzLiNzdGFydGVkXG4gIH1cblxuICAvKipcbiAgICogQXRsYXMgY29uZmlndXJhdGlvbiwgYXMgcGFzc2VkIGluIHRvIHRoZSBjb25zdHJ1Y3RvclxuICAgKlxuICAgKiBAdHlwZSAgICB7T2JqZWN0fVxuICAgKi9cbiAgY29uZmlnID0ge31cblxuICAvKipcbiAgICogQWxsIHNlcnZpY2VzIGFkZGVkIHRvIHRoaXMgaW5zdGFuY2VcbiAgICpcbiAgICogQHR5cGUgICAge09iamVjdH1cbiAgICovXG4gIHNlcnZpY2VzID0ge31cblxuICAvKipcbiAgICogQWxsIGFjdGlvbnMgYWRkZWQgdG8gdGhpcyBpbnN0YW5jZVxuICAgKlxuICAgKiBAdHlwZSAgICB7T2JqZWN0fVxuICAgKi9cbiAgYWN0aW9ucyA9IHt9XG5cbiAgI2VudiA9IG51bGxcbiAgI3Jvb3QgPSBudWxsXG4gICNwcmVwYXJlZCA9IGZhbHNlXG4gICNzdGFydGVkID0gZmFsc2VcbiAgI2NhdGFsb2cgPSB7XG4gICAgc2VydmljZXM6IG5ldyBNYXAoKSxcbiAgICBob29rczogbmV3IE1hcCgpLFxuICAgIGFjdGlvbnM6IG5ldyBNYXAoKSxcbiAgfVxuXG4gICNvYnNlcnZlcnMgPSBuZXcgTWFwKClcblxuICAvKipcbiAgICogQW4gaW5zdGFuY2Ugb2YgQWp2IHVzZWQgdG8gdmFsaWRhdGUgY29tcG9uZW50IGNvbmZpZ3VyYXRpb25cbiAgICogQHR5cGUgICAge0Fqdn1cbiAgICovXG4gIHZhbGlkYXRvciA9IG51bGxcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0aW9ucyAgICAgICAgICAgICBPcHRpb25zIGZvciB0aGUgaW5zdGFuY2VcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBvcHRpb25zLmNvbmZpZyAgICAgIENvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciB0aGUgaW5zdGFuY2UgYW5kIGZvciBhbGxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzIG9yIG90aGVyIGNvbXBvbmVudHMgd2hpY2ggd2lsbCBiZSBhZGRlZCB0b1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGluc3RhbmNlXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgb3B0aW9ucy5yb290ICAgICAgICBUaGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGluc3RhbmNlXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgb3B0aW9ucy5lbnYgICAgICAgICBUaGUgZW52aXJvbm1lbnQgdW5kZXIgd2hpY2ggdGhpcyBpbnN0YW5jZSBvcGVyYXRlcy5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvbmVudHMgbWF5IHVzZSB0aGlzIHZhbHVlIGZvciB2YXJpb3VzIHB1cnBvc2VzLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gTk9ERV9FTlYuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICAvLyBJbml0aWFsaXNlIHByaXZhdGUgc3R1ZmZcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvY2Vzcy1lbnZcbiAgICB0aGlzLiNlbnYgPSBvcHRpb25zLmVudiB8fCBwcm9jZXNzLmVudi5OT0RFX0VOVlxuICAgIHRoaXMuI3Jvb3QgPSBvcHRpb25zLnJvb3RcblxuICAgIC8vIFNhZmV0eSBjaGVja3NcbiAgICBpZiAoIXRoaXMuI2Vudikge1xuICAgICAgdGhyb3cgbmV3IEZyYW1ld29ya0Vycm9yKCdlbnYgbm90IHNwZWNpZmllZCBhbmQgTk9ERV9FTlYgd2FzIG5vdCBzZXQnKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5yb290ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEZyYW1ld29ya0Vycm9yKGByb290IG11c3QgYmUgZXhwbGljaXRseSBzcGVjaWZpZWQsIGdvdCAke29wdGlvbnMucm9vdH1gKVxuICAgIH1cblxuICAgIHRoaXMuY29uZmlnID0gdGhpczo6bWtjb25maWcob3B0aW9ucy5jb25maWcsIHtcbiAgICAgIGF0bGFzOiBBdGxhcy5kZWZhdWx0cyxcbiAgICAgIHNlcnZpY2VzOiB7fSxcbiAgICAgIGhvb2tzOiB7fSxcbiAgICAgIGFjdGlvbnM6IHt9LFxuICAgIH0pXG4gICAgLy8gTG9nZ2VyIPCfjLJcbiAgICB0aGlzLmxvZyA9IHRoaXM6Om1rbG9nKHRoaXMuY29uZmlnLmF0bGFzLmxvZylcbiAgICAvLyBBanYgdmFsaWRhdG9yIOKck1xuICAgIHRoaXMudmFsaWRhdG9yID0gbmV3IEFqdih0aGlzLmNvbmZpZy5hdGxhcy52YWxpZGF0b3IpXG4gICAgYWp2S2V5d29yZHModGhpcy52YWxpZGF0b3IsIHRoaXMuY29uZmlnLmF0bGFzLnZhbGlkYXRvci5rZXl3b3JkcylcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1aXJlIGEgbW9kdWxlIGJ5IHBhdGgsIHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHJvb3RcbiAgICpcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICBsb2NhdGlvbiAgICAgICAgICBUaGUgbW9kdWxlJ3MgbG9jYXRpb24sIHJlbGF0aXZlIHRvIHJvb3RcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBvcHRpb25zPyAgICAgICAgICBPcHRpb25zXG4gICAqIEBwYXJhbSAgICAge0Jvb2xlYW59ICAgb3B0aW9ucy5vcHRpb25hbCAgSWYgdHJ1ZSwgd2lsbCBub3QgdGhyb3cgaWYgdGhlIG1vZHVsZSBkb2VzIG5vdCBleGlzdFxuICAgKiBAcGFyYW0gICAgIHtCb29sZWFufSAgIG9wdGlvbnMubm9ybWFsaXNlIElmIHRydWUsIGl0IHdpbGwgcHJlZmVyIHRoZSBFUyBtb2R1bGVzJyBkZWZhdWx0IGV4cG9ydFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXIgbmFtZWQgZXhwb3J0cyBvciB0aGUgQ29tbW9uSlMgZXhwb3J0c1xuICAgKiBAcGFyYW0gICAgIHtCb29sZWFufSAgIG9wdGlvbnMuYWJzb2x1dGUgIElmIHRydWUsIHdpbGwgdHJ5IHRvIGxvYWQgdGhlIG1vZHVsZSB3aXRob3V0XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2aW5nIHRoZSBtb2R1bGUncyBuYW1lIHRvIHRoZSBwcm9qZWN0IHJvb3QgKGl0XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBsb2FkIHRoZSBtb2R1bGUgdXNpbmcgc3RhbmRhcmQgTm9kZSdzIG1lY2hhbmlzbSlcbiAgICogQHJldHVybiAgICB7bWl4ZWR9ICAgICAgICAgICAgICAgICAgICAgICBUaGUgbW9kdWxlJ3MgY29udGVudHNcbiAgICovXG4gIHJlcXVpcmUobG9jYXRpb24sIG9wdGlvbnMgPSB7fSkge1xuICAgIGxvY2F0aW9uID0gb3B0aW9ucy5hYnNvbHV0ZVxuICAgICAgPyBsb2NhdGlvblxuICAgICAgOiBwYXRoLnJlc29sdmUodGhpcy5yb290LCBsb2NhdGlvbilcblxuICAgIGNvbnN0IGxvYWQgPSBvcHRpb25zLm9wdGlvbmFsXG4gICAgICA/IG9wdHJlcXVpcmVcbiAgICAgIDogcmVxdWlyZVxuICAgIGNvbnN0IGNvbnRlbnRzID0gbG9hZChsb2NhdGlvbilcblxuICAgIHJldHVybiBvcHRpb25zLm5vcm1hbGlzZSAmJiBpc1BsYWluT2JqZWN0KGNvbnRlbnRzLmRlZmF1bHQpXG4gICAgICA/IGNvbnRlbnRzLmRlZmF1bHRcbiAgICAgIDogY29udGVudHNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIHNlcnZpY2UgaW50byB0aGlzIGluc3RhbmNlIG9mIEF0bGFzIHdpdGggdGhlIGdpdmVuIGFsaWFzXG4gICAqXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgYWxpYXMgICAgICAgICAgIFRoZSBhbGlhcyBmb3IgdGhlIHNlcnZpY2UgLSBpdCB3aWxsIGJlIHVzZWQgZm9yIGV4cG9zaW5nXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzZXJ2aWNlJ3MgQVBJIG9uIHRoZSBhdGxhcy5zZXJ2aWNlcyBvYmplY3QgYW5kIGZvclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzaW5nIGNvbmZpZ3VyYXRpb24gZGF0YSB0byBpdFxuICAgKiBAcGFyYW0gICAgIHtjbGFzc30gICAgIENvbXBvbmVudCAgICAgICBUaGUgc2VydmljZSBjbGFzc1xuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMgICAgICAgICAgICBSdW50aW1lIG9wdGlvbnMgZm9yIHRoZSBzZXJ2aWNlXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0cy5hbGlhc2VzICAgIEJpbmRpbmdzIHRvIG90aGVyIGRlZmluZWQgY29tcG9uZW50c1xuICAgKiBAcmV0dXJuICAgIHt0aGlzfVxuICAgKi9cbiAgc2VydmljZShhbGlhcywgQ29tcG9uZW50LCBvcHRzID0ge30pIHtcbiAgICB0aGlzOjpjb21wb25lbnQoe1xuICAgICAgdHlwZTogJ3NlcnZpY2UnLFxuICAgICAgYWxpYXMsXG4gICAgICBDb21wb25lbnQsXG4gICAgICBhbGlhc2VzOiBvcHRzLmFsaWFzZXMsXG4gICAgfSwgdGhpcy4jY2F0YWxvZy5zZXJ2aWNlcylcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBob29rIGludG8gdGhpcyBpbnN0YW5jZSBvZiBBdGxhcyB3aXRoIHRoZSBnaXZlbiBhbGlhc1xuICAgKlxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgICAgICBUaGUgYWxpYXMgZm9yIHRoZSBob29rIC0gaXQgd2lsbCBiZSB1c2VkIGZvciBwYXNzaW5nXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZGF0YSB0byBpdFxuICAgKiBAcGFyYW0gICAgIHtjbGFzc30gICAgIENvbXBvbmVudCAgICAgICBUaGUgaG9vayBjbGFzc1xuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMgICAgICAgICAgICBSdW50aW1lIG9wdGlvbnMgZm9yIHRoZSBob29rXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0cy5hbGlhc2VzICAgIEJpbmRpbmdzIHRvIG90aGVyIGRlZmluZWQgY29tcG9uZW50c1xuICAgKiBAcmV0dXJuICAgIHt0aGlzfVxuICAgKi9cbiAgaG9vayhhbGlhcywgQ29tcG9uZW50LCBvcHRzID0ge30pIHtcbiAgICB0aGlzOjpjb21wb25lbnQoe1xuICAgICAgdHlwZTogJ2hvb2snLFxuICAgICAgYWxpYXMsXG4gICAgICBDb21wb25lbnQsXG4gICAgICBhbGlhc2VzOiBvcHRzLmFsaWFzZXMsXG4gICAgfSwgdGhpcy4jY2F0YWxvZy5ob29rcylcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYW4gYWN0aW9uIGludG8gdGhpcyBpbnN0YW5jZSBvZiBBdGxhcyB3aXRoIHRoZSBnaXZlbiBhbGlhc1xuICAgKlxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgICAgICBUaGUgYWxpYXMgZm9yIHRoZSBhY3Rpb24gLSBpdCB3aWxsIGJlIHVzZWQgZm9yIGV4cG9zaW5nXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhY3Rpb24ncyBBUEkgb24gdGhlIGF0bGFzLmFjdGlvbnMgb2JqZWN0IGFuZCBmb3JcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2luZyBjb25maWd1cmF0aW9uIGRhdGEgdG8gaXRcbiAgICogQHBhcmFtICAgICB7Y2xhc3N9ICAgICBDb21wb25lbnQgICAgICAgVGhlIGFjdGlvbiBjbGFzc1xuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMgICAgICAgICAgICBSdW50aW1lIG9wdGlvbnMgZm9yIHRoZSBhY3Rpb25cbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBvcHRzLmFsaWFzZXMgICAgQmluZGluZ3MgdG8gb3RoZXIgZGVmaW5lZCBjb21wb25lbnRzXG4gICAqIEByZXR1cm4gICAge3RoaXN9XG4gICAqL1xuICBhY3Rpb24oYWxpYXMsIENvbXBvbmVudCwgb3B0cyA9IHt9KSB7XG4gICAgdGhpczo6Y29tcG9uZW50KHtcbiAgICAgIHR5cGU6ICdhY3Rpb24nLFxuICAgICAgYWxpYXMsXG4gICAgICBDb21wb25lbnQsXG4gICAgICBhbGlhc2VzOiBvcHRzLmFsaWFzZXMsXG4gICAgfSwgdGhpcy4jY2F0YWxvZy5hY3Rpb25zKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVwYXJlIGFsbCBzZXJ2aWNlcyBhbmQgaG9va3MgZm9yIHVzZVxuICAgKlxuICAgKiBHZW5lcmFsbHkgeW91IHNob3VsZCB1c2UgYGF0bGFzLnN0YXJ0KClgIGluc3RlYWQgdG8gZ2V0IHlvdXIgaW5zdGFuY2UgdXAgYW5kIHJ1bm5pbmcuIEhvd2V2ZXIsXG4gICAqIHNvbWV0aW1lcyBpdCBpcyBuZWNlc3NhcnkgdG8gZ2V0IGFsbCB0aGUgc2VydmljZXMgaW50byBhIFwiZ2V0LXJlYWR5XCIgc3RhdGUgYmVmb3JlIHRoZXkgc3RhcnRcbiAgICogY29ubmVjdGluZyB0byByZW1vdGUgcmVzb3VyY2VzIG9yIGRvaW5nIGFueSBpbnRlbnNpdmUgSS9PIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gICAge1Byb21pc2U8dGhpcz59XG4gICAqL1xuICBhc3luYyBwcmVwYXJlKCkge1xuICAgIGlmICh0aGlzLnByZXBhcmVkKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIGNvbnN0IGNhdGFsb2cgPSB0aGlzLiNjYXRhbG9nXG4gICAgY29uc3QgeyBzZXJ2aWNlcywgYWN0aW9ucywgaG9va3MgfSA9IGNhdGFsb2dcblxuICAgIGZvciAoY29uc3QgW2FsaWFzLCBjb250YWluZXJdIG9mIGhvb2tzKSB7XG4gICAgICBpZiAoIWNvbnRhaW5lci5Db21wb25lbnQub2JzZXJ2ZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEZyYW1ld29ya0Vycm9yKGBIb29rICR7YWxpYXN9IGRvZXMgbm90IGhhdmUgc3RhdGljICdvYnNlcnZlcycgcHJvcGVydHlgKVxuICAgICAgfVxuXG4gICAgICAvLyBQcmVwYXJlIG9ic2VydmVycyBvZiBBdGxhcyBpdHNlbGZcbiAgICAgIGlmIChjb250YWluZXIuQ29tcG9uZW50Lm9ic2VydmVzID09PSAnYXRsYXMnKSB7XG4gICAgICAgIHRoaXMuI29ic2VydmVycy5zZXQoYWxpYXMsIGNvbnRhaW5lcilcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQcmVwYXJlIGhvb2tzXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoWy4uLmhvb2tzXS5tYXAoKFssIGNvbnRhaW5lcl0pID0+IGNvbnRhaW5lci5wcmVwYXJlKHsgY2F0YWxvZyB9KSkpXG5cbiAgICAvLyBQcmVwYXJlIGFjdGlvbnMgYW5kIHNlcnZpY2VzIGluIHBhcmFsbGVsIPCfmoBcbiAgICB2b2lkIChhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAuLi5BcnJheS5mcm9tKGFjdGlvbnMpLm1hcChhc3luYyAoW2FsaWFzLCBjb250YWluZXJdKSA9PiAoe1xuICAgICAgICBleHBvc2U6IGNvbnRhaW5lci5Db21wb25lbnQuaW50ZXJuYWwgPyBmYWxzZSA6ICdhY3Rpb25zJyxcbiAgICAgICAgdmFsdWU6IGF3YWl0IGNvbnRhaW5lci5wcmVwYXJlKHsgY2F0YWxvZywgaG9va3MgfSksXG4gICAgICAgIGFsaWFzLFxuICAgICAgfSkpLFxuICAgICAgLi4uQXJyYXkuZnJvbShzZXJ2aWNlcykubWFwKGFzeW5jIChbYWxpYXMsIGNvbnRhaW5lcl0pID0+ICh7XG4gICAgICAgIGV4cG9zZTogY29udGFpbmVyLkNvbXBvbmVudC5pbnRlcm5hbCA/IGZhbHNlIDogJ3NlcnZpY2VzJyxcbiAgICAgICAgdmFsdWU6IGF3YWl0IGNvbnRhaW5lci5wcmVwYXJlKHsgY2F0YWxvZywgaG9va3MgfSksXG4gICAgICAgIGFsaWFzLFxuICAgICAgfSkpLFxuICAgIF0pKVxuICAgICAgLmZpbHRlcihyZXN1bHQgPT4gQm9vbGVhbihyZXN1bHQuZXhwb3NlKSlcbiAgICAgIC5mb3JFYWNoKHJlc3VsdCA9PiB0aGlzOjpleHBvc2UocmVzdWx0LmV4cG9zZSwgcmVzdWx0LmFsaWFzLCByZXN1bHQudmFsdWUpKVxuXG4gICAgdGhpcy4jcHJlcGFyZWQgPSB0cnVlXG4gICAgYXdhaXQgdGhpcy4jb2JzZXJ2ZXJzOjpkaXNwYXRjaCgnYWZ0ZXJQcmVwYXJlJywgdGhpcylcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgYWxsIHNlcnZpY2VzXG4gICAqXG4gICAqIEByZXR1cm4gICAge1Byb21pc2U8dGhpcz59XG4gICAqL1xuICBhc3luYyBzdGFydCgpIHtcbiAgICBjb25zdCB7IGFjdGlvbnMsIHNlcnZpY2VzLCBob29rcyB9ID0gdGhpcy4jY2F0YWxvZ1xuXG4gICAgYXdhaXQgdGhpcy5wcmVwYXJlKClcbiAgICBhd2FpdCB0aGlzLiNvYnNlcnZlcnM6OmRpc3BhdGNoKCdiZWZvcmVTdGFydCcsIHRoaXMpXG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAuLi5BcnJheS5mcm9tKGhvb2tzKSxcbiAgICAgIC4uLkFycmF5LmZyb20oYWN0aW9ucyksXG4gICAgXS5tYXAoKFssIGNvbnRhaW5lcl0pID0+IGNvbnRhaW5lci5zdGFydCgpKSlcblxuICAgIC8vIFN0YXJ0IGFsbCBzZXJ2aWNlcywgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZCB0byB0aGUgaW5zdGFuY2Ug8J+SqlxuICAgIC8vIE9yZGVyaW5nIGlzIGltcG9ydGFudCBoZXJlISBTb21lIHNlcnZpY2VzIHNob3VsZCBiZSBzdGFydGVkIGFzIHRoZSBsYXN0IG9uZXMgYmVjYXVzZSB0aGV5XG4gICAgLy8gZXhwb3NlIHNvbWUgZnVuY3Rpb25hbGl0eSB0byB0aGUgb3V0c2lkZSB3b3JsZCBhbmQgc3RhcnRpbmcgdGhvc2UgYmVmb3JlIGllLiBhIGRhdGFiYXNlXG4gICAgLy8gc2VydmljZSBpcyBzdGFydGVkIG1pZ2h0IGJyZWFrIHN0dWZmIVxuICAgIGZvciAoY29uc3QgWywgY29udGFpbmVyXSBvZiBzZXJ2aWNlcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgY29udGFpbmVyLnN0YXJ0KHsgaG9va3MgfSlcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBSb2xsIGJhY2tcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9wKClcbiAgICAgICAgICAvLyBTaGl0IGp1c3QgZ290IHNlcmlvdXMg8J+YsVxuICAgICAgICAgIC5jYXRjaChzdG9wRXJyID0+IHZvaWQgdGhpcy5sb2cuZmF0YWwoeyBlcnI6IHN0b3BFcnIgfSwgJ2F0bGFzOnN0YXJ0OnJvbGxiYWNrLWZhaWx1cmUnKSlcblxuICAgICAgICAvLyBSZS10aHJvdyB0aGUgb3JpZ2luYWwgZXJyb3Igd2hpY2ggY2F1c2VkIEF0bGFzIHRvIGZhaWwgdG8gc3RhcnRcbiAgICAgICAgdGhyb3cgZXJyXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy4jc3RhcnRlZCA9IHRydWVcbiAgICBhd2FpdCB0aGlzLiNvYnNlcnZlcnM6OmRpc3BhdGNoKCdhZnRlclN0YXJ0JywgdGhpcylcbiAgICB0aGlzLmxvZy5pbmZvKHsgZW52OiB0aGlzLmVudiB9LCAnYXRsYXM6cmVhZHknKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIGFsbCBzZXJ2aWNlcywgdW5yZWdpc3RlciBhbGwgYWN0aW9ucyBhbmQgaG9va3MgYW5kIHVucHVibGlzaCBhbnkgQVBJcyBleHBvc2VkIGJ5IHRoZW1cbiAgICpcbiAgICogVGhpcyBwdXRzIHRoZSB3aG9sZSBhcHBsaWNhdGlvbiBpbnRvIGEgc3RhdGUgYXMgaXQgd2FzIGJlZm9yZSBgYXRsYXMucHJlcGFyZSgpYCBhbmQvb3JcbiAgICogYGF0bGFzLnN0YXJ0KClgIHdhcyBjYWxsZWQuXG4gICAqXG4gICAqIEByZXR1cm4gICAge1Byb21pc2U8dGhpcz59XG4gICAqL1xuICBhc3luYyBzdG9wKCkge1xuICAgIGNvbnN0IHsgc2VydmljZXMsIGFjdGlvbnMsIGhvb2tzIH0gPSB0aGlzLiNjYXRhbG9nXG5cbiAgICBhd2FpdCB0aGlzLiNvYnNlcnZlcnM6OmRpc3BhdGNoKCdiZWZvcmVTdG9wJywgdGhpcylcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIC4uLkFycmF5LmZyb20oaG9va3MpLFxuICAgICAgLi4uQXJyYXkuZnJvbShhY3Rpb25zKSxcbiAgICBdLm1hcCgoWywgY29udGFpbmVyXSkgPT4gY29udGFpbmVyLnN0b3AoKSkpXG5cbiAgICBsZXQgZXJyb3JcblxuICAgIC8vIFN0b3AgYWxsIHNlcnZpY2VzLCBpbiB0aGUgcmV2ZXJzZSBvcmRlciB0aGV5IHdlcmUgYWRkZWQgdG8gdGhlIGluc3RhbmNlIPCfkqpcbiAgICAvLyBUaGlzIHdpbGwgbWFrZSBzdXJlIHRoZSBtb3N0IGltcG9ydGFudCBzZXJ2aWNlcyBhcmUgc3RvcHBlZCBmaXJzdC5cbiAgICBmb3IgKGNvbnN0IFthbGlhcywgY29udGFpbmVyXSBvZiBBcnJheS5mcm9tKHNlcnZpY2VzKS5yZXZlcnNlKCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnNlcnZpY2VzW2FsaWFzXVxuICAgICAgICBhd2FpdCBjb250YWluZXIuc3RvcCh7IGhvb2tzIH0pXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgZXJyb3IgPSBlcnJcbiAgICAgICAgLy8gTGVhdmUgdGhpcyBzZXJ2aWNlIGFzIGlzIGFuZCBtb3ZlIHRvIHRoZSBuZXh0IHNlcnZpY2UuIFdlIHByb2JhYmx5IGNhbm5vdCBkbyBhbnl0aGluZyB0b1xuICAgICAgICAvLyBwcm9wZXJseSBzdG9wIHRoaXMgc2VydmljZS4g8J+ZgVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVucmVnaXN0ZXIgYWN0aW9uc1xuICAgIGZvciAoY29uc3QgW2FsaWFzXSBvZiBhY3Rpb25zKSB7XG4gICAgICBkZWxldGUgdGhpcy5hY3Rpb25zW2FsaWFzXVxuICAgIH1cblxuICAgIHRoaXMuI3N0YXJ0ZWQgPSBmYWxzZVxuICAgIHRoaXMuI3ByZXBhcmVkID0gZmFsc2VcblxuICAgIGF3YWl0IGhvb2tzOjpkaXNwYXRjaCgnYWZ0ZXJTdG9wJywgbnVsbClcbiAgICB0aGlzLmxvZy5pbmZvKCdhdGxhczpzdG9wcGVkJylcblxuICAgIC8vIElmIHRoZXJlIHdhcyBhbiBlcnJvciB0aHJvd24gaW4gb25lIG9mIHRoZSBzZXJ2aWNlcyBkdXJpbmcgLnN0b3AoKSwgcmUtdGhyb3cgaXQgbm93XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQXRsYXNcbiJdfQ==

@@ -11,5 +11,11 @@ "use strict";

function mklog(config) {
config.serializers = typeof config.serializers === 'string' ? this.require(config.serializers, {
const serialisers = typeof config.serializers === 'string' ? this.require(config.serializers, {
normalise: true
}) : config.serializers;
config.serializers = {
req: pino.stdSerializers.req,
res: pino.stdSerializers.res,
err: pino.stdSerializers.err,
...serialisers
};
return pino(config);

@@ -20,2 +26,2 @@ }

exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1rbG9nLm1qcyJdLCJuYW1lcyI6WyJta2xvZyIsImNvbmZpZyIsInNlcmlhbGl6ZXJzIiwicmVxdWlyZSIsIm5vcm1hbGlzZSIsInBpbm8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFTQSxTQUFTQSxLQUFULENBQWVDLE1BQWYsRUFBdUI7QUFFckJBLEVBQUFBLE1BQU0sQ0FBQ0MsV0FBUCxHQUFxQixPQUFPRCxNQUFNLENBQUNDLFdBQWQsS0FBOEIsUUFBOUIsR0FDakIsS0FBS0MsT0FBTCxDQUFhRixNQUFNLENBQUNDLFdBQXBCLEVBQWlDO0FBQUVFLElBQUFBLFNBQVMsRUFBRTtBQUFiLEdBQWpDLENBRGlCLEdBRWpCSCxNQUFNLENBQUNDLFdBRlg7QUFJQSxTQUFPRyxJQUFJLENBQUNKLE1BQUQsQ0FBWDtBQUNEOztlQUVjRCxLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGlubyBmcm9tICdwaW5vJ1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBsb2dnZXIgKHBpbm8pXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSAgICAge09iamVjdH0gICAgY29uZmlnICAgIExvZ2dlciBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJuICAgIHtPYmplY3R9XG4gKi9cbmZ1bmN0aW9uIG1rbG9nKGNvbmZpZykge1xuICAvLyBBbGxvdyBsb2FkaW5nIHRoZSBzZXJpYWxpc2VycyBmcm9tIGEgbW9kdWxlXG4gIGNvbmZpZy5zZXJpYWxpemVycyA9IHR5cGVvZiBjb25maWcuc2VyaWFsaXplcnMgPT09ICdzdHJpbmcnXG4gICAgPyB0aGlzLnJlcXVpcmUoY29uZmlnLnNlcmlhbGl6ZXJzLCB7IG5vcm1hbGlzZTogdHJ1ZSB9KVxuICAgIDogY29uZmlnLnNlcmlhbGl6ZXJzXG5cbiAgcmV0dXJuIHBpbm8oY29uZmlnKVxufVxuXG5leHBvcnQgZGVmYXVsdCBta2xvZ1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1rbG9nLm1qcyJdLCJuYW1lcyI6WyJta2xvZyIsImNvbmZpZyIsInNlcmlhbGlzZXJzIiwic2VyaWFsaXplcnMiLCJyZXF1aXJlIiwibm9ybWFsaXNlIiwicmVxIiwicGlubyIsInN0ZFNlcmlhbGl6ZXJzIiwicmVzIiwiZXJyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBU0EsU0FBU0EsS0FBVCxDQUFlQyxNQUFmLEVBQXVCO0FBRXJCLFFBQU1DLFdBQVcsR0FBRyxPQUFPRCxNQUFNLENBQUNFLFdBQWQsS0FBOEIsUUFBOUIsR0FDaEIsS0FBS0MsT0FBTCxDQUFhSCxNQUFNLENBQUNFLFdBQXBCLEVBQWlDO0FBQUVFLElBQUFBLFNBQVMsRUFBRTtBQUFiLEdBQWpDLENBRGdCLEdBRWhCSixNQUFNLENBQUNFLFdBRlg7QUFJQUYsRUFBQUEsTUFBTSxDQUFDRSxXQUFQLEdBQXFCO0FBQ25CRyxJQUFBQSxHQUFHLEVBQUVDLElBQUksQ0FBQ0MsY0FBTCxDQUFvQkYsR0FETjtBQUVuQkcsSUFBQUEsR0FBRyxFQUFFRixJQUFJLENBQUNDLGNBQUwsQ0FBb0JDLEdBRk47QUFHbkJDLElBQUFBLEdBQUcsRUFBRUgsSUFBSSxDQUFDQyxjQUFMLENBQW9CRSxHQUhOO0FBSW5CLE9BQUdSO0FBSmdCLEdBQXJCO0FBT0EsU0FBT0ssSUFBSSxDQUFDTixNQUFELENBQVg7QUFDRDs7ZUFFY0QsSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBpbm8gZnJvbSAncGlubydcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgbG9nZ2VyIChwaW5vKVxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIGNvbmZpZyAgICBMb2dnZXIgY29uZmlndXJhdGlvblxuICogQHJldHVybiAgICB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBta2xvZyhjb25maWcpIHtcbiAgLy8gQWxsb3cgbG9hZGluZyB0aGUgc2VyaWFsaXNlcnMgZnJvbSBhIG1vZHVsZVxuICBjb25zdCBzZXJpYWxpc2VycyA9IHR5cGVvZiBjb25maWcuc2VyaWFsaXplcnMgPT09ICdzdHJpbmcnXG4gICAgPyB0aGlzLnJlcXVpcmUoY29uZmlnLnNlcmlhbGl6ZXJzLCB7IG5vcm1hbGlzZTogdHJ1ZSB9KVxuICAgIDogY29uZmlnLnNlcmlhbGl6ZXJzXG5cbiAgY29uZmlnLnNlcmlhbGl6ZXJzID0ge1xuICAgIHJlcTogcGluby5zdGRTZXJpYWxpemVycy5yZXEsXG4gICAgcmVzOiBwaW5vLnN0ZFNlcmlhbGl6ZXJzLnJlcyxcbiAgICBlcnI6IHBpbm8uc3RkU2VyaWFsaXplcnMuZXJyLFxuICAgIC4uLnNlcmlhbGlzZXJzLFxuICB9XG5cbiAgcmV0dXJuIHBpbm8oY29uZmlnKVxufVxuXG5leHBvcnQgZGVmYXVsdCBta2xvZ1xuIl19
"use strict";
var _pino = require("pino");
var _ = require("..");

@@ -80,2 +82,5 @@

expect(config.log.serializers).to.have.all.keys(['err', 'req', 'res', 'custom']);
expect(config.log.serializers.err).to.equal('overriden');
expect(config.log.serializers.req).to.equal(_pino.stdSerializers.req);
expect(config.log.serializers.res).to.equal(_pino.stdSerializers.res);
});

@@ -117,2 +122,2 @@ it('responds to known methods', () => {

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaS50ZXN0Lm1qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIm9wdHMiLCJiZWZvcmVFYWNoIiwicm9vdCIsIl9fZGlybmFtZSIsIml0IiwiZXhwZWN0IiwiQXRsYXMiLCJ0byIsImJlIiwiYSIsIm5vdCIsInRocm93IiwiRnJhbWV3b3JrRXJyb3IiLCJzYW5kYm94Iiwic3R1YiIsInByb2Nlc3MiLCJlbnYiLCJ2YWx1ZSIsIm1vZHVsZXMiLCJiYXNlIiwicmVxdWlyZSIsImxvY2FsIiwiYXRsYXMiLCJoYXZlIiwicHJvcGVydHkiLCJjb25maWciLCJkZWZhdWx0IiwibG9nIiwic2VyaWFsaXplcnMiLCJhbiIsImFsbCIsImtleXMiLCJyZXNwb25kVG8iLCJpbmNsdWRlIiwiZXF1YWwiLCJOT0RFX0VOViIsImFuZCIsInByZXBhcmVkIiwic3RhcnRlZCJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFDQTs7QUFFQUEsUUFBUSxDQUFDLHVCQUFELEVBQTBCLE1BQU07QUFDdEMsTUFBSUMsSUFBSjtBQUVBQyxFQUFBQSxVQUFVLENBQUMsTUFBTTtBQUNmRCxJQUFBQSxJQUFJLEdBQUc7QUFBRUUsTUFBQUEsSUFBSSxFQUFFQztBQUFSLEtBQVA7QUFDRCxHQUZTLENBQVY7QUFLQUMsRUFBQUEsRUFBRSxDQUFDLFFBQUQsRUFBVyxNQUFNO0FBQ2pCQyxJQUFBQSxNQUFNLENBQUNDLE9BQUQsQ0FBTixDQUFjQyxFQUFkLENBQWlCQyxFQUFqQixDQUFvQkMsQ0FBcEIsQ0FBc0IsVUFBdEI7QUFDRCxHQUZDLENBQUY7QUFJQUwsRUFBQUEsRUFBRSxDQUFDLG9CQUFELEVBQXVCLE1BQU07QUFDN0JDLElBQUFBLE1BQU0sQ0FBQyxNQUFNLElBQUlDLE9BQUosQ0FBVU4sSUFBVixDQUFQLENBQU4sQ0FBOEJPLEVBQTlCLENBQWlDRyxHQUFqQyxDQUFxQ0MsS0FBckM7QUFDRCxHQUZDLENBQUY7QUFJQVAsRUFBQUEsRUFBRSxDQUFDLCtCQUFELEVBQWtDLE1BQU07QUFDeEND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eUIsU0FBckIsQ0FBK0IsT0FBL0I7QUFDQTNCLElBQUFBLE1BQU0sQ0FBQ2lCLEtBQUssQ0FBQ0ssR0FBUCxDQUFOLENBQWtCcEIsRUFBbEIsQ0FBcUJ5QixTQUFyQixDQUErQixNQUEvQjtBQUNBM0IsSUFBQUEsTUFBTSxDQUFDaUIsS0FBSyxDQUFDSyxHQUFQLENBQU4sQ0FBa0JwQixFQUFsQixDQUFxQnlCLFNBQXJCLENBQStCLE1BQS9CO0FBQ0EzQixJQUFBQSxNQUFNLENBQUNpQixLQUFLLENBQUNLLEdBQVAsQ0FBTixDQUFrQnBCLEVBQWxCLENBQXFCeUIsU0FBckIsQ0FBK0IsT0FBL0I7QUFDRCxHQVJDLENBQUY7QUFVQTVCLEVBQUFBLEVBQUUsQ0FBQyxpQ0FBRCxFQUFvQyxNQUFNO0FBQzFDLFVBQU1rQixLQUFLLEdBQUcsSUFBSWhCLE9BQUosQ0FBVU4sSUFBVixDQUFkO0FBRUFLLElBQUFBLE1BQU0sQ0FBQyxNQUFNO0FBQ1hpQixNQUFBQSxLQUFLLENBQUNlLFFBQU4sR0FBaUIsSUFBakI7QUFDRCxLQUZLLENBQU4sQ0FFRzlCLEVBRkgsQ0FFTUksS0FGTjtBQUdELEdBTkMsQ0FBRjtBQVFBUCxFQUFBQSxFQUFFLENBQUMsZ0NBQUQsRUFBbUMsTUFBTTtBQUN6QyxVQUFNa0IsS0FBSyxHQUFHLElBQUloQixPQUFKLENBQVVOLElBQVYsQ0FBZDtBQUVBSyxJQUFBQSxNQUFNLENBQUMsTUFBTTtBQUNYaUIsTUFBQUEsS0FBSyxDQUFDZ0IsT0FBTixHQUFnQixJQUFoQjtBQUNELEtBRkssQ0FBTixDQUVHL0IsRUFGSCxDQUVNSSxLQUZOO0FBR0QsR0FOQyxDQUFGO0FBT0QsQ0FoSk8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0bGFzIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyBGcmFtZXdvcmtFcnJvciB9IGZyb20gJ0BhdGxhcy5qcy9lcnJvcnMnXG5cbmRlc2NyaWJlKCdBdGxhczogYmFzaWNzIGFuZCBBUEknLCAoKSA9PiB7XG4gIGxldCBvcHRzXG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgb3B0cyA9IHsgcm9vdDogX19kaXJuYW1lIH1cbiAgfSlcblxuXG4gIGl0KCdleGlzdHMnLCAoKSA9PiB7XG4gICAgZXhwZWN0KEF0bGFzKS50by5iZS5hKCdmdW5jdGlvbicpXG4gIH0pXG5cbiAgaXQoJ2NhbiBiZSBjb25zdHJ1Y3RlZCcsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4gbmV3IEF0bGFzKG9wdHMpKS50by5ub3QudGhyb3coKVxuICB9KVxuXG4gIGl0KCdyZXF1aXJlcyByb290IG9uIGNvbnN0cnVjdGlvbicsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4gbmV3IEF0bGFzKCkpLnRvLnRocm93KEZyYW1ld29ya0Vycm9yLCAvcm9vdCBtdXN0IGJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkL3UpXG4gIH0pXG5cbiAgaXQoJ3Rocm93cyB3aGVuIGVudiBpcyBub3QgcHJvdmlkZWQgYW5kIE5PREVfRU5WIGlzIG5vdCBzZXQnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvY2Vzcy1lbnZcbiAgICB0aGlzLnNhbmRib3guc3R1Yihwcm9jZXNzLmVudiwgJ05PREVfRU5WJykudmFsdWUoJycpXG4gICAgZXhwZWN0KCgpID0+IG5ldyBBdGxhcyhvcHRzKSkudG8udGhyb3coRnJhbWV3b3JrRXJyb3IsIC9lbnYgbm90IHNwZWNpZmllZC91KVxuICB9KVxuXG4gIGl0KCdzdXBwb3J0cyBsb2FkaW5nIHRoZSBjb25maWcgZnJvbSBtb2R1bGUgcGF0aCByZWxhdGl2ZSB0byByb290JywgKCkgPT4ge1xuICAgIC8vIFNhbml0eSBjaGVja1xuICAgIGNvbnN0IG1vZHVsZXMgPSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBnbG9iYWwtcmVxdWlyZSAqL1xuICAgICAgYmFzZTogcmVxdWlyZSgnLi9kZW1vY29uZmlnJyksXG4gICAgICBlbnY6IHJlcXVpcmUoJy4vZGVtb2NvbmZpZy9lbnYvbG9sZW52JyksXG4gICAgICBsb2NhbDogcmVxdWlyZSgnLi9kZW1vY29uZmlnL2xvY2FsJyksXG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIGdsb2JhbC1yZXF1aXJlICovXG4gICAgfVxuICAgIGV4cGVjdChtb2R1bGVzLmJhc2UuYXRsYXMpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21CYXNlJywgdHJ1ZSlcbiAgICBleHBlY3QobW9kdWxlcy5iYXNlLmF0bGFzKS50by5oYXZlLnByb3BlcnR5KCdmcm9tRW52JywgZmFsc2UpXG4gICAgZXhwZWN0KG1vZHVsZXMuYmFzZS5hdGxhcykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUxvY2FsJywgZmFsc2UpXG4gICAgZXhwZWN0KG1vZHVsZXMuZW52LmF0bGFzKS50by5oYXZlLnByb3BlcnR5KCdmcm9tRW52JywgdHJ1ZSlcbiAgICBleHBlY3QobW9kdWxlcy5lbnYuYXRsYXMpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21Mb2NhbCcsIGZhbHNlKVxuICAgIGV4cGVjdChtb2R1bGVzLmxvY2FsLmF0bGFzKS50by5oYXZlLnByb3BlcnR5KCdmcm9tTG9jYWwnLCB0cnVlKVxuXG4gICAgY29uc3QgYXRsYXMgPSBuZXcgQXRsYXMoe1xuICAgICAgcm9vdDogX19kaXJuYW1lLFxuICAgICAgZW52OiAnbG9sZW52JyxcbiAgICAgIGNvbmZpZzogJ2RlbW9jb25maWcnLFxuICAgIH0pXG4gICAgY29uc3QgY29uZmlnID0gYXRsYXMuY29uZmlnLmF0bGFzXG5cbiAgICBleHBlY3QoY29uZmlnKS50by5oYXZlLnByb3BlcnR5KCdmcm9tQmFzZScsIHRydWUpXG4gICAgZXhwZWN0KGNvbmZpZykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUVudicsIHRydWUpXG4gICAgZXhwZWN0KGNvbmZpZykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUxvY2FsJywgdHJ1ZSlcbiAgfSlcblxuICBpdCgncHJlZmVycyBFUyBtb2R1bGUgZGVmYXVsdCBleHBvcnQgaW4gdGhlIGNvbmZpZyBmaWxlcycsICgpID0+IHtcbiAgICBjb25zdCBtb2R1bGVzID0ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGdsb2JhbC1yZXF1aXJlXG4gICAgICBlbnY6IHJlcXVpcmUoJy4vZGVtb2NvbmZpZy9lbnYvbW9kZW52JykuZGVmYXVsdCxcbiAgICB9XG5cbiAgICBleHBlY3QobW9kdWxlcy5lbnYuYXRsYXMpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21FbnYnLCB0cnVlKVxuICAgIGV4cGVjdChtb2R1bGVzLmVudi5hdGxhcykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUxvY2FsJywgZmFsc2UpXG5cbiAgICBjb25zdCBhdGxhcyA9IG5ldyBBdGxhcyh7XG4gICAgICByb290OiBfX2Rpcm5hbWUsXG4gICAgICBlbnY6ICdtb2RlbnYnLFxuICAgICAgY29uZmlnOiAnZGVtb2NvbmZpZycsXG4gICAgfSlcbiAgICBjb25zdCBjb25maWcgPSBhdGxhcy5jb25maWcuYXRsYXNcblxuICAgIGV4cGVjdChjb25maWcpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21CYXNlJywgdHJ1ZSlcbiAgICBleHBlY3QoY29uZmlnKS50by5oYXZlLnByb3BlcnR5KCdmcm9tRW52JywgdHJ1ZSlcbiAgICBleHBlY3QoY29uZmlnKS50by5oYXZlLnByb3BlcnR5KCdmcm9tTG9jYWwnLCB0cnVlKVxuICB9KVxuXG4gIGl0KCdzdXBwb3J0cyBsb2FkaW5nIFBpbm8gbG9nIHNlcmlhbGlzZXJzIGZyb20gbW9kdWxlIHBhdGggcmVsYXRpdmUgdG8gcm9vdCcsICgpID0+IHtcbiAgICBjb25zdCBhdGxhcyA9IG5ldyBBdGxhcyh7XG4gICAgICByb290OiBfX2Rpcm5hbWUsXG4gICAgICBlbnY6ICdsb2xlbnYnLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGF0bGFzOiB7XG4gICAgICAgICAgbG9nOiB7XG4gICAgICAgICAgICBzZXJpYWxpemVyczogJ2RlbW9jb25maWcvc2VyaWFsaXNlcnMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pXG4gICAgY29uc3QgY29uZmlnID0gYXRsYXMuY29uZmlnLmF0bGFzXG5cbiAgICBleHBlY3QoY29uZmlnLmxvZy5zZXJpYWxpemVycykudG8uYmUuYW4oJ29iamVjdCcpXG4gICAgZXhwZWN0KGNvbmZpZy5sb2cuc2VyaWFsaXplcnMpLnRvLmhhdmUuYWxsLmtleXMoWydlcnInLCAncmVxJywgJ3JlcycsICdjdXN0b20nXSlcbiAgfSlcblxuICBpdCgncmVzcG9uZHMgdG8ga25vd24gbWV0aG9kcycsICgpID0+IHtcbiAgICBjb25zdCBhdGxhcyA9IG5ldyBBdGxhcyhvcHRzKVxuXG4gICAgZXhwZWN0KGF0bGFzKS50by5yZXNwb25kVG8oJ3ByZXBhcmUnKVxuICAgIGV4cGVjdChhdGxhcykudG8ucmVzcG9uZFRvKCdzdGFydCcpXG4gICAgZXhwZWN0KGF0bGFzKS50by5yZXNwb25kVG8oJ3N0b3AnKVxuICB9KVxuXG4gIGl0KCdoYXMga25vd24gcHVibGljIHByb3BlcnRpZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgYXRsYXMgPSBuZXcgQXRsYXMob3B0cylcblxuICAgIGV4cGVjdChhdGxhcykudG8uaW5jbHVkZS5hbGwua2V5cyhbXG4gICAgICAnYWN0aW9ucycsXG4gICAgICAnc2VydmljZXMnLFxuICAgICAgJ2NvbmZpZycsXG4gICAgICAnbG9nJyxcbiAgICAgICd2YWxpZGF0b3InLFxuICAgIF0pXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgZ2V0dGVycywgYW5kIENoYWkgZG9lcyBub3Qgc2VlbSB0byB3b3JrIHdpdGggdGhlbSB3aGVuIGNoZWNraW5nIGZvciAua2V5cygpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb2Nlc3MtZW52XG4gICAgZXhwZWN0KGF0bGFzLmVudikudG8uZXF1YWwocHJvY2Vzcy5lbnYuTk9ERV9FTlYpLmFuZC50by5iZS5hKCdzdHJpbmcnKVxuICAgIGV4cGVjdChhdGxhcy5yb290KS50by5lcXVhbChfX2Rpcm5hbWUpXG4gICAgZXhwZWN0KGF0bGFzLnByZXBhcmVkKS50by5lcXVhbChmYWxzZSlcbiAgICBleHBlY3QoYXRsYXMuc3RhcnRlZCkudG8uZXF1YWwoZmFsc2UpXG4gIH0pXG5cbiAgaXQoJ2NvbnN0cnVjdHMgYSBsb2cgb2JqZWN0IG9uIHRoaXMubG9nJywgKCkgPT4ge1xuICAgIGNvbnN0IGF0bGFzID0gbmV3IEF0bGFzKG9wdHMpXG5cbiAgICBleHBlY3QoYXRsYXMpLnRvLmhhdmUucHJvcGVydHkoJ2xvZycpXG4gICAgZXhwZWN0KGF0bGFzLmxvZykudG8ucmVzcG9uZFRvKCdkZWJ1ZycpXG4gICAgZXhwZWN0KGF0bGFzLmxvZykudG8ucmVzcG9uZFRvKCdpbmZvJylcbiAgICBleHBlY3QoYXRsYXMubG9nKS50by5yZXNwb25kVG8oJ3dhcm4nKVxuICAgIGV4cGVjdChhdGxhcy5sb2cpLnRvLnJlc3BvbmRUbygnZXJyb3InKVxuICB9KVxuXG4gIGl0KCdwcmV2ZW50cyBzZXR0aW5nIGF0bGFzLnByZXBhcmVkJywgKCkgPT4ge1xuICAgIGNvbnN0IGF0bGFzID0gbmV3IEF0bGFzKG9wdHMpXG5cbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgYXRsYXMucHJlcGFyZWQgPSB0cnVlXG4gICAgfSkudG8udGhyb3coKVxuICB9KVxuXG4gIGl0KCdwcmV2ZW50cyBzZXR0aW5nIGF0bGFzLnN0YXJ0ZWQnLCAoKSA9PiB7XG4gICAgY29uc3QgYXRsYXMgPSBuZXcgQXRsYXMob3B0cylcblxuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBhdGxhcy5zdGFydGVkID0gdHJ1ZVxuICAgIH0pLnRvLnRocm93KClcbiAgfSlcbn0pXG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaS50ZXN0Lm1qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIm9wdHMiLCJiZWZvcmVFYWNoIiwicm9vdCIsIl9fZGlybmFtZSIsIml0IiwiZXhwZWN0IiwiQXRsYXMiLCJ0byIsImJlIiwiYSIsIm5vdCIsInRocm93IiwiRnJhbWV3b3JrRXJyb3IiLCJzYW5kYm94Iiwic3R1YiIsInByb2Nlc3MiLCJlbnYiLCJ2YWx1ZSIsIm1vZHVsZXMiLCJiYXNlIiwicmVxdWlyZSIsImxvY2FsIiwiYXRsYXMiLCJoYXZlIiwicHJvcGVydHkiLCJjb25maWciLCJkZWZhdWx0IiwibG9nIiwic2VyaWFsaXplcnMiLCJhbiIsImFsbCIsImtleXMiLCJlcnIiLCJlcXVhbCIsInJlcSIsInN0ZFNlcmlhbGl6ZXJzIiwicmVzIiwicmVzcG9uZFRvIiwiaW5jbHVkZSIsIk5PREVfRU5WIiwiYW5kIiwicHJlcGFyZWQiLCJzdGFydGVkIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUNBOztBQUNBOztBQUVBQSxRQUFRLENBQUMsdUJBQUQsRUFBMEIsTUFBTTtBQUN0QyxNQUFJQyxJQUFKO0FBRUFDLEVBQUFBLFVBQVUsQ0FBQyxNQUFNO0FBQ2ZELElBQUFBLElBQUksR0FBRztBQUFFRSxNQUFBQSxJQUFJLEVBQUVDO0FBQVIsS0FBUDtBQUNELEdBRlMsQ0FBVjtBQUtBQyxFQUFBQSxFQUFFLENBQUMsUUFBRCxFQUFXLE1BQU07QUFDakJDLElBQUFBLE1BQU0sQ0FBQ0MsT0FBRCxDQUFOLENBQWNDLEVBQWQsQ0FBaUJDLEVBQWpCLENBQW9CQyxDQUFwQixDQUFzQixVQUF0QjtBQUNELEdBRkMsQ0FBRjtBQUlBTCxFQUFBQSxFQUFFLENBQUMsb0JBQUQsRUFBdUIsTUFBTTtBQUM3QkMsSUFBQUEsTUFBTSxDQUFDLE1BQU0sSUFBSUMsT0FBSixDQUFVTixJQUFWLENBQVAsQ0FBTixDQUE4Qk8sRUFBOUIsQ0FBaUNHLEdBQWpDLENBQXFDQyxLQUFyQztBQUNELEdBRkMsQ0FBRjtBQUlB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LEVBQUFBLEVBQUUsQ0FBQyxnQ0FBRCxFQUFtQyxNQUFNO0FBQ3pDLFVBQU1rQixLQUFLLEdBQUcsSUFBSWhCLE9BQUosQ0FBVU4sSUFBVixDQUFkO0FBRUFLLElBQUFBLE1BQU0sQ0FBQyxNQUFNO0FBQ1hpQixNQUFBQSxLQUFLLENBQUNvQixPQUFOLEdBQWdCLElBQWhCO0FBQ0QsS0FGSyxDQUFOLENBRUduQyxFQUZILENBRU1JLEtBRk47QUFHRCxHQU5DLENBQUY7QUFPRCxDQW5KTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3RkU2VyaWFsaXplcnMgfSBmcm9tICdwaW5vJ1xuaW1wb3J0IHsgQXRsYXMgfSBmcm9tICcuLidcbmltcG9ydCB7IEZyYW1ld29ya0Vycm9yIH0gZnJvbSAnQGF0bGFzLmpzL2Vycm9ycydcblxuZGVzY3JpYmUoJ0F0bGFzOiBiYXNpY3MgYW5kIEFQSScsICgpID0+IHtcbiAgbGV0IG9wdHNcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBvcHRzID0geyByb290OiBfX2Rpcm5hbWUgfVxuICB9KVxuXG5cbiAgaXQoJ2V4aXN0cycsICgpID0+IHtcbiAgICBleHBlY3QoQXRsYXMpLnRvLmJlLmEoJ2Z1bmN0aW9uJylcbiAgfSlcblxuICBpdCgnY2FuIGJlIGNvbnN0cnVjdGVkJywgKCkgPT4ge1xuICAgIGV4cGVjdCgoKSA9PiBuZXcgQXRsYXMob3B0cykpLnRvLm5vdC50aHJvdygpXG4gIH0pXG5cbiAgaXQoJ3JlcXVpcmVzIHJvb3Qgb24gY29uc3RydWN0aW9uJywgKCkgPT4ge1xuICAgIGV4cGVjdCgoKSA9PiBuZXcgQXRsYXMoKSkudG8udGhyb3coRnJhbWV3b3JrRXJyb3IsIC9yb290IG11c3QgYmUgZXhwbGljaXRseSBzcGVjaWZpZWQvdSlcbiAgfSlcblxuICBpdCgndGhyb3dzIHdoZW4gZW52IGlzIG5vdCBwcm92aWRlZCBhbmQgTk9ERV9FTlYgaXMgbm90IHNldCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm9jZXNzLWVudlxuICAgIHRoaXMuc2FuZGJveC5zdHViKHByb2Nlc3MuZW52LCAnTk9ERV9FTlYnKS52YWx1ZSgnJylcbiAgICBleHBlY3QoKCkgPT4gbmV3IEF0bGFzKG9wdHMpKS50by50aHJvdyhGcmFtZXdvcmtFcnJvciwgL2VudiBub3Qgc3BlY2lmaWVkL3UpXG4gIH0pXG5cbiAgaXQoJ3N1cHBvcnRzIGxvYWRpbmcgdGhlIGNvbmZpZyBmcm9tIG1vZHVsZSBwYXRoIHJlbGF0aXZlIHRvIHJvb3QnLCAoKSA9PiB7XG4gICAgLy8gU2FuaXR5IGNoZWNrXG4gICAgY29uc3QgbW9kdWxlcyA9IHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIGdsb2JhbC1yZXF1aXJlICovXG4gICAgICBiYXNlOiByZXF1aXJlKCcuL2RlbW9jb25maWcnKSxcbiAgICAgIGVudjogcmVxdWlyZSgnLi9kZW1vY29uZmlnL2Vudi9sb2xlbnYnKSxcbiAgICAgIGxvY2FsOiByZXF1aXJlKCcuL2RlbW9jb25maWcvbG9jYWwnKSxcbiAgICAgIC8qIGVzbGludC1lbmFibGUgZ2xvYmFsLXJlcXVpcmUgKi9cbiAgICB9XG4gICAgZXhwZWN0KG1vZHVsZXMuYmFzZS5hdGxhcykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUJhc2UnLCB0cnVlKVxuICAgIGV4cGVjdChtb2R1bGVzLmJhc2UuYXRsYXMpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21FbnYnLCBmYWxzZSlcbiAgICBleHBlY3QobW9kdWxlcy5iYXNlLmF0bGFzKS50by5oYXZlLnByb3BlcnR5KCdmcm9tTG9jYWwnLCBmYWxzZSlcbiAgICBleHBlY3QobW9kdWxlcy5lbnYuYXRsYXMpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21FbnYnLCB0cnVlKVxuICAgIGV4cGVjdChtb2R1bGVzLmVudi5hdGxhcykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUxvY2FsJywgZmFsc2UpXG4gICAgZXhwZWN0KG1vZHVsZXMubG9jYWwuYXRsYXMpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21Mb2NhbCcsIHRydWUpXG5cbiAgICBjb25zdCBhdGxhcyA9IG5ldyBBdGxhcyh7XG4gICAgICByb290OiBfX2Rpcm5hbWUsXG4gICAgICBlbnY6ICdsb2xlbnYnLFxuICAgICAgY29uZmlnOiAnZGVtb2NvbmZpZycsXG4gICAgfSlcbiAgICBjb25zdCBjb25maWcgPSBhdGxhcy5jb25maWcuYXRsYXNcblxuICAgIGV4cGVjdChjb25maWcpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21CYXNlJywgdHJ1ZSlcbiAgICBleHBlY3QoY29uZmlnKS50by5oYXZlLnByb3BlcnR5KCdmcm9tRW52JywgdHJ1ZSlcbiAgICBleHBlY3QoY29uZmlnKS50by5oYXZlLnByb3BlcnR5KCdmcm9tTG9jYWwnLCB0cnVlKVxuICB9KVxuXG4gIGl0KCdwcmVmZXJzIEVTIG1vZHVsZSBkZWZhdWx0IGV4cG9ydCBpbiB0aGUgY29uZmlnIGZpbGVzJywgKCkgPT4ge1xuICAgIGNvbnN0IG1vZHVsZXMgPSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZ2xvYmFsLXJlcXVpcmVcbiAgICAgIGVudjogcmVxdWlyZSgnLi9kZW1vY29uZmlnL2Vudi9tb2RlbnYnKS5kZWZhdWx0LFxuICAgIH1cblxuICAgIGV4cGVjdChtb2R1bGVzLmVudi5hdGxhcykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUVudicsIHRydWUpXG4gICAgZXhwZWN0KG1vZHVsZXMuZW52LmF0bGFzKS50by5oYXZlLnByb3BlcnR5KCdmcm9tTG9jYWwnLCBmYWxzZSlcblxuICAgIGNvbnN0IGF0bGFzID0gbmV3IEF0bGFzKHtcbiAgICAgIHJvb3Q6IF9fZGlybmFtZSxcbiAgICAgIGVudjogJ21vZGVudicsXG4gICAgICBjb25maWc6ICdkZW1vY29uZmlnJyxcbiAgICB9KVxuICAgIGNvbnN0IGNvbmZpZyA9IGF0bGFzLmNvbmZpZy5hdGxhc1xuXG4gICAgZXhwZWN0KGNvbmZpZykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUJhc2UnLCB0cnVlKVxuICAgIGV4cGVjdChjb25maWcpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21FbnYnLCB0cnVlKVxuICAgIGV4cGVjdChjb25maWcpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21Mb2NhbCcsIHRydWUpXG4gIH0pXG5cbiAgaXQoJ3N1cHBvcnRzIGxvYWRpbmcgUGlubyBsb2cgc2VyaWFsaXNlcnMgZnJvbSBtb2R1bGUgcGF0aCByZWxhdGl2ZSB0byByb290JywgKCkgPT4ge1xuICAgIGNvbnN0IGF0bGFzID0gbmV3IEF0bGFzKHtcbiAgICAgIHJvb3Q6IF9fZGlybmFtZSxcbiAgICAgIGVudjogJ2xvbGVudicsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgYXRsYXM6IHtcbiAgICAgICAgICBsb2c6IHtcbiAgICAgICAgICAgIHNlcmlhbGl6ZXJzOiAnZGVtb2NvbmZpZy9zZXJpYWxpc2VycycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSlcbiAgICBjb25zdCBjb25maWcgPSBhdGxhcy5jb25maWcuYXRsYXNcblxuICAgIGV4cGVjdChjb25maWcubG9nLnNlcmlhbGl6ZXJzKS50by5iZS5hbignb2JqZWN0JylcbiAgICBleHBlY3QoY29uZmlnLmxvZy5zZXJpYWxpemVycykudG8uaGF2ZS5hbGwua2V5cyhbJ2VycicsICdyZXEnLCAncmVzJywgJ2N1c3RvbSddKVxuICAgIGV4cGVjdChjb25maWcubG9nLnNlcmlhbGl6ZXJzLmVycikudG8uZXF1YWwoJ292ZXJyaWRlbicpXG4gICAgZXhwZWN0KGNvbmZpZy5sb2cuc2VyaWFsaXplcnMucmVxKS50by5lcXVhbChzdGRTZXJpYWxpemVycy5yZXEpXG4gICAgZXhwZWN0KGNvbmZpZy5sb2cuc2VyaWFsaXplcnMucmVzKS50by5lcXVhbChzdGRTZXJpYWxpemVycy5yZXMpXG4gIH0pXG5cbiAgaXQoJ3Jlc3BvbmRzIHRvIGtub3duIG1ldGhvZHMnLCAoKSA9PiB7XG4gICAgY29uc3QgYXRsYXMgPSBuZXcgQXRsYXMob3B0cylcblxuICAgIGV4cGVjdChhdGxhcykudG8ucmVzcG9uZFRvKCdwcmVwYXJlJylcbiAgICBleHBlY3QoYXRsYXMpLnRvLnJlc3BvbmRUbygnc3RhcnQnKVxuICAgIGV4cGVjdChhdGxhcykudG8ucmVzcG9uZFRvKCdzdG9wJylcbiAgfSlcblxuICBpdCgnaGFzIGtub3duIHB1YmxpYyBwcm9wZXJ0aWVzJywgKCkgPT4ge1xuICAgIGNvbnN0IGF0bGFzID0gbmV3IEF0bGFzKG9wdHMpXG5cbiAgICBleHBlY3QoYXRsYXMpLnRvLmluY2x1ZGUuYWxsLmtleXMoW1xuICAgICAgJ2FjdGlvbnMnLFxuICAgICAgJ3NlcnZpY2VzJyxcbiAgICAgICdjb25maWcnLFxuICAgICAgJ2xvZycsXG4gICAgICAndmFsaWRhdG9yJyxcbiAgICBdKVxuICAgIC8vIEltcGxlbWVudGVkIGFzIGdldHRlcnMsIGFuZCBDaGFpIGRvZXMgbm90IHNlZW0gdG8gd29yayB3aXRoIHRoZW0gd2hlbiBjaGVja2luZyBmb3IgLmtleXMoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm9jZXNzLWVudlxuICAgIGV4cGVjdChhdGxhcy5lbnYpLnRvLmVxdWFsKHByb2Nlc3MuZW52Lk5PREVfRU5WKS5hbmQudG8uYmUuYSgnc3RyaW5nJylcbiAgICBleHBlY3QoYXRsYXMucm9vdCkudG8uZXF1YWwoX19kaXJuYW1lKVxuICAgIGV4cGVjdChhdGxhcy5wcmVwYXJlZCkudG8uZXF1YWwoZmFsc2UpXG4gICAgZXhwZWN0KGF0bGFzLnN0YXJ0ZWQpLnRvLmVxdWFsKGZhbHNlKVxuICB9KVxuXG4gIGl0KCdjb25zdHJ1Y3RzIGEgbG9nIG9iamVjdCBvbiB0aGlzLmxvZycsICgpID0+IHtcbiAgICBjb25zdCBhdGxhcyA9IG5ldyBBdGxhcyhvcHRzKVxuXG4gICAgZXhwZWN0KGF0bGFzKS50by5oYXZlLnByb3BlcnR5KCdsb2cnKVxuICAgIGV4cGVjdChhdGxhcy5sb2cpLnRvLnJlc3BvbmRUbygnZGVidWcnKVxuICAgIGV4cGVjdChhdGxhcy5sb2cpLnRvLnJlc3BvbmRUbygnaW5mbycpXG4gICAgZXhwZWN0KGF0bGFzLmxvZykudG8ucmVzcG9uZFRvKCd3YXJuJylcbiAgICBleHBlY3QoYXRsYXMubG9nKS50by5yZXNwb25kVG8oJ2Vycm9yJylcbiAgfSlcblxuICBpdCgncHJldmVudHMgc2V0dGluZyBhdGxhcy5wcmVwYXJlZCcsICgpID0+IHtcbiAgICBjb25zdCBhdGxhcyA9IG5ldyBBdGxhcyhvcHRzKVxuXG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIGF0bGFzLnByZXBhcmVkID0gdHJ1ZVxuICAgIH0pLnRvLnRocm93KClcbiAgfSlcblxuICBpdCgncHJldmVudHMgc2V0dGluZyBhdGxhcy5zdGFydGVkJywgKCkgPT4ge1xuICAgIGNvbnN0IGF0bGFzID0gbmV3IEF0bGFzKG9wdHMpXG5cbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgYXRsYXMuc3RhcnRlZCA9IHRydWVcbiAgICB9KS50by50aHJvdygpXG4gIH0pXG59KVxuIl19

@@ -7,14 +7,7 @@ "use strict";

exports.default = void 0;
var pino = require("pino");
const stdSerializers = {
err: pino.stdSerializers.err,
req: pino.stdSerializers.req,
res: pino.stdSerializers.res
var _default = {
custom: true,
err: 'overriden'
};
var _default = { ...stdSerializers,
custom: true
};
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNlcmlhbGlzZXJzLm1qcyJdLCJuYW1lcyI6WyJzdGRTZXJpYWxpemVycyIsImVyciIsInBpbm8iLCJyZXEiLCJyZXMiLCJjdXN0b20iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxjQUFjLEdBQUc7QUFDckJDLEVBQUFBLEdBQUcsRUFBRUMsSUFBSSxDQUFDRixjQUFMLENBQW9CQyxHQURKO0FBRXJCRSxFQUFBQSxHQUFHLEVBQUVELElBQUksQ0FBQ0YsY0FBTCxDQUFvQkcsR0FGSjtBQUdyQkMsRUFBQUEsR0FBRyxFQUFFRixJQUFJLENBQUNGLGNBQUwsQ0FBb0JJO0FBSEosQ0FBdkI7ZUFNZSxFQUNiLEdBQUdKLGNBRFU7QUFFYkssRUFBQUEsTUFBTSxFQUFFO0FBRkssQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBpbm8gZnJvbSAncGlubydcblxuY29uc3Qgc3RkU2VyaWFsaXplcnMgPSB7XG4gIGVycjogcGluby5zdGRTZXJpYWxpemVycy5lcnIsXG4gIHJlcTogcGluby5zdGRTZXJpYWxpemVycy5yZXEsXG4gIHJlczogcGluby5zdGRTZXJpYWxpemVycy5yZXMsXG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLi4uc3RkU2VyaWFsaXplcnMsXG4gIGN1c3RvbTogdHJ1ZSxcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNlcmlhbGlzZXJzLm1qcyJdLCJuYW1lcyI6WyJjdXN0b20iLCJlcnIiXSwibWFwcGluZ3MiOiI7Ozs7OztlQUFlO0FBQ2JBLEVBQUFBLE1BQU0sRUFBRSxJQURLO0FBRWJDLEVBQUFBLEdBQUcsRUFBRTtBQUZRLEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIGN1c3RvbTogdHJ1ZSxcbiAgZXJyOiAnb3ZlcnJpZGVuJyxcbn1cbiJdfQ==

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc