New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

jsii

Package Overview
Dependencies
Maintainers
4
Versions
1762
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jsii - npm Package Compare versions

Comparing version 0.7.8 to 0.7.9

bin/jsii-fix-peers.d.ts

20

CHANGELOG.md

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

<a name="0.7.9"></a>
## [0.7.9](https://github.com/awslabs/jsii/compare/v0.7.8...v0.7.9) (2018-11-12)
### Bug Fixes
* **docs:** improve docs rendering ([#303](https://github.com/awslabs/jsii/issues/303)) ([094a215](https://github.com/awslabs/jsii/commit/094a215)), closes [#301](https://github.com/awslabs/jsii/issues/301) [#298](https://github.com/awslabs/jsii/issues/298) [#302](https://github.com/awslabs/jsii/issues/302) [#300](https://github.com/awslabs/jsii/issues/300) [#299](https://github.com/awslabs/jsii/issues/299)
* **jsii:** do not mark "any" or "unknown" as optional (unless "?") ([#295](https://github.com/awslabs/jsii/issues/295)) ([cdf5a53](https://github.com/awslabs/jsii/commit/cdf5a53)), closes [#284](https://github.com/awslabs/jsii/issues/284)
* **runtime/dotnet:** Correct a number of type mappings ([#291](https://github.com/awslabs/jsii/issues/291)) ([0d59dab](https://github.com/awslabs/jsii/commit/0d59dab)), closes [#290](https://github.com/awslabs/jsii/issues/290) [awslabs/aws-cdk#1027](https://github.com/awslabs/aws-cdk/issues/1027)
* accept variadic arguments after optional arguments ([#307](https://github.com/awslabs/jsii/issues/307)) ([c1af1d6](https://github.com/awslabs/jsii/commit/c1af1d6))
* remove overly strict checks on peer versions ([#306](https://github.com/awslabs/jsii/issues/306)) ([7b89d01](https://github.com/awslabs/jsii/commit/7b89d01))
### Features
* **jsii:** enforce peer dependencies ([#294](https://github.com/awslabs/jsii/issues/294)) ([1753910](https://github.com/awslabs/jsii/commit/1753910)), closes [awslabs/aws-cdk#979](https://github.com/awslabs/aws-cdk/issues/979)
<a name="0.7.8"></a>

@@ -8,0 +28,0 @@ ## [0.7.8](https://github.com/awslabs/jsii/compare/v0.7.7...v0.7.8) (2018-10-23)

9

lib/assembler.d.ts

@@ -10,2 +10,3 @@ import ts = require('typescript');

readonly program: ts.Program;
readonly stdlib: string;
private _diagnostics;

@@ -17,4 +18,5 @@ private _deferred;

* @param program the TypeScript program to be assembled from
* @param stdlib the directory where the TypeScript stdlib is rooted
*/
constructor(projectInfo: ProjectInfo, program: ts.Program);
constructor(projectInfo: ProjectInfo, program: ts.Program, stdlib: string);
private readonly _typeChecker;

@@ -97,2 +99,7 @@ /**

private allProperties;
/**
* Verifies that if a method has an optional parameter, all consecutive
* parameters are optionals as well.
*/
private _verifyConsecutiveOptionals;
}

@@ -99,0 +106,0 @@ /**

16

lib/compiler.js

@@ -61,5 +61,8 @@ "use strict";

const host = ts.createCompilerHost(COMPILER_OPTIONS);
if (!host.getDefaultLibLocation) {
throw new Error('No default library location was found on the TypeScript compiler host!');
}
host.getCurrentDirectory = () => this.options.projectInfo.projectRoot;
const prog = ts.createProgram(files.concat(_pathOfLibraries(host)), COMPILER_OPTIONS, host);
return await this._consumeProgram(prog);
return await this._consumeProgram(prog, host.getDefaultLibLocation());
}

@@ -70,5 +73,8 @@ async _startWatch() {

const host = ts.createWatchCompilerHost(await this._writeTypeScriptConfig(), Object.assign({}, COMPILER_OPTIONS, { noEmitOnError: false }), Object.assign({}, ts.sys, { getCurrentDirectory() { return projectRoot; } }));
if (!host.getDefaultLibLocation) {
throw new Error('No default library location was found on the TypeScript compiler host!');
}
const orig = host.afterProgramCreate;
host.afterProgramCreate = async (builderProgram) => {
await this._consumeProgram(builderProgram.getProgram());
await this._consumeProgram(builderProgram.getProgram(), host.getDefaultLibLocation());
if (orig) {

@@ -82,3 +88,3 @@ orig.call(host, builderProgram);

}
async _consumeProgram(program) {
async _consumeProgram(program, stdlib) {
const emit = program.emit();

@@ -89,3 +95,3 @@ if (emit.emitSkipped) {

}
const assembler = new assembler_1.Assembler(this.options.projectInfo, program);
const assembler = new assembler_1.Assembler(this.options.projectInfo, program, stdlib);
const assmEmit = await assembler.emit();

@@ -166,2 +172,2 @@ if (assmEmit.emitSkipped) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZCQUE4QjtBQUM5QixzQ0FBdUM7QUFDdkMsK0JBQWdDO0FBQ2hDLGlDQUFrQztBQUNsQyw2QkFBOEI7QUFDOUIsaUNBQWtDO0FBQ2xDLDJDQUF3QztBQUd4QyxpQ0FBa0M7QUFFbEMsTUFBTSxnQkFBZ0IsR0FBdUI7SUFDekMsWUFBWSxFQUFFLElBQUk7SUFDbEIsT0FBTyxFQUFFLE1BQU07SUFDZixXQUFXLEVBQUUsSUFBSTtJQUNqQixzQkFBc0IsRUFBRSxJQUFJO0lBQzVCLGVBQWUsRUFBRSxJQUFJO0lBQ3JCLGFBQWEsRUFBRSxJQUFJO0lBQ25CLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLHdCQUF3QixDQUFDO0lBQzVFLE1BQU0sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVE7SUFDOUIsYUFBYSxFQUFFLElBQUk7SUFDbkIsMEJBQTBCLEVBQUUsSUFBSTtJQUNoQyxhQUFhLEVBQUUsSUFBSTtJQUNuQixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixNQUFNLEVBQUUsSUFBSTtJQUNaLGdCQUFnQixFQUFFLElBQUk7SUFDdEIsNEJBQTRCLEVBQUUsS0FBSztJQUNuQyxNQUFNLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNO0NBQ2pDLENBQUM7QUFFRixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ2pDLFFBQUEsV0FBVyxHQUFHLGFBQWEsQ0FBQztBQVN6QyxNQUFhLFFBQVE7SUFDakIsWUFBb0MsT0FBd0I7UUFBeEIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7SUFBRyxD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QUFFO1lBQUUsU0FBUztTQUFFO1FBQ3BFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDckI7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENhc2UgPSByZXF1aXJlKCdjYXNlJyk7XG5pbXBvcnQgY29sb3JzID0gcmVxdWlyZSgnY29sb3JzL3NhZmUnKTtcbmltcG9ydCBmcyA9IHJlcXVpcmUoJ2ZzLWV4dHJhJyk7XG5pbXBvcnQgbG9nNGpzID0gcmVxdWlyZSgnbG9nNGpzJyk7XG5pbXBvcnQgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmltcG9ydCB0cyA9IHJlcXVpcmUoJ3R5cGVzY3JpcHQnKTtcbmltcG9ydCB7IEFzc2VtYmxlciB9IGZyb20gJy4vYXNzZW1ibGVyJztcbmltcG9ydCB7IEVtaXRSZXN1bHQsIEVtaXR0ZXIgfSBmcm9tICcuL2VtaXR0ZXInO1xuaW1wb3J0IHsgUHJvamVjdEluZm8gfSBmcm9tICcuL3Byb2plY3QtaW5mbyc7XG5pbXBvcnQgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbmNvbnN0IENPTVBJTEVSX09QVElPTlM6IHRzLkNvbXBpbGVyT3B0aW9ucyA9IHtcbiAgICBhbHdheXNTdHJpY3Q6IHRydWUsXG4gICAgY2hhcnNldDogJ3V0ZjgnLFxuICAgIGRlY2xhcmF0aW9uOiB0cnVlLFxuICAgIGV4cGVyaW1lbnRhbERlY29yYXRvcnM6IHRydWUsXG4gICAgaW5saW5lU291cmNlTWFwOiB0cnVlLFxuICAgIGlubGluZVNvdXJjZXM6IHRydWUsXG4gICAgbGliOiBbJ2xpYi5lczIwMTYuZC50cycsICdsaWIuZXMyMDE3Lm9iamVjdC5kLnRzJywgJ2xpYi5lczIwMTcuc3RyaW5nLmQudHMnXSxcbiAgICBtb2R1bGU6IHRzLk1vZHVsZUtpbmQuQ29tbW9uSlMsXG4gICAgbm9FbWl0T25FcnJvcjogdHJ1ZSxcbiAgICBub0ZhbGx0aHJvdWdoQ2FzZXNJblN3aXRjaDogdHJ1ZSxcbiAgICBub0ltcGxpY2l0QW55OiB0cnVlLFxuICAgIG5vSW1wbGljaXRSZXR1cm5zOiB0cnVlLFxuICAgIG5vSW1wbGljaXRUaGlzOiB0cnVlLFxuICAgIG5vVW51c2VkTG9jYWxzOiB0cnVlLFxuICAgIG5vVW51c2VkUGFyYW1ldGVyczogdHJ1ZSxcbiAgICByZXNvbHZlSnNvbk1vZHVsZTogdHJ1ZSxcbiAgICBzdHJpY3Q6IHRydWUsXG4gICAgc3RyaWN0TnVsbENoZWNrczogdHJ1ZSxcbiAgICBzdHJpY3RQcm9wZXJ0eUluaXRpYWxpemF0aW9uOiBmYWxzZSxcbiAgICB0YXJnZXQ6IHRzLlNjcmlwdFRhcmdldC5FUzIwMThcbn07XG5cbmNvbnN0IExPRyA9IGxvZzRqcy5nZXRMb2dnZXIoJ2pzaWkvY29tcGlsZXInKTtcbmV4cG9ydCBjb25zdCBESUFHTk9TVElDUyA9ICdkaWFnbm9zdGljcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZXJPcHRpb25zIHtcbiAgICAvKiogVGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9qZWN0IHRvIGJlIGJ1aWx0ICovXG4gICAgcHJvamVjdEluZm86IFByb2plY3RJbmZvO1xuICAgIC8qKiBXaGV0aGVyIHRoZSBjb21waWxlciBzaG91bGQgd2F0Y2ggZm9yIGNoYW5nZXMgb3IganVzdCBjb21waWxlIG9uY2UgKi9cbiAgICB3YXRjaDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIENvbXBpbGVyIGltcGxlbWVudHMgRW1pdHRlciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQ29tcGlsZXJPcHRpb25zKSB7fVxuXG4gICAgLyoqXG4gICAgICogQ29tcGlsZXMgdGhlIGNvbmZpZ3VyZWQgcHJvZ3JhbS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlcyBjYW4gYmUgc3BlY2lmaWVkIHRvIG92ZXJyaWRlIHRoZSBzdGFuZGFyZCBzb3VyY2UgY29kZSBsb2NhdGlvbiBsb2dpYy4gVXNlZnVsIGZvciBleGFtcGxlIHdoZW4gdGVzdGluZyBcIm5lZ2F0aXZlc1wiLlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBlbWl0KC4uLmZpbGVzOiBzdHJpbmdbXSk6IFByb21pc2U8RW1pdFJlc3VsdCB8IG5ldmVyPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgICAgIGlmIChmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlcyBjYW5ub3QgYmUgc3BlY2lmaWVkIGluIHdhdGNoIG1vZGUhYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5fc3RhcnRXYXRjaCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGZpbGVzID0gYXdhaXQgX2ZpbmRTb3VyY2VGaWxlcyh0aGlzLm9wdGlvbnMucHJvamVjdEluZm8ucHJvamVjdFJvb3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2J1aWxkT25jZShmaWxlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9idWlsZE9uY2UoZmlsZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxFbWl0UmVzdWx0PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuX3dyaXRlVHlwZVNjcmlwdENvbmZpZygpO1xuICAgICAgICBjb25zdCBob3N0ID0gdHMuY3JlYXRlQ29tcGlsZXJIb3N0KENPTVBJTEVSX09QVElPTlMpO1xuICAgICAgICBob3N0LmdldEN1cnJlbnREaXJlY3RvcnkgPSAoKSA9PiB0aGlzLm9wdGlvbnMucHJvamVjdEluZm8ucHJvamVjdFJvb3Q7XG4gICAgICAgIGNvbnN0IHByb2cgPSB0cy5jcmVhdGVQcm9ncmFtKFxuICAgICAgICAgICAgZmlsZXMuY29uY2F0KF9wYXRoT2ZMaWJyYXJpZXMoaG9zdCkpLFxuICAgICAgICAgICAgQ09NUElMRVJfT1BUSU9OUyxcbiAgICAgICAgICAgIGhvc3RcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2NvbnN1bWVQcm9ncmFtKHByb2cpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3N0YXJ0V2F0Y2goKTogUHJvbWlzZTxuZXZlcj4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8bmV2ZXI+KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb2plY3RSb290ID0gdGhpcy5vcHRpb25zLnByb2plY3RJbmZvLnByb2plY3RSb290O1xuICAgICAgICAgICAgY29uc3QgaG9zdCA9IHRzLmNyZWF0ZVdhdGNoQ29tcGlsZXJIb3N0KFxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3dyaXRlVHlwZVNjcmlwdENvbmZpZygpLFxuICAgICAgICAgICAgICAgIHsgLi4uQ09NUElMRVJfT1BUSU9OUywgbm9FbWl0T25FcnJvcjogZmFsc2UgfSxcbiAgICAgICAgICAgICAgICB7IC4uLnRzLnN5cywgZ2V0Q3VycmVudERpcmVjdG9yeSgpIHsgcmV0dXJuIHByb2plY3RSb290OyB9IH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBvcmlnID0gaG9zdC5hZnRlclByb2dyYW1DcmVhdGU7XG4gICAgICAgICAgICBob3N0LmFmdGVyUHJvZ3JhbUNyZWF0ZSA9IGFzeW5jIGJ1aWxkZXJQcm9ncmFtID0+IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9jb25zdW1lUHJvZ3JhbShidWlsZGVyUHJvZ3JhbS5nZXRQcm9ncmFtKCkpO1xuICAgICAgICAgICAgICAgIGlmIChvcmlnKSB7IG9yaWcuY2FsbChob3N0LCBidWlsZGVyUHJvZ3JhbSk7IH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0cy5jcmVhdGVXYXRjaFByb2dyYW0oaG9zdCk7XG4gICAgICAgICAgICAvLyBQcmV2aW91cyBjYWxsIG5ldmVyIHJldHVybnNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfY29uc3VtZVByb2dyYW0ocHJvZ3JhbTogdHMuUHJvZ3JhbSk6IFByb21pc2U8RW1pdFJlc3VsdD4ge1xuICAgICAgICBjb25zdCBlbWl0ID0gcHJvZ3JhbS5lbWl0KCk7XG4gICAgICAgIGlmIChlbWl0LmVtaXRTa2lwcGVkKSB7XG4gICAgICAgICAgICBMT0cuZXJyb3IoJ0NvbXBpbGF0aW9uIGVycm9ycyBwcmV2ZW50ZWQgdGhlIEpTSUkgYXNzZW1ibHkgZnJvbSBiZWluZyBjcmVhdGVkJyk7XG4gICAgICAgICAgICByZXR1cm4gZW1pdDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhc3NlbWJsZXIgPSBuZXcgQXNzZW1ibGVyKHRoaXMub3B0aW9ucy5wcm9qZWN0SW5mbywgcHJvZ3JhbSk7XG4gICAgICAgIGNvbnN0IGFzc21FbWl0ID0gYXdhaXQgYXNzZW1ibGVyLmVtaXQoKTtcbiAgICAgICAgaWYgKGFzc21FbWl0LmVtaXRTa2lwcGVkKSB7XG4gICAgICAgICAgICBMT0cuZXJyb3IoJ1R5cGUgbW9kZWwgZXJyb3JzIHByZXZlbnRlZCB0aGUgSlNJSSBhc3NlbWJseSBmcm9tIGJlaW5nIGNyZWF0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW1pdFNraXBwZWQ6IGFzc21FbWl0LmVtaXRTa2lwcGVkLFxuICAgICAgICAgICAgZGlhZ25vc3RpY3M6IFsuLi5lbWl0LmRpYWdub3N0aWNzLCAuLi5hc3NtRW1pdC5kaWFnbm9zdGljc11cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYHRzY29uZmlnLmpzb25gIGZpbGUgdG8gaW1wcm92ZSB0aGUgSURFIGV4cGVyaWVuY2UuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHRoZSBmdWxseSBxdWFsaWZpZWQgcGF0aCB0byB0aGUgYGB0c2NvbmZpZy5qc29uYGAgZmlsZVxuICAgICAqL1xuICAgIHByaXZhdGUgYXN5bmMgX3dyaXRlVHlwZVNjcmlwdENvbmZpZygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBjb21tZW50S2V5ID0gJ19nZW5lcmF0ZWRfYnlfanNpaV8nO1xuICAgICAgICBjb25zdCBjb21tZW50VmFsdWUgPSAnR2VuZXJhdGVkIGJ5IGpzaWkgLSBzYWZlIHRvIGRlbGV0ZSwgYW5kIGlkZWFsbHkgc2hvdWxkIGJlIGluIC5naXRpZ25vcmUnO1xuICAgICAgICBjb25zdCBjb25maWdQYXRoID0gcGF0aC5qb2luKHRoaXMub3B0aW9ucy5wcm9qZWN0SW5mby5wcm9qZWN0Um9vdCwgJ3RzY29uZmlnLmpzb24nKTtcbiAgICAgICAgaWYgKGF3YWl0IGZzLnBhdGhFeGlzdHMoY29uZmlnUGF0aCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSBhd2FpdCBmcy5yZWFkSnNvbihjb25maWdQYXRoKTtcbiAgICAgICAgICAgIGlmICghKGNvbW1lbnRLZXkgaW4gY3VycmVudENvbmZpZykpIHtcbiAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBICcke2NvbmZpZ1BhdGh9JyBmaWxlIHRoYXQgd2FzIG5vdCBnZW5lcmF0ZWQgYnkganNpaSBpcyBpbiAke3RoaXMub3B0aW9ucy5wcm9qZWN0SW5mby5wcm9qZWN0Um9vdH0uIEFib3J0aW5nIGluc3RlYWQgb2Ygb3ZlcndyaXRpbmcuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWNvbnNvbGVcbiAgICAgICAgTE9HLmRlYnVnKGBDcmVhdGluZyBvciB1cGRhdGluZyAke2NvbG9ycy5ibHVlKGNvbmZpZ1BhdGgpfWApO1xuICAgICAgICBhd2FpdCBmcy53cml0ZUpzb24oY29uZmlnUGF0aCwge1xuICAgICAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgLi4uQ09NUElMRVJfT1BUSU9OUyxcbiAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIHN0aXAgdGhlIGBsaWIuYCBwcmVmaXggYW5kIGAuZC50c2Agc3VmZml4XG4gICAgICAgICAgICAgICAgbGliOiBDT01QSUxFUl9PUFRJT05TLmxpYiAmJiBDT01QSUxFUl9PUFRJT05TLmxpYi5tYXAobmFtZSA9PiBuYW1lLnNsaWNlKDQsIG5hbWUubGVuZ3RoIC0gNSkpLFxuICAgICAgICAgICAgICAgIC8vIFRob3NlIGludC1lbnVtcywgd2UgbmVlZCB0byBvdXRwdXQgdGhlIG5hbWVzIGluc3RlYWRcbiAgICAgICAgICAgICAgICBtb2R1bGU6IENPTVBJTEVSX09QVElPTlMubW9kdWxlICYmIHRzLk1vZHVsZUtpbmRbQ09NUElMRVJfT1BUSU9OUy5tb2R1bGVdLFxuICAgICAgICAgICAgICAgIHRhcmdldDogQ09NUElMRVJfT1BUSU9OUy50YXJnZXQgJiYgdHMuU2NyaXB0VGFyZ2V0W0NPTVBJTEVSX09QVElPTlMudGFyZ2V0XSxcbiAgICAgICAgICAgICAgICBqc3g6IENPTVBJTEVSX09QVElPTlMuanN4ICYmIENhc2Uuc25ha2UodHMuSnN4RW1pdFtDT01QSUxFUl9PUFRJT05TLmpzeF0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtjb21tZW50S2V5XTogY29tbWVudFZhbHVlXG4gICAgICAgIH0sIHsgIHJlcGxhY2VyOiB1dGlscy5maWx0ZXJFbXB0eSwgc3BhY2VzOiA0IH0pO1xuICAgICAgICByZXR1cm4gY29uZmlnUGF0aDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIF9wYXRoT2ZMaWJyYXJpZXMoaG9zdDogdHMuQ29tcGlsZXJIb3N0IHwgdHMuV2F0Y2hDb21waWxlckhvc3Q8YW55Pik6IHN0cmluZ1tdIHtcbiAgICBpZiAoIUNPTVBJTEVSX09QVElPTlMubGliIHx8IENPTVBJTEVSX09QVElPTlMubGliLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gW107IH1cbiAgICBjb25zdCBsaWIgPSBob3N0LmdldERlZmF1bHRMaWJMb2NhdGlvbiAmJiBob3N0LmdldERlZmF1bHRMaWJMb2NhdGlvbigpO1xuICAgIGlmICghbGliKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZXIgaG9zdCBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IGxpYnJhcnkgZGlyZWN0b3J5IGF2YWlsYWJsZSBmb3IgJHtDT01QSUxFUl9PUFRJT05TLmxpYi5qb2luKCcsICcpfWApO1xuICAgIH1cbiAgICByZXR1cm4gQ09NUElMRVJfT1BUSU9OUy5saWIubWFwKG5hbWUgPT4gcGF0aC5qb2luKGxpYiwgbmFtZSkpO1xufVxuXG5jb25zdCBTT1VSQ0VfRElSUyA9IG5ldyBTZXQoWydiaW4nLCAnbGliJywgJ3Rlc3QnXSk7XG5hc3luYyBmdW5jdGlvbiBfZmluZFNvdXJjZUZpbGVzKGRpcjogc3RyaW5nLCBpc1Jvb3QgPSB0cnVlKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIGF3YWl0IGZzLnJlYWRkaXIoZGlyKSkge1xuICAgICAgICBjb25zdCBmaWxlID0gcGF0aC5qb2luKGRpciwgbmFtZSk7XG4gICAgICAgIGlmICgoYXdhaXQgZnMuc3RhdChmaWxlKSkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgLy8gT25seSBjb25zaWRlciB3aGl0ZS1saXN0ZWQgc291cmNlLWRpcnMgd2hlbiBpbiB0aGUgcm9vdC5cbiAgICAgICAgICAgIGlmICghaXNSb290IHx8IFNPVVJDRV9ESVJTLmhhcyhuYW1lKSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLmF3YWl0IF9maW5kU291cmNlRmlsZXMoZmlsZSwgZmFsc2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNSb290ICYmIG5hbWUgPT09ICd0c2NvbmZpZy5qc29uJykge1xuICAgICAgICAgICAgLy8gUGFydCBvZiBhIGRpZmZlcmVudCB0eXBlc2NyaXB0IHByb2plY3QhXG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEobmFtZS5lbmRzV2l0aCgnLnRzJykgfHwgbmFtZS5lbmRzV2l0aCgnLnRzeCcpKSkgeyBjb250aW51ZTsgfVxuICAgICAgICBpZiAobmFtZS5lbmRzV2l0aCgnLmQudHMnKSB8fMKgbmFtZS5lbmRzV2l0aCgnLmQudHN4JykpIHsgY29udGludWU7IH1cbiAgICAgICAgcmVzdWx0LnB1c2goZmlsZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZCQUE4QjtBQUM5QixzQ0FBdUM7QUFDdkMsK0JBQWdDO0FBQ2hDLGlDQUFrQztBQUNsQyw2QkFBOEI7QUFDOUIsaUNBQWtDO0FBQ2xDLDJDQUF3QztBQUd4QyxpQ0FBa0M7QUFFbEMsTUFBTSxnQkFBZ0IsR0FBdUI7SUFDekMsWUFBWSxFQUFFLElBQUk7SUFDbEIsT0FBTyxFQUFFLE1BQU07SUFDZixXQUFXLEVBQUUsSUFBSTtJQUNqQixzQkFBc0IsRUFBRSxJQUFJO0lBQzVCLGVBQWUsRUFBRSxJQUFJO0lBQ3JCLGFBQWEsRUFBRSxJQUFJO0lBQ25CLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLHdCQUF3QixDQUFDO0lBQzVFLE1BQU0sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVE7SUFDOUIsYUFBYSxFQUFFLElBQUk7SUFDbkIsMEJBQTBCLEVBQUUsSUFBSTtJQUNoQyxhQUFhLEVBQUUsSUFBSTtJQUNuQixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixNQUFNLEVBQUUsSUFBSTtJQUNaLGdCQUFnQixFQUFFLElBQUk7SUFDdEIsNEJBQTRCLEVBQUUsS0FBSztJQUNuQyxNQUFNLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNO0NBQ2pDLENBQUM7QUFFRixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ2pDLFFBQUEsV0FBVyxHQUFHLGFBQWEsQ0FBQztBQVN6QyxNQUFhLFFBQVE7SUFDakIsWUFBb0MsT0FBd0I7UUFBeEIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7SUFBRyxD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LElBQUksS0FBSyxlQUFlLEVBQUU7WUFDckMsMENBQTBDO1lBQzFDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtZQUFFLFNBQVM7U0FBRTtRQUNuRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUFFLFNBQVM7U0FBRTtRQUNwRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDYXNlID0gcmVxdWlyZSgnY2FzZScpO1xuaW1wb3J0IGNvbG9ycyA9IHJlcXVpcmUoJ2NvbG9ycy9zYWZlJyk7XG5pbXBvcnQgZnMgPSByZXF1aXJlKCdmcy1leHRyYScpO1xuaW1wb3J0IGxvZzRqcyA9IHJlcXVpcmUoJ2xvZzRqcycpO1xuaW1wb3J0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5pbXBvcnQgdHMgPSByZXF1aXJlKCd0eXBlc2NyaXB0Jyk7XG5pbXBvcnQgeyBBc3NlbWJsZXIgfSBmcm9tICcuL2Fzc2VtYmxlcic7XG5pbXBvcnQgeyBFbWl0UmVzdWx0LCBFbWl0dGVyIH0gZnJvbSAnLi9lbWl0dGVyJztcbmltcG9ydCB7IFByb2plY3RJbmZvIH0gZnJvbSAnLi9wcm9qZWN0LWluZm8nO1xuaW1wb3J0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG5jb25zdCBDT01QSUxFUl9PUFRJT05TOiB0cy5Db21waWxlck9wdGlvbnMgPSB7XG4gICAgYWx3YXlzU3RyaWN0OiB0cnVlLFxuICAgIGNoYXJzZXQ6ICd1dGY4JyxcbiAgICBkZWNsYXJhdGlvbjogdHJ1ZSxcbiAgICBleHBlcmltZW50YWxEZWNvcmF0b3JzOiB0cnVlLFxuICAgIGlubGluZVNvdXJjZU1hcDogdHJ1ZSxcbiAgICBpbmxpbmVTb3VyY2VzOiB0cnVlLFxuICAgIGxpYjogWydsaWIuZXMyMDE2LmQudHMnLCAnbGliLmVzMjAxNy5vYmplY3QuZC50cycsICdsaWIuZXMyMDE3LnN0cmluZy5kLnRzJ10sXG4gICAgbW9kdWxlOiB0cy5Nb2R1bGVLaW5kLkNvbW1vbkpTLFxuICAgIG5vRW1pdE9uRXJyb3I6IHRydWUsXG4gICAgbm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2g6IHRydWUsXG4gICAgbm9JbXBsaWNpdEFueTogdHJ1ZSxcbiAgICBub0ltcGxpY2l0UmV0dXJuczogdHJ1ZSxcbiAgICBub0ltcGxpY2l0VGhpczogdHJ1ZSxcbiAgICBub1VudXNlZExvY2FsczogdHJ1ZSxcbiAgICBub1VudXNlZFBhcmFtZXRlcnM6IHRydWUsXG4gICAgcmVzb2x2ZUpzb25Nb2R1bGU6IHRydWUsXG4gICAgc3RyaWN0OiB0cnVlLFxuICAgIHN0cmljdE51bGxDaGVja3M6IHRydWUsXG4gICAgc3RyaWN0UHJvcGVydHlJbml0aWFsaXphdGlvbjogZmFsc2UsXG4gICAgdGFyZ2V0OiB0cy5TY3JpcHRUYXJnZXQuRVMyMDE4XG59O1xuXG5jb25zdCBMT0cgPSBsb2c0anMuZ2V0TG9nZ2VyKCdqc2lpL2NvbXBpbGVyJyk7XG5leHBvcnQgY29uc3QgRElBR05PU1RJQ1MgPSAnZGlhZ25vc3RpY3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVyT3B0aW9ucyB7XG4gICAgLyoqIFRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvamVjdCB0byBiZSBidWlsdCAqL1xuICAgIHByb2plY3RJbmZvOiBQcm9qZWN0SW5mbztcbiAgICAvKiogV2hldGhlciB0aGUgY29tcGlsZXIgc2hvdWxkIHdhdGNoIGZvciBjaGFuZ2VzIG9yIGp1c3QgY29tcGlsZSBvbmNlICovXG4gICAgd2F0Y2g6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBDb21waWxlciBpbXBsZW1lbnRzIEVtaXR0ZXIge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IENvbXBpbGVyT3B0aW9ucykge31cblxuICAgIC8qKlxuICAgICAqIENvbXBpbGVzIHRoZSBjb25maWd1cmVkIHByb2dyYW0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZXMgY2FuIGJlIHNwZWNpZmllZCB0byBvdmVycmlkZSB0aGUgc3RhbmRhcmQgc291cmNlIGNvZGUgbG9jYXRpb24gbG9naWMuIFVzZWZ1bCBmb3IgZXhhbXBsZSB3aGVuIHRlc3RpbmcgXCJuZWdhdGl2ZXNcIi5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgZW1pdCguLi5maWxlczogc3RyaW5nW10pOiBQcm9taXNlPEVtaXRSZXN1bHQgfCBuZXZlcj4ge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLndhdGNoKSB7XG4gICAgICAgICAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZXMgY2Fubm90IGJlIHNwZWNpZmllZCBpbiB3YXRjaCBtb2RlIWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX3N0YXJ0V2F0Y2goKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBmaWxlcyA9IGF3YWl0IF9maW5kU291cmNlRmlsZXModGhpcy5vcHRpb25zLnByb2plY3RJbmZvLnByb2plY3RSb290KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9idWlsZE9uY2UoZmlsZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfYnVpbGRPbmNlKGZpbGVzOiBzdHJpbmdbXSk6IFByb21pc2U8RW1pdFJlc3VsdD4ge1xuICAgICAgICBhd2FpdCB0aGlzLl93cml0ZVR5cGVTY3JpcHRDb25maWcoKTtcbiAgICAgICAgY29uc3QgaG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChDT01QSUxFUl9PUFRJT05TKTtcbiAgICAgICAgaWYgKCFob3N0LmdldERlZmF1bHRMaWJMb2NhdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBkZWZhdWx0IGxpYnJhcnkgbG9jYXRpb24gd2FzIGZvdW5kIG9uIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGhvc3QhJyk7XG4gICAgICAgIH1cbiAgICAgICAgaG9zdC5nZXRDdXJyZW50RGlyZWN0b3J5ID0gKCkgPT4gdGhpcy5vcHRpb25zLnByb2plY3RJbmZvLnByb2plY3RSb290O1xuICAgICAgICBjb25zdCBwcm9nID0gdHMuY3JlYXRlUHJvZ3JhbShcbiAgICAgICAgICAgIGZpbGVzLmNvbmNhdChfcGF0aE9mTGlicmFyaWVzKGhvc3QpKSxcbiAgICAgICAgICAgIENPTVBJTEVSX09QVElPTlMsXG4gICAgICAgICAgICBob3N0XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25zdW1lUHJvZ3JhbShwcm9nLCBob3N0LmdldERlZmF1bHRMaWJMb2NhdGlvbigpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9zdGFydFdhdGNoKCk6IFByb21pc2U8bmV2ZXI+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPG5ldmVyPihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9qZWN0Um9vdCA9IHRoaXMub3B0aW9ucy5wcm9qZWN0SW5mby5wcm9qZWN0Um9vdDtcbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSB0cy5jcmVhdGVXYXRjaENvbXBpbGVySG9zdChcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl93cml0ZVR5cGVTY3JpcHRDb25maWcoKSxcbiAgICAgICAgICAgICAgICB7IC4uLkNPTVBJTEVSX09QVElPTlMsIG5vRW1pdE9uRXJyb3I6IGZhbHNlIH0sXG4gICAgICAgICAgICAgICAgeyAuLi50cy5zeXMsIGdldEN1cnJlbnREaXJlY3RvcnkoKSB7IHJldHVybiBwcm9qZWN0Um9vdDsgfSB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFob3N0LmdldERlZmF1bHRMaWJMb2NhdGlvbikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gZGVmYXVsdCBsaWJyYXJ5IGxvY2F0aW9uIHdhcyBmb3VuZCBvbiB0aGUgVHlwZVNjcmlwdCBjb21waWxlciBob3N0IScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgb3JpZyA9IGhvc3QuYWZ0ZXJQcm9ncmFtQ3JlYXRlO1xuICAgICAgICAgICAgaG9zdC5hZnRlclByb2dyYW1DcmVhdGUgPSBhc3luYyBidWlsZGVyUHJvZ3JhbSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fY29uc3VtZVByb2dyYW0oYnVpbGRlclByb2dyYW0uZ2V0UHJvZ3JhbSgpLCBob3N0LmdldERlZmF1bHRMaWJMb2NhdGlvbiEoKSk7XG4gICAgICAgICAgICAgICAgaWYgKG9yaWcpIHsgb3JpZy5jYWxsKGhvc3QsIGJ1aWxkZXJQcm9ncmFtKTsgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRzLmNyZWF0ZVdhdGNoUHJvZ3JhbShob3N0KTtcbiAgICAgICAgICAgIC8vIFByZXZpb3VzIGNhbGwgbmV2ZXIgcmV0dXJuc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9jb25zdW1lUHJvZ3JhbShwcm9ncmFtOiB0cy5Qcm9ncmFtLCBzdGRsaWI6IHN0cmluZyk6IFByb21pc2U8RW1pdFJlc3VsdD4ge1xuICAgICAgICBjb25zdCBlbWl0ID0gcHJvZ3JhbS5lbWl0KCk7XG4gICAgICAgIGlmIChlbWl0LmVtaXRTa2lwcGVkKSB7XG4gICAgICAgICAgICBMT0cuZXJyb3IoJ0NvbXBpbGF0aW9uIGVycm9ycyBwcmV2ZW50ZWQgdGhlIEpTSUkgYXNzZW1ibHkgZnJvbSBiZWluZyBjcmVhdGVkJyk7XG4gICAgICAgICAgICByZXR1cm4gZW1pdDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhc3NlbWJsZXIgPSBuZXcgQXNzZW1ibGVyKHRoaXMub3B0aW9ucy5wcm9qZWN0SW5mbywgcHJvZ3JhbSwgc3RkbGliKTtcbiAgICAgICAgY29uc3QgYXNzbUVtaXQgPSBhd2FpdCBhc3NlbWJsZXIuZW1pdCgpO1xuICAgICAgICBpZiAoYXNzbUVtaXQuZW1pdFNraXBwZWQpIHtcbiAgICAgICAgICAgIExPRy5lcnJvcignVHlwZSBtb2RlbCBlcnJvcnMgcHJldmVudGVkIHRoZSBKU0lJIGFzc2VtYmx5IGZyb20gYmVpbmcgY3JlYXRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbWl0U2tpcHBlZDogYXNzbUVtaXQuZW1pdFNraXBwZWQsXG4gICAgICAgICAgICBkaWFnbm9zdGljczogWy4uLmVtaXQuZGlhZ25vc3RpY3MsIC4uLmFzc21FbWl0LmRpYWdub3N0aWNzXVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgdHNjb25maWcuanNvbmAgZmlsZSB0byBpbXByb3ZlIHRoZSBJREUgZXhwZXJpZW5jZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gdGhlIGZ1bGx5IHF1YWxpZmllZCBwYXRoIHRvIHRoZSBgYHRzY29uZmlnLmpzb25gYCBmaWxlXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBfd3JpdGVUeXBlU2NyaXB0Q29uZmlnKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGNvbW1lbnRLZXkgPSAnX2dlbmVyYXRlZF9ieV9qc2lpXyc7XG4gICAgICAgIGNvbnN0IGNvbW1lbnRWYWx1ZSA9ICdHZW5lcmF0ZWQgYnkganNpaSAtIHNhZmUgdG8gZGVsZXRlLCBhbmQgaWRlYWxseSBzaG91bGQgYmUgaW4gLmdpdGlnbm9yZSc7XG4gICAgICAgIGNvbnN0IGNvbmZpZ1BhdGggPSBwYXRoLmpvaW4odGhpcy5vcHRpb25zLnByb2plY3RJbmZvLnByb2plY3RSb290LCAndHNjb25maWcuanNvbicpO1xuICAgICAgICBpZiAoYXdhaXQgZnMucGF0aEV4aXN0cyhjb25maWdQYXRoKSkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudENvbmZpZyA9IGF3YWl0IGZzLnJlYWRKc29uKGNvbmZpZ1BhdGgpO1xuICAgICAgICAgICAgaWYgKCEoY29tbWVudEtleSBpbiBjdXJyZW50Q29uZmlnKSkge1xuICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEEgJyR7Y29uZmlnUGF0aH0nIGZpbGUgdGhhdCB3YXMgbm90IGdlbmVyYXRlZCBieSBqc2lpIGlzIGluICR7dGhpcy5vcHRpb25zLnByb2plY3RJbmZvLnByb2plY3RSb290fS4gQWJvcnRpbmcgaW5zdGVhZCBvZiBvdmVyd3JpdGluZy5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgICAgICBMT0cuZGVidWcoYENyZWF0aW5nIG9yIHVwZGF0aW5nICR7Y29sb3JzLmJsdWUoY29uZmlnUGF0aCl9YCk7XG4gICAgICAgIGF3YWl0IGZzLndyaXRlSnNvbihjb25maWdQYXRoLCB7XG4gICAgICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAuLi5DT01QSUxFUl9PUFRJT05TLFxuICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gc3RpcCB0aGUgYGxpYi5gIHByZWZpeCBhbmQgYC5kLnRzYCBzdWZmaXhcbiAgICAgICAgICAgICAgICBsaWI6IENPTVBJTEVSX09QVElPTlMubGliICYmIENPTVBJTEVSX09QVElPTlMubGliLm1hcChuYW1lID0+IG5hbWUuc2xpY2UoNCwgbmFtZS5sZW5ndGggLSA1KSksXG4gICAgICAgICAgICAgICAgLy8gVGhvc2UgaW50LWVudW1zLCB3ZSBuZWVkIHRvIG91dHB1dCB0aGUgbmFtZXMgaW5zdGVhZFxuICAgICAgICAgICAgICAgIG1vZHVsZTogQ09NUElMRVJfT1BUSU9OUy5tb2R1bGUgJiYgdHMuTW9kdWxlS2luZFtDT01QSUxFUl9PUFRJT05TLm1vZHVsZV0sXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiBDT01QSUxFUl9PUFRJT05TLnRhcmdldCAmJiB0cy5TY3JpcHRUYXJnZXRbQ09NUElMRVJfT1BUSU9OUy50YXJnZXRdLFxuICAgICAgICAgICAgICAgIGpzeDogQ09NUElMRVJfT1BUSU9OUy5qc3ggJiYgQ2FzZS5zbmFrZSh0cy5Kc3hFbWl0W0NPTVBJTEVSX09QVElPTlMuanN4XSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW2NvbW1lbnRLZXldOiBjb21tZW50VmFsdWVcbiAgICAgICAgfSwgeyAgcmVwbGFjZXI6IHV0aWxzLmZpbHRlckVtcHR5LCBzcGFjZXM6IDQgfSk7XG4gICAgICAgIHJldHVybiBjb25maWdQYXRoO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gX3BhdGhPZkxpYnJhcmllcyhob3N0OiB0cy5Db21waWxlckhvc3QgfCB0cy5XYXRjaENvbXBpbGVySG9zdDxhbnk+KTogc3RyaW5nW10ge1xuICAgIGlmICghQ09NUElMRVJfT1BUSU9OUy5saWIgfHwgQ09NUElMRVJfT1BUSU9OUy5saWIubGVuZ3RoID09PSAwKSB7IHJldHVybiBbXTsgfVxuICAgIGNvbnN0IGxpYiA9IGhvc3QuZ2V0RGVmYXVsdExpYkxvY2F0aW9uICYmIGhvc3QuZ2V0RGVmYXVsdExpYkxvY2F0aW9uKCk7XG4gICAgaWYgKCFsaWIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlciBob3N0IGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgbGlicmFyeSBkaXJlY3RvcnkgYXZhaWxhYmxlIGZvciAke0NPTVBJTEVSX09QVElPTlMubGliLmpvaW4oJywgJyl9YCk7XG4gICAgfVxuICAgIHJldHVybiBDT01QSUxFUl9PUFRJT05TLmxpYi5tYXAobmFtZSA9PiBwYXRoLmpvaW4obGliLCBuYW1lKSk7XG59XG5cbmNvbnN0IFNPVVJDRV9ESVJTID0gbmV3IFNldChbJ2JpbicsICdsaWInLCAndGVzdCddKTtcbmFzeW5jIGZ1bmN0aW9uIF9maW5kU291cmNlRmlsZXMoZGlyOiBzdHJpbmcsIGlzUm9vdCA9IHRydWUpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgYXdhaXQgZnMucmVhZGRpcihkaXIpKSB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBwYXRoLmpvaW4oZGlyLCBuYW1lKTtcbiAgICAgICAgaWYgKChhd2FpdCBmcy5zdGF0KGZpbGUpKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICAvLyBPbmx5IGNvbnNpZGVyIHdoaXRlLWxpc3RlZCBzb3VyY2UtZGlycyB3aGVuIGluIHRoZSByb290LlxuICAgICAgICAgICAgaWYgKCFpc1Jvb3QgfHwgU09VUkNFX0RJUlMuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uYXdhaXQgX2ZpbmRTb3VyY2VGaWxlcyhmaWxlLCBmYWxzZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1Jvb3QgJiYgbmFtZSA9PT0gJ3RzY29uZmlnLmpzb24nKSB7XG4gICAgICAgICAgICAvLyBQYXJ0IG9mIGEgZGlmZmVyZW50IHR5cGVzY3JpcHQgcHJvamVjdCFcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIShuYW1lLmVuZHNXaXRoKCcudHMnKSB8fCBuYW1lLmVuZHNXaXRoKCcudHN4JykpKSB7IGNvbnRpbnVlOyB9XG4gICAgICAgIGlmIChuYW1lLmVuZHNXaXRoKCcuZC50cycpIHx8wqBuYW1lLmVuZHNXaXRoKCcuZC50c3gnKSkgeyBjb250aW51ZTsgfVxuICAgICAgICByZXN1bHQucHVzaChmaWxlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==

@@ -15,2 +15,3 @@ import spec = require('jsii-spec');

readonly dependencies: ReadonlyArray<spec.Assembly>;
readonly peerDependencies: ReadonlyArray<spec.Assembly>;
readonly transitiveDependencies: ReadonlyArray<spec.Assembly>;

@@ -17,0 +18,0 @@ readonly bundleDependencies: {

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

}
if (pkg.peerDependencies && name in pkg.peerDependencies) {
throw new Error(`The "package.json" has "${name}" in "bundleDependencies", and also in "peerDependencies"`);
}
bundleDependencies[name] = version;
});
const [dependencies, transitiveDependencies] = await _loadDependencies(pkg.dependencies, projectRoot, new Set(Object.keys(bundleDependencies)));
const transitiveAssemblies = {};
const dependencies = await _loadDependencies(pkg.dependencies, projectRoot, transitiveAssemblies, new Set(Object.keys(bundleDependencies)));
const peerDependencies = await _loadDependencies(pkg.peerDependencies, projectRoot, transitiveAssemblies);
const transitiveDependencies = Object.keys(transitiveAssemblies).map(name => transitiveAssemblies[name]);
return {

@@ -37,2 +43,3 @@ projectRoot,

dependencies,
peerDependencies,
transitiveDependencies,

@@ -58,8 +65,7 @@ bundleDependencies,

}
async function _loadDependencies(dependencies, searchPath, bundled = new Set()) {
async function _loadDependencies(dependencies, searchPath, transitiveAssemblies, bundled = new Set()) {
if (!dependencies) {
return [[], []];
return [];
}
const assemblies = new Array();
const transitiveAssemblies = new Array();
for (const name of Object.keys(dependencies)) {

@@ -82,15 +88,9 @@ if (bundled.has(name)) {

assemblies.push(assm);
transitiveAssemblies.push(assm);
transitiveAssemblies[assm.name] = assm;
const pkgDir = path.dirname(pkg);
if (assm.dependencies) {
const [depAssemblies, depTransitiveAssemblies,] = await _loadDependencies(assm.dependencies, pkgDir);
for (const depAssembly of depAssemblies.concat(depTransitiveAssemblies)) {
if (transitiveAssemblies.find(a => a.name === depAssembly.name) != null) {
continue;
}
transitiveAssemblies.push(depAssembly);
}
await _loadDependencies(assm.dependencies, pkgDir, transitiveAssemblies);
}
}
return [assemblies, transitiveAssemblies];
return assemblies;
}

@@ -130,2 +130,2 @@ function _required(value, message) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJvamVjdC1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQWdDO0FBQ2hDLGtDQUFtQztBQUNuQyxpQ0FBa0M7QUFDbEMsNkJBQThCO0FBQzlCLGlDQUFrQztBQUVsQyx3RUFBd0U7QUFDeEUsTUFBTSxJQUFJLEdBQWdCLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBQzlELGdDQUFnQztBQUVoQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUEwQjNDLEtBQUssVUFBVSxlQUFlLENBQUMsV0FBbUI7SUFDckQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFFNUQsTUFBTSxrQkFBa0IsR0FBK0IsRUFBRSxDQUFDO0lBQzFELENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFJLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRTtRQUMvRSxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLElBQUkscUVBQXFFLENBQUMsQ0FBQztTQUN6SDtRQUNELGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLENBQUMsR0FDcEMsTUFBTSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxJQUFJLEdBQUcsQ0FBUyxNQUFNLENBQUMsSUFBSSxD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LElBQUk7UUFDQSxNQUFNLEtBQUssR0FBRyxDQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBRSxDQUFDO1FBQ3BFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQzFDO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDUixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ3REO0FBQ0wsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsRUFBVTtJQUNoQyxJQUFJLEVBQUUsS0FBSyxZQUFZLEVBQUU7UUFBRSxPQUFPLEVBQUUsQ0FBQztLQUFFO0lBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxnRUFBZ0UsQ0FBQyxDQUFDO0tBQ3RIO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzID0gcmVxdWlyZSgnZnMtZXh0cmEnKTtcbmltcG9ydCBzcGVjID0gcmVxdWlyZSgnanNpaS1zcGVjJyk7XG5pbXBvcnQgbG9nNGpzID0gcmVxdWlyZSgnbG9nNGpzJyk7XG5pbXBvcnQgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmltcG9ydCBzZW12ZXIgPSByZXF1aXJlKCdzZW12ZXInKTtcblxuLy8gdHNsaW50OmRpc2FibGU6bm8tdmFyLXJlcXVpcmVzIE1vZHVsZXMgd2l0aG91dCBUeXBlU2NyaXB0IGRlZmluaXRpb25zXG5jb25zdCBzcGR4OiBTZXQ8c3RyaW5nPiA9IHJlcXVpcmUoJ3NwZHgtbGljZW5zZS1saXN0L3NpbXBsZScpO1xuLy8gdHNsaW50OmVuYWJsZTpuby12YXItcmVxdWlyZXNcblxuY29uc3QgTE9HID0gbG9nNGpzLmdldExvZ2dlcignanNpaS9wYWNrYWdlLWluZm8nKTtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0SW5mbyB7XG4gICAgcmVhZG9ubHkgcHJvamVjdFJvb3Q6IHN0cmluZztcblxuICAgIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYXV0aG9yOiBzcGVjLlBlcnNvbjtcbiAgICByZWFkb25seSBsaWNlbnNlOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcmVwb3NpdG9yeToge1xuICAgICAgICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG4gICAgICAgIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuICAgIH07XG5cbiAgICByZWFkb25seSBtYWluOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdHlwZXM6IHN0cmluZztcblxuICAgIHJlYWRvbmx5IGRlcGVuZGVuY2llczogUmVhZG9ubHlBcnJheTxzcGVjLkFzc2VtYmx5PjtcbiAgICByZWFkb25seSB0cmFuc2l0aXZlRGVwZW5kZW5jaWVzOiBSZWFkb25seUFycmF5PHNwZWMuQXNzZW1ibHk+O1xuICAgIHJlYWRvbmx5IGJ1bmRsZURlcGVuZGVuY2llczogeyByZWFkb25seSBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgcmVhZG9ubHkgdGFyZ2V0czogc3BlYy5Bc3NlbWJseVRhcmdldHM7XG4gICAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgaG9tZXBhZ2U/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgY29udHJpYnV0b3JzPzogUmVhZG9ubHlBcnJheTxzcGVjLlBlcnNvbj47XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkUHJvamVjdEluZm8ocHJvamVjdFJvb3Q6IHN0cmluZyk6IFByb21pc2U8UHJvamVjdEluZm8+IHtcbiAgICBjb25zdCBwa2cgPSByZXF1aXJlKHBhdGguam9pbihwcm9qZWN0Um9vdCwgJ3BhY2thZ2UuanNvbicpKTtcblxuICAgIGNvbnN0IGJ1bmRsZURlcGVuZGVuY2llczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICAocGtnLmJ1bmRsZURlcGVuZGVuY2llcyB8fCBwa2cuYnVuZGxlZERlcGVuZGVuY2llcyB8fCBbXSkuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSBwa2cuZGVwZW5kZW5jaWVzICYmIHBrZy5kZXBlbmRlbmNpZXNbbmFtZV07XG4gICAgICAgIGlmICghdmVyc2lvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgXCJwYWNrYWdlLmpzb25cIiBoYXMgXCIke25hbWV9XCIgaW4gXCJidW5kbGVEZXBlbmRlbmNpZXNcIiwgYnV0IGl0IGlzIG5vdCBkZWNsYXJlZCBpbiBcImRlcGVuZGVuY2llc1wiYCk7XG4gICAgICAgIH1cbiAgICAgICAgYnVuZGxlRGVwZW5kZW5jaWVzW25hbWVdID0gdmVyc2lvbjtcbiAgICB9KTtcblxuICAgIGNvbnN0IFtkZXBlbmRlbmNpZXMsIHRyYW5zaXRpdmVEZXBlbmRlbmNpZXNdID1cbiAgICAgICAgICAgIGF3YWl0IF9sb2FkRGVwZW5kZW5jaWVzKHBrZy5kZXBlbmRlbmNpZXMsIHByb2plY3RSb290LCBuZXcgU2V0PHN0cmluZz4oT2JqZWN0LmtleXMoYnVuZGxlRGVwZW5kZW5jaWVzKSkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvamVjdFJvb3QsXG5cbiAgICAgICAgbmFtZTogX3JlcXVpcmVkKHBrZy5uYW1lLCAnVGhlIFwicGFja2FnZS5qc29uXCIgZmlsZSBtdXN0IHNwZWNpZnkgdGhlIFwibmFtZVwiIGF0dHJpYnV0ZScpLFxuICAgICAgICB2ZXJzaW9uOiBfcmVxdWlyZWQocGtnLnZlcnNpb24sICdUaGUgXCJwYWNrYWdlLmpzb25cIiBmaWxlIG11c3Qgc3BlY2lmeSB0aGUgXCJ2ZXJzaW9uXCIgYXR0cmlidXRlJyksXG4gICAgICAgIGF1dGhvcjogX3RvUGVyc29uKF9yZXF1aXJlZChwa2cuYXV0aG9yLCAnVGhlIFwicGFja2FnZS5qc29uXCIgZmlsZSBtdXN0IHNwZWNpZnkgdGhlIFwiYXV0aG9yXCIgYXR0cmlidXRlJyksICdhdXRob3InKSxcbiAgICAgICAgcmVwb3NpdG9yeToge1xuICAgICAgICAgICAgdXJsOiBfcmVxdWlyZWQocGtnLnJlcG9zaXRvcnkudXJsLCAnVGhlIFwicGFja2FnZS5qc29uXCIgZmlsZSBtdXN0IHNwZWNpZnkgdGhlIFwicmVwb3NpdG9yeS51cmxcIiBhdHRyaWJ1dGUnKSxcbiAgICAgICAgICAgIHR5cGU6IHBrZy5yZXBvc2l0b3J5LnR5cGUgfHwgX2d1ZXNzUmVwb3NpdG9yeVR5cGUocGtnLnJlcG9zaXRvcnkudXJsKVxuICAgICAgICB9LFxuICAgICAgICBsaWNlbnNlOiBfdmFsaWRhdGVMaWNlbnNlKHBrZy5saWNlbnNlKSxcblxuICAgICAgICBtYWluOiBfcmVxdWlyZWQocGtnLm1haW4sICdUaGUgXCJwYWNrYWdlLmpzb25cIiBmaWxlIG11c3Qgc3BlY2lmeSB0aGUgXCJtYWluXCIgYXR0cmlidXRlJyksXG4gICAgICAgIHR5cGVzOiBfcmVxdWlyZWQocGtnLnR5cGVzLCAnVGhlIFwicGFja2FnZS5qc29uXCIgZmlsZSBtdXN0IHNwZWNpZnkgdGhlIFwidHlwZXNcIiBhdHRyaWJ1dGUnKSxcblxuICAgICAgICBkZXBlbmRlbmNpZXMsXG4gICAgICAgIHRyYW5zaXRpdmVEZXBlbmRlbmNpZXMsXG4gICAgICAgIGJ1bmRsZURlcGVuZGVuY2llcyxcbiAgICAgICAgdGFyZ2V0czoge1xuICAgICAgICAgICAgLi4uX3JlcXVpcmVkKHBrZy5qc2lpLCAnVGhlIFwicGFja2FnZS5qc29uXCIgZmlsZSBtdXN0IHNwZWNpZnkgdGhlIFwianNpaVwiIGF0dHJpYnV0ZScpLnRhcmdldHMsXG4gICAgICAgICAgICBqczogeyBucG06IHBrZy5uYW1lIH1cbiAgICAgICAgfSxcblxuICAgICAgICBkZXNjcmlwdGlvbjogcGtnLmRlc2NyaXB0aW9uLFxuICAgICAgICBob21lcGFnZTogcGtnLmhvbWVwYWdlLFxuICAgICAgICBjb250cmlidXRvcnM6IHBrZy5jb250cmlidXRvcnNcbiAgICAgICAgICAgICYmIChwa2cuY29udHJpYnV0b3JzIGFzIGFueVtdKS5tYXAoKGNvbnRyaWIsIGluZGV4KSA9PiBfdG9QZXJzb24oY29udHJpYiwgYGNvbnRyaWJ1dG9yc1ske2luZGV4fV1gLCAnY29udHJpYnV0b3InKSlcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBfZ3Vlc3NSZXBvc2l0b3J5VHlwZSh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHVybC5lbmRzV2l0aCgnLmdpdCcpKSB7IHJldHVybiAnZ2l0JzsgfVxuICAgIGNvbnN0IHBhcnRzID0gdXJsLm1hdGNoKC9eKFteOl0rKTpcXC9cXC8vKTtcbiAgICBpZiAocGFydHMgJiYgcGFydHNbMV0gIT09ICdodHRwJyAmJiBwYXJ0c1sxXSAhPT0gJ2h0dHBzJykge1xuICAgICAgICByZXR1cm4gcGFydHNbMV07XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIFwicGFja2FnZS5qc29uXCIgZmlsZSBtdXN0IHNwZWNpZnkgdGhlIFwicmVwb3NpdG9yeS50eXBlXCIgYXR0cmlidXRlIChjb3VsZCBub3QgZ3Vlc3MgZnJvbSAke3VybH0pYCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIF9sb2FkRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHzCoHNwZWMuUGFja2FnZVZlcnNpb24gfSB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFBhdGg6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1bmRsZWQ6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpKTogUHJvbWlzZTxbc3BlYy5Bc3NlbWJseVtdLCBzcGVjLkFzc2VtYmx5W11dPiB7XG4gICAgaWYgKCFkZXBlbmRlbmNpZXMpIHsgcmV0dXJuIFtbXSwgW11dOyB9XG4gICAgY29uc3QgYXNzZW1ibGllcyA9IG5ldyBBcnJheTxzcGVjLkFzc2VtYmx5PigpO1xuICAgIGNvbnN0IHRyYW5zaXRpdmVBc3NlbWJsaWVzID0gbmV3IEFycmF5PHNwZWMuQXNzZW1ibHk+KCk7XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKGRlcGVuZGVuY2llcykpIHtcbiAgICAgICAgaWYgKGJ1bmRsZWQuaGFzKG5hbWUpKSB7IGNvbnRpbnVlOyB9XG4gICAgICAgIGNvbnN0IGRlcCA9IGRlcGVuZGVuY2llc1tuYW1lXTtcbiAgICAgICAgY29uc3QgdmVyc2lvblN0cmluZyA9IHR5cGVvZiBkZXAgPT09ICdzdHJpbmcnID8gZGVwIDogZGVwLnZlcnNpb247XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSBuZXcgc2VtdmVyLlJhbmdlKHZlcnNpb25TdHJpbmcpO1xuICAgICAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzZW12ZXIgZXhwcmVzc2lvbiBmb3IgJHtuYW1lfTogJHt2ZXJzaW9uU3RyaW5nfWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBrZyA9IF90cnlSZXNvbHZlKHBhdGguam9pbihuYW1lLCAnLmpzaWknKSwgc2VhcmNoUGF0aCk7XG4gICAgICAgIExPRy5kZWJ1ZyhgUmVzb2x2ZWQgZGVwZW5kZW5jeSAke25hbWV9IHRvICR7cGtnfWApO1xuICAgICAgICBjb25zdCBhc3NtID0gc3BlYy52YWxpZGF0ZUFzc2VtYmx5KGF3YWl0IGZzLnJlYWRKc29uKHBrZykpO1xuICAgICAgICBpZiAoIXZlcnNpb24uaW50ZXJzZWN0cyhuZXcgc2VtdmVyLlJhbmdlKGFzc20udmVyc2lvbikpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERlY2xhcmVkIGRlcGVuZGVuY3kgb24gdmVyc2lvbiAke3ZlcnNpb25TdHJpbmd9IG9mICR7bmFtZX0sIGJ1dCB2ZXJzaW9uICR7YXNzbS52ZXJzaW9ufSB3YXMgZm91bmRgKTtcbiAgICAgICAgfVxuICAgICAgICBhc3NlbWJsaWVzLnB1c2goYXNzbSk7XG4gICAgICAgIHRyYW5zaXRpdmVBc3NlbWJsaWVzLnB1c2goYXNzbSk7XG4gICAgICAgIGNvbnN0IHBrZ0RpciA9IHBhdGguZGlybmFtZShwa2cpO1xuICAgICAgICBpZiAoYXNzbS5kZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IFtkZXBBc3NlbWJsaWVzLCBkZXBUcmFuc2l0aXZlQXNzZW1ibGllcywgXSA9IGF3YWl0IF9sb2FkRGVwZW5kZW5jaWVzKGFzc20uZGVwZW5kZW5jaWVzLCBwa2dEaXIpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBkZXBBc3NlbWJseSBvZiBkZXBBc3NlbWJsaWVzLmNvbmNhdChkZXBUcmFuc2l0aXZlQXNzZW1ibGllcykpIHtcbiAgICAgICAgICAgICAgICBpZiAodHJhbnNpdGl2ZUFzc2VtYmxpZXMuZmluZChhID0+IGEubmFtZSA9PT0gZGVwQXNzZW1ibHkubmFtZSkgIT0gbnVsbCkgeyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgIHRyYW5zaXRpdmVBc3NlbWJsaWVzLnB1c2goZGVwQXNzZW1ibHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbYXNzZW1ibGllcywgdHJhbnNpdGl2ZUFzc2VtYmxpZXNdO1xufVxuXG5mdW5jdGlvbiBfcmVxdWlyZWQ8VD4odmFsdWU6IFQsIG1lc3NhZ2U6IHN0cmluZyk6IFQge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiBfdG9QZXJzb24odmFsdWU6IGFueSwgZmllbGQ6IHN0cmluZywgZGVmYXVsdFJvbGU6IHN0cmluZyA9IGZpZWxkKTogc3BlYy5QZXJzb24ge1xuICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IF9yZXF1aXJlZCh2YWx1ZS5uYW1lLCBgVGhlIFwicGFja2FnZS5qc29uXCIgZmlsZSBtdXN0IHNwZWNpZnkgdGhlIFwiJHtmaWVsZH0ubmFtZVwiIGF0dHJpYnV0ZWApLFxuICAgICAgICByb2xlczogdmFsdWUucm9sZXMgPyBbLi4ubmV3IFNldCh2YWx1ZS5yb2xlcyBhcyBzdHJpbmdbXSldIDogW2RlZmF1bHRSb2xlXSxcbiAgICAgICAgZW1haWw6IHZhbHVlLmVtYWlsLFxuICAgICAgICB1cmw6IHZhbHVlLnVybCxcbiAgICAgICAgb3JnYW5pemF0aW9uOiB2YWx1ZS5vcmdhbml6YXRpb24gPyB2YWx1ZS5vcmdhbml6YXRpb24gOiB1bmRlZmluZWRcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBfdHJ5UmVzb2x2ZShtb2Q6IHN0cmluZywgc2VhcmNoUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXRocyA9IFsgc2VhcmNoUGF0aCwgcGF0aC5qb2luKHNlYXJjaFBhdGgsICdub2RlX21vZHVsZXMnKSBdO1xuICAgICAgICByZXR1cm4gcmVxdWlyZS5yZXNvbHZlKG1vZCwgeyBwYXRocyB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvY2F0ZSBtb2R1bGU6ICR7bW9kfWApO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gX3ZhbGlkYXRlTGljZW5zZShpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoaWQgPT09ICdVTkxJQ0VOU0VEJykgeyByZXR1cm4gaWQ7IH1cbiAgICBpZiAoIXNwZHguaGFzKGlkKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbGljZW5zZSBpZGVudGlmaWVyIFwiJHtpZH1cIiwgc2VlIHZhbGlkIGxpY2Vuc2UgaWRlbnRpZmllcnMgYXQgaHR0cHM6Ly9zcGR4Lm9yZy9saWNlbnNlcy9gKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJvamVjdC1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQWdDO0FBQ2hDLGtDQUFtQztBQUNuQyxpQ0FBa0M7QUFDbEMsNkJBQThCO0FBQzlCLGlDQUFrQztBQUVsQyx3RUFBd0U7QUFDeEUsTUFBTSxJQUFJLEdBQWdCLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBQzlELGdDQUFnQztBQUVoQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUEyQjNDLEtBQUssVUFBVSxlQUFlLENBQUMsV0FBbUI7SUFDckQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFFNUQsTUFBTSxrQkFBa0IsR0FBK0IsRUFBRSxDQUFDO0lBQzFELENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFJLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRTtRQUMvRSxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLElBQUkscUVBQXFFLENBQUMsQ0FBQztTQUN6SDtRQUVELElBQUksR0FBRyxDQUFDLGdCQUFnQixJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsZ0JBQWdCLEVBQUU7WUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsSUFBSSwyREFBMkQsQ0FBQyxDQUFDO1NBQy9HO1FBRUQsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxD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QUFDTixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsR0FBVyxFQUFFLFVBQWtCO0lBQ2hELElBQUk7UUFDQSxNQUFNLEtBQUssR0FBRyxDQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBRSxDQUFDO1FBQ3BFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQzFDO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDUixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ3REO0FBQ0wsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsRUFBVTtJQUNoQyxJQUFJLEVBQUUsS0FBSyxZQUFZLEVBQUU7UUFBRSxPQUFPLEVBQUUsQ0FBQztLQUFFO0lBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxnRUFBZ0UsQ0FBQyxDQUFDO0tBQ3RIO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzID0gcmVxdWlyZSgnZnMtZXh0cmEnKTtcbmltcG9ydCBzcGVjID0gcmVxdWlyZSgnanNpaS1zcGVjJyk7XG5pbXBvcnQgbG9nNGpzID0gcmVxdWlyZSgnbG9nNGpzJyk7XG5pbXBvcnQgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmltcG9ydCBzZW12ZXIgPSByZXF1aXJlKCdzZW12ZXInKTtcblxuLy8gdHNsaW50OmRpc2FibGU6bm8tdmFyLXJlcXVpcmVzIE1vZHVsZXMgd2l0aG91dCBUeXBlU2NyaXB0IGRlZmluaXRpb25zXG5jb25zdCBzcGR4OiBTZXQ8c3RyaW5nPiA9IHJlcXVpcmUoJ3NwZHgtbGljZW5zZS1saXN0L3NpbXBsZScpO1xuLy8gdHNsaW50OmVuYWJsZTpuby12YXItcmVxdWlyZXNcblxuY29uc3QgTE9HID0gbG9nNGpzLmdldExvZ2dlcignanNpaS9wYWNrYWdlLWluZm8nKTtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0SW5mbyB7XG4gICAgcmVhZG9ubHkgcHJvamVjdFJvb3Q6IHN0cmluZztcblxuICAgIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYXV0aG9yOiBzcGVjLlBlcnNvbjtcbiAgICByZWFkb25seSBsaWNlbnNlOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcmVwb3NpdG9yeToge1xuICAgICAgICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG4gICAgICAgIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuICAgIH07XG5cbiAgICByZWFkb25seSBtYWluOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdHlwZXM6IHN0cmluZztcblxuICAgIHJlYWRvbmx5IGRlcGVuZGVuY2llczogUmVhZG9ubHlBcnJheTxzcGVjLkFzc2VtYmx5PjtcbiAgICByZWFkb25seSBwZWVyRGVwZW5kZW5jaWVzOiBSZWFkb25seUFycmF5PHNwZWMuQXNzZW1ibHk+O1xuICAgIHJlYWRvbmx5IHRyYW5zaXRpdmVEZXBlbmRlbmNpZXM6IFJlYWRvbmx5QXJyYXk8c3BlYy5Bc3NlbWJseT47XG4gICAgcmVhZG9ubHkgYnVuZGxlRGVwZW5kZW5jaWVzOiB7IHJlYWRvbmx5IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICByZWFkb25seSB0YXJnZXRzOiBzcGVjLkFzc2VtYmx5VGFyZ2V0cztcbiAgICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICByZWFkb25seSBob21lcGFnZT86IHN0cmluZztcbiAgICByZWFkb25seSBjb250cmlidXRvcnM/OiBSZWFkb25seUFycmF5PHNwZWMuUGVyc29uPjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRQcm9qZWN0SW5mbyhwcm9qZWN0Um9vdDogc3RyaW5nKTogUHJvbWlzZTxQcm9qZWN0SW5mbz4ge1xuICAgIGNvbnN0IHBrZyA9IHJlcXVpcmUocGF0aC5qb2luKHByb2plY3RSb290LCAncGFja2FnZS5qc29uJykpO1xuXG4gICAgY29uc3QgYnVuZGxlRGVwZW5kZW5jaWVzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIChwa2cuYnVuZGxlRGVwZW5kZW5jaWVzIHx8IHBrZy5idW5kbGVkRGVwZW5kZW5jaWVzIHx8IFtdKS5mb3JFYWNoKChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IHBrZy5kZXBlbmRlbmNpZXMgJiYgcGtnLmRlcGVuZGVuY2llc1tuYW1lXTtcbiAgICAgICAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBcInBhY2thZ2UuanNvblwiIGhhcyBcIiR7bmFtZX1cIiBpbiBcImJ1bmRsZURlcGVuZGVuY2llc1wiLCBidXQgaXQgaXMgbm90IGRlY2xhcmVkIGluIFwiZGVwZW5kZW5jaWVzXCJgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwa2cucGVlckRlcGVuZGVuY2llcyAmJiBuYW1lIGluIHBrZy5wZWVyRGVwZW5kZW5jaWVzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBcInBhY2thZ2UuanNvblwiIGhhcyBcIiR7bmFtZX1cIiBpbiBcImJ1bmRsZURlcGVuZGVuY2llc1wiLCBhbmQgYWxzbyBpbiBcInBlZXJEZXBlbmRlbmNpZXNcImApO1xuICAgICAgICB9XG5cbiAgICAgICAgYnVuZGxlRGVwZW5kZW5jaWVzW25hbWVdID0gdmVyc2lvbjtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRyYW5zaXRpdmVBc3NlbWJsaWVzOiB7IFtuYW1lOiBzdHJpbmddOiBzcGVjLkFzc2VtYmx5IH0gPSB7fTtcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPVxuICAgICAgICBhd2FpdCBfbG9hZERlcGVuZGVuY2llcyhwa2cuZGVwZW5kZW5jaWVzLCBwcm9qZWN0Um9vdCwgdHJhbnNpdGl2ZUFzc2VtYmxpZXMsIG5ldyBTZXQ8c3RyaW5nPihPYmplY3Qua2V5cyhidW5kbGVEZXBlbmRlbmNpZXMpKSk7XG4gICAgY29uc3QgcGVlckRlcGVuZGVuY2llcyA9XG4gICAgICAgIGF3YWl0IF9sb2FkRGVwZW5kZW5jaWVzKHBrZy5wZWVyRGVwZW5kZW5jaWVzLCBwcm9qZWN0Um9vdCwgdHJhbnNpdGl2ZUFzc2VtYmxpZXMpO1xuXG4gICAgY29uc3QgdHJhbnNpdGl2ZURlcGVuZGVuY2llcyA9IE9iamVjdC5rZXlzKHRyYW5zaXRpdmVBc3NlbWJsaWVzKS5tYXAobmFtZSA9PiB0cmFuc2l0aXZlQXNzZW1ibGllc1tuYW1lXSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBwcm9qZWN0Um9vdCxcblxuICAgICAgICBuYW1lOiBfcmVxdWlyZWQocGtnLm5hbWUsICdUaGUgXCJwYWNrYWdlLmpzb25cIiBmaWxlIG11c3Qgc3BlY2lmeSB0aGUgXCJuYW1lXCIgYXR0cmlidXRlJyksXG4gICAgICAgIHZlcnNpb246IF9yZXF1aXJlZChwa2cudmVyc2lvbiwgJ1RoZSBcInBhY2thZ2UuanNvblwiIGZpbGUgbXVzdCBzcGVjaWZ5IHRoZSBcInZlcnNpb25cIiBhdHRyaWJ1dGUnKSxcbiAgICAgICAgYXV0aG9yOiBfdG9QZXJzb24oX3JlcXVpcmVkKHBrZy5hdXRob3IsICdUaGUgXCJwYWNrYWdlLmpzb25cIiBmaWxlIG11c3Qgc3BlY2lmeSB0aGUgXCJhdXRob3JcIiBhdHRyaWJ1dGUnKSwgJ2F1dGhvcicpLFxuICAgICAgICByZXBvc2l0b3J5OiB7XG4gICAgICAgICAgICB1cmw6IF9yZXF1aXJlZChwa2cucmVwb3NpdG9yeS51cmwsICdUaGUgXCJwYWNrYWdlLmpzb25cIiBmaWxlIG11c3Qgc3BlY2lmeSB0aGUgXCJyZXBvc2l0b3J5LnVybFwiIGF0dHJpYnV0ZScpLFxuICAgICAgICAgICAgdHlwZTogcGtnLnJlcG9zaXRvcnkudHlwZSB8fCBfZ3Vlc3NSZXBvc2l0b3J5VHlwZShwa2cucmVwb3NpdG9yeS51cmwpXG4gICAgICAgIH0sXG4gICAgICAgIGxpY2Vuc2U6IF92YWxpZGF0ZUxpY2Vuc2UocGtnLmxpY2Vuc2UpLFxuXG4gICAgICAgIG1haW46IF9yZXF1aXJlZChwa2cubWFpbiwgJ1RoZSBcInBhY2thZ2UuanNvblwiIGZpbGUgbXVzdCBzcGVjaWZ5IHRoZSBcIm1haW5cIiBhdHRyaWJ1dGUnKSxcbiAgICAgICAgdHlwZXM6IF9yZXF1aXJlZChwa2cudHlwZXMsICdUaGUgXCJwYWNrYWdlLmpzb25cIiBmaWxlIG11c3Qgc3BlY2lmeSB0aGUgXCJ0eXBlc1wiIGF0dHJpYnV0ZScpLFxuXG4gICAgICAgIGRlcGVuZGVuY2llcyxcbiAgICAgICAgcGVlckRlcGVuZGVuY2llcyxcbiAgICAgICAgdHJhbnNpdGl2ZURlcGVuZGVuY2llcyxcbiAgICAgICAgYnVuZGxlRGVwZW5kZW5jaWVzLFxuICAgICAgICB0YXJnZXRzOiB7XG4gICAgICAgICAgICAuLi5fcmVxdWlyZWQocGtnLmpzaWksICdUaGUgXCJwYWNrYWdlLmpzb25cIiBmaWxlIG11c3Qgc3BlY2lmeSB0aGUgXCJqc2lpXCIgYXR0cmlidXRlJykudGFyZ2V0cyxcbiAgICAgICAgICAgIGpzOiB7IG5wbTogcGtnLm5hbWUgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGRlc2NyaXB0aW9uOiBwa2cuZGVzY3JpcHRpb24sXG4gICAgICAgIGhvbWVwYWdlOiBwa2cuaG9tZXBhZ2UsXG4gICAgICAgIGNvbnRyaWJ1dG9yczogcGtnLmNvbnRyaWJ1dG9yc1xuICAgICAgICAgICAgJiYgKHBrZy5jb250cmlidXRvcnMgYXMgYW55W10pLm1hcCgoY29udHJpYiwgaW5kZXgpID0+IF90b1BlcnNvbihjb250cmliLCBgY29udHJpYnV0b3JzWyR7aW5kZXh9XWAsICdjb250cmlidXRvcicpKVxuICAgIH07XG59XG5cbmZ1bmN0aW9uIF9ndWVzc1JlcG9zaXRvcnlUeXBlKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodXJsLmVuZHNXaXRoKCcuZ2l0JykpIHsgcmV0dXJuICdnaXQnOyB9XG4gICAgY29uc3QgcGFydHMgPSB1cmwubWF0Y2goL14oW146XSspOlxcL1xcLy8pO1xuICAgIGlmIChwYXJ0cyAmJiBwYXJ0c1sxXSAhPT0gJ2h0dHAnICYmIHBhcnRzWzFdICE9PSAnaHR0cHMnKSB7XG4gICAgICAgIHJldHVybiBwYXJ0c1sxXTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgXCJwYWNrYWdlLmpzb25cIiBmaWxlIG11c3Qgc3BlY2lmeSB0aGUgXCJyZXBvc2l0b3J5LnR5cGVcIiBhdHRyaWJ1dGUgKGNvdWxkIG5vdCBndWVzcyBmcm9tICR7dXJsfSlgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2xvYWREZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfMKgc3BlYy5QYWNrYWdlVmVyc2lvbiB9IHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoUGF0aDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGl2ZUFzc2VtYmxpZXM6IHsgW25hbWU6IHN0cmluZ106IHNwZWMuQXNzZW1ibHkgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1bmRsZWQgPSBuZXcgU2V0PHN0cmluZz4oKSk6IFByb21pc2U8c3BlYy5Bc3NlbWJseVtdPiB7XG4gICAgaWYgKCFkZXBlbmRlbmNpZXMpIHsgcmV0dXJuIFtdOyB9XG4gICAgY29uc3QgYXNzZW1ibGllcyA9IG5ldyBBcnJheTxzcGVjLkFzc2VtYmx5PigpO1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhkZXBlbmRlbmNpZXMpKSB7XG4gICAgICAgIGlmIChidW5kbGVkLmhhcyhuYW1lKSkgeyBjb250aW51ZTsgfVxuICAgICAgICBjb25zdCBkZXAgPSBkZXBlbmRlbmNpZXNbbmFtZV07XG4gICAgICAgIGNvbnN0IHZlcnNpb25TdHJpbmcgPSB0eXBlb2YgZGVwID09PSAnc3RyaW5nJyA/IGRlcCA6IGRlcC52ZXJzaW9uO1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gbmV3IHNlbXZlci5SYW5nZSh2ZXJzaW9uU3RyaW5nKTtcbiAgICAgICAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2VtdmVyIGV4cHJlc3Npb24gZm9yICR7bmFtZX06ICR7dmVyc2lvblN0cmluZ31gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwa2cgPSBfdHJ5UmVzb2x2ZShwYXRoLmpvaW4obmFtZSwgJy5qc2lpJyksIHNlYXJjaFBhdGgpO1xuICAgICAgICBMT0cuZGVidWcoYFJlc29sdmVkIGRlcGVuZGVuY3kgJHtuYW1lfSB0byAke3BrZ31gKTtcbiAgICAgICAgY29uc3QgYXNzbSA9IHNwZWMudmFsaWRhdGVBc3NlbWJseShhd2FpdCBmcy5yZWFkSnNvbihwa2cpKTtcbiAgICAgICAgaWYgKCF2ZXJzaW9uLmludGVyc2VjdHMobmV3IHNlbXZlci5SYW5nZShhc3NtLnZlcnNpb24pKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEZWNsYXJlZCBkZXBlbmRlbmN5IG9uIHZlcnNpb24gJHt2ZXJzaW9uU3RyaW5nfSBvZiAke25hbWV9LCBidXQgdmVyc2lvbiAke2Fzc20udmVyc2lvbn0gd2FzIGZvdW5kYCk7XG4gICAgICAgIH1cbiAgICAgICAgYXNzZW1ibGllcy5wdXNoKGFzc20pO1xuICAgICAgICB0cmFuc2l0aXZlQXNzZW1ibGllc1thc3NtLm5hbWVdID0gYXNzbTtcbiAgICAgICAgY29uc3QgcGtnRGlyID0gcGF0aC5kaXJuYW1lKHBrZyk7XG4gICAgICAgIGlmIChhc3NtLmRlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgYXdhaXQgX2xvYWREZXBlbmRlbmNpZXMoYXNzbS5kZXBlbmRlbmNpZXMsIHBrZ0RpciwgdHJhbnNpdGl2ZUFzc2VtYmxpZXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhc3NlbWJsaWVzO1xufVxuXG5mdW5jdGlvbiBfcmVxdWlyZWQ8VD4odmFsdWU6IFQsIG1lc3NhZ2U6IHN0cmluZyk6IFQge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiBfdG9QZXJzb24odmFsdWU6IGFueSwgZmllbGQ6IHN0cmluZywgZGVmYXVsdFJvbGU6IHN0cmluZyA9IGZpZWxkKTogc3BlYy5QZXJzb24ge1xuICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IF9yZXF1aXJlZCh2YWx1ZS5uYW1lLCBgVGhlIFwicGFja2FnZS5qc29uXCIgZmlsZSBtdXN0IHNwZWNpZnkgdGhlIFwiJHtmaWVsZH0ubmFtZVwiIGF0dHJpYnV0ZWApLFxuICAgICAgICByb2xlczogdmFsdWUucm9sZXMgPyBbLi4ubmV3IFNldCh2YWx1ZS5yb2xlcyBhcyBzdHJpbmdbXSldIDogW2RlZmF1bHRSb2xlXSxcbiAgICAgICAgZW1haWw6IHZhbHVlLmVtYWlsLFxuICAgICAgICB1cmw6IHZhbHVlLnVybCxcbiAgICAgICAgb3JnYW5pemF0aW9uOiB2YWx1ZS5vcmdhbml6YXRpb24gPyB2YWx1ZS5vcmdhbml6YXRpb24gOiB1bmRlZmluZWRcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBfdHJ5UmVzb2x2ZShtb2Q6IHN0cmluZywgc2VhcmNoUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXRocyA9IFsgc2VhcmNoUGF0aCwgcGF0aC5qb2luKHNlYXJjaFBhdGgsICdub2RlX21vZHVsZXMnKSBdO1xuICAgICAgICByZXR1cm4gcmVxdWlyZS5yZXNvbHZlKG1vZCwgeyBwYXRocyB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvY2F0ZSBtb2R1bGU6ICR7bW9kfWApO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gX3ZhbGlkYXRlTGljZW5zZShpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoaWQgPT09ICdVTkxJQ0VOU0VEJykgeyByZXR1cm4gaWQ7IH1cbiAgICBpZiAoIXNwZHguaGFzKGlkKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbGljZW5zZSBpZGVudGlmaWVyIFwiJHtpZH1cIiwgc2VlIHZhbGlkIGxpY2Vuc2UgaWRlbnRpZmllcnMgYXQgaHR0cHM6Ly9zcGR4Lm9yZy9saWNlbnNlcy9gKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkO1xufVxuIl19
"use strict";
// Generated at 2018-10-23T15:42:11Z by generate.sh
// Generated at 2018-11-12T11:25:46Z by generate.sh
Object.defineProperty(exports, "__esModule", { value: true });
/** The qualified version number for this JSII compiler. */
// tslint:disable-next-line:no-var-requires
exports.VERSION = `${require('../package.json').version.replace(/\+[0-9a-f]+$/, '')} (build 100f5ad)`;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1EQUFtRDs7QUFFbkQsMkRBQTJEO0FBQzNELDJDQUEyQztBQUM5QixRQUFBLE9BQU8sR0FBRyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBhdCAyMDE4LTEwLTIzVDE1OjQyOjExWiBieSBnZW5lcmF0ZS5zaFxuXG4vKiogVGhlIHF1YWxpZmllZCB2ZXJzaW9uIG51bWJlciBmb3IgdGhpcyBKU0lJIGNvbXBpbGVyLiAqL1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXZhci1yZXF1aXJlc1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBgJHtyZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uLnJlcGxhY2UoL1xcK1swLTlhLWZdKyQvLCAnJyl9IChidWlsZCAxMDBmNWFkKWA7XG4iXX0=
exports.VERSION = `${require('../package.json').version.replace(/\+[0-9a-f]+$/, '')} (build 588d29d)`;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1EQUFtRDs7QUFFbkQsMkRBQTJEO0FBQzNELDJDQUEyQztBQUM5QixRQUFBLE9BQU8sR0FBRyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBhdCAyMDE4LTExLTEyVDExOjI1OjQ2WiBieSBnZW5lcmF0ZS5zaFxuXG4vKiogVGhlIHF1YWxpZmllZCB2ZXJzaW9uIG51bWJlciBmb3IgdGhpcyBKU0lJIGNvbXBpbGVyLiAqL1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXZhci1yZXF1aXJlc1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBgJHtyZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uLnJlcGxhY2UoL1xcK1swLTlhLWZdKyQvLCAnJyl9IChidWlsZCA1ODhkMjlkKWA7XG4iXX0=
{
"name": "jsii",
"version": "0.7.8",
"version": "0.7.9",
"description": "TypeScript compiler for jsii",

@@ -12,3 +12,4 @@ "license": "Apache-2.0",

"bin": {
"jsii": "bin/jsii"
"jsii": "bin/jsii",
"jsii-fix-peers": "bin/jsii-fix-peers"
},

@@ -27,8 +28,8 @@ "scripts": {

"@types/log4js": "^2.3.5",
"@types/node": "^8.10.24",
"@types/node": "^8.10.37",
"@types/nodeunit": "^0.0.30",
"@types/semver": "^5.5.0",
"@types/yargs": "^11.1.1",
"@types/yargs": "^11.1.2",
"clone": "^2.1.2",
"jsii-build-tools": "^0.7.8",
"jsii-build-tools": "^0.7.9",
"nodeunit": "^0.11.3",

@@ -42,9 +43,9 @@ "nyc": "^12.0.2"

"fs-extra": "^7.0.0",
"jsii-spec": "^0.7.8",
"log4js": "^3.0.4",
"semver": "^5.5.0",
"jsii-spec": "^0.7.9",
"log4js": "^3.0.6",
"semver": "^5.6.0",
"sort-json": "^2.0.0",
"spdx-license-list": "^4.1.0",
"typescript": "^3.1.1",
"yargs": "^12.0.1"
"typescript": "^3.1.6",
"yargs": "^12.0.2"
},

@@ -51,0 +52,0 @@ "nyc": {

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

dependencies: [],
peerDependencies: [],
transitiveDependencies: [],

@@ -70,2 +71,2 @@ bundleDependencies: {},

module.exports = nodeunit.testCase({ 'jsii rejections': testCases });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5uZWdhdGl2ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXN0Lm5lZ2F0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0JBQWdDO0FBQ2hDLHFDQUFzQztBQUN0Qyw2QkFBOEI7QUFDOUIsaUNBQWtDO0FBQ2xDLDhDQUEyQztBQUczQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUVyRCxNQUFNLFNBQVMsR0FBc0QsRUFBRSxDQUFDO0FBRXhFLEtBQUssTUFBTSxNQUFNLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRTtJQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUFFLFNBQVM7S0FBRTtJQUNwRyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBbUIsRUFBRSxFQUFFO1FBQzdFLE1BQU0sWUFBWSxHQUFHLE1BQU0sd0JBQXdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxxREFBcUQsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQzVHLE1BQU0sUUFBUSxHQUFHLElBQUksbUJBQVEsQ0FBQyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN2RixNQUFNLFVBQVUsR0FB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LENBQUMsSUFBSSxDQUFDLENBQUM7S0FDL0Y7SUFDRCxPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO0FBQzlDLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLEtBQWE7SUFDbkMsT0FBTztRQUNILFdBQVcsRUFBRSxVQUFVO1FBQ3ZCLEtBQUs7UUFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUM7UUFDaEQsSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPLEVBQUUsT0FBTztRQUNoQixPQUFPLEVBQUUsWUFBWTtRQUNyQixNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQy9DLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLHFDQUFxQyxFQUFFO1FBQ3ZFLFlBQVksRUFBRSxFQUFFO1FBQ2hCLHNCQUFzQixFQUFFLEVBQUU7UUFDMUIsa0JBQWtCLEVBQUUsRUFBRTtRQUN0QixPQUFPLEVBQUUsRUFBRTtLQUNkLENBQUM7QUFDTixDQUFDO0FBcENELGlCQUFTLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzID0gcmVxdWlyZSgnZnMtZXh0cmEnKTtcbmltcG9ydCBub2RldW5pdCA9IHJlcXVpcmUoJ25vZGV1bml0Jyk7XG5pbXBvcnQgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmltcG9ydCB0cyA9IHJlcXVpcmUoJ3R5cGVzY3JpcHQnKTtcbmltcG9ydCB7IENvbXBpbGVyIH0gZnJvbSAnLi4vbGliL2NvbXBpbGVyJztcbmltcG9ydCB7IFByb2plY3RJbmZvIH0gZnJvbSAnLi4vbGliL3Byb2plY3QtaW5mbyc7XG5cbmNvbnN0IFNPVVJDRV9ESVIgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnbmVnYXRpdmVzJyk7XG5cbmNvbnN0IHRlc3RDYXNlczogeyBbbmFtZTogc3RyaW5nXTogKHRlc3Q6IG5vZGV1bml0LlRlc3QpID0+IHZvaWQgfSA9IHt9O1xuXG5mb3IgKGNvbnN0IHNvdXJjZSBvZiBmcy5yZWFkZGlyU3luYyhTT1VSQ0VfRElSKSkge1xuICAgIGlmICghc291cmNlLnN0YXJ0c1dpdGgoJ25lZy4nKSB8fCAhc291cmNlLmVuZHNXaXRoKCcudHMnKSB8fCBzb3VyY2UuZW5kc1dpdGgoJy5kLnRzJykpIHsgY29udGludWU7IH1cbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihTT1VSQ0VfRElSLCBzb3VyY2UpO1xuICAgIHRlc3RDYXNlc1tzb3VyY2UucmVwbGFjZSgvbmVnXFwuKC4rKVxcLnRzLywgJyQxJyldID0gYXN5bmMgKHRlc3Q6IG5vZGV1bml0LlRlc3QpID0+IHtcbiAgICAgICAgY29uc3QgZXhwZWN0YXRpb25zID0gYXdhaXQgX2dldEV4cGVjdGVkRXJyb3JNZXNzYWdlKGZpbGVQYXRoKTtcbiAgICAgICAgdGVzdC5vayhleHBlY3RhdGlvbnMubGVuZ3RoID4gMCwgYEV4cGVjdGVkIGVycm9yIG1lc3NhZ2VzIHNob3VsZCBiZSBzcGVjaWZpZWQgdXNpbmcgJHtNQVRDSF9FUlJPUl9NQVJLRVJ9YCk7XG4gICAgICAgIGNvbnN0IGNvbXBpbGVyID0gbmV3IENvbXBpbGVyKHsgcHJvamVjdEluZm86IF9tYWtlUHJvamVjdEluZm8oc291cmNlKSwgd2F0Y2g6IGZhbHNlIH0pO1xuICAgICAgICBjb25zdCBlbWl0UmVzdWx0ID0gYXdhaXQgY29tcGlsZXIuZW1pdChwYXRoLmpvaW4oU09VUkNFX0RJUiwgc291cmNlKSk7XG4gICAgICAgIHRlc3QuZXF1YWwoZW1pdFJlc3VsdC5lbWl0U2tpcHBlZCwgdHJ1ZSwgYGVtaXRTa2lwcGVkIHNob3VsZCBiZSB0cnVlYCk7XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IGVtaXRSZXN1bHQuZGlhZ25vc3RpY3MuZmlsdGVyKGRpYWcgPT4gZGlhZy5jYXRlZ29yeSA9PT0gdHMuRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yKTtcbiAgICAgICAgZm9yIChjb25zdCBleHBlY3RhdGlvbiBvZiBleHBlY3RhdGlvbnMpIHtcbiAgICAgICAgICAgIHRlc3Qubm90RXF1YWwoZXJyb3JzLmZpbmQoZSA9PiBfbWVzc2FnZVRleHQoZSkuaW5kZXhPZihleHBlY3RhdGlvbikgIT09IC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYE5vIGVycm9yIGNvbnRhaW5lZDogJHtleHBlY3RhdGlvbn0uIEVycm9yczogXFxuJHtlcnJvcnMubWFwKChlLCBpKSA9PiBgWyR7aX1dICR7ZS5tZXNzYWdlVGV4dH1gKS5qb2luKCdcXG4nKX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENsZWFuaW5nIHVwLi4uXG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBhd2FpdCBmcy5yZWFkZGlyKFNPVVJDRV9ESVIpKSB7XG4gICAgICAgICAgICBpZiAoZmlsZS5zdGFydHNXaXRoKCduZWcuJykgJiYgKGZpbGUuZW5kc1dpdGgoJy5kLnRzJykgfHwgZmlsZS5lbmRzV2l0aCgnLmpzJykpKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZnMucmVtb3ZlKHBhdGguam9pbihTT1VSQ0VfRElSLCBmaWxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBmcy5yZW1vdmUocGF0aC5qb2luKFNPVVJDRV9ESVIsICcuanNpaScpKTtcbiAgICAgICAgICAgIGF3YWl0IGZzLnJlbW92ZShwYXRoLmpvaW4oU09VUkNFX0RJUiwgJ3RzY29uZmlnLmpzb24nKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9O1xufVxuXG5leHBvcnQgPSBub2RldW5pdC50ZXN0Q2FzZSh7ICdqc2lpIHJlamVjdGlvbnMnOiB0ZXN0Q2FzZXMgfSk7XG5cbmNvbnN0IE1BVENIX0VSUk9SX01BUktFUiA9ICcvLy8hTUFUQ0hfRVJST1I6JztcbmFzeW5jIGZ1bmN0aW9uIF9nZXRFeHBlY3RlZEVycm9yTWVzc2FnZShmaWxlOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGZzLnJlYWRGaWxlKGZpbGUsIHsgZW5jb2Rpbmc6ICd1dGY4JyB9KTtcbiAgICBjb25zdCBsaW5lcyA9IGRhdGEuc3BsaXQoJ1xcbicpO1xuICAgIGNvbnN0IG1hdGNoZXMgPSBsaW5lcy5maWx0ZXIobGluZSA9PiBsaW5lLnN0YXJ0c1dpdGgoTUFUQ0hfRVJST1JfTUFSS0VSKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGxpbmUgPT4gbGluZS5zdWJzdHIoTUFUQ0hfRVJST1JfTUFSS0VSLmxlbmd0aCkudHJpbSgpKTtcbiAgICByZXR1cm4gbWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gX21lc3NhZ2VUZXh0KGRpYWdub3N0aWM6IHRzLkRpYWdub3N0aWMgfCB0cy5EaWFnbm9zdGljTWVzc2FnZUNoYWluKTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIGRpYWdub3N0aWMubWVzc2FnZVRleHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBkaWFnbm9zdGljLm1lc3NhZ2VUZXh0O1xuICAgIH1cbiAgICBpZiAoZGlhZ25vc3RpYy5tZXNzYWdlVGV4dC5uZXh0KSB7XG4gICAgICAgIHJldHVybiBkaWFnbm9zdGljLm1lc3NhZ2VUZXh0Lm1lc3NhZ2VUZXh0ICsgJ3wnICsgX21lc3NhZ2VUZXh0KGRpYWdub3N0aWMubWVzc2FnZVRleHQubmV4dCk7XG4gICAgfVxuICAgIHJldHVybiBkaWFnbm9zdGljLm1lc3NhZ2VUZXh0Lm1lc3NhZ2VUZXh0O1xufVxuXG5mdW5jdGlvbiBfbWFrZVByb2plY3RJbmZvKHR5cGVzOiBzdHJpbmcpOiBQcm9qZWN0SW5mbyB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvamVjdFJvb3Q6IFNPVVJDRV9ESVIsXG4gICAgICAgIHR5cGVzLFxuICAgICAgICBtYWluOiB0eXBlcy5yZXBsYWNlKC8oPzpcXC5kKT9cXC50cyh4PykvLCAnLmpzJDEnKSxcbiAgICAgICAgbmFtZTogJ2pzaWknLCAvLyBUaGF0J3Mgd2hhdCBwYWNrYWdlLmpzb24gd291bGQgdGVsbCBpZiB3ZSBsb29rIHVwLi4uXG4gICAgICAgIHZlcnNpb246ICcwLjAuMScsXG4gICAgICAgIGxpY2Vuc2U6ICdBcGFjaGUtMi4wJyxcbiAgICAgICAgYXV0aG9yOiB7IG5hbWU6ICdKb2huIERvZScsIHJvbGVzOiBbJ2F1dGhvciddIH0sXG4gICAgICAgIHJlcG9zaXRvcnk6IHsgdHlwZTogJ2dpdCcsIHVybDogJ2h0dHBzOi8vZ2l0aHViLmNvbS9hd3NsYWJzL2pzaWkuZ2l0JyB9LFxuICAgICAgICBkZXBlbmRlbmNpZXM6IFtdLFxuICAgICAgICB0cmFuc2l0aXZlRGVwZW5kZW5jaWVzOiBbXSxcbiAgICAgICAgYnVuZGxlRGVwZW5kZW5jaWVzOiB7fSxcbiAgICAgICAgdGFyZ2V0czoge31cbiAgICB9O1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5uZWdhdGl2ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXN0Lm5lZ2F0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0JBQWdDO0FBQ2hDLHFDQUFzQztBQUN0Qyw2QkFBOEI7QUFDOUIsaUNBQWtDO0FBQ2xDLDhDQUEyQztBQUczQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUVyRCxNQUFNLFNBQVMsR0FBc0QsRUFBRSxDQUFDO0FBRXhFLEtBQUssTUFBTSxNQUFNLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRTtJQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUFFLFNBQVM7S0FBRTtJQUNwRyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBbUIsRUFBRSxFQUFFO1FBQzdFLE1BQU0sWUFBWSxHQUFHLE1BQU0sd0JBQXdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxxREFBcUQsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQzVHLE1BQU0sUUFBUSxHQUFHLElBQUksbUJBQVEsQ0FBQyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN2RixNQUFNLFVBQVUsR0FB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LENBQUMsSUFBSSxDQUFDLENBQUM7S0FDL0Y7SUFDRCxPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO0FBQzlDLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLEtBQWE7SUFDbkMsT0FBTztRQUNILFdBQVcsRUFBRSxVQUFVO1FBQ3ZCLEtBQUs7UUFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUM7UUFDaEQsSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPLEVBQUUsT0FBTztRQUNoQixPQUFPLEVBQUUsWUFBWTtRQUNyQixNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQy9DLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLHFDQUFxQyxFQUFFO1FBQ3ZFLFlBQVksRUFBRSxFQUFFO1FBQ2hCLGdCQUFnQixFQUFFLEVBQUU7UUFDcEIsc0JBQXNCLEVBQUUsRUFBRTtRQUMxQixrQkFBa0IsRUFBRSxFQUFFO1FBQ3RCLE9BQU8sRUFBRSxFQUFFO0tBQ2QsQ0FBQztBQUNOLENBQUM7QUFyQ0QsaUJBQVMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgPSByZXF1aXJlKCdmcy1leHRyYScpO1xuaW1wb3J0IG5vZGV1bml0ID0gcmVxdWlyZSgnbm9kZXVuaXQnKTtcbmltcG9ydCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuaW1wb3J0IHRzID0gcmVxdWlyZSgndHlwZXNjcmlwdCcpO1xuaW1wb3J0IHsgQ29tcGlsZXIgfSBmcm9tICcuLi9saWIvY29tcGlsZXInO1xuaW1wb3J0IHsgUHJvamVjdEluZm8gfSBmcm9tICcuLi9saWIvcHJvamVjdC1pbmZvJztcblxuY29uc3QgU09VUkNFX0RJUiA9IHBhdGguam9pbihfX2Rpcm5hbWUsICduZWdhdGl2ZXMnKTtcblxuY29uc3QgdGVzdENhc2VzOiB7IFtuYW1lOiBzdHJpbmddOiAodGVzdDogbm9kZXVuaXQuVGVzdCkgPT4gdm9pZCB9ID0ge307XG5cbmZvciAoY29uc3Qgc291cmNlIG9mIGZzLnJlYWRkaXJTeW5jKFNPVVJDRV9ESVIpKSB7XG4gICAgaWYgKCFzb3VyY2Uuc3RhcnRzV2l0aCgnbmVnLicpIHx8ICFzb3VyY2UuZW5kc1dpdGgoJy50cycpIHx8IHNvdXJjZS5lbmRzV2l0aCgnLmQudHMnKSkgeyBjb250aW51ZTsgfVxuICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKFNPVVJDRV9ESVIsIHNvdXJjZSk7XG4gICAgdGVzdENhc2VzW3NvdXJjZS5yZXBsYWNlKC9uZWdcXC4oLispXFwudHMvLCAnJDEnKV0gPSBhc3luYyAodGVzdDogbm9kZXVuaXQuVGVzdCkgPT4ge1xuICAgICAgICBjb25zdCBleHBlY3RhdGlvbnMgPSBhd2FpdCBfZ2V0RXhwZWN0ZWRFcnJvck1lc3NhZ2UoZmlsZVBhdGgpO1xuICAgICAgICB0ZXN0Lm9rKGV4cGVjdGF0aW9ucy5sZW5ndGggPiAwLCBgRXhwZWN0ZWQgZXJyb3IgbWVzc2FnZXMgc2hvdWxkIGJlIHNwZWNpZmllZCB1c2luZyAke01BVENIX0VSUk9SX01BUktFUn1gKTtcbiAgICAgICAgY29uc3QgY29tcGlsZXIgPSBuZXcgQ29tcGlsZXIoeyBwcm9qZWN0SW5mbzogX21ha2VQcm9qZWN0SW5mbyhzb3VyY2UpLCB3YXRjaDogZmFsc2UgfSk7XG4gICAgICAgIGNvbnN0IGVtaXRSZXN1bHQgPSBhd2FpdCBjb21waWxlci5lbWl0KHBhdGguam9pbihTT1VSQ0VfRElSLCBzb3VyY2UpKTtcbiAgICAgICAgdGVzdC5lcXVhbChlbWl0UmVzdWx0LmVtaXRTa2lwcGVkLCB0cnVlLCBgZW1pdFNraXBwZWQgc2hvdWxkIGJlIHRydWVgKTtcbiAgICAgICAgY29uc3QgZXJyb3JzID0gZW1pdFJlc3VsdC5kaWFnbm9zdGljcy5maWx0ZXIoZGlhZyA9PiBkaWFnLmNhdGVnb3J5ID09PSB0cy5EaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IpO1xuICAgICAgICBmb3IgKGNvbnN0IGV4cGVjdGF0aW9uIG9mIGV4cGVjdGF0aW9ucykge1xuICAgICAgICAgICAgdGVzdC5ub3RFcXVhbChlcnJvcnMuZmluZChlID0+IF9tZXNzYWdlVGV4dChlKS5pbmRleE9mKGV4cGVjdGF0aW9uKSAhPT0gLTEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgTm8gZXJyb3IgY29udGFpbmVkOiAke2V4cGVjdGF0aW9ufS4gRXJyb3JzOiBcXG4ke2Vycm9ycy5tYXAoKGUsIGkpID0+IGBbJHtpfV0gJHtlLm1lc3NhZ2VUZXh0fWApLmpvaW4oJ1xcbicpfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2xlYW5pbmcgdXAuLi5cbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGF3YWl0IGZzLnJlYWRkaXIoU09VUkNFX0RJUikpIHtcbiAgICAgICAgICAgIGlmIChmaWxlLnN0YXJ0c1dpdGgoJ25lZy4nKSAmJiAoZmlsZS5lbmRzV2l0aCgnLmQudHMnKSB8fCBmaWxlLmVuZHNXaXRoKCcuanMnKSkpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBmcy5yZW1vdmUocGF0aC5qb2luKFNPVVJDRV9ESVIsIGZpbGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IGZzLnJlbW92ZShwYXRoLmpvaW4oU09VUkNFX0RJUiwgJy5qc2lpJykpO1xuICAgICAgICAgICAgYXdhaXQgZnMucmVtb3ZlKHBhdGguam9pbihTT1VSQ0VfRElSLCAndHNjb25maWcuanNvbicpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH07XG59XG5cbmV4cG9ydCA9IG5vZGV1bml0LnRlc3RDYXNlKHsgJ2pzaWkgcmVqZWN0aW9ucyc6IHRlc3RDYXNlcyB9KTtcblxuY29uc3QgTUFUQ0hfRVJST1JfTUFSS0VSID0gJy8vLyFNQVRDSF9FUlJPUjonO1xuYXN5bmMgZnVuY3Rpb24gX2dldEV4cGVjdGVkRXJyb3JNZXNzYWdlKGZpbGU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZnMucmVhZEZpbGUoZmlsZSwgeyBlbmNvZGluZzogJ3V0ZjgnIH0pO1xuICAgIGNvbnN0IGxpbmVzID0gZGF0YS5zcGxpdCgnXFxuJyk7XG4gICAgY29uc3QgbWF0Y2hlcyA9IGxpbmVzLmZpbHRlcihsaW5lID0+IGxpbmUuc3RhcnRzV2l0aChNQVRDSF9FUlJPUl9NQVJLRVIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAobGluZSA9PiBsaW5lLnN1YnN0cihNQVRDSF9FUlJPUl9NQVJLRVIubGVuZ3RoKS50cmltKCkpO1xuICAgIHJldHVybiBtYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBfbWVzc2FnZVRleHQoZGlhZ25vc3RpYzogdHMuRGlhZ25vc3RpYyB8IHRzLkRpYWdub3N0aWNNZXNzYWdlQ2hhaW4pOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgZGlhZ25vc3RpYy5tZXNzYWdlVGV4dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGRpYWdub3N0aWMubWVzc2FnZVRleHQ7XG4gICAgfVxuICAgIGlmIChkaWFnbm9zdGljLm1lc3NhZ2VUZXh0Lm5leHQpIHtcbiAgICAgICAgcmV0dXJuIGRpYWdub3N0aWMubWVzc2FnZVRleHQubWVzc2FnZVRleHQgKyAnfCcgKyBfbWVzc2FnZVRleHQoZGlhZ25vc3RpYy5tZXNzYWdlVGV4dC5uZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuIGRpYWdub3N0aWMubWVzc2FnZVRleHQubWVzc2FnZVRleHQ7XG59XG5cbmZ1bmN0aW9uIF9tYWtlUHJvamVjdEluZm8odHlwZXM6IHN0cmluZyk6IFByb2plY3RJbmZvIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm9qZWN0Um9vdDogU09VUkNFX0RJUixcbiAgICAgICAgdHlwZXMsXG4gICAgICAgIG1haW46IHR5cGVzLnJlcGxhY2UoLyg/OlxcLmQpP1xcLnRzKHg/KS8sICcuanMkMScpLFxuICAgICAgICBuYW1lOiAnanNpaScsIC8vIFRoYXQncyB3aGF0IHBhY2thZ2UuanNvbiB3b3VsZCB0ZWxsIGlmIHdlIGxvb2sgdXAuLi5cbiAgICAgICAgdmVyc2lvbjogJzAuMC4xJyxcbiAgICAgICAgbGljZW5zZTogJ0FwYWNoZS0yLjAnLFxuICAgICAgICBhdXRob3I6IHsgbmFtZTogJ0pvaG4gRG9lJywgcm9sZXM6IFsnYXV0aG9yJ10gfSxcbiAgICAgICAgcmVwb3NpdG9yeTogeyB0eXBlOiAnZ2l0JywgdXJsOiAnaHR0cHM6Ly9naXRodWIuY29tL2F3c2xhYnMvanNpaS5naXQnIH0sXG4gICAgICAgIGRlcGVuZGVuY2llczogW10sXG4gICAgICAgIHBlZXJEZXBlbmRlbmNpZXM6IFtdLFxuICAgICAgICB0cmFuc2l0aXZlRGVwZW5kZW5jaWVzOiBbXSxcbiAgICAgICAgYnVuZGxlRGVwZW5kZW5jaWVzOiB7fSxcbiAgICAgICAgdGFyZ2V0czoge31cbiAgICB9O1xufVxuIl19

Sorry, the diff of this file is too big to display

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