Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

json2jsii

Package Overview
Dependencies
Maintainers
1
Versions
879
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

json2jsii - npm Package Compare versions

Comparing version 0.1.3 to 0.1.4

7

CHANGELOG.md

@@ -5,2 +5,9 @@ # Changelog

### [0.1.4](https://github.com/joe/schmo/compare/v0.1.3...v0.1.4) (2020-07-16)
### Bug Fixes
* Pascal case for fully-lowercase types ([#2](https://github.com/joe/schmo/issues/2)) ([c1e9170](https://github.com/joe/schmo/commit/c1e91708b6e08120bfb61b7927927ed978d63a51))
### [0.1.3](https://github.com/joe/schmo/compare/v0.1.2...v0.1.3) (2020-07-15)

@@ -7,0 +14,0 @@

3

lib/type-generator.js

@@ -44,2 +44,3 @@ "use strict";

} while (m);
result = result.replace(/^./, result[0].toUpperCase()); // ensure first letter is capitalized
return result;

@@ -298,2 +299,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZS1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaUNBQThCO0FBRTlCLHVDQUF1QztBQUN2QywyQ0FBdUM7QUFFdkMsTUFBTSxlQUFlLEdBQUcsQ0FBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUUsQ0FBQztBQUNyRSxNQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDO0FBZ0I1Qzs7R0FFRztBQUNILE1BQWEsYUFBYTtJQThCeEI7Ozs7T0FJRztJQUNILFlBQVksVUFBZ0MsRUFBRzs7UUFWOUIsZ0JBQVcsR0FBNkMsRUFBRyxDQUFDO1FBQzVELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQVVoRCxJQUFJLENBQUMsT0FBTyxTQUFHLE9BQU8sQ0FBQyxPQUFPLG1DQUFJLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxTQUFHLE9BQU8sQ0FBQyxXQUFXLG1DQUFJLEVBQUcsQ0FBQztJQUNoRCxDQUFDO0lBcENEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFnQjtRQUM5QyxpRkFBaUY7UUFDakYsTUFBTSxFQUFFLEdBQUcsdUJBQXVCLENBQUM7UUFDbkMsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxDQUFDO1FBQ04sR0FBRztZQUNELENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxFQUFFO2dCQUNMLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLG1DQUFtQztnQkFDNUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsc0RBQXNEO2dCQUN4RSxN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bEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0IsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNoQixPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQTlWRCxzQ0E4VkM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLElBQVM7SUFDekMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsQ0FBUztJQUMzQixPQUFPLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSlNPTlNjaGVtYTQgfSBmcm9tICdqc29uLXNjaGVtYSc7XG5pbXBvcnQgeyBDb2RlIH0gZnJvbSAnLi9jb2RlJztcblxuaW1wb3J0ICogYXMgY2FtZWxDYXNlIGZyb20gJ2NhbWVsY2FzZSc7XG5pbXBvcnQgeyBzbmFrZUNhc2UgfSBmcm9tICdzbmFrZS1jYXNlJztcblxuY29uc3QgUFJJTUlUSVZFX1RZUEVTID0gWyAnc3RyaW5nJywgJ251bWJlcicsICdpbnRlZ2VyJywgJ2Jvb2xlYW4nIF07XG5jb25zdCBERUZJTklUSU9OU19QUkVGSVggPSAnIy9kZWZpbml0aW9ucy8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVHZW5lcmF0b3JPcHRpb25zIHtcbiAgLyoqXG4gICAqIFBhdHRlcm5zIG9mIHR5cGUgRlFOcyB0byBleGNsdWRlLlxuICAgKiBAZGVmYXVsdCAtIGluY2x1ZGUgYWxsIHR5cGVzXG4gICAqL1xuICByZWFkb25seSBleGNsdWRlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNjaGVtYSBkZWZpbml0aW9ucyBmb3IgcmVzb2x2aW5nICRyZWZzXG4gICAqIEBkZWZhdWx0IC0gJHJlZnMgYXJlIG5vdCBzdXBwb3J0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGRlZmluaXRpb25zPzogeyBbZGVmOiBzdHJpbmddOiBKU09OU2NoZW1hNCB9O1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyB0eXBlc2NyaXB0IHR5cGVzIGZyb20gSlNPTiBzY2hlbWFzLlxuICovXG5leHBvcnQgY2xhc3MgVHlwZUdlbmVyYXRvciB7XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYWxsLWNhcHMgYWNyb255bXMgKGUuZy4gXCJWUENcIiwgXCJGb29CQVJab29GSUdvb1wiKSB0byBwYXNjYWwgY2FzZVxuICAgKiAoZS5nLiBcIlZwY1wiLCBcIkZvb0Jhclpvb0ZpR29vXCIpLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBub3JtYWxpemVUeXBlTmFtZSh0eXBlTmFtZTogc3RyaW5nKSB7XG4gICAgLy8gc3RhcnQgd2l0aCB0aGUgZnVsbCBzdHJpbmcgYW5kIHRoZW4gdXNlIHRoZSByZWdleCB0byBtYXRjaCBhbGwtY2FwcyBzZXF1ZW5jZXMuXG4gICAgY29uc3QgcmUgPSAvKFtBLVpdKykoPzpbXmEtel18JCkvZztcbiAgICBsZXQgcmVzdWx0ID0gdHlwZU5hbWU7XG4gICAgbGV0IG07XG4gICAgZG8ge1xuICAgICAgbSA9IHJlLmV4ZWModHlwZU5hbWUpO1xuICAgICAgaWYgKG0pIHtcbiAgICAgICAgY29uc3QgYmVmb3JlID0gcmVzdWx0LnNsaWNlKDAsIG0uaW5kZXgpOyAvLyBhbGwgdGhlIHRleHQgYmVmb3JlIHRoZSBzZXF1ZW5jZVxuICAgICAgICBjb25zdCBjYXAgPSBtWzFdOyAvLyBncm91cCAjMSBtYXRjaGVzIHRoZSBhbGwtY2FwcyBzZXF1ZW5jZSB3ZSBhcmUgYWZ0ZXJcbiAgICAgICAgY29uc3QgcGFzY2FsID0gY2FwWzBdICsgY2FwLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCk7IC8vIGNvbnZlcnQgdG8gcGFzY2FsIGNhc2UgYnkgbG93ZXJjYXNpbmcgYWxsIGJ1dCB0aGUgZmlyc3QgY2hhclxuICAgICAgICBjb25zdCBhZnRlciA9IHJlc3VsdC5zbGljZShtLmluZGV4ICsgcGFzY2FsLmxlbmd0aCk7IC8vIGFsbCB0aGUgdGV4dCBhZnRlciB0aGUgc2VxdWVuY2VcbiAgICAgICAgcmVzdWx0ID0gYmVmb3JlICsgcGFzY2FsICsgYWZ0ZXI7IC8vIGNvbmNhdFxuICAgICAgfVxuICAgIH0gd2hpbGUgKG0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgdHlwZXNUb0VtaXQ6IHsgW25hbWU6IHN0cmluZ106IChjb2RlOiBDb2RlKSA9PiB2b2lkIH0gPSB7IH07XG4gIHByaXZhdGUgcmVhZG9ubHkgZW1pdHRlZFR5cGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXhjbHVkZTogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmaW5pdGlvbnM6IHsgW2RlZjogc3RyaW5nXTogSlNPTlNjaGVtYTQgfTtcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHNjaGVtYSBTY2hlbWEgZGVmaW5pdGlvbnNcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFR5cGVHZW5lcmF0b3JPcHRpb25zID0geyB9KSB7XG4gICAgdGhpcy5leGNsdWRlID0gb3B0aW9ucy5leGNsdWRlID8/IFtdO1xuICAgIHRoaXMuZGVmaW5pdGlvbnMgPSBvcHRpb25zLmRlZmluaXRpb25zID8/IHsgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IGEgdHlwZSBiYXNlZCBvbiBhIEpTT04gc2NoZW1hLlxuICAgKiBAcGFyYW0gdHlwZU5hbWUgVGhlIG5hbWUgb2YgdGggdHlwZVxuICAgKiBAcGFyYW0gZGVmIEpTT04gc2NoZW1hXG4gICAqIEBwYXJhbSBzdHJ1Y3RGcW4gRlFOIGZvciB0aGUgdHlwZSAoZGVmYXVsdHMgdG8gYHR5cGVOYW1lYClcbiAgICovXG4gIHB1YmxpYyBhZGRUeXBlKHR5cGVOYW1lOiBzdHJpbmcsIGRlZjogSlNPTlNjaGVtYTQsIHN0cnVjdEZxbjogc3RyaW5nID0gdHlwZU5hbWUpOiBzdHJpbmcge1xuICAgIC8vIGNhbGxlcnMgZXhwZWN0IHRoYXQgZW1pdCBhIHR5cGUgbmFtZWQgYHR5cGVOYW1lYCBzbyB3ZSBjYW4ndCBjaGFuZ2UgaXQgaGVyZVxuICAgIC8vIGJ1dCBhdCBsZWFzdCB3ZSBjYW4gdmVyaWZ5IGl0J3MgY29ycmVjdC5cbiAgICBpZiAoVHlwZUdlbmVyYXRvci5ub3JtYWxpemVUeXBlTmFtZSh0eXBlTmFtZSkgIT09IHR5cGVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dHlwZU5hbWV9IG11c3QgYmUgbm9ybWFsaXplZCBiZWZvcmUgY2FsbGluZyBlbWl0VHlwZWApO1xuICAgIH1cblxuICAgIGlmIChzdHJ1Y3RGcW4uc3RhcnRzV2l0aChERUZJTklUSU9OU19QUkVGSVgpKSB7XG4gICAgICBzdHJ1Y3RGcW4gPSBzdHJ1Y3RGcW4uc3Vic3RyaW5nKERFRklOSVRJT05TX1BSRUZJWC5sZW5ndGgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRXhjbHVkZWQoc3RydWN0RnFuKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUeXBlICR7c3RydWN0RnFufSBjYW5ub3QgYmUgYWRkZWQgc2luY2UgaXQgbWF0Y2hlcyBvbmUgb2YgdGhlIGV4Y2x1c2lvbiBwYXR0ZXJuc2ApO1xuICAgIH1cblxuICAgIGlmIChkZWYuJHJlZikge1xuICAgICAgcmV0dXJuIHRoaXMudHlwZUZvclJlZihkZWYpO1xuICAgIH1cblxuICAgIC8vIHVuaW9ucyAodW5sZXNzIHRoaXMgaXMgYSBzdHJ1Y3QsIGFuZCB0aGVuIHdlIGp1c3QgaWdub3JlIHRoZSBjb25zdHJhaW50cylcbiAgICBpZiAoZGVmLm9uZU9mIHx8IGRlZi5hbnlPZikge1xuICAgICAgaWYgKHRoaXMuZW1pdFVuaW9uKHR5cGVOYW1lLCBkZWYsIHN0cnVjdEZxbikpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVOYW1lO1xuICAgICAgfVxuXG4gICAgICAvLyBjYXJyeSBvbiwgd2UgY2FuJ3QgcmVwcmVzZW50IHRoaXMgc2NoZW1hIGFzIGEgdW5pb24gKHlldD8pXG4gICAgfVxuXG4gICAgaWYgKGRlZi50eXBlID09PSAnc3RyaW5nJyAmJiBkZWYuZm9ybWF0ID09PSAnZGF0ZS10aW1lJykge1xuICAgICAgcmV0dXJuICdEYXRlJztcbiAgICB9XG4gIFxuICAgIHN3aXRjaCAoZGVmLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOiByZXR1cm4gJ2Jvb2xlYW4nO1xuICAgICAgY2FzZSAnYXJyYXknOiByZXR1cm4gYCR7dGhpcy50eXBlRm9yQXJyYXkodHlwZU5hbWUsIGRlZil9W11gO1xuICAgICAgY2FzZSAnYW55JzogcmV0dXJuICdhbnknO1xuICAgICAgY2FzZSAnbnVsbCc6IHJldHVybiAnYW55JztcbiAgICB9XG5cbiAgICBpZiAoZGVmLnR5cGUgPT09ICdudW1iZXInIHx8IGRlZi50eXBlID09PSAnaW50ZWdlcicpIHtcbiAgICAgIHJldHVybiAnbnVtYmVyJztcbiAgICB9XG5cbiAgICBpZiAoZGVmLnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoZGVmLmZvcm1hdCA9PT0gJ2RhdGUtdGltZScpIHtcbiAgICAgICAgcmV0dXJuICdEYXRlJztcbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVmLmVudW0pICYmIGRlZi5lbnVtLmxlbmd0aCA+IDAgJiYgIWRlZi5lbnVtLmZpbmQoeCA9PiB0eXBlb2YoeCkgIT09ICdzdHJpbmcnKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbWl0RW51bSh0eXBlTmFtZSwgZGVmLCBzdHJ1Y3RGcW4pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gJ3N0cmluZyc7XG4gICAgfVxuICAgIFxuICAgIC8vIG1hcFxuICAgIGlmICghZGVmLnByb3BlcnRpZXMgJiYgZGVmLmFkZGl0aW9uYWxQcm9wZXJ0aWVzICYmIHR5cGVvZihkZWYuYWRkaXRpb25hbFByb3BlcnRpZXMpID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIGB7IFtrZXk6IHN0cmluZ106ICR7dGhpcy50eXBlRm9yUHJvcGVydHkodHlwZU5hbWUsIGRlZi5hZGRpdGlvbmFsUHJvcGVydGllcyl9IH1gO1xuICAgIH1cblxuICAgIC8vIHN0cnVjdFxuICAgIGlmIChkZWYucHJvcGVydGllcykge1xuICAgICAgdGhpcy5lbWl0U3RydWN0KHR5cGVOYW1lLCBkZWYsIHN0cnVjdEZxbilcbiAgICAgIHJldHVybiB0eXBlTmFtZTtcbiAgICB9XG5cbiAgICByZXR1cm4gJ2FueSc7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgY29kZSBvbmNlIHRvIHRoZSBvdXRwdXQgZmlsZS5cbiAgICogQHBhcmFtIHVuaXF1ZWlkIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb2RlIHNuaXBwZXQgKGUuZy4gdGhlIG5hbWUgb2YgdGhlIHR5cGUpXG4gICAqIEBwYXJhbSBjb2RlRW1pdHRlciBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gZW1pdCB0aGUgY29kZS5cbiAgICovXG4gIHB1YmxpYyBhZGRDb2RlKHVuaXF1ZWlkOiBzdHJpbmcsIGNvZGVFbWl0dGVyOiAoY29kZTogQ29kZSkgPT4gdm9pZCkge1xuICAgIGlmICh0aGlzLmVtaXR0ZWRUeXBlcy5oYXModW5pcXVlaWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50eXBlc1RvRW1pdFt1bmlxdWVpZF0gPSBjb2RlRW1pdHRlcjtcbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIoKSB7XG4gICAgY29uc3QgY29kZSA9IG5ldyBDb2RlKCk7XG4gICAgdGhpcy5lbWl0Q29kZShjb2RlKTtcbiAgICByZXR1cm4gY29kZS5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZXMgYWxsIHR5cGVzIHRvIGEgYENvZGVNYWtlcmAgd2l0aCBhbiBvcGVuIGZpbGUuXG4gICAqIFVzZSB0aGlzIG1ldGhvZCBpbiBjYXNlIHlvdSBuZWVkIHRvIGFkZCB0aG9zZSB0eXBlIHRvIGFuIGV4aXN0aW5nIGZpbGUuXG4gICAqIEBwYXJhbSBjb2RlIFRoZSBgQ29kZU1ha2VyYCBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBlbWl0Q29kZShjb2RlOiBDb2RlKSB7XG4gICAgd2hpbGUgKE9iamVjdC5rZXlzKHRoaXMudHlwZXNUb0VtaXQpLmxlbmd0aCkge1xuICAgICAgY29uc3QgbmFtZSA9IE9iamVjdC5rZXlzKHRoaXMudHlwZXNUb0VtaXQpWzBdO1xuICAgICAgY29uc3QgZW1pdHRlciA9IHRoaXMudHlwZXNUb0VtaXRbbmFtZV07XG4gICAgICBlbWl0dGVyKGNvZGUpO1xuICAgICAgY29kZS5saW5lKCk7XG4gICAgICBkZWxldGUgdGhpcy50eXBlc1RvRW1pdFtuYW1lXTtcbiAgICAgIHRoaXMuZW1pdHRlZFR5cGVzLmFkZChuYW1lKTtcbiAgICB9ICAgIFxuICB9XG4gIC8qKlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoaXMgZGVmaW5pdGlvbiBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgYSB1bmlvbiBvciBmYWxzZSBpZiBpdCBjYW5ub3RcbiAgICovXG4gIHByaXZhdGUgZW1pdFVuaW9uKHR5cGVOYW1lOiBzdHJpbmcsIGRlZjogSlNPTlNjaGVtYTQsIGZxbjogc3RyaW5nKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgZGVmLm9uZU9mIHx8IGRlZi5hbnlPZiB8fCBbXSkge1xuICAgICAgaWYgKCFzdXBwb3J0ZWRVbmlvbk9wdGlvblR5cGUob3B0aW9uLnR5cGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHlwZSA9IG9wdGlvbi50eXBlID09PSAnaW50ZWdlcicgPyAnbnVtYmVyJyA6IG9wdGlvbi50eXBlO1xuICAgICAgb3B0aW9ucy5wdXNoKHR5cGUpO1xuICAgIH1cblxuICAgIHRoaXMuYWRkQ29kZSh0eXBlTmFtZSwgY29kZSA9PiB7XG4gICAgICB0aGlzLmVtaXREZXNjcmlwdGlvbihjb2RlLCBmcW4sIGRlZi5kZXNjcmlwdGlvbik7XG5cbiAgICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgY2xhc3MgJHt0eXBlTmFtZX1gKTtcblxuICAgICAgZm9yIChjb25zdCB0eXBlIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgbWV0aG9kTmFtZSA9ICdmcm9tJyArIHR5cGVbMF0udG9VcHBlckNhc2UoKSArIHR5cGUuc3Vic3RyKDEpO1xuICAgICAgICBjb2RlLm9wZW5CbG9jayhgcHVibGljIHN0YXRpYyAke21ldGhvZE5hbWV9KHZhbHVlOiAke3R5cGV9KTogJHt0eXBlTmFtZX1gKTtcbiAgICAgICAgY29kZS5saW5lKGByZXR1cm4gbmV3ICR7dHlwZU5hbWV9KHZhbHVlKTtgKTtcbiAgICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgICB9XG5cbiAgICAgIGNvZGUub3BlbkJsb2NrKCdwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBhbnkpJyk7XG4gICAgICBjb2RlLmxpbmUoJ09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcXCdyZXNvbHZlXFwnLCB7IHZhbHVlOiAoKSA9PiB2YWx1ZSB9KTsnKTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuXG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U3RydWN0KHR5cGVOYW1lOiBzdHJpbmcsIHN0cnVjdERlZjogSlNPTlNjaGVtYTQsIHN0cnVjdEZxbjogc3RyaW5nKSB7XG4gICAgdGhpcy5hZGRDb2RlKHR5cGVOYW1lLCBjb2RlID0+IHtcbiAgICAgIHRoaXMuZW1pdERlc2NyaXB0aW9uKGNvZGUsIHN0cnVjdEZxbiwgc3RydWN0RGVmLmRlc2NyaXB0aW9uKTtcbiAgICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgaW50ZXJmYWNlICR7dHlwZU5hbWV9YCk7XG5cbiAgICAgIGZvciAoY29uc3QgWyBwcm9wTmFtZSwgcHJvcFNwZWMgXSBvZiBPYmplY3QuZW50cmllcyhzdHJ1Y3REZWYucHJvcGVydGllcyB8fCB7fSkpIHtcbiAgXG4gICAgICAgIGlmIChwcm9wTmFtZS5zdGFydHNXaXRoKCd4LScpKSB7XG4gICAgICAgICAgY29udGludWU7IC8vIHNraXAgZXh0ZW5zaW9ucyBmb3Igbm93XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYHdhcm5pbmc6IHByb3BlcnR5ICR7c3RydWN0RnFufS4ke3Byb3BOYW1lfSBvbWl0dGVkIHNpbmNlIGl0IGluY2x1ZGVzIGFuIHVuZGVyc2NvcmVgKTtcbiAgICAgICAgICBjb250aW51ZTsgLy8gc2tpcCBcbiAgICAgICAgfVxuICBcbiAgICAgICAgdGhpcy5lbWl0UHJvcGVydHkoY29kZSwgcHJvcE5hbWUsIHByb3BTcGVjLCBzdHJ1Y3RGcW4sIHN0cnVjdERlZik7XG4gICAgICB9XG4gICAgXG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFByb3BlcnR5KGNvZGU6IENvZGUsIG5hbWU6IHN0cmluZywgcHJvcERlZjogSlNPTlNjaGVtYTQsIHN0cnVjdEZxbjogc3RyaW5nLCBzdHJ1Y3REZWY6IEpTT05TY2hlbWE0KSB7XG4gICAgY29uc3Qgb3JpZ2luYWxOYW1lID0gbmFtZTtcblxuICAgIC8vIGlmIG5hbWUgaXMgbm90IGNhbWVsQ2FzZSwgY29udmVydCBpdCB0byBjYW1lbCBjYXNlLCBidXQgdGhpcyBpcyBsaWtlbHkgdG9cbiAgICAvLyBwcm9kdWNlIGludmFsaWQgb3V0cHV0IGR1cmluZyBzeW50aGVzaXMsIHNvIGFkZCBzb21lIGFubm90YXRpb24gdG8gdGhlIGRvY3MuXG4gICAgaWYgKG5hbWVbMF0gPT09IG5hbWVbMF0udG9VcHBlckNhc2UoKSkge1xuICAgICAgbmFtZSA9IGNhbWVsQ2FzZShuYW1lKTtcbiAgICB9XG5cbiAgICAvLyBpZiB0aGUgbmFtZSBzdGFydHMgd2l0aCAnJCcgKGxpa2UgJHJlZiBvciAkc2NoZW1hKSwgd2UgcmVtb3ZlIHRoZSBcIiRcIlxuICAgIC8vIGFuZCBpdCdzIHRoZSBzYW1lIGRlYWwgLSB3aWxsIHByb2R1Y2UgaW52YWxpZCBvdXRwdXRcbiAgICBpZiAobmFtZS5zdGFydHNXaXRoKCckJykpIHtcbiAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZygxKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXREZXNjcmlwdGlvbihjb2RlLCBgJHtzdHJ1Y3RGcW59IyR7b3JpZ2luYWxOYW1lfWAsIHByb3BEZWYuZGVzY3JpcHRpb24pO1xuICAgIGNvbnN0IHByb3BlcnR5VHlwZSA9IHRoaXMudHlwZUZvclByb3BlcnR5KGAke3N0cnVjdEZxbn0uJHtuYW1lfWAsIHByb3BEZWYpO1xuICAgIGNvbnN0IHJlcXVpcmVkID0gdGhpcy5pc1Byb3BlcnR5UmVxdWlyZWQobmFtZSwgc3RydWN0RGVmKTtcbiAgICBjb25zdCBvcHRpb25hbCA9IHJlcXVpcmVkID8gJycgOiAnPyc7XG5cbiAgICBjb2RlLmxpbmUoYHJlYWRvbmx5ICR7bmFtZX0ke29wdGlvbmFsfTogJHtwcm9wZXJ0eVR5cGV9O2ApO1xuICAgIGNvZGUubGluZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RW51bSh0eXBlTmFtZTogc3RyaW5nLCBkZWY6IEpTT05TY2hlbWE0LCBzdHJ1Y3RGcW46IHN0cmluZykge1xuXG4gICAgdGhpcy5hZGRDb2RlKHR5cGVOYW1lLCBjb2RlID0+IHtcblxuICAgICAgaWYgKCFkZWYuZW51bSB8fCBkZWYuZW51bS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBkZWZpbml0aW9uIGlzIG5vdCBhbiBlbnVtOiAke0pTT04uc3RyaW5naWZ5KGRlZil9YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZWYudHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW4gb25seSBnZW5lcmF0ZSBzdHJpbmcgZW51bXMnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbWl0RGVzY3JpcHRpb24oY29kZSwgc3RydWN0RnFuLCBkZWYuZGVzY3JpcHRpb24pO1xuXG4gICAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IGVudW0gJHt0eXBlTmFtZX1gKTtcblxuICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBkZWYuZW51bSkge1xuICAgICAgICBpZiAodHlwZW9mKHZhbHVlKSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NhbiBvbmx5IGdlbmVyYXRlIGVudW1zIGZvciBzdHJpbmcgdmFsdWVzJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzbHVnZ2lmeSBhbmQgdHVybiB0byBVUFBFUl9TTkFLRV9DQVNFXG4gICAgICAgIGNvbnN0IG1lbWJlck5hbWUgPSBzbmFrZUNhc2UodmFsdWUucmVwbGFjZSgvW15hLXowLTldL2dpLCAnXycpKS5zcGxpdCgnXycpLmZpbHRlcih4ID0+IHgpLmpvaW4oJ18nKS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAgIGNvZGUubGluZShgLyoqICR7dmFsdWV9ICovYCk7XG4gICAgICAgIGNvZGUubGluZShgJHttZW1iZXJOYW1lfSA9IFwiJHt2YWx1ZX1cIixgKTtcbiAgICAgIH1cblxuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHlwZU5hbWU7XG4gIH1cblxuICBwcml2YXRlIGVtaXREZXNjcmlwdGlvbihjb2RlOiBDb2RlLCBmcW46IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcsIGFubm90YXRpb25zOiB7IFt0eXBlOiBzdHJpbmddOiBzdHJpbmcgfSA9IHsgfSkge1xuICAgIGNvZGUubGluZSgnLyoqJyk7XG5cbiAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24ucmVwbGFjZSgvXFwqXFwvL2csICdfLycpO1xuXG4gICAgICBjb25zdCBleHRyYWN0RGVmYXVsdCA9IC9EZWZhdWx0cz9cXFcrKHRvfGlzKVxcVysoLispL2cuZXhlYyhkZXNjcmlwdGlvbik7XG4gICAgICBjb25zdCBkZWYgPSBleHRyYWN0RGVmYXVsdCAmJiBleHRyYWN0RGVmYXVsdFsyXTtcbiAgICBcbiAgICAgIGNvZGUubGluZShgICogJHtkZXNjcmlwdGlvbn1gKTtcbiAgICAgIGlmIChkZWYpIHtcbiAgICAgICAgYW5ub3RhdGlvbnNbJ2RlZmF1bHQnXSA9IGRlZjtcbiAgICAgIH1cblxuICAgICAgY29kZS5saW5lKCcgKicpO1xuICAgIH1cblxuICAgIGFubm90YXRpb25zWydzY2hlbWEnXSA9IGZxbjtcblxuICAgIGZvciAoY29uc3QgWyB0eXBlLCB2YWx1ZSBdIG9mIE9iamVjdC5lbnRyaWVzKGFubm90YXRpb25zKSkge1xuICAgICAgY29kZS5saW5lKGAgKiBAJHt0eXBlfSAke3ZhbHVlfWApO1xuICAgIH1cblxuICAgIGNvZGUubGluZSgnICovJylcbiAgfVxuXG4gIHByaXZhdGUgdHlwZUZvclByb3BlcnR5KHByb3BlcnR5RnFuOiBzdHJpbmcsIGRlZjogSlNPTlNjaGVtYTQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN1YnR5cGUgPSBUeXBlR2VuZXJhdG9yLm5vcm1hbGl6ZVR5cGVOYW1lKHByb3BlcnR5RnFuLnNwbGl0KCcuJykubWFwKHggPT4gcGFzY2FsQ2FzZSh4KSkuam9pbignJykpO1xuICAgIHJldHVybiB0aGlzLmFkZFR5cGUoc3VidHlwZSwgZGVmLCBzdWJ0eXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgdHlwZUZvclJlZihkZWY6IEpTT05TY2hlbWE0KTogc3RyaW5nIHtcbiAgICBjb25zdCBwcmVmaXggPSAnIy9kZWZpbml0aW9ucy8nO1xuICAgIGlmICghZGVmLiRyZWYgfHwgIWRlZi4kcmVmLnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkICRyZWYgJHtKU09OLnN0cmluZ2lmeShkZWYpfWApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRXhjbHVkZWQoZGVmLiRyZWYpKSB7XG4gICAgICByZXR1cm4gJ2FueSc7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHMgPSBkZWYuJHJlZi5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCkuc3BsaXQoJy4nKTtcbiAgICBjb25zdCB0eXBlTmFtZSA9IFR5cGVHZW5lcmF0b3Iubm9ybWFsaXplVHlwZU5hbWUoY29tcHNbY29tcHMubGVuZ3RoIC0gMV0pO1xuICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMucmVzb2x2ZVJlZmVyZW5jZShkZWYpO1xuICAgIHJldHVybiB0aGlzLmFkZFR5cGUodHlwZU5hbWUsIHNjaGVtYSwgZGVmLiRyZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSB0eXBlRm9yQXJyYXkocHJvcGVydHlGcW46IHN0cmluZywgZGVmOiBKU09OU2NoZW1hNCk6IHN0cmluZyB7XG4gICAgaWYgKCFkZWYuaXRlbXMgfHwgdHlwZW9mKGRlZi5pdGVtcykgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIGFycmF5IHR5cGUgJHtkZWYuaXRlbXN9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudHlwZUZvclByb3BlcnR5KHByb3BlcnR5RnFuLCBkZWYuaXRlbXMpO1xuICB9ICBcblxuICBwcml2YXRlIHJlc29sdmVSZWZlcmVuY2UoZGVmOiBKU09OU2NoZW1hNCk6IEpTT05TY2hlbWE0IHtcbiAgICBjb25zdCByZWYgPSBkZWYuJHJlZjtcbiAgICBpZiAoIXJlZiB8fCAhcmVmLnN0YXJ0c1dpdGgoREVGSU5JVElPTlNfUFJFRklYKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RpbmcgYSBsb2NhbCByZWZlcmVuY2UnKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb29rdXAgPSByZWYuc3Vic3RyKERFRklOSVRJT05TX1BSRUZJWC5sZW5ndGgpO1xuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5kZWZpbml0aW9uc1tsb29rdXBdO1xuICAgIGlmICghZm91bmQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5hYmxlIHRvIGZpbmQgYSBkZWZpbml0aW9uIGZvciB0aGUgJHJlZiBcIiR7bG9va3VwfVwiYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Byb3BlcnR5UmVxdWlyZWQocHJvcGVydHk6IHN0cmluZywgc3RydWN0RGVmOiBKU09OU2NoZW1hNCkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHN0cnVjdERlZi5yZXF1aXJlZCkgJiYgc3RydWN0RGVmLnJlcXVpcmVkLmluY2x1ZGVzKHByb3BlcnR5KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFeGNsdWRlZChmcW46IHN0cmluZykge1xuICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiB0aGlzLmV4Y2x1ZGUpIHtcbiAgICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChwYXR0ZXJuKTtcbiAgICAgIGlmIChyZS50ZXN0KGZxbikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN1cHBvcnRlZFVuaW9uT3B0aW9uVHlwZSh0eXBlOiBhbnkpOiB0eXBlIGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlICYmICh0eXBlb2YodHlwZSkgPT09ICdzdHJpbmcnICYmIFBSSU1JVElWRV9UWVBFUy5pbmNsdWRlcyh0eXBlKSk7XG59XG5cbmZ1bmN0aW9uIHBhc2NhbENhc2Uoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNhbWVsQ2FzZShzLCB7IHBhc2NhbENhc2U6IHRydWUgfSk7XG59Il19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZS1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaUNBQThCO0FBRTlCLHVDQUF1QztBQUN2QywyQ0FBdUM7QUFFdkMsTUFBTSxlQUFlLEdBQUcsQ0FBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUUsQ0FBQztBQUNyRSxNQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDO0FBZ0I1Qzs7R0FFRztBQUNILE1BQWEsYUFBYTtJQStCeEI7Ozs7T0FJRztJQUNILFlBQVksVUFBZ0MsRUFBRzs7UUFWOUIsZ0JBQVcsR0FBNkMsRUFBRyxDQUFDO1FBQzVELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQVVoRCxJQUFJLENBQUMsT0FBTyxTQUFHLE9BQU8sQ0FBQyxPQUFPLG1DQUFJLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxTQUFHLE9BQU8sQ0FBQyxXQUFXLG1DQUFJLEVBQUcsQ0FBQztJQUNoRCxDQUFDO0lBckNEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFnQjtRQUM5QyxpRkFBaUY7UUFDakYsTUFBTSxFQUFFLEdBQUcsdUJBQXVCLENBQUM7UUFDbkMsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxDQUFDO1FBQ04sR0FBRztZQUNELENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxFQUFFO2dCQUNMLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLG1DQUFtQztnQkFDNUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsc0RBQXNEO2dCQUN4RSxN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QVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRU8sVUFBVSxDQUFDLEdBQVc7UUFDNUIsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2xDLE1BQU0sRUFBRSxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9CLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDaEIsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUEvVkQsc0NBK1ZDO0FBRUQsU0FBUyx3QkFBd0IsQ0FBQyxJQUFTO0lBQ3pDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLENBQVM7SUFDM0IsT0FBTyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEpTT05TY2hlbWE0IH0gZnJvbSAnanNvbi1zY2hlbWEnO1xuaW1wb3J0IHsgQ29kZSB9IGZyb20gJy4vY29kZSc7XG5cbmltcG9ydCAqIGFzIGNhbWVsQ2FzZSBmcm9tICdjYW1lbGNhc2UnO1xuaW1wb3J0IHsgc25ha2VDYXNlIH0gZnJvbSAnc25ha2UtY2FzZSc7XG5cbmNvbnN0IFBSSU1JVElWRV9UWVBFUyA9IFsgJ3N0cmluZycsICdudW1iZXInLCAnaW50ZWdlcicsICdib29sZWFuJyBdO1xuY29uc3QgREVGSU5JVElPTlNfUFJFRklYID0gJyMvZGVmaW5pdGlvbnMvJztcblxuZXhwb3J0IGludGVyZmFjZSBUeXBlR2VuZXJhdG9yT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQYXR0ZXJucyBvZiB0eXBlIEZRTnMgdG8gZXhjbHVkZS5cbiAgICogQGRlZmF1bHQgLSBpbmNsdWRlIGFsbCB0eXBlc1xuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTY2hlbWEgZGVmaW5pdGlvbnMgZm9yIHJlc29sdmluZyAkcmVmc1xuICAgKiBAZGVmYXVsdCAtICRyZWZzIGFyZSBub3Qgc3VwcG9ydGVkXG4gICAqL1xuICByZWFkb25seSBkZWZpbml0aW9ucz86IHsgW2RlZjogc3RyaW5nXTogSlNPTlNjaGVtYTQgfTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdHlwZXNjcmlwdCB0eXBlcyBmcm9tIEpTT04gc2NoZW1hcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVHZW5lcmF0b3Ige1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGFsbC1jYXBzIGFjcm9ueW1zIChlLmcuIFwiVlBDXCIsIFwiRm9vQkFSWm9vRklHb29cIikgdG8gcGFzY2FsIGNhc2VcbiAgICogKGUuZy4gXCJWcGNcIiwgXCJGb29CYXJab29GaUdvb1wiKS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbm9ybWFsaXplVHlwZU5hbWUodHlwZU5hbWU6IHN0cmluZykge1xuICAgIC8vIHN0YXJ0IHdpdGggdGhlIGZ1bGwgc3RyaW5nIGFuZCB0aGVuIHVzZSB0aGUgcmVnZXggdG8gbWF0Y2ggYWxsLWNhcHMgc2VxdWVuY2VzLlxuICAgIGNvbnN0IHJlID0gLyhbQS1aXSspKD86W15hLXpdfCQpL2c7XG4gICAgbGV0IHJlc3VsdCA9IHR5cGVOYW1lO1xuICAgIGxldCBtO1xuICAgIGRvIHtcbiAgICAgIG0gPSByZS5leGVjKHR5cGVOYW1lKTtcbiAgICAgIGlmIChtKSB7XG4gICAgICAgIGNvbnN0IGJlZm9yZSA9IHJlc3VsdC5zbGljZSgwLCBtLmluZGV4KTsgLy8gYWxsIHRoZSB0ZXh0IGJlZm9yZSB0aGUgc2VxdWVuY2VcbiAgICAgICAgY29uc3QgY2FwID0gbVsxXTsgLy8gZ3JvdXAgIzEgbWF0Y2hlcyB0aGUgYWxsLWNhcHMgc2VxdWVuY2Ugd2UgYXJlIGFmdGVyXG4gICAgICAgIGNvbnN0IHBhc2NhbCA9IGNhcFswXSArIGNhcC5zbGljZSgxKS50b0xvd2VyQ2FzZSgpOyAvLyBjb252ZXJ0IHRvIHBhc2NhbCBjYXNlIGJ5IGxvd2VyY2FzaW5nIGFsbCBidXQgdGhlIGZpcnN0IGNoYXJcbiAgICAgICAgY29uc3QgYWZ0ZXIgPSByZXN1bHQuc2xpY2UobS5pbmRleCArIHBhc2NhbC5sZW5ndGgpOyAvLyBhbGwgdGhlIHRleHQgYWZ0ZXIgdGhlIHNlcXVlbmNlXG4gICAgICAgIHJlc3VsdCA9IGJlZm9yZSArIHBhc2NhbCArIGFmdGVyOyAvLyBjb25jYXRcbiAgICAgIH1cbiAgICB9IHdoaWxlIChtKTtcblxuICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKC9eLi8sIHJlc3VsdFswXS50b1VwcGVyQ2FzZSgpKSAvLyBlbnN1cmUgZmlyc3QgbGV0dGVyIGlzIGNhcGl0YWxpemVkXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgdHlwZXNUb0VtaXQ6IHsgW25hbWU6IHN0cmluZ106IChjb2RlOiBDb2RlKSA9PiB2b2lkIH0gPSB7IH07XG4gIHByaXZhdGUgcmVhZG9ubHkgZW1pdHRlZFR5cGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXhjbHVkZTogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmaW5pdGlvbnM6IHsgW2RlZjogc3RyaW5nXTogSlNPTlNjaGVtYTQgfTtcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHNjaGVtYSBTY2hlbWEgZGVmaW5pdGlvbnNcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFR5cGVHZW5lcmF0b3JPcHRpb25zID0geyB9KSB7XG4gICAgdGhpcy5leGNsdWRlID0gb3B0aW9ucy5leGNsdWRlID8/IFtdO1xuICAgIHRoaXMuZGVmaW5pdGlvbnMgPSBvcHRpb25zLmRlZmluaXRpb25zID8/IHsgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IGEgdHlwZSBiYXNlZCBvbiBhIEpTT04gc2NoZW1hLlxuICAgKiBAcGFyYW0gdHlwZU5hbWUgVGhlIG5hbWUgb2YgdGggdHlwZVxuICAgKiBAcGFyYW0gZGVmIEpTT04gc2NoZW1hXG4gICAqIEBwYXJhbSBzdHJ1Y3RGcW4gRlFOIGZvciB0aGUgdHlwZSAoZGVmYXVsdHMgdG8gYHR5cGVOYW1lYClcbiAgICovXG4gIHB1YmxpYyBhZGRUeXBlKHR5cGVOYW1lOiBzdHJpbmcsIGRlZjogSlNPTlNjaGVtYTQsIHN0cnVjdEZxbjogc3RyaW5nID0gdHlwZU5hbWUpOiBzdHJpbmcge1xuICAgIC8vIGNhbGxlcnMgZXhwZWN0IHRoYXQgZW1pdCBhIHR5cGUgbmFtZWQgYHR5cGVOYW1lYCBzbyB3ZSBjYW4ndCBjaGFuZ2UgaXQgaGVyZVxuICAgIC8vIGJ1dCBhdCBsZWFzdCB3ZSBjYW4gdmVyaWZ5IGl0J3MgY29ycmVjdC5cbiAgICBpZiAoVHlwZUdlbmVyYXRvci5ub3JtYWxpemVUeXBlTmFtZSh0eXBlTmFtZSkgIT09IHR5cGVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dHlwZU5hbWV9IG11c3QgYmUgbm9ybWFsaXplZCBiZWZvcmUgY2FsbGluZyBlbWl0VHlwZWApO1xuICAgIH1cblxuICAgIGlmIChzdHJ1Y3RGcW4uc3RhcnRzV2l0aChERUZJTklUSU9OU19QUkVGSVgpKSB7XG4gICAgICBzdHJ1Y3RGcW4gPSBzdHJ1Y3RGcW4uc3Vic3RyaW5nKERFRklOSVRJT05TX1BSRUZJWC5sZW5ndGgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRXhjbHVkZWQoc3RydWN0RnFuKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUeXBlICR7c3RydWN0RnFufSBjYW5ub3QgYmUgYWRkZWQgc2luY2UgaXQgbWF0Y2hlcyBvbmUgb2YgdGhlIGV4Y2x1c2lvbiBwYXR0ZXJuc2ApO1xuICAgIH1cblxuICAgIGlmIChkZWYuJHJlZikge1xuICAgICAgcmV0dXJuIHRoaXMudHlwZUZvclJlZihkZWYpO1xuICAgIH1cblxuICAgIC8vIHVuaW9ucyAodW5sZXNzIHRoaXMgaXMgYSBzdHJ1Y3QsIGFuZCB0aGVuIHdlIGp1c3QgaWdub3JlIHRoZSBjb25zdHJhaW50cylcbiAgICBpZiAoZGVmLm9uZU9mIHx8IGRlZi5hbnlPZikge1xuICAgICAgaWYgKHRoaXMuZW1pdFVuaW9uKHR5cGVOYW1lLCBkZWYsIHN0cnVjdEZxbikpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVOYW1lO1xuICAgICAgfVxuXG4gICAgICAvLyBjYXJyeSBvbiwgd2UgY2FuJ3QgcmVwcmVzZW50IHRoaXMgc2NoZW1hIGFzIGEgdW5pb24gKHlldD8pXG4gICAgfVxuXG4gICAgaWYgKGRlZi50eXBlID09PSAnc3RyaW5nJyAmJiBkZWYuZm9ybWF0ID09PSAnZGF0ZS10aW1lJykge1xuICAgICAgcmV0dXJuICdEYXRlJztcbiAgICB9XG4gIFxuICAgIHN3aXRjaCAoZGVmLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOiByZXR1cm4gJ2Jvb2xlYW4nO1xuICAgICAgY2FzZSAnYXJyYXknOiByZXR1cm4gYCR7dGhpcy50eXBlRm9yQXJyYXkodHlwZU5hbWUsIGRlZil9W11gO1xuICAgICAgY2FzZSAnYW55JzogcmV0dXJuICdhbnknO1xuICAgICAgY2FzZSAnbnVsbCc6IHJldHVybiAnYW55JztcbiAgICB9XG5cbiAgICBpZiAoZGVmLnR5cGUgPT09ICdudW1iZXInIHx8IGRlZi50eXBlID09PSAnaW50ZWdlcicpIHtcbiAgICAgIHJldHVybiAnbnVtYmVyJztcbiAgICB9XG5cbiAgICBpZiAoZGVmLnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoZGVmLmZvcm1hdCA9PT0gJ2RhdGUtdGltZScpIHtcbiAgICAgICAgcmV0dXJuICdEYXRlJztcbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVmLmVudW0pICYmIGRlZi5lbnVtLmxlbmd0aCA+IDAgJiYgIWRlZi5lbnVtLmZpbmQoeCA9PiB0eXBlb2YoeCkgIT09ICdzdHJpbmcnKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbWl0RW51bSh0eXBlTmFtZSwgZGVmLCBzdHJ1Y3RGcW4pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gJ3N0cmluZyc7XG4gICAgfVxuICAgIFxuICAgIC8vIG1hcFxuICAgIGlmICghZGVmLnByb3BlcnRpZXMgJiYgZGVmLmFkZGl0aW9uYWxQcm9wZXJ0aWVzICYmIHR5cGVvZihkZWYuYWRkaXRpb25hbFByb3BlcnRpZXMpID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIGB7IFtrZXk6IHN0cmluZ106ICR7dGhpcy50eXBlRm9yUHJvcGVydHkodHlwZU5hbWUsIGRlZi5hZGRpdGlvbmFsUHJvcGVydGllcyl9IH1gO1xuICAgIH1cblxuICAgIC8vIHN0cnVjdFxuICAgIGlmIChkZWYucHJvcGVydGllcykge1xuICAgICAgdGhpcy5lbWl0U3RydWN0KHR5cGVOYW1lLCBkZWYsIHN0cnVjdEZxbilcbiAgICAgIHJldHVybiB0eXBlTmFtZTtcbiAgICB9XG5cbiAgICByZXR1cm4gJ2FueSc7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgY29kZSBvbmNlIHRvIHRoZSBvdXRwdXQgZmlsZS5cbiAgICogQHBhcmFtIHVuaXF1ZWlkIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb2RlIHNuaXBwZXQgKGUuZy4gdGhlIG5hbWUgb2YgdGhlIHR5cGUpXG4gICAqIEBwYXJhbSBjb2RlRW1pdHRlciBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gZW1pdCB0aGUgY29kZS5cbiAgICovXG4gIHB1YmxpYyBhZGRDb2RlKHVuaXF1ZWlkOiBzdHJpbmcsIGNvZGVFbWl0dGVyOiAoY29kZTogQ29kZSkgPT4gdm9pZCkge1xuICAgIGlmICh0aGlzLmVtaXR0ZWRUeXBlcy5oYXModW5pcXVlaWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50eXBlc1RvRW1pdFt1bmlxdWVpZF0gPSBjb2RlRW1pdHRlcjtcbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIoKSB7XG4gICAgY29uc3QgY29kZSA9IG5ldyBDb2RlKCk7XG4gICAgdGhpcy5lbWl0Q29kZShjb2RlKTtcbiAgICByZXR1cm4gY29kZS5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZXMgYWxsIHR5cGVzIHRvIGEgYENvZGVNYWtlcmAgd2l0aCBhbiBvcGVuIGZpbGUuXG4gICAqIFVzZSB0aGlzIG1ldGhvZCBpbiBjYXNlIHlvdSBuZWVkIHRvIGFkZCB0aG9zZSB0eXBlIHRvIGFuIGV4aXN0aW5nIGZpbGUuXG4gICAqIEBwYXJhbSBjb2RlIFRoZSBgQ29kZU1ha2VyYCBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBlbWl0Q29kZShjb2RlOiBDb2RlKSB7XG4gICAgd2hpbGUgKE9iamVjdC5rZXlzKHRoaXMudHlwZXNUb0VtaXQpLmxlbmd0aCkge1xuICAgICAgY29uc3QgbmFtZSA9IE9iamVjdC5rZXlzKHRoaXMudHlwZXNUb0VtaXQpWzBdO1xuICAgICAgY29uc3QgZW1pdHRlciA9IHRoaXMudHlwZXNUb0VtaXRbbmFtZV07XG4gICAgICBlbWl0dGVyKGNvZGUpO1xuICAgICAgY29kZS5saW5lKCk7XG4gICAgICBkZWxldGUgdGhpcy50eXBlc1RvRW1pdFtuYW1lXTtcbiAgICAgIHRoaXMuZW1pdHRlZFR5cGVzLmFkZChuYW1lKTtcbiAgICB9ICAgIFxuICB9XG4gIC8qKlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoaXMgZGVmaW5pdGlvbiBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgYSB1bmlvbiBvciBmYWxzZSBpZiBpdCBjYW5ub3RcbiAgICovXG4gIHByaXZhdGUgZW1pdFVuaW9uKHR5cGVOYW1lOiBzdHJpbmcsIGRlZjogSlNPTlNjaGVtYTQsIGZxbjogc3RyaW5nKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgZGVmLm9uZU9mIHx8IGRlZi5hbnlPZiB8fCBbXSkge1xuICAgICAgaWYgKCFzdXBwb3J0ZWRVbmlvbk9wdGlvblR5cGUob3B0aW9uLnR5cGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHlwZSA9IG9wdGlvbi50eXBlID09PSAnaW50ZWdlcicgPyAnbnVtYmVyJyA6IG9wdGlvbi50eXBlO1xuICAgICAgb3B0aW9ucy5wdXNoKHR5cGUpO1xuICAgIH1cblxuICAgIHRoaXMuYWRkQ29kZSh0eXBlTmFtZSwgY29kZSA9PiB7XG4gICAgICB0aGlzLmVtaXREZXNjcmlwdGlvbihjb2RlLCBmcW4sIGRlZi5kZXNjcmlwdGlvbik7XG5cbiAgICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgY2xhc3MgJHt0eXBlTmFtZX1gKTtcblxuICAgICAgZm9yIChjb25zdCB0eXBlIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgbWV0aG9kTmFtZSA9ICdmcm9tJyArIHR5cGVbMF0udG9VcHBlckNhc2UoKSArIHR5cGUuc3Vic3RyKDEpO1xuICAgICAgICBjb2RlLm9wZW5CbG9jayhgcHVibGljIHN0YXRpYyAke21ldGhvZE5hbWV9KHZhbHVlOiAke3R5cGV9KTogJHt0eXBlTmFtZX1gKTtcbiAgICAgICAgY29kZS5saW5lKGByZXR1cm4gbmV3ICR7dHlwZU5hbWV9KHZhbHVlKTtgKTtcbiAgICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgICB9XG5cbiAgICAgIGNvZGUub3BlbkJsb2NrKCdwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBhbnkpJyk7XG4gICAgICBjb2RlLmxpbmUoJ09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcXCdyZXNvbHZlXFwnLCB7IHZhbHVlOiAoKSA9PiB2YWx1ZSB9KTsnKTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuXG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U3RydWN0KHR5cGVOYW1lOiBzdHJpbmcsIHN0cnVjdERlZjogSlNPTlNjaGVtYTQsIHN0cnVjdEZxbjogc3RyaW5nKSB7XG4gICAgdGhpcy5hZGRDb2RlKHR5cGVOYW1lLCBjb2RlID0+IHtcbiAgICAgIHRoaXMuZW1pdERlc2NyaXB0aW9uKGNvZGUsIHN0cnVjdEZxbiwgc3RydWN0RGVmLmRlc2NyaXB0aW9uKTtcbiAgICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgaW50ZXJmYWNlICR7dHlwZU5hbWV9YCk7XG5cbiAgICAgIGZvciAoY29uc3QgWyBwcm9wTmFtZSwgcHJvcFNwZWMgXSBvZiBPYmplY3QuZW50cmllcyhzdHJ1Y3REZWYucHJvcGVydGllcyB8fCB7fSkpIHtcbiAgXG4gICAgICAgIGlmIChwcm9wTmFtZS5zdGFydHNXaXRoKCd4LScpKSB7XG4gICAgICAgICAgY29udGludWU7IC8vIHNraXAgZXh0ZW5zaW9ucyBmb3Igbm93XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYHdhcm5pbmc6IHByb3BlcnR5ICR7c3RydWN0RnFufS4ke3Byb3BOYW1lfSBvbWl0dGVkIHNpbmNlIGl0IGluY2x1ZGVzIGFuIHVuZGVyc2NvcmVgKTtcbiAgICAgICAgICBjb250aW51ZTsgLy8gc2tpcCBcbiAgICAgICAgfVxuICBcbiAgICAgICAgdGhpcy5lbWl0UHJvcGVydHkoY29kZSwgcHJvcE5hbWUsIHByb3BTcGVjLCBzdHJ1Y3RGcW4sIHN0cnVjdERlZik7XG4gICAgICB9XG4gICAgXG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFByb3BlcnR5KGNvZGU6IENvZGUsIG5hbWU6IHN0cmluZywgcHJvcERlZjogSlNPTlNjaGVtYTQsIHN0cnVjdEZxbjogc3RyaW5nLCBzdHJ1Y3REZWY6IEpTT05TY2hlbWE0KSB7XG4gICAgY29uc3Qgb3JpZ2luYWxOYW1lID0gbmFtZTtcblxuICAgIC8vIGlmIG5hbWUgaXMgbm90IGNhbWVsQ2FzZSwgY29udmVydCBpdCB0byBjYW1lbCBjYXNlLCBidXQgdGhpcyBpcyBsaWtlbHkgdG9cbiAgICAvLyBwcm9kdWNlIGludmFsaWQgb3V0cHV0IGR1cmluZyBzeW50aGVzaXMsIHNvIGFkZCBzb21lIGFubm90YXRpb24gdG8gdGhlIGRvY3MuXG4gICAgaWYgKG5hbWVbMF0gPT09IG5hbWVbMF0udG9VcHBlckNhc2UoKSkge1xuICAgICAgbmFtZSA9IGNhbWVsQ2FzZShuYW1lKTtcbiAgICB9XG5cbiAgICAvLyBpZiB0aGUgbmFtZSBzdGFydHMgd2l0aCAnJCcgKGxpa2UgJHJlZiBvciAkc2NoZW1hKSwgd2UgcmVtb3ZlIHRoZSBcIiRcIlxuICAgIC8vIGFuZCBpdCdzIHRoZSBzYW1lIGRlYWwgLSB3aWxsIHByb2R1Y2UgaW52YWxpZCBvdXRwdXRcbiAgICBpZiAobmFtZS5zdGFydHNXaXRoKCckJykpIHtcbiAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZygxKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXREZXNjcmlwdGlvbihjb2RlLCBgJHtzdHJ1Y3RGcW59IyR7b3JpZ2luYWxOYW1lfWAsIHByb3BEZWYuZGVzY3JpcHRpb24pO1xuICAgIGNvbnN0IHByb3BlcnR5VHlwZSA9IHRoaXMudHlwZUZvclByb3BlcnR5KGAke3N0cnVjdEZxbn0uJHtuYW1lfWAsIHByb3BEZWYpO1xuICAgIGNvbnN0IHJlcXVpcmVkID0gdGhpcy5pc1Byb3BlcnR5UmVxdWlyZWQobmFtZSwgc3RydWN0RGVmKTtcbiAgICBjb25zdCBvcHRpb25hbCA9IHJlcXVpcmVkID8gJycgOiAnPyc7XG5cbiAgICBjb2RlLmxpbmUoYHJlYWRvbmx5ICR7bmFtZX0ke29wdGlvbmFsfTogJHtwcm9wZXJ0eVR5cGV9O2ApO1xuICAgIGNvZGUubGluZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RW51bSh0eXBlTmFtZTogc3RyaW5nLCBkZWY6IEpTT05TY2hlbWE0LCBzdHJ1Y3RGcW46IHN0cmluZykge1xuXG4gICAgdGhpcy5hZGRDb2RlKHR5cGVOYW1lLCBjb2RlID0+IHtcblxuICAgICAgaWYgKCFkZWYuZW51bSB8fCBkZWYuZW51bS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBkZWZpbml0aW9uIGlzIG5vdCBhbiBlbnVtOiAke0pTT04uc3RyaW5naWZ5KGRlZil9YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZWYudHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW4gb25seSBnZW5lcmF0ZSBzdHJpbmcgZW51bXMnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbWl0RGVzY3JpcHRpb24oY29kZSwgc3RydWN0RnFuLCBkZWYuZGVzY3JpcHRpb24pO1xuXG4gICAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IGVudW0gJHt0eXBlTmFtZX1gKTtcblxuICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBkZWYuZW51bSkge1xuICAgICAgICBpZiAodHlwZW9mKHZhbHVlKSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NhbiBvbmx5IGdlbmVyYXRlIGVudW1zIGZvciBzdHJpbmcgdmFsdWVzJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzbHVnZ2lmeSBhbmQgdHVybiB0byBVUFBFUl9TTkFLRV9DQVNFXG4gICAgICAgIGNvbnN0IG1lbWJlck5hbWUgPSBzbmFrZUNhc2UodmFsdWUucmVwbGFjZSgvW15hLXowLTldL2dpLCAnXycpKS5zcGxpdCgnXycpLmZpbHRlcih4ID0+IHgpLmpvaW4oJ18nKS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAgIGNvZGUubGluZShgLyoqICR7dmFsdWV9ICovYCk7XG4gICAgICAgIGNvZGUubGluZShgJHttZW1iZXJOYW1lfSA9IFwiJHt2YWx1ZX1cIixgKTtcbiAgICAgIH1cblxuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHlwZU5hbWU7XG4gIH1cblxuICBwcml2YXRlIGVtaXREZXNjcmlwdGlvbihjb2RlOiBDb2RlLCBmcW46IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcsIGFubm90YXRpb25zOiB7IFt0eXBlOiBzdHJpbmddOiBzdHJpbmcgfSA9IHsgfSkge1xuICAgIGNvZGUubGluZSgnLyoqJyk7XG5cbiAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24ucmVwbGFjZSgvXFwqXFwvL2csICdfLycpO1xuXG4gICAgICBjb25zdCBleHRyYWN0RGVmYXVsdCA9IC9EZWZhdWx0cz9cXFcrKHRvfGlzKVxcVysoLispL2cuZXhlYyhkZXNjcmlwdGlvbik7XG4gICAgICBjb25zdCBkZWYgPSBleHRyYWN0RGVmYXVsdCAmJiBleHRyYWN0RGVmYXVsdFsyXTtcbiAgICBcbiAgICAgIGNvZGUubGluZShgICogJHtkZXNjcmlwdGlvbn1gKTtcbiAgICAgIGlmIChkZWYpIHtcbiAgICAgICAgYW5ub3RhdGlvbnNbJ2RlZmF1bHQnXSA9IGRlZjtcbiAgICAgIH1cblxuICAgICAgY29kZS5saW5lKCcgKicpO1xuICAgIH1cblxuICAgIGFubm90YXRpb25zWydzY2hlbWEnXSA9IGZxbjtcblxuICAgIGZvciAoY29uc3QgWyB0eXBlLCB2YWx1ZSBdIG9mIE9iamVjdC5lbnRyaWVzKGFubm90YXRpb25zKSkge1xuICAgICAgY29kZS5saW5lKGAgKiBAJHt0eXBlfSAke3ZhbHVlfWApO1xuICAgIH1cblxuICAgIGNvZGUubGluZSgnICovJylcbiAgfVxuXG4gIHByaXZhdGUgdHlwZUZvclByb3BlcnR5KHByb3BlcnR5RnFuOiBzdHJpbmcsIGRlZjogSlNPTlNjaGVtYTQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN1YnR5cGUgPSBUeXBlR2VuZXJhdG9yLm5vcm1hbGl6ZVR5cGVOYW1lKHByb3BlcnR5RnFuLnNwbGl0KCcuJykubWFwKHggPT4gcGFzY2FsQ2FzZSh4KSkuam9pbignJykpO1xuICAgIHJldHVybiB0aGlzLmFkZFR5cGUoc3VidHlwZSwgZGVmLCBzdWJ0eXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgdHlwZUZvclJlZihkZWY6IEpTT05TY2hlbWE0KTogc3RyaW5nIHtcbiAgICBjb25zdCBwcmVmaXggPSAnIy9kZWZpbml0aW9ucy8nO1xuICAgIGlmICghZGVmLiRyZWYgfHwgIWRlZi4kcmVmLnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkICRyZWYgJHtKU09OLnN0cmluZ2lmeShkZWYpfWApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRXhjbHVkZWQoZGVmLiRyZWYpKSB7XG4gICAgICByZXR1cm4gJ2FueSc7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHMgPSBkZWYuJHJlZi5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCkuc3BsaXQoJy4nKTtcbiAgICBjb25zdCB0eXBlTmFtZSA9IFR5cGVHZW5lcmF0b3Iubm9ybWFsaXplVHlwZU5hbWUoY29tcHNbY29tcHMubGVuZ3RoIC0gMV0pO1xuICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMucmVzb2x2ZVJlZmVyZW5jZShkZWYpO1xuICAgIHJldHVybiB0aGlzLmFkZFR5cGUodHlwZU5hbWUsIHNjaGVtYSwgZGVmLiRyZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSB0eXBlRm9yQXJyYXkocHJvcGVydHlGcW46IHN0cmluZywgZGVmOiBKU09OU2NoZW1hNCk6IHN0cmluZyB7XG4gICAgaWYgKCFkZWYuaXRlbXMgfHwgdHlwZW9mKGRlZi5pdGVtcykgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIGFycmF5IHR5cGUgJHtkZWYuaXRlbXN9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudHlwZUZvclByb3BlcnR5KHByb3BlcnR5RnFuLCBkZWYuaXRlbXMpO1xuICB9ICBcblxuICBwcml2YXRlIHJlc29sdmVSZWZlcmVuY2UoZGVmOiBKU09OU2NoZW1hNCk6IEpTT05TY2hlbWE0IHtcbiAgICBjb25zdCByZWYgPSBkZWYuJHJlZjtcbiAgICBpZiAoIXJlZiB8fCAhcmVmLnN0YXJ0c1dpdGgoREVGSU5JVElPTlNfUFJFRklYKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RpbmcgYSBsb2NhbCByZWZlcmVuY2UnKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb29rdXAgPSByZWYuc3Vic3RyKERFRklOSVRJT05TX1BSRUZJWC5sZW5ndGgpO1xuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5kZWZpbml0aW9uc1tsb29rdXBdO1xuICAgIGlmICghZm91bmQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5hYmxlIHRvIGZpbmQgYSBkZWZpbml0aW9uIGZvciB0aGUgJHJlZiBcIiR7bG9va3VwfVwiYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Byb3BlcnR5UmVxdWlyZWQocHJvcGVydHk6IHN0cmluZywgc3RydWN0RGVmOiBKU09OU2NoZW1hNCkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHN0cnVjdERlZi5yZXF1aXJlZCkgJiYgc3RydWN0RGVmLnJlcXVpcmVkLmluY2x1ZGVzKHByb3BlcnR5KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFeGNsdWRlZChmcW46IHN0cmluZykge1xuICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiB0aGlzLmV4Y2x1ZGUpIHtcbiAgICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChwYXR0ZXJuKTtcbiAgICAgIGlmIChyZS50ZXN0KGZxbikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN1cHBvcnRlZFVuaW9uT3B0aW9uVHlwZSh0eXBlOiBhbnkpOiB0eXBlIGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlICYmICh0eXBlb2YodHlwZSkgPT09ICdzdHJpbmcnICYmIFBSSU1JVElWRV9UWVBFUy5pbmNsdWRlcyh0eXBlKSk7XG59XG5cbmZ1bmN0aW9uIHBhc2NhbENhc2Uoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNhbWVsQ2FzZShzLCB7IHBhc2NhbENhc2U6IHRydWUgfSk7XG59Il19

@@ -60,3 +60,3 @@ {

"license": "Apache-2.0",
"version": "0.1.3",
"version": "0.1.4",
"types": "lib/index.d.ts",

@@ -63,0 +63,0 @@ "jest": {

{
"version": "0.1.3"
"version": "0.1.4"
}
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