@pipeline-builder/pipeline-manager 3.1.4 → 3.2.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/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA+BA;;GAEG;AACH,UAAU,UAAU;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA4ND;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CAyD5D;AAiDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CA0BnD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAgCA;;GAEG;AACH,UAAU,UAAU;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA6ND;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CAyD5D;AAiDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CA0BnD"}
package/dist/cli.js CHANGED
@@ -18,6 +18,7 @@ const setup_events_1 = require("./commands/setup-events");
18
18
  const status_1 = require("./commands/status");
19
19
  const store_token_1 = require("./commands/store-token");
20
20
  const synth_1 = require("./commands/synth");
21
+ const validate_templates_1 = require("./commands/validate-templates");
21
22
  const upload_plugin_1 = require("./commands/upload-plugin");
22
23
  const version_1 = require("./commands/version");
23
24
  const cli_constants_1 = require("./config/cli.constants");
@@ -135,6 +136,7 @@ Examples:
135
136
  (0, bootstrap_1.bootstrap)(commander_1.program); // Bootstrap CDK toolkit stack
136
137
  (0, deploy_1.deploy)(commander_1.program); // Deploy pipeline with CDK (--app prints boilerplate path)
137
138
  (0, synth_1.synth)(commander_1.program); // Run CDK synthesis
139
+ (0, validate_templates_1.validateTemplatesCommand)(commander_1.program); // Validate {{ ... }} templates in a pipeline or plugin
138
140
  // Shell completions
139
141
  (0, output_utils_1.printDebug)('Registering completions command');
140
142
  commander_1.program
@@ -369,4 +371,4 @@ if (require.main === module) {
369
371
  };
370
372
  main(options);
371
373
  }
