Socket
Socket
Sign inDemoInstall

@atlas.js/atlas

Package Overview
Dependencies
Maintainers
2
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@atlas.js/atlas - npm Package Compare versions

Comparing version 1.2.1 to 1.3.0

src/private/mklog.js

12

CHANGELOG.md

@@ -6,2 +6,14 @@ # Change Log

<a name="1.3.0"></a>
# [1.3.0](https://github.com/strvcom/atlas.js/compare/@atlas.js/atlas@1.2.1...@atlas.js/atlas@1.3.0) (2018-02-08)
### Features
* **atlas:** Allow Pino's serializers to be loaded from a module ([cca2429](https://github.com/strvcom/atlas.js/commit/cca2429))
* **atlas:** Atlas.require() can normalise default and named exports ([76e1f74](https://github.com/strvcom/atlas.js/commit/76e1f74))
<a name="1.2.1"></a>

@@ -8,0 +20,0 @@ ## [1.2.1](https://github.com/strvcom/atlas.js/compare/@atlas.js/atlas@1.2.0...@atlas.js/atlas@1.2.1) (2018-01-30)

2

package.json
{
"name": "@atlas.js/atlas",
"description": "The main package containing the core functionality of @atlas.js",
"version": "1.2.1",
"version": "1.3.0",
"author": "Robert Rossmann <robert.rossmann@strv.com>",

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

@@ -143,3 +143,3 @@ "use strict";

this.config = _private.mkconfig.call(this, options.config, {
atlas: {},
atlas: Atlas.defaults,
services: {},

@@ -149,4 +149,3 @@ hooks: {},

});
this.config.atlas = (0, _lodash.defaultsDeep)(this.config.atlas, Atlas.defaults);
this.log = (0, _pino.default)(this.config.atlas.log);
this.log = _private.mklog.call(this, this.config.atlas.log);
}

@@ -156,4 +155,5 @@

location = options.absolute ? location : _path.default.resolve(this.root, location);
const loader = options.optional ? _private.optrequire : require;
return loader(location);
const load = options.optional ? _private.optrequire : require;
const contents = load(location);
return options.normalise && (0, _lodash.isPlainObject)(contents.default) ? contents.default : contents;
}

@@ -316,2 +316,2 @@

exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF0bGFzLm1qcyJdLCJuYW1lcyI6WyJBdGxhcyIsImluaXQiLCJvcHRpb25zIiwiY29uZmlnIiwiaG9va3MiLCJzZXJ2aWNlcyIsImFjdGlvbnMiLCJhbGlhc2VzIiwiYXRsYXMiLCJlbnYiLCJyb290IiwidHlwZXMiLCJwYXRocyIsIm1vZHVsZXMiLCJ0eXBlIiwicmVzb2x2ZSIsInJlcXVpcmUiLCJvcHRpb25hbCIsImxvZyIsImRlYnVnIiwiY29tcG9uZW50cyIsIk9iamVjdCIsImtleXMiLCJhbGlhcyIsIkhvb2siLCJlbnRyaWVzIiwiaG9vayIsIlNlcnZpY2UiLCJzZXJ2aWNlIiwiQWN0aW9uIiwiYWN0aW9uIiwicHJlcGFyZWQiLCJzdGFydGVkIiwiY29uc3RydWN0b3IiLCJwcm9jZXNzIiwiTk9ERV9FTlYiLCJjYXRhbG9nIiwiTWFwIiwiZGVmYXVsdHMiLCJsb2NhdGlvbiIsImFic29sdXRlIiwibG9hZGVyIiwiQ29tcG9uZW50Iiwib3B0cyIsInByZXBhcmUiLCJjb21wb25lbnQiLCJQcm9taXNlIiwiYWxsIiwiQXJyYXkiLCJmcm9tIiwibWFwIiwibGlmZWN5Y2xlIiwic3RhcnQiLCJpbmZvIiwic3RvcCIsInJldmVyc2UiLCJuYW1lIiwiYmFzZW5hbWUiLCJjd2QiLCJsZXZlbCIsInNlcmlhbGl6ZXJzIiwic3RkU2VyaWFsaXplcnMiLCJ0cmFjZSIsImluc3RhbmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7Ozs7QUFhQSxNQUFNQSxLQUFOLENBQVk7QUF1QlYsU0FBT0MsSUFBUCxDQUFZQyxVQUFVLEVBQXRCLEVBQTBCO0FBQ3hCLDhCQUFTQSxPQUFULEVBQWtCO0FBQ2hCQyxjQUFRLFFBRFE7QUFFaEJDLGFBQU8sT0FGUztBQUdoQkMsZ0JBQVUsVUFITTtBQUloQkMsZUFBUyxTQUpPO0FBS2hCQyxlQUFTO0FBTE8sS0FBbEI7QUFRQSxVQUFNQyxRQUFRLElBQUksSUFBSixDQUFT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RUFBeUJyQixLQUF6QixFQUFnQ3dDLFFBQWhDOztBQUNBLFdBQUs3QyxHQUFMLENBQVM0QyxLQUFULENBQWU7QUFBRWxDLGlCQUFTTDtBQUFYLE9BQWYsRUFBbUMsdUJBQW5DO0FBQ0QsS0FkTTs7QUF1QlAsVUFBTTZCLEtBQU4sQ0FBWTdCLEtBQVosRUFBbUJLLE9BQW5CLEVBQTRCO0FBQzFCLFdBQUtWLEdBQUwsQ0FBUzRDLEtBQVQsQ0FBZTtBQUFFbEMsaUJBQVNMO0FBQVgsT0FBZixFQUFtQyxzQkFBbkM7QUFDQSxZQUFNSyxRQUFRd0IsS0FBUixDQUFjLEtBQUsvQyxRQUFMLENBQWNrQixLQUFkLENBQWQsQ0FBTjtBQUNBLFdBQUtMLEdBQUwsQ0FBUzRDLEtBQVQsQ0FBZTtBQUFFbEMsaUJBQVNMO0FBQVgsT0FBZixFQUFtQyxxQkFBbkM7QUFDRCxLQTNCTTs7QUFvQ1AsVUFBTStCLElBQU4sQ0FBVy9CLEtBQVgsRUFBa0JLLE9BQWxCLEVBQTJCO0FBQ3pCLFdBQUtWLEdBQUwsQ0FBUzRDLEtBQVQsQ0FBZTtBQUFFbEMsaUJBQVNMO0FBQVgsT0FBZixFQUFtQyxxQkFBbkM7QUFDQSxZQUFNd0MsV0FBVyxLQUFLMUQsUUFBTCxDQUFja0IsS0FBZCxDQUFqQjtBQUNBLGFBQU8sS0FBS2xCLFFBQUwsQ0FBY2tCLEtBQWQsQ0FBUDtBQUNBLFlBQU1LLFFBQVEwQixJQUFSLENBQWFTLFFBQWIsQ0FBTjtBQUNBLFdBQUs3QyxHQUFMLENBQVM0QyxLQUFULENBQWU7QUFBRWxDLGlCQUFTTDtBQUFYLE9BQWYsRUFBbUMsb0JBQW5DO0FBQ0Q7O0FBMUNNO0FBRE8sQ0FBbEI7ZUErQ2V2QixLIiwiZmlsZSI6ImF0bGFzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gV2UgdXNlIGZvci1hd2FpdCBwYXR0ZXJuIHF1aXRlIGV4dGVuc2l2ZWx5IGhlcmUgZm9yIGxlZ2l0aW1hdGUgcHVycG9zZXNcbi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cblxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBwaW5vIGZyb20gJ3Bpbm8nXG5pbXBvcnQge1xuICBkZWZhdWx0c0RlZXAgYXMgZGVmYXVsdHMsXG59IGZyb20gJ2xvZGFzaCdcbmltcG9ydCBoaWRkZW4gZnJvbSAnbG9jYWwtc2NvcGUvY3JlYXRlJ1xuaW1wb3J0IHsgRnJhbWV3b3JrRXJyb3IgfSBmcm9tICdAYXRsYXMuanMvZXJyb3JzJ1xuaW1wb3J0IHtcbiAgZXhwb3NlLFxuICBkaXNwYXRjaCxcbiAgY29tcG9uZW50LFxuICBta2NvbmZpZyxcbiAgb3B0cmVxdWlyZSxcbn0gZnJvbSAnLi9wcml2YXRlJ1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyB5b3VyIGFwcGxpY2F0aW9uIGFuZCBhZ2dyZWdhdGVzIGFsbCBjb21wb25lbnRzIHRvZ2V0aGVyXG4gKlxuICogWW91IHNob3VsZCBnZW5lcmFsbHkgY3JlYXRlIG9ubHkgb25lIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgaW4gYSBwcm9ncmFtLlxuICovXG5jbGFzcyBBdGxhcyB7XG4gIHN0YXRpYyBkZWZhdWx0cyA9IHtcbiAgICBsb2c6IHtcbiAgICAgIG5hbWU6IHBhdGguYmFzZW5hbWUocHJvY2Vzcy5jd2QoKSksXG4gICAgICBsZXZlbDogJ2luZm8nLFxuICAgICAgc2VyaWFsaXplcnM6IHBpbm8uc3RkU2VyaWFsaXplcnMsXG4gICAgfSxcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXNlIGEgYnJhbmQtbmV3IGF0bGFzIGluc3RhbmNlIGZyb20gdGhlIGdpdmVuIG1vZHVsZSBsb2NhdGlvbnNcbiAgICpcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICAgIG9wdGlvbnMgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgICAgb3B0aW9ucy5lbnYgICAgICAgICAgICAgICAgICAgVGhlIGVudmlyb25tZW50IHVuZGVyIHdoaWNoIHRvIG9wZXJhdGVcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgIG9wdGlvbnMucm9vdCAgICAgICAgICAgICAgICAgIFRoZSByb290IGRpcmVjdG9yeSB0byB3aGljaCBhbGwgb3RoZXJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIG1lbnRpb25lZCBoZXJlIGFyZSByZWxhdGl2ZVxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgICAgb3B0aW9ucy5jb25maWc9J2NvbmZpZycgICAgICAgTW9kdWxlIGxvY2F0aW9uIGZvciB0aGUgY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgICAgb3B0aW9ucy5ob29rcz0naG9va3MnICAgICAgICAgTW9kdWxlIGxvY2F0aW9uIGZvciB0aGUgaG9va3NcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgIG9wdGlvbnMuc2VydmljZXM9J3NlcnZpY2VzJyAgIE1vZHVsZSBsb2NhdGlvbiBmb3IgdGhlIHNlcnZpY2VzXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgICBvcHRpb25zLmFjdGlvbnM9J2FjdGlvbnMnICAgICBNb2R1bGUgbG9jYXRpb24gZm9yIHRoZSBhY3Rpb25zXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgICBvcHRpb25zLmFsaWFzZXM9J2FsaWFzZXMnICAgICBNb2R1bGUgbG9jYXRpb24gZm9yIHRoZSBhbGlhc2VzXG4gICAqIEByZXR1cm4gICAge0F0bGFzfVxuICAgKi9cbiAgc3RhdGljIGluaXQob3B0aW9ucyA9IHt9KSB7XG4gICAgZGVmYXVsdHMob3B0aW9ucywge1xuICAgICAgY29uZmlnOiAnY29uZmlnJyxcbiAgICAgIGhvb2tzOiAnaG9va3MnLFxuICAgICAgc2VydmljZXM6ICdzZXJ2aWNlcycsXG4gICAgICBhY3Rpb25zOiAnYWN0aW9ucycsXG4gICAgICBhbGlhc2VzOiAnYWxpYXNlcycsXG4gICAgfSlcblxuICAgIGNvbnN0IGF0bGFzID0gbmV3IHRoaXMoe1xuICAgICAgZW52OiBvcHRpb25zLmVudixcbiAgICAgIHJvb3Q6IG9wdGlvbnMucm9vdCxcbiAgICAgIGNvbmZpZzogb3B0aW9ucy5jb25maWcsXG4gICAgfSlcbiAgICBjb25zdCB0eXBlcyA9IFtcbiAgICAgICdob29rcycsXG4gICAgICAnc2VydmljZXMnLFxuICAgICAgJ2FjdGlvbnMnLFxuICAgICAgJ2FsaWFzZXMnLFxuICAgIF1cbiAgICBjb25zdCBwYXRocyA9IHt9XG4gICAgY29uc3QgbW9kdWxlcyA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdHlwZXMpIHtcbiAgICAgIHBhdGhzW3R5cGVdID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMucm9vdCwgb3B0aW9uc1t0eXBlXSlcbiAgICAgIG1vZHVsZXNbdHlwZV0gPSBhdGxhcy5yZXF1aXJlKG9wdGlvbnNbdHlwZV0sIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgICB9XG5cbiAgICBkZWZhdWx0cyhtb2R1bGVzLCB7XG4gICAgICBhbGlhc2VzOiB7XG4gICAgICAgIGFjdGlvbnM6IHt9LFxuICAgICAgICBob29rczoge30sXG4gICAgICAgIHNlcnZpY2VzOiB7fSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIGF0bGFzLmxvZy5kZWJ1Zyh7XG4gICAgICBlbnY6IGF0bGFzLmVudixcbiAgICAgIHJvb3Q6IGF0bGFzLnJvb3QsXG4gICAgICBwYXRocyxcbiAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgYWN0aW9uczogT2JqZWN0LmtleXMobW9kdWxlcy5hY3Rpb25zKSxcbiAgICAgICAgaG9va3M6IE9iamVjdC5rZXlzKG1vZHVsZXMuaG9va3MpLFxuICAgICAgICBzZXJ2aWNlczogT2JqZWN0LmtleXMobW9kdWxlcy5zZXJ2aWNlcyksXG4gICAgICB9LFxuICAgIH0sICdhdGxhczppbml0JylcblxuICAgIC8vIEhvb2tzXG4gICAgZm9yIChjb25zdCBbYWxpYXMsIEhvb2tdIG9mIE9iamVjdC5lbnRyaWVzKG1vZHVsZXMuaG9va3MpKSB7XG4gICAgICBjb25zdCBhbGlhc2VzID0gbW9kdWxlcy5hbGlhc2VzLmhvb2tzW2FsaWFzXVxuICAgICAgYXRsYXMuaG9vayhhbGlhcywgSG9vaywgeyBhbGlhc2VzIH0pXG4gICAgfVxuXG4gICAgLy8gU2VydmljZXNcbiAgICBmb3IgKGNvbnN0IFthbGlhcywgU2VydmljZV0gb2YgT2JqZWN0LmVudHJpZXMobW9kdWxlcy5zZXJ2aWNlcykpIHtcbiAgICAgIGNvbnN0IGFsaWFzZXMgPSBtb2R1bGVzLmFsaWFzZXMuc2VydmljZXNbYWxpYXNdXG4gICAgICBhdGxhcy5zZXJ2aWNlKGFsaWFzLCBTZXJ2aWNlLCB7IGFsaWFzZXMgfSlcbiAgICB9XG5cbiAgICAvLyBBY3Rpb25zXG4gICAgZm9yIChjb25zdCBbYWxpYXMsIEFjdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMobW9kdWxlcy5hY3Rpb25zKSkge1xuICAgICAgY29uc3QgYWxpYXNlcyA9IG1vZHVsZXMuYWxpYXNlcy5hY3Rpb25zW2FsaWFzXVxuICAgICAgYXRsYXMuYWN0aW9uKGFsaWFzLCBBY3Rpb24sIHsgYWxpYXNlcyB9KVxuICAgIH1cblxuICAgIHJldHVybiBhdGxhc1xuICB9XG5cblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgdW5kZXIgd2hpY2ggdGhpcyBpbnN0YW5jZSBvcGVyYXRlc1xuICAgKlxuICAgKiBEZWZhdWx0cyB0byBOT0RFX0VOViBmcm9tIHRoZSBlbnZpcm9ubWVudC5cbiAgICpcbiAgICogQHJlYWRvbmx5XG4gICAqIEByZXR1cm4gICAge1N0cmluZ31cbiAgICovXG4gIGdldCBlbnYoKSB7XG4gICAgcmV0dXJuIHRoaXM6OmhpZGRlbigpLmVudlxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByb290IGZvbGRlciB3aGVyZSBhbGwgb3RoZXIgcGF0aHMgc2hvdWxkIGJlIHJlbGF0aXZlIHRvXG4gICAqXG4gICAqIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHNldCB0aGlzIHRvIHRoZSBwcm9qZWN0J3Mgcm9vdCBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAcmV0dXJuICAgIHtTdHJpbmd9XG4gICAqL1xuICBnZXQgcm9vdCgpIHtcbiAgICByZXR1cm4gdGhpczo6aGlkZGVuKCkucm9vdFxuICB9XG5cbiAgLyoqXG4gICAqIElzIHRoaXMgaW5zdGFuY2UgaW4gYSBwcmVwYXJlZCBzdGF0ZT9cbiAgICpcbiAgICogQHJlYWRvbmx5XG4gICAqIEByZXR1cm4gICAge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgcHJlcGFyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXM6OmhpZGRlbigpLnByZXBhcmVkXG4gIH1cblxuICAvKipcbiAgICogSXMgdGhpcyBpbnN0YW5jZSBpbiBhIHN0YXJ0ZWQgc3RhdGU/XG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAcmV0dXJuICAgIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IHN0YXJ0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXM6OmhpZGRlbigpLnN0YXJ0ZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBBdGxhcyBjb25maWd1cmF0aW9uLCBhcyBwYXNzZWQgaW4gdG8gdGhlIGNvbnN0cnVjdG9yXG4gICAqXG4gICAqIEB0eXBlICAgIHtPYmplY3R9XG4gICAqL1xuICBjb25maWcgPSB7fVxuXG4gIC8qKlxuICAgKiBBbGwgc2VydmljZXMgYWRkZWQgdG8gdGhpcyBpbnN0YW5jZVxuICAgKlxuICAgKiBAdHlwZSAgICB7T2JqZWN0fVxuICAgKi9cbiAgc2VydmljZXMgPSB7fVxuXG4gIC8qKlxuICAgKiBBbGwgYWN0aW9ucyBhZGRlZCB0byB0aGlzIGluc3RhbmNlXG4gICAqXG4gICAqIEB0eXBlICAgIHtPYmplY3R9XG4gICAqL1xuICBhY3Rpb25zID0ge31cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0aW9ucyAgICAgICAgICAgICBPcHRpb25zIGZvciB0aGUgaW5zdGFuY2VcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBvcHRpb25zLmNvbmZpZyAgICAgIENvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciB0aGUgaW5zdGFuY2UgYW5kIGZvciBhbGxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzIG9yIG90aGVyIGNvbXBvbmVudHMgd2hpY2ggd2lsbCBiZSBhZGRlZCB0b1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGluc3RhbmNlXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgb3B0aW9ucy5yb290ICAgICAgICBUaGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGluc3RhbmNlXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgb3B0aW9ucy5lbnYgICAgICAgICBUaGUgZW52aXJvbm1lbnQgdW5kZXIgd2hpY2ggdGhpcyBpbnN0YW5jZSBvcGVyYXRlcy5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvbmVudHMgbWF5IHVzZSB0aGlzIHZhbHVlIGZvciB2YXJpb3VzIHB1cnBvc2VzLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gTk9ERV9FTlYuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICAvLyBJbml0aWFsaXNlIHByaXZhdGUgc3R1ZmZcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvY2Vzcy1lbnZcbiAgICB0aGlzOjpoaWRkZW4oKS5lbnYgPSBvcHRpb25zLmVudiB8fCBwcm9jZXNzLmVudi5OT0RFX0VOVlxuICAgIHRoaXM6OmhpZGRlbigpLnJvb3QgPSBvcHRpb25zLnJvb3RcbiAgICB0aGlzOjpoaWRkZW4oKS5wcmVwYXJlZCA9IGZhbHNlXG4gICAgdGhpczo6aGlkZGVuKCkuc3RhcnRlZCA9IGZhbHNlXG4gICAgdGhpczo6aGlkZGVuKCkuY2F0YWxvZyA9IHtcbiAgICAgIHNlcnZpY2VzOiBuZXcgTWFwKCksXG4gICAgICBob29rczogbmV3IE1hcCgpLFxuICAgICAgYWN0aW9uczogbmV3IE1hcCgpLFxuICAgIH1cblxuICAgIC8vIFNhZmV0eSBjaGVja3NcbiAgICBpZiAoIXRoaXMuZW52KSB7XG4gICAgICB0aHJvdyBuZXcgRnJhbWV3b3JrRXJyb3IoJ2VudiBub3Qgc3BlY2lmaWVkIGFuZCBOT0RFX0VOViB3YXMgbm90IHNldCcpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLnJvb3QgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRnJhbWV3b3JrRXJyb3IoYHJvb3QgbXVzdCBiZSBleHBsaWNpdGx5IHNwZWNpZmllZCwgZ290ICR7b3B0aW9ucy5yb290fWApXG4gICAgfVxuXG4gICAgdGhpcy5jb25maWcgPSB0aGlzOjpta2NvbmZpZyhvcHRpb25zLmNvbmZpZywge1xuICAgICAgYXRsYXM6IHt9LFxuICAgICAgc2VydmljZXM6IHt9LFxuICAgICAgaG9va3M6IHt9LFxuICAgICAgYWN0aW9uczoge30sXG4gICAgfSlcbiAgICB0aGlzLmNvbmZpZy5hdGxhcyA9IGRlZmF1bHRzKHRoaXMuY29uZmlnLmF0bGFzLCBBdGxhcy5kZWZhdWx0cylcbiAgICAvLyBMb2dnZXIg8J+MslxuICAgIHRoaXMubG9nID0gcGlubyh0aGlzLmNvbmZpZy5hdGxhcy5sb2cpXG4gIH1cblxuICAvKipcbiAgICogUmVxdWlyZSBhIG1vZHVsZSBieSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290XG4gICAqXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgbG9jYXRpb24gICAgICAgICAgVGhlIG1vZHVsZSdzIGxvY2F0aW9uLCByZWxhdGl2ZSB0byByb290XG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0aW9ucz17fSAgICAgICAgT3B0aW9uc1xuICAgKiBAcGFyYW0gICAgIHtCb29sZWFufSAgIG9wdGlvbnMub3B0aW9uYWwgIElmIHRydWUsIHdpbGwgbm90IHRocm93IGlmIHRoZSBtb2R1bGUgZG9lcyBub3QgZXhpc3RcbiAgICogQHBhcmFtICAgICB7Qm9vbGVhbn0gICBvcHRpb25zLmFic29sdXRlICBJZiB0cnVlLCB3aWxsIHRyeSB0byBsb2FkIHRoZSBtb2R1bGUgd2l0aG91dFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmluZyB0aGUgbW9kdWxlJ3MgbmFtZSB0byB0aGUgcHJvamVjdCByb290IChpdFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgbG9hZCB0aGUgbW9kdWxlIHVzaW5nIHN0YW5kYXJkIE5vZGUncyBtZWNoYW5pc20pXG4gICAqIEByZXR1cm4gICAge21peGVkfSAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1vZHVsZSdzIGNvbnRlbnRzXG4gICAqL1xuICByZXF1aXJlKGxvY2F0aW9uLCBvcHRpb25zID0ge30pIHtcbiAgICBsb2NhdGlvbiA9IG9wdGlvbnMuYWJzb2x1dGVcbiAgICAgID8gbG9jYXRpb25cbiAgICAgIDogcGF0aC5yZXNvbHZlKHRoaXMucm9vdCwgbG9jYXRpb24pXG5cbiAgICBjb25zdCBsb2FkZXIgPSBvcHRpb25zLm9wdGlvbmFsXG4gICAgICA/IG9wdHJlcXVpcmVcbiAgICAgIDogcmVxdWlyZVxuXG4gICAgcmV0dXJuIGxvYWRlcihsb2NhdGlvbilcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIHNlcnZpY2UgaW50byB0aGlzIGF0bGFzIGF0IGdpdmVuIGFsaWFzXG4gICAqXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgYWxpYXMgICAgICAgICAgIFRoZSBhbGlhcyBmb3IgdGhlIHNlcnZpY2UgLSBpdCB3aWxsIGJlIHVzZWQgZm9yIGV4cG9zaW5nXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzZXJ2aWNlJ3MgQVBJIG9uIHRoZSBhdGxhcy5zZXJ2aWNlcyBvYmplY3QgYW5kIGZvclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzaW5nIGNvbmZpZ3VyYXRpb24gZGF0YSB0byBpdFxuICAgKiBAcGFyYW0gICAgIHtjbGFzc30gICAgIENvbXBvbmVudCAgICAgICBUaGUgc2VydmljZSBjbGFzc1xuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMgICAgICAgICAgICBSdW50aW1lIG9wdGlvbnMgZm9yIHRoZSBzZXJ2aWNlXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0cy5hbGlhc2VzICAgIEJpbmRpbmdzIHRvIG90aGVyIGRlZmluZWQgY29tcG9uZW50c1xuICAgKiBAcmV0dXJuICAgIHt0aGlzfVxuICAgKi9cbiAgc2VydmljZShhbGlhcywgQ29tcG9uZW50LCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpczo6Y29tcG9uZW50KHtcbiAgICAgIHR5cGU6ICdzZXJ2aWNlJyxcbiAgICAgIGFsaWFzLFxuICAgICAgQ29tcG9uZW50LFxuICAgICAgYWxpYXNlczogb3B0cy5hbGlhc2VzLFxuICAgIH0sIHRoaXM6OmhpZGRlbigpLmNhdGFsb2cuc2VydmljZXMpXG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBob29rIGludG8gdGhpcyBhdGxhcyB1c2luZyBnaXZlbiBhbGlhc1xuICAgKlxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgICAgICBUaGUgYWxpYXMgZm9yIHRoZSBob29rIC0gaXQgd2lsbCBiZSB1c2VkIGZvciBwYXNzaW5nXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZGF0YSB0byBpdFxuICAgKiBAcGFyYW0gICAgIHtjbGFzc30gICAgIENvbXBvbmVudCAgICAgICBUaGUgaG9vayBjbGFzc1xuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMgICAgICAgICAgICBSdW50aW1lIG9wdGlvbnMgZm9yIHRoZSBob29rXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0cy5hbGlhc2VzICAgIEJpbmRpbmdzIHRvIG90aGVyIGRlZmluZWQgY29tcG9uZW50c1xuICAgKiBAcmV0dXJuICAgIHt0aGlzfVxuICAgKi9cbiAgaG9vayhhbGlhcywgQ29tcG9uZW50LCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpczo6Y29tcG9uZW50KHtcbiAgICAgIHR5cGU6ICdob29rJyxcbiAgICAgIGFsaWFzLFxuICAgICAgQ29tcG9uZW50LFxuICAgICAgYWxpYXNlczogb3B0cy5hbGlhc2VzLFxuICAgIH0sIHRoaXM6OmhpZGRlbigpLmNhdGFsb2cuaG9va3MpXG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYW4gYWN0aW9uIGludG8gdGhpcyBhdGxhcyBhdCBnaXZlbiBhbGlhc1xuICAgKlxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgICAgICBUaGUgYWxpYXMgZm9yIHRoZSBhY3Rpb24gLSBpdCB3aWxsIGJlIHVzZWQgZm9yIGV4cG9zaW5nXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhY3Rpb24ncyBBUEkgb24gdGhlIGF0bGFzLmFjdGlvbnMgb2JqZWN0IGFuZCBmb3JcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2luZyBjb25maWd1cmF0aW9uIGRhdGEgdG8gaXRcbiAgICogQHBhcmFtICAgICB7Y2xhc3N9ICAgICBDb21wb25lbnQgICAgICAgVGhlIGFjdGlvbiBjbGFzc1xuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMgICAgICAgICAgICBSdW50aW1lIG9wdGlvbnMgZm9yIHRoZSBhY3Rpb25cbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBvcHRzLmFsaWFzZXMgICAgQmluZGluZ3MgdG8gb3RoZXIgZGVmaW5lZCBjb21wb25lbnRzXG4gICAqIEByZXR1cm4gICAge3RoaXN9XG4gICAqL1xuICBhY3Rpb24oYWxpYXMsIENvbXBvbmVudCwgb3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXM6OmNvbXBvbmVudCh7XG4gICAgICB0eXBlOiAnYWN0aW9uJyxcbiAgICAgIGFsaWFzLFxuICAgICAgQ29tcG9uZW50LFxuICAgICAgYWxpYXNlczogb3B0cy5hbGlhc2VzLFxuICAgIH0sIHRoaXM6OmhpZGRlbigpLmNhdGFsb2cuYWN0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVwYXJlIGFsbCBzZXJ2aWNlcyBhbmQgaG9va3MgZm9yIHVzZVxuICAgKlxuICAgKiBHZW5lcmFsbHkgeW91IHNob3VsZCB1c2UgYGF0bGFzLnN0YXJ0KClgIGluc3RlYWQgdG8gZ2V0IHlvdXIgaW5zdGFuY2UgdXAgYW5kIHJ1bm5pbmcuIEhvd2V2ZXIsXG4gICAqIHNvbWV0aW1lcyBpdCBpcyBuZWNlc3NhcnkgdG8gZ2V0IGFsbCB0aGUgc2VydmljZXMgaW50byBhIFwiZ2V0LXJlYWR5XCIgc3RhdGUgYmVmb3JlIHRoZXkgc3RhcnRcbiAgICogY29ubmVjdGluZyB0byByZW1vdGUgcmVzb3VyY2VzIG9yIGRvaW5nIGFueSBpbnRlbnNpdmUgSS9PIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gICAge1Byb21pc2U8dGhpcz59XG4gICAqL1xuICBhc3luYyBwcmVwYXJlKCkge1xuICAgIGlmICh0aGlzLnByZXBhcmVkKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIGNvbnN0IHsgc2VydmljZXMsIGFjdGlvbnMsIGhvb2tzIH0gPSB0aGlzOjpoaWRkZW4oKS5jYXRhbG9nXG5cbiAgICAvLyBQcmVwYXJlIGFjdGlvbnNcbiAgICBmb3IgKGNvbnN0IFthbGlhcywgYWN0aW9uXSBvZiBhY3Rpb25zKSB7XG4gICAgICB0aGlzLmFjdGlvbnNbYWxpYXNdID0gYWN0aW9uLmNvbXBvbmVudFxuICAgIH1cblxuICAgIC8vIFByZXBhcmUgYWxsIHNlcnZpY2VzLCBpbiBwYXJhbGxlbCDwn5KqXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShzZXJ2aWNlcykubWFwKChbYWxpYXMsIHNlcnZpY2VdKSA9PlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICB0aGlzOjpsaWZlY3ljbGUuc2VydmljZS5wcmVwYXJlKGFsaWFzLCBzZXJ2aWNlLmNvbXBvbmVudCkpKVxuXG4gICAgdGhpczo6aGlkZGVuKCkucHJlcGFyZWQgPSB0cnVlXG4gICAgYXdhaXQgdGhpczo6ZGlzcGF0Y2goJ2FmdGVyUHJlcGFyZScsIHRoaXMsIGhvb2tzKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBhbGwgc2VydmljZXNcbiAgICpcbiAgICogQHJldHVybiAgICB7UHJvbWlzZTx0aGlzPn1cbiAgICovXG4gIGFzeW5jIHN0YXJ0KCkge1xuICAgIGlmICh0aGlzLnN0YXJ0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgY29uc3QgaG9va3MgPSB0aGlzOjpoaWRkZW4oKS5jYXRhbG9nLmhvb2tzXG5cbiAgICBhd2FpdCB0aGlzLnByZXBhcmUoKVxuICAgIGF3YWl0IHRoaXM6OmRpc3BhdGNoKCdiZWZvcmVTdGFydCcsIHRoaXMsIGhvb2tzKVxuXG4gICAgY29uc3QgeyBzZXJ2aWNlcyB9ID0gdGhpczo6aGlkZGVuKCkuY2F0YWxvZ1xuXG4gICAgLy8gU3RhcnQgYWxsIHNlcnZpY2VzLCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGFkZGVkIHRvIHRoZSBpbnN0YW5jZSDwn5KqXG4gICAgLy8gT3JkZXJpbmcgaXMgaW1wb3J0YW50IGhlcmUhIFNvbWUgc2VydmljZXMgc2hvdWxkIGJlIHN0YXJ0ZWQgYXMgdGhlIGxhc3Qgb25lcyBiZWNhdXNlIHRoZXlcbiAgICAvLyBleHBvc2Ugc29tZSBmdW5jdGlvbmFsaXR5IHRvIHRoZSBvdXRzaWRlIHdvcmxkIGFuZCBzdGFydGluZyB0aG9zZSBiZWZvcmUgaWUuIGEgZGF0YWJhc2VcbiAgICAvLyBzZXJ2aWNlIGlzIHN0YXJ0ZWQgbWlnaHQgYnJlYWsgc3R1ZmYhXG4gICAgZm9yIChjb25zdCBbYWxpYXMsIHNlcnZpY2VdIG9mIHNlcnZpY2VzKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIGF3YWl0IHRoaXM6OmxpZmVjeWNsZS5zZXJ2aWNlLnN0YXJ0KGFsaWFzLCBzZXJ2aWNlLmNvbXBvbmVudClcbiAgICB9XG5cbiAgICB0aGlzOjpoaWRkZW4oKS5zdGFydGVkID0gdHJ1ZVxuICAgIGF3YWl0IHRoaXM6OmRpc3BhdGNoKCdhZnRlclN0YXJ0JywgdGhpcywgaG9va3MpXG4gICAgdGhpcy5sb2cuaW5mbygnYXRsYXM6cmVhZHknKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIGFsbCBzZXJ2aWNlcywgdW5yZWdpc3RlciBhbGwgYWN0aW9ucyBhbmQgaG9va3MgYW5kIHVucHVibGlzaCBhbnkgQVBJcyBleHBvc2VkIGJ5IHRoZW1cbiAgICpcbiAgICogVGhpcyBwdXRzIHRoZSB3aG9sZSBhcHBsaWNhdGlvbiBpbnRvIGEgc3RhdGUgYXMgaXQgd2FzIGJlZm9yZSBgYXRsYXMucHJlcGFyZSgpYCBhbmQvb3JcbiAgICogYGF0bGFzLnN0YXJ0KClgIHdhcyBjYWxsZWQuXG4gICAqXG4gICAqIEByZXR1cm4gICAge1Byb21pc2U8dGhpcz59XG4gICAqL1xuICBhc3luYyBzdG9wKCkge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIGNvbnN0IHsgc2VydmljZXMsIGFjdGlvbnMsIGhvb2tzIH0gPSB0aGlzOjpoaWRkZW4oKS5jYXRhbG9nXG5cbiAgICBhd2FpdCB0aGlzOjpkaXNwYXRjaCgnYmVmb3JlU3RvcCcsIHRoaXMsIGhvb2tzKVxuXG4gICAgLy8gU3RvcCBhbGwgc2VydmljZXMsIGluIHRoZSByZXZlcnNlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZCB0byB0aGUgaW5zdGFuY2Ug8J+SqlxuICAgIC8vIFRoaXMgd2lsbCBtYWtlIHN1cmUgdGhlIG1vc3QgaW1wb3J0YW50IHNlcnZpY2VzIGFyZSBzdG9wcGVkIGZpcnN0LlxuICAgIGZvciAoY29uc3QgW2FsaWFzLCBzZXJ2aWNlXSBvZiBBcnJheS5mcm9tKHNlcnZpY2VzKS5yZXZlcnNlKCkpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgYXdhaXQgdGhpczo6bGlmZWN5Y2xlLnNlcnZpY2Uuc3RvcChhbGlhcywgc2VydmljZS5jb21wb25lbnQpXG4gICAgfVxuXG4gICAgLy8gVW5yZWdpc3RlciBhY3Rpb25zXG4gICAgZm9yIChjb25zdCBbYWxpYXNdIG9mIGFjdGlvbnMpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmFjdGlvbnNbYWxpYXNdXG4gICAgfVxuXG4gICAgdGhpczo6aGlkZGVuKCkuc3RhcnRlZCA9IGZhbHNlXG4gICAgdGhpczo6aGlkZGVuKCkucHJlcGFyZWQgPSBmYWxzZVxuXG4gICAgYXdhaXQgdGhpczo6ZGlzcGF0Y2goJ2FmdGVyU3RvcCcsIG51bGwsIGhvb2tzKVxuICAgIHRoaXMubG9nLmluZm8oJ2F0bGFzOnN0b3BwZWQnKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxufVxuXG5jb25zdCBsaWZlY3ljbGUgPSB7XG4gIHNlcnZpY2U6IHtcbiAgICAvKipcbiAgICAgKiBQcmVwYXJlIGEgc2VydmljZVxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgIFRoZSBTZXJ2aWNlJ3MgYWxpYXNcbiAgICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIHNlcnZpY2UgICAgIFRoZSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uXG4gICAgICogQHJldHVybiAgICB7UHJvbWlzZTx2b2lkPn1cbiAgICAgKi9cbiAgICBhc3luYyBwcmVwYXJlKGFsaWFzLCBzZXJ2aWNlKSB7XG4gICAgICB0aGlzLmxvZy50cmFjZSh7IHNlcnZpY2U6IGFsaWFzIH0sICdzZXJ2aWNlOnByZXBhcmU6YmVmb3JlJylcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gYXdhaXQgc2VydmljZS5wcmVwYXJlKClcbiAgICAgIHRoaXM6OmV4cG9zZSgnc2VydmljZXMnLCBhbGlhcywgaW5zdGFuY2UpXG4gICAgICB0aGlzLmxvZy50cmFjZSh7IHNlcnZpY2U6IGFsaWFzIH0sICdzZXJ2aWNlOnByZXBhcmU6YWZ0ZXInKVxuICAgIH0sXG4gICAgLyoqXG4gICAgICogU3RhcnQgYSBzZXJ2aWNlXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgYWxpYXMgICAgICAgVGhlIFNlcnZpY2UncyBhbGlhc1xuICAgICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgc2VydmljZSAgICAgVGhlIHNlcnZpY2UgaW1wbGVtZW50YXRpb25cbiAgICAgKiBAcmV0dXJuICAgIHtQcm9taXNlPHZvaWQ+fVxuICAgICAqL1xuICAgIGFzeW5jIHN0YXJ0KGFsaWFzLCBzZXJ2aWNlKSB7XG4gICAgICB0aGlzLmxvZy50cmFjZSh7IHNlcnZpY2U6IGFsaWFzIH0sICdzZXJ2aWNlOnN0YXJ0OmJlZm9yZScpXG4gICAgICBhd2FpdCBzZXJ2aWNlLnN0YXJ0KHRoaXMuc2VydmljZXNbYWxpYXNdKVxuICAgICAgdGhpcy5sb2cudHJhY2UoeyBzZXJ2aWNlOiBhbGlhcyB9LCAnc2VydmljZTpzdGFydDphZnRlcicpXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBTdG9wIGEgc2VydmljZVxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgIFRoZSBTZXJ2aWNlJ3MgYWxpYXNcbiAgICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIHNlcnZpY2UgICAgIFRoZSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uXG4gICAgICogQHJldHVybiAgICB7UHJvbWlzZTx2b2lkPn1cbiAgICAgKi9cbiAgICBhc3luYyBzdG9wKGFsaWFzLCBzZXJ2aWNlKSB7XG4gICAgICB0aGlzLmxvZy50cmFjZSh7IHNlcnZpY2U6IGFsaWFzIH0sICdzZXJ2aWNlOnN0b3A6YmVmb3JlJylcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5zZXJ2aWNlc1thbGlhc11cbiAgICAgIGRlbGV0ZSB0aGlzLnNlcnZpY2VzW2FsaWFzXVxuICAgICAgYXdhaXQgc2VydmljZS5zdG9wKGluc3RhbmNlKVxuICAgICAgdGhpcy5sb2cudHJhY2UoeyBzZXJ2aWNlOiBhbGlhcyB9LCAnc2VydmljZTpzdG9wOmFmdGVyJylcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBBdGxhc1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF0bGFzLm1qcyJdLCJuYW1lcyI6WyJBdGxhcyIsImluaXQiLCJvcHRpb25zIiwiY29uZmlnIiwiaG9va3MiLCJzZXJ2aWNlcyIsImFjdGlvbnMiLCJhbGlhc2VzIiwiYXRsYXMiLCJlbnYiLCJyb290IiwidHlwZXMiLCJwYXRocyIsIm1vZHVsZXMiLCJ0eXBlIiwicmVzb2x2ZSIsInJlcXVpcmUiLCJvcHRpb25hbCIsImxvZyIsImRlYnVnIiwiY29tcG9uZW50cyIsIk9iamVjdCIsImtleXMiLCJhbGlhcyIsIkhvb2siLCJlbnRyaWVzIiwiaG9vayIsIlNlcnZpY2UiLCJzZXJ2aWNlIiwiQWN0aW9uIiwiYWN0aW9uIiwicHJlcGFyZWQiLCJzdGFydGVkIiwiY29uc3RydWN0b3IiLCJwcm9jZXNzIiwiTk9ERV9FTlYiLCJjYXRhbG9nIiwiTWFwIiwiZGVmYXVsdHMiLCJsb2NhdGlvbiIsImFic29sdXRlIiwibG9hZCIsImNvbnRlbnRzIiwibm9ybWFsaXNlIiwiZGVmYXVsdCIsIkNvbXBvbmVudCIsIm9wdHMiLCJwcmVwYXJlIiwiY29tcG9uZW50IiwiUHJvbWlzZSIsImFsbCIsIkFycmF5IiwiZnJvbSIsIm1hcCIsImxpZmVjeWNsZSIsInN0YXJ0IiwiaW5mbyIsInN0b3AiLCJyZXZlcnNlIiwibmFtZSIsImJhc2VuYW1lIiwiY3dkIiwibGV2ZWwiLCJzZXJpYWxpemVycyIsInN0ZFNlcmlhbGl6ZXJzIiwidHJhY2UiLCJpbnN0YW5jZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBOztBQUNBOztBQUNBOztBQUlBOztBQUNBOztBQUNBOzs7O0FBY0EsTUFBTUEsS0FBTixDQUFZO0FBdUJWLFNBQU9DLElBQVAsQ0FBWUMsVUFBVSxFQUF0QixFQUEwQjtBQUN4Qiw4QkFBU0EsT0FBVCxFQUFrQjtBQUNoQkMsY0FBUSxRQURRO0FBRWhCQyxhQUFPLE9BRlM7QUFHaEJDLGdCQUFVLFVBSE07QUFJaEJDLGVBQVMsU0FKTztBQUtoQkMsZUFBUztBQUxPLEtBQWxC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QVcsTUFBTXRDLFFBQVFtQixPQUFSLEVBQXZCOztBQUNBLGlDQUFhLFVBQWIsRUFBeUJ4QixLQUF6QixFQUFnQzJDLFFBQWhDOztBQUNBLFdBQUtoRCxHQUFMLENBQVMrQyxLQUFULENBQWU7QUFBRXJDLGlCQUFTTDtBQUFYLE9BQWYsRUFBbUMsdUJBQW5DO0FBQ0QsS0FkTTs7QUF1QlAsVUFBTWdDLEtBQU4sQ0FBWWhDLEtBQVosRUFBbUJLLE9BQW5CLEVBQTRCO0FBQzFCLFdBQUtWLEdBQUwsQ0FBUytDLEtBQVQsQ0FBZTtBQUFFckMsaUJBQVNMO0FBQVgsT0FBZixFQUFtQyxzQkFBbkM7QUFDQSxZQUFNSyxRQUFRMkIsS0FBUixDQUFjLEtBQUtsRCxRQUFMLENBQWNrQixLQUFkLENBQWQsQ0FBTjtBQUNBLFdBQUtMLEdBQUwsQ0FBUytDLEtBQVQsQ0FBZTtBQUFFckMsaUJBQVNMO0FBQVgsT0FBZixFQUFtQyxxQkFBbkM7QUFDRCxLQTNCTTs7QUFvQ1AsVUFBTWtDLElBQU4sQ0FBV2xDLEtBQVgsRUFBa0JLLE9BQWxCLEVBQTJCO0FBQ3pCLFdBQUtWLEdBQUwsQ0FBUytDLEtBQVQsQ0FBZTtBQUFFckMsaUJBQVNMO0FBQVgsT0FBZixFQUFtQyxxQkFBbkM7QUFDQSxZQUFNMkMsV0FBVyxLQUFLN0QsUUFBTCxDQUFja0IsS0FBZCxDQUFqQjtBQUNBLGFBQU8sS0FBS2xCLFFBQUwsQ0FBY2tCLEtBQWQsQ0FBUDtBQUNBLFlBQU1LLFFBQVE2QixJQUFSLENBQWFTLFFBQWIsQ0FBTjtBQUNBLFdBQUtoRCxHQUFMLENBQVMrQyxLQUFULENBQWU7QUFBRXJDLGlCQUFTTDtBQUFYLE9BQWYsRUFBbUMsb0JBQW5DO0FBQ0Q7O0FBMUNNO0FBRE8sQ0FBbEI7ZUErQ2V2QixLIiwiZmlsZSI6ImF0bGFzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gV2UgdXNlIGZvci1hd2FpdCBwYXR0ZXJuIHF1aXRlIGV4dGVuc2l2ZWx5IGhlcmUgZm9yIGxlZ2l0aW1hdGUgcHVycG9zZXNcbi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cblxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBwaW5vIGZyb20gJ3Bpbm8nXG5pbXBvcnQge1xuICBkZWZhdWx0c0RlZXAgYXMgZGVmYXVsdHMsXG4gIGlzUGxhaW5PYmplY3QsXG59IGZyb20gJ2xvZGFzaCdcbmltcG9ydCBoaWRkZW4gZnJvbSAnbG9jYWwtc2NvcGUvY3JlYXRlJ1xuaW1wb3J0IHsgRnJhbWV3b3JrRXJyb3IgfSBmcm9tICdAYXRsYXMuanMvZXJyb3JzJ1xuaW1wb3J0IHtcbiAgZXhwb3NlLFxuICBkaXNwYXRjaCxcbiAgY29tcG9uZW50LFxuICBta2NvbmZpZyxcbiAgbWtsb2csXG4gIG9wdHJlcXVpcmUsXG59IGZyb20gJy4vcHJpdmF0ZSdcblxuLyoqXG4gKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgeW91ciBhcHBsaWNhdGlvbiBhbmQgYWdncmVnYXRlcyBhbGwgY29tcG9uZW50cyB0b2dldGhlclxuICpcbiAqIFlvdSBzaG91bGQgZ2VuZXJhbGx5IGNyZWF0ZSBvbmx5IG9uZSBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGluIGEgcHJvZ3JhbS5cbiAqL1xuY2xhc3MgQXRsYXMge1xuICBzdGF0aWMgZGVmYXVsdHMgPSB7XG4gICAgbG9nOiB7XG4gICAgICBuYW1lOiBwYXRoLmJhc2VuYW1lKHByb2Nlc3MuY3dkKCkpLFxuICAgICAgbGV2ZWw6ICdpbmZvJyxcbiAgICAgIHNlcmlhbGl6ZXJzOiBwaW5vLnN0ZFNlcmlhbGl6ZXJzLFxuICAgIH0sXG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGlzZSBhIGJyYW5kLW5ldyBhdGxhcyBpbnN0YW5jZSBmcm9tIHRoZSBnaXZlbiBtb2R1bGUgbG9jYXRpb25zXG4gICAqXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgICBvcHRpb25zICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgIG9wdGlvbnMuZW52ICAgICAgICAgICAgICAgICAgIFRoZSBlbnZpcm9ubWVudCB1bmRlciB3aGljaCB0byBvcGVyYXRlXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgICBvcHRpb25zLnJvb3QgICAgICAgICAgICAgICAgICBUaGUgcm9vdCBkaXJlY3RvcnkgdG8gd2hpY2ggYWxsIG90aGVyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBtZW50aW9uZWQgaGVyZSBhcmUgcmVsYXRpdmVcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgIG9wdGlvbnMuY29uZmlnPSdjb25maWcnICAgICAgIE1vZHVsZSBsb2NhdGlvbiBmb3IgdGhlIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgIG9wdGlvbnMuaG9va3M9J2hvb2tzJyAgICAgICAgIE1vZHVsZSBsb2NhdGlvbiBmb3IgdGhlIGhvb2tzXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgICBvcHRpb25zLnNlcnZpY2VzPSdzZXJ2aWNlcycgICBNb2R1bGUgbG9jYXRpb24gZm9yIHRoZSBzZXJ2aWNlc1xuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgICAgb3B0aW9ucy5hY3Rpb25zPSdhY3Rpb25zJyAgICAgTW9kdWxlIGxvY2F0aW9uIGZvciB0aGUgYWN0aW9uc1xuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgICAgb3B0aW9ucy5hbGlhc2VzPSdhbGlhc2VzJyAgICAgTW9kdWxlIGxvY2F0aW9uIGZvciB0aGUgYWxpYXNlc1xuICAgKiBAcmV0dXJuICAgIHtBdGxhc31cbiAgICovXG4gIHN0YXRpYyBpbml0KG9wdGlvbnMgPSB7fSkge1xuICAgIGRlZmF1bHRzKG9wdGlvbnMsIHtcbiAgICAgIGNvbmZpZzogJ2NvbmZpZycsXG4gICAgICBob29rczogJ2hvb2tzJyxcbiAgICAgIHNlcnZpY2VzOiAnc2VydmljZXMnLFxuICAgICAgYWN0aW9uczogJ2FjdGlvbnMnLFxuICAgICAgYWxpYXNlczogJ2FsaWFzZXMnLFxuICAgIH0pXG5cbiAgICBjb25zdCBhdGxhcyA9IG5ldyB0aGlzKHtcbiAgICAgIGVudjogb3B0aW9ucy5lbnYsXG4gICAgICByb290OiBvcHRpb25zLnJvb3QsXG4gICAgICBjb25maWc6IG9wdGlvbnMuY29uZmlnLFxuICAgIH0pXG4gICAgY29uc3QgdHlwZXMgPSBbXG4gICAgICAnaG9va3MnLFxuICAgICAgJ3NlcnZpY2VzJyxcbiAgICAgICdhY3Rpb25zJyxcbiAgICAgICdhbGlhc2VzJyxcbiAgICBdXG4gICAgY29uc3QgcGF0aHMgPSB7fVxuICAgIGNvbnN0IG1vZHVsZXMgPSB7fVxuXG4gICAgZm9yIChjb25zdCB0eXBlIG9mIHR5cGVzKSB7XG4gICAgICBwYXRoc1t0eXBlXSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnJvb3QsIG9wdGlvbnNbdHlwZV0pXG4gICAgICBtb2R1bGVzW3R5cGVdID0gYXRsYXMucmVxdWlyZShvcHRpb25zW3R5cGVdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXG4gICAgfVxuXG4gICAgZGVmYXVsdHMobW9kdWxlcywge1xuICAgICAgYWxpYXNlczoge1xuICAgICAgICBhY3Rpb25zOiB7fSxcbiAgICAgICAgaG9va3M6IHt9LFxuICAgICAgICBzZXJ2aWNlczoge30sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBhdGxhcy5sb2cuZGVidWcoe1xuICAgICAgZW52OiBhdGxhcy5lbnYsXG4gICAgICByb290OiBhdGxhcy5yb290LFxuICAgICAgcGF0aHMsXG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIGFjdGlvbnM6IE9iamVjdC5rZXlzKG1vZHVsZXMuYWN0aW9ucyksXG4gICAgICAgIGhvb2tzOiBPYmplY3Qua2V5cyhtb2R1bGVzLmhvb2tzKSxcbiAgICAgICAgc2VydmljZXM6IE9iamVjdC5rZXlzKG1vZHVsZXMuc2VydmljZXMpLFxuICAgICAgfSxcbiAgICB9LCAnYXRsYXM6aW5pdCcpXG5cbiAgICAvLyBIb29rc1xuICAgIGZvciAoY29uc3QgW2FsaWFzLCBIb29rXSBvZiBPYmplY3QuZW50cmllcyhtb2R1bGVzLmhvb2tzKSkge1xuICAgICAgY29uc3QgYWxpYXNlcyA9IG1vZHVsZXMuYWxpYXNlcy5ob29rc1thbGlhc11cbiAgICAgIGF0bGFzLmhvb2soYWxpYXMsIEhvb2ssIHsgYWxpYXNlcyB9KVxuICAgIH1cblxuICAgIC8vIFNlcnZpY2VzXG4gICAgZm9yIChjb25zdCBbYWxpYXMsIFNlcnZpY2VdIG9mIE9iamVjdC5lbnRyaWVzKG1vZHVsZXMuc2VydmljZXMpKSB7XG4gICAgICBjb25zdCBhbGlhc2VzID0gbW9kdWxlcy5hbGlhc2VzLnNlcnZpY2VzW2FsaWFzXVxuICAgICAgYXRsYXMuc2VydmljZShhbGlhcywgU2VydmljZSwgeyBhbGlhc2VzIH0pXG4gICAgfVxuXG4gICAgLy8gQWN0aW9uc1xuICAgIGZvciAoY29uc3QgW2FsaWFzLCBBY3Rpb25dIG9mIE9iamVjdC5lbnRyaWVzKG1vZHVsZXMuYWN0aW9ucykpIHtcbiAgICAgIGNvbnN0IGFsaWFzZXMgPSBtb2R1bGVzLmFsaWFzZXMuYWN0aW9uc1thbGlhc11cbiAgICAgIGF0bGFzLmFjdGlvbihhbGlhcywgQWN0aW9uLCB7IGFsaWFzZXMgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gYXRsYXNcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGVudmlyb25tZW50IHVuZGVyIHdoaWNoIHRoaXMgaW5zdGFuY2Ugb3BlcmF0ZXNcbiAgICpcbiAgICogRGVmYXVsdHMgdG8gTk9ERV9FTlYgZnJvbSB0aGUgZW52aXJvbm1lbnQuXG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAcmV0dXJuICAgIHtTdHJpbmd9XG4gICAqL1xuICBnZXQgZW52KCkge1xuICAgIHJldHVybiB0aGlzOjpoaWRkZW4oKS5lbnZcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcm9vdCBmb2xkZXIgd2hlcmUgYWxsIG90aGVyIHBhdGhzIHNob3VsZCBiZSByZWxhdGl2ZSB0b1xuICAgKlxuICAgKiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBzZXQgdGhpcyB0byB0aGUgcHJvamVjdCdzIHJvb3QgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAcmVhZG9ubHlcbiAgICogQHJldHVybiAgICB7U3RyaW5nfVxuICAgKi9cbiAgZ2V0IHJvb3QoKSB7XG4gICAgcmV0dXJuIHRoaXM6OmhpZGRlbigpLnJvb3RcbiAgfVxuXG4gIC8qKlxuICAgKiBJcyB0aGlzIGluc3RhbmNlIGluIGEgcHJlcGFyZWQgc3RhdGU/XG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAcmV0dXJuICAgIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IHByZXBhcmVkKCkge1xuICAgIHJldHVybiB0aGlzOjpoaWRkZW4oKS5wcmVwYXJlZFxuICB9XG5cbiAgLyoqXG4gICAqIElzIHRoaXMgaW5zdGFuY2UgaW4gYSBzdGFydGVkIHN0YXRlP1xuICAgKlxuICAgKiBAcmVhZG9ubHlcbiAgICogQHJldHVybiAgICB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBzdGFydGVkKCkge1xuICAgIHJldHVybiB0aGlzOjpoaWRkZW4oKS5zdGFydGVkXG4gIH1cblxuICAvKipcbiAgICogQXRsYXMgY29uZmlndXJhdGlvbiwgYXMgcGFzc2VkIGluIHRvIHRoZSBjb25zdHJ1Y3RvclxuICAgKlxuICAgKiBAdHlwZSAgICB7T2JqZWN0fVxuICAgKi9cbiAgY29uZmlnID0ge31cblxuICAvKipcbiAgICogQWxsIHNlcnZpY2VzIGFkZGVkIHRvIHRoaXMgaW5zdGFuY2VcbiAgICpcbiAgICogQHR5cGUgICAge09iamVjdH1cbiAgICovXG4gIHNlcnZpY2VzID0ge31cblxuICAvKipcbiAgICogQWxsIGFjdGlvbnMgYWRkZWQgdG8gdGhpcyBpbnN0YW5jZVxuICAgKlxuICAgKiBAdHlwZSAgICB7T2JqZWN0fVxuICAgKi9cbiAgYWN0aW9ucyA9IHt9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdGlvbnMgICAgICAgICAgICAgT3B0aW9ucyBmb3IgdGhlIGluc3RhbmNlXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0aW9ucy5jb25maWcgICAgICBDb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhlIGluc3RhbmNlIGFuZCBmb3IgYWxsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlcyBvciBvdGhlciBjb21wb25lbnRzIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG9cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIG9wdGlvbnMucm9vdCAgICAgICAgVGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIG9wdGlvbnMuZW52ICAgICAgICAgVGhlIGVudmlyb25tZW50IHVuZGVyIHdoaWNoIHRoaXMgaW5zdGFuY2Ugb3BlcmF0ZXMuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb25lbnRzIG1heSB1c2UgdGhpcyB2YWx1ZSBmb3IgdmFyaW91cyBwdXJwb3Nlcy5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIE5PREVfRU5WLlxuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucyA9IHt9KSB7XG4gICAgLy8gSW5pdGlhbGlzZSBwcml2YXRlIHN0dWZmXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb2Nlc3MtZW52XG4gICAgdGhpczo6aGlkZGVuKCkuZW52ID0gb3B0aW9ucy5lbnYgfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlZcbiAgICB0aGlzOjpoaWRkZW4oKS5yb290ID0gb3B0aW9ucy5yb290XG4gICAgdGhpczo6aGlkZGVuKCkucHJlcGFyZWQgPSBmYWxzZVxuICAgIHRoaXM6OmhpZGRlbigpLnN0YXJ0ZWQgPSBmYWxzZVxuICAgIHRoaXM6OmhpZGRlbigpLmNhdGFsb2cgPSB7XG4gICAgICBzZXJ2aWNlczogbmV3IE1hcCgpLFxuICAgICAgaG9va3M6IG5ldyBNYXAoKSxcbiAgICAgIGFjdGlvbnM6IG5ldyBNYXAoKSxcbiAgICB9XG5cbiAgICAvLyBTYWZldHkgY2hlY2tzXG4gICAgaWYgKCF0aGlzLmVudikge1xuICAgICAgdGhyb3cgbmV3IEZyYW1ld29ya0Vycm9yKCdlbnYgbm90IHNwZWNpZmllZCBhbmQgTk9ERV9FTlYgd2FzIG5vdCBzZXQnKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5yb290ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEZyYW1ld29ya0Vycm9yKGByb290IG11c3QgYmUgZXhwbGljaXRseSBzcGVjaWZpZWQsIGdvdCAke29wdGlvbnMucm9vdH1gKVxuICAgIH1cblxuICAgIHRoaXMuY29uZmlnID0gdGhpczo6bWtjb25maWcob3B0aW9ucy5jb25maWcsIHtcbiAgICAgIGF0bGFzOiBBdGxhcy5kZWZhdWx0cyxcbiAgICAgIHNlcnZpY2VzOiB7fSxcbiAgICAgIGhvb2tzOiB7fSxcbiAgICAgIGFjdGlvbnM6IHt9LFxuICAgIH0pXG4gICAgLy8gTG9nZ2VyIPCfjLJcbiAgICB0aGlzLmxvZyA9IHRoaXM6Om1rbG9nKHRoaXMuY29uZmlnLmF0bGFzLmxvZylcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1aXJlIGEgbW9kdWxlIGJ5IHBhdGgsIHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHJvb3RcbiAgICpcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICBsb2NhdGlvbiAgICAgICAgICBUaGUgbW9kdWxlJ3MgbG9jYXRpb24sIHJlbGF0aXZlIHRvIHJvb3RcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBvcHRpb25zPXt9ICAgICAgICBPcHRpb25zXG4gICAqIEBwYXJhbSAgICAge0Jvb2xlYW59ICAgb3B0aW9ucy5vcHRpb25hbCAgSWYgdHJ1ZSwgd2lsbCBub3QgdGhyb3cgaWYgdGhlIG1vZHVsZSBkb2VzIG5vdCBleGlzdFxuICAgKiBAcGFyYW0gICAgIHtCb29sZWFufSAgIG9wdGlvbnMubm9ybWFsaXNlIElmIHRydWUsIGl0IHdpbGwgcHJlZmVyIHRoZSBFUyBtb2R1bGVzJyBkZWZhdWx0IGV4cG9ydFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXIgbmFtZWQgZXhwb3J0cyBvciB0aGUgQ29tbW9uSlMgZXhwb3J0c1xuICAgKiBAcGFyYW0gICAgIHtCb29sZWFufSAgIG9wdGlvbnMuYWJzb2x1dGUgIElmIHRydWUsIHdpbGwgdHJ5IHRvIGxvYWQgdGhlIG1vZHVsZSB3aXRob3V0XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2aW5nIHRoZSBtb2R1bGUncyBuYW1lIHRvIHRoZSBwcm9qZWN0IHJvb3QgKGl0XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBsb2FkIHRoZSBtb2R1bGUgdXNpbmcgc3RhbmRhcmQgTm9kZSdzIG1lY2hhbmlzbSlcbiAgICogQHJldHVybiAgICB7bWl4ZWR9ICAgICAgICAgICAgICAgICAgICAgICBUaGUgbW9kdWxlJ3MgY29udGVudHNcbiAgICovXG4gIHJlcXVpcmUobG9jYXRpb24sIG9wdGlvbnMgPSB7fSkge1xuICAgIGxvY2F0aW9uID0gb3B0aW9ucy5hYnNvbHV0ZVxuICAgICAgPyBsb2NhdGlvblxuICAgICAgOiBwYXRoLnJlc29sdmUodGhpcy5yb290LCBsb2NhdGlvbilcblxuICAgIGNvbnN0IGxvYWQgPSBvcHRpb25zLm9wdGlvbmFsXG4gICAgICA/IG9wdHJlcXVpcmVcbiAgICAgIDogcmVxdWlyZVxuICAgIGNvbnN0IGNvbnRlbnRzID0gbG9hZChsb2NhdGlvbilcblxuICAgIHJldHVybiBvcHRpb25zLm5vcm1hbGlzZSAmJiBpc1BsYWluT2JqZWN0KGNvbnRlbnRzLmRlZmF1bHQpXG4gICAgICA/IGNvbnRlbnRzLmRlZmF1bHRcbiAgICAgIDogY29udGVudHNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIHNlcnZpY2UgaW50byB0aGlzIGF0bGFzIGF0IGdpdmVuIGFsaWFzXG4gICAqXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgYWxpYXMgICAgICAgICAgIFRoZSBhbGlhcyBmb3IgdGhlIHNlcnZpY2UgLSBpdCB3aWxsIGJlIHVzZWQgZm9yIGV4cG9zaW5nXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzZXJ2aWNlJ3MgQVBJIG9uIHRoZSBhdGxhcy5zZXJ2aWNlcyBvYmplY3QgYW5kIGZvclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzaW5nIGNvbmZpZ3VyYXRpb24gZGF0YSB0byBpdFxuICAgKiBAcGFyYW0gICAgIHtjbGFzc30gICAgIENvbXBvbmVudCAgICAgICBUaGUgc2VydmljZSBjbGFzc1xuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMgICAgICAgICAgICBSdW50aW1lIG9wdGlvbnMgZm9yIHRoZSBzZXJ2aWNlXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0cy5hbGlhc2VzICAgIEJpbmRpbmdzIHRvIG90aGVyIGRlZmluZWQgY29tcG9uZW50c1xuICAgKiBAcmV0dXJuICAgIHt0aGlzfVxuICAgKi9cbiAgc2VydmljZShhbGlhcywgQ29tcG9uZW50LCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpczo6Y29tcG9uZW50KHtcbiAgICAgIHR5cGU6ICdzZXJ2aWNlJyxcbiAgICAgIGFsaWFzLFxuICAgICAgQ29tcG9uZW50LFxuICAgICAgYWxpYXNlczogb3B0cy5hbGlhc2VzLFxuICAgIH0sIHRoaXM6OmhpZGRlbigpLmNhdGFsb2cuc2VydmljZXMpXG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBob29rIGludG8gdGhpcyBhdGxhcyB1c2luZyBnaXZlbiBhbGlhc1xuICAgKlxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgICAgICBUaGUgYWxpYXMgZm9yIHRoZSBob29rIC0gaXQgd2lsbCBiZSB1c2VkIGZvciBwYXNzaW5nXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZGF0YSB0byBpdFxuICAgKiBAcGFyYW0gICAgIHtjbGFzc30gICAgIENvbXBvbmVudCAgICAgICBUaGUgaG9vayBjbGFzc1xuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMgICAgICAgICAgICBSdW50aW1lIG9wdGlvbnMgZm9yIHRoZSBob29rXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0cy5hbGlhc2VzICAgIEJpbmRpbmdzIHRvIG90aGVyIGRlZmluZWQgY29tcG9uZW50c1xuICAgKiBAcmV0dXJuICAgIHt0aGlzfVxuICAgKi9cbiAgaG9vayhhbGlhcywgQ29tcG9uZW50LCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpczo6Y29tcG9uZW50KHtcbiAgICAgIHR5cGU6ICdob29rJyxcbiAgICAgIGFsaWFzLFxuICAgICAgQ29tcG9uZW50LFxuICAgICAgYWxpYXNlczogb3B0cy5hbGlhc2VzLFxuICAgIH0sIHRoaXM6OmhpZGRlbigpLmNhdGFsb2cuaG9va3MpXG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYW4gYWN0aW9uIGludG8gdGhpcyBhdGxhcyBhdCBnaXZlbiBhbGlhc1xuICAgKlxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgICAgICBUaGUgYWxpYXMgZm9yIHRoZSBhY3Rpb24gLSBpdCB3aWxsIGJlIHVzZWQgZm9yIGV4cG9zaW5nXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhY3Rpb24ncyBBUEkgb24gdGhlIGF0bGFzLmFjdGlvbnMgb2JqZWN0IGFuZCBmb3JcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2luZyBjb25maWd1cmF0aW9uIGRhdGEgdG8gaXRcbiAgICogQHBhcmFtICAgICB7Y2xhc3N9ICAgICBDb21wb25lbnQgICAgICAgVGhlIGFjdGlvbiBjbGFzc1xuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMgICAgICAgICAgICBSdW50aW1lIG9wdGlvbnMgZm9yIHRoZSBhY3Rpb25cbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBvcHRzLmFsaWFzZXMgICAgQmluZGluZ3MgdG8gb3RoZXIgZGVmaW5lZCBjb21wb25lbnRzXG4gICAqIEByZXR1cm4gICAge3RoaXN9XG4gICAqL1xuICBhY3Rpb24oYWxpYXMsIENvbXBvbmVudCwgb3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXM6OmNvbXBvbmVudCh7XG4gICAgICB0eXBlOiAnYWN0aW9uJyxcbiAgICAgIGFsaWFzLFxuICAgICAgQ29tcG9uZW50LFxuICAgICAgYWxpYXNlczogb3B0cy5hbGlhc2VzLFxuICAgIH0sIHRoaXM6OmhpZGRlbigpLmNhdGFsb2cuYWN0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVwYXJlIGFsbCBzZXJ2aWNlcyBhbmQgaG9va3MgZm9yIHVzZVxuICAgKlxuICAgKiBHZW5lcmFsbHkgeW91IHNob3VsZCB1c2UgYGF0bGFzLnN0YXJ0KClgIGluc3RlYWQgdG8gZ2V0IHlvdXIgaW5zdGFuY2UgdXAgYW5kIHJ1bm5pbmcuIEhvd2V2ZXIsXG4gICAqIHNvbWV0aW1lcyBpdCBpcyBuZWNlc3NhcnkgdG8gZ2V0IGFsbCB0aGUgc2VydmljZXMgaW50byBhIFwiZ2V0LXJlYWR5XCIgc3RhdGUgYmVmb3JlIHRoZXkgc3RhcnRcbiAgICogY29ubmVjdGluZyB0byByZW1vdGUgcmVzb3VyY2VzIG9yIGRvaW5nIGFueSBpbnRlbnNpdmUgSS9PIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gICAge1Byb21pc2U8dGhpcz59XG4gICAqL1xuICBhc3luYyBwcmVwYXJlKCkge1xuICAgIGlmICh0aGlzLnByZXBhcmVkKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIGNvbnN0IHsgc2VydmljZXMsIGFjdGlvbnMsIGhvb2tzIH0gPSB0aGlzOjpoaWRkZW4oKS5jYXRhbG9nXG5cbiAgICAvLyBQcmVwYXJlIGFjdGlvbnNcbiAgICBmb3IgKGNvbnN0IFthbGlhcywgYWN0aW9uXSBvZiBhY3Rpb25zKSB7XG4gICAgICB0aGlzLmFjdGlvbnNbYWxpYXNdID0gYWN0aW9uLmNvbXBvbmVudFxuICAgIH1cblxuICAgIC8vIFByZXBhcmUgYWxsIHNlcnZpY2VzLCBpbiBwYXJhbGxlbCDwn5KqXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShzZXJ2aWNlcykubWFwKChbYWxpYXMsIHNlcnZpY2VdKSA9PlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICB0aGlzOjpsaWZlY3ljbGUuc2VydmljZS5wcmVwYXJlKGFsaWFzLCBzZXJ2aWNlLmNvbXBvbmVudCkpKVxuXG4gICAgdGhpczo6aGlkZGVuKCkucHJlcGFyZWQgPSB0cnVlXG4gICAgYXdhaXQgdGhpczo6ZGlzcGF0Y2goJ2FmdGVyUHJlcGFyZScsIHRoaXMsIGhvb2tzKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBhbGwgc2VydmljZXNcbiAgICpcbiAgICogQHJldHVybiAgICB7UHJvbWlzZTx0aGlzPn1cbiAgICovXG4gIGFzeW5jIHN0YXJ0KCkge1xuICAgIGlmICh0aGlzLnN0YXJ0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgY29uc3QgaG9va3MgPSB0aGlzOjpoaWRkZW4oKS5jYXRhbG9nLmhvb2tzXG5cbiAgICBhd2FpdCB0aGlzLnByZXBhcmUoKVxuICAgIGF3YWl0IHRoaXM6OmRpc3BhdGNoKCdiZWZvcmVTdGFydCcsIHRoaXMsIGhvb2tzKVxuXG4gICAgY29uc3QgeyBzZXJ2aWNlcyB9ID0gdGhpczo6aGlkZGVuKCkuY2F0YWxvZ1xuXG4gICAgLy8gU3RhcnQgYWxsIHNlcnZpY2VzLCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGFkZGVkIHRvIHRoZSBpbnN0YW5jZSDwn5KqXG4gICAgLy8gT3JkZXJpbmcgaXMgaW1wb3J0YW50IGhlcmUhIFNvbWUgc2VydmljZXMgc2hvdWxkIGJlIHN0YXJ0ZWQgYXMgdGhlIGxhc3Qgb25lcyBiZWNhdXNlIHRoZXlcbiAgICAvLyBleHBvc2Ugc29tZSBmdW5jdGlvbmFsaXR5IHRvIHRoZSBvdXRzaWRlIHdvcmxkIGFuZCBzdGFydGluZyB0aG9zZSBiZWZvcmUgaWUuIGEgZGF0YWJhc2VcbiAgICAvLyBzZXJ2aWNlIGlzIHN0YXJ0ZWQgbWlnaHQgYnJlYWsgc3R1ZmYhXG4gICAgZm9yIChjb25zdCBbYWxpYXMsIHNlcnZpY2VdIG9mIHNlcnZpY2VzKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIGF3YWl0IHRoaXM6OmxpZmVjeWNsZS5zZXJ2aWNlLnN0YXJ0KGFsaWFzLCBzZXJ2aWNlLmNvbXBvbmVudClcbiAgICB9XG5cbiAgICB0aGlzOjpoaWRkZW4oKS5zdGFydGVkID0gdHJ1ZVxuICAgIGF3YWl0IHRoaXM6OmRpc3BhdGNoKCdhZnRlclN0YXJ0JywgdGhpcywgaG9va3MpXG4gICAgdGhpcy5sb2cuaW5mbygnYXRsYXM6cmVhZHknKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIGFsbCBzZXJ2aWNlcywgdW5yZWdpc3RlciBhbGwgYWN0aW9ucyBhbmQgaG9va3MgYW5kIHVucHVibGlzaCBhbnkgQVBJcyBleHBvc2VkIGJ5IHRoZW1cbiAgICpcbiAgICogVGhpcyBwdXRzIHRoZSB3aG9sZSBhcHBsaWNhdGlvbiBpbnRvIGEgc3RhdGUgYXMgaXQgd2FzIGJlZm9yZSBgYXRsYXMucHJlcGFyZSgpYCBhbmQvb3JcbiAgICogYGF0bGFzLnN0YXJ0KClgIHdhcyBjYWxsZWQuXG4gICAqXG4gICAqIEByZXR1cm4gICAge1Byb21pc2U8dGhpcz59XG4gICAqL1xuICBhc3luYyBzdG9wKCkge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIGNvbnN0IHsgc2VydmljZXMsIGFjdGlvbnMsIGhvb2tzIH0gPSB0aGlzOjpoaWRkZW4oKS5jYXRhbG9nXG5cbiAgICBhd2FpdCB0aGlzOjpkaXNwYXRjaCgnYmVmb3JlU3RvcCcsIHRoaXMsIGhvb2tzKVxuXG4gICAgLy8gU3RvcCBhbGwgc2VydmljZXMsIGluIHRoZSByZXZlcnNlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZCB0byB0aGUgaW5zdGFuY2Ug8J+SqlxuICAgIC8vIFRoaXMgd2lsbCBtYWtlIHN1cmUgdGhlIG1vc3QgaW1wb3J0YW50IHNlcnZpY2VzIGFyZSBzdG9wcGVkIGZpcnN0LlxuICAgIGZvciAoY29uc3QgW2FsaWFzLCBzZXJ2aWNlXSBvZiBBcnJheS5mcm9tKHNlcnZpY2VzKS5yZXZlcnNlKCkpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgYXdhaXQgdGhpczo6bGlmZWN5Y2xlLnNlcnZpY2Uuc3RvcChhbGlhcywgc2VydmljZS5jb21wb25lbnQpXG4gICAgfVxuXG4gICAgLy8gVW5yZWdpc3RlciBhY3Rpb25zXG4gICAgZm9yIChjb25zdCBbYWxpYXNdIG9mIGFjdGlvbnMpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmFjdGlvbnNbYWxpYXNdXG4gICAgfVxuXG4gICAgdGhpczo6aGlkZGVuKCkuc3RhcnRlZCA9IGZhbHNlXG4gICAgdGhpczo6aGlkZGVuKCkucHJlcGFyZWQgPSBmYWxzZVxuXG4gICAgYXdhaXQgdGhpczo6ZGlzcGF0Y2goJ2FmdGVyU3RvcCcsIG51bGwsIGhvb2tzKVxuICAgIHRoaXMubG9nLmluZm8oJ2F0bGFzOnN0b3BwZWQnKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxufVxuXG5jb25zdCBsaWZlY3ljbGUgPSB7XG4gIHNlcnZpY2U6IHtcbiAgICAvKipcbiAgICAgKiBQcmVwYXJlIGEgc2VydmljZVxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgIFRoZSBTZXJ2aWNlJ3MgYWxpYXNcbiAgICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIHNlcnZpY2UgICAgIFRoZSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uXG4gICAgICogQHJldHVybiAgICB7UHJvbWlzZTx2b2lkPn1cbiAgICAgKi9cbiAgICBhc3luYyBwcmVwYXJlKGFsaWFzLCBzZXJ2aWNlKSB7XG4gICAgICB0aGlzLmxvZy50cmFjZSh7IHNlcnZpY2U6IGFsaWFzIH0sICdzZXJ2aWNlOnByZXBhcmU6YmVmb3JlJylcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gYXdhaXQgc2VydmljZS5wcmVwYXJlKClcbiAgICAgIHRoaXM6OmV4cG9zZSgnc2VydmljZXMnLCBhbGlhcywgaW5zdGFuY2UpXG4gICAgICB0aGlzLmxvZy50cmFjZSh7IHNlcnZpY2U6IGFsaWFzIH0sICdzZXJ2aWNlOnByZXBhcmU6YWZ0ZXInKVxuICAgIH0sXG4gICAgLyoqXG4gICAgICogU3RhcnQgYSBzZXJ2aWNlXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgYWxpYXMgICAgICAgVGhlIFNlcnZpY2UncyBhbGlhc1xuICAgICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgc2VydmljZSAgICAgVGhlIHNlcnZpY2UgaW1wbGVtZW50YXRpb25cbiAgICAgKiBAcmV0dXJuICAgIHtQcm9taXNlPHZvaWQ+fVxuICAgICAqL1xuICAgIGFzeW5jIHN0YXJ0KGFsaWFzLCBzZXJ2aWNlKSB7XG4gICAgICB0aGlzLmxvZy50cmFjZSh7IHNlcnZpY2U6IGFsaWFzIH0sICdzZXJ2aWNlOnN0YXJ0OmJlZm9yZScpXG4gICAgICBhd2FpdCBzZXJ2aWNlLnN0YXJ0KHRoaXMuc2VydmljZXNbYWxpYXNdKVxuICAgICAgdGhpcy5sb2cudHJhY2UoeyBzZXJ2aWNlOiBhbGlhcyB9LCAnc2VydmljZTpzdGFydDphZnRlcicpXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBTdG9wIGEgc2VydmljZVxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgIFRoZSBTZXJ2aWNlJ3MgYWxpYXNcbiAgICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIHNlcnZpY2UgICAgIFRoZSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uXG4gICAgICogQHJldHVybiAgICB7UHJvbWlzZTx2b2lkPn1cbiAgICAgKi9cbiAgICBhc3luYyBzdG9wKGFsaWFzLCBzZXJ2aWNlKSB7XG4gICAgICB0aGlzLmxvZy50cmFjZSh7IHNlcnZpY2U6IGFsaWFzIH0sICdzZXJ2aWNlOnN0b3A6YmVmb3JlJylcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5zZXJ2aWNlc1thbGlhc11cbiAgICAgIGRlbGV0ZSB0aGlzLnNlcnZpY2VzW2FsaWFzXVxuICAgICAgYXdhaXQgc2VydmljZS5zdG9wKGluc3RhbmNlKVxuICAgICAgdGhpcy5sb2cudHJhY2UoeyBzZXJ2aWNlOiBhbGlhcyB9LCAnc2VydmljZTpzdG9wOmFmdGVyJylcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBBdGxhc1xuIl19

@@ -42,2 +42,8 @@ "use strict";

});
Object.defineProperty(exports, "mklog", {
enumerable: true,
get: function () {
return _mklog.default;
}
});

