cdklabs-projen-project-types 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +596 -17
- package/.yarn/install-state.gz +0 -0
- package/API.md +732 -20
- package/README.md +24 -0
- package/lib/cdk.js +2 -2
- package/lib/cdklabs.js +3 -3
- package/lib/jsii.js +1 -1
- package/lib/rosetta.d.ts +2 -2
- package/lib/rosetta.js +2 -2
- package/lib/yarn/constraints.js +1 -1
- package/lib/yarn/index.d.ts +1 -0
- package/lib/yarn/index.js +2 -1
- package/lib/yarn/jsii-build.d.ts +38 -0
- package/lib/yarn/jsii-build.js +60 -0
- package/lib/yarn/monorepo-release.js +1 -1
- package/lib/yarn/monorepo.js +2 -2
- package/lib/yarn/typescript-workspace-release.d.ts +1 -0
- package/lib/yarn/typescript-workspace-release.js +3 -2
- package/lib/yarn/typescript-workspace.d.ts +2 -0
- package/lib/yarn/typescript-workspace.js +6 -2
- package/package.json +3 -3
|
@@ -109,6 +109,10 @@ class TypeScriptWorkspace extends projen_1.typescript.TypeScriptProject {
|
|
|
109
109
|
...options.peerDeps ?? [],
|
|
110
110
|
].filter(isWorkspaceReference).map(w => [w.name, w.versionType])),
|
|
111
111
|
});
|
|
112
|
+
// Expose the monorepo publisher as project.release so that other code can find it via project.release?.publisher
|
|
113
|
+
// MUST be called after `this.monorepo.monorepoRelease?.addWorkspace(...)`
|
|
114
|
+
// @ts-ignore - readonly property, but we need to set it for upstream mixin compatibility
|
|
115
|
+
this.release = this.monorepo.monorepoRelease?.workspaceRelease(this);
|
|
112
116
|
// jest config
|
|
113
117
|
if (this.jest?.config && this.jest.config.preset === 'ts-jest') {
|
|
114
118
|
delete this.jest.config.globals?.['ts-jest'];
|
|
@@ -243,7 +247,7 @@ class TypeScriptWorkspace extends projen_1.typescript.TypeScriptProject {
|
|
|
243
247
|
}
|
|
244
248
|
exports.TypeScriptWorkspace = TypeScriptWorkspace;
|
|
245
249
|
_a = JSII_RTTI_SYMBOL_1;
|
|
246
|
-
TypeScriptWorkspace[_a] = { fqn: "cdklabs-projen-project-types.yarn.TypeScriptWorkspace", version: "0.
|
|
250
|
+
TypeScriptWorkspace[_a] = { fqn: "cdklabs-projen-project-types.yarn.TypeScriptWorkspace", version: "0.5.0" };
|
|
247
251
|
function packageNames(xs) {
|
|
248
252
|
if (!xs) {
|
|
249
253
|
return undefined;
|
|
@@ -260,4 +264,4 @@ function without(x, ...ks) {
|
|
|
260
264
|
function isWorkspaceReference(x) {
|
|
261
265
|
return typeof x === 'object' && !!x && ['isPrivatePackage', 'versionType', 'name', 'outdir'].every(k => x[k] !== undefined);
|
|
262
266
|
}
|
|
263
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC13b3Jrc3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMveWFybi90eXBlc2NyaXB0LXdvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLCtCQUFnQztBQUNoQyxtQ0FBMEc7QUFtRDFHOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjtJQVFuRSxZQUFZLE9BQW1DO1FBQzdDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FDdkIsT0FBTyxFQUNQLFFBQVEsRUFDUixNQUFNLEVBQ04sYUFBYSxFQUNiLE1BQU0sRUFDTixVQUFVLEVBQ1YsU0FBUyxFQUNULHdCQUF3QixFQUN4QixZQUFZLEVBQ1oscUJBQXFCLEVBQ3JCLGtCQUFrQixDQUNuQixDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7UUFDM0MsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7UUFFL0MsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLGNBQWMsSUFBSSxVQUFVLENBQUM7UUFDdkQsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxtQkFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUUvRyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztRQUVuRyxLQUFLLENBQUM7WUFDSixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsSUFBSSxFQUFFLE9BQU8s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SUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNuQixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxDQUFVO0lBQ3RDLE9BQU8sT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBNkMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBRSxDQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7QUFDcEwsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IENvbXBvbmVudCwgamF2YXNjcmlwdCwgdHlwZXNjcmlwdCwgVGFza1N0ZXAsIFNvdXJjZUNvZGUsIERlcGVuZGVuY3lUeXBlLCBQcm9qZWN0IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IE1vbm9yZXBvIH0gZnJvbSAnLi9tb25vcmVwbyc7XG5pbXBvcnQgeyBUeXBlU2NyaXB0V29ya3NwYWNlT3B0aW9ucyB9IGZyb20gJy4vdHlwZXNjcmlwdC13b3Jrc3BhY2Utb3B0aW9ucyc7XG5cbi8qKlxuICogV2hhdCBraW5kIG9mIHNlbXZlciBkZXBlbmRlbmN5IHRvIHRha2VcbiAqXG4gKiAtICdhbnktbWlub3InIGNvcnJlc3BvbmRzIHRvICdeMSdcbiAqIC0gJ2Z1dHVyZS1taW5vcicgY29ycmVzcG9uZHMgdG8gJ14xLjIuMydcbiAqIC0gJ2FueS1wYXRjaCcgdG8gJ34xLjInXG4gKiAtICdmdXR1cmUtcGF0Y2gnIGNvcnJlc3BvbmRzIHRvICd+MS4yLjMnXG4gKiAtICdleGFjdCcgY29ycmVzcG9uZHMgdG8gJzEuMi4zJ1xuICogLSAnYW55LWZ1dHVyZScgY29ycmVzcG9uZHMgdG8gJz49MS4yLjMnXG4gKiAtICdhbnknIGNvcnJlc3BvbmRzIHRvICcqJ1xuICovXG5leHBvcnQgdHlwZSBWZXJzaW9uVHlwZSA9ICdhbnktbWlub3InIHwgJ2Z1dHVyZS1taW5vcicgfCAnYW55LXBhdGNoJyB8ICdmdXR1cmUtcGF0Y2gnIHwgJ2V4YWN0JyB8ICdhbnktZnV0dXJlJyB8ICdhbnknO1xuXG4vKipcbiAqIEEgcmVmZXJlbmNlIHRvIGEgd29ya3NwYWNlIGluIHRoZSBzYW1lIG1vbm9yZXBvXG4gKlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byByZWZlcmVuY2UgcGFja2FnZXMgaW4gdGhlIHNhbWUgbW9ub3JlcG8gd2hlbiBkZWNsYXJpbmdcbiAqIGBkZXBzYCBhbmQgYGRldkRlcHNgLlxuICpcbiAqIEJ5IGRlZmF1bHQsIGFsbCBgVHlwZVNjcmlwdFdvcmtzcGFjZWBzIGltcGxlbWVudCB0aGlzIGludGVyZmFjZSwgcmVwcmVzZW50aW5nIHRoZW1zZWx2ZXNcbiAqIHdpdGggYSBgXmAgZGVwZW5kZW5jeSBhbmQgYSByZXN0cmljdGlvbiB0aGF0IHB1YmxpYyBwYWNrYWdlcyBtdXN0IGhhdmUgcHVibGljIGRlcGVuZGVuY2llcy5cbiAqXG4gKiBUaGUgbWV0aG9kIGAuY3VzdG9taXplUmVmZXJlbmNlKHsgLi4uIH0pYCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSB3b3Jrc3BhY2UgcmVmZXJlbmNlIHdpdGhcbiAqIGRpZmZlcmVudCBiZWhhdmlvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJV29ya3NwYWNlUmVmZXJlbmNlIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlZmVyZW5jZWQgd29ya3NwYWNlIHBhY2thZ2UgaXMgcHJpdmF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaXNQcml2YXRlUGFja2FnZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGRlcGVuZGVuY3kgbmFtZSBvZiB0aGUgcGFja2FnZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VtdmVyIHJhbmdlIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gcmVmZXJlbmNlIHRoaXMgcGFja2FnZSB3aGVuIGl0IGlzIHJlbGVhc2VkXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uVHlwZTogVmVyc2lvblR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgdGhhdCBob2xkcyB0aGlzIHBhY2thZ2UgaW4gdGhlIG1vbm9yZXBvXG4gICAqL1xuICByZWFkb25seSBvdXRkaXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIFR5cGVTY3JpcHQgd29ya3NwYWNlIGluIGEgYHlhcm4uTW9ub3JlcG9gXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlU2NyaXB0V29ya3NwYWNlIGV4dGVuZHMgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdCBpbXBsZW1lbnRzIElXb3Jrc3BhY2VSZWZlcmVuY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgd29ya3NwYWNlRGlyZWN0b3J5OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBidW5kbGVkRGVwczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIHJlYWRvbmx5IGlzUHJpdmF0ZVBhY2thZ2U6IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uVHlwZSA9ICdmdXR1cmUtbWlub3InO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbW9ub3JlcG86IE1vbm9yZXBvO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFR5cGVTY3JpcHRXb3Jrc3BhY2VPcHRpb25zKSB7XG4gICAgY29uc3QgcmVtYWluZGVyID0gd2l0aG91dChcbiAgICAgIG9wdGlvbnMsXG4gICAgICAncGFyZW50JyxcbiAgICAgICduYW1lJyxcbiAgICAgICdkZXNjcmlwdGlvbicsXG4gICAgICAnZGVwcycsXG4gICAgICAncGVlckRlcHMnLFxuICAgICAgJ2RldkRlcHMnLFxuICAgICAgJ2V4Y2x1ZGVEZXBzRnJvbVVwZ3JhZGUnLFxuICAgICAgJ3JlcG9zaXRvcnknLFxuICAgICAgJ3dvcmtmbG93Tm9kZVZlcnNpb24nLFxuICAgICAgJ2FsbG93UHJpdmF0ZURlcHMnLFxuICAgICk7XG5cbiAgICBjb25zdCB1c2VFc2xpbnQgPSByZW1haW5kZXIuZXNsaW50ID8/IHRydWU7XG4gICAgY29uc3QgdXNlUHJldHRpZXIgPSByZW1haW5kZXIucHJldHRpZXIgPz8gdHJ1ZTtcblxuICAgIGNvbnN0IHdzU2NvcGUgPSByZW1haW5kZXIud29ya3NwYWNlU2NvcGUgPz8gJ3BhY2thZ2VzJztcbiAgICBjb25zdCB3b3Jrc3BhY2VEaXJlY3RvcnkgPSBgJHt3c1Njb3BlfS8ke29wdGlvbnMubmFtZX1gO1xuXG4gICAgY29uc3QgbnBtQWNjZXNzID0gb3B0aW9ucy5wYXJlbnQubW9ub3JlcG9SZWxlYXNlICYmICFvcHRpb25zLnByaXZhdGUgPyBqYXZhc2NyaXB0Lk5wbUFjY2Vzcy5QVUJMSUMgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCByZWxlYXNlRW52aXJvbm1lbnQgPSBvcHRpb25zLnJlbGVhc2VFbnZpcm9ubWVudCA/PyBvcHRpb25zLnBhcmVudC5vcHRpb25zLnJlbGVhc2VFbnZpcm9ubWVudDtcblxuICAgIHN1cGVyKHtcbiAgICAgIHBhcmVudDogb3B0aW9ucy5wYXJlbnQsXG4gICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogb3B0aW9ucy5kZXNjcmlwdGlvbixcbiAgICAgIHJlcG9zaXRvcnk6IG9wdGlvbnMucmVwb3NpdG9yeSA/PyBvcHRpb25zLnBhcmVudC5yZXBvc2l0b3J5VXJsLFxuICAgICAgcmVwb3NpdG9yeURpcmVjdG9yeTogd29ya3NwYWNlRGlyZWN0b3J5LFxuICAgICAgb3V0ZGlyOiB3b3Jrc3BhY2VEaXJlY3RvcnksXG4gICAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogJ1JFUVVJUkVELUJVVC1TSE9VTEQtTk9ULUJFJyxcbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiBvcHRpb25zLnBhcmVudC5wYWNrYWdlLnBhY2thZ2VNYW5hZ2VyLFxuICAgICAgcmVsZWFzZTogZmFsc2UsXG4gICAgICBwYWNrYWdlOiAhb3B0aW9ucy5wcml2YXRlLFxuICAgICAgZXNsaW50OiB1c2VFc2xpbnQsXG4gICAgICBwcmV0dGllcjogdXNlUHJldHRpZXIsXG4gICAgICBwcmV0dGllck9wdGlvbnM6IHVzZVByZXR0aWVyXG4gICAgICAgID8ge1xuICAgICAgICAgIG92ZXJyaWRlczogb3B0aW9ucy5wYXJlbnQucHJldHRpZXI/Lm92ZXJyaWRlcyxcbiAgICAgICAgICBzZXR0aW5nczogb3B0aW9ucy5wYXJlbnQucHJldHRpZXI/LnNldHRpbmdzLFxuICAgICAgICAgIC4uLnJlbWFpbmRlci5wcmV0dGllck9wdGlvbnMsXG4gICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBlc2xpbnRPcHRpb25zOiB1c2VFc2xpbnRcbiAgICAgICAgPyB7XG4gICAgICAgICAgZGlyczogW3JlbWFpbmRlci5zcmNkaXIgPz8gJ3NyYyddLFxuICAgICAgICAgIGRldmRpcnM6IFtyZW1haW5kZXIudGVzdGRpciA/PyAndGVzdCcsICdidWlsZC10b29scyddLFxuICAgICAgICAgIC4uLnJlbWFpbmRlci5lc2xpbnRPcHRpb25zLFxuICAgICAgICAgIHByZXR0aWVyOiB1c2VQcmV0dGllcixcbiAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuXG4gICAgICBkZXBzOiBwYWNrYWdlTmFtZXMob3B0aW9ucy5kZXBzKSxcbiAgICAgIHBlZXJEZXBzOiBwYWNrYWdlTmFtZXMob3B0aW9ucy5wZWVyRGVwcyksXG4gICAgICBkZXZEZXBzOiBwYWNrYWdlTmFtZXMob3B0aW9ucy5kZXZEZXBzKSxcbiAgICAgIHByb2plbkRldkRlcGVuZGVuY3k6IHRydWUsXG4gICAgICByZWxlYXNlRW52aXJvbm1lbnQsXG5cbiAgICAgIGRlcHNVcGdyYWRlOiBvcHRpb25zLmRlcHNVcGdyYWRlID8/IHRydWUsXG4gICAgICBkZXBzVXBncmFkZU9wdGlvbnM6IHtcbiAgICAgICAgd29ya2Zsb3c6IGZhbHNlLFxuICAgICAgICBjb29sZG93bjogb3B0aW9ucy5wYXJlbnQub3B0aW9ucy5kZXBzVXBncmFkZU9wdGlvbnM/LmNvb2xkb3duID8/IChvcHRpb25zLnBhcmVudC5vcHRpb25zLnlhcm5CZXJyeSA/IDMgOiB1bmRlZmluZWQpLFxuICAgICAgICBleGNsdWRlOiBbXG4gICAgICAgICAgLi4uKG9wdGlvbnMuZXhjbHVkZURlcHNGcm9tVXBncmFkZSA/PyBbXSksXG4gICAgICAgICAgLi4uKHBhY2thZ2VOYW1lcyhvcHRpb25zLmRlcHM/LmZpbHRlcihpc1dvcmtzcGFjZVJlZmVyZW5jZSkpID8/IFtdKSxcbiAgICAgICAgICAuLi4ocGFja2FnZU5hbWVzKG9wdGlvbnMucGVlckRlcHM/LmZpbHRlcihpc1dvcmtzcGFjZVJlZmVyZW5jZSkpID8/IFtdKSxcbiAgICAgICAgICAuLi4ocGFja2FnZU5hbWVzKG9wdGlvbnMuZGV2RGVwcz8uZmlsdGVyKGlzV29ya3NwYWNlUmVmZXJlbmNlKSkgPz8gW10pLFxuICAgICAgICBdLFxuICAgICAgfSxcblxuICAgICAgbnBtQWNjZXNzLFxuXG4gICAgICAvLyBEZXZpYXRpb24gZnJvbSB1cHN0cmVhbSBwcm9qZW46IHVwc3RyZWFtIHByb2plbiBkZWZhdWx0cyB0byBtaW5Ob2RlVmVyc2lvbiwgYnV0IHdlIGhhdmUgdG9vIG1hbnkgd29ya2Zsb3dzXG4gICAgICAvLyB0aGF0IHVzZSB0b29scyB0aGF0IHdhbnQgYSByZWNlbnQgTm9kZSB2ZXJzaW9uLCBzbyBkZWZhdWx0IHRvIGEgcmVhc29uYWJsZSBmbG9hdGluZyB2ZXJzaW9uLlxuICAgICAgd29ya2Zsb3dOb2RlVmVyc2lvbjogb3B0aW9ucy53b3JrZmxvd05vZGVWZXJzaW9uID8/ICdsdHMvKicsXG5cbiAgICAgIC4uLnJlbWFpbmRlcixcbiAgICB9KTtcblxuICAgIHRoaXMubW9ub3JlcG8gPSBvcHRpb25zLnBhcmVudDtcbiAgICB0aGlzLmlzUHJpdmF0ZVBhY2thZ2UgPSBvcHRpb25zLnByaXZhdGUgPz8gZmFsc2U7XG4gICAgdGhpcy53b3Jrc3BhY2VEaXJlY3RvcnkgPSB3b3Jrc3BhY2VEaXJlY3Rvcnk7XG5cbiAgICAvLyBJZiB0aGUgcGFja2FnZSBpcyBwdWJsaWMsIGFsbCBsb2NhbCBkZXBzIGFuZCBwZWVyIGRlcHMgbXVzdCBhbHNvIGJlIHB1YmxpYyBhbmQgb3RoZXIgVHlwZVNjcmlwdFdvcmtzcGFjZXNcbiAgICBpZiAoIXRoaXMuaXNQcml2YXRlUGFja2FnZSkge1xuICAgICAgY29uc3QgaWxsZWdhbERlcHMgPSBbXG4gICAgICAgIC8vIE92ZXJyaWRhYmxlIGZvciBkZXBzIGJlY2F1c2UgdGhpcyBtaWdodCBtYWtlIHNlbnNlIGlmIHdlIGJ1bmRsZSB0aGUgcGFja2FnZS5cbiAgICAgICAgLi4ub3B0aW9ucy5kZXBzPy5maWx0ZXIoaXNXb3Jrc3BhY2VSZWZlcmVuY2UpLmZpbHRlcih3ID0+IHcuaXNQcml2YXRlUGFja2FnZSAmJiAhb3B0aW9ucy5hbGxvd1ByaXZhdGVEZXBzKSA/PyBbXSxcbiAgICAgICAgLy8gQnV0IG5vdCBmb3IgcGVlckRlcHMsIHRoZXkgbXVzdCBhbHdheXMgYmUgaW5zdGFsbGVkIGJ5IHRoZSB1c2VyLlxuICAgICAgICAuLi5vcHRpb25zLnBlZXJEZXBzPy5maWx0ZXIoaXNXb3Jrc3BhY2VSZWZlcmVuY2UpLmZpbHRlcih3ID0+IHcuaXNQcml2YXRlUGFja2FnZSkgPz8gW10sXG4gICAgICAgIC8vIGRldkRlcHMgY2FuIGJlIHByaXZhdGUsIHdlIGRvbid0IGNhcmUuXG4gICAgICBdO1xuXG4gICAgICBpZiAoaWxsZWdhbERlcHMubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihbXG4gICAgICAgICAgYCR7dGhpcy5uYW1lfSBpcyBwdWJsaWMgYW5kIGNhbm5vdCBkZXBlbmQgb24gYW55IHByaXZhdGUgcGFja2FnZXMgZnJvbSB0aGUgd29ya3NwYWNlLmAsXG4gICAgICAgICAgYFBsZWFzZSBmaXggdGhlc2UgZGVwZW5kZW5jaWVzOlxcbiAgICAtICR7aWxsZWdhbERlcHMubWFwKChwKSA9PiBwLm5hbWUpLmpvaW4oJ1xcbiAgICAtICcpfWAsXG4gICAgICAgIF0uam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlZ2lzdGVyIHdpdGggcmVsZWFzZSB3b3JrZmxvd1xuICAgIHRoaXMubW9ub3JlcG8ubW9ub3JlcG9SZWxlYXNlPy5hZGRXb3Jrc3BhY2UodGhpcywge1xuICAgICAgcHJpdmF0ZTogdGhpcy5pc1ByaXZhdGVQYWNrYWdlLFxuICAgICAgd29ya2Zsb3dOb2RlVmVyc2lvbjogdGhpcy5ub2RlVmVyc2lvbixcbiAgICAgIG5wbURpc3RUYWc6IG9wdGlvbnMubnBtRGlzdFRhZyxcbiAgICAgIC8vIEluaGVyaXQgc2V0dGluZyBmcm9tIE1vbm9yZXBvIGlmIGNvbmZpZ3VyZWRcbiAgICAgIG5wbVRydXN0ZWRQdWJsaXNoaW5nOiBvcHRpb25zLm5wbVRydXN0ZWRQdWJsaXNoaW5nID8/IHRoaXMubW9ub3JlcG8ub3B0aW9ucy5ucG1UcnVzdGVkUHVibGlzaGluZyxcbiAgICAgIGVudmlyb25tZW50OiByZWxlYXNlRW52aXJvbm1lbnQsXG4gICAgICByZWxlYXNhYmxlQ29tbWl0czogb3B0aW9ucy5yZWxlYXNhYmxlQ29tbWl0cyxcbiAgICAgIG5leHRWZXJzaW9uQ29tbWFuZDogb3B0aW9ucy5uZXh0VmVyc2lvbkNvbW1hbmQsXG4gICAgICB2ZXJzaW9uQnJhbmNoT3B0aW9uczoge1xuICAgICAgICBtYWpvclZlcnNpb246IG9wdGlvbnMubWFqb3JWZXJzaW9uLFxuICAgICAgICBtaW5NYWpvclZlcnNpb246IG9wdGlvbnMubWluTWFqb3JWZXJzaW9uLFxuICAgICAgICBwcmVyZWxlYXNlOiBvcHRpb25zLnByZXJlbGVhc2UsXG4gICAgICB9LFxuICAgICAgcmVwb1J1bnRpbWVEZXBlbmRlbmNpZXM6IE9iamVjdC5mcm9tRW50cmllcyhbXG4gICAgICAgIC4uLm9wdGlvbnMuZGVwcyA/PyBbXSxcbiAgICAgICAgLi4ub3B0aW9ucy5wZWVyRGVwcyA/PyBbXSxcbiAgICAgIF0uZmlsdGVyKGlzV29ya3NwYWNlUmVmZXJlbmNlKS5tYXAodyA9PiBbdy5uYW1lLCB3LnZlcnNpb25UeXBlXSkpLFxuICAgIH0pO1xuXG4gICAgLy8gamVzdCBjb25maWdcbiAgICBpZiAodGhpcy5qZXN0Py5jb25maWcgJiYgdGhpcy5qZXN0LmNvbmZpZy5wcmVzZXQgPT09ICd0cy1qZXN0Jykge1xuICAgICAgZGVsZXRlIHRoaXMuamVzdC5jb25maWcuZ2xvYmFscz8uWyd0cy1qZXN0J107XG4gICAgICB0aGlzLmplc3QuY29uZmlnLnRyYW5zZm9ybSA9IHtcbiAgICAgICAgJ14uK1xcXFwudHN4PyQnOiBbXG4gICAgICAgICAgJ3RzLWplc3QnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRzY29uZmlnOiB0aGlzLnRzY29uZmlnRGV2LmZpbGVOYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFRhc2tzXG4gICAgdGhpcy50YXNrcy50cnlGaW5kKCdkZWZhdWx0Jyk/LnJlc2V0KCdwcm9qZW4gZGVmYXVsdCcsIHsgY3dkOiByZWxhdGl2ZSh0aGlzLm91dGRpciwgb3B0aW9ucy5wYXJlbnQub3V0ZGlyKSB9KTtcbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ2Nsb2JiZXInKTtcbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ2VqZWN0Jyk7XG5cbiAgICBjb25zdCB1cGdyYWRlVGFza05hbWUgPSAndXBncmFkZSc7XG4gICAgY29uc3QgdXBncmFkZXMgPSB0aGlzLmNvbXBvbmVudHMuZmluZChcbiAgICAgIChjOiBDb21wb25lbnQpOiBjIGlzIGphdmFzY3JpcHQuVXBncmFkZURlcGVuZGVuY2llcyA9PiAoXG4gICAgICAgIGMgaW5zdGFuY2VvZiBqYXZhc2NyaXB0LlVwZ3JhZGVEZXBlbmRlbmNpZXMgJiYgYy51cGdyYWRlVGFzay5uYW1lID09PSB1cGdyYWRlVGFza05hbWVcbiAgICAgICksXG4gICAgKTtcblxuICAgIGlmICh1cGdyYWRlcykge1xuICAgICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKHVwZ3JhZGVzLnVwZ3JhZGVUYXNrLm5hbWUpO1xuICAgICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKHVwZ3JhZGVzLnBvc3RVcGdyYWRlVGFzay5uYW1lKTtcbiAgICAgIHRoaXMudGFza3MuYWRkVGFzaygnY2hlY2stZm9yLXVwZGF0ZXMnLCB7XG4gICAgICAgIGVudjogeyAuLi51cGdyYWRlcy51cGdyYWRlVGFzay5lbnZWYXJzIH0sXG4gICAgICAgIHN0ZXBzOiB7XG4gICAgICAgICAgdG9KU09OOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGVwcyA9ICh1cGdyYWRlcyBhcyBhbnkpLnJlbmRlclRhc2tTdGVwcygpIGFzIFRhc2tTdGVwW107XG4gICAgICAgICAgICByZXR1cm4gc3RlcHMuZmlsdGVyKFxuICAgICAgICAgICAgICAoc3RlcCkgPT4gc3RlcC5leGVjICYmIHR5cGVvZiBzdGVwLmV4ZWMgPT09ICdzdHJpbmcnICYmIHN0ZXAuZXhlYz8uaW5jbHVkZXMoJ25wbS1jaGVjay11cGRhdGVzJyksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgYW55LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQ29tcG9zaXRlIHByb2plY3QgYW5kIHJlZmVyZW5jZXNcbiAgICBjb25zdCBhbGxEZXBzID0gWy4uLihvcHRpb25zLmRlcHMgPz8gW10pLCAuLi4ob3B0aW9ucy5wZWVyRGVwcyA/PyBbXSksIC4uLihvcHRpb25zLmRldkRlcHMgPz8gW10pXTtcblxuICAgIGZvciAoY29uc3QgdHNjb25maWcgb2YgW3RoaXMudHNjb25maWcsIHRoaXMudHNjb25maWdEZXZdKSB7XG4gICAgICB0c2NvbmZpZz8uZmlsZS5hZGRPdmVycmlkZSgnY29tcGlsZXJPcHRpb25zLmNvbXBvc2l0ZScsIHRydWUpO1xuICAgICAgdHNjb25maWc/LmZpbGUuYWRkT3ZlcnJpZGUoXG4gICAgICAgICdyZWZlcmVuY2VzJyxcbiAgICAgICAgYWxsRGVwcy5maWx0ZXIoaXNXb3Jrc3BhY2VSZWZlcmVuY2UpLm1hcCgocCkgPT4gKHsgcGF0aDogcmVsYXRpdmUodGhpcy5vdXRkaXIsIHAub3V0ZGlyKSB9KSksXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEFsbG93IHBhc3NpbmcgYWRkaXRpb25hbCBhcmdzIGxpa2UgYC0tZm9yY2VgIHRvIHRoZSBjb21waWxlIHRhc2tcbiAgICAvLyBOZWVkZWQgYmVjYXVzZSB3ZSB1c2UgY29tcG9zaXRlIHByb2plY3RzIHRoYXQgb2Z0ZW4gbmVlZCBhIHRzYyAtLWJ1aWxkIC0tZm9yY2VcbiAgICB0aGlzLnRhc2tzLnRyeUZpbmQoJ2NvbXBpbGUnKT8ucmVzZXQoJ3RzYyAtLWJ1aWxkJywge1xuICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBXZSBoYW5kbGUgZGVwZW5kZW5jaWVzIHZpYSB0aGUgcGFyZW50IHByb2plY3RcblxuICAgIC8vIERpc2FibGUgd29ya3NwYWNlIHJlc29sdmVEZXBzQW5kV3JpdGVQYWNrYWdlSnNvblxuICAgIC8qIEB0cy1pZ25vcmUgYWNjZXNzIHByaXZhdGUgbWV0aG9kICovXG4gICAgY29uc3Qgb3JpZ2luYWxSZXNvbHZlID0gdGhpcy5wYWNrYWdlLnJlc29sdmVEZXBzQW5kV3JpdGVQYWNrYWdlSnNvbjtcbiAgICAvKiBAdHMtaWdub3JlIGFjY2VzcyBwcml2YXRlIG1ldGhvZCAqL1xuICAgIHRoaXMucGFja2FnZS5yZXNvbHZlRGVwc0FuZFdyaXRlUGFja2FnZUpzb24gPSAoKSA9PiBbXTtcblxuICAgIC8vIEluc3RlYWQgb2YgaW5zdGFsbGluZyBkZXBlbmRlbmNpZXMsIHJlcXVlc3QgZnJvbSB0aGUgcGFyZW50XG4gICAgLyogQHRzLWlnbm9yZSBhY2Nlc3MgcHJpdmF0ZSBtZXRob2QgKi9cbiAgICB0aGlzLnBhY2thZ2UuaW5zdGFsbERlcGVuZGVuY2llcyA9ICh0cmlnZ2VyOiBqYXZhc2NyaXB0Lkluc3RhbGxUcmlnZ2VyKSA9PiB7XG4gICAgICBpZiAodHJpZ2dlci5yZWFzb24gPT09IGphdmFzY3JpcHQuSW5zdGFsbFJlYXNvbi5OT19OT0RFX01PRFVMRVMpIHtcbiAgICAgICAgLy8gSW4gYSBtb25vcmVwbywgYSB3b3Jrc3BhY2Ugbm9kZV9tb2R1bGVzIG1heSBsZWdpdGltYXRlbHkgbm90IGV4aXN0IGR1ZSB0byBob2lzdGluZy4gV2UganVzdCBza2lwIHRoaXMgY2FzZS5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgb3B0aW9ucy5wYXJlbnQucmVxdWVzdEluc3RhbGxEZXBlbmRlbmNpZXMoeyByZXNvbHZlRGVwc0FuZFdyaXRlUGFja2FnZUpzb246ICgpID0+IG9yaWdpbmFsUmVzb2x2ZS5hcHBseSh0aGlzLnBhY2thZ2UpIH0pO1xuICAgIH07XG5cbiAgICAvLyBGaXggdGhlIGluc3RhbGwgdHJpZ2dlciBsb2dnaW5nIHRvIG1hdGNoIGFjdHVhbCByZXF1ZXN0c1xuICAgIC8qIEB0cy1pZ25vcmUgYWNjZXNzIHByaXZhdGUgbWV0aG9kICovXG4gICAgY29uc3Qgb3JpZ2luYWxMb2dUcmlnZ2VyID0gdGhpcy5wYWNrYWdlLmxvZ0luc3RhbGxUcmlnZ2VyO1xuICAgIC8qIEB0cy1pZ25vcmUgYWNjZXNzIHByaXZhdGUgbWV0aG9kICovXG4gICAgdGhpcy5wYWNrYWdlLmxvZ0luc3RhbGxUcmlnZ2VyID0gKHRyaWdnZXI6IEluc3RhbGxUcmlnZ2VyKSA9PiB7XG4gICAgICBpZiAodHJpZ2dlci5yZWFzb24gPT09IGphdmFzY3JpcHQuSW5zdGFsbFJlYXNvbi5OT19OT0RFX01PRFVMRVMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLyogQHRzLWlnbm9yZSBhY2Nlc3MgcHJpdmF0ZSBtZXRob2QgKi9cbiAgICAgIHJldHVybiBvcmlnaW5hbExvZ1RyaWdnZXIuYXBwbHkodGhpcy5wYWNrYWdlLCBbdHJpZ2dlcl0pO1xuICAgIH07XG5cbiAgICAvLyBQcml2YXRlIHBhY2thZ2VcbiAgICBpZiAob3B0aW9ucy5wcml2YXRlKSB7XG4gICAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ3ByaXZhdGUnLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBZYXJuIEJlcnJ5IGluc3RhbGxDb25maWdcbiAgICBpZiAob3B0aW9ucy5ob2lzdGluZ0xpbWl0cykge1xuICAgICAgdGhpcy5wYWNrYWdlLmFkZEZpZWxkKCdpbnN0YWxsQ29uZmlnJywgeyBob2lzdGluZ0xpbWl0czogb3B0aW9ucy5ob2lzdGluZ0xpbWl0cyB9KTtcbiAgICB9XG5cbiAgICAvLyBGaXhlc1xuICAgIHRoaXMuYWRkVHNjb25maWdEZXZGaXgoKTtcbiAgICB0aGlzLmFkZEVzbGludFJjRml4KCk7XG5cbiAgICB0aGlzLmJ1bmRsZWREZXBzLnB1c2goLi4ub3B0aW9ucy5idW5kbGVkRGVwcyA/PyBbXSk7XG5cbiAgICAvLyBJbmRpdmlkdWFsIHdvcmtzcGFjZSBwYWNrYWdlcyBzaG91bGRuJ3QgZGVwZW5kIG9uIFwicHJvamVuXCIsIGl0IGdldHMgYnJvdWdodCBpbiBhdCB0aGUgbW9ub3JlcG8gcm9vdFxuICAgIHRoaXMuZGVwcy5yZW1vdmVEZXBlbmRlbmN5KCdwcm9qZW4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJIGRvbid0IGtub3cgd2h5IGB0c2NvbmZpZy5kZXYuanNvbmAgZG9lc24ndCBoYXZlIGFuIG91dGRpciwgb3Igd2hlcmUgaXQncyB1c2VkLFxuICAgKiBidXQgaXQncyBjYXVzaW5nIGluLXBsYWNlIGAuanNgIGZpbGVzIHRvIGFwcGVhci5cbiAgICovXG4gIHByb3RlY3RlZCBhZGRUc2NvbmZpZ0RldkZpeCgpIHtcbiAgICB0aGlzLnRzY29uZmlnRGV2LmZpbGUuYWRkT3ZlcnJpZGUoJ2NvbXBpbGVyT3B0aW9ucy5vdXREaXInLCAnbGliJyk7XG4gIH1cblxuICAvKipcbiAgICogTmVlZCB0byBoYWNrIEVTTGludCBjb25maWdcbiAgICpcbiAgICogLmVzbGludHJjLmpzIHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIEpTT04gZmlsZSwgaXQgd2lsbCBsb2FkIHRoZVxuICAgKiBKU09OIGZpbGUgYW5kIHBhdGNoIGl0IHdpdGggYSBkeW5hbWljIGRpcmVjdG9yeSBuYW1lIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluXG4gICAqIHBsYWluIEpTT04gKHNlZSBodHRwczovL2dpdGh1Yi5jb20vcHJvamVuL3Byb2plbi9pc3N1ZXMvMjQwNSkuXG4gICAqXG4gICAqIFNpbmNlIGVzbGludCBjb25maWcgaXMgbG9hZGVkIHdpdGggZGlmZmVyZW50IGN3ZCdzIGRlcGVuZGluZyBvbiB3aGV0aGVyIGl0J3NcbiAgICogZnJvbSB0aGUgVlNDb2RlIHBsdWdpbiBvciBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIHVzZSBhYnNvbHV0ZSBwYXRocyBldmVyeXdoZXJlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFkZEVzbGludFJjRml4KCkge1xuICAgIGNvbnN0IGVzbGludFJjID0gbmV3IFNvdXJjZUNvZGUodGhpcywgJy5lc2xpbnRyYy5qcycpO1xuICAgIGVzbGludFJjLmxpbmUoJ3ZhciBwYXRoID0gcmVxdWlyZShcXCdwYXRoXFwnKTsnKTtcbiAgICBlc2xpbnRSYy5saW5lKCd2YXIgZnMgPSByZXF1aXJlKFxcJ2ZzXFwnKTsnKTtcbiAgICBlc2xpbnRSYy5saW5lKCd2YXIgY29udGVudHMgPSBmcy5yZWFkRmlsZVN5bmMoYCR7X19kaXJuYW1lfS8uZXNsaW50cmMuanNvbmAsIHsgZW5jb2Rpbmc6IFxcJ3V0Zi04XFwnIH0pOycpO1xuICAgIGVzbGludFJjLmxpbmUoJy8vIFN0cmlwIGNvbW1lbnRzLCBKU09OLnBhcnNlKCkgZG9lc25cXCd0IGxpa2UgdGhvc2UnKTtcbiAgICBlc2xpbnRSYy5saW5lKCdjb250ZW50cyA9IGNvbnRlbnRzLnJlcGxhY2UoL15cXFxcL1xcXFwvLiokL20sIFxcJ1xcJyk7Jyk7XG4gICAgZXNsaW50UmMubGluZSgndmFyIGpzb24gPSBKU09OLnBhcnNlKGNvbnRlbnRzKTsnKTtcbiAgICBlc2xpbnRSYy5saW5lKCcvLyBQYXRjaCB0aGUgLmpzb24gY29uZmlnIHdpdGggc29tZXRoaW5nIHRoYXQgY2FuIG9ubHkgYmUgcmVwcmVzZW50ZWQgaW4gSlMnKTtcbiAgICBlc2xpbnRSYy5saW5lKCdqc29uLnBhcnNlck9wdGlvbnMudHNjb25maWdSb290RGlyID0gX19kaXJuYW1lOycpO1xuICAgIGVzbGludFJjLmxpbmUoJ21vZHVsZS5leHBvcnRzID0ganNvbjsnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIFByb2plY3RzIGluIHRoZSB3b3Jrc3BhY2UgdGhhdCBhcmUgYWxzbyBkZXBlbmRlbmNpZXMuXG4gICAqXG4gICAqIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGRlcGVuZGVuY3kgdHlwZS5cbiAgICovXG4gIHB1YmxpYyB3b3Jrc3BhY2VEZXBlbmRlbmNpZXModHlwZXM/OiBEZXBlbmRlbmN5VHlwZVtdKTogUHJvamVjdFtdIHtcbiAgICByZXR1cm4gdGhpcy5tb25vcmVwby5zdWJwcm9qZWN0cy5maWx0ZXIoKHNpYmxpbmcpID0+XG4gICAgICB0aGlzLmRlcHMuYWxsLnNvbWUoKGQpID0+IGQubmFtZSA9PT0gc2libGluZy5uYW1lICYmICghdHlwZXMgfHwgdHlwZXMuaW5jbHVkZXMoZC50eXBlKSkpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc3BlY2lhbGl6ZWQgcmVmZXJlbmNlIHRvIHRoaXMgd29ya3NwYWNlXG4gICAqL1xuICBwdWJsaWMgY3VzdG9taXplUmVmZXJlbmNlKHJlZk9wdHM/OiBSZWZlcmVuY2VPcHRpb25zKTogSVdvcmtzcGFjZVJlZmVyZW5jZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIG91dGRpcjogdGhpcy5vdXRkaXIsXG4gICAgICBpc1ByaXZhdGVQYWNrYWdlOiB0aGlzLmlzUHJpdmF0ZVBhY2thZ2UsXG4gICAgICB2ZXJzaW9uVHlwZTogcmVmT3B0cz8udmVyc2lvblR5cGUgPz8gdGhpcy52ZXJzaW9uVHlwZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGB3b3Jrc3BhY2UuY3VzdG9taXplUmVmZXJlbmNlKClgIG1ldGhvZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZmVyZW5jZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hhdCB0eXBlIG9mIGRlcGVuZGVuY3kgdG8gdGFrZSBvbiB0aGlzIHBhY2thZ2VcbiAgICpcbiAgICogQnkgZGVmYXVsdCwgZGVwZW5kZW5jaWVzIHdpbGwgYmUgcmVmZXJlbmNlZCB3aXRoIGEgYF5gLCB3aGljaCBtZWFucyB0aGF0XG4gICAqIGNvbWUgaW5zdGFsbCB0aW1lIGEgbmV3ZXIgdmVyc2lvbiBtYXkgYmUgaW5zdGFsbGVkLlxuICAgKlxuICAgKiBDaG9vc2UgYSBkaWZmZXJlbnQgcmFuZ2UgdHlwZSB0byB0YWtlLCBmb3IgZXhhbXBsZSwgYW4gYGV4YWN0YCBkZXBlbmRlbmN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnZnV0dXJlLW1pbm9yJ1xuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvblR5cGU/OiBWZXJzaW9uVHlwZTtcbn1cblxuZnVuY3Rpb24gcGFja2FnZU5hbWVzKHhzPzogQXJyYXk8c3RyaW5nIHwgSVdvcmtzcGFjZVJlZmVyZW5jZT4pOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gIGlmICgheHMpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB4cy5tYXAoKHgpID0+ICh0eXBlb2YgeCA9PT0gJ3N0cmluZycgPyB4IDogeC5uYW1lKSk7XG59XG5cbmZ1bmN0aW9uIHdpdGhvdXQ8QSBleHRlbmRzIG9iamVjdCwgSyBleHRlbmRzIGtleW9mIEE+KHg6IEEsIC4uLmtzOiBLW10pOiBPbWl0PEEsIEs+IHtcbiAgY29uc3QgcmV0ID0geyAuLi54IH07XG4gIGZvciAoY29uc3QgayBvZiBrcykge1xuICAgIGRlbGV0ZSByZXRba107XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gaXNXb3Jrc3BhY2VSZWZlcmVuY2UoeDogdW5rbm93bik6IHggaXMgSVdvcmtzcGFjZVJlZmVyZW5jZSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgISF4ICYmIChbJ2lzUHJpdmF0ZVBhY2thZ2UnLCAndmVyc2lvblR5cGUnLCAnbmFtZScsICdvdXRkaXInXSBzYXRpc2ZpZXMgQXJyYXk8a2V5b2YgSVdvcmtzcGFjZVJlZmVyZW5jZT4pLmV2ZXJ5KGsgPT4gKHggYXMgYW55KVtrXSAhPT0gdW5kZWZpbmVkKTtcbn1cbiJdfQ==
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC13b3Jrc3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMveWFybi90eXBlc2NyaXB0LXdvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLCtCQUFnQztBQUNoQyxtQ0FBMEc7QUFtRDFHOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjtJQVNuRSxZQUFZLE9BQW1DO1FBQzdDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FDdkIsT0FBTyxFQUNQLFFBQVEsRUFDUixNQUFNLEVBQ04sYUFBYSxFQUNiLE1BQU0sRUFDTixVQUFVLEVBQ1YsU0FBUyxFQUNULHdCQUF3QixFQUN4QixZQUFZLEVBQ1oscUJBQXFCLEVBQ3JCLGtCQUFrQixDQUNuQixDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7UUFDM0MsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7UUFFL0MsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLGNBQWMsSUFBSSxVQUFVLENBQUM7UUFDdkQsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxtQkFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUUvRyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztRQUVuRyxLQUFLLENBQUM7WUFDSixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsSUFBSSxFQUFFLE9BQU8s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QUM7QUFDN0QsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFzQyxDQUFJLEVBQUUsR0FBRyxFQUFPO0lBQ3BFLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNyQixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ25CLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLENBQVU7SUFDdEMsT0FBTyxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUFDLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUE2QyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFFLENBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQztBQUNwTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyByZWxhdGl2ZSB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBqYXZhc2NyaXB0LCB0eXBlc2NyaXB0LCBUYXNrU3RlcCwgU291cmNlQ29kZSwgRGVwZW5kZW5jeVR5cGUsIFByb2plY3QgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgTW9ub3JlcG8gfSBmcm9tICcuL21vbm9yZXBvJztcbmltcG9ydCB7IFR5cGVTY3JpcHRXb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSAnLi90eXBlc2NyaXB0LXdvcmtzcGFjZS1vcHRpb25zJztcblxuLyoqXG4gKiBXaGF0IGtpbmQgb2Ygc2VtdmVyIGRlcGVuZGVuY3kgdG8gdGFrZVxuICpcbiAqIC0gJ2FueS1taW5vcicgY29ycmVzcG9uZHMgdG8gJ14xJ1xuICogLSAnZnV0dXJlLW1pbm9yJyBjb3JyZXNwb25kcyB0byAnXjEuMi4zJ1xuICogLSAnYW55LXBhdGNoJyB0byAnfjEuMidcbiAqIC0gJ2Z1dHVyZS1wYXRjaCcgY29ycmVzcG9uZHMgdG8gJ34xLjIuMydcbiAqIC0gJ2V4YWN0JyBjb3JyZXNwb25kcyB0byAnMS4yLjMnXG4gKiAtICdhbnktZnV0dXJlJyBjb3JyZXNwb25kcyB0byAnPj0xLjIuMydcbiAqIC0gJ2FueScgY29ycmVzcG9uZHMgdG8gJyonXG4gKi9cbmV4cG9ydCB0eXBlIFZlcnNpb25UeXBlID0gJ2FueS1taW5vcicgfCAnZnV0dXJlLW1pbm9yJyB8ICdhbnktcGF0Y2gnIHwgJ2Z1dHVyZS1wYXRjaCcgfCAnZXhhY3QnIHwgJ2FueS1mdXR1cmUnIHwgJ2FueSc7XG5cbi8qKlxuICogQSByZWZlcmVuY2UgdG8gYSB3b3Jrc3BhY2UgaW4gdGhlIHNhbWUgbW9ub3JlcG9cbiAqXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIHJlZmVyZW5jZSBwYWNrYWdlcyBpbiB0aGUgc2FtZSBtb25vcmVwbyB3aGVuIGRlY2xhcmluZ1xuICogYGRlcHNgIGFuZCBgZGV2RGVwc2AuXG4gKlxuICogQnkgZGVmYXVsdCwgYWxsIGBUeXBlU2NyaXB0V29ya3NwYWNlYHMgaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlLCByZXByZXNlbnRpbmcgdGhlbXNlbHZlc1xuICogd2l0aCBhIGBeYCBkZXBlbmRlbmN5IGFuZCBhIHJlc3RyaWN0aW9uIHRoYXQgcHVibGljIHBhY2thZ2VzIG11c3QgaGF2ZSBwdWJsaWMgZGVwZW5kZW5jaWVzLlxuICpcbiAqIFRoZSBtZXRob2QgYC5jdXN0b21pemVSZWZlcmVuY2UoeyAuLi4gfSlgIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIHdvcmtzcGFjZSByZWZlcmVuY2Ugd2l0aFxuICogZGlmZmVyZW50IGJlaGF2aW9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElXb3Jrc3BhY2VSZWZlcmVuY2Uge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgcmVmZXJlbmNlZCB3b3Jrc3BhY2UgcGFja2FnZSBpcyBwcml2YXRlXG4gICAqL1xuICByZWFkb25seSBpc1ByaXZhdGVQYWNrYWdlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVwZW5kZW5jeSBuYW1lIG9mIHRoZSBwYWNrYWdlXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZW12ZXIgcmFuZ2UgdGhhdCBzaG91bGQgYmUgdXNlZCB0byByZWZlcmVuY2UgdGhpcyBwYWNrYWdlIHdoZW4gaXQgaXMgcmVsZWFzZWRcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25UeXBlOiBWZXJzaW9uVHlwZTtcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSB0aGF0IGhvbGRzIHRoaXMgcGFja2FnZSBpbiB0aGUgbW9ub3JlcG9cbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgVHlwZVNjcmlwdCB3b3Jrc3BhY2UgaW4gYSBgeWFybi5Nb25vcmVwb2BcbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVTY3JpcHRXb3Jrc3BhY2UgZXh0ZW5kcyB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0IGltcGxlbWVudHMgSVdvcmtzcGFjZVJlZmVyZW5jZSB7XG4gIHB1YmxpYyBkZWNsYXJlIHJlYWRvbmx5IHBhcmVudDogTW9ub3JlcG8gfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyByZWFkb25seSB3b3Jrc3BhY2VEaXJlY3Rvcnk6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGJ1bmRsZWREZXBzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNQcml2YXRlUGFja2FnZTogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5IHZlcnNpb25UeXBlID0gJ2Z1dHVyZS1taW5vcic7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb25vcmVwbzogTW9ub3JlcG87XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogVHlwZVNjcmlwdFdvcmtzcGFjZU9wdGlvbnMpIHtcbiAgICBjb25zdCByZW1haW5kZXIgPSB3aXRob3V0KFxuICAgICAgb3B0aW9ucyxcbiAgICAgICdwYXJlbnQnLFxuICAgICAgJ25hbWUnLFxuICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICdkZXBzJyxcbiAgICAgICdwZWVyRGVwcycsXG4gICAgICAnZGV2RGVwcycsXG4gICAgICAnZXhjbHVkZURlcHNGcm9tVXBncmFkZScsXG4gICAgICAncmVwb3NpdG9yeScsXG4gICAgICAnd29ya2Zsb3dOb2RlVmVyc2lvbicsXG4gICAgICAnYWxsb3dQcml2YXRlRGVwcycsXG4gICAgKTtcblxuICAgIGNvbnN0IHVzZUVzbGludCA9IHJlbWFpbmRlci5lc2xpbnQgPz8gdHJ1ZTtcbiAgICBjb25zdCB1c2VQcmV0dGllciA9IHJlbWFpbmRlci5wcmV0dGllciA/PyB0cnVlO1xuXG4gICAgY29uc3Qgd3NTY29wZSA9IHJlbWFpbmRlci53b3Jrc3BhY2VTY29wZSA/PyAncGFja2FnZXMnO1xuICAgIGNvbnN0IHdvcmtzcGFjZURpcmVjdG9yeSA9IGAke3dzU2NvcGV9LyR7b3B0aW9ucy5uYW1lfWA7XG5cbiAgICBjb25zdCBucG1BY2Nlc3MgPSBvcHRpb25zLnBhcmVudC5tb25vcmVwb1JlbGVhc2UgJiYgIW9wdGlvbnMucHJpdmF0ZSA/IGphdmFzY3JpcHQuTnBtQWNjZXNzLlBVQkxJQyA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHJlbGVhc2VFbnZpcm9ubWVudCA9IG9wdGlvbnMucmVsZWFzZUVudmlyb25tZW50ID8/IG9wdGlvbnMucGFyZW50Lm9wdGlvbnMucmVsZWFzZUVudmlyb25tZW50O1xuXG4gICAgc3VwZXIoe1xuICAgICAgcGFyZW50OiBvcHRpb25zLnBhcmVudCxcbiAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgcmVwb3NpdG9yeTogb3B0aW9ucy5yZXBvc2l0b3J5ID8/IG9wdGlvbnMucGFyZW50LnJlcG9zaXRvcnlVcmwsXG4gICAgICByZXBvc2l0b3J5RGlyZWN0b3J5OiB3b3Jrc3BhY2VEaXJlY3RvcnksXG4gICAgICBvdXRkaXI6IHdvcmtzcGFjZURpcmVjdG9yeSxcbiAgICAgIGRlZmF1bHRSZWxlYXNlQnJhbmNoOiAnUkVRVUlSRUQtQlVULVNIT1VMRC1OT1QtQkUnLFxuICAgICAgcGFja2FnZU1hbmFnZXI6IG9wdGlvbnMucGFyZW50LnBhY2thZ2UucGFja2FnZU1hbmFnZXIsXG4gICAgICByZWxlYXNlOiBmYWxzZSxcbiAgICAgIHBhY2thZ2U6ICFvcHRpb25zLnByaXZhdGUsXG4gICAgICBlc2xpbnQ6IHVzZUVzbGludCxcbiAgICAgIHByZXR0aWVyOiB1c2VQcmV0dGllcixcbiAgICAgIHByZXR0aWVyT3B0aW9uczogdXNlUHJldHRpZXJcbiAgICAgICAgPyB7XG4gICAgICAgICAgb3ZlcnJpZGVzOiBvcHRpb25zLnBhcmVudC5wcmV0dGllcj8ub3ZlcnJpZGVzLFxuICAgICAgICAgIHNldHRpbmdzOiBvcHRpb25zLnBhcmVudC5wcmV0dGllcj8uc2V0dGluZ3MsXG4gICAgICAgICAgLi4ucmVtYWluZGVyLnByZXR0aWVyT3B0aW9ucyxcbiAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGVzbGludE9wdGlvbnM6IHVzZUVzbGludFxuICAgICAgICA/IHtcbiAgICAgICAgICBkaXJzOiBbcmVtYWluZGVyLnNyY2RpciA/PyAnc3JjJ10sXG4gICAgICAgICAgZGV2ZGlyczogW3JlbWFpbmRlci50ZXN0ZGlyID8/ICd0ZXN0JywgJ2J1aWxkLXRvb2xzJ10sXG4gICAgICAgICAgLi4ucmVtYWluZGVyLmVzbGludE9wdGlvbnMsXG4gICAgICAgICAgcHJldHRpZXI6IHVzZVByZXR0aWVyLFxuICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgc2FtcGxlQ29kZTogZmFsc2UsXG5cbiAgICAgIGRlcHM6IHBhY2thZ2VOYW1lcyhvcHRpb25zLmRlcHMpLFxuICAgICAgcGVlckRlcHM6IHBhY2thZ2VOYW1lcyhvcHRpb25zLnBlZXJEZXBzKSxcbiAgICAgIGRldkRlcHM6IHBhY2thZ2VOYW1lcyhvcHRpb25zLmRldkRlcHMpLFxuICAgICAgcHJvamVuRGV2RGVwZW5kZW5jeTogdHJ1ZSxcbiAgICAgIHJlbGVhc2VFbnZpcm9ubWVudCxcblxuICAgICAgZGVwc1VwZ3JhZGU6IG9wdGlvbnMuZGVwc1VwZ3JhZGUgPz8gdHJ1ZSxcbiAgICAgIGRlcHNVcGdyYWRlT3B0aW9uczoge1xuICAgICAgICB3b3JrZmxvdzogZmFsc2UsXG4gICAgICAgIGNvb2xkb3duOiBvcHRpb25zLnBhcmVudC5vcHRpb25zLmRlcHNVcGdyYWRlT3B0aW9ucz8uY29vbGRvd24gPz8gKG9wdGlvbnMucGFyZW50Lm9wdGlvbnMueWFybkJlcnJ5ID8gMyA6IHVuZGVmaW5lZCksXG4gICAgICAgIGV4Y2x1ZGU6IFtcbiAgICAgICAgICAuLi4ob3B0aW9ucy5leGNsdWRlRGVwc0Zyb21VcGdyYWRlID8/IFtdKSxcbiAgICAgICAgICAuLi4ocGFja2FnZU5hbWVzKG9wdGlvbnMuZGVwcz8uZmlsdGVyKGlzV29ya3NwYWNlUmVmZXJlbmNlKSkgPz8gW10pLFxuICAgICAgICAgIC4uLihwYWNrYWdlTmFtZXMob3B0aW9ucy5wZWVyRGVwcz8uZmlsdGVyKGlzV29ya3NwYWNlUmVmZXJlbmNlKSkgPz8gW10pLFxuICAgICAgICAgIC4uLihwYWNrYWdlTmFtZXMob3B0aW9ucy5kZXZEZXBzPy5maWx0ZXIoaXNXb3Jrc3BhY2VSZWZlcmVuY2UpKSA/PyBbXSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuXG4gICAgICBucG1BY2Nlc3MsXG5cbiAgICAgIC8vIERldmlhdGlvbiBmcm9tIHVwc3RyZWFtIHByb2plbjogdXBzdHJlYW0gcHJvamVuIGRlZmF1bHRzIHRvIG1pbk5vZGVWZXJzaW9uLCBidXQgd2UgaGF2ZSB0b28gbWFueSB3b3JrZmxvd3NcbiAgICAgIC8vIHRoYXQgdXNlIHRvb2xzIHRoYXQgd2FudCBhIHJlY2VudCBOb2RlIHZlcnNpb24sIHNvIGRlZmF1bHQgdG8gYSByZWFzb25hYmxlIGZsb2F0aW5nIHZlcnNpb24uXG4gICAgICB3b3JrZmxvd05vZGVWZXJzaW9uOiBvcHRpb25zLndvcmtmbG93Tm9kZVZlcnNpb24gPz8gJ2x0cy8qJyxcblxuICAgICAgLi4ucmVtYWluZGVyLFxuICAgIH0pO1xuXG4gICAgdGhpcy5tb25vcmVwbyA9IG9wdGlvbnMucGFyZW50O1xuICAgIHRoaXMuaXNQcml2YXRlUGFja2FnZSA9IG9wdGlvbnMucHJpdmF0ZSA/PyBmYWxzZTtcbiAgICB0aGlzLndvcmtzcGFjZURpcmVjdG9yeSA9IHdvcmtzcGFjZURpcmVjdG9yeTtcblxuICAgIC8vIElmIHRoZSBwYWNrYWdlIGlzIHB1YmxpYywgYWxsIGxvY2FsIGRlcHMgYW5kIHBlZXIgZGVwcyBtdXN0IGFsc28gYmUgcHVibGljIGFuZCBvdGhlciBUeXBlU2NyaXB0V29ya3NwYWNlc1xuICAgIGlmICghdGhpcy5pc1ByaXZhdGVQYWNrYWdlKSB7XG4gICAgICBjb25zdCBpbGxlZ2FsRGVwcyA9IFtcbiAgICAgICAgLy8gT3ZlcnJpZGFibGUgZm9yIGRlcHMgYmVjYXVzZSB0aGlzIG1pZ2h0IG1ha2Ugc2Vuc2UgaWYgd2UgYnVuZGxlIHRoZSBwYWNrYWdlLlxuICAgICAgICAuLi5vcHRpb25zLmRlcHM/LmZpbHRlcihpc1dvcmtzcGFjZVJlZmVyZW5jZSkuZmlsdGVyKHcgPT4gdy5pc1ByaXZhdGVQYWNrYWdlICYmICFvcHRpb25zLmFsbG93UHJpdmF0ZURlcHMpID8/IFtdLFxuICAgICAgICAvLyBCdXQgbm90IGZvciBwZWVyRGVwcywgdGhleSBtdXN0IGFsd2F5cyBiZSBpbnN0YWxsZWQgYnkgdGhlIHVzZXIuXG4gICAgICAgIC4uLm9wdGlvbnMucGVlckRlcHM/LmZpbHRlcihpc1dvcmtzcGFjZVJlZmVyZW5jZSkuZmlsdGVyKHcgPT4gdy5pc1ByaXZhdGVQYWNrYWdlKSA/PyBbXSxcbiAgICAgICAgLy8gZGV2RGVwcyBjYW4gYmUgcHJpdmF0ZSwgd2UgZG9uJ3QgY2FyZS5cbiAgICAgIF07XG5cbiAgICAgIGlmIChpbGxlZ2FsRGVwcy5sZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFtcbiAgICAgICAgICBgJHt0aGlzLm5hbWV9IGlzIHB1YmxpYyBhbmQgY2Fubm90IGRlcGVuZCBvbiBhbnkgcHJpdmF0ZSBwYWNrYWdlcyBmcm9tIHRoZSB3b3Jrc3BhY2UuYCxcbiAgICAgICAgICBgUGxlYXNlIGZpeCB0aGVzZSBkZXBlbmRlbmNpZXM6XFxuICAgIC0gJHtpbGxlZ2FsRGVwcy5tYXAoKHApID0+IHAubmFtZSkuam9pbignXFxuICAgIC0gJyl9YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVnaXN0ZXIgd2l0aCByZWxlYXNlIHdvcmtmbG93XG4gICAgdGhpcy5tb25vcmVwby5tb25vcmVwb1JlbGVhc2U/LmFkZFdvcmtzcGFjZSh0aGlzLCB7XG4gICAgICBwcml2YXRlOiB0aGlzLmlzUHJpdmF0ZVBhY2thZ2UsXG4gICAgICB3b3JrZmxvd05vZGVWZXJzaW9uOiB0aGlzLm5vZGVWZXJzaW9uLFxuICAgICAgbnBtRGlzdFRhZzogb3B0aW9ucy5ucG1EaXN0VGFnLFxuICAgICAgLy8gSW5oZXJpdCBzZXR0aW5nIGZyb20gTW9ub3JlcG8gaWYgY29uZmlndXJlZFxuICAgICAgbnBtVHJ1c3RlZFB1Ymxpc2hpbmc6IG9wdGlvbnMubnBtVHJ1c3RlZFB1Ymxpc2hpbmcgPz8gdGhpcy5tb25vcmVwby5vcHRpb25zLm5wbVRydXN0ZWRQdWJsaXNoaW5nLFxuICAgICAgZW52aXJvbm1lbnQ6IHJlbGVhc2VFbnZpcm9ubWVudCxcbiAgICAgIHJlbGVhc2FibGVDb21taXRzOiBvcHRpb25zLnJlbGVhc2FibGVDb21taXRzLFxuICAgICAgbmV4dFZlcnNpb25Db21tYW5kOiBvcHRpb25zLm5leHRWZXJzaW9uQ29tbWFuZCxcbiAgICAgIHZlcnNpb25CcmFuY2hPcHRpb25zOiB7XG4gICAgICAgIG1ham9yVmVyc2lvbjogb3B0aW9ucy5tYWpvclZlcnNpb24sXG4gICAgICAgIG1pbk1ham9yVmVyc2lvbjogb3B0aW9ucy5taW5NYWpvclZlcnNpb24sXG4gICAgICAgIHByZXJlbGVhc2U6IG9wdGlvbnMucHJlcmVsZWFzZSxcbiAgICAgIH0sXG4gICAgICByZXBvUnVudGltZURlcGVuZGVuY2llczogT2JqZWN0LmZyb21FbnRyaWVzKFtcbiAgICAgICAgLi4ub3B0aW9ucy5kZXBzID8/IFtdLFxuICAgICAgICAuLi5vcHRpb25zLnBlZXJEZXBzID8/IFtdLFxuICAgICAgXS5maWx0ZXIoaXNXb3Jrc3BhY2VSZWZlcmVuY2UpLm1hcCh3ID0+IFt3Lm5hbWUsIHcudmVyc2lvblR5cGVdKSksXG4gICAgfSk7XG5cbiAgICAvLyBFeHBvc2UgdGhlIG1vbm9yZXBvIHB1Ymxpc2hlciBhcyBwcm9qZWN0LnJlbGVhc2Ugc28gdGhhdCBvdGhlciBjb2RlIGNhbiBmaW5kIGl0IHZpYSBwcm9qZWN0LnJlbGVhc2U/LnB1Ymxpc2hlclxuICAgIC8vIE1VU1QgYmUgY2FsbGVkIGFmdGVyIGB0aGlzLm1vbm9yZXBvLm1vbm9yZXBvUmVsZWFzZT8uYWRkV29ya3NwYWNlKC4uLilgXG4gICAgLy8gQHRzLWlnbm9yZSAtIHJlYWRvbmx5IHByb3BlcnR5LCBidXQgd2UgbmVlZCB0byBzZXQgaXQgZm9yIHVwc3RyZWFtIG1peGluIGNvbXBhdGliaWxpdHlcbiAgICB0aGlzLnJlbGVhc2UgPSB0aGlzLm1vbm9yZXBvLm1vbm9yZXBvUmVsZWFzZT8ud29ya3NwYWNlUmVsZWFzZSh0aGlzKTtcblxuICAgIC8vIGplc3QgY29uZmlnXG4gICAgaWYgKHRoaXMuamVzdD8uY29uZmlnICYmIHRoaXMuamVzdC5jb25maWcucHJlc2V0ID09PSAndHMtamVzdCcpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmplc3QuY29uZmlnLmdsb2JhbHM/LlsndHMtamVzdCddO1xuICAgICAgdGhpcy5qZXN0LmNvbmZpZy50cmFuc2Zvcm0gPSB7XG4gICAgICAgICdeLitcXFxcLnRzeD8kJzogW1xuICAgICAgICAgICd0cy1qZXN0JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0c2NvbmZpZzogdGhpcy50c2NvbmZpZ0Rldi5maWxlTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBUYXNrc1xuICAgIHRoaXMudGFza3MudHJ5RmluZCgnZGVmYXVsdCcpPy5yZXNldCgncHJvamVuIGRlZmF1bHQnLCB7IGN3ZDogcmVsYXRpdmUodGhpcy5vdXRkaXIsIG9wdGlvbnMucGFyZW50Lm91dGRpcikgfSk7XG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdjbG9iYmVyJyk7XG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdlamVjdCcpO1xuXG4gICAgY29uc3QgdXBncmFkZVRhc2tOYW1lID0gJ3VwZ3JhZGUnO1xuICAgIGNvbnN0IHVwZ3JhZGVzID0gdGhpcy5jb21wb25lbnRzLmZpbmQoXG4gICAgICAoYzogQ29tcG9uZW50KTogYyBpcyBqYXZhc2NyaXB0LlVwZ3JhZGVEZXBlbmRlbmNpZXMgPT4gKFxuICAgICAgICBjIGluc3RhbmNlb2YgamF2YXNjcmlwdC5VcGdyYWRlRGVwZW5kZW5jaWVzICYmIGMudXBncmFkZVRhc2submFtZSA9PT0gdXBncmFkZVRhc2tOYW1lXG4gICAgICApLFxuICAgICk7XG5cbiAgICBpZiAodXBncmFkZXMpIHtcbiAgICAgIHRoaXMudGFza3MucmVtb3ZlVGFzayh1cGdyYWRlcy51cGdyYWRlVGFzay5uYW1lKTtcbiAgICAgIHRoaXMudGFza3MucmVtb3ZlVGFzayh1cGdyYWRlcy5wb3N0VXBncmFkZVRhc2submFtZSk7XG4gICAgICB0aGlzLnRhc2tzLmFkZFRhc2soJ2NoZWNrLWZvci11cGRhdGVzJywge1xuICAgICAgICBlbnY6IHsgLi4udXBncmFkZXMudXBncmFkZVRhc2suZW52VmFycyB9LFxuICAgICAgICBzdGVwczoge1xuICAgICAgICAgIHRvSlNPTjogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RlcHMgPSAodXBncmFkZXMgYXMgYW55KS5yZW5kZXJUYXNrU3RlcHMoKSBhcyBUYXNrU3RlcFtdO1xuICAgICAgICAgICAgcmV0dXJuIHN0ZXBzLmZpbHRlcihcbiAgICAgICAgICAgICAgKHN0ZXApID0+IHN0ZXAuZXhlYyAmJiB0eXBlb2Ygc3RlcC5leGVjID09PSAnc3RyaW5nJyAmJiBzdGVwLmV4ZWM/LmluY2x1ZGVzKCducG0tY2hlY2stdXBkYXRlcycpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9IGFzIGFueSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIENvbXBvc2l0ZSBwcm9qZWN0IGFuZCByZWZlcmVuY2VzXG4gICAgY29uc3QgYWxsRGVwcyA9IFsuLi4ob3B0aW9ucy5kZXBzID8/IFtdKSwgLi4uKG9wdGlvbnMucGVlckRlcHMgPz8gW10pLCAuLi4ob3B0aW9ucy5kZXZEZXBzID8/IFtdKV07XG5cbiAgICBmb3IgKGNvbnN0IHRzY29uZmlnIG9mIFt0aGlzLnRzY29uZmlnLCB0aGlzLnRzY29uZmlnRGV2XSkge1xuICAgICAgdHNjb25maWc/LmZpbGUuYWRkT3ZlcnJpZGUoJ2NvbXBpbGVyT3B0aW9ucy5jb21wb3NpdGUnLCB0cnVlKTtcbiAgICAgIHRzY29uZmlnPy5maWxlLmFkZE92ZXJyaWRlKFxuICAgICAgICAncmVmZXJlbmNlcycsXG4gICAgICAgIGFsbERlcHMuZmlsdGVyKGlzV29ya3NwYWNlUmVmZXJlbmNlKS5tYXAoKHApID0+ICh7IHBhdGg6IHJlbGF0aXZlKHRoaXMub3V0ZGlyLCBwLm91dGRpcikgfSkpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBBbGxvdyBwYXNzaW5nIGFkZGl0aW9uYWwgYXJncyBsaWtlIGAtLWZvcmNlYCB0byB0aGUgY29tcGlsZSB0YXNrXG4gICAgLy8gTmVlZGVkIGJlY2F1c2Ugd2UgdXNlIGNvbXBvc2l0ZSBwcm9qZWN0cyB0aGF0IG9mdGVuIG5lZWQgYSB0c2MgLS1idWlsZCAtLWZvcmNlXG4gICAgdGhpcy50YXNrcy50cnlGaW5kKCdjb21waWxlJyk/LnJlc2V0KCd0c2MgLS1idWlsZCcsIHtcbiAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gV2UgaGFuZGxlIGRlcGVuZGVuY2llcyB2aWEgdGhlIHBhcmVudCBwcm9qZWN0XG5cbiAgICAvLyBEaXNhYmxlIHdvcmtzcGFjZSByZXNvbHZlRGVwc0FuZFdyaXRlUGFja2FnZUpzb25cbiAgICAvKiBAdHMtaWdub3JlIGFjY2VzcyBwcml2YXRlIG1ldGhvZCAqL1xuICAgIGNvbnN0IG9yaWdpbmFsUmVzb2x2ZSA9IHRoaXMucGFja2FnZS5yZXNvbHZlRGVwc0FuZFdyaXRlUGFja2FnZUpzb247XG4gICAgLyogQHRzLWlnbm9yZSBhY2Nlc3MgcHJpdmF0ZSBtZXRob2QgKi9cbiAgICB0aGlzLnBhY2thZ2UucmVzb2x2ZURlcHNBbmRXcml0ZVBhY2thZ2VKc29uID0gKCkgPT4gW107XG5cbiAgICAvLyBJbnN0ZWFkIG9mIGluc3RhbGxpbmcgZGVwZW5kZW5jaWVzLCByZXF1ZXN0IGZyb20gdGhlIHBhcmVudFxuICAgIC8qIEB0cy1pZ25vcmUgYWNjZXNzIHByaXZhdGUgbWV0aG9kICovXG4gICAgdGhpcy5wYWNrYWdlLmluc3RhbGxEZXBlbmRlbmNpZXMgPSAodHJpZ2dlcjogamF2YXNjcmlwdC5JbnN0YWxsVHJpZ2dlcikgPT4ge1xuICAgICAgaWYgKHRyaWdnZXIucmVhc29uID09PSBqYXZhc2NyaXB0Lkluc3RhbGxSZWFzb24uTk9fTk9ERV9NT0RVTEVTKSB7XG4gICAgICAgIC8vIEluIGEgbW9ub3JlcG8sIGEgd29ya3NwYWNlIG5vZGVfbW9kdWxlcyBtYXkgbGVnaXRpbWF0ZWx5IG5vdCBleGlzdCBkdWUgdG8gaG9pc3RpbmcuIFdlIGp1c3Qgc2tpcCB0aGlzIGNhc2UuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG9wdGlvbnMucGFyZW50LnJlcXVlc3RJbnN0YWxsRGVwZW5kZW5jaWVzKHsgcmVzb2x2ZURlcHNBbmRXcml0ZVBhY2thZ2VKc29uOiAoKSA9PiBvcmlnaW5hbFJlc29sdmUuYXBwbHkodGhpcy5wYWNrYWdlKSB9KTtcbiAgICB9O1xuXG4gICAgLy8gRml4IHRoZSBpbnN0YWxsIHRyaWdnZXIgbG9nZ2luZyB0byBtYXRjaCBhY3R1YWwgcmVxdWVzdHNcbiAgICAvKiBAdHMtaWdub3JlIGFjY2VzcyBwcml2YXRlIG1ldGhvZCAqL1xuICAgIGNvbnN0IG9yaWdpbmFsTG9nVHJpZ2dlciA9IHRoaXMucGFja2FnZS5sb2dJbnN0YWxsVHJpZ2dlcjtcbiAgICAvKiBAdHMtaWdub3JlIGFjY2VzcyBwcml2YXRlIG1ldGhvZCAqL1xuICAgIHRoaXMucGFja2FnZS5sb2dJbnN0YWxsVHJpZ2dlciA9ICh0cmlnZ2VyOiBJbnN0YWxsVHJpZ2dlcikgPT4ge1xuICAgICAgaWYgKHRyaWdnZXIucmVhc29uID09PSBqYXZhc2NyaXB0Lkluc3RhbGxSZWFzb24uTk9fTk9ERV9NT0RVTEVTKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8qIEB0cy1pZ25vcmUgYWNjZXNzIHByaXZhdGUgbWV0aG9kICovXG4gICAgICByZXR1cm4gb3JpZ2luYWxMb2dUcmlnZ2VyLmFwcGx5KHRoaXMucGFja2FnZSwgW3RyaWdnZXJdKTtcbiAgICB9O1xuXG4gICAgLy8gUHJpdmF0ZSBwYWNrYWdlXG4gICAgaWYgKG9wdGlvbnMucHJpdmF0ZSkge1xuICAgICAgdGhpcy5wYWNrYWdlLmFkZEZpZWxkKCdwcml2YXRlJywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gWWFybiBCZXJyeSBpbnN0YWxsQ29uZmlnXG4gICAgaWYgKG9wdGlvbnMuaG9pc3RpbmdMaW1pdHMpIHtcbiAgICAgIHRoaXMucGFja2FnZS5hZGRGaWVsZCgnaW5zdGFsbENvbmZpZycsIHsgaG9pc3RpbmdMaW1pdHM6IG9wdGlvbnMuaG9pc3RpbmdMaW1pdHMgfSk7XG4gICAgfVxuXG4gICAgLy8gRml4ZXNcbiAgICB0aGlzLmFkZFRzY29uZmlnRGV2Rml4KCk7XG4gICAgdGhpcy5hZGRFc2xpbnRSY0ZpeCgpO1xuXG4gICAgdGhpcy5idW5kbGVkRGVwcy5wdXNoKC4uLm9wdGlvbnMuYnVuZGxlZERlcHMgPz8gW10pO1xuXG4gICAgLy8gSW5kaXZpZHVhbCB3b3Jrc3BhY2UgcGFja2FnZXMgc2hvdWxkbid0IGRlcGVuZCBvbiBcInByb2plblwiLCBpdCBnZXRzIGJyb3VnaHQgaW4gYXQgdGhlIG1vbm9yZXBvIHJvb3RcbiAgICB0aGlzLmRlcHMucmVtb3ZlRGVwZW5kZW5jeSgncHJvamVuJyk7XG4gIH1cblxuICAvKipcbiAgICogSSBkb24ndCBrbm93IHdoeSBgdHNjb25maWcuZGV2Lmpzb25gIGRvZXNuJ3QgaGF2ZSBhbiBvdXRkaXIsIG9yIHdoZXJlIGl0J3MgdXNlZCxcbiAgICogYnV0IGl0J3MgY2F1c2luZyBpbi1wbGFjZSBgLmpzYCBmaWxlcyB0byBhcHBlYXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWRkVHNjb25maWdEZXZGaXgoKSB7XG4gICAgdGhpcy50c2NvbmZpZ0Rldi5maWxlLmFkZE92ZXJyaWRlKCdjb21waWxlck9wdGlvbnMub3V0RGlyJywgJ2xpYicpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5lZWQgdG8gaGFjayBFU0xpbnQgY29uZmlnXG4gICAqXG4gICAqIC5lc2xpbnRyYy5qcyB3aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBKU09OIGZpbGUsIGl0IHdpbGwgbG9hZCB0aGVcbiAgICogSlNPTiBmaWxlIGFuZCBwYXRjaCBpdCB3aXRoIGEgZHluYW1pYyBkaXJlY3RvcnkgbmFtZSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBpblxuICAgKiBwbGFpbiBKU09OIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Byb2plbi9wcm9qZW4vaXNzdWVzLzI0MDUpLlxuICAgKlxuICAgKiBTaW5jZSBlc2xpbnQgY29uZmlnIGlzIGxvYWRlZCB3aXRoIGRpZmZlcmVudCBjd2QncyBkZXBlbmRpbmcgb24gd2hldGhlciBpdCdzXG4gICAqIGZyb20gdGhlIFZTQ29kZSBwbHVnaW4gb3IgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCB1c2UgYWJzb2x1dGUgcGF0aHMgZXZlcnl3aGVyZS5cbiAgICovXG4gIHByb3RlY3RlZCBhZGRFc2xpbnRSY0ZpeCgpIHtcbiAgICBjb25zdCBlc2xpbnRSYyA9IG5ldyBTb3VyY2VDb2RlKHRoaXMsICcuZXNsaW50cmMuanMnKTtcbiAgICBlc2xpbnRSYy5saW5lKCd2YXIgcGF0aCA9IHJlcXVpcmUoXFwncGF0aFxcJyk7Jyk7XG4gICAgZXNsaW50UmMubGluZSgndmFyIGZzID0gcmVxdWlyZShcXCdmc1xcJyk7Jyk7XG4gICAgZXNsaW50UmMubGluZSgndmFyIGNvbnRlbnRzID0gZnMucmVhZEZpbGVTeW5jKGAke19fZGlybmFtZX0vLmVzbGludHJjLmpzb25gLCB7IGVuY29kaW5nOiBcXCd1dGYtOFxcJyB9KTsnKTtcbiAgICBlc2xpbnRSYy5saW5lKCcvLyBTdHJpcCBjb21tZW50cywgSlNPTi5wYXJzZSgpIGRvZXNuXFwndCBsaWtlIHRob3NlJyk7XG4gICAgZXNsaW50UmMubGluZSgnY29udGVudHMgPSBjb250ZW50cy5yZXBsYWNlKC9eXFxcXC9cXFxcLy4qJC9tLCBcXCdcXCcpOycpO1xuICAgIGVzbGludFJjLmxpbmUoJ3ZhciBqc29uID0gSlNPTi5wYXJzZShjb250ZW50cyk7Jyk7XG4gICAgZXNsaW50UmMubGluZSgnLy8gUGF0Y2ggdGhlIC5qc29uIGNvbmZpZyB3aXRoIHNvbWV0aGluZyB0aGF0IGNhbiBvbmx5IGJlIHJlcHJlc2VudGVkIGluIEpTJyk7XG4gICAgZXNsaW50UmMubGluZSgnanNvbi5wYXJzZXJPcHRpb25zLnRzY29uZmlnUm9vdERpciA9IF9fZGlybmFtZTsnKTtcbiAgICBlc2xpbnRSYy5saW5lKCdtb2R1bGUuZXhwb3J0cyA9IGpzb247Jyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFsbCBQcm9qZWN0cyBpbiB0aGUgd29ya3NwYWNlIHRoYXQgYXJlIGFsc28gZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBPcHRpb25hbGx5IGZpbHRlciBieSBkZXBlbmRlbmN5IHR5cGUuXG4gICAqL1xuICBwdWJsaWMgd29ya3NwYWNlRGVwZW5kZW5jaWVzKHR5cGVzPzogRGVwZW5kZW5jeVR5cGVbXSk6IFByb2plY3RbXSB7XG4gICAgcmV0dXJuIHRoaXMubW9ub3JlcG8uc3VicHJvamVjdHMuZmlsdGVyKChzaWJsaW5nKSA9PlxuICAgICAgdGhpcy5kZXBzLmFsbC5zb21lKChkKSA9PiBkLm5hbWUgPT09IHNpYmxpbmcubmFtZSAmJiAoIXR5cGVzIHx8IHR5cGVzLmluY2x1ZGVzKGQudHlwZSkpKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHNwZWNpYWxpemVkIHJlZmVyZW5jZSB0byB0aGlzIHdvcmtzcGFjZVxuICAgKi9cbiAgcHVibGljIGN1c3RvbWl6ZVJlZmVyZW5jZShyZWZPcHRzPzogUmVmZXJlbmNlT3B0aW9ucyk6IElXb3Jrc3BhY2VSZWZlcmVuY2Uge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBvdXRkaXI6IHRoaXMub3V0ZGlyLFxuICAgICAgaXNQcml2YXRlUGFja2FnZTogdGhpcy5pc1ByaXZhdGVQYWNrYWdlLFxuICAgICAgdmVyc2lvblR5cGU6IHJlZk9wdHM/LnZlcnNpb25UeXBlID8/IHRoaXMudmVyc2lvblR5cGUsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBgd29ya3NwYWNlLmN1c3RvbWl6ZVJlZmVyZW5jZSgpYCBtZXRob2RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoYXQgdHlwZSBvZiBkZXBlbmRlbmN5IHRvIHRha2Ugb24gdGhpcyBwYWNrYWdlXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGRlcGVuZGVuY2llcyB3aWxsIGJlIHJlZmVyZW5jZWQgd2l0aCBhIGBeYCwgd2hpY2ggbWVhbnMgdGhhdFxuICAgKiBjb21lIGluc3RhbGwgdGltZSBhIG5ld2VyIHZlcnNpb24gbWF5IGJlIGluc3RhbGxlZC5cbiAgICpcbiAgICogQ2hvb3NlIGEgZGlmZmVyZW50IHJhbmdlIHR5cGUgdG8gdGFrZSwgZm9yIGV4YW1wbGUsIGFuIGBleGFjdGAgZGVwZW5kZW5jeS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2Z1dHVyZS1taW5vcidcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25UeXBlPzogVmVyc2lvblR5cGU7XG59XG5cbmZ1bmN0aW9uIHBhY2thZ2VOYW1lcyh4cz86IEFycmF5PHN0cmluZyB8IElXb3Jrc3BhY2VSZWZlcmVuY2U+KTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICBpZiAoIXhzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4geHMubWFwKCh4KSA9PiAodHlwZW9mIHggPT09ICdzdHJpbmcnID8geCA6IHgubmFtZSkpO1xufVxuXG5mdW5jdGlvbiB3aXRob3V0PEEgZXh0ZW5kcyBvYmplY3QsIEsgZXh0ZW5kcyBrZXlvZiBBPih4OiBBLCAuLi5rczogS1tdKTogT21pdDxBLCBLPiB7XG4gIGNvbnN0IHJldCA9IHsgLi4ueCB9O1xuICBmb3IgKGNvbnN0IGsgb2Yga3MpIHtcbiAgICBkZWxldGUgcmV0W2tdO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGlzV29ya3NwYWNlUmVmZXJlbmNlKHg6IHVua25vd24pOiB4IGlzIElXb3Jrc3BhY2VSZWZlcmVuY2Uge1xuICByZXR1cm4gdHlwZW9mIHggPT09ICdvYmplY3QnICYmICEheCAmJiAoWydpc1ByaXZhdGVQYWNrYWdlJywgJ3ZlcnNpb25UeXBlJywgJ25hbWUnLCAnb3V0ZGlyJ10gc2F0aXNmaWVzIEFycmF5PGtleW9mIElXb3Jrc3BhY2VSZWZlcmVuY2U+KS5ldmVyeShrID0+ICh4IGFzIGFueSlba10gIT09IHVuZGVmaW5lZCk7XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -54,14 +54,14 @@
|
|
|
54
54
|
"jsii-pacmak": "^1.132.0",
|
|
55
55
|
"jsii-reflect": "^1.132.0",
|
|
56
56
|
"jsii-rosetta": "~5.9",
|
|
57
|
-
"projen": "^0.99.
|
|
57
|
+
"projen": "^0.99.70",
|
|
58
58
|
"ts-jest": "^29",
|
|
59
59
|
"ts-node": "^10.9.2",
|
|
60
60
|
"typescript": "~5.9"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
63
|
"constructs": "^10.0.0",
|
|
64
|
-
"projen": ">=0.99.
|
|
64
|
+
"projen": ">=0.99.68 <1.0.0"
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
67
|
"yaml": "^2.9.0"
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"publishConfig": {
|
|
82
82
|
"access": "public"
|
|
83
83
|
},
|
|
84
|
-
"version": "0.
|
|
84
|
+
"version": "0.5.0",
|
|
85
85
|
"packageManager": "yarn@4.13.0",
|
|
86
86
|
"jest": {
|
|
87
87
|
"coverageProvider": "v8",
|