372
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBcVN0QyxzQ0F5REM7QUFrRUQsb0JBMEJDO0FBeGJELHlDQUFvQztBQUNwQyxvREFBaUQ7QUFDakQsZ0VBQTREO0FBQzVELDhDQUEyQztBQUMzQywwREFBc0Q7QUFDdEQsc0RBQWtEO0FBQ2xELDhEQUEwRDtBQUMxRCwwREFBc0Q7QUFDdEQsNENBQXlDO0FBQ3pDLDBEQUFzRDtBQUN0RCw4Q0FBMkM7QUFDM0Msd0RBQW9EO0FBQ3BELDRDQUF5QztBQUN6Qyw0REFBd0Q7QUFDeEQsZ0RBQTZDO0FBQzdDLDBEQU9nQztBQUNoQywyQ0FBb0Q7QUFDcEQseURBQWlFO0FBQ2pFLHVEQUFxRztBQTJDckc7O0dBRUc7QUFDSCxTQUFTLGdCQUFnQjtJQUN2QixNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7SUFFOUIsMkNBQTJDO0lBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFDaEUsUUFBUSxDQUFDLElBQUksQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxxQkFBcUI7SUFDckIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUNwQyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLElBQUksWUFBWSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ3RCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxXQUFXLHFDQUFxQyxD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QUFFLE1BQU07Z0JBQ2IsT0FBTzthQUNSO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztJQUM1QixxREFBcUQ7SUFDckQsTUFBTSxPQUFPLEdBQWU7UUFDMUIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLE1BQU07UUFDbkMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUN2QyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQzNDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxHQUFHO0tBQzdFLENBQUM7SUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBwcm9ncmFtIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGJvb3RzdHJhcCB9IGZyb20gJy4vY29tbWFuZHMvYm9vdHN0cmFwJztcbmltcG9ydCB7IGNyZWF0ZVBpcGVsaW5lIH0gZnJvbSAnLi9jb21tYW5kcy9jcmVhdGUtcGlwZWxpbmUnO1xuaW1wb3J0IHsgZGVwbG95IH0gZnJvbSAnLi9jb21tYW5kcy9kZXBsb3knO1xuaW1wb3J0IHsgZ2V0UGlwZWxpbmUgfSBmcm9tICcuL2NvbW1hbmRzL2dldC1waXBlbGluZSc7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tICcuL2NvbW1hbmRzL2dldC1wbHVnaW4nO1xuaW1wb3J0IHsgbGlzdFBpcGVsaW5lcyB9IGZyb20gJy4vY29tbWFuZHMvbGlzdC1waXBlbGluZXMnO1xuaW1wb3J0IHsgbGlzdFBsdWdpbnMgfSBmcm9tICcuL2NvbW1hbmRzL2xpc3QtcGx1Z2lucyc7XG5pbXBvcnQgeyBsb2dpbiB9IGZyb20gJy4vY29tbWFuZHMvbG9naW4nO1xuaW1wb3J0IHsgc2V0dXBFdmVudHMgfSBmcm9tICcuL2NvbW1hbmRzL3NldHVwLWV2ZW50cyc7XG5pbXBvcnQgeyBzdGF0dXMgfSBmcm9tICcuL2NvbW1hbmRzL3N0YXR1cyc7XG5pbXBvcnQgeyBzdG9yZVRva2VuIH0gZnJvbSAnLi9jb21tYW5kcy9zdG9yZS10b2tlbic7XG5pbXBvcnQgeyBzeW50aCB9IGZyb20gJy4vY29tbWFuZHMvc3ludGgnO1xuaW1wb3J0IHsgdXBsb2FkUGx1Z2luIH0gZnJvbSAnLi9jb21tYW5kcy91cGxvYWQtcGx1Z2luJztcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuL2NvbW1hbmRzL3ZlcnNpb24nO1xuaW1wb3J0IHtcbiAgQVBQX05BTUUsXG4gIEFQUF9ERVNDUklQVElPTixcbiAgQVBQX1ZFUlNJT04sXG4gIEVOVl9WQVJTLFxuICBpc0RlYnVnTW9kZSxcbiAgZ2VuZXJhdGVFeGVjdXRpb25JZCxcbn0gZnJvbSAnLi9jb25maWcvY2xpLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBiYW5uZXIsIG1pbmlCYW5uZXIgfSBmcm9tICcuL3V0aWxzL2Jhbm5lcic7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuL3V0aWxzL2Vycm9yLWhhbmRsZXInO1xuaW1wb3J0IHsgcHJpbnRJbmZvLCBwcmludEVycm9yLCBwcmludFdhcm5pbmcsIHByaW50RGVidWcsIHByaW50U2VjdGlvbiB9IGZyb20gJy4vdXRpbHMvb3V0cHV0LXV0aWxzJztcblxuLyoqXG4gKiBDTEkgaW5pdGlhbGl6YXRpb24gb3B0aW9uc1xuICovXG5pbnRlcmZhY2UgQ2xpT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTaG93IGJhbm5lciBvbiBzdGFydHVwXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHNob3dCYW5uZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNaW5pbWFsIGJhbm5lciAobm8gQVNDSUkgYXJ0KVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbWluaW1hbEJhbm5lcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlYnVnIG1vZGVcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRlYnVnPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmVyYm9zZSBvdXRwdXRcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHZlcmJvc2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBRdWlldCBtb2RlIChtaW5pbWFsIG91dHB1dClcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHF1aWV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTm8gY29sb3Igb3V0cHV0XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBub0NvbG9yPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDaGVjayBlbnZpcm9ubWVudCBhbmQgZGlzcGxheSB3YXJuaW5nc1xuICovXG5mdW5jdGlvbiBjaGVja0Vudmlyb25tZW50KCk6IHZvaWQge1xuICBjb25zdCB3YXJuaW5nczogc3RyaW5nW10gPSBbXTtcblxuICAvLyBDaGVjayBmb3IgcmVxdWlyZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gIGlmICghcHJvY2Vzcy5lbnZbRU5WX1ZBUlMuUExBVEZPUk1fVE9LRU5dKSB7XG4gICAgd2FybmluZ3MucHVzaCgnUExBVEZPUk1fVE9LRU4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCcpO1xuICAgIHdhcm5pbmdzLnB1c2goJ0F1dGhlbnRpY2F0aW9uIHdpbGwgZmFpbCBmb3IgQVBJIG9wZXJhdGlvbnMnKTtcbiAgfVxuXG4gIC8vIENoZWNrIE5vZGUgdmVyc2lvblxuICBjb25zdCBub2RlVmVyc2lvbiA9IHByb2Nlc3MudmVyc2lvbjtcbiAgY29uc3QgbWFqb3JWZXJzaW9uID0gcGFyc2VJbnQobm9kZVZlcnNpb24uc2xpY2UoMSkuc3BsaXQoJy4nKVswXSB8fCAnMCcsIDEwKTtcbiAgaWYgKG1ham9yVmVyc2lvbiA8IDE4KSB7XG4gICAgd2FybmluZ3MucHVzaChgTm9kZS5qcyAke25vZGVWZXJzaW9ufSBkZXRlY3RlZCAtIHZlcnNpb24gMTgrIHJlY29tbWVuZGVkYCk7XG4gIH1cblxuICAvLyBEaXNwbGF5IHdhcm5pbmdzXG4gIGlmICh3YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgcHJpbnRTZWN0aW9uKCdFbnZpcm9ubWVudCBXYXJuaW5ncycpO1xuICAgIHdhcm5pbmdzLmZvckVhY2god2FybmluZyA9PiB7XG4gICAgICBwcmludFdhcm5pbmcod2FybmluZyk7XG4gICAgfSk7XG4gICAgY29uc29sZS5sb2coJycpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGxheSBzdGFydHVwIGluZm9ybWF0aW9uXG4gKi9cbmZ1bmN0aW9uIGRpc3BsYXlTdGFydHVwSW5mbyhvcHRpb25zOiBDbGlPcHRpb25zKTogdm9pZCB7XG4gIGlmIChvcHRpb25zLnF1aWV0KSByZXR1cm47XG5cbiAgY29uc3QgZXhlY3V0aW9uSWQgPSBnZW5lcmF0ZUV4ZWN1dGlvbklkKCk7XG5cbiAgaWYgKG9wdGlvbnMuZGVidWcgfHwgb3B0aW9ucy52ZXJib3NlKSB7XG4gICAgcHJpbnREZWJ1ZygnQ0xJIENvbmZpZ3VyYXRpb24nLCB7XG4gICAgICBuYW1lOiBBUFBfTkFNRSxcbiAgICAgIHZlcnNpb246IEFQUF9WRVJTSU9OLFxuICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICBub2RlOiBwcm9jZXNzLnZlcnNpb24sXG4gICAgICBwbGF0Zm9ybTogcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICAgIGFyY2g6IHByb2Nlc3MuYXJjaCxcbiAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgIGVudjoge1xuICAgICAgICBkZWJ1ZzogcHJvY2Vzcy5lbnYuREVCVUcsXG4gICAgICAgIHRva2VuOiBwcm9jZXNzLmVudltFTlZfVkFSUy5QTEFURk9STV9UT0tFTl0gPyAnc2V0JyA6ICdub3Qgc2V0JyxcbiAgICAgICAgdXJsOiBwcm9jZXNzLmVudltFTlZfVkFSUy5QTEFURk9STV9CQVNFX1VSTF0gfHwgJ2RlZmF1bHQnLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBwcmludERlYnVnKCdTdGFydGluZyBDTEknLCB7XG4gICAgICB2ZXJzaW9uOiBBUFBfVkVSU0lPTixcbiAgICAgIGV4ZWN1dGlvbklkLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgYWxsIENMSSBjb21tYW5kc1xuICovXG5mdW5jdGlvbiByZWdpc3RlckNvbW1hbmRzKCk6IHZvaWQge1xuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyBjb21tYW5kcycpO1xuXG4gIC8vIENvbmZpZ3VyZSBwcm9ncmFtXG4gIHByb2dyYW1cbiAgICAubmFtZShBUFBfTkFNRSlcbiAgICAuZGVzY3JpcHRpb24oQVBQX0RFU0NSSVBUSU9OKVxuICAgIC52ZXJzaW9uKEFQUF9WRVJTSU9OLCAnLXYsIC0tdmVyc2lvbicsICdTaG93IENMSSB2ZXJzaW9uJylcbiAgICAub3B0aW9uKCctLWRlYnVnJywgJ0VuYWJsZSBkZWJ1ZyBvdXRwdXQgd2l0aCBzdGFjayB0cmFjZXMnLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLXZlcmJvc2UnLCAnU2hvdyBkZXRhaWxlZCBpbmZvcm1hdGlvbicsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tcXVpZXQnLCAnTWluaW1hbCBvdXRwdXQgKGVycm9ycyBvbmx5KScsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tbm8tY29sb3InLCAnRGlzYWJsZSBjb2xvcmVkIG91dHB1dCcsIGZhbHNlKVxuICAgIC5hZGRIZWxwVGV4dCgnYWZ0ZXInLCBgXG5FbnZpcm9ubWVudCBWYXJpYWJsZXM6XG4gICR7RU5WX1ZBUlMuUExBVEZPUk1fVE9LRU59ICAgICAgICAgICAgICBBdXRoZW50aWNhdGlvbiB0b2tlbiAocmVxdWlyZWQpXG4gICR7RU5WX1ZBUlMuUExBVEZPUk1fQkFTRV9VUkx9ICAgICAgICAgICAgICAgICBBUEkgYmFzZSBVUkwgKG9wdGlvbmFsKVxuICAke0VOVl9WQVJTLkNMSV9DT05GSUdfUEFUSH0gICAgICAgICAgICAgIENvbmZpZyBmaWxlIHBhdGggKG9wdGlvbmFsKVxuICAke0VOVl9WQVJTLlRMU19SRUpFQ1RfVU5BVVRIT1JJWkVEfSAgICAgIERpc2FibGUgU1NMIHZlcmlmaWNhdGlvbiBpZiAnMCdcbiAgJHtFTlZfVkFSUy5ERUJVR30gICAgICAgICAgICAgICAgICAgICAgICBFbmFibGUgZGVidWcgbW9kZSBpZiAndHJ1ZSdcblxuRXhhbXBsZXM6XG4gICQgJHtBUFBfTkFNRX0gdmVyc2lvblxuICAkICR7QVBQX05BTUV9IGxpc3QtcGlwZWxpbmVzIC0tcHJvamVjdCBteS1hcHBcbiAgJCAke0FQUF9OQU1FfSBnZXQtcGlwZWxpbmUgLS1pZCBwaXBlLTEyMyAtLWZvcm1hdCBqc29uXG4gICQgJHtBUFBfTkFNRX0gc3RvcmUtdG9rZW4gLS1kYXlzIDMwIC0tcmVnaW9uIHVzLWVhc3QtMVxuICAkICR7QVBQX05BTUV9IGJvb3RzdHJhcCAtLWFjY291bnQgMTIzNDU2Nzg5MDEyIC0tcmVnaW9uIHVzLWVhc3QtMVxuICAkICR7QVBQX05BTUV9IGRlcGxveSAtLWlkIHBpcGUtMTIzIC0tcHJvZmlsZSBwcm9kdWN0aW9uXG5cbmApO1xuXG4gIC8vIFZlcnNpb24gY29tbWFuZCAoc3BlY2lhbCBoYW5kbGluZylcbiAgdmVyc2lvbihwcm9ncmFtKTtcblxuICAvLyBBdXRoZW50aWNhdGlvbiBjb21tYW5kc1xuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyBhdXRoZW50aWNhdGlvbiBjb21tYW5kcycpO1xuICBsb2dpbihwcm9ncmFtKTsgLy8gTG9naW4gYW5kIG9idGFpbiBQTEFURk9STV9UT0tFTiAoYWxzbyBzdXBwb3J0cyAtLXJlZnJlc2gpXG5cbiAgLy8gUXVlcnkgY29tbWFuZHNcbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgcXVlcnkgY29tbWFuZHMnKTtcbiAgZ2V0UGx1Z2luKHByb2dyYW0pOyAvLyBTaW5nbGUgcGx1Z2luIGJ5IElEXG4gIGxpc3RQbHVnaW5zKHByb2dyYW0pOyAvLyBNdWx0aXBsZSBwbHVnaW5zIHdpdGggZmlsdGVyc1xuICBnZXRQaXBlbGluZShwcm9ncmFtKTsgLy8gU2luZ2xlIHBpcGVsaW5lIGJ5IElEXG4gIGxpc3RQaXBlbGluZXMocHJvZ3JhbSk7IC8vIE11bHRpcGxlIHBpcGVsaW5lcyB3aXRoIGZpbHRlcnNcblxuICAvLyBDcmVhdGUvVXBsb2FkIGNvbW1hbmRzXG4gIHByaW50RGVidWcoJ1JlZ2lzdGVyaW5nIGNyZWF0ZS91cGxvYWQgY29tbWFuZHMnKTtcbiAgY3JlYXRlUGlwZWxpbmUocHJvZ3JhbSk7IC8vIENyZWF0ZSBwaXBlbGluZSBjb25maWd1cmF0aW9uXG4gIHVwbG9hZFBsdWdpbihwcm9ncmFtKTsgLy8gVXBsb2FkIGFuZCBkZXBsb3kgcGx1Z2luXG5cbiAgLy8gU3RhdHVzIGNvbW1hbmRcbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgc3RhdHVzIGNvbW1hbmQnKTtcbiAgc3RhdHVzKHByb2dyYW0pOyAvLyBTaG93IGVudmlyb25tZW50IGFuZCBjb25uZWN0aXZpdHkgc3RhdHVzXG5cbiAgLy8gRGVwbG95bWVudCBjb21tYW5kc1xuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyBkZXBsb3ltZW50IGNvbW1hbmRzJyk7XG4gIHN0b3JlVG9rZW4ocHJvZ3JhbSk7IC8vIEdlbmVyYXRlIEpXVCB0b2tlbiBhbmQgc3RvcmUgaW4gU2VjcmV0cyBNYW5hZ2VyXG4gIHNldHVwRXZlbnRzKHByb2dyYW0pOyAvLyBEZXBsb3kgRXZlbnRCcmlkZ2UgZXZlbnQgaW5nZXN0aW9uIGluZnJhc3RydWN0dXJlXG4gIGJvb3RzdHJhcChwcm9ncmFtKTsgLy8gQm9vdHN0cmFwIENESyB0b29sa2l0IHN0YWNrXG4gIGRlcGxveShwcm9ncmFtKTsgLy8gRGVwbG95IHBpcGVsaW5lIHdpdGggQ0RLICgtLWFwcCBwcmludHMgYm9pbGVycGxhdGUgcGF0aClcbiAgc3ludGgocHJvZ3JhbSk7IC8vIFJ1biBDREsgc3ludGhlc2lzXG5cbiAgLy8gU2hlbGwgY29tcGxldGlvbnNcbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgY29tcGxldGlvbnMgY29tbWFuZCcpO1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2NvbXBsZXRpb25zJylcbiAgICAuZGVzY3JpcHRpb24oJ0dlbmVyYXRlIHNoZWxsIGNvbXBsZXRpb25zIChiYXNoLCB6c2gsIGZpc2gpJylcbiAgICAuYXJndW1lbnQoJzxzaGVsbD4nLCAnU2hlbGwgdHlwZTogYmFzaCwgenNoLCBvciBmaXNoJylcbiAgICAuYWN0aW9uKChzaGVsbDogc3RyaW5nKSA9PiB7XG4gICAgICBzd2l0Y2ggKHNoZWxsKSB7XG4gICAgICAgIGNhc2UgJ2Jhc2gnOlxuICAgICAgICAgIGNvbnNvbGUubG9nKGAjIHBpcGVsaW5lLW1hbmFnZXIgYmFzaCBjb21wbGV0aW9uc1xuX3BpcGVsaW5lX21hbmFnZXJfY29tcGxldGlvbnMoKSB7XG4gIGxvY2FsIGN1cj1cIlxcJHtDT01QX1dPUkRTW0NPTVBfQ1dPUkRdfVwiXG4gIGxvY2FsIGNvbW1hbmRzPVwibG9naW4gZGVwbG95IHN5bnRoIHVwbG9hZC1wbHVnaW4gY3JlYXRlLXBpcGVsaW5lIHN0YXR1cyB2ZXJzaW9uIGJvb3RzdHJhcCBzZXR1cC1ldmVudHMgc3RvcmUtdG9rZW4gY29tcGxldGlvbnNcIlxuICBDT01QUkVQTFk9KCQoY29tcGdlbiAtVyBcIlxcJHtjb21tYW5kc31cIiAtLSBcIlxcJHtjdXJ9XCIpKVxufVxuY29tcGxldGUgLUYgX3BpcGVsaW5lX21hbmFnZXJfY29tcGxldGlvbnMgcGlwZWxpbmUtbWFuYWdlcmApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd6c2gnOlxuICAgICAgICAgIGNvbnNvbGUubG9nKGAjIHBpcGVsaW5lLW1hbmFnZXIgenNoIGNvbXBsZXRpb25zXG5fcGlwZWxpbmVfbWFuYWdlcigpIHtcbiAgbG9jYWwgY29tbWFuZHM9KGxvZ2luIGRlcGxveSBzeW50aCB1cGxvYWQtcGx1Z2luIGNyZWF0ZS1waXBlbGluZSBzdGF0dXMgdmVyc2lvbiBib290c3RyYXAgc2V0dXAtZXZlbnRzIHN0b3JlLXRva2VuIGNvbXBsZXRpb25zKVxuICBfZGVzY3JpYmUgJ2NvbW1hbmQnIGNvbW1hbmRzXG59XG5jb21wZGVmIF9waXBlbGluZV9tYW5hZ2VyIHBpcGVsaW5lLW1hbmFnZXJgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZmlzaCc6XG4gICAgICAgICAgY29uc29sZS5sb2coYCMgcGlwZWxpbmUtbWFuYWdlciBmaXNoIGNvbXBsZXRpb25zXG5jb21wbGV0ZSAtYyBwaXBlbGluZS1tYW5hZ2VyIC1uICdfX2Zpc2hfdXNlX3N1YmNvbW1hbmQnIC1hICdsb2dpbiBkZXBsb3kgc3ludGggdXBsb2FkLXBsdWdpbiBjcmVhdGUtcGlwZWxpbmUgc3RhdHVzIHZlcnNpb24gYm9vdHN0cmFwIHNldHVwLWV2ZW50cyBzdG9yZS10b2tlbiBjb21wbGV0aW9ucydgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBVbmtub3duIHNoZWxsOiAke3NoZWxsfS4gVXNlIGJhc2gsIHpzaCwgb3IgZmlzaC5gKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgcHJpbnREZWJ1ZygnQWxsIGNvbW1hbmRzIHJlZ2lzdGVyZWQgc3VjY2Vzc2Z1bGx5Jyk7XG59XG5cbi8qKlxuICogSGFuZGxlIHByb2dyYW0gZXJyb3JzXG4gKi9cbmZ1bmN0aW9uIHNldHVwRXJyb3JIYW5kbGVycygpOiB2b2lkIHtcbiAgLy8gSGFuZGxlIHVuY2F1Z2h0IGV4Y2VwdGlvbnNcbiAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcignJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcmludEVycm9yKCdVbmNhdWdodCBleGNlcHRpb24nLCB7XG4gICAgICBlcnJvcjogZXJyb3IubWVzc2FnZSxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgfSk7XG5cbiAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuR0VORVJBTCwge1xuICAgICAgZGVidWc6IGlzRGVidWdNb2RlKHByb2dyYW0ub3B0cygpKSxcbiAgICAgIGV4aXQ6IHRydWUsXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIHR5cGU6ICd1bmNhdWdodEV4Y2VwdGlvbicsXG4gICAgICB9LFxuICAgIH0pO1xuICB9KTtcblxuICAvLyBIYW5kbGUgdW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uc1xuICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAocmVhc29uOiB1bmtub3duKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcignJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcmludEVycm9yKCdVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24nLCB7XG4gICAgICByZWFzb246IHJlYXNvbiBpbnN0YW5jZW9mIEVycm9yID8gcmVhc29uLm1lc3NhZ2UgOiBTdHJpbmcocmVhc29uKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGVycm9yID0gcmVhc29uIGluc3RhbmNlb2YgRXJyb3IgPyByZWFzb24gOiBuZXcgRXJyb3IoU3RyaW5nKHJlYXNvbikpO1xuXG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkdFTkVSQUwsIHtcbiAgICAgIGRlYnVnOiBpc0RlYnVnTW9kZShwcm9ncmFtLm9wdHMoKSksXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICB0eXBlOiAndW5oYW5kbGVkUmVqZWN0aW9uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIEhhbmRsZSBTSUdJTlQgKEN0cmwrQylcbiAgcHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50V2FybmluZygnUHJvY2VzcyBpbnRlcnJ1cHRlZCBieSB1c2VyIChTSUdJTlQpJyk7XG4gICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJvY2Vzcy5leGl0KDEzMCk7IC8vIFN0YW5kYXJkIGV4aXQgY29kZSBmb3IgU0lHSU5UXG4gIH0pO1xuXG4gIC8vIEhhbmRsZSBTSUdURVJNXG4gIHByb2Nlc3Mub24oJ1NJR1RFUk0nLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJpbnRXYXJuaW5nKCdQcm9jZXNzIHRlcm1pbmF0ZWQgKFNJR1RFUk0pJyk7XG4gICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJvY2Vzcy5leGl0KDE0Myk7IC8vIFN0YW5kYXJkIGV4aXQgY29kZSBmb3IgU0lHVEVSTVxuICB9KTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIENMSSB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENMSSBpbml0aWFsaXphdGlvbiBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplQ2xpKG9wdGlvbnM6IENsaU9wdGlvbnMgPSB7fSk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgc2hvd0Jhbm5lciA9IHRydWUsXG4gICAgbWluaW1hbEJhbm5lciA9IGZhbHNlLFxuICAgIGRlYnVnID0gZmFsc2UsXG4gICAgdmVyYm9zZSA9IGZhbHNlLFxuICAgIHF1aWV0ID0gZmFsc2UsXG4gICAgbm9Db2xvciA9IGZhbHNlLFxuICB9ID0gb3B0aW9ucztcblxuICAvLyBIYW5kbGUgY29sb3Igb3V0cHV0XG4gIGlmIChub0NvbG9yKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPSAnMSc7XG4gIH1cblxuICAvLyBEaXNwbGF5IGJhbm5lclxuICBpZiAoc2hvd0Jhbm5lciAmJiAhcXVpZXQpIHtcbiAgICBpZiAobWluaW1hbEJhbm5lcikge1xuICAgICAgbWluaUJhbm5lcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBiYW5uZXIoe1xuICAgICAgICBtaW5pbWFsOiBmYWxzZSxcbiAgICAgICAgc2hvd0Rlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgICBzaG93VGltZXN0YW1wOiBkZWJ1ZyB8fCB2ZXJib3NlLFxuICAgICAgICBzaG93RXhlY3V0aW9uSWQ6IGRlYnVnLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRGlzcGxheSBzdGFydHVwIGluZm9cbiAgZGlzcGxheVN0YXJ0dXBJbmZvKHsgZGVidWcsIHZlcmJvc2UsIHF1aWV0IH0pO1xuXG4gIC8vIENoZWNrIGVudmlyb25tZW50XG4gIGlmICghcXVpZXQpIHtcbiAgICBjaGVja0Vudmlyb25tZW50KCk7XG4gIH1cblxuICAvLyBTZXR1cCBlcnJvciBoYW5kbGVyc1xuICBzZXR1cEVycm9ySGFuZGxlcnMoKTtcblxuICAvLyBSZWdpc3RlciBjb21tYW5kc1xuICB0cnkge1xuICAgIHJlZ2lzdGVyQ29tbWFuZHMoKTtcbiAgICBwcmludERlYnVnKCdDTEkgaW5pdGlhbGl6YXRpb24gY29tcGxldGUnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwcmludEVycm9yKCdDTEkgaW5pdGlhbGl6YXRpb24gZmFpbGVkJywge1xuICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSxcbiAgICB9KTtcblxuICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5DT05GSUdVUkFUSU9OLCB7XG4gICAgICBkZWJ1ZzogZGVidWcgfHwgaXNEZWJ1Z01vZGUoKSxcbiAgICAgIGV4aXQ6IHRydWUsXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIHN0YWdlOiAnaW5pdGlhbGl6YXRpb24nLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHNcbiAqL1xuZnVuY3Rpb24gcGFyc2VBcmd1bWVudHMoKTogdm9pZCB7XG4gIHRyeSB7XG4gICAgcHJvZ3JhbS5wYXJzZShwcm9jZXNzLmFyZ3YpO1xuXG4gICAgLy8gU2hvdyBoZWxwIGlmIG5vIGNvbW1hbmQgcHJvdmlkZWRcbiAgICBjb25zdCBhcmdzID0gcHJvY2Vzcy5hcmd2LnNsaWNlKDIpO1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcHJpbnRJbmZvKCdObyBjb21tYW5kIHNwZWNpZmllZCAtIGRpc3BsYXlpbmcgaGVscCcpO1xuICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgICBwcm9ncmFtLm91dHB1dEhlbHAoKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBjb21tYW5kIGV4aXN0c1xuICAgIGNvbnN0IGNvbW1hbmQgPSBhcmdzWzBdO1xuICAgIGlmIChjb21tYW5kICYmICFjb21tYW5kLnN0YXJ0c1dpdGgoJy0nKSkge1xuICAgICAgY29uc3QgY29tbWFuZEV4aXN0cyA9IHByb2dyYW0uY29tbWFuZHMuc29tZShjbWQgPT4gY21kLm5hbWUoKSA9PT0gY29tbWFuZCk7XG5cbiAgICAgIGlmICghY29tbWFuZEV4aXN0cykge1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICAgICAgcHJpbnRFcnJvcihgVW5rbm93biBjb21tYW5kOiAke2NvbW1hbmR9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgICAgICBwcmludEluZm8oJ0F2YWlsYWJsZSBjb21tYW5kczonKTtcbiAgICAgICAgcHJvZ3JhbS5jb21tYW5kcy5mb3JFYWNoKGNtZCA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAg4oCiICR7Y21kLm5hbWUoKX0gLSAke2NtZC5kZXNjcmlwdGlvbigpfWApO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcmludERlYnVnKCdDb21tYW5kIGxpbmUgYXJndW1lbnRzIHBhcnNlZCBzdWNjZXNzZnVsbHknKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuR0VORVJBTCwge1xuICAgICAgZGVidWc6IGlzRGVidWdNb2RlKHByb2dyYW0ub3B0cygpKSxcbiAgICAgIGV4aXQ6IHRydWUsXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIHN0YWdlOiAnYXJndW1lbnQtcGFyc2luZycsXG4gICAgICAgIGFyZ3Y6IHByb2Nlc3MuYXJndixcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBNYWluIENMSSBlbnRyeSBwb2ludFxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ0xJIGluaXRpYWxpemF0aW9uIG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gU3RhbmRhcmQgaW5pdGlhbGl6YXRpb25cbiAqIG1haW4oKTtcbiAqXG4gKiAvLyBNaW5pbWFsIG1vZGVcbiAqIG1haW4oeyBtaW5pbWFsQmFubmVyOiB0cnVlLCBxdWlldDogdHJ1ZSB9KTtcbiAqXG4gKiAvLyBEZWJ1ZyBtb2RlXG4gKiBtYWluKHsgZGVidWc6IHRydWUsIHZlcmJvc2U6IHRydWUgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1haW4ob3B0aW9uczogQ2xpT3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gIHRyeSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBDTElcbiAgICBpbml0aWFsaXplQ2xpKG9wdGlvbnMpO1xuXG4gICAgLy8gUGFyc2UgYXJndW1lbnRzIGFuZCBleGVjdXRlIGNvbW1hbmRcbiAgICBwYXJzZUFyZ3VtZW50cygpO1xuXG4gICAgLy8gSWYgd2UgcmVhY2ggaGVyZSwgY29tbWFuZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XG4gICAgcHJpbnREZWJ1ZygnQ0xJIGV4ZWN1dGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8gRmluYWwgY2F0Y2gtYWxsIGVycm9yIGhhbmRsZXJcbiAgICBjb25zb2xlLmVycm9yKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50RXJyb3IoJ0ZhdGFsIENMSSBlcnJvcicsIHtcbiAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvciksXG4gICAgfSk7XG5cbiAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuR0VORVJBTCwge1xuICAgICAgZGVidWc6IGlzRGVidWdNb2RlKG9wdGlvbnMpLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgc3RhZ2U6ICdtYWluJyxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSdW4gQ0xJIGlmIGV4ZWN1dGVkIGRpcmVjdGx5XG4gKi9cbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICAvLyBQYXJzZSBDTEkgb3B0aW9ucyBmcm9tIGVudmlyb25tZW50IG9yIGNvbW1hbmQgbGluZVxuICBjb25zdCBvcHRpb25zOiBDbGlPcHRpb25zID0ge1xuICAgIGRlYnVnOiBwcm9jZXNzLmVudi5ERUJVRyA9PT0gJ3RydWUnLFxuICAgIHF1aWV0OiBwcm9jZXNzLmFyZ3YuaW5jbHVkZXMoJy0tcXVpZXQnKSxcbiAgICB2ZXJib3NlOiBwcm9jZXNzLmFyZ3YuaW5jbHVkZXMoJy0tdmVyYm9zZScpLFxuICAgIG5vQ29sb3I6IHByb2Nlc3MuYXJndi5pbmNsdWRlcygnLS1uby1jb2xvcicpIHx8IHByb2Nlc3MuZW52Lk5PX0NPTE9SID09PSAnMScsXG4gIH07XG5cbiAgbWFpbihvcHRpb25zKTtcbn0iXX0=
374
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBdVN0QyxzQ0F5REM7QUFrRUQsb0JBMEJDO0FBMWJELHlDQUFvQztBQUNwQyxvREFBaUQ7QUFDakQsZ0VBQTREO0FBQzVELDhDQUEyQztBQUMzQywwREFBc0Q7QUFDdEQsc0RBQWtEO0FBQ2xELDhEQUEwRDtBQUMxRCwwREFBc0Q7QUFDdEQsNENBQXlDO0FBQ3pDLDBEQUFzRDtBQUN0RCw4Q0FBMkM7QUFDM0Msd0RBQW9EO0FBQ3BELDRDQUF5QztBQUN6QyxzRUFBeUU7QUFDekUsNERBQXdEO0FBQ3hELGdEQUE2QztBQUM3QywwREFPZ0M7QUFDaEMsMkNBQW9EO0FBQ3BELHlEQUFpRTtBQUNqRSx1REFBcUc7QUEyQ3JHOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0I7SUFDdkIsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO0lBRTlCLDJDQUEyQztJQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDMUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1FBQ2hFLFFBQVEsQ0FBQyxJQUFJLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDcEMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3RSxJQUFJLFlBQVksR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUN0QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsV0FBVyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3hCLElBQUEsMkJBQVksRUFBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3JDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDekIsSUFBQSwyQkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FBQyxPQUFtQjtJQUM3QyxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQUUsT0FBTztJQUUxQixNQUFNLFdBQVcsR0FBRyxJQUFBLG1DQUFtQixHQUFFLENBQUM7SUFFMUMsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyQyxJQUFBLHlCQUFVLEVBQUMsbUJBQW1CLEVBQUU7WUFDOUIsSUFBSSxFQUFFLHdCQUFRO1lBQ2QsT0FBTyxFQUFFLDJCQUFXO1lBQ3BCLFdBQVc7WUFDWCxJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDckIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUNsQixHQUFHLEVBQUU7Z0JBQ0gsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSztnQkFDeEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUMvRCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksU0FBUzthQUMxRDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7U0FBTSxDQUFDO1FBQ04sSUFBQSx5QkFBVSxFQUFDLGNBQWMsRUFBRTtZQUN6QixPQUFPLEVBQUUsMkJBQVc7WUFDcEIsV0FBVztTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGdCQUFnQjtJQUN2QixJQUFBLHlCQUFVLEVBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUVuQyxvQkFBb0I7SUFDcEIsbUJBQU87U0FDSixJQUFJLENBQUMsd0JBQVEsQ0FBQztTQUNkLFdBQVcsQ0FBQywrQkFBZSxDQUFDO1NBQzVCLE9BQU8sQ0FBQywyQkFBVyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQztTQUN6RCxNQUFNLENBQUMsU0FBUyxFQUFFLHVDQUF1QyxFQUFFLEtBQUssQ0FBQztTQUNqRSxNQUFNLENBQUMsV0FBVyxFQUFFLDJCQUEyQixFQUFFLEtBQUssQ0FBQztTQUN2RCxNQUFNLENBQUMsU0FBUyxFQUFFLDhCQUE4QixFQUFFLEtBQUssQ0FBQztTQUN4RCxNQUFNLENBQUMsWUFBWSxFQUFFLHdCQUF3QixFQUFFLEtBQUssQ0FBQztTQUNyRCxXQUFXLENBQUMsT0FBTyxFQUFFOztJQUV0Qix3QkFBUSxDQUFDLGNBQWM7SUFDdkIsd0JBQVEsQ0FBQyxpQkFBaUI7SUFDMUIsd0JBQVEsQ0FBQyxlQUFlO0lBQ3hCLHdCQUFRLENBQUMsdUJBQXVCO0lBQ2hDLHdCQUFRLENBQUMsS0FBSzs7O01BR1osd0JBQVE7TUFDUix3QkFBUTtNQUNSLHdCQUFRO01BQ1Isd0JBQVE7TUFDUix3QkFBUTtNQUNSLHdCQUFROztDQUViLENBQUMsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxJQUFBLGlCQUFPLEVBQUMsbUJBQU8sQ0FBQyxDQUFDO0lBRWpCLDBCQUEwQjtJQUMxQixJQUFBLHlCQUFVLEVBQUMscUNBQXFDLENBQUMsQ0FBQztJQUNsRCxJQUFBLGFBQUssRUFBQyxtQkFBTyxDQUFDLENBQUMsQ0FBQyw0REFBNEQ7SUFFNUUsaUJBQWlCO0lBQ2pCLElBQUEseUJBQVUsRUFBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3pDLElBQUEsc0JBQVMsRUFBQyxtQkFBTyxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7SUFDMUMsSUFBQSwwQkFBVyxFQUFDLG1CQUFPLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztJQUN0RCxJQUFBLDBCQUFXLEVBQUMsbUJBQU8sQ0FBQyxDQUFDLENBQUMsd0JBQXdCO0lBQzlDLElBQUEsOEJBQWEsRUFBQyxtQkFBTyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7SUFFMUQseUJBQXlCO0lBQ3pCLElBQUEseUJBQVUsRUFBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBQ2pELElBQUEsZ0NBQWMsRUFBQyxtQkFBTyxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0M7SUFDekQsSUFBQSw0QkFBWSxFQUFDLG1CQUFPLENBQUMsQ0FBQyxDQUFDLDJCQUEyQjtJQUVsRCxpQkFBaUI7SUFDakIsSUFBQSx5QkFBVSxFQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDekMsSUFBQSxlQUFNLEVBQUMsbUJBQU8sQ0FBQyxDQUFDLENBQUMsMkNBQTJDO0lBRTVELHNCQUFzQjtJQUN0QixJQUFBLHlCQUFVLEVBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUM5QyxJQUFBLHdCQUFVLEVBQUMsbUJBQU8sQ0FBQyxDQUFDLENBQUMsa0RBQWtEO0lBQ3ZFLElBQUEsMEJBQVcsRUFBQyxtQkFBTyxDQUFDLENBQUMsQ0FBQyxvREFBb0Q7SUFDMUUsSUFBQSxxQkFBUyxFQUFDLG1CQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QjtJQUNsRCxJQUFBLGVBQU0sRUFBQyxtQkFBTyxDQUFDLENBQUMsQ0FBQywyREFBMkQ7SUFDNUUsSUFBQSxhQUFLLEVBQUMsbUJBQU8sQ0FBQyxDQUFDLENBQUMsb0JBQW9CO0lBQ3BDLElBQUEsNkNBQXdCLEVBQUMsbUJBQU8sQ0FBQyxDQUFDLENBQUMsdURBQXVEO0lBRTFGLG9CQUFvQjtJQUNwQixJQUFBLHlCQUFVLEVBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUM5QyxtQkFBTztTQUNKLE9BQU8sQ0FBQyxhQUFhLENBQUM7U0FDdEIsV0FBVyxDQUFDLDhDQUE4QyxDQUFDO1NBQzNELFFBQVEsQ0FBQyxTQUFTLEVBQUUsZ0NBQWdDLENBQUM7U0FDckQsTUFBTSxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7UUFDeEIsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssTUFBTTtnQkFDVCxPQUFPLENBQUMsR0FBRyxDQUFDOzs7Ozs7MkRBTXFDLENBQUMsQ0FBQztnQkFDbkQsTUFBTTtZQUNSLEtBQUssS0FBSztnQkFDUixPQUFPLENBQUMsR0FBRyxDQUFDOzs7OzsyQ0FLcUIsQ0FBQyxDQUFDO2dCQUNuQyxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULE9BQU8sQ0FBQyxHQUFHLENBQUM7NEtBQ3NKLENBQUMsQ0FBQztnQkFDcEssTUFBTTtZQUNSO2dCQUNFLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEtBQUssMkJBQTJCLENBQUMsQ0FBQztnQkFDbEUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFTCxJQUFBLHlCQUFVLEVBQUMsc0NBQXNDLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGtCQUFrQjtJQUN6Qiw2QkFBNkI7SUFDN0IsT0FBTyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFO1FBQy9DLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQ2hDLElBQUEseUJBQVUsRUFBQyxvQkFBb0IsRUFBRTtZQUMvQixLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDcEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUVILElBQUEsMkJBQVcsRUFBQyxLQUFLLEVBQUUsMkJBQVcsQ0FBQyxPQUFPLEVBQUU7WUFDdEMsS0FBSyxFQUFFLElBQUEsMkJBQVcsRUFBQyxtQkFBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xDLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxtQkFBbUI7YUFDMUI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILHNDQUFzQztJQUN0QyxPQUFPLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFLENBQUMsTUFBZSxFQUFFLEVBQUU7UUFDbkQsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWE7UUFDaEMsSUFBQSx5QkFBVSxFQUFDLDZCQUE2QixFQUFFO1lBQ3hDLE1BQU0sRUFBRSxNQUFNLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1NBQ2xFLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxHQUFHLE1BQU0sWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFM0UsSUFBQSwyQkFBVyxFQUFDLEtBQUssRUFBRSwyQkFBVyxDQUFDLE9BQU8sRUFBRTtZQUN0QyxLQUFLLEVBQUUsSUFBQSwyQkFBVyxFQUFDLG1CQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEMsSUFBSSxFQUFFLElBQUk7WUFDVixPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLG9CQUFvQjthQUMzQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgseUJBQXlCO0lBQ3pCLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYTtRQUM5QixJQUFBLDJCQUFZLEVBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUNyRCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYTtRQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsZ0NBQWdDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsaUJBQWlCO0lBQ2pCLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtRQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYTtRQUM5QixJQUFBLDJCQUFZLEVBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYTtRQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsaUNBQWlDO0lBQ3RELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixhQUFhLENBQUMsVUFBc0IsRUFBRTtJQUNwRCxNQUFNLEVBQ0osVUFBVSxHQUFHLElBQUksRUFDakIsYUFBYSxHQUFHLEtBQUssRUFDckIsS0FBSyxHQUFHLEtBQUssRUFDYixPQUFPLEdBQUcsS0FBSyxFQUNmLEtBQUssR0FBRyxLQUFLLEVBQ2IsT0FBTyxHQUFHLEtBQUssR0FDaEIsR0FBRyxPQUFPLENBQUM7SUFFWixzQkFBc0I7SUFDdEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztJQUM3QixDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLElBQUksVUFBVSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixJQUFBLG1CQUFVLEdBQUUsQ0FBQztRQUNmLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBQSxlQUFNLEVBQUM7Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsZUFBZSxFQUFFLElBQUk7Z0JBQ3JCLGFBQWEsRUFBRSxLQUFLLElBQUksT0FBTztnQkFDL0IsZUFBZSxFQUFFLEtBQUs7YUFDdkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsa0JBQWtCLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFFOUMsb0JBQW9CO0lBQ3BCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLGdCQUFnQixFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixrQkFBa0IsRUFBRSxDQUFDO0lBRXJCLG9CQUFvQjtJQUNwQixJQUFJLENBQUM7UUFDSCxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25CLElBQUEseUJBQVUsRUFBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBQSx5QkFBVSxFQUFDLDJCQUEyQixFQUFFO1lBQ3RDLEtBQUssRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQzlELENBQUMsQ0FBQztRQUVILElBQUEsMkJBQVcsRUFBQyxLQUFLLEVBQUUsMkJBQVcsQ0FBQyxhQUFhLEVBQUU7WUFDNUMsS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFBLDJCQUFXLEdBQUU7WUFDN0IsSUFBSSxFQUFFLElBQUk7WUFDVixPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLGdCQUFnQjthQUN4QjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGNBQWM7SUFDckIsSUFBSSxDQUFDO1FBQ0gsbUJBQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVCLG1DQUFtQztRQUNuQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBQSx3QkFBUyxFQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFDcEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWE7WUFDOUIsbUJBQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7UUFFRCwwQkFBMEI7UUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sYUFBYSxHQUFHLG1CQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQztZQUUzRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO2dCQUM5QixJQUFBLHlCQUFVLEVBQUMsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO2dCQUM5QixJQUFBLHdCQUFTLEVBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFDakMsbUJBQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzFELENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO2dCQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBQSx5QkFBVSxFQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFBLDJCQUFXLEVBQUMsS0FBSyxFQUFFLDJCQUFXLENBQUMsT0FBTyxFQUFFO1lBQ3RDLEtBQUssRUFBRSxJQUFBLDJCQUFXLEVBQUMsbUJBQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQyxJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRTtnQkFDUCxLQUFLLEVBQUUsa0JBQWtCO2dCQUN6QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7YUFDbkI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsU0FBZ0IsSUFBSSxDQUFDLFVBQXNCLEVBQUU7SUFDM0MsSUFBSSxDQUFDO1FBQ0gsaUJBQWlCO1FBQ2pCLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV2QixzQ0FBc0M7UUFDdEMsY0FBYyxFQUFFLENBQUM7UUFFakIsbURBQW1EO1FBQ25ELElBQUEseUJBQVUsRUFBQyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsZ0NBQWdDO1FBQ2hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQ2hDLElBQUEseUJBQVUsRUFBQyxpQkFBaUIsRUFBRTtZQUM1QixLQUFLLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUM5RCxDQUFDLENBQUM7UUFFSCxJQUFBLDJCQUFXLEVBQUMsS0FBSyxFQUFFLDJCQUFXLENBQUMsT0FBTyxFQUFFO1lBQ3RDLEtBQUssRUFBRSxJQUFBLDJCQUFXLEVBQUMsT0FBTyxDQUFDO1lBQzNCLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxNQUFNO2dCQUNiLE9BQU87YUFDUjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7SUFDNUIscURBQXFEO0lBQ3JELE1BQU0sT0FBTyxHQUFlO1FBQzFCLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxNQUFNO1FBQ25DLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDdkMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUMzQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRztLQUM3RSxDQUFDO0lBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG4vLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgcHJvZ3JhbSB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBib290c3RyYXAgfSBmcm9tICcuL2NvbW1hbmRzL2Jvb3RzdHJhcCc7XG5pbXBvcnQgeyBjcmVhdGVQaXBlbGluZSB9IGZyb20gJy4vY29tbWFuZHMvY3JlYXRlLXBpcGVsaW5lJztcbmltcG9ydCB7IGRlcGxveSB9IGZyb20gJy4vY29tbWFuZHMvZGVwbG95JztcbmltcG9ydCB7IGdldFBpcGVsaW5lIH0gZnJvbSAnLi9jb21tYW5kcy9nZXQtcGlwZWxpbmUnO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSAnLi9jb21tYW5kcy9nZXQtcGx1Z2luJztcbmltcG9ydCB7IGxpc3RQaXBlbGluZXMgfSBmcm9tICcuL2NvbW1hbmRzL2xpc3QtcGlwZWxpbmVzJztcbmltcG9ydCB7IGxpc3RQbHVnaW5zIH0gZnJvbSAnLi9jb21tYW5kcy9saXN0LXBsdWdpbnMnO1xuaW1wb3J0IHsgbG9naW4gfSBmcm9tICcuL2NvbW1hbmRzL2xvZ2luJztcbmltcG9ydCB7IHNldHVwRXZlbnRzIH0gZnJvbSAnLi9jb21tYW5kcy9zZXR1cC1ldmVudHMnO1xuaW1wb3J0IHsgc3RhdHVzIH0gZnJvbSAnLi9jb21tYW5kcy9zdGF0dXMnO1xuaW1wb3J0IHsgc3RvcmVUb2tlbiB9IGZyb20gJy4vY29tbWFuZHMvc3RvcmUtdG9rZW4nO1xuaW1wb3J0IHsgc3ludGggfSBmcm9tICcuL2NvbW1hbmRzL3N5bnRoJztcbmltcG9ydCB7IHZhbGlkYXRlVGVtcGxhdGVzQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvdmFsaWRhdGUtdGVtcGxhdGVzJztcbmltcG9ydCB7IHVwbG9hZFBsdWdpbiB9IGZyb20gJy4vY29tbWFuZHMvdXBsb2FkLXBsdWdpbic7XG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi9jb21tYW5kcy92ZXJzaW9uJztcbmltcG9ydCB7XG4gIEFQUF9OQU1FLFxuICBBUFBfREVTQ1JJUFRJT04sXG4gIEFQUF9WRVJTSU9OLFxuICBFTlZfVkFSUyxcbiAgaXNEZWJ1Z01vZGUsXG4gIGdlbmVyYXRlRXhlY3V0aW9uSWQsXG59IGZyb20gJy4vY29uZmlnL2NsaS5jb25zdGFudHMnO1xuaW1wb3J0IHsgYmFubmVyLCBtaW5pQmFubmVyIH0gZnJvbSAnLi91dGlscy9iYW5uZXInO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi91dGlscy9lcnJvci1oYW5kbGVyJztcbmltcG9ydCB7IHByaW50SW5mbywgcHJpbnRFcnJvciwgcHJpbnRXYXJuaW5nLCBwcmludERlYnVnLCBwcmludFNlY3Rpb24gfSBmcm9tICcuL3V0aWxzL291dHB1dC11dGlscyc7XG5cbi8qKlxuICogQ0xJIGluaXRpYWxpemF0aW9uIG9wdGlvbnNcbiAqL1xuaW50ZXJmYWNlIENsaU9wdGlvbnMge1xuICAvKipcbiAgICogU2hvdyBiYW5uZXIgb24gc3RhcnR1cFxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBzaG93QmFubmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTWluaW1hbCBiYW5uZXIgKG5vIEFTQ0lJIGFydClcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG1pbmltYWxCYW5uZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZWJ1ZyBtb2RlXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkZWJ1Zz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZlcmJvc2Ugb3V0cHV0XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB2ZXJib3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUXVpZXQgbW9kZSAobWluaW1hbCBvdXRwdXQpXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBxdWlldD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE5vIGNvbG9yIG91dHB1dFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbm9Db2xvcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ2hlY2sgZW52aXJvbm1lbnQgYW5kIGRpc3BsYXkgd2FybmluZ3NcbiAqL1xuZnVuY3Rpb24gY2hlY2tFbnZpcm9ubWVudCgpOiB2b2lkIHtcbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gQ2hlY2sgZm9yIHJlcXVpcmVkIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICBpZiAoIXByb2Nlc3MuZW52W0VOVl9WQVJTLlBMQVRGT1JNX1RPS0VOXSkge1xuICAgIHdhcm5pbmdzLnB1c2goJ1BMQVRGT1JNX1RPS0VOIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQnKTtcbiAgICB3YXJuaW5ncy5wdXNoKCdBdXRoZW50aWNhdGlvbiB3aWxsIGZhaWwgZm9yIEFQSSBvcGVyYXRpb25zJyk7XG4gIH1cblxuICAvLyBDaGVjayBOb2RlIHZlcnNpb25cbiAgY29uc3Qgbm9kZVZlcnNpb24gPSBwcm9jZXNzLnZlcnNpb247XG4gIGNvbnN0IG1ham9yVmVyc2lvbiA9IHBhcnNlSW50KG5vZGVWZXJzaW9uLnNsaWNlKDEpLnNwbGl0KCcuJylbMF0gfHwgJzAnLCAxMCk7XG4gIGlmIChtYWpvclZlcnNpb24gPCAxOCkge1xuICAgIHdhcm5pbmdzLnB1c2goYE5vZGUuanMgJHtub2RlVmVyc2lvbn0gZGV0ZWN0ZWQgLSB2ZXJzaW9uIDE4KyByZWNvbW1lbmRlZGApO1xuICB9XG5cbiAgLy8gRGlzcGxheSB3YXJuaW5nc1xuICBpZiAod2FybmluZ3MubGVuZ3RoID4gMCkge1xuICAgIHByaW50U2VjdGlvbignRW52aXJvbm1lbnQgV2FybmluZ3MnKTtcbiAgICB3YXJuaW5ncy5mb3JFYWNoKHdhcm5pbmcgPT4ge1xuICAgICAgcHJpbnRXYXJuaW5nKHdhcm5pbmcpO1xuICAgIH0pO1xuICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgfVxufVxuXG4vKipcbiAqIERpc3BsYXkgc3RhcnR1cCBpbmZvcm1hdGlvblxuICovXG5mdW5jdGlvbiBkaXNwbGF5U3RhcnR1cEluZm8ob3B0aW9uczogQ2xpT3B0aW9ucyk6IHZvaWQge1xuICBpZiAob3B0aW9ucy5xdWlldCkgcmV0dXJuO1xuXG4gIGNvbnN0IGV4ZWN1dGlvbklkID0gZ2VuZXJhdGVFeGVjdXRpb25JZCgpO1xuXG4gIGlmIChvcHRpb25zLmRlYnVnIHx8IG9wdGlvbnMudmVyYm9zZSkge1xuICAgIHByaW50RGVidWcoJ0NMSSBDb25maWd1cmF0aW9uJywge1xuICAgICAgbmFtZTogQVBQX05BTUUsXG4gICAgICB2ZXJzaW9uOiBBUFBfVkVSU0lPTixcbiAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgbm9kZTogcHJvY2Vzcy52ZXJzaW9uLFxuICAgICAgcGxhdGZvcm06IHByb2Nlc3MucGxhdGZvcm0sXG4gICAgICBhcmNoOiBwcm9jZXNzLmFyY2gsXG4gICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICBlbnY6IHtcbiAgICAgICAgZGVidWc6IHByb2Nlc3MuZW52LkRFQlVHLFxuICAgICAgICB0b2tlbjogcHJvY2Vzcy5lbnZbRU5WX1ZBUlMuUExBVEZPUk1fVE9LRU5dID8gJ3NldCcgOiAnbm90IHNldCcsXG4gICAgICAgIHVybDogcHJvY2Vzcy5lbnZbRU5WX1ZBUlMuUExBVEZPUk1fQkFTRV9VUkxdIHx8ICdkZWZhdWx0JyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcHJpbnREZWJ1ZygnU3RhcnRpbmcgQ0xJJywge1xuICAgICAgdmVyc2lvbjogQVBQX1ZFUlNJT04sXG4gICAgICBleGVjdXRpb25JZCxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGFsbCBDTEkgY29tbWFuZHNcbiAqL1xuZnVuY3Rpb24gcmVnaXN0ZXJDb21tYW5kcygpOiB2b2lkIHtcbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgY29tbWFuZHMnKTtcblxuICAvLyBDb25maWd1cmUgcHJvZ3JhbVxuICBwcm9ncmFtXG4gICAgLm5hbWUoQVBQX05BTUUpXG4gICAgLmRlc2NyaXB0aW9uKEFQUF9ERVNDUklQVElPTilcbiAgICAudmVyc2lvbihBUFBfVkVSU0lPTiwgJy12LCAtLXZlcnNpb24nLCAnU2hvdyBDTEkgdmVyc2lvbicpXG4gICAgLm9wdGlvbignLS1kZWJ1ZycsICdFbmFibGUgZGVidWcgb3V0cHV0IHdpdGggc3RhY2sgdHJhY2VzJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS12ZXJib3NlJywgJ1Nob3cgZGV0YWlsZWQgaW5mb3JtYXRpb24nLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLXF1aWV0JywgJ01pbmltYWwgb3V0cHV0IChlcnJvcnMgb25seSknLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLW5vLWNvbG9yJywgJ0Rpc2FibGUgY29sb3JlZCBvdXRwdXQnLCBmYWxzZSlcbiAgICAuYWRkSGVscFRleHQoJ2FmdGVyJywgYFxuRW52aXJvbm1lbnQgVmFyaWFibGVzOlxuICAke0VOVl9WQVJTLlBMQVRGT1JNX1RPS0VOfSAgICAgICAgICAgICAgQXV0aGVudGljYXRpb24gdG9rZW4gKHJlcXVpcmVkKVxuICAke0VOVl9WQVJTLlBMQVRGT1JNX0JBU0VfVVJMfSAgICAgICAgICAgICAgICAgQVBJIGJhc2UgVVJMIChvcHRpb25hbClcbiAgJHtFTlZfVkFSUy5DTElfQ09ORklHX1BBVEh9ICAgICAgICAgICAgICBDb25maWcgZmlsZSBwYXRoIChvcHRpb25hbClcbiAgJHtFTlZfVkFSUy5UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRH0gICAgICBEaXNhYmxlIFNTTCB2ZXJpZmljYXRpb24gaWYgJzAnXG4gICR7RU5WX1ZBUlMuREVCVUd9ICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlIGRlYnVnIG1vZGUgaWYgJ3RydWUnXG5cbkV4YW1wbGVzOlxuICAkICR7QVBQX05BTUV9IHZlcnNpb25cbiAgJCAke0FQUF9OQU1FfSBsaXN0LXBpcGVsaW5lcyAtLXByb2plY3QgbXktYXBwXG4gICQgJHtBUFBfTkFNRX0gZ2V0LXBpcGVsaW5lIC0taWQgcGlwZS0xMjMgLS1mb3JtYXQganNvblxuICAkICR7QVBQX05BTUV9IHN0b3JlLXRva2VuIC0tZGF5cyAzMCAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAgJCAke0FQUF9OQU1FfSBib290c3RyYXAgLS1hY2NvdW50IDEyMzQ1Njc4OTAxMiAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAgJCAke0FQUF9OQU1FfSBkZXBsb3kgLS1pZCBwaXBlLTEyMyAtLXByb2ZpbGUgcHJvZHVjdGlvblxuXG5gKTtcblxuICAvLyBWZXJzaW9uIGNvbW1hbmQgKHNwZWNpYWwgaGFuZGxpbmcpXG4gIHZlcnNpb24ocHJvZ3JhbSk7XG5cbiAgLy8gQXV0aGVudGljYXRpb24gY29tbWFuZHNcbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgYXV0aGVudGljYXRpb24gY29tbWFuZHMnKTtcbiAgbG9naW4ocHJvZ3JhbSk7IC8vIExvZ2luIGFuZCBvYnRhaW4gUExBVEZPUk1fVE9LRU4gKGFsc28gc3VwcG9ydHMgLS1yZWZyZXNoKVxuXG4gIC8vIFF1ZXJ5IGNvbW1hbmRzXG4gIHByaW50RGVidWcoJ1JlZ2lzdGVyaW5nIHF1ZXJ5IGNvbW1hbmRzJyk7XG4gIGdldFBsdWdpbihwcm9ncmFtKTsgLy8gU2luZ2xlIHBsdWdpbiBieSBJRFxuICBsaXN0UGx1Z2lucyhwcm9ncmFtKTsgLy8gTXVsdGlwbGUgcGx1Z2lucyB3aXRoIGZpbHRlcnNcbiAgZ2V0UGlwZWxpbmUocHJvZ3JhbSk7IC8vIFNpbmdsZSBwaXBlbGluZSBieSBJRFxuICBsaXN0UGlwZWxpbmVzKHByb2dyYW0pOyAvLyBNdWx0aXBsZSBwaXBlbGluZXMgd2l0aCBmaWx0ZXJzXG5cbiAgLy8gQ3JlYXRlL1VwbG9hZCBjb21tYW5kc1xuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyBjcmVhdGUvdXBsb2FkIGNvbW1hbmRzJyk7XG4gIGNyZWF0ZVBpcGVsaW5lKHByb2dyYW0pOyAvLyBDcmVhdGUgcGlwZWxpbmUgY29uZmlndXJhdGlvblxuICB1cGxvYWRQbHVnaW4ocHJvZ3JhbSk7IC8vIFVwbG9hZCBhbmQgZGVwbG95IHBsdWdpblxuXG4gIC8vIFN0YXR1cyBjb21tYW5kXG4gIHByaW50RGVidWcoJ1JlZ2lzdGVyaW5nIHN0YXR1cyBjb21tYW5kJyk7XG4gIHN0YXR1cyhwcm9ncmFtKTsgLy8gU2hvdyBlbnZpcm9ubWVudCBhbmQgY29ubmVjdGl2aXR5IHN0YXR1c1xuXG4gIC8vIERlcGxveW1lbnQgY29tbWFuZHNcbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgZGVwbG95bWVudCBjb21tYW5kcycpO1xuICBzdG9yZVRva2VuKHByb2dyYW0pOyAvLyBHZW5lcmF0ZSBKV1QgdG9rZW4gYW5kIHN0b3JlIGluIFNlY3JldHMgTWFuYWdlclxuICBzZXR1cEV2ZW50cyhwcm9ncmFtKTsgLy8gRGVwbG95IEV2ZW50QnJpZGdlIGV2ZW50IGluZ2VzdGlvbiBpbmZyYXN0cnVjdHVyZVxuICBib290c3RyYXAocHJvZ3JhbSk7IC8vIEJvb3RzdHJhcCBDREsgdG9vbGtpdCBzdGFja1xuICBkZXBsb3kocHJvZ3JhbSk7IC8vIERlcGxveSBwaXBlbGluZSB3aXRoIENESyAoLS1hcHAgcHJpbnRzIGJvaWxlcnBsYXRlIHBhdGgpXG4gIHN5bnRoKHByb2dyYW0pOyAvLyBSdW4gQ0RLIHN5bnRoZXNpc1xuICB2YWxpZGF0ZVRlbXBsYXRlc0NvbW1hbmQocHJvZ3JhbSk7IC8vIFZhbGlkYXRlIHt7IC4uLiB9fSB0ZW1wbGF0ZXMgaW4gYSBwaXBlbGluZSBvciBwbHVnaW5cblxuICAvLyBTaGVsbCBjb21wbGV0aW9uc1xuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyBjb21wbGV0aW9ucyBjb21tYW5kJyk7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnY29tcGxldGlvbnMnKVxuICAgIC5kZXNjcmlwdGlvbignR2VuZXJhdGUgc2hlbGwgY29tcGxldGlvbnMgKGJhc2gsIHpzaCwgZmlzaCknKVxuICAgIC5hcmd1bWVudCgnPHNoZWxsPicsICdTaGVsbCB0eXBlOiBiYXNoLCB6c2gsIG9yIGZpc2gnKVxuICAgIC5hY3Rpb24oKHNoZWxsOiBzdHJpbmcpID0+IHtcbiAgICAgIHN3aXRjaCAoc2hlbGwpIHtcbiAgICAgICAgY2FzZSAnYmFzaCc6XG4gICAgICAgICAgY29uc29sZS5sb2coYCMgcGlwZWxpbmUtbWFuYWdlciBiYXNoIGNvbXBsZXRpb25zXG5fcGlwZWxpbmVfbWFuYWdlcl9jb21wbGV0aW9ucygpIHtcbiAgbG9jYWwgY3VyPVwiXFwke0NPTVBfV09SRFNbQ09NUF9DV09SRF19XCJcbiAgbG9jYWwgY29tbWFuZHM9XCJsb2dpbiBkZXBsb3kgc3ludGggdXBsb2FkLXBsdWdpbiBjcmVhdGUtcGlwZWxpbmUgc3RhdHVzIHZlcnNpb24gYm9vdHN0cmFwIHNldHVwLWV2ZW50cyBzdG9yZS10b2tlbiBjb21wbGV0aW9uc1wiXG4gIENPTVBSRVBMWT0oJChjb21wZ2VuIC1XIFwiXFwke2NvbW1hbmRzfVwiIC0tIFwiXFwke2N1cn1cIikpXG59XG5jb21wbGV0ZSAtRiBfcGlwZWxpbmVfbWFuYWdlcl9jb21wbGV0aW9ucyBwaXBlbGluZS1tYW5hZ2VyYCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3pzaCc6XG4gICAgICAgICAgY29uc29sZS5sb2coYCMgcGlwZWxpbmUtbWFuYWdlciB6c2ggY29tcGxldGlvbnNcbl9waXBlbGluZV9tYW5hZ2VyKCkge1xuICBsb2NhbCBjb21tYW5kcz0obG9naW4gZGVwbG95IHN5bnRoIHVwbG9hZC1wbHVnaW4gY3JlYXRlLXBpcGVsaW5lIHN0YXR1cyB2ZXJzaW9uIGJvb3RzdHJhcCBzZXR1cC1ldmVudHMgc3RvcmUtdG9rZW4gY29tcGxldGlvbnMpXG4gIF9kZXNjcmliZSAnY29tbWFuZCcgY29tbWFuZHNcbn1cbmNvbXBkZWYgX3BpcGVsaW5lX21hbmFnZXIgcGlwZWxpbmUtbWFuYWdlcmApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmaXNoJzpcbiAgICAgICAgICBjb25zb2xlLmxvZyhgIyBwaXBlbGluZS1tYW5hZ2VyIGZpc2ggY29tcGxldGlvbnNcbmNvbXBsZXRlIC1jIHBpcGVsaW5lLW1hbmFnZXIgLW4gJ19fZmlzaF91c2Vfc3ViY29tbWFuZCcgLWEgJ2xvZ2luIGRlcGxveSBzeW50aCB1cGxvYWQtcGx1Z2luIGNyZWF0ZS1waXBlbGluZSBzdGF0dXMgdmVyc2lvbiBib290c3RyYXAgc2V0dXAtZXZlbnRzIHN0b3JlLXRva2VuIGNvbXBsZXRpb25zJ2ApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFVua25vd24gc2hlbGw6ICR7c2hlbGx9LiBVc2UgYmFzaCwgenNoLCBvciBmaXNoLmApO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBwcmludERlYnVnKCdBbGwgY29tbWFuZHMgcmVnaXN0ZXJlZCBzdWNjZXNzZnVsbHknKTtcbn1cblxuLyoqXG4gKiBIYW5kbGUgcHJvZ3JhbSBlcnJvcnNcbiAqL1xuZnVuY3Rpb24gc2V0dXBFcnJvckhhbmRsZXJzKCk6IHZvaWQge1xuICAvLyBIYW5kbGUgdW5jYXVnaHQgZXhjZXB0aW9uc1xuICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50RXJyb3IoJ1VuY2F1Z2h0IGV4Y2VwdGlvbicsIHtcbiAgICAgIGVycm9yOiBlcnJvci5tZXNzYWdlLFxuICAgICAgbmFtZTogZXJyb3IubmFtZSxcbiAgICB9KTtcblxuICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5HRU5FUkFMLCB7XG4gICAgICBkZWJ1ZzogaXNEZWJ1Z01vZGUocHJvZ3JhbS5vcHRzKCkpLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgdHlwZTogJ3VuY2F1Z2h0RXhjZXB0aW9uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIEhhbmRsZSB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zXG4gIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChyZWFzb246IHVua25vd24pID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50RXJyb3IoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHtcbiAgICAgIHJlYXNvbjogcmVhc29uIGluc3RhbmNlb2YgRXJyb3IgPyByZWFzb24ubWVzc2FnZSA6IFN0cmluZyhyZWFzb24pLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZXJyb3IgPSByZWFzb24gaW5zdGFuY2VvZiBFcnJvciA/IHJlYXNvbiA6IG5ldyBFcnJvcihTdHJpbmcocmVhc29uKSk7XG5cbiAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuR0VORVJBTCwge1xuICAgICAgZGVidWc6IGlzRGVidWdNb2RlKHByb2dyYW0ub3B0cygpKSxcbiAgICAgIGV4aXQ6IHRydWUsXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIHR5cGU6ICd1bmhhbmRsZWRSZWplY3Rpb24nLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gSGFuZGxlIFNJR0lOVCAoQ3RybCtDKVxuICBwcm9jZXNzLm9uKCdTSUdJTlQnLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJpbnRXYXJuaW5nKCdQcm9jZXNzIGludGVycnVwdGVkIGJ5IHVzZXIgKFNJR0lOVCknKTtcbiAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcm9jZXNzLmV4aXQoMTMwKTsgLy8gU3RhbmRhcmQgZXhpdCBjb2RlIGZvciBTSUdJTlRcbiAgfSk7XG5cbiAgLy8gSGFuZGxlIFNJR1RFUk1cbiAgcHJvY2Vzcy5vbignU0lHVEVSTScsICgpID0+IHtcbiAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcmludFdhcm5pbmcoJ1Byb2Nlc3MgdGVybWluYXRlZCAoU0lHVEVSTSknKTtcbiAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcm9jZXNzLmV4aXQoMTQzKTsgLy8gU3RhbmRhcmQgZXhpdCBjb2RlIGZvciBTSUdURVJNXG4gIH0pO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemUgQ0xJIHdpdGggb3B0aW9uc1xuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ0xJIGluaXRpYWxpemF0aW9uIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVDbGkob3B0aW9uczogQ2xpT3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBzaG93QmFubmVyID0gdHJ1ZSxcbiAgICBtaW5pbWFsQmFubmVyID0gZmFsc2UsXG4gICAgZGVidWcgPSBmYWxzZSxcbiAgICB2ZXJib3NlID0gZmFsc2UsXG4gICAgcXVpZXQgPSBmYWxzZSxcbiAgICBub0NvbG9yID0gZmFsc2UsXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIEhhbmRsZSBjb2xvciBvdXRwdXRcbiAgaWYgKG5vQ29sb3IpIHtcbiAgICBwcm9jZXNzLmVudi5OT19DT0xPUiA9ICcxJztcbiAgfVxuXG4gIC8vIERpc3BsYXkgYmFubmVyXG4gIGlmIChzaG93QmFubmVyICYmICFxdWlldCkge1xuICAgIGlmIChtaW5pbWFsQmFubmVyKSB7XG4gICAgICBtaW5pQmFubmVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJhbm5lcih7XG4gICAgICAgIG1pbmltYWw6IGZhbHNlLFxuICAgICAgICBzaG93RGVzY3JpcHRpb246IHRydWUsXG4gICAgICAgIHNob3dUaW1lc3RhbXA6IGRlYnVnIHx8IHZlcmJvc2UsXG4gICAgICAgIHNob3dFeGVjdXRpb25JZDogZGVidWcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBEaXNwbGF5IHN0YXJ0dXAgaW5mb1xuICBkaXNwbGF5U3RhcnR1cEluZm8oeyBkZWJ1ZywgdmVyYm9zZSwgcXVpZXQgfSk7XG5cbiAgLy8gQ2hlY2sgZW52aXJvbm1lbnRcbiAgaWYgKCFxdWlldCkge1xuICAgIGNoZWNrRW52aXJvbm1lbnQoKTtcbiAgfVxuXG4gIC8vIFNldHVwIGVycm9yIGhhbmRsZXJzXG4gIHNldHVwRXJyb3JIYW5kbGVycygpO1xuXG4gIC8vIFJlZ2lzdGVyIGNvbW1hbmRzXG4gIHRyeSB7XG4gICAgcmVnaXN0ZXJDb21tYW5kcygpO1xuICAgIHByaW50RGVidWcoJ0NMSSBpbml0aWFsaXphdGlvbiBjb21wbGV0ZScpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHByaW50RXJyb3IoJ0NMSSBpbml0aWFsaXphdGlvbiBmYWlsZWQnLCB7XG4gICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgIH0pO1xuXG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkNPTkZJR1VSQVRJT04sIHtcbiAgICAgIGRlYnVnOiBkZWJ1ZyB8fCBpc0RlYnVnTW9kZSgpLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgc3RhZ2U6ICdpbml0aWFsaXphdGlvbicsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUGFyc2UgY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xuICovXG5mdW5jdGlvbiBwYXJzZUFyZ3VtZW50cygpOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICBwcm9ncmFtLnBhcnNlKHByb2Nlc3MuYXJndik7XG5cbiAgICAvLyBTaG93IGhlbHAgaWYgbm8gY29tbWFuZCBwcm92aWRlZFxuICAgIGNvbnN0IGFyZ3MgPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoMik7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICBwcmludEluZm8oJ05vIGNvbW1hbmQgc3BlY2lmaWVkIC0gZGlzcGxheWluZyBoZWxwJyk7XG4gICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICAgIHByb2dyYW0ub3V0cHV0SGVscCgpO1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGNvbW1hbmQgZXhpc3RzXG4gICAgY29uc3QgY29tbWFuZCA9IGFyZ3NbMF07XG4gICAgaWYgKGNvbW1hbmQgJiYgIWNvbW1hbmQuc3RhcnRzV2l0aCgnLScpKSB7XG4gICAgICBjb25zdCBjb21tYW5kRXhpc3RzID0gcHJvZ3JhbS5jb21tYW5kcy5zb21lKGNtZCA9PiBjbWQubmFtZSgpID09PSBjb21tYW5kKTtcblxuICAgICAgaWYgKCFjb21tYW5kRXhpc3RzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgICAgICBwcmludEVycm9yKGBVbmtub3duIGNvbW1hbmQ6ICR7Y29tbWFuZH1gKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgICAgIHByaW50SW5mbygnQXZhaWxhYmxlIGNvbW1hbmRzOicpO1xuICAgICAgICBwcm9ncmFtLmNvbW1hbmRzLmZvckVhY2goY21kID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICDigKIgJHtjbWQubmFtZSgpfSAtICR7Y21kLmRlc2NyaXB0aW9uKCl9YCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByaW50RGVidWcoJ0NvbW1hbmQgbGluZSBhcmd1bWVudHMgcGFyc2VkIHN1Y2Nlc3NmdWxseScpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5HRU5FUkFMLCB7XG4gICAgICBkZWJ1ZzogaXNEZWJ1Z01vZGUocHJvZ3JhbS5vcHRzKCkpLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgc3RhZ2U6ICdhcmd1bWVudC1wYXJzaW5nJyxcbiAgICAgICAgYXJndjogcHJvY2Vzcy5hcmd2LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIE1haW4gQ0xJIGVudHJ5IHBvaW50XG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBDTEkgaW5pdGlhbGl6YXRpb24gb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBTdGFuZGFyZCBpbml0aWFsaXphdGlvblxuICogbWFpbigpO1xuICpcbiAqIC8vIE1pbmltYWwgbW9kZVxuICogbWFpbih7IG1pbmltYWxCYW5uZXI6IHRydWUsIHF1aWV0OiB0cnVlIH0pO1xuICpcbiAqIC8vIERlYnVnIG1vZGVcbiAqIG1haW4oeyBkZWJ1ZzogdHJ1ZSwgdmVyYm9zZTogdHJ1ZSB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFpbihvcHRpb25zOiBDbGlPcHRpb25zID0ge30pOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICAvLyBJbml0aWFsaXplIENMSVxuICAgIGluaXRpYWxpemVDbGkob3B0aW9ucyk7XG5cbiAgICAvLyBQYXJzZSBhcmd1bWVudHMgYW5kIGV4ZWN1dGUgY29tbWFuZFxuICAgIHBhcnNlQXJndW1lbnRzKCk7XG5cbiAgICAvLyBJZiB3ZSByZWFjaCBoZXJlLCBjb21tYW5kIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcbiAgICBwcmludERlYnVnKCdDTEkgZXhlY3V0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBGaW5hbCBjYXRjaC1hbGwgZXJyb3IgaGFuZGxlclxuICAgIGNvbnNvbGUuZXJyb3IoJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJpbnRFcnJvcignRmF0YWwgQ0xJIGVycm9yJywge1xuICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSxcbiAgICB9KTtcblxuICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5HRU5FUkFMLCB7XG4gICAgICBkZWJ1ZzogaXNEZWJ1Z01vZGUob3B0aW9ucyksXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICBzdGFnZTogJ21haW4nLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFJ1biBDTEkgaWYgZXhlY3V0ZWQgZGlyZWN0bHlcbiAqL1xuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIC8vIFBhcnNlIENMSSBvcHRpb25zIGZyb20gZW52aXJvbm1lbnQgb3IgY29tbWFuZCBsaW5lXG4gIGNvbnN0IG9wdGlvbnM6IENsaU9wdGlvbnMgPSB7XG4gICAgZGVidWc6IHByb2Nlc3MuZW52LkRFQlVHID09PSAndHJ1ZScsXG4gICAgcXVpZXQ6IHByb2Nlc3MuYXJndi5pbmNsdWRlcygnLS1xdWlldCcpLFxuICAgIHZlcmJvc2U6IHByb2Nlc3MuYXJndi5pbmNsdWRlcygnLS12ZXJib3NlJyksXG4gICAgbm9Db2xvcjogcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLW5vLWNvbG9yJykgfHwgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPT09ICcxJyxcbiAgfTtcblxuICBtYWluKG9wdGlvbnMpO1xufSJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiK7C"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6O7C"}
@@ -31,8 +31,9 @@ const { bold, cyan, dim } = picocolors_1.default;
31
31
  function deploy(program) {
32
32
  program
33
33
  .command('deploy')
34
- .description('Deploy pipeline by ID using AWS CDK')
35
- .requiredOption('-i, --id <id>', 'Pipeline ID')
34
+ .description('Deploy pipeline by ID using AWS CDK, or --local-spec to deploy a local pipeline.json without the platform')
35
+ .option('-i, --id <id>', 'Pipeline ID (fetches config from the platform)')
36
+ .option('--local-spec <path>', 'Path to a local pipeline.json — deploys without contacting the platform (no auth, no compliance, no plugin lookup)')
36
37
  .option('--profile <profile>', 'AWS profile', 'default')
37
38
  .option('--require-approval <approval>', 'Approval level: never|any-change|broadening', 'never')
38
39
  .option('--output <dir>', 'CDK output directory', 'cdk.out')
@@ -40,7 +41,15 @@ function deploy(program) {
40
41
  .option('--region <region>', 'AWS region (for --store-tokens)')
41
42
  .option('--verify-ssl', 'Enable SSL certificate verification')
42
43
  .option('--no-verify-ssl', 'Disable SSL certificate verification')
44
+ .option('--show-resolved', 'Print the resolved pipeline config (with {{ ... }} templates expanded) and exit without deploying', false)
43
45
  .action(async (options) => {
46
+ // Mutually exclusive input sources
47
+ if (!options.id && !options.localSpec) {
48
+ throw new Error('Either --id <pipeline-id> or --local-spec <path> is required');
49
+ }
50
+ if (options.id && options.localSpec) {
51
+ throw new Error('--id and --local-spec are mutually exclusive');
52
+ }
44
53
  const executionId = (0, command_utils_1.printCommandHeader)('Pipeline Deploy');
45
54
  try {
46
55
  (0, audit_log_1.auditLog)('deploy', { executionId, pipelineId: options.id, profile: options.profile });
@@ -59,35 +68,97 @@ function deploy(program) {
59
68
  }
60
69
  (0, cdk_utils_1.ensureCdkAvailable)();
61
70
  (0, output_utils_1.printSuccess)('AWS CDK is available');
62
- // Create authenticated API client (supports PLATFORM_TOKEN or --store-tokens)
63
- const client = await (0, command_utils_1.createAuthenticatedClientAsync)(options);
64
- const config = client.getConfig();
65
- // Fetch pipeline from API
66
- (0, output_utils_1.printInfo)('Fetching pipeline configuration', { id: options.id });
67
- const response = await client.get(`${config.api.pipelineUrl}/${options.id}`);
68
- const pipeline = (0, output_utils_1.extractSingleResponse)(response, 'pipeline', 'props');
69
- if (!pipeline?.props) {
70
- (0, output_utils_1.printError)('Invalid pipeline response', {
71
- id: options.id,
72
- hasProps: !!pipeline?.props,
73
- responseKeys: response ? Object.keys(response) : '(null)',
71
+ let pipeline;
72
+ let propsWithIds;
73
+ // Remote-mode registry-post handles — null in --local-spec mode.
74
+ let platformClient;
75
+ let platformConfig;
76
+ if (options.localSpec) {
77
+ // --local-spec: read pipeline.json from disk; no platform contact.
78
+ // Compliance / quota / plugin-lookup features all require the platform —
79
+ // this mode is for air-gapped or simple standalone CDK deployments.
80
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
81
+ const fsMod = require('fs');
82
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
83
+ const pathMod = require('path');
84
+ const absPath = pathMod.resolve(options.localSpec);
85
+ (0, output_utils_1.printInfo)('Loading local pipeline spec', { path: absPath });
86
+ if (!fsMod.existsSync(absPath)) {
87
+ throw new Error(`Local spec file not found: ${absPath}`);
88
+ }
89
+ const raw = fsMod.readFileSync(absPath, 'utf-8');
90
+ const parsed = JSON.parse(raw);
91
+ if (!parsed.props) {
92
+ throw new Error(`Local spec file is missing required 'props' field: ${absPath}`);
93
+ }
94
+ pipeline = {
95
+ id: parsed.id ?? 'local',
96
+ project: parsed.project ?? 'local-project',
97
+ organization: parsed.organization ?? 'local-org',
98
+ orgId: parsed.orgId,
99
+ isDefault: parsed.isDefault ?? false,
100
+ isActive: parsed.isActive ?? true,
101
+ props: parsed.props,
102
+ };
103
+ (0, output_utils_1.printSuccess)('Local spec loaded');
104
+ (0, output_utils_1.printKeyValue)({
105
+ 'Source': absPath,
106
+ 'Project': pipeline.project,
107
+ 'Organization': pipeline.organization,
74
108
  });
75
- throw new Error(`Failed to retrieve valid pipeline properties for ID: ${options.id}`);
109
+ propsWithIds = {
110
+ ...pipeline.props,
111
+ ...(pipeline.orgId && { orgId: pipeline.orgId }),
112
+ pipelineId: pipeline.id,
113
+ };
114
+ }
115
+ else {
116
+ // Remote path: fetch config from platform API
117
+ platformClient = await (0, command_utils_1.createAuthenticatedClientAsync)(options);
118
+ platformConfig = platformClient.getConfig();
119
+ (0, output_utils_1.printInfo)('Fetching pipeline configuration', { id: options.id });
120
+ const response = await platformClient.get(`${platformConfig.api.pipelineUrl}/${options.id}`);
121
+ const fetched = (0, output_utils_1.extractSingleResponse)(response, 'pipeline', 'props');
122
+ if (!fetched?.props) {
123
+ (0, output_utils_1.printError)('Invalid pipeline response', {
124
+ id: options.id,
125
+ hasProps: !!fetched?.props,
126
+ responseKeys: response ? Object.keys(response) : '(null)',
127
+ });
128
+ throw new Error(`Failed to retrieve valid pipeline properties for ID: ${options.id}`);
129
+ }
130
+ pipeline = fetched;
131
+ (0, output_utils_1.printSuccess)('Pipeline configuration retrieved');
132
+ (0, output_utils_1.printKeyValue)({
133
+ 'ID': pipeline.id,
134
+ 'Project': pipeline.project,
135
+ 'Organization': pipeline.organization,
136
+ 'Is Default': pipeline.isDefault,
137
+ 'Is Active': pipeline.isActive,
138
+ });
139
+ propsWithIds = {
140
+ ...pipeline.props,
141
+ ...(pipeline.orgId && { orgId: pipeline.orgId }),
142
+ pipelineId: pipeline.id,
143
+ };
144
+ }
145
+ // --show-resolved: print resolved config and exit (no CDK deploy)
146
+ if (options.showResolved) {
147
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
148
+ const { resolveSelfReferencing } = require('@pipeline-builder/pipeline-core');
149
+ const propsAny = propsWithIds;
150
+ const scope = { metadata: propsAny.metadata ?? {}, vars: propsAny.vars ?? {} };
151
+ const isTpl = (f) => f === 'projectName' || f.startsWith('metadata.') || f.startsWith('vars.');
152
+ const result = resolveSelfReferencing(propsAny, scope, isTpl, (f) => isTpl(f) ? f : null, 'pipeline');
153
+ if (result.errors.length) {
154
+ console.error('Resolution errors:');
155
+ for (const e of result.errors)
156
+ console.error(` [${e.field ?? '?'}] ${e.message}`);
157
+ process.exit(1);
158
+ }
159
+ console.log(JSON.stringify(propsWithIds, null, 2));
160
+ return;
76
161
  }
77
- (0, output_utils_1.printSuccess)('Pipeline configuration retrieved');
78
- (0, output_utils_1.printKeyValue)({
79
- 'ID': pipeline.id,
80
- 'Project': pipeline.project,
81
- 'Organization': pipeline.organization,
82
- 'Is Default': pipeline.isDefault,
83
- 'Is Active': pipeline.isActive,
84
- });
85
- // Encode pipeline props (inject orgId and pipelineId for autonomous synth)
86
- const propsWithIds = {
87
- ...pipeline.props,
88
- ...(pipeline.orgId && { orgId: pipeline.orgId }),
89
- pipelineId: pipeline.id,
90
- };
91
162
  const encoded = Buffer.from(JSON.stringify(propsWithIds), 'utf-8').toString('base64');
92
163
  const outputPath = options.output;
93
164
  // Ensure output directory exists
@@ -120,7 +191,12 @@ function deploy(program) {
120
191
  'Output Directory': outputPath,
121
192
  'Status': '✓ Success',
122
193
  });
123
- // Register pipeline ARN for event reporting (non-blocking)
194
+ // Register pipeline ARN for event reporting (non-blocking).
195
+ // Skipped in --local-spec mode since there's no platform to register with.
196
+ if (!platformClient || !platformConfig) {
197
+ (0, output_utils_1.printInfo)('Skipping pipeline registry (local-spec mode)');
198
+ return;
199
+ }
124
200
  try {
125
201
  const stsClient = new client_sts_1.STSClient({ region: process.env.AWS_REGION || process.env.CDK_DEFAULT_REGION });
126
202
  const identity = await stsClient.send(new client_sts_1.GetCallerIdentityCommand({}));
@@ -130,7 +206,7 @@ function deploy(program) {
130
206
  || `${pipeline.organization}-${pipeline.project}-pipeline`.toLowerCase();
131
207
  const hashedAccount = (0, crypto_1.createHash)('sha256').update(account).digest('hex').slice(0, 12);
132
208
  const pipelineArn = `arn:aws:codepipeline:${region}:${hashedAccount}:${pipelineName}`;
133
- await client.post(`${config.api.pipelineUrl}/registry`, {
209
+ await platformClient.post(`${platformConfig.api.pipelineUrl}/registry`, {
134
210
  pipelineId: pipeline.id,
135
211
  orgId: pipeline.orgId,
136
212
  pipelineArn,
@@ -164,4 +240,4 @@ function deploy(program) {
164
240
  }
165
241
  });
166
242
  }
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2RlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7Ozs7QUE0QnRDLHdCQWlLQztBQTNMRCxtQ0FBb0M7QUFDcEMsb0RBQTBFO0FBRTFFLDREQUE4QjtBQUM5QiwyREFBMEQ7QUFFMUQsa0RBQThDO0FBQzlDLGtEQUF3RztBQUN4RywwREFBNkc7QUFDN0csMERBQWtFO0FBQ2xFLHdEQUFxSztBQUVySyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxvQkFBSSxDQUFDO0FBRWpDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBZ0IsTUFBTSxDQUFDLE9BQWdCO0lBQ3JDLE9BQU87U0FDSixPQUFPLENBQUMsUUFBUSxDQUFDO1NBQ2pCLFdBQVcsQ0FBQyxxQ0FBcUMsQ0FBQztTQUNsRCxjQUFjLENBQUMsZUFBZSxFQUFFLGFBQWEsQ0FBQztTQUM5QyxNQUFNLENBQUMscUJBQXFCLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQztTQUN2RCxNQUFNLENBQUMsK0JBQStCLEVBQUUsNkNBQTZDLEVBQUUsT0FBTyxDQUFDO1NBQy9GLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxTQUFTLENBQUM7U0FDM0QsTUFBTSxDQUFDLGdCQUFnQixFQUFFLDJGQUEyRixFQUFFLEtBQUssQ0FBQztTQUM1SCxNQUFNLENBQUMsbUJBQW1CLEVBQUUsaUNBQWlDLENBQUM7U0FDOUQsTUFBTSxDQUFDLGNBQWMsRUFBRSxxQ0FBcUMsQ0FBQztTQUM3RCxNQUFNLENBQUMsaUJBQWlCLEVBQUUsc0NBQXNDLENBQUM7U0FDakUsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUV4QixNQUFNLFdBQVcsR0FBRyxJQUFBLGtDQUFrQixFQUFDLGlCQUFpQixDQUFDLENBQUM7UUFF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Q0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFBLDJCQUFXLEVBQUMsS0FBSyxFQUFFLDJCQUFXLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRTtvQkFDUCxPQUFPLEVBQUUsUUFBUTtvQkFDakIsV0FBVztvQkFDWCxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUU7b0JBQ3RCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztpQkFDN0I7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgU1RTQ2xpZW50LCBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3RzJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBhc3NlcnRTaGVsbFNhZmUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBQaXBlbGluZSwgUGlwZWxpbmVSZXNwb25zZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGF1ZGl0TG9nIH0gZnJvbSAnLi4vdXRpbHMvYXVkaXQtbG9nJztcbmltcG9ydCB7IGVuc3VyZUNka0F2YWlsYWJsZSwgZXhlY3V0ZUNka1NoZWxsQ29tbWFuZCwgcmVzb2x2ZUJvaWxlcnBsYXRlUGF0aCB9IGZyb20gJy4uL3V0aWxzL2Nkay11dGlscyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIsIHByaW50U3NsV2FybmluZywgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyJztcbmltcG9ydCB7IGVuc3VyZU91dHB1dERpcmVjdG9yeSwgZXh0cmFjdFNpbmdsZVJlc3BvbnNlLCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMnO1xuXG5jb25zdCB7IGJvbGQsIGN5YW4sIGRpbSB9ID0gcGljbztcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBkZXBsb3lgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogRmV0Y2hlcyBwaXBlbGluZSBwcm9wZXJ0aWVzIGJ5IElEIGZyb20gdGhlIHBsYXRmb3JtIEFQSSwgdGhlblxuICogcnVucyBgY2RrIGRlcGxveWAgdG8gcHJvdmlzaW9uIHRoZSBwaXBlbGluZSBpbmZyYXN0cnVjdHVyZSBpbiBBV1MuXG4gKiBGb3Igc3ludGhlc2lzIG9ubHksIHVzZSBgcGlwZWxpbmUtbWFuYWdlciBzeW50aGAuXG4gKlxuICogUmVxdWlyZXMgc2VydmljZSBjcmVkZW50aWFscyB0byBiZSBwcmUtc3RvcmVkIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIuXG4gKiBDcmVhdGUgdGhlbSBmaXJzdCB3aXRoOiBgcGlwZWxpbmUtbWFuYWdlciBzdG9yZS10b2tlbmBcbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcGxveShwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnZGVwbG95JylcbiAgICAuZGVzY3JpcHRpb24oJ0RlcGxveSBwaXBlbGluZSBieSBJRCB1c2luZyBBV1MgQ0RLJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy1pLCAtLWlkIDxpZD4nLCAnUGlwZWxpbmUgSUQnKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIHByb2ZpbGUnLCAnZGVmYXVsdCcpXG4gICAgLm9wdGlvbignLS1yZXF1aXJlLWFwcHJvdmFsIDxhcHByb3ZhbD4nLCAnQXBwcm92YWwgbGV2ZWw6IG5ldmVyfGFueS1jaGFuZ2V8YnJvYWRlbmluZycsICduZXZlcicpXG4gICAgLm9wdGlvbignLS1vdXRwdXQgPGRpcj4nLCAnQ0RLIG91dHB1dCBkaXJlY3RvcnknLCAnY2RrLm91dCcpXG4gICAgLm9wdGlvbignLS1zdG9yZS10b2tlbnMnLCAnQXV0aGVudGljYXRlIHVzaW5nIHRva2VuIGZyb20gQVdTIFNlY3JldHMgTWFuYWdlciAocmVxdWlyZXMgUExBVEZPUk1fU0VDUkVUX05BTUUgZW52IHZhciknLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uIChmb3IgLS1zdG9yZS10b2tlbnMpJylcbiAgICAub3B0aW9uKCctLXZlcmlmeS1zc2wnLCAnRW5hYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5vcHRpb24oJy0tbm8tdmVyaWZ5LXNzbCcsICdEaXNhYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcblxuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ1BpcGVsaW5lIERlcGxveScpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBhdWRpdExvZygnZGVwbG95JywgeyBleGVjdXRpb25JZCwgcGlwZWxpbmVJZDogb3B0aW9ucy5pZCwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuXG4gICAgICAgIHByaW50SW5mbygnRGVwbG95bWVudCBwYXJhbWV0ZXJzJywge1xuICAgICAgICAgIGlkOiBvcHRpb25zLmlkLFxuICAgICAgICAgIGF3c1Byb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgICAgICBvdXRwdXREaXI6IG9wdGlvbnMub3V0cHV0LFxuICAgICAgICAgIHJlcXVpcmVBcHByb3ZhbDogb3B0aW9ucy5yZXF1aXJlQXBwcm92YWwsXG4gICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2VjdXJpdHkgd2FybmluZyBmb3IgU1NMIHZlcmlmaWNhdGlvbiBkaXNhYmxlZFxuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIC8vIFByb3BhZ2F0ZSB0byBwcm9jZXNzLmVudiBzbyBDREsgY29uc3RydWN0cyAoTGFtYmRhLCBDb2RlQnVpbGQpIGluaGVyaXQgaXRcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyaWZ5U3NsID09PSBmYWxzZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQgPSAnMCc7XG4gICAgICAgIH1cblxuICAgICAgICBlbnN1cmVDZGtBdmFpbGFibGUoKTtcbiAgICAgICAgcHJpbnRTdWNjZXNzKCdBV1MgQ0RLIGlzIGF2YWlsYWJsZScpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBhdXRoZW50aWNhdGVkIEFQSSBjbGllbnQgKHN1cHBvcnRzIFBMQVRGT1JNX1RPS0VOIG9yIC0tc3RvcmUtdG9rZW5zKVxuICAgICAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGNsaWVudC5nZXRDb25maWcoKTtcblxuICAgICAgICAvLyBGZXRjaCBwaXBlbGluZSBmcm9tIEFQSVxuICAgICAgICBwcmludEluZm8oJ0ZldGNoaW5nIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24nLCB7IGlkOiBvcHRpb25zLmlkIH0pO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8UGlwZWxpbmVSZXNwb25zZT4oXG4gICAgICAgICAgYCR7Y29uZmlnLmFwaS5waXBlbGluZVVybH0vJHtvcHRpb25zLmlkfWAsXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgcGlwZWxpbmUgPSBleHRyYWN0U2luZ2xlUmVzcG9uc2U8UGlwZWxpbmU+KHJlc3BvbnNlLCAncGlwZWxpbmUnLCAncHJvcHMnKTtcblxuICAgICAgICBpZiAoIXBpcGVsaW5lPy5wcm9wcykge1xuICAgICAgICAgIHByaW50RXJyb3IoJ0ludmFsaWQgcGlwZWxpbmUgcmVzcG9uc2UnLCB7XG4gICAgICAgICAgICBpZDogb3B0aW9ucy5pZCxcbiAgICAgICAgICAgIGhhc1Byb3BzOiAhIXBpcGVsaW5lPy5wcm9wcyxcbiAgICAgICAgICAgIHJlc3BvbnNlS2V5czogcmVzcG9uc2UgPyBPYmplY3Qua2V5cyhyZXNwb25zZSkgOiAnKG51bGwpJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSB2YWxpZCBwaXBlbGluZSBwcm9wZXJ0aWVzIGZvciBJRDogJHtvcHRpb25zLmlkfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJpbnRTdWNjZXNzKCdQaXBlbGluZSBjb25maWd1cmF0aW9uIHJldHJpZXZlZCcpO1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnSUQnOiBwaXBlbGluZS5pZCxcbiAgICAgICAgICAnUHJvamVjdCc6IHBpcGVsaW5lLnByb2plY3QsXG4gICAgICAgICAgJ09yZ2FuaXphdGlvbic6IHBpcGVsaW5lLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICAnSXMgRGVmYXVsdCc6IHBpcGVsaW5lLmlzRGVmYXVsdCxcbiAgICAgICAgICAnSXMgQWN0aXZlJzogcGlwZWxpbmUuaXNBY3RpdmUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEVuY29kZSBwaXBlbGluZSBwcm9wcyAoaW5qZWN0IG9yZ0lkIGFuZCBwaXBlbGluZUlkIGZvciBhdXRvbm9tb3VzIHN5bnRoKVxuICAgICAgICBjb25zdCBwcm9wc1dpdGhJZHMgPSB7XG4gICAgICAgICAgLi4ucGlwZWxpbmUucHJvcHMsXG4gICAgICAgICAgLi4uKHBpcGVsaW5lLm9yZ0lkICYmIHsgb3JnSWQ6IHBpcGVsaW5lLm9yZ0lkIH0pLFxuICAgICAgICAgIHBpcGVsaW5lSWQ6IHBpcGVsaW5lLmlkLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGVuY29kZWQgPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShwcm9wc1dpdGhJZHMpLCAndXRmLTgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICAgIGNvbnN0IG91dHB1dFBhdGggPSBvcHRpb25zLm91dHB1dDtcblxuICAgICAgICAvLyBFbnN1cmUgb3V0cHV0IGRpcmVjdG9yeSBleGlzdHNcbiAgICAgICAgcHJpbnRJbmZvKCdQcmVwYXJpbmcgb3V0cHV0IGRpcmVjdG9yeScsIHsgcGF0aDogb3V0cHV0UGF0aCB9KTtcbiAgICAgICAgZW5zdXJlT3V0cHV0RGlyZWN0b3J5KG91dHB1dFBhdGgpO1xuXG4gICAgICAgIC8vIEJ1aWxkIENESyBjb21tYW5kICh2YWxpZGF0ZSBpbnB1dHMgdGhhdCBmbG93IGludG8gc2hlbGwpXG4gICAgICAgIGlmIChvcHRpb25zLnByb2ZpbGUpIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLnByb2ZpbGUsICdwcm9maWxlJyk7XG4gICAgICAgIGFzc2VydFNoZWxsU2FmZShvdXRwdXRQYXRoLCAnb3V0cHV0Jyk7XG5cbiAgICAgICAgY29uc3Qgc2NyaXB0UGF0aCA9IHJlc29sdmVCb2lsZXJwbGF0ZVBhdGgoX19kaXJuYW1lKTtcbiAgICAgICAgY29uc3QgcHJvZmlsZUFyZyA9IG9wdGlvbnMucHJvZmlsZSA/IGAtLXByb2ZpbGU9JHtvcHRpb25zLnByb2ZpbGV9YCA6ICcnO1xuICAgICAgICBjb25zdCBvdXRwdXRBcmcgPSBgLS1vdXRwdXQ9JHtvdXRwdXRQYXRofWA7XG4gICAgICAgIGNvbnN0IGFwcEFyZyA9IGAtLWFwcD1cIm5vZGUgJHtzY3JpcHRQYXRofVwiYDtcblxuICAgICAgICBjb25zdCBjb21tYW5kID0gYGNkayBkZXBsb3kgJHtwcm9maWxlQXJnfSAtLXJlcXVpcmUtYXBwcm92YWw9JHtvcHRpb25zLnJlcXVpcmVBcHByb3ZhbH0gJHtvdXRwdXRBcmd9IC0tbm90aWNlcz1mYWxzZSAke2FwcEFyZ31gO1xuXG4gICAgICAgIHByaW50U2VjdGlvbignQ0RLIEV4ZWN1dGlvbicpO1xuICAgICAgICBjb25zb2xlLmxvZyhjeWFuKGJvbGQoJ0NvbW1hbmQ6JykpLCBkaW0oY29tbWFuZC5zcGxpdCgnIC0tJylbMF0gKyAnIC4uLicpKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG5cbiAgICAgICAgLy8gRXhlY3V0ZSBDREsgY29tbWFuZFxuICAgICAgICBjb25zdCByZXN1bHQgPSBleGVjdXRlQ2RrU2hlbGxDb21tYW5kKGNvbW1hbmQsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgc2hvd091dHB1dDogdHJ1ZSxcbiAgICAgICAgICBlbnY6IHsgUElQRUxJTkVfUFJPUFM6IGVuY29kZWQgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgICAgIHByaW50U2VjdGlvbignRGVwbG95bWVudCBDb21wbGV0ZScpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ0V4ZWN1dGlvbiBJRCc6IGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgJ0R1cmF0aW9uJzogYCR7cmVzdWx0LmR1cmF0aW9ufW1zYCxcbiAgICAgICAgICAgICdPdXRwdXQgRGlyZWN0b3J5Jzogb3V0cHV0UGF0aCxcbiAgICAgICAgICAgICdTdGF0dXMnOiAn4pyTIFN1Y2Nlc3MnLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gUmVnaXN0ZXIgcGlwZWxpbmUgQVJOIGZvciBldmVudCByZXBvcnRpbmcgKG5vbi1ibG9ja2luZylcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc3RzQ2xpZW50ID0gbmV3IFNUU0NsaWVudCh7IHJlZ2lvbjogcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04gfSk7XG4gICAgICAgICAgICBjb25zdCBpZGVudGl0eSA9IGF3YWl0IHN0c0NsaWVudC5zZW5kKG5ldyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQoe30pKTtcbiAgICAgICAgICAgIGNvbnN0IGFjY291bnQgPSBpZGVudGl0eS5BY2NvdW50ID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgcmVnaW9uID0gb3B0aW9ucy5yZWdpb24gfHwgcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04gfHwgJ3VzLWVhc3QtMSc7XG5cbiAgICAgICAgICAgIGNvbnN0IHBpcGVsaW5lTmFtZSA9IHBpcGVsaW5lLnBpcGVsaW5lTmFtZVxuICAgICAgICAgICAgICB8fCBgJHtwaXBlbGluZS5vcmdhbml6YXRpb259LSR7cGlwZWxpbmUucHJvamVjdH0tcGlwZWxpbmVgLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGhhc2hlZEFjY291bnQgPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoYWNjb3VudCkuZGlnZXN0KCdoZXgnKS5zbGljZSgwLCAxMik7XG4gICAgICAgICAgICBjb25zdCBwaXBlbGluZUFybiA9IGBhcm46YXdzOmNvZGVwaXBlbGluZToke3JlZ2lvbn06JHtoYXNoZWRBY2NvdW50fToke3BpcGVsaW5lTmFtZX1gO1xuXG4gICAgICAgICAgICBhd2FpdCBjbGllbnQucG9zdChgJHtjb25maWcuYXBpLnBpcGVsaW5lVXJsfS9yZWdpc3RyeWAsIHtcbiAgICAgICAgICAgICAgcGlwZWxpbmVJZDogcGlwZWxpbmUuaWQsXG4gICAgICAgICAgICAgIG9yZ0lkOiBwaXBlbGluZS5vcmdJZCxcbiAgICAgICAgICAgICAgcGlwZWxpbmVBcm4sXG4gICAgICAgICAgICAgIHBpcGVsaW5lTmFtZSxcbiAgICAgICAgICAgICAgYWNjb3VudElkOiBoYXNoZWRBY2NvdW50LFxuICAgICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICAgIHByb2plY3Q6IHBpcGVsaW5lLnByb2plY3QsXG4gICAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogcGlwZWxpbmUub3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgICBzdGFja05hbWU6IGAke3BpcGVsaW5lLnByb2plY3R9LSR7cGlwZWxpbmUub3JnYW5pemF0aW9ufWAudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIHJlZ2lzdGVyZWQgZm9yIGV2ZW50IHJlcG9ydGluZycsIHsgYXJuOiBwaXBlbGluZUFybiB9KTtcbiAgICAgICAgICB9IGNhdGNoIChyZWdFcnJvcikge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKCdQaXBlbGluZSByZWdpc3RyeSB1cGRhdGUgZmFpbGVkIChyZXBvcnRpbmcgbWF5IGJlIGluY29tcGxldGUpJywge1xuICAgICAgICAgICAgICBlcnJvcjogcmVnRXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IHJlZ0Vycm9yLm1lc3NhZ2UgOiBTdHJpbmcocmVnRXJyb3IpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGNvbW1hbmQ6ICdkZXBsb3knLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICBwaXBlbGluZUlkOiBvcHRpb25zLmlkLFxuICAgICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2RlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7Ozs7QUE0QnRDLHdCQTZPQztBQXZRRCxtQ0FBb0M7QUFDcEMsb0RBQTBFO0FBRTFFLDREQUE4QjtBQUM5QiwyREFBMEQ7QUFFMUQsa0RBQThDO0FBQzlDLGtEQUF3RztBQUN4RywwREFBNkc7QUFDN0csMERBQWtFO0FBQ2xFLHdEQUFxSztBQUVySyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxvQkFBSSxDQUFDO0FBRWpDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBZ0IsTUFBTSxDQUFDLE9BQWdCO0lBQ3JDLE9BQU87U0FDSixPQUFPLENBQUMsUUFBUSxDQUFDO1NBQ2pCLFdBQVcsQ0FBQywyR0FBMkcsQ0FBQztTQUN4SCxNQUFNLENBQUMsZUFBZSxFQUFFLGdEQUFnRCxDQUFDO1NBQ3pFLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxvSEFBb0gsQ0FBQztTQUNuSixNQUFNLENBQUMscUJBQXFCLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQztTQUN2RCxNQUFNLENBQUMsK0JBQStCLEVBQUUsNkNBQTZDLEVBQUUsT0FBTyxDQUFDO1NBQy9GLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxTQUFTLENBQUM7U0FDM0QsTUFBTSxDQUFDLGdCQUFnQixFQUFFLDJGQUEyRixFQUFFLEtBQUssQ0FBQztTQUM1SCxNQUFNLENBQUMsbUJBQW1CLEVBQUUsaUNBQWlDLENBQUM7U0FDOUQsTUFBTSxDQUFDLGNBQWMsRUFBRSxxQ0FBcUMsQ0FBQztTQUM3RCxNQUFNLENBQUMsaUJBQWlCLEVBQUUsc0NBQXNDLENBQUM7U0FDakUsTUFBTSxDQUFDLGlCQUFpQixFQUFFLG1HQUFtRyxFQUFFLEtBQUssQ0FBQztTQUNySSxN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QUEsMkJBQVksRUFBQywrREFBK0QsRUFBRTt3QkFDNUUsS0FBSyxFQUFFLFFBQVEsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7cUJBQ3ZFLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztRQUVILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBQSwyQkFBVyxFQUFDLEtBQUssRUFBRSwyQkFBVyxDQUFDLFdBQVcsRUFBRTtnQkFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLFFBQVE7b0JBQ2pCLFdBQVc7b0JBQ1gsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFO29CQUN0QixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7aUJBQzdCO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IFNUU0NsaWVudCwgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXN0cyc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnO1xuaW1wb3J0IHsgYXNzZXJ0U2hlbGxTYWZlIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMnO1xuaW1wb3J0IHsgUGlwZWxpbmUsIFBpcGVsaW5lUmVzcG9uc2UgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBhdWRpdExvZyB9IGZyb20gJy4uL3V0aWxzL2F1ZGl0LWxvZyc7XG5pbXBvcnQgeyBlbnN1cmVDZGtBdmFpbGFibGUsIGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQsIHJlc29sdmVCb2lsZXJwbGF0ZVBhdGggfSBmcm9tICcuLi91dGlscy9jZGstdXRpbHMnO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludFNzbFdhcm5pbmcsIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlcic7XG5pbXBvcnQgeyBlbnN1cmVPdXRwdXREaXJlY3RvcnksIGV4dHJhY3RTaW5nbGVSZXNwb25zZSwgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzJztcblxuY29uc3QgeyBib2xkLCBjeWFuLCBkaW0gfSA9IHBpY287XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgZGVwbG95YCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIEZldGNoZXMgcGlwZWxpbmUgcHJvcGVydGllcyBieSBJRCBmcm9tIHRoZSBwbGF0Zm9ybSBBUEksIHRoZW5cbiAqIHJ1bnMgYGNkayBkZXBsb3lgIHRvIHByb3Zpc2lvbiB0aGUgcGlwZWxpbmUgaW5mcmFzdHJ1Y3R1cmUgaW4gQVdTLlxuICogRm9yIHN5bnRoZXNpcyBvbmx5LCB1c2UgYHBpcGVsaW5lLW1hbmFnZXIgc3ludGhgLlxuICpcbiAqIFJlcXVpcmVzIHNlcnZpY2UgY3JlZGVudGlhbHMgdG8gYmUgcHJlLXN0b3JlZCBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyLlxuICogQ3JlYXRlIHRoZW0gZmlyc3Qgd2l0aDogYHBpcGVsaW5lLW1hbmFnZXIgc3RvcmUtdG9rZW5gXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcm9vdCBDb21tYW5kZXIgcHJvZ3JhbSBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIGNvbW1hbmQgdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXBsb3kocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2RlcGxveScpXG4gICAgLmRlc2NyaXB0aW9uKCdEZXBsb3kgcGlwZWxpbmUgYnkgSUQgdXNpbmcgQVdTIENESywgb3IgLS1sb2NhbC1zcGVjIHRvIGRlcGxveSBhIGxvY2FsIHBpcGVsaW5lLmpzb24gd2l0aG91dCB0aGUgcGxhdGZvcm0nKVxuICAgIC5vcHRpb24oJy1pLCAtLWlkIDxpZD4nLCAnUGlwZWxpbmUgSUQgKGZldGNoZXMgY29uZmlnIGZyb20gdGhlIHBsYXRmb3JtKScpXG4gICAgLm9wdGlvbignLS1sb2NhbC1zcGVjIDxwYXRoPicsICdQYXRoIHRvIGEgbG9jYWwgcGlwZWxpbmUuanNvbiDigJQgZGVwbG95cyB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIHBsYXRmb3JtIChubyBhdXRoLCBubyBjb21wbGlhbmNlLCBubyBwbHVnaW4gbG9va3VwKScpXG4gICAgLm9wdGlvbignLS1wcm9maWxlIDxwcm9maWxlPicsICdBV1MgcHJvZmlsZScsICdkZWZhdWx0JylcbiAgICAub3B0aW9uKCctLXJlcXVpcmUtYXBwcm92YWwgPGFwcHJvdmFsPicsICdBcHByb3ZhbCBsZXZlbDogbmV2ZXJ8YW55LWNoYW5nZXxicm9hZGVuaW5nJywgJ25ldmVyJylcbiAgICAub3B0aW9uKCctLW91dHB1dCA8ZGlyPicsICdDREsgb3V0cHV0IGRpcmVjdG9yeScsICdjZGsub3V0JylcbiAgICAub3B0aW9uKCctLXN0b3JlLXRva2VucycsICdBdXRoZW50aWNhdGUgdXNpbmcgdG9rZW4gZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyIChyZXF1aXJlcyBQTEFURk9STV9TRUNSRVRfTkFNRSBlbnYgdmFyKScsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGZvciAtLXN0b3JlLXRva2VucyknKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1zaG93LXJlc29sdmVkJywgJ1ByaW50IHRoZSByZXNvbHZlZCBwaXBlbGluZSBjb25maWcgKHdpdGgge3sgLi4uIH19IHRlbXBsYXRlcyBleHBhbmRlZCkgYW5kIGV4aXQgd2l0aG91dCBkZXBsb3lpbmcnLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAvLyBNdXR1YWxseSBleGNsdXNpdmUgaW5wdXQgc291cmNlc1xuICAgICAgaWYgKCFvcHRpb25zLmlkICYmICFvcHRpb25zLmxvY2FsU3BlYykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VpdGhlciAtLWlkIDxwaXBlbGluZS1pZD4gb3IgLS1sb2NhbC1zcGVjIDxwYXRoPiBpcyByZXF1aXJlZCcpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuaWQgJiYgb3B0aW9ucy5sb2NhbFNwZWMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCctLWlkIGFuZCAtLWxvY2FsLXNwZWMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZScpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignUGlwZWxpbmUgRGVwbG95Jyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF1ZGl0TG9nKCdkZXBsb3knLCB7IGV4ZWN1dGlvbklkLCBwaXBlbGluZUlkOiBvcHRpb25zLmlkLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG5cbiAgICAgICAgcHJpbnRJbmZvKCdEZXBsb3ltZW50IHBhcmFtZXRlcnMnLCB7XG4gICAgICAgICAgaWQ6IG9wdGlvbnMuaWQsXG4gICAgICAgICAgYXdzUHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgICAgICAgIG91dHB1dERpcjogb3B0aW9ucy5vdXRwdXQsXG4gICAgICAgICAgcmVxdWlyZUFwcHJvdmFsOiBvcHRpb25zLnJlcXVpcmVBcHByb3ZhbCxcbiAgICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTZWN1cml0eSB3YXJuaW5nIGZvciBTU0wgdmVyaWZpY2F0aW9uIGRpc2FibGVkXG4gICAgICAgIHByaW50U3NsV2FybmluZyhvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgICAgLy8gUHJvcGFnYXRlIHRvIHByb2Nlc3MuZW52IHNvIENESyBjb25zdHJ1Y3RzIChMYW1iZGEsIENvZGVCdWlsZCkgaW5oZXJpdCBpdFxuICAgICAgICBpZiAob3B0aW9ucy52ZXJpZnlTc2wgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRCA9ICcwJztcbiAgICAgICAgfVxuXG4gICAgICAgIGVuc3VyZUNka0F2YWlsYWJsZSgpO1xuICAgICAgICBwcmludFN1Y2Nlc3MoJ0FXUyBDREsgaXMgYXZhaWxhYmxlJyk7XG5cbiAgICAgICAgbGV0IHBpcGVsaW5lOiBQaXBlbGluZTtcbiAgICAgICAgbGV0IHByb3BzV2l0aElkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIC8vIFJlbW90ZS1tb2RlIHJlZ2lzdHJ5LXBvc3QgaGFuZGxlcyDigJQgbnVsbCBpbiAtLWxvY2FsLXNwZWMgbW9kZS5cbiAgICAgICAgbGV0IHBsYXRmb3JtQ2xpZW50OiBBd2FpdGVkPFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYz4+IHwgdW5kZWZpbmVkO1xuICAgICAgICBsZXQgcGxhdGZvcm1Db25maWc6IHsgYXBpOiB7IHBpcGVsaW5lVXJsOiBzdHJpbmcgfSB9IHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmxvY2FsU3BlYykge1xuICAgICAgICAgIC8vIC0tbG9jYWwtc3BlYzogcmVhZCBwaXBlbGluZS5qc29uIGZyb20gZGlzazsgbm8gcGxhdGZvcm0gY29udGFjdC5cbiAgICAgICAgICAvLyBDb21wbGlhbmNlIC8gcXVvdGEgLyBwbHVnaW4tbG9va3VwIGZlYXR1cmVzIGFsbCByZXF1aXJlIHRoZSBwbGF0Zm9ybSDigJRcbiAgICAgICAgICAvLyB0aGlzIG1vZGUgaXMgZm9yIGFpci1nYXBwZWQgb3Igc2ltcGxlIHN0YW5kYWxvbmUgQ0RLIGRlcGxveW1lbnRzLlxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICAgICAgY29uc3QgZnNNb2QgPSByZXF1aXJlKCdmcycpO1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICAgICAgY29uc3QgcGF0aE1vZCA9IHJlcXVpcmUoJ3BhdGgnKTtcbiAgICAgICAgICBjb25zdCBhYnNQYXRoID0gcGF0aE1vZC5yZXNvbHZlKG9wdGlvbnMubG9jYWxTcGVjKTtcbiAgICAgICAgICBwcmludEluZm8oJ0xvYWRpbmcgbG9jYWwgcGlwZWxpbmUgc3BlYycsIHsgcGF0aDogYWJzUGF0aCB9KTtcbiAgICAgICAgICBpZiAoIWZzTW9kLmV4aXN0c1N5bmMoYWJzUGF0aCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTG9jYWwgc3BlYyBmaWxlIG5vdCBmb3VuZDogJHthYnNQYXRofWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByYXcgPSBmc01vZC5yZWFkRmlsZVN5bmMoYWJzUGF0aCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShyYXcpIGFzIFBhcnRpYWw8UGlwZWxpbmU+ICYgeyBwcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH07XG4gICAgICAgICAgaWYgKCFwYXJzZWQucHJvcHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTG9jYWwgc3BlYyBmaWxlIGlzIG1pc3NpbmcgcmVxdWlyZWQgJ3Byb3BzJyBmaWVsZDogJHthYnNQYXRofWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwaXBlbGluZSA9IHtcbiAgICAgICAgICAgIGlkOiBwYXJzZWQuaWQgPz8gJ2xvY2FsJyxcbiAgICAgICAgICAgIHByb2plY3Q6IHBhcnNlZC5wcm9qZWN0ID8/ICdsb2NhbC1wcm9qZWN0JyxcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogcGFyc2VkLm9yZ2FuaXphdGlvbiA/PyAnbG9jYWwtb3JnJyxcbiAgICAgICAgICAgIG9yZ0lkOiBwYXJzZWQub3JnSWQsXG4gICAgICAgICAgICBpc0RlZmF1bHQ6IHBhcnNlZC5pc0RlZmF1bHQgPz8gZmFsc2UsXG4gICAgICAgICAgICBpc0FjdGl2ZTogcGFyc2VkLmlzQWN0aXZlID8/IHRydWUsXG4gICAgICAgICAgICBwcm9wczogcGFyc2VkLnByb3BzLFxuICAgICAgICAgIH0gYXMgUGlwZWxpbmU7XG4gICAgICAgICAgcHJpbnRTdWNjZXNzKCdMb2NhbCBzcGVjIGxvYWRlZCcpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ1NvdXJjZSc6IGFic1BhdGgsXG4gICAgICAgICAgICAnUHJvamVjdCc6IHBpcGVsaW5lLnByb2plY3QsXG4gICAgICAgICAgICAnT3JnYW5pemF0aW9uJzogcGlwZWxpbmUub3JnYW5pemF0aW9uLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHByb3BzV2l0aElkcyA9IHtcbiAgICAgICAgICAgIC4uLnBpcGVsaW5lLnByb3BzLFxuICAgICAgICAgICAgLi4uKHBpcGVsaW5lLm9yZ0lkICYmIHsgb3JnSWQ6IHBpcGVsaW5lLm9yZ0lkIH0pLFxuICAgICAgICAgICAgcGlwZWxpbmVJZDogcGlwZWxpbmUuaWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSZW1vdGUgcGF0aDogZmV0Y2ggY29uZmlnIGZyb20gcGxhdGZvcm0gQVBJXG4gICAgICAgICAgcGxhdGZvcm1DbGllbnQgPSBhd2FpdCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9ucyk7XG4gICAgICAgICAgcGxhdGZvcm1Db25maWcgPSBwbGF0Zm9ybUNsaWVudC5nZXRDb25maWcoKSBhcyB7IGFwaTogeyBwaXBlbGluZVVybDogc3RyaW5nIH0gfTtcblxuICAgICAgICAgIHByaW50SW5mbygnRmV0Y2hpbmcgcGlwZWxpbmUgY29uZmlndXJhdGlvbicsIHsgaWQ6IG9wdGlvbnMuaWQgfSk7XG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBwbGF0Zm9ybUNsaWVudC5nZXQ8UGlwZWxpbmVSZXNwb25zZT4oXG4gICAgICAgICAgICBgJHtwbGF0Zm9ybUNvbmZpZy5hcGkucGlwZWxpbmVVcmx9LyR7b3B0aW9ucy5pZH1gLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBmZXRjaGVkID0gZXh0cmFjdFNpbmdsZVJlc3BvbnNlPFBpcGVsaW5lPihyZXNwb25zZSwgJ3BpcGVsaW5lJywgJ3Byb3BzJyk7XG5cbiAgICAgICAgICBpZiAoIWZldGNoZWQ/LnByb3BzKSB7XG4gICAgICAgICAgICBwcmludEVycm9yKCdJbnZhbGlkIHBpcGVsaW5lIHJlc3BvbnNlJywge1xuICAgICAgICAgICAgICBpZDogb3B0aW9ucy5pZCxcbiAgICAgICAgICAgICAgaGFzUHJvcHM6ICEhZmV0Y2hlZD8ucHJvcHMsXG4gICAgICAgICAgICAgIHJlc3BvbnNlS2V5czogcmVzcG9uc2UgPyBPYmplY3Qua2V5cyhyZXNwb25zZSkgOiAnKG51bGwpJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcmV0cmlldmUgdmFsaWQgcGlwZWxpbmUgcHJvcGVydGllcyBmb3IgSUQ6ICR7b3B0aW9ucy5pZH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcGlwZWxpbmUgPSBmZXRjaGVkO1xuXG4gICAgICAgICAgcHJpbnRTdWNjZXNzKCdQaXBlbGluZSBjb25maWd1cmF0aW9uIHJldHJpZXZlZCcpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ0lEJzogcGlwZWxpbmUuaWQsXG4gICAgICAgICAgICAnUHJvamVjdCc6IHBpcGVsaW5lLnByb2plY3QsXG4gICAgICAgICAgICAnT3JnYW5pemF0aW9uJzogcGlwZWxpbmUub3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgJ0lzIERlZmF1bHQnOiBwaXBlbGluZS5pc0RlZmF1bHQsXG4gICAgICAgICAgICAnSXMgQWN0aXZlJzogcGlwZWxpbmUuaXNBY3RpdmUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBwcm9wc1dpdGhJZHMgPSB7XG4gICAgICAgICAgICAuLi5waXBlbGluZS5wcm9wcyxcbiAgICAgICAgICAgIC4uLihwaXBlbGluZS5vcmdJZCAmJiB7IG9yZ0lkOiBwaXBlbGluZS5vcmdJZCB9KSxcbiAgICAgICAgICAgIHBpcGVsaW5lSWQ6IHBpcGVsaW5lLmlkLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyAtLXNob3ctcmVzb2x2ZWQ6IHByaW50IHJlc29sdmVkIGNvbmZpZyBhbmQgZXhpdCAobm8gQ0RLIGRlcGxveSlcbiAgICAgICAgaWYgKChvcHRpb25zIGFzIHsgc2hvd1Jlc29sdmVkPzogYm9vbGVhbiB9KS5zaG93UmVzb2x2ZWQpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgICAgIGNvbnN0IHsgcmVzb2x2ZVNlbGZSZWZlcmVuY2luZyB9ID0gcmVxdWlyZSgnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZScpO1xuICAgICAgICAgIGNvbnN0IHByb3BzQW55ID0gcHJvcHNXaXRoSWRzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICAgIGNvbnN0IHNjb3BlID0geyBtZXRhZGF0YTogcHJvcHNBbnkubWV0YWRhdGEgPz8ge30sIHZhcnM6IHByb3BzQW55LnZhcnMgPz8ge30gfTtcbiAgICAgICAgICBjb25zdCBpc1RwbCA9IChmOiBzdHJpbmcpID0+IGYgPT09ICdwcm9qZWN0TmFtZScgfHwgZi5zdGFydHNXaXRoKCdtZXRhZGF0YS4nKSB8fCBmLnN0YXJ0c1dpdGgoJ3ZhcnMuJyk7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZVNlbGZSZWZlcmVuY2luZyhwcm9wc0FueSwgc2NvcGUsIGlzVHBsLCAoZjogc3RyaW5nKSA9PiBpc1RwbChmKSA/IGYgOiBudWxsLCAncGlwZWxpbmUnKTtcbiAgICAgICAgICBpZiAocmVzdWx0LmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Jlc29sdXRpb24gZXJyb3JzOicpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHJlc3VsdC5lcnJvcnMpIGNvbnNvbGUuZXJyb3IoYCAgWyR7ZS5maWVsZCA/PyAnPyd9XSAke2UubWVzc2FnZX1gKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocHJvcHNXaXRoSWRzLCBudWxsLCAyKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5jb2RlZCA9IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KHByb3BzV2l0aElkcyksICd1dGYtOCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IG9wdGlvbnMub3V0cHV0O1xuXG4gICAgICAgIC8vIEVuc3VyZSBvdXRwdXQgZGlyZWN0b3J5IGV4aXN0c1xuICAgICAgICBwcmludEluZm8oJ1ByZXBhcmluZyBvdXRwdXQgZGlyZWN0b3J5JywgeyBwYXRoOiBvdXRwdXRQYXRoIH0pO1xuICAgICAgICBlbnN1cmVPdXRwdXREaXJlY3Rvcnkob3V0cHV0UGF0aCk7XG5cbiAgICAgICAgLy8gQnVpbGQgQ0RLIGNvbW1hbmQgKHZhbGlkYXRlIGlucHV0cyB0aGF0IGZsb3cgaW50byBzaGVsbClcbiAgICAgICAgaWYgKG9wdGlvbnMucHJvZmlsZSkgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMucHJvZmlsZSwgJ3Byb2ZpbGUnKTtcbiAgICAgICAgYXNzZXJ0U2hlbGxTYWZlKG91dHB1dFBhdGgsICdvdXRwdXQnKTtcblxuICAgICAgICBjb25zdCBzY3JpcHRQYXRoID0gcmVzb2x2ZUJvaWxlcnBsYXRlUGF0aChfX2Rpcm5hbWUpO1xuICAgICAgICBjb25zdCBwcm9maWxlQXJnID0gb3B0aW9ucy5wcm9maWxlID8gYC0tcHJvZmlsZT0ke29wdGlvbnMucHJvZmlsZX1gIDogJyc7XG4gICAgICAgIGNvbnN0IG91dHB1dEFyZyA9IGAtLW91dHB1dD0ke291dHB1dFBhdGh9YDtcbiAgICAgICAgY29uc3QgYXBwQXJnID0gYC0tYXBwPVwibm9kZSAke3NjcmlwdFBhdGh9XCJgO1xuXG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBgY2RrIGRlcGxveSAke3Byb2ZpbGVBcmd9IC0tcmVxdWlyZS1hcHByb3ZhbD0ke29wdGlvbnMucmVxdWlyZUFwcHJvdmFsfSAke291dHB1dEFyZ30gLS1ub3RpY2VzPWZhbHNlICR7YXBwQXJnfWA7XG5cbiAgICAgICAgcHJpbnRTZWN0aW9uKCdDREsgRXhlY3V0aW9uJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGN5YW4oYm9sZCgnQ29tbWFuZDonKSksIGRpbShjb21tYW5kLnNwbGl0KCcgLS0nKVswXSArICcgLi4uJykpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcblxuICAgICAgICAvLyBFeGVjdXRlIENESyBjb21tYW5kXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQoY29tbWFuZCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBzaG93T3V0cHV0OiB0cnVlLFxuICAgICAgICAgIGVudjogeyBQSVBFTElORV9QUk9QUzogZW5jb2RlZCB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdEZXBsb3ltZW50IENvbXBsZXRlJyk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICAnRHVyYXRpb24nOiBgJHtyZXN1bHQuZHVyYXRpb259bXNgLFxuICAgICAgICAgICAgJ091dHB1dCBEaXJlY3RvcnknOiBvdXRwdXRQYXRoLFxuICAgICAgICAgICAgJ1N0YXR1cyc6ICfinJMgU3VjY2VzcycsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBSZWdpc3RlciBwaXBlbGluZSBBUk4gZm9yIGV2ZW50IHJlcG9ydGluZyAobm9uLWJsb2NraW5nKS5cbiAgICAgICAgICAvLyBTa2lwcGVkIGluIC0tbG9jYWwtc3BlYyBtb2RlIHNpbmNlIHRoZXJlJ3Mgbm8gcGxhdGZvcm0gdG8gcmVnaXN0ZXIgd2l0aC5cbiAgICAgICAgICBpZiAoIXBsYXRmb3JtQ2xpZW50IHx8ICFwbGF0Zm9ybUNvbmZpZykge1xuICAgICAgICAgICAgcHJpbnRJbmZvKCdTa2lwcGluZyBwaXBlbGluZSByZWdpc3RyeSAobG9jYWwtc3BlYyBtb2RlKScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc3RzQ2xpZW50ID0gbmV3IFNUU0NsaWVudCh7IHJlZ2lvbjogcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04gfSk7XG4gICAgICAgICAgICBjb25zdCBpZGVudGl0eSA9IGF3YWl0IHN0c0NsaWVudC5zZW5kKG5ldyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQoe30pKTtcbiAgICAgICAgICAgIGNvbnN0IGFjY291bnQgPSBpZGVudGl0eS5BY2NvdW50ID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgcmVnaW9uID0gb3B0aW9ucy5yZWdpb24gfHwgcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04gfHwgJ3VzLWVhc3QtMSc7XG5cbiAgICAgICAgICAgIGNvbnN0IHBpcGVsaW5lTmFtZSA9IHBpcGVsaW5lLnBpcGVsaW5lTmFtZVxuICAgICAgICAgICAgICB8fCBgJHtwaXBlbGluZS5vcmdhbml6YXRpb259LSR7cGlwZWxpbmUucHJvamVjdH0tcGlwZWxpbmVgLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGhhc2hlZEFjY291bnQgPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoYWNjb3VudCkuZGlnZXN0KCdoZXgnKS5zbGljZSgwLCAxMik7XG4gICAgICAgICAgICBjb25zdCBwaXBlbGluZUFybiA9IGBhcm46YXdzOmNvZGVwaXBlbGluZToke3JlZ2lvbn06JHtoYXNoZWRBY2NvdW50fToke3BpcGVsaW5lTmFtZX1gO1xuXG4gICAgICAgICAgICBhd2FpdCBwbGF0Zm9ybUNsaWVudC5wb3N0KGAke3BsYXRmb3JtQ29uZmlnLmFwaS5waXBlbGluZVVybH0vcmVnaXN0cnlgLCB7XG4gICAgICAgICAgICAgIHBpcGVsaW5lSWQ6IHBpcGVsaW5lLmlkLFxuICAgICAgICAgICAgICBvcmdJZDogcGlwZWxpbmUub3JnSWQsXG4gICAgICAgICAgICAgIHBpcGVsaW5lQXJuLFxuICAgICAgICAgICAgICBwaXBlbGluZU5hbWUsXG4gICAgICAgICAgICAgIGFjY291bnRJZDogaGFzaGVkQWNjb3VudCxcbiAgICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgICBwcm9qZWN0OiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICAgICAgICBvcmdhbml6YXRpb246IHBpcGVsaW5lLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiBgJHtwaXBlbGluZS5wcm9qZWN0fS0ke3BpcGVsaW5lLm9yZ2FuaXphdGlvbn1gLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcHJpbnRTdWNjZXNzKCdQaXBlbGluZSByZWdpc3RlcmVkIGZvciBldmVudCByZXBvcnRpbmcnLCB7IGFybjogcGlwZWxpbmVBcm4gfSk7XG4gICAgICAgICAgfSBjYXRjaCAocmVnRXJyb3IpIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZygnUGlwZWxpbmUgcmVnaXN0cnkgdXBkYXRlIGZhaWxlZCAocmVwb3J0aW5nIG1heSBiZSBpbmNvbXBsZXRlKScsIHtcbiAgICAgICAgICAgICAgZXJyb3I6IHJlZ0Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyByZWdFcnJvci5tZXNzYWdlIDogU3RyaW5nKHJlZ0Vycm9yKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICBjb21tYW5kOiAnZGVwbG95JyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgcGlwZWxpbmVJZDogb3B0aW9ucy5pZCxcbiAgICAgICAgICAgIHZlcmlmeVNzbDogb3B0aW9ucy52ZXJpZnlTc2wsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"synth.d.ts","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+F5C"}
1
+ {"version":3,"file":"synth.d.ts","sourceRoot":"","sources":["../../src/commands/synth.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsG5C"}
@@ -64,10 +64,16 @@ function synth(program) {
64
64
  .option('--json', 'Output result as JSON', false)
65
65
  .option('--verify-ssl', 'Enable SSL certificate verification')
66
66
  .option('--no-verify-ssl', 'Disable SSL certificate verification')
67
+ .option('--show-resolved', 'Print the resolved pipeline config (with {{ ... }} templates expanded) and exit without running CDK', false)
67
68
  .action(async (options) => {
68
69
  const executionId = (0, command_utils_1.printCommandHeader)('CDK Synthesis');
69
70
  try {
70
71
  const pipelineId = options.id || process.env.PIPELINE_ID;
72
+ // --show-resolved: preview templates and exit
73
+ if (options.showResolved) {
74
+ await showResolvedPipeline(pipelineId, options);
75
+ return;
76
+ }
71
77
  (0, audit_log_1.auditLog)('synth', { executionId, pipelineId, output: options.output, profile: options.profile });
72
78
  (0, command_utils_1.printSslWarning)(options.verifySsl);
73
79
  // Propagate to process.env so CDK constructs (Lambda, CodeBuild) inherit it
@@ -140,4 +146,35 @@ function synth(program) {
140
146
  }
141
147
  });
142
148
  }
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc3ludGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBNkR0QyxzQkErRkM7QUF6SkQsMkRBQTBEO0FBRTFELGtEQUE4QztBQUM5QyxrREFBd0c7QUFDeEcsMERBQTZHO0FBQzdHLDBEQUFrRTtBQUNsRSx3REFBOEk7QUFFOUk7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLG1CQUFtQixDQUNoQyxVQUFrQixFQUNsQixPQUEwRjtJQUUxRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsOENBQThCLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBRWxDLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDL0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxVQUFVLEVBQUUsQ0FDMUMsQ0FBQztJQUVGLE1BQU0sUUFBUSxHQUFHLElBQUEsb0NBQXFCLEVBQVcsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVoRixJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3JCLElBQUEseUJBQVUsRUFBQyx1QkFBdUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUE0QjtRQUM1QyxHQUFHLFFBQVEsQ0FBQyxLQUFnQztRQUM1QyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsSUFBSSxVQUFVO0tBQ3RDLENBQUM7SUFDRixJQUFJLFFBQVEsQ0FBQyxLQUFLO1FBQUUsWUFBWSxDQUFDLEtBQUssR0FBRyxRQUFRLENB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QixJQUFBLDJCQUFZLEVBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUVuQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzt3QkFDekIsT0FBTyxFQUFFLElBQUk7d0JBQ2IsV0FBVzt3QkFDWCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7d0JBQ3pCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtxQkFDdkIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDZixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBQSw0QkFBYSxFQUFDO3dCQUNaLGNBQWMsRUFBRSxXQUFXO3dCQUMzQixVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJO3dCQUNsQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU07d0JBQ3hCLFFBQVEsRUFBRSxXQUFXO3FCQUN0QixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7UUFFSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUEsMkJBQVcsRUFBQyxLQUFLLEVBQUUsMkJBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7YUFDbkUsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGFzc2VydFNoZWxsU2FmZSB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHsgUGlwZWxpbmUgfSBmcm9tICcuLi90eXBlcy9waXBlbGluZSc7XG5pbXBvcnQgeyBhdWRpdExvZyB9IGZyb20gJy4uL3V0aWxzL2F1ZGl0LWxvZyc7XG5pbXBvcnQgeyBlbnN1cmVDZGtBdmFpbGFibGUsIGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQsIHJlc29sdmVCb2lsZXJwbGF0ZVBhdGggfSBmcm9tICcuLi91dGlscy9jZGstdXRpbHMnO1xuaW1wb3J0IHsgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jLCBwcmludENvbW1hbmRIZWFkZXIsIHByaW50U3NsV2FybmluZyB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlcic7XG5pbXBvcnQgeyBleHRyYWN0U2luZ2xlUmVzcG9uc2UsIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscyc7XG5cbi8qKlxuICogRmV0Y2ggcGlwZWxpbmUgY29uZmlnIGFuZCBzZXQgUElQRUxJTkVfUFJPUFMgZW52IHZhciBmb3IgdGhlIGJvaWxlcnBsYXRlIGFwcC5cbiAqIFVzZXMgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jIHdoaWNoIHN1cHBvcnRzIGFsbCB0aHJlZSBhdXRoIG1ldGhvZHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGZldGNoUGlwZWxpbmVDb25maWcoXG4gIHBpcGVsaW5lSWQ6IHN0cmluZyxcbiAgb3B0aW9uczogeyBzdG9yZVRva2Vucz86IGJvb2xlYW47IHZlcmlmeVNzbD86IGJvb2xlYW47IHJlZ2lvbj86IHN0cmluZzsgcHJvZmlsZT86IHN0cmluZyB9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNsaWVudCA9IGF3YWl0IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyhvcHRpb25zKTtcbiAgY29uc3QgY29uZmlnID0gY2xpZW50LmdldENvbmZpZygpO1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgYCR7Y29uZmlnLmFwaS5waXBlbGluZVVybH0vJHtwaXBlbGluZUlkfWAsXG4gICk7XG5cbiAgY29uc3QgcGlwZWxpbmUgPSBleHRyYWN0U2luZ2xlUmVzcG9uc2U8UGlwZWxpbmU+KHJlc3BvbnNlLCAncGlwZWxpbmUnLCAncHJvcHMnKTtcblxuICBpZiAoIXBpcGVsaW5lPy5wcm9wcykge1xuICAgIHByaW50RXJyb3IoJ1BpcGVsaW5lIGhhcyBubyBwcm9wcycsIHsgaWQ6IHBpcGVsaW5lSWQgfSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcmV0cmlldmUgcGlwZWxpbmUgcHJvcHMgZm9yIElEOiAke3BpcGVsaW5lSWR9YCk7XG4gIH1cblxuICBjb25zdCBwcm9wc1dpdGhJZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgIC4uLnBpcGVsaW5lLnByb3BzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHBpcGVsaW5lSWQ6IHBpcGVsaW5lLmlkIHx8IHBpcGVsaW5lSWQsXG4gIH07XG4gIGlmIChwaXBlbGluZS5vcmdJZCkgcHJvcHNXaXRoSWRzLm9yZ0lkID0gcGlwZWxpbmUub3JnSWQ7XG5cbiAgcHJvY2Vzcy5lbnYuUElQRUxJTkVfUFJPUFMgPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShwcm9wc1dpdGhJZHMpKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIHByaW50U3VjY2VzcygnUGlwZWxpbmUgY29uZmlndXJhdGlvbiBsb2FkZWQnKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBzeW50aGAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBSdW5zIENESyBzeW50aGVzaXMgdXNpbmcgdGhlIGJvaWxlcnBsYXRlIGFwcC4gUGlwZWxpbmUgY29uZmlnIGlzIHJlc29sdmVkIGZyb206XG4gKiAxLiAtLWlkIGZsYWcgb3IgUElQRUxJTkVfSUQgZW52IHZhciDihpIgZmV0Y2hlcyBjb25maWcgZnJvbSBwbGF0Zm9ybSBBUElcbiAqIDIuIFBJUEVMSU5FX1BST1BTIGVudiB2YXIgKHByZS1lbmNvZGVkLCBmcm9tIGRlcGxveSBjb21tYW5kKVxuICpcbiAqIEF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgKGluIHByaW9yaXR5IG9yZGVyKTpcbiAqIC0gUExBVEZPUk1fVE9LRU4gZW52IHZhclxuICogLSAtLXN0b3JlLXRva2VucyDihpIgZmV0Y2ggZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIHBpcGVsaW5lLW1hbmFnZXIgc3ludGggLS1pZCA8cGlwZWxpbmUtaWQ+IC0tbm8tdmVyaWZ5LXNzbFxuICogcGlwZWxpbmUtbWFuYWdlciBzeW50aCAtLWlkIDxwaXBlbGluZS1pZD4gLS1zdG9yZS10b2tlbnNcbiAqIHBpcGVsaW5lLW1hbmFnZXIgc3ludGggLS1xdWlldCAtLW5vLW5vdGljZXMgICAgICAgICAgIyBDb2RlUGlwZWxpbmUgKHVzZXMgZW52IHZhcnMpXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN5bnRoKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdzeW50aCcpXG4gICAgLmRlc2NyaXB0aW9uKCdSdW4gQ0RLIHN5bnRoZXNpcyB1c2luZyBwaXBlbGluZSBjb25maWd1cmF0aW9uJylcbiAgICAub3B0aW9uKCctaSwgLS1pZCA8aWQ+JywgJ1BpcGVsaW5lIElEIChvciBzZXQgUElQRUxJTkVfSUQgZW52IHZhciknKVxuICAgIC5vcHRpb24oJy0tc3RvcmUtdG9rZW5zJywgJ0F1dGhlbnRpY2F0ZSB1c2luZyB0b2tlbiBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXIgKHJlcXVpcmVzIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGVudiB2YXIpJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1vdXRwdXQgPGRpcj4nLCAnQ0RLIG91dHB1dCBkaXJlY3RvcnknLCAnY2RrLm91dCcpXG4gICAgLm9wdGlvbignLS1wcm9maWxlIDxwcm9maWxlPicsICdBV1MgcHJvZmlsZScpXG4gICAgLm9wdGlvbignLS1yZWdpb24gPHJlZ2lvbj4nLCAnQVdTIHJlZ2lvbiAoZm9yIC0tc3RvcmUtdG9rZW5zKScpXG4gICAgLm9wdGlvbignLS1xdWlldCcsICdTdXBwcmVzcyBDREsgb3V0cHV0JywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1uby1ub3RpY2VzJywgJ1N1cHByZXNzIENESyBub3RpY2VzJylcbiAgICAub3B0aW9uKCctLXZlcmJvc2UnLCAnU2hvdyB2ZXJib3NlIENESyBvdXRwdXQnLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLWpzb24nLCAnT3V0cHV0IHJlc3VsdCBhcyBKU09OJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQ0RLIFN5bnRoZXNpcycpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlkID0gb3B0aW9ucy5pZCB8fCBwcm9jZXNzLmVudi5QSVBFTElORV9JRDtcblxuICAgICAgICBhdWRpdExvZygnc3ludGgnLCB7IGV4ZWN1dGlvbklkLCBwaXBlbGluZUlkLCBvdXRwdXQ6IG9wdGlvbnMub3V0cHV0LCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG4gICAgICAgIHByaW50U3NsV2FybmluZyhvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgICAgLy8gUHJvcGFnYXRlIHRvIHByb2Nlc3MuZW52IHNvIENESyBjb25zdHJ1Y3RzIChMYW1iZGEsIENvZGVCdWlsZCkgaW5oZXJpdCBpdFxuICAgICAgICBpZiAob3B0aW9ucy52ZXJpZnlTc2wgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRCA9ICcwJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZldGNoIHBpcGVsaW5lIGNvbmZpZyBpZiBJRCBpcyBhdmFpbGFibGUgYW5kIFBJUEVMSU5FX1BST1BTIG5vdCBhbHJlYWR5IHNldFxuICAgICAgICBpZiAocGlwZWxpbmVJZCAmJiAhcHJvY2Vzcy5lbnYuUElQRUxJTkVfUFJPUFMpIHtcbiAgICAgICAgICBwcmludEluZm8oJ0ZldGNoaW5nIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24nLCB7IGlkOiBwaXBlbGluZUlkIH0pO1xuICAgICAgICAgIGF3YWl0IGZldGNoUGlwZWxpbmVDb25maWcocGlwZWxpbmVJZCwgb3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXBpcGVsaW5lSWQgJiYgIXByb2Nlc3MuZW52LlBJUEVMSU5FX1BST1BTKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKCdObyBwaXBlbGluZSBJRCBvciBQSVBFTElORV9QUk9QUyBzZXQnKTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BpcGVsaW5lIElEIGlzIHJlcXVpcmVkLiBVc2UgLS1pZCA8aWQ+IG9yIHNldCBQSVBFTElORV9JRCBlbnYgdmFyLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgZW5zdXJlQ2RrQXZhaWxhYmxlKCk7XG4gICAgICAgIHByaW50U3VjY2VzcygnQVdTIENESyBpcyBhdmFpbGFibGUnKTtcblxuICAgICAgICAvLyBCdWlsZCBjZGsgc3ludGggY29tbWFuZFxuICAgICAgICBpZiAob3B0aW9ucy5vdXRwdXQpIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLm91dHB1dCwgJ291dHB1dCcpO1xuICAgICAgICBpZiAob3B0aW9ucy5wcm9maWxlKSBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy5wcm9maWxlLCAncHJvZmlsZScpO1xuXG4gICAgICAgIGNvbnN0IGJvaWxlcnBsYXRlUGF0aCA9IHJlc29sdmVCb2lsZXJwbGF0ZVBhdGgoX19kaXJuYW1lKTtcbiAgICAgICAgY29uc3QgcGFydHMgPSBbXG4gICAgICAgICAgJ2NkayBzeW50aCcsXG4gICAgICAgICAgYC0tYXBwPVwibm9kZSAke2JvaWxlcnBsYXRlUGF0aH1cImAsXG4gICAgICAgICAgYC0tb3V0cHV0PSR7b3B0aW9ucy5vdXRwdXR9YCxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAob3B0aW9ucy5wcm9maWxlKSBwYXJ0cy5wdXNoKGAtLXByb2ZpbGU9JHtvcHRpb25zLnByb2ZpbGV9YCk7XG4gICAgICAgIGlmIChvcHRpb25zLnF1aWV0KSBwYXJ0cy5wdXNoKCctLXF1aWV0Jyk7XG4gICAgICAgIGlmIChvcHRpb25zLm5vdGljZXMgPT09IGZhbHNlKSBwYXJ0cy5wdXNoKCctLW5vLW5vdGljZXMnKTtcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkgcGFydHMucHVzaCgnLS12ZXJib3NlJyk7XG5cbiAgICAgICAgY29uc3QgY29tbWFuZCA9IHBhcnRzLmpvaW4oJyAnKTtcblxuICAgICAgICBwcmludEluZm8oJ0V4ZWN1dGluZycsIHsgY29tbWFuZDogKGNvbW1hbmQuc3BsaXQoJy0tYXBwJylbMF0gPz8gJycpLnRyaW0oKSArICcgLi4uJyB9KTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQoY29tbWFuZCwge1xuICAgICAgICAgIHNob3dPdXRwdXQ6ICFvcHRpb25zLnF1aWV0LFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignU3ludGhlc2lzIENvbXBsZXRlJyk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgICAgZHVyYXRpb246IHJlc3VsdC5kdXJhdGlvbixcbiAgICAgICAgICAgICAgb3V0cHV0OiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgICAgIH0sIG51bGwsIDIpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAgICdFeGVjdXRpb24gSUQnOiBleGVjdXRpb25JZCxcbiAgICAgICAgICAgICAgJ0R1cmF0aW9uJzogYCR7cmVzdWx0LmR1cmF0aW9ufW1zYCxcbiAgICAgICAgICAgICAgJ091dHB1dCc6IG9wdGlvbnMub3V0cHV0LFxuICAgICAgICAgICAgICAnU3RhdHVzJzogJ+KckyBTdWNjZXNzJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdzeW50aCcsIGV4ZWN1dGlvbklkLCBwaXBlbGluZUlkOiBvcHRpb25zLmlkIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
149
+ /**
150
+ * Fetch the pipeline by ID, apply pass-1 self-referencing template
151
+ * resolution, and print it to stdout. Used by `synth --show-resolved`
152
+ * and `deploy --show-resolved` to preview substitution before running CDK.
153
+ */
154
+ async function showResolvedPipeline(pipelineId, options) {
155
+ if (!pipelineId) {
156
+ throw new Error('--show-resolved requires --id or PIPELINE_ID env var');
157
+ }
158
+ await fetchPipelineConfig(pipelineId, options);
159
+ // fetchPipelineConfig writes PIPELINE_PROPS base64-encoded on success
160
+ const encoded = process.env.PIPELINE_PROPS;
161
+ if (!encoded)
162
+ throw new Error('Failed to fetch pipeline configuration');
163
+ const decoded = JSON.parse(Buffer.from(encoded, 'base64').toString('utf-8'));
164
+ // Lazy import to avoid pulling pipeline-core into every CLI invocation
165
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
166
+ const { resolveSelfReferencing } = require('@pipeline-builder/pipeline-core');
167
+ const scope = { metadata: decoded.metadata ?? {}, vars: decoded.vars ?? {} };
168
+ const isTemplatable = (f) => f === 'projectName' || f.startsWith('metadata.') || f.startsWith('vars.');
169
+ const fieldToScope = (f) => isTemplatable(f) ? f : null;
170
+ const result = resolveSelfReferencing(decoded, scope, isTemplatable, fieldToScope, 'pipeline');
171
+ if (result.errors.length) {
172
+ console.error('Resolution errors:');
173
+ for (const e of result.errors) {
174
+ console.error(` [${e.field ?? '?'}] ${e.message}`);
175
+ }
176
+ process.exit(1);
177
+ }
178
+ console.log(JSON.stringify(decoded, null, 2));
179
+ }
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc3ludGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBNkR0QyxzQkFzR0M7QUFoS0QsMkRBQTBEO0FBRTFELGtEQUE4QztBQUM5QyxrREFBd0c7QUFDeEcsMERBQTZHO0FBQzdHLDBEQUFrRTtBQUNsRSx3REFBOEk7QUFFOUk7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLG1CQUFtQixDQUNoQyxVQUFrQixFQUNsQixPQUEwRjtJQUUxRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsOENBQThCLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBRWxDLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDL0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxVQUFVLEVBQUUsQ0FDMUMsQ0FBQztJQUVGLE1BQU0sUUFBUSxHQUFHLElBQUEsb0NBQXFCLEVBQVcsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVoRixJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3JCLElBQUEseUJBQVUsRUFBQyx1QkFBdUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUE0QjtRQUM1QyxHQUFHLFFBQVEsQ0FBQyxLQUFnQztRQUM1QyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsSUFBSSxVQUFVO0tBQ3RDLENBQUM7SUFDRixJQUFJLFFBQVEsQ0FBQyxLQUFLO1FBQUUsWUFBWSxDQUFDLEtBQUssR0FBRyxRQUFRLENB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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDaEUsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRS9GLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDcEMsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBhc3NlcnRTaGVsbFNhZmUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFBpcGVsaW5lIH0gZnJvbSAnLi4vdHlwZXMvcGlwZWxpbmUnO1xuaW1wb3J0IHsgYXVkaXRMb2cgfSBmcm9tICcuLi91dGlscy9hdWRpdC1sb2cnO1xuaW1wb3J0IHsgZW5zdXJlQ2RrQXZhaWxhYmxlLCBleGVjdXRlQ2RrU2hlbGxDb21tYW5kLCByZXNvbHZlQm9pbGVycGxhdGVQYXRoIH0gZnJvbSAnLi4vdXRpbHMvY2RrLXV0aWxzJztcbmltcG9ydCB7IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYywgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludFNzbFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXInO1xuaW1wb3J0IHsgZXh0cmFjdFNpbmdsZVJlc3BvbnNlLCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMnO1xuXG4vKipcbiAqIEZldGNoIHBpcGVsaW5lIGNvbmZpZyBhbmQgc2V0IFBJUEVMSU5FX1BST1BTIGVudiB2YXIgZm9yIHRoZSBib2lsZXJwbGF0ZSBhcHAuXG4gKiBVc2VzIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyB3aGljaCBzdXBwb3J0cyBhbGwgdGhyZWUgYXV0aCBtZXRob2RzLlxuICovXG5hc3luYyBmdW5jdGlvbiBmZXRjaFBpcGVsaW5lQ29uZmlnKFxuICBwaXBlbGluZUlkOiBzdHJpbmcsXG4gIG9wdGlvbnM6IHsgc3RvcmVUb2tlbnM/OiBib29sZWFuOyB2ZXJpZnlTc2w/OiBib29sZWFuOyByZWdpb24/OiBzdHJpbmc7IHByb2ZpbGU/OiBzdHJpbmcgfSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjbGllbnQgPSBhd2FpdCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9ucyk7XG4gIGNvbnN0IGNvbmZpZyA9IGNsaWVudC5nZXRDb25maWcoKTtcblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgIGAke2NvbmZpZy5hcGkucGlwZWxpbmVVcmx9LyR7cGlwZWxpbmVJZH1gLFxuICApO1xuXG4gIGNvbnN0IHBpcGVsaW5lID0gZXh0cmFjdFNpbmdsZVJlc3BvbnNlPFBpcGVsaW5lPihyZXNwb25zZSwgJ3BpcGVsaW5lJywgJ3Byb3BzJyk7XG5cbiAgaWYgKCFwaXBlbGluZT8ucHJvcHMpIHtcbiAgICBwcmludEVycm9yKCdQaXBlbGluZSBoYXMgbm8gcHJvcHMnLCB7IGlkOiBwaXBlbGluZUlkIH0pO1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJldHJpZXZlIHBpcGVsaW5lIHByb3BzIGZvciBJRDogJHtwaXBlbGluZUlkfWApO1xuICB9XG5cbiAgY29uc3QgcHJvcHNXaXRoSWRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAuLi5waXBlbGluZS5wcm9wcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBwaXBlbGluZUlkOiBwaXBlbGluZS5pZCB8fCBwaXBlbGluZUlkLFxuICB9O1xuICBpZiAocGlwZWxpbmUub3JnSWQpIHByb3BzV2l0aElkcy5vcmdJZCA9IHBpcGVsaW5lLm9yZ0lkO1xuXG4gIHByb2Nlc3MuZW52LlBJUEVMSU5FX1BST1BTID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkocHJvcHNXaXRoSWRzKSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIGNvbmZpZ3VyYXRpb24gbG9hZGVkJyk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgc3ludGhgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogUnVucyBDREsgc3ludGhlc2lzIHVzaW5nIHRoZSBib2lsZXJwbGF0ZSBhcHAuIFBpcGVsaW5lIGNvbmZpZyBpcyByZXNvbHZlZCBmcm9tOlxuICogMS4gLS1pZCBmbGFnIG9yIFBJUEVMSU5FX0lEIGVudiB2YXIg4oaSIGZldGNoZXMgY29uZmlnIGZyb20gcGxhdGZvcm0gQVBJXG4gKiAyLiBQSVBFTElORV9QUk9QUyBlbnYgdmFyIChwcmUtZW5jb2RlZCwgZnJvbSBkZXBsb3kgY29tbWFuZClcbiAqXG4gKiBBdXRoZW50aWNhdGlvbiBtZXRob2RzIChpbiBwcmlvcml0eSBvcmRlcik6XG4gKiAtIFBMQVRGT1JNX1RPS0VOIGVudiB2YXJcbiAqIC0gLS1zdG9yZS10b2tlbnMg4oaSIGZldGNoIGZyb20gQVdTIFNlY3JldHMgTWFuYWdlclxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBiYXNoXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN5bnRoIC0taWQgPHBpcGVsaW5lLWlkPiAtLW5vLXZlcmlmeS1zc2xcbiAqIHBpcGVsaW5lLW1hbmFnZXIgc3ludGggLS1pZCA8cGlwZWxpbmUtaWQ+IC0tc3RvcmUtdG9rZW5zXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHN5bnRoIC0tcXVpZXQgLS1uby1ub3RpY2VzICAgICAgICAgICMgQ29kZVBpcGVsaW5lICh1c2VzIGVudiB2YXJzKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzeW50aChwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnc3ludGgnKVxuICAgIC5kZXNjcmlwdGlvbignUnVuIENESyBzeW50aGVzaXMgdXNpbmcgcGlwZWxpbmUgY29uZmlndXJhdGlvbicpXG4gICAgLm9wdGlvbignLWksIC0taWQgPGlkPicsICdQaXBlbGluZSBJRCAob3Igc2V0IFBJUEVMSU5FX0lEIGVudiB2YXIpJylcbiAgICAub3B0aW9uKCctLXN0b3JlLXRva2VucycsICdBdXRoZW50aWNhdGUgdXNpbmcgdG9rZW4gZnJvbSBBV1MgU2VjcmV0cyBNYW5hZ2VyIChyZXF1aXJlcyBQTEFURk9STV9TRUNSRVRfTkFNRSBlbnYgdmFyKScsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tb3V0cHV0IDxkaXI+JywgJ0NESyBvdXRwdXQgZGlyZWN0b3J5JywgJ2Nkay5vdXQnKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIHByb2ZpbGUnKVxuICAgIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGZvciAtLXN0b3JlLXRva2VucyknKVxuICAgIC5vcHRpb24oJy0tcXVpZXQnLCAnU3VwcHJlc3MgQ0RLIG91dHB1dCcsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tbm8tbm90aWNlcycsICdTdXBwcmVzcyBDREsgbm90aWNlcycpXG4gICAgLm9wdGlvbignLS12ZXJib3NlJywgJ1Nob3cgdmVyYm9zZSBDREsgb3V0cHV0JywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCByZXN1bHQgYXMgSlNPTicsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1zaG93LXJlc29sdmVkJywgJ1ByaW50IHRoZSByZXNvbHZlZCBwaXBlbGluZSBjb25maWcgKHdpdGgge3sgLi4uIH19IHRlbXBsYXRlcyBleHBhbmRlZCkgYW5kIGV4aXQgd2l0aG91dCBydW5uaW5nIENESycsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdDREsgU3ludGhlc2lzJyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWQgPSBvcHRpb25zLmlkIHx8IHByb2Nlc3MuZW52LlBJUEVMSU5FX0lEO1xuXG4gICAgICAgIC8vIC0tc2hvdy1yZXNvbHZlZDogcHJldmlldyB0ZW1wbGF0ZXMgYW5kIGV4aXRcbiAgICAgICAgaWYgKG9wdGlvbnMuc2hvd1Jlc29sdmVkKSB7XG4gICAgICAgICAgYXdhaXQgc2hvd1Jlc29sdmVkUGlwZWxpbmUocGlwZWxpbmVJZCwgb3B0aW9ucyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYXVkaXRMb2coJ3N5bnRoJywgeyBleGVjdXRpb25JZCwgcGlwZWxpbmVJZCwgb3V0cHV0OiBvcHRpb25zLm91dHB1dCwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIC8vIFByb3BhZ2F0ZSB0byBwcm9jZXNzLmVudiBzbyBDREsgY29uc3RydWN0cyAoTGFtYmRhLCBDb2RlQnVpbGQpIGluaGVyaXQgaXRcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyaWZ5U3NsID09PSBmYWxzZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQgPSAnMCc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGZXRjaCBwaXBlbGluZSBjb25maWcgaWYgSUQgaXMgYXZhaWxhYmxlIGFuZCBQSVBFTElORV9QUk9QUyBub3QgYWxyZWFkeSBzZXRcbiAgICAgICAgaWYgKHBpcGVsaW5lSWQgJiYgIXByb2Nlc3MuZW52LlBJUEVMSU5FX1BST1BTKSB7XG4gICAgICAgICAgcHJpbnRJbmZvKCdGZXRjaGluZyBwaXBlbGluZSBjb25maWd1cmF0aW9uJywgeyBpZDogcGlwZWxpbmVJZCB9KTtcbiAgICAgICAgICBhd2FpdCBmZXRjaFBpcGVsaW5lQ29uZmlnKHBpcGVsaW5lSWQsIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2UgaWYgKCFwaXBlbGluZUlkICYmICFwcm9jZXNzLmVudi5QSVBFTElORV9QUk9QUykge1xuICAgICAgICAgIHByaW50V2FybmluZygnTm8gcGlwZWxpbmUgSUQgb3IgUElQRUxJTkVfUFJPUFMgc2V0Jyk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQaXBlbGluZSBJRCBpcyByZXF1aXJlZC4gVXNlIC0taWQgPGlkPiBvciBzZXQgUElQRUxJTkVfSUQgZW52IHZhci4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVuc3VyZUNka0F2YWlsYWJsZSgpO1xuICAgICAgICBwcmludFN1Y2Nlc3MoJ0FXUyBDREsgaXMgYXZhaWxhYmxlJyk7XG5cbiAgICAgICAgLy8gQnVpbGQgY2RrIHN5bnRoIGNvbW1hbmRcbiAgICAgICAgaWYgKG9wdGlvbnMub3V0cHV0KSBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy5vdXRwdXQsICdvdXRwdXQnKTtcbiAgICAgICAgaWYgKG9wdGlvbnMucHJvZmlsZSkgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMucHJvZmlsZSwgJ3Byb2ZpbGUnKTtcblxuICAgICAgICBjb25zdCBib2lsZXJwbGF0ZVBhdGggPSByZXNvbHZlQm9pbGVycGxhdGVQYXRoKF9fZGlybmFtZSk7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gW1xuICAgICAgICAgICdjZGsgc3ludGgnLFxuICAgICAgICAgIGAtLWFwcD1cIm5vZGUgJHtib2lsZXJwbGF0ZVBhdGh9XCJgLFxuICAgICAgICAgIGAtLW91dHB1dD0ke29wdGlvbnMub3V0cHV0fWAsXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKG9wdGlvbnMucHJvZmlsZSkgcGFydHMucHVzaChgLS1wcm9maWxlPSR7b3B0aW9ucy5wcm9maWxlfWApO1xuICAgICAgICBpZiAob3B0aW9ucy5xdWlldCkgcGFydHMucHVzaCgnLS1xdWlldCcpO1xuICAgICAgICBpZiAob3B0aW9ucy5ub3RpY2VzID09PSBmYWxzZSkgcGFydHMucHVzaCgnLS1uby1ub3RpY2VzJyk7XG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHBhcnRzLnB1c2goJy0tdmVyYm9zZScpO1xuXG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBwYXJ0cy5qb2luKCcgJyk7XG5cbiAgICAgICAgcHJpbnRJbmZvKCdFeGVjdXRpbmcnLCB7IGNvbW1hbmQ6IChjb21tYW5kLnNwbGl0KCctLWFwcCcpWzBdID8/ICcnKS50cmltKCkgKyAnIC4uLicgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBleGVjdXRlQ2RrU2hlbGxDb21tYW5kKGNvbW1hbmQsIHtcbiAgICAgICAgICBzaG93T3V0cHV0OiAhb3B0aW9ucy5xdWlldCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFNlY3Rpb24oJ1N5bnRoZXNpcyBDb21wbGV0ZScpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiByZXN1bHQuZHVyYXRpb24sXG4gICAgICAgICAgICAgIG91dHB1dDogb3B0aW9ucy5vdXRwdXQsXG4gICAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICAgICdEdXJhdGlvbic6IGAke3Jlc3VsdC5kdXJhdGlvbn1tc2AsXG4gICAgICAgICAgICAgICdPdXRwdXQnOiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgICAgICAgJ1N0YXR1cyc6ICfinJMgU3VjY2VzcycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnc3ludGgnLCBleGVjdXRpb25JZCwgcGlwZWxpbmVJZDogb3B0aW9ucy5pZCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cblxuLyoqXG4gKiBGZXRjaCB0aGUgcGlwZWxpbmUgYnkgSUQsIGFwcGx5IHBhc3MtMSBzZWxmLXJlZmVyZW5jaW5nIHRlbXBsYXRlXG4gKiByZXNvbHV0aW9uLCBhbmQgcHJpbnQgaXQgdG8gc3Rkb3V0LiBVc2VkIGJ5IGBzeW50aCAtLXNob3ctcmVzb2x2ZWRgXG4gKiBhbmQgYGRlcGxveSAtLXNob3ctcmVzb2x2ZWRgIHRvIHByZXZpZXcgc3Vic3RpdHV0aW9uIGJlZm9yZSBydW5uaW5nIENESy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2hvd1Jlc29sdmVkUGlwZWxpbmUoXG4gIHBpcGVsaW5lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9uczogeyBwcm9maWxlPzogc3RyaW5nOyByZWdpb24/OiBzdHJpbmc7IHN0b3JlVG9rZW5zPzogYm9vbGVhbjsgdmVyaWZ5U3NsPzogYm9vbGVhbiB9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghcGlwZWxpbmVJZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignLS1zaG93LXJlc29sdmVkIHJlcXVpcmVzIC0taWQgb3IgUElQRUxJTkVfSUQgZW52IHZhcicpO1xuICB9XG4gIGF3YWl0IGZldGNoUGlwZWxpbmVDb25maWcocGlwZWxpbmVJZCwgb3B0aW9ucyk7XG4gIC8vIGZldGNoUGlwZWxpbmVDb25maWcgd3JpdGVzIFBJUEVMSU5FX1BST1BTIGJhc2U2NC1lbmNvZGVkIG9uIHN1Y2Nlc3NcbiAgY29uc3QgZW5jb2RlZCA9IHByb2Nlc3MuZW52LlBJUEVMSU5FX1BST1BTO1xuICBpZiAoIWVuY29kZWQpIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGZldGNoIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24nKTtcbiAgY29uc3QgZGVjb2RlZCA9IEpTT04ucGFyc2UoQnVmZmVyLmZyb20oZW5jb2RlZCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGYtOCcpKTtcblxuICAvLyBMYXp5IGltcG9ydCB0byBhdm9pZCBwdWxsaW5nIHBpcGVsaW5lLWNvcmUgaW50byBldmVyeSBDTEkgaW52b2NhdGlvblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCB7IHJlc29sdmVTZWxmUmVmZXJlbmNpbmcgfSA9IHJlcXVpcmUoJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUnKTtcbiAgY29uc3Qgc2NvcGUgPSB7IG1ldGFkYXRhOiBkZWNvZGVkLm1ldGFkYXRhID8/IHt9LCB2YXJzOiBkZWNvZGVkLnZhcnMgPz8ge30gfTtcbiAgY29uc3QgaXNUZW1wbGF0YWJsZSA9IChmOiBzdHJpbmcpID0+XG4gICAgZiA9PT0gJ3Byb2plY3ROYW1lJyB8fCBmLnN0YXJ0c1dpdGgoJ21ldGFkYXRhLicpIHx8IGYuc3RhcnRzV2l0aCgndmFycy4nKTtcbiAgY29uc3QgZmllbGRUb1Njb3BlID0gKGY6IHN0cmluZykgPT4gaXNUZW1wbGF0YWJsZShmKSA/IGYgOiBudWxsO1xuICBjb25zdCByZXN1bHQgPSByZXNvbHZlU2VsZlJlZmVyZW5jaW5nKGRlY29kZWQsIHNjb3BlLCBpc1RlbXBsYXRhYmxlLCBmaWVsZFRvU2NvcGUsICdwaXBlbGluZScpO1xuXG4gIGlmIChyZXN1bHQuZXJyb3JzLmxlbmd0aCkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1Jlc29sdXRpb24gZXJyb3JzOicpO1xuICAgIGZvciAoY29uc3QgZSBvZiByZXN1bHQuZXJyb3JzKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAgIFske2UuZmllbGQgPz8gJz8nfV0gJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkZWNvZGVkLCBudWxsLCAyKSk7XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Register the `validate-templates` command.
4
+ *
5
+ * Usage:
6
+ * pipeline-manager validate-templates --pipeline <uuid>
7
+ * pipeline-manager validate-templates --plugin <name:version>
8
+ * pipeline-manager validate-templates --file ./plugin-spec.yaml
9
+ */
10
+ export declare function validateTemplatesCommand(program: Command): void;
11
+ //# sourceMappingURL=validate-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-templates.d.ts","sourceRoot":"","sources":["../../src/commands/validate-templates.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqF/D"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ // Copyright 2026 Pipeline Builder Contributors
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ var __importDefault = (this && this.__importDefault) || function (mod) {
5
+ return (mod && mod.__esModule) ? mod : { "default": mod };
6
+ };
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.validateTemplatesCommand = validateTemplatesCommand;
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const yaml_1 = __importDefault(require("yaml"));
12
+ const error_handler_1 = require("../utils/error-handler");
13
+ const command_utils_1 = require("../utils/command-utils");
14
+ const output_utils_1 = require("../utils/output-utils");
15
+ /**
16
+ * Register the `validate-templates` command.
17
+ *
18
+ * Usage:
19
+ * pipeline-manager validate-templates --pipeline <uuid>
20
+ * pipeline-manager validate-templates --plugin <name:version>
21
+ * pipeline-manager validate-templates --file ./plugin-spec.yaml
22
+ */
23
+ function validateTemplatesCommand(program) {
24
+ program
25
+ .command('validate-templates')
26
+ .description('Parse and validate {{ ... }} templates in a pipeline or plugin spec')
27
+ .option('--pipeline <id>', 'Validate the pipeline with this ID')
28
+ .option('--plugin <name:version>', 'Validate the plugin with this name and version')
29
+ .option('--file <path>', 'Validate a local plugin-spec.yaml or pipeline.json file')
30
+ .option('--verify-ssl', 'Enable SSL certificate verification')
31
+ .option('--no-verify-ssl', 'Disable SSL certificate verification')
32
+ .action(async (options) => {
33
+ const executionId = (0, command_utils_1.printCommandHeader)('Validate Templates');
34
+ try {
35
+ (0, command_utils_1.printSslWarning)(options.verifySsl);
36
+ if (!options.pipeline && !options.plugin && !options.file) {
37
+ throw new Error('One of --pipeline, --plugin, or --file is required');
38
+ }
39
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
40
+ const core = require('@pipeline-builder/pipeline-core');
41
+ const problems = [];
42
+ if (options.file) {
43
+ const filePath = path_1.default.resolve(options.file);
44
+ const text = fs_1.default.readFileSync(filePath, 'utf-8');
45
+ const doc = filePath.endsWith('.json') ? JSON.parse(text) : yaml_1.default.parse(text);
46
+ // Guess: if `pluginType` is present, treat as plugin spec; else pipeline
47
+ const isPlugin = typeof doc.pluginType === 'string';
48
+ const errors = isPlugin
49
+ ? validatePluginDoc(core, doc)
50
+ : validatePipelineDoc(core, doc);
51
+ if (errors.length)
52
+ problems.push({ source: filePath, errors });
53
+ }
54
+ if (options.pipeline) {
55
+ (0, output_utils_1.printInfo)('Fetching pipeline', { id: options.pipeline });
56
+ const client = await (0, command_utils_1.createAuthenticatedClientAsync)(options);
57
+ const cfg = client.getConfig();
58
+ const res = await client.get(`${cfg.api.pipelineUrl}/${options.pipeline}`);
59
+ const doc = res.pipeline?.props
60
+ ?? res.data?.pipeline?.props;
61
+ if (!doc)
62
+ throw new Error(`Pipeline ${options.pipeline} not found`);
63
+ const errors = validatePipelineDoc(core, doc);
64
+ if (errors.length)
65
+ problems.push({ source: `pipeline/${options.pipeline}`, errors });
66
+ }
67
+ if (options.plugin) {
68
+ const [name, version] = options.plugin.split(':');
69
+ if (!name || !version)
70
+ throw new Error('--plugin requires <name:version> format');
71
+ (0, output_utils_1.printInfo)('Fetching plugin', { name, version });
72
+ const client = await (0, command_utils_1.createAuthenticatedClientAsync)(options);
73
+ const cfg = client.getConfig();
74
+ const res = await client.get(`${cfg.api.pluginUrl}/find?name=${encodeURIComponent(name)}&version=${encodeURIComponent(version)}`);
75
+ const doc = res.plugin
76
+ ?? res.data?.plugin;
77
+ if (!doc)
78
+ throw new Error(`Plugin ${name}:${version} not found`);
79
+ const errors = validatePluginDoc(core, doc);
80
+ if (errors.length)
81
+ problems.push({ source: `plugin/${name}:${version}`, errors });
82
+ }
83
+ if (problems.length === 0) {
84
+ (0, output_utils_1.printSuccess)('All templates valid', { executionId });
85
+ return;
86
+ }
87
+ (0, output_utils_1.printWarning)(`Found ${problems.reduce((a, p) => a + p.errors.length, 0)} template error(s):`);
88
+ for (const p of problems) {
89
+ (0, output_utils_1.printError)(p.source);
90
+ for (const e of p.errors) {
91
+ console.log(` [${e.field ?? '?'}] ${e.message}${e.code ? ` (${e.code})` : ''}`);
92
+ }
93
+ }
94
+ process.exit(1);
95
+ }
96
+ catch (err) {
97
+ (0, error_handler_1.handleError)(err, error_handler_1.ERROR_CODES.API_REQUEST, {
98
+ debug: program.opts().debug,
99
+ exit: true,
100
+ context: { command: 'validate-templates', executionId },
101
+ });
102
+ }
103
+ });
104
+ }
105
+ function validatePluginDoc(core, doc) {
106
+ const isTpl = (f) => f === 'description' ||
107
+ f.startsWith('commands') ||
108
+ f.startsWith('installCommands') ||
109
+ f.startsWith('env.') || f.startsWith('env[') ||
110
+ f.startsWith('buildArgs.') || f.startsWith('buildArgs[');
111
+ const isKnown = core.allowedScopeRoots(['pipeline', 'plugin', 'env']);
112
+ const { errors } = core.validateTemplates(doc, isTpl, isKnown);
113
+ return errors;
114
+ }
115
+ function validatePipelineDoc(core, doc) {
116
+ const isTpl = (f) => f === 'projectName' ||
117
+ f.startsWith('metadata.') || f.startsWith('metadata[') ||
118
+ f.startsWith('vars.') || f.startsWith('vars[');
119
+ const isKnown = core.allowedScopeRoots(['metadata', 'vars']);
120
+ const { errors } = core.validateTemplates(doc, isTpl, isKnown);
121
+ const cycles = core.detectCycles(doc, isTpl, (f) => isTpl(f) ? f : null);
122
+ return [...errors, ...cycles];
123
+ }
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtdGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3ZhbGlkYXRlLXRlbXBsYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7Ozs7QUF5QnRDLDREQXFGQztBQTVHRCw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBRXhCLGdEQUF3QjtBQUN4QiwwREFBa0U7QUFDbEUsMERBQTZHO0FBQzdHLHdEQUEwRjtBQVMxRjs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQUMsT0FBZ0I7SUFDdkQsT0FBTztTQUNKLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztTQUM3QixXQUFXLENBQUMscUVBQXFFLENBQUM7U0FDbEYsTUFBTSxDQUFDLGlCQUFpQixFQUFFLG9DQUFvQyxDQUFDO1NBQy9ELE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxnREFBZ0QsQ0FBQztTQUNuRixNQUFNLENBQUMsZUFBZSxFQUFFLHlEQUF5RCxDQUFDO1NBQ2xGLE1BQU0sQ0FBQyxjQUFjLEVBQUUscUNBQXFDLENBQUM7U0FDN0QsTUFBTSxDQUFDLGlCQUFpQixFQUFFLHNDQUFzQyxDQUFDO1NBQ2pFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBd0IsRUFBRSxFQUFFO1FBQ3pDLE1BQU0sV0FBVyxHQUFHLElBQUEsa0NBQWtCLEVBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUM7WUFDSCxJQUFBLCtCQUFlLEVBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRW5DLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDMUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7WUFFRCxpRUFBaUU7WUFDakUsTUFBTSxJQUFJ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TSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLElBQXlCLEVBQUUsR0FBWTtJQUNsRSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQzFCLENBQUMsS0FBSyxhQUFhO1FBQ25CLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7UUFDdEQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzdELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRixPQUFPLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IFlBTUwgZnJvbSAneWFtbCc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nLCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzJztcbmltcG9ydCB7IHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMnO1xuXG5pbnRlcmZhY2UgVmFsaWRhdGVPcHRpb25zIHtcbiAgcGlwZWxpbmU/OiBzdHJpbmc7XG4gIHBsdWdpbj86IHN0cmluZztcbiAgZmlsZT86IHN0cmluZztcbiAgdmVyaWZ5U3NsPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZWdpc3RlciB0aGUgYHZhbGlkYXRlLXRlbXBsYXRlc2AgY29tbWFuZC5cbiAqXG4gKiBVc2FnZTpcbiAqICAgcGlwZWxpbmUtbWFuYWdlciB2YWxpZGF0ZS10ZW1wbGF0ZXMgLS1waXBlbGluZSA8dXVpZD5cbiAqICAgcGlwZWxpbmUtbWFuYWdlciB2YWxpZGF0ZS10ZW1wbGF0ZXMgLS1wbHVnaW4gPG5hbWU6dmVyc2lvbj5cbiAqICAgcGlwZWxpbmUtbWFuYWdlciB2YWxpZGF0ZS10ZW1wbGF0ZXMgLS1maWxlIC4vcGx1Z2luLXNwZWMueWFtbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUZW1wbGF0ZXNDb21tYW5kKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCd2YWxpZGF0ZS10ZW1wbGF0ZXMnKVxuICAgIC5kZXNjcmlwdGlvbignUGFyc2UgYW5kIHZhbGlkYXRlIHt7IC4uLiB9fSB0ZW1wbGF0ZXMgaW4gYSBwaXBlbGluZSBvciBwbHVnaW4gc3BlYycpXG4gICAgLm9wdGlvbignLS1waXBlbGluZSA8aWQ+JywgJ1ZhbGlkYXRlIHRoZSBwaXBlbGluZSB3aXRoIHRoaXMgSUQnKVxuICAgIC5vcHRpb24oJy0tcGx1Z2luIDxuYW1lOnZlcnNpb24+JywgJ1ZhbGlkYXRlIHRoZSBwbHVnaW4gd2l0aCB0aGlzIG5hbWUgYW5kIHZlcnNpb24nKVxuICAgIC5vcHRpb24oJy0tZmlsZSA8cGF0aD4nLCAnVmFsaWRhdGUgYSBsb2NhbCBwbHVnaW4tc3BlYy55YW1sIG9yIHBpcGVsaW5lLmpzb24gZmlsZScpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBWYWxpZGF0ZU9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdWYWxpZGF0ZSBUZW1wbGF0ZXMnKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHByaW50U3NsV2FybmluZyhvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLnBpcGVsaW5lICYmICFvcHRpb25zLnBsdWdpbiAmJiAhb3B0aW9ucy5maWxlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdPbmUgb2YgLS1waXBlbGluZSwgLS1wbHVnaW4sIG9yIC0tZmlsZSBpcyByZXF1aXJlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICAgICAgY29uc3QgY29yZSA9IHJlcXVpcmUoJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUnKTtcblxuICAgICAgICBjb25zdCBwcm9ibGVtczogQXJyYXk8eyBzb3VyY2U6IHN0cmluZzsgZXJyb3JzOiB7IGZpZWxkPzogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmc7IGNvZGU/OiBzdHJpbmcgfVtdIH0+ID0gW107XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuZmlsZSkge1xuICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMuZmlsZSk7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgY29uc3QgZG9jID0gZmlsZVBhdGguZW5kc1dpdGgoJy5qc29uJykgPyBKU09OLnBhcnNlKHRleHQpIDogWUFNTC5wYXJzZSh0ZXh0KTtcblxuICAgICAgICAgIC8vIEd1ZXNzOiBpZiBgcGx1Z2luVHlwZWAgaXMgcHJlc2VudCwgdHJlYXQgYXMgcGx1Z2luIHNwZWM7IGVsc2UgcGlwZWxpbmVcbiAgICAgICAgICBjb25zdCBpc1BsdWdpbiA9IHR5cGVvZiAoZG9jIGFzIHsgcGx1Z2luVHlwZT86IHVua25vd24gfSkucGx1Z2luVHlwZSA9PT0gJ3N0cmluZyc7XG4gICAgICAgICAgY29uc3QgZXJyb3JzID0gaXNQbHVnaW5cbiAgICAgICAgICAgID8gdmFsaWRhdGVQbHVnaW5Eb2MoY29yZSwgZG9jKVxuICAgICAgICAgICAgOiB2YWxpZGF0ZVBpcGVsaW5lRG9jKGNvcmUsIGRvYyk7XG4gICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHByb2JsZW1zLnB1c2goeyBzb3VyY2U6IGZpbGVQYXRoLCBlcnJvcnMgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5waXBlbGluZSkge1xuICAgICAgICAgIHByaW50SW5mbygnRmV0Y2hpbmcgcGlwZWxpbmUnLCB7IGlkOiBvcHRpb25zLnBpcGVsaW5lIH0pO1xuICAgICAgICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyhvcHRpb25zKTtcbiAgICAgICAgICBjb25zdCBjZmcgPSBjbGllbnQuZ2V0Q29uZmlnKCk7XG4gICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgY2xpZW50LmdldDx7IHBpcGVsaW5lPzogeyBwcm9wczogdW5rbm93biB9IH0+KGAke2NmZy5hcGkucGlwZWxpbmVVcmx9LyR7b3B0aW9ucy5waXBlbGluZX1gKTtcbiAgICAgICAgICBjb25zdCBkb2MgPSAocmVzIGFzIHsgcGlwZWxpbmU/OiB7IHByb3BzOiB1bmtub3duIH0gfSkucGlwZWxpbmU/LnByb3BzXG4gICAgICAgICAgICA/PyAocmVzIGFzIHsgZGF0YT86IHsgcGlwZWxpbmU/OiB7IHByb3BzOiB1bmtub3duIH0gfSB9KS5kYXRhPy5waXBlbGluZT8ucHJvcHM7XG4gICAgICAgICAgaWYgKCFkb2MpIHRocm93IG5ldyBFcnJvcihgUGlwZWxpbmUgJHtvcHRpb25zLnBpcGVsaW5lfSBub3QgZm91bmRgKTtcbiAgICAgICAgICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZVBpcGVsaW5lRG9jKGNvcmUsIGRvYyk7XG4gICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHByb2JsZW1zLnB1c2goeyBzb3VyY2U6IGBwaXBlbGluZS8ke29wdGlvbnMucGlwZWxpbmV9YCwgZXJyb3JzIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMucGx1Z2luKSB7XG4gICAgICAgICAgY29uc3QgW25hbWUsIHZlcnNpb25dID0gb3B0aW9ucy5wbHVnaW4uc3BsaXQoJzonKTtcbiAgICAgICAgICBpZiAoIW5hbWUgfHwgIXZlcnNpb24pIHRocm93IG5ldyBFcnJvcignLS1wbHVnaW4gcmVxdWlyZXMgPG5hbWU6dmVyc2lvbj4gZm9ybWF0Jyk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdGZXRjaGluZyBwbHVnaW4nLCB7IG5hbWUsIHZlcnNpb24gfSk7XG4gICAgICAgICAgY29uc3QgY2xpZW50ID0gYXdhaXQgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jKG9wdGlvbnMpO1xuICAgICAgICAgIGNvbnN0IGNmZyA9IGNsaWVudC5nZXRDb25maWcoKTtcbiAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBjbGllbnQuZ2V0PHsgcGx1Z2luOiB1bmtub3duIH0+KFxuICAgICAgICAgICAgYCR7Y2ZnLmFwaS5wbHVnaW5Vcmx9L2ZpbmQ/bmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudChuYW1lKX0mdmVyc2lvbj0ke2VuY29kZVVSSUNvbXBvbmVudCh2ZXJzaW9uKX1gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgZG9jID0gKHJlcyBhcyB7IHBsdWdpbj86IHVua25vd24gfSkucGx1Z2luXG4gICAgICAgICAgICA/PyAocmVzIGFzIHsgZGF0YT86IHsgcGx1Z2luPzogdW5rbm93biB9IH0pLmRhdGE/LnBsdWdpbjtcbiAgICAgICAgICBpZiAoIWRvYykgdGhyb3cgbmV3IEVycm9yKGBQbHVnaW4gJHtuYW1lfToke3ZlcnNpb259IG5vdCBmb3VuZGApO1xuICAgICAgICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlUGx1Z2luRG9jKGNvcmUsIGRvYyk7XG4gICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHByb2JsZW1zLnB1c2goeyBzb3VyY2U6IGBwbHVnaW4vJHtuYW1lfToke3ZlcnNpb259YCwgZXJyb3JzIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb2JsZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHByaW50U3VjY2VzcygnQWxsIHRlbXBsYXRlcyB2YWxpZCcsIHsgZXhlY3V0aW9uSWQgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJpbnRXYXJuaW5nKGBGb3VuZCAke3Byb2JsZW1zLnJlZHVjZSgoYSwgcCkgPT4gYSArIHAuZXJyb3JzLmxlbmd0aCwgMCl9IHRlbXBsYXRlIGVycm9yKHMpOmApO1xuICAgICAgICBmb3IgKGNvbnN0IHAgb2YgcHJvYmxlbXMpIHtcbiAgICAgICAgICBwcmludEVycm9yKHAuc291cmNlKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgcC5lcnJvcnMpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAgWyR7ZS5maWVsZCA/PyAnPyd9XSAke2UubWVzc2FnZX0ke2UuY29kZSA/IGAgKCR7ZS5jb2RlfSlgIDogJyd9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnIsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAndmFsaWRhdGUtdGVtcGxhdGVzJywgZXhlY3V0aW9uSWQgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUGx1Z2luRG9jKGNvcmU6IFJlY29yZDxzdHJpbmcsIGFueT4sIGRvYzogdW5rbm93bik6IEFycmF5PHsgZmllbGQ/OiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZzsgY29kZT86IHN0cmluZyB9PiB7XG4gIGNvbnN0IGlzVHBsID0gKGY6IHN0cmluZykgPT5cbiAgICBmID09PSAnZGVzY3JpcHRpb24nIHx8XG4gICAgZi5zdGFydHNXaXRoKCdjb21tYW5kcycpIHx8XG4gICAgZi5zdGFydHNXaXRoKCdpbnN0YWxsQ29tbWFuZHMnKSB8fFxuICAgIGYuc3RhcnRzV2l0aCgnZW52LicpIHx8IGYuc3RhcnRzV2l0aCgnZW52WycpIHx8XG4gICAgZi5zdGFydHNXaXRoKCdidWlsZEFyZ3MuJykgfHwgZi5zdGFydHNXaXRoKCdidWlsZEFyZ3NbJyk7XG4gIGNvbnN0IGlzS25vd24gPSBjb3JlLmFsbG93ZWRTY29wZVJvb3RzKFsncGlwZWxpbmUnLCAncGx1Z2luJywgJ2VudiddKTtcbiAgY29uc3QgeyBlcnJvcnMgfSA9IGNvcmUudmFsaWRhdGVUZW1wbGF0ZXMoZG9jLCBpc1RwbCwgaXNLbm93bik7XG4gIHJldHVybiBlcnJvcnM7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUGlwZWxpbmVEb2MoY29yZTogUmVjb3JkPHN0cmluZywgYW55PiwgZG9jOiB1bmtub3duKTogQXJyYXk8eyBmaWVsZD86IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nOyBjb2RlPzogc3RyaW5nIH0+IHtcbiAgY29uc3QgaXNUcGwgPSAoZjogc3RyaW5nKSA9PlxuICAgIGYgPT09ICdwcm9qZWN0TmFtZScgfHxcbiAgICBmLnN0YXJ0c1dpdGgoJ21ldGFkYXRhLicpIHx8IGYuc3RhcnRzV2l0aCgnbWV0YWRhdGFbJykgfHxcbiAgICBmLnN0YXJ0c1dpdGgoJ3ZhcnMuJykgfHwgZi5zdGFydHNXaXRoKCd2YXJzWycpO1xuICBjb25zdCBpc0tub3duID0gY29yZS5hbGxvd2VkU2NvcGVSb290cyhbJ21ldGFkYXRhJywgJ3ZhcnMnXSk7XG4gIGNvbnN0IHsgZXJyb3JzIH0gPSBjb3JlLnZhbGlkYXRlVGVtcGxhdGVzKGRvYywgaXNUcGwsIGlzS25vd24pO1xuICBjb25zdCBjeWNsZXMgPSBjb3JlLmRldGVjdEN5Y2xlcyhkb2MsIGlzVHBsLCAoZjogc3RyaW5nKSA9PiBpc1RwbChmKSA/IGYgOiBudWxsKTtcbiAgcmV0dXJuIFsuLi5lcnJvcnMsIC4uLmN5Y2xlc107XG59XG4iXX0=
package/package.json CHANGED
@@ -30,7 +30,6 @@
30
30
  "@aws-sdk/client-lambda": "3.821.0",
31
31
  "@aws-sdk/client-secrets-manager": "3.821.0",
32
32
  "@aws-sdk/client-sts": "3.821.0",
33
- "@pipeline-builder/pipeline-core": "3.1.3",
34
33
  "aws-cdk-lib": "2.240.0",
35
34
  "axios": "1.13.5",
36
35
  "commander": "14.0.3",
@@ -40,7 +39,8 @@
40
39
  "picocolors": "1.1.1",
41
40
  "progress": "2.0.3",
42
41
  "typescript": "5.9.3",
43
- "yaml": "2.8.2"
42
+ "yaml": "2.8.2",
43
+ "@pipeline-builder/pipeline-core": "3.2.0"
44
44
  },
45
45
  "keywords": [
46
46
  "aws",
@@ -76,7 +76,7 @@
76
76
  "access": "public",
77
77
  "registry": "https://registry.npmjs.org/"
78
78
  },
79
- "version": "3.1.4",
79
+ "version": "3.2.0",
80
80
  "bugs": {
81
81
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
82
82
  },