@@ -56,3 +62,5 @@ var _componentContainer = _interopRequireDefault(require("./component-container"));

var _mklog = _interopRequireDefault(require("./mklog"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4Lm1qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21wb25lbnRDb250YWluZXIgZnJvbSAnLi9jb21wb25lbnQtY29udGFpbmVyJ1xuaW1wb3J0IG9wdHJlcXVpcmUgZnJvbSAnLi9vcHRyZXF1aXJlJ1xuaW1wb3J0IGV4cG9zZSBmcm9tICcuL2V4cG9zZSdcbmltcG9ydCBkaXNwYXRjaCBmcm9tICcuL2Rpc3BhdGNoJ1xuaW1wb3J0IGNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudCdcbmltcG9ydCBta2NvbmZpZyBmcm9tICcuL21rY29uZmlnJ1xuXG5leHBvcnQge1xuICBDb21wb25lbnRDb250YWluZXIsXG4gIG9wdHJlcXVpcmUsXG4gIGV4cG9zZSxcbiAgZGlzcGF0Y2gsXG4gIGNvbXBvbmVudCxcbiAgbWtjb25maWcsXG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4Lm1qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21wb25lbnRDb250YWluZXIgZnJvbSAnLi9jb21wb25lbnQtY29udGFpbmVyJ1xuaW1wb3J0IG9wdHJlcXVpcmUgZnJvbSAnLi9vcHRyZXF1aXJlJ1xuaW1wb3J0IGV4cG9zZSBmcm9tICcuL2V4cG9zZSdcbmltcG9ydCBkaXNwYXRjaCBmcm9tICcuL2Rpc3BhdGNoJ1xuaW1wb3J0IGNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudCdcbmltcG9ydCBta2NvbmZpZyBmcm9tICcuL21rY29uZmlnJ1xuaW1wb3J0IG1rbG9nIGZyb20gJy4vbWtsb2cnXG5cbmV4cG9ydCB7XG4gIENvbXBvbmVudENvbnRhaW5lcixcbiAgb3B0cmVxdWlyZSxcbiAgZXhwb3NlLFxuICBkaXNwYXRjaCxcbiAgY29tcG9uZW50LFxuICBta2NvbmZpZyxcbiAgbWtsb2csXG59XG4iXX0=

@@ -8,16 +8,14 @@ "use strict";

var _path = _interopRequireDefault(require("path"));
var _lodash = require("lodash");
var _ = require(".");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function mkconfig(config = {}, base = {}) {
if (typeof config === 'string') {
const options = {
optional: true,
normalise: true
};
const modules = {
config: normalise((0, _.optrequire)(_path.default.resolve(this.root, config))),
env: normalise((0, _.optrequire)(_path.default.resolve(this.root, config, 'env', this.env))),
local: normalise((0, _.optrequire)(_path.default.resolve(this.root, config, 'local')))
config: this.require(config, options),
env: this.require(`${config}/env/${this.env}`, options),
local: this.require(`${config}/local`, options)
};

@@ -32,8 +30,4 @@ modules.config = (0, _lodash.merge)(modules.config, modules.env, modules.local);

function normalise(module) {
return module.hasOwnProperty('default') && typeof module.default === 'object' && module.default ? module.default : module;
}
var _default = mkconfig;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1rY29uZmlnLm1qcyJdLCJuYW1lcyI6WyJta2NvbmZpZyIsImNvbmZpZyIsImJhc2UiLCJtb2R1bGVzIiwibm9ybWFsaXNlIiwicmVzb2x2ZSIsInJvb3QiLCJlbnYiLCJsb2NhbCIsIm1vZHVsZSIsImhhc093blByb3BlcnR5IiwiZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUlBOzs7O0FBa0JBLFNBQVNBLFFBQVQsQ0FBa0JDLFNBQVMsRUFBM0IsRUFBK0JDLE9BQU8sRUFBdEMsRUFBMEM7QUFDeEMsTUFBSSxPQUFPRCxNQUFQLEtBQWtCLFFBQXRCLEVBQWdDO0FBQzlCLFVBQU1FLFVBQVU7QUFDZEYsY0FBUUcsVUFBVSxrQkFBVyxjQUFLQyxPQUFMLENBQWEsS0FBS0MsSUFBbEIsRUFBd0JMLE1BQXhCLENBQVgsQ0FBVixDQURNO0FBRWRNLFdBQUtILFVBQVUsa0JBQVcsY0FBS0MsT0FBTCxDQUFhLEtBQUtDLElBQWxCLEVBQXdCTCxNQUF4QixFQUFnQyxLQUFoQyxFQUF1QyxLQUFLTSxHQUE1QyxDQUFYLENBQVYsQ0FGUztBQUdkQyxhQUFPSixVQUFVLGtCQUFXLGNBQUtDLE9BQUwsQ0FBYSxLQUFLQyxJQUFsQixFQUF3QkwsTUFBeEIsRUFBZ0MsT0FBaEMsQ0FBWCxDQUFWO0FBSE8sS0FBaEI7QUFNQUUsWUFBUUYsTUFBUixHQUFpQixtQkFBTUUsUUFBUUYsTUFBZCxFQUFzQkUsUUFBUUksR0FBOUIsRUFBbUNKLFFBQVFLLEtBQTNDLENBQWpCO0FBQ0FMLFlBQVFGLE1BQVIsR0FBaUIsMEJBQVNFLFFBQVFGLE1BQWpCLEVBQXlCQyxJQUF6QixDQUFqQjtBQUVBLFdBQU9DLFFBQVFGLE1BQWY7QUFDRDs7QUFHRCxTQUFPLDBCQUFTQSxNQUFULEVBQWlCQyxJQUFqQixDQUFQO0FBQ0Q7O0FBU0QsU0FBU0UsU0FBVCxDQUFtQkssTUFBbkIsRUFBMkI7QUFDekIsU0FBT0EsT0FBT0MsY0FBUCxDQUFzQixTQUF0QixLQUFvQyxPQUFPRCxPQUFPRSxPQUFkLEtBQTBCLFFBQTlELElBQTBFRixPQUFPRSxPQUFqRixHQUNIRixPQUFPRSxPQURKLEdBRUhGLE1BRko7QUFHRDs7ZUFFY1QsUSIsImZpbGUiOiJta2NvbmZpZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQge1xuICBkZWZhdWx0c0RlZXAgYXMgZGVmYXVsdHMsXG4gIG1lcmdlLFxufSBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBvcHRyZXF1aXJlIH0gZnJvbSAnLidcblxuLyoqXG4gKiBDcmVhdGUgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZyb20gaW5wdXRzXG4gKlxuICogRm9yIHBhdGgtYmFzZWQgY29uZmlncywgd2UgYWRkaXRpb25hbGx5IHdhbnQgdG8gc3VwcG9ydDpcbiAqIC0gbG9hZGluZyBhbmQgYXBwbHlpbmcgZW52aXJvbm1lbnQgb3ZlcnJpZGVzIG9uIHRvcCBvZiB0aGUgYmFzZSBjb25maWdcbiAqIC0gbG9hZGluZyBhbmQgYXBwbHlpbmcgbG9jYWwgKHBlci1tYWNoaW5lKSBvdmVycmlkZXMgb24gdG9wIG9mIHRoZSBjb25maWdcbiAqXG4gKiBUaGlzIHBhdHRlcm4gaXMgZnJlcXVlbnQtZW5vdWdoIHRoYXQgaXQgd2FycmFudHMgZXhwbGljaXQgc3VwcG9ydCBpbiBjb3JlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIGNvbmZpZyAgICAgICAgQmFzZSBjb25maWcgb2JqZWN0LCBvciBhIHN0cmluZyAocGF0aCkgdG8gYSBtb2R1bGUgd2hlcmVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29uZmlnIHNob3VsZCBiZSBsb2RlZCBmcm9tLCByZWxhdGl2ZSB0byByb290XG4gKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIGJhc2UgICAgICAgICAgRGVmYXVsdCB2YWx1ZXMgdG8gYmUgYWRkZWQgdG8gdGhlIGNvbmZpZyBvYmplY3QgaWYgdGhleSBhcmVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNzaW5nIGZyb20gdGhlIGlucHV0IGNvbmZpZ1xuICogQHJldHVybiAgICB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBta2NvbmZpZyhjb25maWcgPSB7fSwgYmFzZSA9IHt9KSB7XG4gIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IG1vZHVsZXMgPSB7XG4gICAgICBjb25maWc6IG5vcm1hbGlzZShvcHRyZXF1aXJlKHBhdGgucmVzb2x2ZSh0aGlzLnJvb3QsIGNvbmZpZykpKSxcbiAgICAgIGVudjogbm9ybWFsaXNlKG9wdHJlcXVpcmUocGF0aC5yZXNvbHZlKHRoaXMucm9vdCwgY29uZmlnLCAnZW52JywgdGhpcy5lbnYpKSksXG4gICAgICBsb2NhbDogbm9ybWFsaXNlKG9wdHJlcXVpcmUocGF0aC5yZXNvbHZlKHRoaXMucm9vdCwgY29uZmlnLCAnbG9jYWwnKSkpLFxuICAgIH1cblxuICAgIG1vZHVsZXMuY29uZmlnID0gbWVyZ2UobW9kdWxlcy5jb25maWcsIG1vZHVsZXMuZW52LCBtb2R1bGVzLmxvY2FsKVxuICAgIG1vZHVsZXMuY29uZmlnID0gZGVmYXVsdHMobW9kdWxlcy5jb25maWcsIGJhc2UpXG5cbiAgICByZXR1cm4gbW9kdWxlcy5jb25maWdcbiAgfVxuXG4gIC8vIEl0J3MganVzdCBhbiBvYmplY3QsIGFwcGx5IGRlZmF1bHRzIGFuZCBHVEZPXG4gIHJldHVybiBkZWZhdWx0cyhjb25maWcsIGJhc2UpXG59XG5cbi8qKlxuICogTm9ybWFsaXNlIGEgbW9kdWxlIGludG8gZWl0aGVyIGEgZGVmYXVsdCBleHBvcnQgb3IgYWxsIHRoZSByZXN0XG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSAgICAge09iamVjdH0gICAgbW9kdWxlICAgIFRoZSBtb2R1bGUgdG8gYmUgbm9ybWFsaXNlZFxuICogQHJldHVybiAgICB7T2JqZWN0fSAgICAgICAgICAgICAgVGhlIG5vcm1hbGlzZWQgbW9kdWxlXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGlzZShtb2R1bGUpIHtcbiAgcmV0dXJuIG1vZHVsZS5oYXNPd25Qcm9wZXJ0eSgnZGVmYXVsdCcpICYmIHR5cGVvZiBtb2R1bGUuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmRlZmF1bHRcbiAgICA/IG1vZHVsZS5kZWZhdWx0XG4gICAgOiBtb2R1bGVcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWtjb25maWdcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1rY29uZmlnLm1qcyJdLCJuYW1lcyI6WyJta2NvbmZpZyIsImNvbmZpZyIsImJhc2UiLCJvcHRpb25zIiwib3B0aW9uYWwiLCJub3JtYWxpc2UiLCJtb2R1bGVzIiwicmVxdWlyZSIsImVudiIsImxvY2FsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBcUJBLFNBQVNBLFFBQVQsQ0FBa0JDLFNBQVMsRUFBM0IsRUFBK0JDLE9BQU8sRUFBdEMsRUFBMEM7QUFDeEMsTUFBSSxPQUFPRCxNQUFQLEtBQWtCLFFBQXRCLEVBQWdDO0FBQzlCLFVBQU1FLFVBQVU7QUFBRUMsZ0JBQVUsSUFBWjtBQUFrQkMsaUJBQVc7QUFBN0IsS0FBaEI7QUFDQSxVQUFNQyxVQUFVO0FBQ2RMLGNBQVEsS0FBS00sT0FBTCxDQUFhTixNQUFiLEVBQXFCRSxPQUFyQixDQURNO0FBRWRLLFdBQUssS0FBS0QsT0FBTCxDQUFjLEdBQUVOLE1BQU8sUUFBTyxLQUFLTyxHQUFJLEVBQXZDLEVBQTBDTCxPQUExQyxDQUZTO0FBR2RNLGFBQU8sS0FBS0YsT0FBTCxDQUFjLEdBQUVOLE1BQU8sUUFBdkIsRUFBZ0NFLE9BQWhDO0FBSE8sS0FBaEI7QUFNQUcsWUFBUUwsTUFBUixHQUFpQixtQkFBTUssUUFBUUwsTUFBZCxFQUFzQkssUUFBUUUsR0FBOUIsRUFBbUNGLFFBQVFHLEtBQTNDLENBQWpCO0FBQ0FILFlBQVFMLE1BQVIsR0FBaUIsMEJBQVNLLFFBQVFMLE1BQWpCLEVBQXlCQyxJQUF6QixDQUFqQjtBQUVBLFdBQU9JLFFBQVFMLE1BQWY7QUFDRDs7QUFHRCxTQUFPLDBCQUFTQSxNQUFULEVBQWlCQyxJQUFqQixDQUFQO0FBQ0Q7O2VBRWNGLFEiLCJmaWxlIjoibWtjb25maWcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBkZWZhdWx0c0RlZXAgYXMgZGVmYXVsdHMsXG4gIG1lcmdlLFxufSBmcm9tICdsb2Rhc2gnXG5cbi8qKlxuICogQ3JlYXRlIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBmcm9tIGlucHV0c1xuICpcbiAqIEZvciBwYXRoLWJhc2VkIGNvbmZpZ3MsIHdlIGFkZGl0aW9uYWxseSB3YW50IHRvIHN1cHBvcnQ6XG4gKiAtIGxvYWRpbmcgYW5kIGFwcGx5aW5nIGVudmlyb25tZW50IG92ZXJyaWRlcyBvbiB0b3Agb2YgdGhlIGJhc2UgY29uZmlnXG4gKiAtIGxvYWRpbmcgYW5kIGFwcGx5aW5nIGxvY2FsIChwZXItbWFjaGluZSkgb3ZlcnJpZGVzIG9uIHRvcCBvZiB0aGUgY29uZmlnXG4gKlxuICogVGhpcyBwYXR0ZXJuIGlzIGZyZXF1ZW50LWVub3VnaCB0aGF0IGl0IHdhcnJhbnRzIGV4cGxpY2l0IHN1cHBvcnQgaW4gY29yZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBjb25maWcgICAgICAgIEJhc2UgY29uZmlnIG9iamVjdCwgb3IgYSBzdHJpbmcgKHBhdGgpIHRvIGEgbW9kdWxlIHdoZXJlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbmZpZyBzaG91bGQgYmUgbG9kZWQgZnJvbSwgcmVsYXRpdmUgdG8gcm9vdFxuICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBiYXNlICAgICAgICAgIERlZmF1bHQgdmFsdWVzIHRvIGJlIGFkZGVkIHRvIHRoZSBjb25maWcgb2JqZWN0IGlmIHRoZXkgYXJlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZyBmcm9tIHRoZSBpbnB1dCBjb25maWdcbiAqIEByZXR1cm4gICAge09iamVjdH1cbiAqL1xuZnVuY3Rpb24gbWtjb25maWcoY29uZmlnID0ge30sIGJhc2UgPSB7fSkge1xuICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBvcHRpb25zID0geyBvcHRpb25hbDogdHJ1ZSwgbm9ybWFsaXNlOiB0cnVlIH1cbiAgICBjb25zdCBtb2R1bGVzID0ge1xuICAgICAgY29uZmlnOiB0aGlzLnJlcXVpcmUoY29uZmlnLCBvcHRpb25zKSxcbiAgICAgIGVudjogdGhpcy5yZXF1aXJlKGAke2NvbmZpZ30vZW52LyR7dGhpcy5lbnZ9YCwgb3B0aW9ucyksXG4gICAgICBsb2NhbDogdGhpcy5yZXF1aXJlKGAke2NvbmZpZ30vbG9jYWxgLCBvcHRpb25zKSxcbiAgICB9XG5cbiAgICBtb2R1bGVzLmNvbmZpZyA9IG1lcmdlKG1vZHVsZXMuY29uZmlnLCBtb2R1bGVzLmVudiwgbW9kdWxlcy5sb2NhbClcbiAgICBtb2R1bGVzLmNvbmZpZyA9IGRlZmF1bHRzKG1vZHVsZXMuY29uZmlnLCBiYXNlKVxuXG4gICAgcmV0dXJuIG1vZHVsZXMuY29uZmlnXG4gIH1cblxuICAvLyBJdCdzIGp1c3QgYW4gb2JqZWN0LCBhcHBseSBkZWZhdWx0cyBhbmQgR1RGT1xuICByZXR1cm4gZGVmYXVsdHMoY29uZmlnLCBiYXNlKVxufVxuXG5leHBvcnQgZGVmYXVsdCBta2NvbmZpZ1xuIl19

@@ -65,2 +65,18 @@ "use strict";

});
it('supports loading Pino log serialisers from module path relative to root', () => {
const atlas = new _.Atlas({
root: __dirname,
env: 'lolenv',
config: {
atlas: {
log: {
serializers: 'democonfig/serialisers'
}
}
}
});
const config = atlas.config.atlas;
expect(config.log.serializers).to.be.an('object');
expect(config.log.serializers).to.have.all.keys(['req', 'res', 'err', 'custom']);
});
it('responds to known methods', () => {

@@ -101,2 +117,2 @@ const atlas = new _.Atlas(opts);

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaS50ZXN0Lm1qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIm9wdHMiLCJiZWZvcmVFYWNoIiwicm9vdCIsIl9fZGlybmFtZSIsIml0IiwiZXhwZWN0IiwidG8iLCJiZSIsImEiLCJub3QiLCJ0aHJvdyIsInNhbmRib3giLCJzdHViIiwicHJvY2VzcyIsImVudiIsInZhbHVlIiwibW9kdWxlcyIsImJhc2UiLCJyZXF1aXJlIiwibG9jYWwiLCJhdGxhcyIsImhhdmUiLCJwcm9wZXJ0eSIsImNvbmZpZyIsImRlZmF1bHQiLCJyZXNwb25kVG8iLCJpbmNsdWRlIiwiYWxsIiwia2V5cyIsImVxdWFsIiwiTk9ERV9FTlYiLCJhbmQiLCJwcmVwYXJlZCIsInN0YXJ0ZWQiLCJsb2ciXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBQ0E7O0FBRUFBLFNBQVMsdUJBQVQsRUFBa0MsTUFBTTtBQUN0QyxNQUFJQyxJQUFKO0FBRUFDLGFBQVcsTUFBTTtBQUNmRCxXQUFPO0FBQUVFLFlBQU1DO0FBQVIsS0FBUDtBQUNELEdBRkQ7QUFLQUMsS0FBRyxRQUFILEVBQWEsTUFBTTtBQUNqQkMsb0JBQWNDLEVBQWQsQ0FBaUJDLEVBQWpCLENBQW9CQyxDQUFwQixDQUFzQixVQUF0QjtBQUNELEdBRkQ7QUFJQUosS0FBRyxvQkFBSCxFQUF5QixNQUFNO0FBQzdCQyxXQUFPLE1BQU0sWUFBVUwsSUFBVixDQUFiLEVBQThCTSxFQUE5QixDQUFpQ0csR0FBakMsQ0FBcUNDLEtBQXJDO0FBQ0QsR0FGRDtBQUlBTixLQUFHLCtCQUFILEVBQW9DLE1BQU07QUFDeENDLFdBQU8sTUFBTSxhQUFiLEVBQTBCQyxFQUExQixDQUE2QkksS0FBN0IseUJBQW1ELG1DQUFuRDtBQUNELEdBRkQ7QUFJQU4sS0FBRyx5REFBSCxFQUE4RCxZQUFXO0FBRXZFLFNBQUtPLE9BQUwsQ0FBYUMsSUFBYixDQUFrQkMsUUFBUUMsR0FBMUIsRUFBK0IsVUFBL0IsRUFBMkNDLEtBQTNDLENBQWlELEVBQWpEO0FBQ0FW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LFdBQU9lLEtBQVAsRUFBY2QsRUFBZCxDQUFpQmUsSUFBakIsQ0FBc0JDLFFBQXRCLENBQStCLEtBQS9CO0FBQ0FqQixXQUFPZSxNQUFNYyxHQUFiLEVBQWtCNUIsRUFBbEIsQ0FBcUJtQixTQUFyQixDQUErQixPQUEvQjtBQUNBcEIsV0FBT2UsTUFBTWMsR0FBYixFQUFrQjVCLEVBQWxCLENBQXFCbUIsU0FBckIsQ0FBK0IsTUFBL0I7QUFDQXBCLFdBQU9lLE1BQU1jLEdBQWIsRUFBa0I1QixFQUFsQixDQUFxQm1CLFNBQXJCLENBQStCLE1BQS9CO0FBQ0FwQixXQUFPZSxNQUFNYyxHQUFiLEVBQWtCNUIsRUFBbEIsQ0FBcUJtQixTQUFyQixDQUErQixPQUEvQjtBQUNELEdBUkQ7QUFVQXJCLEtBQUcsaUNBQUgsRUFBc0MsTUFBTTtBQUMxQyxVQUFNZ0IsUUFBUSxZQUFVcEIsSUFBVixDQUFkO0FBRUFLLFdBQU8sTUFBTTtBQUNYZSxZQUFNWSxRQUFOLEdBQWlCLElBQWpCO0FBQ0QsS0FGRCxFQUVHMUIsRUFGSCxDQUVNSSxLQUZOO0FBR0QsR0FORDtBQVFBTixLQUFHLGdDQUFILEVBQXFDLE1BQU07QUFDekMsVUFBTWdCLFFBQVEsWUFBVXBCLElBQVYsQ0FBZDtBQUVBSyxXQUFPLE1BQU07QUFDWGUsWUFBTWEsT0FBTixHQUFnQixJQUFoQjtBQUNELEtBRkQsRUFFRzNCLEVBRkgsQ0FFTUksS0FGTjtBQUdELEdBTkQ7QUFPRCxDQTdIRCIsImZpbGUiOiJhcGkudGVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0bGFzIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyBGcmFtZXdvcmtFcnJvciB9IGZyb20gJ0BhdGxhcy5qcy9lcnJvcnMnXG5cbmRlc2NyaWJlKCdBdGxhczogYmFzaWNzIGFuZCBBUEknLCAoKSA9PiB7XG4gIGxldCBvcHRzXG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgb3B0cyA9IHsgcm9vdDogX19kaXJuYW1lIH1cbiAgfSlcblxuXG4gIGl0KCdleGlzdHMnLCAoKSA9PiB7XG4gICAgZXhwZWN0KEF0bGFzKS50by5iZS5hKCdmdW5jdGlvbicpXG4gIH0pXG5cbiAgaXQoJ2NhbiBiZSBjb25zdHJ1Y3RlZCcsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4gbmV3IEF0bGFzKG9wdHMpKS50by5ub3QudGhyb3coKVxuICB9KVxuXG4gIGl0KCdyZXF1aXJlcyByb290IG9uIGNvbnN0cnVjdGlvbicsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4gbmV3IEF0bGFzKCkpLnRvLnRocm93KEZyYW1ld29ya0Vycm9yLCAvcm9vdCBtdXN0IGJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkLylcbiAgfSlcblxuICBpdCgndGhyb3dzIHdoZW4gZW52IGlzIG5vdCBwcm92aWRlZCBhbmQgTk9ERV9FTlYgaXMgbm90IHNldCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm9jZXNzLWVudlxuICAgIHRoaXMuc2FuZGJveC5zdHViKHByb2Nlc3MuZW52LCAnTk9ERV9FTlYnKS52YWx1ZSgnJylcbiAgICBleHBlY3QoKCkgPT4gbmV3IEF0bGFzKG9wdHMpKS50by50aHJvdyhGcmFtZXdvcmtFcnJvciwgL2VudiBub3Qgc3BlY2lmaWVkLylcbiAgfSlcblxuICBpdCgnc3VwcG9ydHMgbG9hZGluZyB0aGUgY29uZmlnIGZyb20gbW9kdWxlIHBhdGggcmVsYXRpdmUgdG8gcm9vdCcsICgpID0+IHtcbiAgICAvLyBTYW5pdHkgY2hlY2tcbiAgICBjb25zdCBtb2R1bGVzID0ge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgZ2xvYmFsLXJlcXVpcmUgKi9cbiAgICAgIGJhc2U6IHJlcXVpcmUoJy4vZGVtb2NvbmZpZycpLFxuICAgICAgZW52OiByZXF1aXJlKCcuL2RlbW9jb25maWcvZW52L2xvbGVudicpLFxuICAgICAgbG9jYWw6IHJlcXVpcmUoJy4vZGVtb2NvbmZpZy9sb2NhbCcpLFxuICAgICAgLyogZXNsaW50LWVuYWJsZSBnbG9iYWwtcmVxdWlyZSAqL1xuICAgIH1cbiAgICBleHBlY3QobW9kdWxlcy5iYXNlLmF0bGFzKS50by5oYXZlLnByb3BlcnR5KCdmcm9tQmFzZScsIHRydWUpXG4gICAgZXhwZWN0KG1vZHVsZXMuYmFzZS5hdGxhcykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUVudicsIGZhbHNlKVxuICAgIGV4cGVjdChtb2R1bGVzLmJhc2UuYXRsYXMpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21Mb2NhbCcsIGZhbHNlKVxuICAgIGV4cGVjdChtb2R1bGVzLmVudi5hdGxhcykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUVudicsIHRydWUpXG4gICAgZXhwZWN0KG1vZHVsZXMuZW52LmF0bGFzKS50by5oYXZlLnByb3BlcnR5KCdmcm9tTG9jYWwnLCBmYWxzZSlcbiAgICBleHBlY3QobW9kdWxlcy5sb2NhbC5hdGxhcykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUxvY2FsJywgdHJ1ZSlcblxuICAgIGNvbnN0IGF0bGFzID0gbmV3IEF0bGFzKHtcbiAgICAgIHJvb3Q6IF9fZGlybmFtZSxcbiAgICAgIGVudjogJ2xvbGVudicsXG4gICAgICBjb25maWc6ICdkZW1vY29uZmlnJyxcbiAgICB9KVxuICAgIGNvbnN0IGNvbmZpZyA9IGF0bGFzLmNvbmZpZy5hdGxhc1xuXG4gICAgZXhwZWN0KGNvbmZpZykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUJhc2UnLCB0cnVlKVxuICAgIGV4cGVjdChjb25maWcpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21FbnYnLCB0cnVlKVxuICAgIGV4cGVjdChjb25maWcpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21Mb2NhbCcsIHRydWUpXG4gIH0pXG5cbiAgaXQoJ3ByZWZlcnMgRVMgbW9kdWxlIGRlZmF1bHQgZXhwb3J0IGluIHRoZSBjb25maWcgZmlsZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbW9kdWxlcyA9IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBnbG9iYWwtcmVxdWlyZVxuICAgICAgZW52OiByZXF1aXJlKCcuL2RlbW9jb25maWcvZW52L21vZGVudicpLmRlZmF1bHQsXG4gICAgfVxuXG4gICAgZXhwZWN0KG1vZHVsZXMuZW52LmF0bGFzKS50by5oYXZlLnByb3BlcnR5KCdmcm9tRW52JywgdHJ1ZSlcbiAgICBleHBlY3QobW9kdWxlcy5lbnYuYXRsYXMpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21Mb2NhbCcsIGZhbHNlKVxuXG4gICAgY29uc3QgYXRsYXMgPSBuZXcgQXRsYXMoe1xuICAgICAgcm9vdDogX19kaXJuYW1lLFxuICAgICAgZW52OiAnbW9kZW52JyxcbiAgICAgIGNvbmZpZzogJ2RlbW9jb25maWcnLFxuICAgIH0pXG4gICAgY29uc3QgY29uZmlnID0gYXRsYXMuY29uZmlnLmF0bGFzXG5cbiAgICBleHBlY3QoY29uZmlnKS50by5oYXZlLnByb3BlcnR5KCdmcm9tQmFzZScsIHRydWUpXG4gICAgZXhwZWN0KGNvbmZpZykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUVudicsIHRydWUpXG4gICAgZXhwZWN0KGNvbmZpZykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUxvY2FsJywgdHJ1ZSlcbiAgfSlcblxuICBpdCgncmVzcG9uZHMgdG8ga25vd24gbWV0aG9kcycsICgpID0+IHtcbiAgICBjb25zdCBhdGxhcyA9IG5ldyBBdGxhcyhvcHRzKVxuXG4gICAgZXhwZWN0KGF0bGFzKS50by5yZXNwb25kVG8oJ3ByZXBhcmUnKVxuICAgIGV4cGVjdChhdGxhcykudG8ucmVzcG9uZFRvKCdzdGFydCcpXG4gICAgZXhwZWN0KGF0bGFzKS50by5yZXNwb25kVG8oJ3N0b3AnKVxuICB9KVxuXG4gIGl0KCdoYXMga25vd24gcHVibGljIHByb3BlcnRpZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgYXRsYXMgPSBuZXcgQXRsYXMob3B0cylcblxuICAgIGV4cGVjdChhdGxhcykudG8uaW5jbHVkZS5hbGwua2V5cyhbXG4gICAgICAnYWN0aW9ucycsXG4gICAgICAnc2VydmljZXMnLFxuICAgICAgJ2NvbmZpZycsXG4gICAgICAnbG9nJyxcbiAgICBdKVxuICAgIC8vIEltcGxlbWVudGVkIGFzIGdldHRlcnMsIGFuZCBDaGFpIGRvZXMgbm90IHNlZW0gdG8gd29yayB3aXRoIHRoZW0gd2hlbiBjaGVja2luZyBmb3IgLmtleXMoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm9jZXNzLWVudlxuICAgIGV4cGVjdChhdGxhcy5lbnYpLnRvLmVxdWFsKHByb2Nlc3MuZW52Lk5PREVfRU5WKS5hbmQudG8uYmUuYSgnc3RyaW5nJylcbiAgICBleHBlY3QoYXRsYXMucm9vdCkudG8uZXF1YWwoX19kaXJuYW1lKVxuICAgIGV4cGVjdChhdGxhcy5wcmVwYXJlZCkudG8uZXF1YWwoZmFsc2UpXG4gICAgZXhwZWN0KGF0bGFzLnN0YXJ0ZWQpLnRvLmVxdWFsKGZhbHNlKVxuICB9KVxuXG4gIGl0KCdjb25zdHJ1Y3RzIGEgbG9nIG9iamVjdCBvbiB0aGlzLmxvZycsICgpID0+IHtcbiAgICBjb25zdCBhdGxhcyA9IG5ldyBBdGxhcyhvcHRzKVxuXG4gICAgZXhwZWN0KGF0bGFzKS50by5oYXZlLnByb3BlcnR5KCdsb2cnKVxuICAgIGV4cGVjdChhdGxhcy5sb2cpLnRvLnJlc3BvbmRUbygnZGVidWcnKVxuICAgIGV4cGVjdChhdGxhcy5sb2cpLnRvLnJlc3BvbmRUbygnaW5mbycpXG4gICAgZXhwZWN0KGF0bGFzLmxvZykudG8ucmVzcG9uZFRvKCd3YXJuJylcbiAgICBleHBlY3QoYXRsYXMubG9nKS50by5yZXNwb25kVG8oJ2Vycm9yJylcbiAgfSlcblxuICBpdCgncHJldmVudHMgc2V0dGluZyBhdGxhcy5wcmVwYXJlZCcsICgpID0+IHtcbiAgICBjb25zdCBhdGxhcyA9IG5ldyBBdGxhcyhvcHRzKVxuXG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIGF0bGFzLnByZXBhcmVkID0gdHJ1ZVxuICAgIH0pLnRvLnRocm93KClcbiAgfSlcblxuICBpdCgncHJldmVudHMgc2V0dGluZyBhdGxhcy5zdGFydGVkJywgKCkgPT4ge1xuICAgIGNvbnN0IGF0bGFzID0gbmV3IEF0bGFzKG9wdHMpXG5cbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgYXRsYXMuc3RhcnRlZCA9IHRydWVcbiAgICB9KS50by50aHJvdygpXG4gIH0pXG59KVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaS50ZXN0Lm1qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIm9wdHMiLCJiZWZvcmVFYWNoIiwicm9vdCIsIl9fZGlybmFtZSIsIml0IiwiZXhwZWN0IiwidG8iLCJiZSIsImEiLCJub3QiLCJ0aHJvdyIsInNhbmRib3giLCJzdHViIiwicHJvY2VzcyIsImVudiIsInZhbHVlIiwibW9kdWxlcyIsImJhc2UiLCJyZXF1aXJlIiwibG9jYWwiLCJhdGxhcyIsImhhdmUiLCJwcm9wZXJ0eSIsImNvbmZpZyIsImRlZmF1bHQiLCJsb2ciLCJzZXJpYWxpemVycyIsImFuIiwiYWxsIiwia2V5cyIsInJlc3BvbmRUbyIsImluY2x1ZGUiLCJlcXVhbCIsIk5PREVfRU5WIiwiYW5kIiwicHJlcGFyZWQiLCJzdGFydGVkIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUNBOztBQUVBQSxTQUFTLHVCQUFULEVBQWtDLE1BQU07QUFDdEMsTUFBSUMsSUFBSjtBQUVBQyxhQUFXLE1BQU07QUFDZkQsV0FBTztBQUFFRSxZQUFNQztBQUFSLEtBQVA7QUFDRCxHQUZEO0FBS0FDLEtBQUcsUUFBSCxFQUFhLE1BQU07QUFDakJDLG9CQUFjQyxFQUFkLENBQWlCQyxFQUFqQixDQUFvQkMsQ0FBcEIsQ0FBc0IsVUFBdEI7QUFDRCxHQUZEO0FBSUFKLEtBQUcsb0JBQUgsRUFBeUIsTUFBTTtBQUM3QkMsV0FBTyxNQUFNLFlBQVVMLElBQVYsQ0FBYixFQUE4Qk0sRUFBOUIsQ0FBaUNHLEdBQWpDLENBQXFDQyxLQUFyQztBQUNELEdBRkQ7QUFJQU4sS0FBRywrQkFBSCxFQUFvQyxNQUFNO0FBQ3hDQyxXQUFPLE1BQU0sYUFBYixFQUEwQkMsRUFBMUIsQ0FBNkJJLEtBQTdCLHlCQUFtRCxtQ0FBbkQ7QUFDRCxHQUZEO0FBSUFOLEtBQUcseURBQUgsRUFBOEQsWUFBVztBQUV2RSxTQUFLTyxPQUFMLENBQWFDLElBQWIsQ0FBa0JDLFFBQVFDLEdBQTFCLEVBQStCLFVBQS9CLEVBQTJDQyxLQUEz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LEdBQWlCLElBQWpCO0FBQ0QsS0FGRCxFQUVHN0IsRUFGSCxDQUVNSSxLQUZOO0FBR0QsR0FORDtBQVFBTixLQUFHLGdDQUFILEVBQXFDLE1BQU07QUFDekMsVUFBTWdCLFFBQVEsWUFBVXBCLElBQVYsQ0FBZDtBQUVBSyxXQUFPLE1BQU07QUFDWGUsWUFBTWdCLE9BQU4sR0FBZ0IsSUFBaEI7QUFDRCxLQUZELEVBRUc5QixFQUZILENBRU1JLEtBRk47QUFHRCxHQU5EO0FBT0QsQ0FwSkQiLCJmaWxlIjoiYXBpLnRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdGxhcyB9IGZyb20gJy4uJ1xuaW1wb3J0IHsgRnJhbWV3b3JrRXJyb3IgfSBmcm9tICdAYXRsYXMuanMvZXJyb3JzJ1xuXG5kZXNjcmliZSgnQXRsYXM6IGJhc2ljcyBhbmQgQVBJJywgKCkgPT4ge1xuICBsZXQgb3B0c1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG9wdHMgPSB7IHJvb3Q6IF9fZGlybmFtZSB9XG4gIH0pXG5cblxuICBpdCgnZXhpc3RzJywgKCkgPT4ge1xuICAgIGV4cGVjdChBdGxhcykudG8uYmUuYSgnZnVuY3Rpb24nKVxuICB9KVxuXG4gIGl0KCdjYW4gYmUgY29uc3RydWN0ZWQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KCgpID0+IG5ldyBBdGxhcyhvcHRzKSkudG8ubm90LnRocm93KClcbiAgfSlcblxuICBpdCgncmVxdWlyZXMgcm9vdCBvbiBjb25zdHJ1Y3Rpb24nLCAoKSA9PiB7XG4gICAgZXhwZWN0KCgpID0+IG5ldyBBdGxhcygpKS50by50aHJvdyhGcmFtZXdvcmtFcnJvciwgL3Jvb3QgbXVzdCBiZSBleHBsaWNpdGx5IHNwZWNpZmllZC8pXG4gIH0pXG5cbiAgaXQoJ3Rocm93cyB3aGVuIGVudiBpcyBub3QgcHJvdmlkZWQgYW5kIE5PREVfRU5WIGlzIG5vdCBzZXQnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvY2Vzcy1lbnZcbiAgICB0aGlzLnNhbmRib3guc3R1Yihwcm9jZXNzLmVudiwgJ05PREVfRU5WJykudmFsdWUoJycpXG4gICAgZXhwZWN0KCgpID0+IG5ldyBBdGxhcyhvcHRzKSkudG8udGhyb3coRnJhbWV3b3JrRXJyb3IsIC9lbnYgbm90IHNwZWNpZmllZC8pXG4gIH0pXG5cbiAgaXQoJ3N1cHBvcnRzIGxvYWRpbmcgdGhlIGNvbmZpZyBmcm9tIG1vZHVsZSBwYXRoIHJlbGF0aXZlIHRvIHJvb3QnLCAoKSA9PiB7XG4gICAgLy8gU2FuaXR5IGNoZWNrXG4gICAgY29uc3QgbW9kdWxlcyA9IHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIGdsb2JhbC1yZXF1aXJlICovXG4gICAgICBiYXNlOiByZXF1aXJlKCcuL2RlbW9jb25maWcnKSxcbiAgICAgIGVudjogcmVxdWlyZSgnLi9kZW1vY29uZmlnL2Vudi9sb2xlbnYnKSxcbiAgICAgIGxvY2FsOiByZXF1aXJlKCcuL2RlbW9jb25maWcvbG9jYWwnKSxcbiAgICAgIC8qIGVzbGludC1lbmFibGUgZ2xvYmFsLXJlcXVpcmUgKi9cbiAgICB9XG4gICAgZXhwZWN0KG1vZHVsZXMuYmFzZS5hdGxhcykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUJhc2UnLCB0cnVlKVxuICAgIGV4cGVjdChtb2R1bGVzLmJhc2UuYXRsYXMpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21FbnYnLCBmYWxzZSlcbiAgICBleHBlY3QobW9kdWxlcy5iYXNlLmF0bGFzKS50by5oYXZlLnByb3BlcnR5KCdmcm9tTG9jYWwnLCBmYWxzZSlcbiAgICBleHBlY3QobW9kdWxlcy5lbnYuYXRsYXMpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21FbnYnLCB0cnVlKVxuICAgIGV4cGVjdChtb2R1bGVzLmVudi5hdGxhcykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUxvY2FsJywgZmFsc2UpXG4gICAgZXhwZWN0KG1vZHVsZXMubG9jYWwuYXRsYXMpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21Mb2NhbCcsIHRydWUpXG5cbiAgICBjb25zdCBhdGxhcyA9IG5ldyBBdGxhcyh7XG4gICAgICByb290OiBfX2Rpcm5hbWUsXG4gICAgICBlbnY6ICdsb2xlbnYnLFxuICAgICAgY29uZmlnOiAnZGVtb2NvbmZpZycsXG4gICAgfSlcbiAgICBjb25zdCBjb25maWcgPSBhdGxhcy5jb25maWcuYXRsYXNcblxuICAgIGV4cGVjdChjb25maWcpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21CYXNlJywgdHJ1ZSlcbiAgICBleHBlY3QoY29uZmlnKS50by5oYXZlLnByb3BlcnR5KCdmcm9tRW52JywgdHJ1ZSlcbiAgICBleHBlY3QoY29uZmlnKS50by5oYXZlLnByb3BlcnR5KCdmcm9tTG9jYWwnLCB0cnVlKVxuICB9KVxuXG4gIGl0KCdwcmVmZXJzIEVTIG1vZHVsZSBkZWZhdWx0IGV4cG9ydCBpbiB0aGUgY29uZmlnIGZpbGVzJywgKCkgPT4ge1xuICAgIGNvbnN0IG1vZHVsZXMgPSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZ2xvYmFsLXJlcXVpcmVcbiAgICAgIGVudjogcmVxdWlyZSgnLi9kZW1vY29uZmlnL2Vudi9tb2RlbnYnKS5kZWZhdWx0LFxuICAgIH1cblxuICAgIGV4cGVjdChtb2R1bGVzLmVudi5hdGxhcykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUVudicsIHRydWUpXG4gICAgZXhwZWN0KG1vZHVsZXMuZW52LmF0bGFzKS50by5oYXZlLnByb3BlcnR5KCdmcm9tTG9jYWwnLCBmYWxzZSlcblxuICAgIGNvbnN0IGF0bGFzID0gbmV3IEF0bGFzKHtcbiAgICAgIHJvb3Q6IF9fZGlybmFtZSxcbiAgICAgIGVudjogJ21vZGVudicsXG4gICAgICBjb25maWc6ICdkZW1vY29uZmlnJyxcbiAgICB9KVxuICAgIGNvbnN0IGNvbmZpZyA9IGF0bGFzLmNvbmZpZy5hdGxhc1xuXG4gICAgZXhwZWN0KGNvbmZpZykudG8uaGF2ZS5wcm9wZXJ0eSgnZnJvbUJhc2UnLCB0cnVlKVxuICAgIGV4cGVjdChjb25maWcpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21FbnYnLCB0cnVlKVxuICAgIGV4cGVjdChjb25maWcpLnRvLmhhdmUucHJvcGVydHkoJ2Zyb21Mb2NhbCcsIHRydWUpXG4gIH0pXG5cbiAgaXQoJ3N1cHBvcnRzIGxvYWRpbmcgUGlubyBsb2cgc2VyaWFsaXNlcnMgZnJvbSBtb2R1bGUgcGF0aCByZWxhdGl2ZSB0byByb290JywgKCkgPT4ge1xuICAgIGNvbnN0IGF0bGFzID0gbmV3IEF0bGFzKHtcbiAgICAgIHJvb3Q6IF9fZGlybmFtZSxcbiAgICAgIGVudjogJ2xvbGVudicsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgYXRsYXM6IHtcbiAgICAgICAgICBsb2c6IHtcbiAgICAgICAgICAgIHNlcmlhbGl6ZXJzOiAnZGVtb2NvbmZpZy9zZXJpYWxpc2VycycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSlcbiAgICBjb25zdCBjb25maWcgPSBhdGxhcy5jb25maWcuYXRsYXNcblxuICAgIGV4cGVjdChjb25maWcubG9nLnNlcmlhbGl6ZXJzKS50by5iZS5hbignb2JqZWN0JylcbiAgICBleHBlY3QoY29uZmlnLmxvZy5zZXJpYWxpemVycykudG8uaGF2ZS5hbGwua2V5cyhbXG4gICAgICAncmVxJyxcbiAgICAgICdyZXMnLFxuICAgICAgJ2VycicsXG4gICAgICAnY3VzdG9tJyxcbiAgICBdKVxuICB9KVxuXG4gIGl0KCdyZXNwb25kcyB0byBrbm93biBtZXRob2RzJywgKCkgPT4ge1xuICAgIGNvbnN0IGF0bGFzID0gbmV3IEF0bGFzKG9wdHMpXG5cbiAgICBleHBlY3QoYXRsYXMpLnRvLnJlc3BvbmRUbygncHJlcGFyZScpXG4gICAgZXhwZWN0KGF0bGFzKS50by5yZXNwb25kVG8oJ3N0YXJ0JylcbiAgICBleHBlY3QoYXRsYXMpLnRvLnJlc3BvbmRUbygnc3RvcCcpXG4gIH0pXG5cbiAgaXQoJ2hhcyBrbm93biBwdWJsaWMgcHJvcGVydGllcycsICgpID0+IHtcbiAgICBjb25zdCBhdGxhcyA9IG5ldyBBdGxhcyhvcHRzKVxuXG4gICAgZXhwZWN0KGF0bGFzKS50by5pbmNsdWRlLmFsbC5rZXlzKFtcbiAgICAgICdhY3Rpb25zJyxcbiAgICAgICdzZXJ2aWNlcycsXG4gICAgICAnY29uZmlnJyxcbiAgICAgICdsb2cnLFxuICAgIF0pXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgZ2V0dGVycywgYW5kIENoYWkgZG9lcyBub3Qgc2VlbSB0byB3b3JrIHdpdGggdGhlbSB3aGVuIGNoZWNraW5nIGZvciAua2V5cygpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb2Nlc3MtZW52XG4gICAgZXhwZWN0KGF0bGFzLmVudikudG8uZXF1YWwocHJvY2Vzcy5lbnYuTk9ERV9FTlYpLmFuZC50by5iZS5hKCdzdHJpbmcnKVxuICAgIGV4cGVjdChhdGxhcy5yb290KS50by5lcXVhbChfX2Rpcm5hbWUpXG4gICAgZXhwZWN0KGF0bGFzLnByZXBhcmVkKS50by5lcXVhbChmYWxzZSlcbiAgICBleHBlY3QoYXRsYXMuc3RhcnRlZCkudG8uZXF1YWwoZmFsc2UpXG4gIH0pXG5cbiAgaXQoJ2NvbnN0cnVjdHMgYSBsb2cgb2JqZWN0IG9uIHRoaXMubG9nJywgKCkgPT4ge1xuICAgIGNvbnN0IGF0bGFzID0gbmV3IEF0bGFzKG9wdHMpXG5cbiAgICBleHBlY3QoYXRsYXMpLnRvLmhhdmUucHJvcGVydHkoJ2xvZycpXG4gICAgZXhwZWN0KGF0bGFzLmxvZykudG8ucmVzcG9uZFRvKCdkZWJ1ZycpXG4gICAgZXhwZWN0KGF0bGFzLmxvZykudG8ucmVzcG9uZFRvKCdpbmZvJylcbiAgICBleHBlY3QoYXRsYXMubG9nKS50by5yZXNwb25kVG8oJ3dhcm4nKVxuICAgIGV4cGVjdChhdGxhcy5sb2cpLnRvLnJlc3BvbmRUbygnZXJyb3InKVxuICB9KVxuXG4gIGl0KCdwcmV2ZW50cyBzZXR0aW5nIGF0bGFzLnByZXBhcmVkJywgKCkgPT4ge1xuICAgIGNvbnN0IGF0bGFzID0gbmV3IEF0bGFzKG9wdHMpXG5cbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgYXRsYXMucHJlcGFyZWQgPSB0cnVlXG4gICAgfSkudG8udGhyb3coKVxuICB9KVxuXG4gIGl0KCdwcmV2ZW50cyBzZXR0aW5nIGF0bGFzLnN0YXJ0ZWQnLCAoKSA9PiB7XG4gICAgY29uc3QgYXRsYXMgPSBuZXcgQXRsYXMob3B0cylcblxuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBhdGxhcy5zdGFydGVkID0gdHJ1ZVxuICAgIH0pLnRvLnRocm93KClcbiAgfSlcbn0pXG4iXX0=

@@ -51,3 +51,20 @@ "use strict";

});
describe('normalise: true', () => {
it('returns the `default` export if it exists', () => {
const contents = atlas.require('democonfig/mixed-exports', {
normalise: true
});
expect(contents).to.have.property('default', true);
});
it('returns the named exports if `default` export does not exist', () => {
const contents = atlas.require('democonfig', {
normalise: true
});
expect(contents).to.have.property('atlas');
expect(contents.atlas).to.be.an('object');
});
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlcXVpcmUudGVzdC5tanMiXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJhdGxhcyIsImJlZm9yZUVhY2giLCJyb290IiwiX19kaXJuYW1lIiwiaXQiLCJleHBlY3QiLCJ0byIsInJlc3BvbmRUbyIsImNvbmZpZyIsInJlcXVpcmUiLCJlcXVhbCIsImRlbW9jb25maWciLCJ0aHJvdyIsIm9wdGlvbmFsIiwibm90IiwiY29udGVudHMiLCJiZSIsImFuIiwiT2JqZWN0Iiwia2V5cyIsImhhdmUiLCJsZW5ndGgiLCJhYnNvbHV0ZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFDQTs7OztBQUVBQSxTQUFTLGtCQUFULEVBQTZCLE1BQU07QUFDakMsTUFBSUMsS0FBSjtBQUVBQyxhQUFXLE1BQU07QUFDZkQsWUFBUSxZQUFVO0FBQUVFLFlBQU1DO0FBQVIsS0FBVixDQUFSO0FBQ0QsR0FGRDtBQUtBQyxLQUFHLFFBQUgsRUFBYSxNQUFNO0FBQ2pCQyxXQUFPTCxLQUFQLEVBQWNNLEVBQWQsQ0FBaUJDLFNBQWpCLENBQTJCLFNBQTNCO0FBQ0QsR0FGRDtBQUlBSCxLQUFHLHdDQUFILEVBQTZDLE1BQU07QUFDakQsVUFBTUksU0FBU1IsTUFBTVMsT0FBTixDQUFjLFlBQWQsQ0FBZjs7QUFFQUosV0FBT0csTUFBUCxFQUFlRixFQUFmLENBQWtCSSxLQUFsQixDQUF3QkMsVUFBeEI7QUFDRCxHQUpEO0FBTUFQLEtBQUcscUNBQUgsRUFBMEMsTUFBTTtBQUM5Q0MsV0FBTyxNQUFNTCxNQUFNUyxPQUFOLENBQWMsV0FBZCxDQUFiLEVBQXlDSCxFQUF6QyxDQUE0Q00sS0FBNUMsQ0FBa0Qsb0JBQWxEO0FBQ0QsR0FGRDtBQUtBYixXQUFTLGdCQUFULEVBQTJCLE1BQU07QUFDL0JLLE9BQUcsZ0JBQUgsRUFBcUIsTUFBTTtBQUN6QkMsYUFBTyxNQUFNTCxNQUFNUyxPQUFOLENBQWMsV0FBZCxFQUEyQjtBQUFFSSxrQkFBVTtBQUFaLE9BQTNCLENBQWIsRUFBNkRQLEVBQTdELENBQWdFUSxHQUFoRSxDQUFvRUYsS0FBcEU7QUFDRCxLQUZEO0FBSUFSLE9BQUcsc0JBQUgsRUFBMkIsTUFBTTtBQUMvQixZQUFNVyxXQUFXZixNQUFNUyxPQUFOLENBQWMsV0FBZCxFQUEyQjtBQUFFSSxrQkFBVTtBQUFaLE9BQTNCLENBQWpCOztBQUVBUixhQUFPVSxRQUFQLEVBQWlCVCxFQUFqQixDQUFvQlUsRUFBcEIsQ0FBdUJDLEVBQXZCLENBQTBCLFFBQTFCO0FBQ0FaLGFBQU9hLE9BQU9DLElBQVAsQ0FBWUosUUFBWixDQUFQLEVBQThCVCxFQUE5QixDQUFpQ2MsSUFBakMsQ0FBc0NDLE1BQXRDLENBQTZDLENBQTdDO0FBQ0QsS0FMRDtBQU1ELEdBWEQ7QUFjQXRCLFdBQVMsZ0JBQVQsRUFBMkIsTUFBTTtBQUMvQkssT0FBRyxvQ0FBSCxFQUF5QyxNQUFNO0FBQzdDLFlBQU1XLFdBQVdmLE1BQU1TLE9BQU4sQ0FBYyxNQUFkLEVBQXNCO0FBQUVhLGtCQUFVO0FBQVosT0FBdEIsQ0FBakI7O0FBRUFqQixhQUFPVSxRQUFQLEVBQWlCVCxFQUFqQixDQUFvQlUsRUFBcEIsQ0FBdUJDLEVBQXZCLENBQTBCLFFBQTFCO0FBQ0QsS0FKRDtBQUtELEdBTkQ7QUFPRCxDQTVDRCIsImZpbGUiOiJyZXF1aXJlLnRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdGxhcyB9IGZyb20gJy4uJ1xuaW1wb3J0ICogYXMgZGVtb2NvbmZpZyBmcm9tICcuL2RlbW9jb25maWcnXG5cbmRlc2NyaWJlKCdBdGxhczo6cmVxdWlyZSgpJywgKCkgPT4ge1xuICBsZXQgYXRsYXNcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBhdGxhcyA9IG5ldyBBdGxhcyh7IHJvb3Q6IF9fZGlybmFtZSB9KVxuICB9KVxuXG5cbiAgaXQoJ2V4aXN0cycsICgpID0+IHtcbiAgICBleHBlY3QoYXRsYXMpLnRvLnJlc3BvbmRUbygncmVxdWlyZScpXG4gIH0pXG5cbiAgaXQoJ3JlcXVpcmVzIGEgbW9kdWxlIHJlbGF0aXZlIHRvIHRoZSByb290JywgKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGF0bGFzLnJlcXVpcmUoJ2RlbW9jb25maWcnKVxuXG4gICAgZXhwZWN0KGNvbmZpZykudG8uZXF1YWwoZGVtb2NvbmZpZylcbiAgfSlcblxuICBpdCgndGhyb3dzIGlmIHRoZSBtb2R1bGUgZG9lcyBub3QgZXhpc3QnLCAoKSA9PiB7XG4gICAgZXhwZWN0KCgpID0+IGF0bGFzLnJlcXVpcmUoJ2xvbG1vZHVsZScpKS50by50aHJvdygvQ2Fubm90IGZpbmQgbW9kdWxlLylcbiAgfSlcblxuXG4gIGRlc2NyaWJlKCdvcHRpb25hbDogdHJ1ZScsICgpID0+IHtcbiAgICBpdCgnZG9lcyBub3QgdGhyb3cnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4gYXRsYXMucmVxdWlyZSgnbG9sbW9kdWxlJywgeyBvcHRpb25hbDogdHJ1ZSB9KSkudG8ubm90LnRocm93KClcbiAgICB9KVxuXG4gICAgaXQoJ3JldHVybnMgZW1wdHkgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgY29udGVudHMgPSBhdGxhcy5yZXF1aXJlKCdsb2xtb2R1bGUnLCB7IG9wdGlvbmFsOiB0cnVlIH0pXG5cbiAgICAgIGV4cGVjdChjb250ZW50cykudG8uYmUuYW4oJ29iamVjdCcpXG4gICAgICBleHBlY3QoT2JqZWN0LmtleXMoY29udGVudHMpKS50by5oYXZlLmxlbmd0aCgwKVxuICAgIH0pXG4gIH0pXG5cblxuICBkZXNjcmliZSgnYWJzb2x1dGU6IHRydWUnLCAoKSA9PiB7XG4gICAgaXQoJ2xvYWRzIHRoZSBtb2R1bGUgZnJvbSBub2RlX21vZHVsZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb250ZW50cyA9IGF0bGFzLnJlcXVpcmUoJ2NoYWknLCB7IGFic29sdXRlOiB0cnVlIH0pXG5cbiAgICAgIGV4cGVjdChjb250ZW50cykudG8uYmUuYW4oJ29iamVjdCcpXG4gICAgfSlcbiAgfSlcbn0pXG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlcXVpcmUudGVzdC5tanMiXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJhdGxhcyIsImJlZm9yZUVhY2giLCJyb290IiwiX19kaXJuYW1lIiwiaXQiLCJleHBlY3QiLCJ0byIsInJlc3BvbmRUbyIsImNvbmZpZyIsInJlcXVpcmUiLCJlcXVhbCIsImRlbW9jb25maWciLCJ0aHJvdyIsIm9wdGlvbmFsIiwibm90IiwiY29udGVudHMiLCJiZSIsImFuIiwiT2JqZWN0Iiwia2V5cyIsImhhdmUiLCJsZW5ndGgiLCJhYnNvbHV0ZSIsIm5vcm1hbGlzZSIsInByb3BlcnR5Il0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUNBOzs7O0FBRUFBLFNBQVMsa0JBQVQsRUFBNkIsTUFBTTtBQUNqQyxNQUFJQyxLQUFKO0FBRUFDLGFBQVcsTUFBTTtBQUNmRCxZQUFRLFlBQVU7QUFBRUUsWUFBTUM7QUFBUixLQUFWLENBQVI7QUFDRCxHQUZEO0FBS0FDLEtBQUcsUUFBSCxFQUFhLE1BQU07QUFDakJDLFdBQU9MLEtBQVAsRUFBY00sRUFBZCxDQUFpQkMsU0FBakIsQ0FBMkIsU0FBM0I7QUFDRCxHQUZEO0FBSUFILEtBQUcsd0NBQUgsRUFBNkMsTUFBTTtBQUNqRCxVQUFNSSxTQUFTUixNQUFNUyxPQUFOLENBQWMsWUFBZCxDQUFmOztBQUVBSixXQUFPRyxNQUFQLEVBQWVGLEVBQWYsQ0FBa0JJLEtBQWxCLENBQXdCQyxVQUF4QjtBQUNELEdBSkQ7QUFNQVAsS0FBRyxxQ0FBSCxFQUEwQyxNQUFNO0FBQzlDQyxXQUFPLE1BQU1MLE1BQU1TLE9BQU4sQ0FBYyxXQUFkLENBQWIsRUFBeUNILEVBQXpDLENBQTRDTSxLQUE1QyxDQUFrRCxvQkFBbEQ7QUFDRCxHQUZEO0FBS0FiLFdBQVMsZ0JBQVQsRUFBMkIsTUFBTTtBQUMvQkssT0FBRyxnQkFBSCxFQUFxQixNQUFNO0FBQ3pCQyxhQUFPLE1BQU1MLE1BQU1TLE9BQU4sQ0FBYyxXQUFkLEVBQTJCO0FBQUVJLGtCQUFVO0FBQVosT0FBM0IsQ0FBYixFQUE2RFAsRUFBN0QsQ0FBZ0VRLEdBQWhFLENBQW9FRixLQUFwRTtBQUNELEtBRkQ7QUFJQVIsT0FBRyxzQkFBSCxFQUEyQixNQUFNO0FBQy9CLFlBQU1XLFdBQVdmLE1BQU1TLE9BQU4sQ0FBYyxXQUFkLEVBQTJCO0FBQUVJLGtCQUFVO0FBQVosT0FBM0IsQ0FBakI7O0FBRUFSLGFBQU9VLFFBQVAsRUFBaUJULEVBQWpCLENBQW9CVSxFQUFwQixDQUF1QkMsRUFBdkIsQ0FBMEIsUUFBMUI7QUFDQVosYUFBT2EsT0FBT0MsSUFBUCxDQUFZSixRQUFaLENBQVAsRUFBOEJULEVBQTlCLENBQWlDYyxJQUFqQyxDQUFzQ0MsTUFBdEMsQ0FBNkMsQ0FBN0M7QUFDRCxLQUxEO0FBTUQsR0FYRDtBQWNBdEIsV0FBUyxnQkFBVCxFQUEyQixNQUFNO0FBQy9CSyxPQUFHLG9DQUFILEVBQXlDLE1BQU07QUFDN0MsWUFBTVcsV0FBV2YsTUFBTVMsT0FBTixDQUFjLE1BQWQsRUFBc0I7QUFBRWEsa0JBQVU7QUFBWixPQUF0QixDQUFqQjs7QUFFQWpCLGFBQU9VLFFBQVAsRUFBaUJULEVBQWpCLENBQW9CVSxFQUFwQixDQUF1QkMsRUFBdkIsQ0FBMEIsUUFBMUI7QUFDRCxLQUpEO0FBS0QsR0FORDtBQVNBbEIsV0FBUyxpQkFBVCxFQUE0QixNQUFNO0FBQ2hDSyxPQUFHLDJDQUFILEVBQWdELE1BQU07QUFDcEQsWUFBTVcsV0FBV2YsTUFBTVMsT0FBTixDQUFjLDBCQUFkLEVBQTBDO0FBQUVjLG1CQUFXO0FBQWIsT0FBMUMsQ0FBakI7O0FBRUFsQixhQUFPVSxRQUFQLEVBQWlCVCxFQUFqQixDQUFvQmMsSUFBcEIsQ0FBeUJJLFFBQXpCLENBQWtDLFNBQWxDLEVBQTZDLElBQTdDO0FBQ0QsS0FKRDtBQU1BcEIsT0FBRyw4REFBSCxFQUFtRSxNQUFNO0FBQ3ZFLFlBQU1XLFdBQVdmLE1BQU1TLE9BQU4sQ0FBYyxZQUFkLEVBQTRCO0FBQUVjLG1CQUFXO0FBQWIsT0FBNUIsQ0FBakI7O0FBRUFsQixhQUFPVSxRQUFQLEVBQWlCVCxFQUFqQixDQUFvQmMsSUFBcEIsQ0FBeUJJLFFBQXpCLENBQWtDLE9BQWxDO0FBQ0FuQixhQUFPVSxTQUFTZixLQUFoQixFQUF1Qk0sRUFBdkIsQ0FBMEJVLEVBQTFCLENBQTZCQyxFQUE3QixDQUFnQyxRQUFoQztBQUNELEtBTEQ7QUFNRCxHQWJEO0FBY0QsQ0E1REQiLCJmaWxlIjoicmVxdWlyZS50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXRsYXMgfSBmcm9tICcuLidcbmltcG9ydCAqIGFzIGRlbW9jb25maWcgZnJvbSAnLi9kZW1vY29uZmlnJ1xuXG5kZXNjcmliZSgnQXRsYXM6OnJlcXVpcmUoKScsICgpID0+IHtcbiAgbGV0IGF0bGFzXG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgYXRsYXMgPSBuZXcgQXRsYXMoeyByb290OiBfX2Rpcm5hbWUgfSlcbiAgfSlcblxuXG4gIGl0KCdleGlzdHMnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGF0bGFzKS50by5yZXNwb25kVG8oJ3JlcXVpcmUnKVxuICB9KVxuXG4gIGl0KCdyZXF1aXJlcyBhIG1vZHVsZSByZWxhdGl2ZSB0byB0aGUgcm9vdCcsICgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSBhdGxhcy5yZXF1aXJlKCdkZW1vY29uZmlnJylcblxuICAgIGV4cGVjdChjb25maWcpLnRvLmVxdWFsKGRlbW9jb25maWcpXG4gIH0pXG5cbiAgaXQoJ3Rocm93cyBpZiB0aGUgbW9kdWxlIGRvZXMgbm90IGV4aXN0JywgKCkgPT4ge1xuICAgIGV4cGVjdCgoKSA9PiBhdGxhcy5yZXF1aXJlKCdsb2xtb2R1bGUnKSkudG8udGhyb3coL0Nhbm5vdCBmaW5kIG1vZHVsZS8pXG4gIH0pXG5cblxuICBkZXNjcmliZSgnb3B0aW9uYWw6IHRydWUnLCAoKSA9PiB7XG4gICAgaXQoJ2RvZXMgbm90IHRocm93JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KCgpID0+IGF0bGFzLnJlcXVpcmUoJ2xvbG1vZHVsZScsIHsgb3B0aW9uYWw6IHRydWUgfSkpLnRvLm5vdC50aHJvdygpXG4gICAgfSlcblxuICAgIGl0KCdyZXR1cm5zIGVtcHR5IG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRlbnRzID0gYXRsYXMucmVxdWlyZSgnbG9sbW9kdWxlJywgeyBvcHRpb25hbDogdHJ1ZSB9KVxuXG4gICAgICBleHBlY3QoY29udGVudHMpLnRvLmJlLmFuKCdvYmplY3QnKVxuICAgICAgZXhwZWN0KE9iamVjdC5rZXlzKGNvbnRlbnRzKSkudG8uaGF2ZS5sZW5ndGgoMClcbiAgICB9KVxuICB9KVxuXG5cbiAgZGVzY3JpYmUoJ2Fic29sdXRlOiB0cnVlJywgKCkgPT4ge1xuICAgIGl0KCdsb2FkcyB0aGUgbW9kdWxlIGZyb20gbm9kZV9tb2R1bGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgY29udGVudHMgPSBhdGxhcy5yZXF1aXJlKCdjaGFpJywgeyBhYnNvbHV0ZTogdHJ1ZSB9KVxuXG4gICAgICBleHBlY3QoY29udGVudHMpLnRvLmJlLmFuKCdvYmplY3QnKVxuICAgIH0pXG4gIH0pXG5cblxuICBkZXNjcmliZSgnbm9ybWFsaXNlOiB0cnVlJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIHRoZSBgZGVmYXVsdGAgZXhwb3J0IGlmIGl0IGV4aXN0cycsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRlbnRzID0gYXRsYXMucmVxdWlyZSgnZGVtb2NvbmZpZy9taXhlZC1leHBvcnRzJywgeyBub3JtYWxpc2U6IHRydWUgfSlcblxuICAgICAgZXhwZWN0KGNvbnRlbnRzKS50by5oYXZlLnByb3BlcnR5KCdkZWZhdWx0JywgdHJ1ZSlcbiAgICB9KVxuXG4gICAgaXQoJ3JldHVybnMgdGhlIG5hbWVkIGV4cG9ydHMgaWYgYGRlZmF1bHRgIGV4cG9ydCBkb2VzIG5vdCBleGlzdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRlbnRzID0gYXRsYXMucmVxdWlyZSgnZGVtb2NvbmZpZycsIHsgbm9ybWFsaXNlOiB0cnVlIH0pXG5cbiAgICAgIGV4cGVjdChjb250ZW50cykudG8uaGF2ZS5wcm9wZXJ0eSgnYXRsYXMnKVxuICAgICAgZXhwZWN0KGNvbnRlbnRzLmF0bGFzKS50by5iZS5hbignb2JqZWN0JylcbiAgICB9KVxuICB9KVxufSlcbiJdfQ==

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

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc