@pipeline-builder/pipeline-manager 4.4.6 → 4.4.8

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.
Files changed (64) hide show
  1. package/dist/agent/ai.d.ts +11 -0
  2. package/dist/agent/ai.d.ts.map +1 -1
  3. package/dist/agent/ai.js +47 -4
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +9 -2
  6. package/dist/commands/create-pat.d.ts.map +1 -1
  7. package/dist/commands/create-pat.js +3 -1
  8. package/dist/commands/create-pipeline.d.ts.map +1 -1
  9. package/dist/commands/create-pipeline.js +11 -2
  10. package/dist/commands/deploy.d.ts.map +1 -1
  11. package/dist/commands/deploy.js +20 -2
  12. package/dist/commands/report.js +4 -4
  13. package/dist/commands/security-report.d.ts +42 -0
  14. package/dist/commands/security-report.d.ts.map +1 -0
  15. package/dist/commands/security-report.js +89 -0
  16. package/dist/commands/setup-events.d.ts.map +1 -1
  17. package/dist/commands/setup-events.js +14 -1
  18. package/dist/commands/store-token.d.ts +1 -0
  19. package/dist/commands/store-token.d.ts.map +1 -1
  20. package/dist/commands/store-token.js +45 -19
  21. package/dist/commands/synth.d.ts +7 -1
  22. package/dist/commands/synth.d.ts.map +1 -1
  23. package/dist/commands/synth.js +66 -4
  24. package/dist/commands/verify-plugins.d.ts +45 -0
  25. package/dist/commands/verify-plugins.d.ts.map +1 -0
  26. package/dist/commands/verify-plugins.js +134 -0
  27. package/dist/lambda/token-renew-handler.d.ts +3 -1
  28. package/dist/lambda/token-renew-handler.d.ts.map +1 -1
  29. package/dist/lambda/token-renew-handler.js +31 -5
  30. package/dist/templates/events-stack.json +10 -0
  31. package/dist/utils/api-client.d.ts.map +1 -1
  32. package/dist/utils/api-client.js +20 -3
  33. package/dist/utils/auth-utils.d.ts.map +1 -1
  34. package/dist/utils/auth-utils.js +3 -1
  35. package/dist/utils/cdk-utils.js +2 -2
  36. package/dist/utils/command-utils.d.ts.map +1 -1
  37. package/dist/utils/command-utils.js +5 -2
  38. package/dist/utils/config-loader.d.ts.map +1 -1
  39. package/dist/utils/config-loader.js +9 -4
  40. package/dist/utils/deploy-runner.d.ts +25 -0
  41. package/dist/utils/deploy-runner.d.ts.map +1 -1
  42. package/dist/utils/deploy-runner.js +34 -5
  43. package/dist/utils/device-auth.d.ts.map +1 -1
  44. package/dist/utils/device-auth.js +4 -3
  45. package/dist/utils/error-handler.d.ts.map +1 -1
  46. package/dist/utils/error-handler.js +8 -1
  47. package/dist/utils/pipeline-config.d.ts +3 -0
  48. package/dist/utils/pipeline-config.d.ts.map +1 -1
  49. package/dist/utils/pipeline-config.js +4 -3
  50. package/dist/utils/platform-secret.d.ts.map +1 -1
  51. package/dist/utils/platform-secret.js +3 -1
  52. package/dist/utils/plugin-resolver.d.ts +41 -3
  53. package/dist/utils/plugin-resolver.d.ts.map +1 -1
  54. package/dist/utils/plugin-resolver.js +125 -21
  55. package/dist/utils/registration-client.d.ts +28 -0
  56. package/dist/utils/registration-client.d.ts.map +1 -0
  57. package/dist/utils/registration-client.js +57 -0
  58. package/dist/utils/request-context.d.ts +11 -0
  59. package/dist/utils/request-context.d.ts.map +1 -0
  60. package/dist/utils/request-context.js +62 -0
  61. package/dist/utils/service-account.d.ts +6 -4
  62. package/dist/utils/service-account.d.ts.map +1 -1
  63. package/dist/utils/service-account.js +14 -9
  64. package/package.json +6 -5
@@ -12,6 +12,8 @@
12
12
  * - the account is the principal, so audit rows name it, not the operator;
13
13
  * - its Roles are the narrowest that work — for a SCOPED credential that is no
14
14
  * Roles at all, just the one capability (`reporting:ingest`, `registry:push`);
15
+ * otherwise one built-in machine Role (Pipeline Automation, Pipeline
16
+ * Registration), never the org Admin Role;
15
17
  * - the key is opaque and short-lived at the point of use (5-minute exchanged
16
18
  * tokens), so revoking it actually stops the automation;
17
19
  * - it takes no seat and survives the operator leaving.
@@ -23,7 +25,7 @@
23
25
  * path at all. A step-up token is single-use and lives about a minute,
24
26
  * so one is minted immediately before each gated call.
25
27
  */
26
- import { errorMessage } from '@pipeline-builder/api-core';
28
+ import { errorMessage, SEED_BUNDLES } from '@pipeline-builder/api-core';
27
29
  import { printInfo, printSuccess, printWarning } from './output-utils.js';
28
30
  /** Step-up header the platform reads (see api-core `requireStepUp`). */
29
31
  const STEP_UP_HEADER = 'X-Step-Up-Token';
@@ -73,17 +75,20 @@ export async function resolveOrganizationId(client) {
73
75
  return orgId;
74
76
  }
75
77
  /**
76
- * The org Role to give a full-privilege machine account: its Super Admin role if
77
- * the org has one (the system org does), else its Admin role. Both are subject to
78
- * the ordinary assignment ceiling on the platform side, so this can never grant
78
+ * The org's built-in Role for `bundle` — a `system` Role under the name api-core's
79
+ * `SEED_BUNDLES` gives it, which every org seeds (and the platform's startup
80
+ * backfill creates in orgs seeded before it existed). Assigning it is still
81
+ * subject to the ordinary ceiling on the platform side, so this can never grant
79
82
  * the account more than the operator holds.
80
83
  */
81
- async function resolveAdminRoleId(client, orgId) {
84
+ async function resolveBuiltinRoleId(client, orgId, bundle) {
85
+ const name = SEED_BUNDLES[bundle].name;
82
86
  const res = await client.get(`/api/organization/${orgId}/roles`);
83
87
  const roles = unwrap(res)?.roles ?? [];
84
- const role = roles.find((r) => r.grantsRole === 'superadmin') ?? roles.find((r) => r.grantsRole === 'admin');
88
+ const role = roles.find((r) => r.system && r.name === name);
85
89
  if (!role) {
86
- throw new Error(`Organization ${orgId} has no admin role to grant the machine service account.`);
90
+ throw new Error(`Organization ${orgId} has no built-in '${name}' Role to grant the service account. `
91
+ + 'The platform creates it at startup — upgrade/restart the platform, then re-run this command.');
87
92
  }
88
93
  return role.id;
89
94
  }
@@ -105,7 +110,7 @@ async function ensureAccount(opts, orgId) {
105
110
  printInfo('Reusing the existing service account', { account: opts.accountName, id: existing.id });
106
111
  return existing.id;
107
112
  }
108
- const roleIds = opts.roles === 'admin' ? [await resolveAdminRoleId(opts.client, orgId)] : [];
113
+ const roleIds = opts.role ? [await resolveBuiltinRoleId(opts.client, orgId, opts.role)] : [];
109
114
  try {
110
115
  const res = await opts.client.post(`/api/organization/${orgId}/service-accounts`, { name: opts.accountName, description: opts.description, roleIds }, { [STEP_UP_HEADER]: await stepUp(opts.client, opts.password) });
111
116
  const account = unwrap(res)?.serviceAccount;
@@ -179,4 +184,4 @@ export async function provisionServiceAccountKey(opts) {
179
184
  scope: accessKey.scope ?? null,
180
185
  };
181
186
  }
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1hY2NvdW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3NlcnZpY2UtYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTFELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFFLHdFQUF3RTtBQUN4RSxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztBQTZDekM7OEVBQzhFO0FBQzlFLFNBQVMsUUFBUSxDQUFDLEdBQVk7SUFDNUIsTUFBTSxDQUFDLEdBQUcsR0FBMEQsQ0FBQztJQUNyRSxNQUFNLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2hELE9BQU8sT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN6RCxDQUFDO0FBRUQsdUVBQXVFO0FBQ3ZFLFNBQVMsV0FBVyxDQUFDLEdBQVk7SUFDL0IsTUFBTSxJQUFJLEdBQUksR0FBOEUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDO0lBQzdHLE9BQU8sSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQztBQUN6QyxDQUFDO0FBRUQsb0ZBQW9GO0FBQ3BGLFNBQVMsTUFBTSxDQUFJLFFBQWlCO0lBQ2xDLE1BQU0sSUFBSSxHQUFHLFFBQXdCLENBQUM7SUFDdEMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksUUFBUSxDQUFNLENBQUM7QUFDdkMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxLQUFLLFVBQVUsTUFBTSxDQUFD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TSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDbEYsT0FBTztRQUNMLEdBQUc7UUFDSCxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUU7UUFDbkIsZ0JBQWdCO1FBQ2hCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxXQUFXO1FBQ3BDLGNBQWM7UUFDZCxTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQVM7UUFDOUIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLElBQUksSUFBSTtLQUMvQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFByb3Zpc2lvbmluZyB0aGUgb3JnJ3MgTUFDSElORSBpZGVudGl0eSBmb3Igc3RvcmVkIGNyZWRlbnRpYWxzLlxuICpcbiAqIEEgY3JlZGVudGlhbCB0aGUgQ0xJIHBhcmtzIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIgbXVzdCBub3QgYmUgYSBtYWNoaW5lXG4gKiBTRVNTSU9OIGJlbG9uZ2luZyB0byB3aG9ldmVyIHJhbiB0aGUgY29tbWFuZDogYSBwZXJzb24ncyBKV1Qgd291bGQgb3V0bGl2ZVxuICogdGhlaXIgZW1wbG95bWVudCwgY2FycnkgdGhlaXIgYXV0aG9yaXR5LCBhbmQgbWFrZSB0aGUgYXVkaXQgdHJhaWwgcmVhZCBhcyBpZlxuICogdGhleSBoYWQgcGVyc29uYWxseSBwdXNoZWQgZXZlcnkgaW1hZ2UuXG4gKlxuICogV2hhdCBpdCB3cml0ZXMgaXMgYSBgcGJfc2Ff4oCmYCBrZXkgb24gYW4gb3JnIFNFUlZJQ0UgQUNDT1VOVDpcbiAqICAgLSB0aGUgYWNjb3VudCBpcyB0aGUgcHJpbmNpcGFsLCBzbyBhdWRpdCByb3dzIG5hbWUgaXQsIG5vdCB0aGUgb3BlcmF0b3I7XG4gKiAgIC0gaXRzIFJvbGVzIGFyZSB0aGUgbmFycm93ZXN0IHRoYXQgd29yayDigJQgZm9yIGEgU0NPUEVEIGNyZWRlbnRpYWwgdGhhdCBpcyBub1xuICogICAgIFJvbGVzIGF0IGFsbCwganVzdCB0aGUgb25lIGNhcGFiaWxpdHkgKGByZXBvcnRpbmc6aW5nZXN0YCwgYHJlZ2lzdHJ5OnB1c2hgKTtcbiAqICAgLSB0aGUga2V5IGlzIG9wYXF1ZSBhbmQgc2hvcnQtbGl2ZWQgYXQgdGhlIHBvaW50IG9mIHVzZSAoNS1taW51dGUgZXhjaGFuZ2VkXG4gKiAgICAgdG9rZW5zKSwgc28gcmV2b2tpbmcgaXQgYWN0dWFsbHkgc3RvcHMgdGhlIGF1dG9tYXRpb247XG4gKiAgIC0gaXQgdGFrZXMgbm8gc2VhdCBhbmQgc3Vydml2ZXMgdGhlIG9wZXJhdG9yIGxlYXZpbmcuXG4gKlxuICogQ3JlYXRpbmcgYW4gYWNjb3VudCBhbmQgaXNzdWluZyBhIGtleSBhcmUgQk9USCBzdGVwLXVwIGdhdGVkIG9uIHRoZSBwbGF0Zm9ybSDigJRcbiAqIHRoZXkgbWludCBkdXJhYmxlIGJlYXJlciBjcmVkZW50aWFscywgdGhlIHNhbWUgY2xhc3Mgb2YgYWN0aW9uIGEgcGVyc29uYWwga2V5XG4gKiBpcyBnYXRlZCBmb3IuIFNvIHRoaXMgbW9kdWxlIG5lZWRzIHRoZSBvcGVyYXRvcidzIHBhc3N3b3JkIChgLS1wYXNzd29yZGAgb3JcbiAqIGBQTEFURk9STV9QQVNTV09SRGApLCB3aGljaCBpcyB0aGUgb25seSByZWFzb24gYHN0b3JlLXRva2VuYCBoYXMgYSBwYXNzd29yZFxuICogcGF0aCBhdCBhbGwuIEEgc3RlcC11cCB0b2tlbiBpcyBzaW5nbGUtdXNlIGFuZCBsaXZlcyBhYm91dCBhIG1pbnV0ZSxcbiAqIHNvIG9uZSBpcyBtaW50ZWQgaW1tZWRpYXRlbHkgYmVmb3JlIGVhY2ggZ2F0ZWQgY2FsbC5cbiAqL1xuXG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IEFwaUNsaWVudCB9IGZyb20gJy4vYXBpLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBwcmludEluZm8sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi9vdXRwdXQtdXRpbHMuanMnO1xuXG4vKiogU3RlcC11cCBoZWFkZXIgdGhlIHBsYXRmb3JtIHJlYWRzIChzZWUgYXBpLWNvcmUgYHJlcXVpcmVTdGVwVXBgKS4gKi9cbmNvbnN0IFNURVBfVVBfSEVBREVSID0gJ1gtU3RlcC1VcC1Ub2tlbic7XG5cbi8qKiBXaGF0IHRoZSBjYWxsZXIgd2FudHMgcHJvdmlzaW9uZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3Zpc2lvbktleU9wdGlvbnMge1xuICAvKiogQW4gYXV0aGVudGljYXRlZCBjbGllbnQgZm9yIHRoZSBvcGVyYXRvcidzIG93biBzZXNzaW9uLiAqL1xuICBjbGllbnQ6IEFwaUNsaWVudDtcbiAgLyoqIFRoZSBvcGVyYXRvcidzIHBhc3N3b3JkIOKAlCByZXF1aXJlZCwgYmVjYXVzZSBldmVyeSBrZXkgd3JpdGUgaXMgc3RlcC11cCBnYXRlZC4gKi9cbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgLyoqIE1hY2hpbmUgbmFtZSBvZiB0aGUgc2VydmljZSBhY2NvdW50IChgW2EtejAtOV1bYS16MC05Xy1dezEsNjN9YCkuICovXG4gIGFjY291bnROYW1lOiBzdHJpbmc7XG4gIC8qKiBIdW1hbiBkZXNjcmlwdGlvbiByZWNvcmRlZCBvbiBhIG5ld2x5IGNyZWF0ZWQgYWNjb3VudC4gKi9cbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgLyoqXG4gICAqIFJvbGVzIHRvIGdyYW50IGEgTkVXTFkgY3JlYXRlZCBhY2NvdW50OiBgJ2FkbWluJ2AgZm9yIHRoZSBmdWxsLXByaXZpbGVnZVxuICAgKiBwbGF0Zm9ybSBjcmVkZW50aWFsIChzeW50aC9kZXBsb3kgY2FsbGJhY2tzLCBwbHVnaW4gbG9va3VwLCBpbWFnZSBwdXNoKSxcbiAgICogYCdub25lJ2AgZm9yIGEgc2NvcGVkIGNyZWRlbnRpYWwsIHdoaWNoIG5lZWRzIG5vIFJvbGVzIGF0IGFsbC5cbiAgICovXG4gIHJvbGVzOiAnYWRtaW4nIHwgJ25vbmUnO1xuICAvKiogTmFycm93IGNhcGFiaWxpdHkgc2NvcGUgc3RhbXBlZCBvbiB0aGUgS0VZIChub3QgdGhlIGFjY291bnQpLiAqL1xuICBzY29wZT86IHN0cmluZztcbiAgLyoqIEtleSBsaWZldGltZSBpbiBzZWNvbmRzIChwbGF0Zm9ybSBjYXBzIHRoaXMgYXQgMzY1IGRheXMpLiAqL1xuICBleHBpcmVzSW5TZWNvbmRzOiBudW1iZXI7XG4gIC8qKiBLZXkgbGFiZWwg4oCUIHNob3duIG9uIHRoZSBvcmcncyBzZXJ2aWNlLWFjY291bnRzIHBhZ2UuICovXG4gIGtleU5hbWU6IHN0cmluZztcbn1cblxuLyoqIEEgZnJlc2hseSBtaW50ZWQga2V5LCBwbHVzIGV2ZXJ5dGhpbmcgdGhlIHNlY3JldCBuZWVkcyB0byByZWNvcmQgYWJvdXQgaXQuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3Zpc2lvbmVkS2V5IHtcbiAgLyoqIFRoZSByYXcgYHBiX3NhX+KApmAga2V5IOKAlCByZXR1cm5lZCBPTkNFIGJ5IHRoZSBwbGF0Zm9ybSwgbmV2ZXIgcmVhZGFibGUgYWdhaW4uICovXG4gIGtleTogc3RyaW5nO1xuICBrZXlJZDogc3RyaW5nO1xuICBzZXJ2aWNlQWNjb3VudElkOiBzdHJpbmc7XG4gIHNlcnZpY2VBY2NvdW50TmFtZTogc3RyaW5nO1xuICBvcmdhbml6YXRpb25JZDogc3RyaW5nO1xuICBleHBpcmVzQXQ6IHN0cmluZztcbiAgc2NvcGU6IHN0cmluZyB8IG51bGw7XG59XG5cbi8qKiBOYXJyb3cgc2hhcGUgb2YgYSBzZXJ2aWNlLWFjY291bnQgbGlzdGluZyBlbnRyeS4gKi9cbmludGVyZmFjZSBBY2NvdW50U3VtbWFyeSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAga2V5cz86IEFycmF5PHsgaWQ6IHN0cmluZzsgc3RhdHVzOiBzdHJpbmc7IGNyZWF0ZWRBdDogc3RyaW5nIH0+O1xufVxuXG4vKiogSFRUUCBzdGF0dXMgb2YgYSBmYWlsZWQgQ0xJIHJlcXVlc3QsIG9yIHVuZGVmaW5lZCBmb3IgYSB0cmFuc3BvcnQgZXJyb3IuXG4gKiAgYEFwaUVycm9yYCBjYXJyaWVzIGl0IGRpcmVjdGx5OyBhIHJhdyBheGlvcyBlcnJvciBvbmx5IG9uIHRoZSByZXNwb25zZS4gKi9cbmZ1bmN0aW9uIHN0YXR1c09mKGVycjogdW5rbm93bik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGUgPSBlcnIgYXMgeyBzdGF0dXM/OiBudW1iZXI7IHJlc3BvbnNlPzogeyBzdGF0dXM/OiBudW1iZXIgfSB9O1xuICBjb25zdCBzdGF0dXMgPSBlPy5zdGF0dXMgPz8gZT8ucmVzcG9uc2U/LnN0YXR1cztcbiAgcmV0dXJuIHR5cGVvZiBzdGF0dXMgPT09ICdudW1iZXInID8gc3RhdHVzIDogdW5kZWZpbmVkO1xufVxuXG4vKiogVGhlIHBsYXRmb3JtJ3MgZXJyb3IgY29kZSBvbiBhIGZhaWxlZCByZXF1ZXN0LCB3aGVuIGl0IHNlbnQgb25lLiAqL1xuZnVuY3Rpb24gZXJyb3JDb2RlT2YoZXJyOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGF0YSA9IChlcnIgYXMgeyByZXNwb25zZT86IHsgZGF0YT86IHsgZXJyb3I/OiB7IGNvZGU/OiBzdHJpbmcgfTsgY29kZT86IHN0cmluZyB9IH0gfSk/LnJlc3BvbnNlPy5kYXRhO1xuICByZXR1cm4gZGF0YT8uZXJyb3I/LmNvZGUgPz8gZGF0YT8uY29kZTtcbn1cblxuLyoqIFVud3JhcCBhcGktY29yZSdzIGB7IHN1Y2Nlc3MsIGRhdGEgfWAgZW52ZWxvcGUgKHNvbWUgcGF0aHMgcmV0dXJuIGRhdGEgYmFyZSkuICovXG5mdW5jdGlvbiB1bndyYXA8VD4ocmVzcG9uc2U6IHVua25vd24pOiBUIHtcbiAgY29uc3QgYm9keSA9IHJlc3BvbnNlIGFzIHsgZGF0YT86IFQgfTtcbiAgcmV0dXJuIChib2R5Py5kYXRhID8/IHJlc3BvbnNlKSBhcyBUO1xufVxuXG4vKipcbiAqIE1pbnQgYSBzaW5nbGUtdXNlIHN0ZXAtdXAgdG9rZW4gZm9yIHRoZSBzaWduZWQtaW4gb3BlcmF0b3IuIFNob3J0LWxpdmVkIGJ5XG4gKiBkZXNpZ24sIHNvIGNhbGxlcnMgbWludCBvbmUgaW1tZWRpYXRlbHkgYmVmb3JlIGVhY2ggZ2F0ZWQgd3JpdGUgcmF0aGVyIHRoYW5cbiAqIGhvbGRpbmcgb25lIGFjcm9zcyB0aGUgd2hvbGUgY29tbWFuZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc3RlcFVwKGNsaWVudDogQXBpQ2xpZW50LCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBjbGllbnQucG9zdDx1bmtub3duPignL2FwaS9hdXRoL3N0ZXAtdXAnLCB7IHBhc3N3b3JkIH0pO1xuICAgIGNvbnN0IHRva2VuID0gdW53cmFwPHsgc3RlcFVwVG9rZW4/OiBzdHJpbmcgfT4ocmVzKT8uc3RlcFVwVG9rZW47XG4gICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdubyBzdGVwVXBUb2tlbiBpbiByZXNwb25zZScpO1xuICAgIHJldHVybiB0b2tlbjtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0NvdWxkIG5vdCByZS12ZXJpZnkgeW91ciBwYXNzd29yZCAoc3RlcC11cCkuIENyZWF0aW5nIGEgc2VydmljZSBhY2NvdW50IGFuZCBpc3N1aW5nIGl0cyBrZXkgJ1xuICAgICAgKyAnYXJlIGJvdGggc3RlcC11cCBnYXRlZC4gQ2hlY2sgdGhlIHBhc3N3b3JkIHBhc3NlZCB2aWEgLS1wYXNzd29yZCAvIFBMQVRGT1JNX1BBU1NXT1JELiAnXG4gICAgICArIGAoJHtlcnJvck1lc3NhZ2UoZXJyKX0pYCxcbiAgICApO1xuICB9XG59XG5cbi8qKiBUaGUgb3JnIHRoZSBvcGVyYXRvcidzIHRva2VuIGlzIGFjdGl2ZSBpbi4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlT3JnYW5pemF0aW9uSWQoY2xpZW50OiBBcGlDbGllbnQpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCByZXMgPSBhd2FpdCBjbGllbnQuZ2V0PHVua25vd24+KCcvYXBpL29yZ2FuaXphdGlvbicpO1xuICBjb25zdCBvcmdJZCA9IHVud3JhcDx7IG9yZ2FuaXphdGlvbj86IHsgaWQ/OiBzdHJpbmcgfSB9PihyZXMpPy5vcmdhbml6YXRpb24/LmlkO1xuICBpZiAoIW9yZ0lkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcmVzb2x2ZSB5b3VyIGFjdGl2ZSBvcmdhbml6YXRpb24g4oCUIHRoZSBwbGF0Zm9ybSByZXR1cm5lZCBubyBvcmdhbml6YXRpb24gZm9yIHRoaXMgdG9rZW4uJyk7XG4gIH1cbiAgcmV0dXJuIG9yZ0lkO1xufVxuXG4vKipcbiAqIFRoZSBvcmcgUm9sZSB0byBnaXZlIGEgZnVsbC1wcml2aWxlZ2UgbWFjaGluZSBhY2NvdW50OiBpdHMgU3VwZXIgQWRtaW4gcm9sZSBpZlxuICogdGhlIG9yZyBoYXMgb25lICh0aGUgc3lzdGVtIG9yZyBkb2VzKSwgZWxzZSBpdHMgQWRtaW4gcm9sZS4gQm90aCBhcmUgc3ViamVjdCB0b1xuICogdGhlIG9yZGluYXJ5IGFzc2lnbm1lbnQgY2VpbGluZyBvbiB0aGUgcGxhdGZvcm0gc2lkZSwgc28gdGhpcyBjYW4gbmV2ZXIgZ3JhbnRcbiAqIHRoZSBhY2NvdW50IG1vcmUgdGhhbiB0aGUgb3BlcmF0b3IgaG9sZHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVBZG1pblJvbGVJZChjbGllbnQ6IEFwaUNsaWVudCwgb3JnSWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGNsaWVudC5nZXQ8dW5rbm93bj4oYC9hcGkvb3JnYW5pemF0aW9uLyR7b3JnSWR9L3JvbGVzYCk7XG4gIGNvbnN0IHJvbGVzID0gdW53cmFwPHsgcm9sZXM/OiBBcnJheTx7IGlkOiBzdHJpbmc7IGdyYW50c1JvbGU/OiBzdHJpbmcgfT4gfT4ocmVzKT8ucm9sZXMgPz8gW107XG4gIGNvbnN0IHJvbGUgPSByb2xlcy5maW5kKChyKSA9PiByLmdyYW50c1JvbGUgPT09ICdzdXBlcmFkbWluJykgPz8gcm9sZXMuZmluZCgocikgPT4gci5ncmFudHNSb2xlID09PSAnYWRtaW4nKTtcbiAgaWYgKCFyb2xlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBPcmdhbml6YXRpb24gJHtvcmdJZH0gaGFzIG5vIGFkbWluIHJvbGUgdG8gZ3JhbnQgdGhlIG1hY2hpbmUgc2VydmljZSBhY2NvdW50LmApO1xuICB9XG4gIHJldHVybiByb2xlLmlkO1xufVxuXG4vKiogRmluZCBhbiBleGlzdGluZyBhY2NvdW50IGJ5IG5hbWUgKHRoZSBuYW1lIGlzIHRoZSBzdGFibGUgbWFjaGluZSBpZGVudGlmaWVyKS4gKi9cbmFzeW5jIGZ1bmN0aW9uIGZpbmRBY2NvdW50KGNsaWVudDogQXBpQ2xpZW50LCBvcmdJZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEFjY291bnRTdW1tYXJ5IHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGNsaWVudC5nZXQ8dW5rbm93bj4oYC9hcGkvb3JnYW5pemF0aW9uLyR7b3JnSWR9L3NlcnZpY2UtYWNjb3VudHNgKTtcbiAgY29uc3QgYWNjb3VudHMgPSB1bndyYXA8eyBzZXJ2aWNlQWNjb3VudHM/OiBBY2NvdW50U3VtbWFyeVtdIH0+KHJlcyk/LnNlcnZpY2VBY2NvdW50cyA/PyBbXTtcbiAgcmV0dXJuIGFjY291bnRzLmZpbmQoKGEpID0+IGEubmFtZSA9PT0gbmFtZSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBhY2NvdW50IGlmIGl0IGlzbid0IHRoZXJlIHlldCwgYW5kIHJldHVybiBpdHMgaWQuIElERU1QT1RFTlQ6IGFcbiAqIHJlLXJ1biByZXVzZXMgdGhlIGV4aXN0aW5nIGFjY291bnQgKGluY2x1ZGluZyB0aGUgNDA5IHJhY2Ugd2hlcmUgdHdvIHJ1bnNcbiAqIGNyZWF0ZSBpdCBhdCBvbmNlKSwgYW5kIG5ldmVyIHJlLWdyYW50cyBSb2xlcyDigJQgYW4gb3BlcmF0b3Igd2hvIG5hcnJvd2VkIHRoZVxuICogYWNjb3VudCdzIFJvbGVzIGJ5IGhhbmQgbXVzdCBub3QgaGF2ZSB0aGF0IHVuZG9uZSBieSB0aGUgbmV4dCBgc3RvcmUtdG9rZW5gLlxuICovXG5hc3luYyBmdW5jdGlvbiBlbnN1cmVBY2NvdW50KG9wdHM6IFByb3Zpc2lvbktleU9wdGlvbnMsIG9yZ0lkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBleGlzdGluZyA9IGF3YWl0IGZpbmRBY2NvdW50KG9wdHMuY2xpZW50LCBvcmdJZCwgb3B0cy5hY2NvdW50TmFtZSk7XG4gIGlmIChleGlzdGluZykge1xuICAgIHByaW50SW5mbygnUmV1c2luZyB0aGUgZXhpc3Rpbmcgc2VydmljZSBhY2NvdW50JywgeyBhY2NvdW50OiBvcHRzLmFjY291bnROYW1lLCBpZDogZXhpc3RpbmcuaWQgfSk7XG4gICAgcmV0dXJuIGV4aXN0aW5nLmlkO1xuICB9XG5cbiAgY29uc3Qgcm9sZUlkcyA9IG9wdHMucm9sZXMgPT09ICdhZG1pbicgPyBbYXdhaXQgcmVzb2x2ZUFkbWluUm9sZUlkKG9wdHMuY2xpZW50LCBvcmdJZCldIDogW107XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgb3B0cy5jbGllbnQucG9zdDx1bmtub3duPihcbiAgICAgIGAvYXBpL29yZ2FuaXphdGlvbi8ke29yZ0lkfS9zZXJ2aWNlLWFjY291bnRzYCxcbiAgICAgIHsgbmFtZTogb3B0cy5hY2NvdW50TmFtZSwgZGVzY3JpcHRpb246IG9wdHMuZGVzY3JpcHRpb24sIHJvbGVJZHMgfSxcbiAgICAgIHsgW1NURVBfVVBfSEVBREVSXTogYXdhaXQgc3RlcFVwKG9wdHMuY2xpZW50LCBvcHRzLnBhc3N3b3JkKSB9LFxuICAgICk7XG4gICAgY29uc3QgYWNjb3VudCA9IHVud3JhcDx7IHNlcnZpY2VBY2NvdW50PzogeyBpZD86IHN0cmluZyB9IH0+KHJlcyk/LnNlcnZpY2VBY2NvdW50O1xuICAgIGlmICghYWNjb3VudD8uaWQpIHRocm93IG5ldyBFcnJvcignc2VydmljZS1hY2NvdW50IGNyZWF0ZSByZXR1cm5lZCBubyBpZCcpO1xuICAgIHByaW50U3VjY2VzcyhgQ3JlYXRlZCB0aGUgJyR7b3B0cy5hY2NvdW50TmFtZX0nIHNlcnZpY2UgYWNjb3VudGApO1xuICAgIHJldHVybiBhY2NvdW50LmlkO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoc3RhdHVzT2YoZXJyKSA9PT0gNDA5KSB7XG4gICAgICBjb25zdCByYWNlZCA9IGF3YWl0IGZpbmRBY2NvdW50KG9wdHMuY2xpZW50LCBvcmdJZCwgb3B0cy5hY2NvdW50TmFtZSk7XG4gICAgICBpZiAocmFjZWQpIHJldHVybiByYWNlZC5pZDtcbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbi8qKiBSZXZva2Ugb25lIG9mIGFuIGFjY291bnQncyBrZXlzLiBCZXN0LWVmZm9ydCBieSBjb250cmFjdCDigJQgc2VlIHRoZSBjYWxsIHNpdGVzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldm9rZVNlcnZpY2VBY2NvdW50S2V5KFxuICBjbGllbnQ6IEFwaUNsaWVudCxcbiAgcGFzc3dvcmQ6IHN0cmluZyxcbiAgb3JnSWQ6IHN0cmluZyxcbiAgYWNjb3VudElkOiBzdHJpbmcsXG4gIGtleUlkOiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgY2xpZW50LmRlbGV0ZShcbiAgICBgL2FwaS9vcmdhbml6YXRpb24vJHtvcmdJZH0vc2VydmljZS1hY2NvdW50cy8ke2FjY291bnRJZH0va2V5cy8ke2tleUlkfWAsXG4gICAgeyBbU1RFUF9VUF9IRUFERVJdOiBhd2FpdCBzdGVwVXAoY2xpZW50LCBwYXNzd29yZCkgfSxcbiAgKTtcbn1cblxuLyoqXG4gKiBJc3N1ZSBhIGtleSwgc2VsZi1oZWFsaW5nIHBhc3QgdGhlIHBlci1hY2NvdW50IGFjdGl2ZS1rZXkgY2FwOiBhdCB0aGUgY2FwIHRoZVxuICogT0xERVNUIGFjdGl2ZSBrZXkgaXMgcmV0aXJlZCBhbmQgdGhlIG1pbnQgcmV0cmllZCBvbmNlLiBUaGUgY2FwIGV4aXN0cyB0byBib3VuZFxuICogYSBjb21wcm9taXNlLCBub3QgdG8gbWFrZSBwcm92aXNpb25pbmcgZmFpbCwgYW5kIHRoZSBjcmVkZW50aWFsIGEgcmUtcnVuIGlzXG4gKiByZXBsYWNpbmcgaXMgdGhlIHZlcnkgdGhpbmcgdGhhdCBzaG91bGQgZ28uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGlzc3VlS2V5KFxuICBvcHRzOiBQcm92aXNpb25LZXlPcHRpb25zLFxuICBvcmdJZDogc3RyaW5nLFxuICBhY2NvdW50SWQ6IHN0cmluZyxcbik6IFByb21pc2U8eyBrZXk6IHN0cmluZzsgYWNjZXNzS2V5OiB7IGlkOiBzdHJpbmc7IGV4cGlyZXNBdDogc3RyaW5nOyBzY29wZTogc3RyaW5nIHwgbnVsbCB9IH0+IHtcbiAgY29uc3QgYm9keSA9IHtcbiAgICBuYW1lOiBvcHRzLmtleU5hbWUsXG4gICAgZXhwaXJlc0luOiBvcHRzLmV4cGlyZXNJblNlY29uZHMsXG4gICAgLi4uKG9wdHMuc2NvcGUgPyB7IHNjb3BlOiBvcHRzLnNjb3BlIH0gOiB7fSksXG4gIH07XG4gIGNvbnN0IG1pbnQgPSBhc3luYyAoKSA9PiB1bndyYXA8eyBrZXk6IHN0cmluZzsgYWNjZXNzS2V5OiB7IGlkOiBzdHJpbmc7IGV4cGlyZXNBdDogc3RyaW5nOyBzY29wZTogc3RyaW5nIHwgbnVsbCB9IH0+KFxuICAgIGF3YWl0IG9wdHMuY2xpZW50LnBvc3Q8dW5rbm93bj4oXG4gICAgICBgL2FwaS9vcmdhbml6YXRpb24vJHtvcmdJZH0vc2VydmljZS1hY2NvdW50cy8ke2FjY291bnRJZH0va2V5c2AsXG4gICAgICBib2R5LFxuICAgICAgeyBbU1RFUF9VUF9IRUFERVJdOiBhd2FpdCBzdGVwVXAob3B0cy5jbGllbnQsIG9wdHMucGFzc3dvcmQpIH0sXG4gICAgKSxcbiAgKTtcblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBtaW50KCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChzdGF0dXNPZihlcnIpICE9PSA0MDkgJiYgZXJyb3JDb2RlT2YoZXJyKSAhPT0gJ1NBX0tFWV9MSU1JVCcpIHRocm93IGVycjtcbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZmluZEFjY291bnQob3B0cy5jbGllbnQsIG9yZ0lkLCBvcHRzLmFjY291bnROYW1lKTtcbiAgICBjb25zdCBvbGRlc3QgPSAoYWNjb3VudD8ua2V5cyA/PyBbXSlcbiAgICAgIC5maWx0ZXIoKGspID0+IGsuc3RhdHVzID09PSAnYWN0aXZlJylcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmNyZWF0ZWRBdC5sb2NhbGVDb21wYXJlKGIuY3JlYXRlZEF0KSlbMF07XG4gICAgaWYgKCFvbGRlc3QpIHRocm93IGVycjtcbiAgICBwcmludFdhcm5pbmcoYFNlcnZpY2UgYWNjb3VudCAnJHtvcHRzLmFjY291bnROYW1lfScgaXMgYXQgaXRzIGFjdGl2ZS1rZXkgbGltaXQg4oCUIHJldGlyaW5nIGl0cyBvbGRlc3Qga2V5ICgke29sZGVzdC5pZH0pLmApO1xuICAgIGF3YWl0IHJldm9rZVNlcnZpY2VBY2NvdW50S2V5KG9wdHMuY2xpZW50LCBvcHRzLnBhc3N3b3JkLCBvcmdJZCwgYWNjb3VudElkLCBvbGRlc3QuaWQpO1xuICAgIHJldHVybiBtaW50KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBFbnN1cmUgdGhlIG5hbWVkIHNlcnZpY2UgYWNjb3VudCBleGlzdHMgYW5kIGlzc3VlIGl0IGEgZnJlc2gga2V5LlxuICpcbiAqIERlbGliZXJhdGVseSBkb2VzIE5PVCByZXZva2UgYW55dGhpbmcgdGhlIGNhbGxlciB3YXMgcHJldmlvdXNseSBob2xkaW5nOiB0aGVcbiAqIGNhbGxlciBzdG9yZXMgdGhlIG5ldyBrZXkgZmlyc3QgYW5kIHJldGlyZXMgdGhlIG9sZCBvbmUgYWZ0ZXJ3YXJkcyAoc2VlXG4gKiBgc3RvcmUtdG9rZW5gKSwgc28gYSBmYWlsdXJlIGF0IGFueSBwb2ludCBsZWF2ZXMgYSB3b3JraW5nIGNyZWRlbnRpYWwgaW4gdGhlXG4gKiBzZWNyZXQgcmF0aGVyIHRoYW4gYW4gZW1wdHkgb25lLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvdmlzaW9uU2VydmljZUFjY291bnRLZXkob3B0czogUHJvdmlzaW9uS2V5T3B0aW9ucyk6IFByb21pc2U8UHJvdmlzaW9uZWRLZXk+IHtcbiAgY29uc3Qgb3JnYW5pemF0aW9uSWQgPSBhd2FpdCByZXNvbHZlT3JnYW5pemF0aW9uSWQob3B0cy5jbGllbnQpO1xuICBjb25zdCBzZXJ2aWNlQWNjb3VudElkID0gYXdhaXQgZW5zdXJlQWNjb3VudChvcHRzLCBvcmdhbml6YXRpb25JZCk7XG4gIGNvbnN0IHsga2V5LCBhY2Nlc3NLZXkgfSA9IGF3YWl0IGlzc3VlS2V5KG9wdHMsIG9yZ2FuaXphdGlvbklkLCBzZXJ2aWNlQWNjb3VudElkKTtcbiAgcmV0dXJuIHtcbiAgICBrZXksXG4gICAga2V5SWQ6IGFjY2Vzc0tleS5pZCxcbiAgICBzZXJ2aWNlQWNjb3VudElkLFxuICAgIHNlcnZpY2VBY2NvdW50TmFtZTogb3B0cy5hY2NvdW50TmFtZSxcbiAgICBvcmdhbml6YXRpb25JZCxcbiAgICBleHBpcmVzQXQ6IGFjY2Vzc0tleS5leHBpcmVzQXQsXG4gICAgc2NvcGU6IGFjY2Vzc0tleS5zY29wZSA/PyBudWxsLFxuICB9O1xufVxuIl19
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1hY2NvdW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3NlcnZpY2UtYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFFLHdFQUF3RTtBQUN4RSxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztBQThDekM7OEVBQzhFO0FBQzlFLFNBQVMsUUFBUSxDQUFDLEdBQVk7SUFDNUIsTUFBTSxDQUFDLEdBQUcsR0FBMEQsQ0FBQztJQUNyRSxNQUFNLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO0lBQ2hELE9BQU8sT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN6RCxDQUFDO0FBRUQsdUVBQXVFO0FBQ3ZFLFNBQVMsV0FBVyxDQUFDLEdBQVk7SUFDL0IsTUFBTSxJQUFJLEdBQUksR0FBOEUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDO0lBQzdHLE9BQU8sSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQztBQUN6QyxDQUFDO0FBRUQsb0ZBQW9GO0FBQ3BGLFNBQVMsTUFBTSxDQUFJLFFBQWlCO0lBQ2xDLE1BQU0sSUFBSSxHQUFHLFFBQXdCLENBQUM7SUFDdEMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksUUFBUSxDQUFNLENBQUM7QUFDdkMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxLQUFLLFVB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LEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xGLE9BQU87UUFDTCxHQUFHO1FBQ0gsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFO1FBQ25CLGdCQUFnQjtRQUNoQixrQkFBa0IsRUFBRSxJQUFJLENBQUMsV0FBVztRQUNwQyxjQUFjO1FBQ2QsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO1FBQzlCLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxJQUFJLElBQUk7S0FDL0IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBQcm92aXNpb25pbmcgdGhlIG9yZydzIE1BQ0hJTkUgaWRlbnRpdHkgZm9yIHN0b3JlZCBjcmVkZW50aWFscy5cbiAqXG4gKiBBIGNyZWRlbnRpYWwgdGhlIENMSSBwYXJrcyBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyIG11c3Qgbm90IGJlIGEgbWFjaGluZVxuICogU0VTU0lPTiBiZWxvbmdpbmcgdG8gd2hvZXZlciByYW4gdGhlIGNvbW1hbmQ6IGEgcGVyc29uJ3MgSldUIHdvdWxkIG91dGxpdmVcbiAqIHRoZWlyIGVtcGxveW1lbnQsIGNhcnJ5IHRoZWlyIGF1dGhvcml0eSwgYW5kIG1ha2UgdGhlIGF1ZGl0IHRyYWlsIHJlYWQgYXMgaWZcbiAqIHRoZXkgaGFkIHBlcnNvbmFsbHkgcHVzaGVkIGV2ZXJ5IGltYWdlLlxuICpcbiAqIFdoYXQgaXQgd3JpdGVzIGlzIGEgYHBiX3NhX+KApmAga2V5IG9uIGFuIG9yZyBTRVJWSUNFIEFDQ09VTlQ6XG4gKiAgIC0gdGhlIGFjY291bnQgaXMgdGhlIHByaW5jaXBhbCwgc28gYXVkaXQgcm93cyBuYW1lIGl0LCBub3QgdGhlIG9wZXJhdG9yO1xuICogICAtIGl0cyBSb2xlcyBhcmUgdGhlIG5hcnJvd2VzdCB0aGF0IHdvcmsg4oCUIGZvciBhIFNDT1BFRCBjcmVkZW50aWFsIHRoYXQgaXMgbm9cbiAqICAgICBSb2xlcyBhdCBhbGwsIGp1c3QgdGhlIG9uZSBjYXBhYmlsaXR5IChgcmVwb3J0aW5nOmluZ2VzdGAsIGByZWdpc3RyeTpwdXNoYCk7XG4gKiAgICAgb3RoZXJ3aXNlIG9uZSBidWlsdC1pbiBtYWNoaW5lIFJvbGUgKFBpcGVsaW5lIEF1dG9tYXRpb24sIFBpcGVsaW5lXG4gKiAgICAgUmVnaXN0cmF0aW9uKSwgbmV2ZXIgdGhlIG9yZyBBZG1pbiBSb2xlO1xuICogICAtIHRoZSBrZXkgaXMgb3BhcXVlIGFuZCBzaG9ydC1saXZlZCBhdCB0aGUgcG9pbnQgb2YgdXNlICg1LW1pbnV0ZSBleGNoYW5nZWRcbiAqICAgICB0b2tlbnMpLCBzbyByZXZva2luZyBpdCBhY3R1YWxseSBzdG9wcyB0aGUgYXV0b21hdGlvbjtcbiAqICAgLSBpdCB0YWtlcyBubyBzZWF0IGFuZCBzdXJ2aXZlcyB0aGUgb3BlcmF0b3IgbGVhdmluZy5cbiAqXG4gKiBDcmVhdGluZyBhbiBhY2NvdW50IGFuZCBpc3N1aW5nIGEga2V5IGFyZSBCT1RIIHN0ZXAtdXAgZ2F0ZWQgb24gdGhlIHBsYXRmb3JtIOKAlFxuICogdGhleSBtaW50IGR1cmFibGUgYmVhcmVyIGNyZWRlbnRpYWxzLCB0aGUgc2FtZSBjbGFzcyBvZiBhY3Rpb24gYSBwZXJzb25hbCBrZXlcbiAqIGlzIGdhdGVkIGZvci4gU28gdGhpcyBtb2R1bGUgbmVlZHMgdGhlIG9wZXJhdG9yJ3MgcGFzc3dvcmQgKGAtLXBhc3N3b3JkYCBvclxuICogYFBMQVRGT1JNX1BBU1NXT1JEYCksIHdoaWNoIGlzIHRoZSBvbmx5IHJlYXNvbiBgc3RvcmUtdG9rZW5gIGhhcyBhIHBhc3N3b3JkXG4gKiBwYXRoIGF0IGFsbC4gQSBzdGVwLXVwIHRva2VuIGlzIHNpbmdsZS11c2UgYW5kIGxpdmVzIGFib3V0IGEgbWludXRlLFxuICogc28gb25lIGlzIG1pbnRlZCBpbW1lZGlhdGVseSBiZWZvcmUgZWFjaCBnYXRlZCBjYWxsLlxuICovXG5cbmltcG9ydCB7IGVycm9yTWVzc2FnZSwgU0VFRF9CVU5ETEVTIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBTZWVkQnVuZGxlSWQgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IEFwaUNsaWVudCB9IGZyb20gJy4vYXBpLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBwcmludEluZm8sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi9vdXRwdXQtdXRpbHMuanMnO1xuXG4vKiogU3RlcC11cCBoZWFkZXIgdGhlIHBsYXRmb3JtIHJlYWRzIChzZWUgYXBpLWNvcmUgYHJlcXVpcmVTdGVwVXBgKS4gKi9cbmNvbnN0IFNURVBfVVBfSEVBREVSID0gJ1gtU3RlcC1VcC1Ub2tlbic7XG5cbi8qKiBXaGF0IHRoZSBjYWxsZXIgd2FudHMgcHJvdmlzaW9uZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb3Zpc2lvbktleU9wdGlvbnMge1xuICAvKiogQW4gYXV0aGVudGljYXRlZCBjbGllbnQgZm9yIHRoZSBvcGVyYXRvcidzIG93biBzZXNzaW9uLiAqL1xuICBjbGllbnQ6IEFwaUNsaWVudDtcbiAgLyoqIFRoZSBvcGVyYXRvcidzIHBhc3N3b3JkIOKAlCByZXF1aXJlZCwgYmVjYXVzZSBldmVyeSBrZXkgd3JpdGUgaXMgc3RlcC11cCBnYXRlZC4gKi9cbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgLyoqIE1hY2hpbmUgbmFtZSBvZiB0aGUgc2VydmljZSBhY2NvdW50IChgW2EtejAtOV1bYS16MC05Xy1dezEsNjN9YCkuICovXG4gIGFjY291bnROYW1lOiBzdHJpbmc7XG4gIC8qKiBIdW1hbiBkZXNjcmlwdGlvbiByZWNvcmRlZCBvbiBhIG5ld2x5IGNyZWF0ZWQgYWNjb3VudC4gKi9cbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBidWlsdC1pbiBSb2xlIChieSBzZWVkIGJ1bmRsZSkgdG8gZ3JhbnQgYSBORVdMWSBjcmVhdGVkIGFjY291bnQg4oCUXG4gICAqIGBwaXBlbGluZV9hdXRvbWF0aW9uYCBmb3IgdGhlIHBsYXRmb3JtIGNyZWRlbnRpYWwsIGBwaXBlbGluZV9yZWdpc3RyYXRpb25gXG4gICAqIGZvciB0aGUgcmVnaXN0cmF0aW9uIG9uZS4gQWJzZW50IGZvciBhIHNjb3BlZCBjcmVkZW50aWFsLCB3aGljaCBuZWVkcyBub1xuICAgKiBSb2xlIGF0IGFsbC5cbiAgICovXG4gIHJvbGU/OiBTZWVkQnVuZGxlSWQ7XG4gIC8qKiBOYXJyb3cgY2FwYWJpbGl0eSBzY29wZSBzdGFtcGVkIG9uIHRoZSBLRVkgKG5vdCB0aGUgYWNjb3VudCkuICovXG4gIHNjb3BlPzogc3RyaW5nO1xuICAvKiogS2V5IGxpZmV0aW1lIGluIHNlY29uZHMgKHBsYXRmb3JtIGNhcHMgdGhpcyBhdCAzNjUgZGF5cykuICovXG4gIGV4cGlyZXNJblNlY29uZHM6IG51bWJlcjtcbiAgLyoqIEtleSBsYWJlbCDigJQgc2hvd24gb24gdGhlIG9yZydzIHNlcnZpY2UtYWNjb3VudHMgcGFnZS4gKi9cbiAga2V5TmFtZTogc3RyaW5nO1xufVxuXG4vKiogQSBmcmVzaGx5IG1pbnRlZCBrZXksIHBsdXMgZXZlcnl0aGluZyB0aGUgc2VjcmV0IG5lZWRzIHRvIHJlY29yZCBhYm91dCBpdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlzaW9uZWRLZXkge1xuICAvKiogVGhlIHJhdyBgcGJfc2Ff4oCmYCBrZXkg4oCUIHJldHVybmVkIE9OQ0UgYnkgdGhlIHBsYXRmb3JtLCBuZXZlciByZWFkYWJsZSBhZ2Fpbi4gKi9cbiAga2V5OiBzdHJpbmc7XG4gIGtleUlkOiBzdHJpbmc7XG4gIHNlcnZpY2VBY2NvdW50SWQ6IHN0cmluZztcbiAgc2VydmljZUFjY291bnROYW1lOiBzdHJpbmc7XG4gIG9yZ2FuaXphdGlvbklkOiBzdHJpbmc7XG4gIGV4cGlyZXNBdDogc3RyaW5nO1xuICBzY29wZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqIE5hcnJvdyBzaGFwZSBvZiBhIHNlcnZpY2UtYWNjb3VudCBsaXN0aW5nIGVudHJ5LiAqL1xuaW50ZXJmYWNlIEFjY291bnRTdW1tYXJ5IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBrZXlzPzogQXJyYXk8eyBpZDogc3RyaW5nOyBzdGF0dXM6IHN0cmluZzsgY3JlYXRlZEF0OiBzdHJpbmcgfT47XG59XG5cbi8qKiBIVFRQIHN0YXR1cyBvZiBhIGZhaWxlZCBDTEkgcmVxdWVzdCwgb3IgdW5kZWZpbmVkIGZvciBhIHRyYW5zcG9ydCBlcnJvci5cbiAqICBgQXBpRXJyb3JgIGNhcnJpZXMgaXQgZGlyZWN0bHk7IGEgcmF3IGF4aW9zIGVycm9yIG9ubHkgb24gdGhlIHJlc3BvbnNlLiAqL1xuZnVuY3Rpb24gc3RhdHVzT2YoZXJyOiB1bmtub3duKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZSA9IGVyciBhcyB7IHN0YXR1cz86IG51bWJlcjsgcmVzcG9uc2U/OiB7IHN0YXR1cz86IG51bWJlciB9IH07XG4gIGNvbnN0IHN0YXR1cyA9IGU/LnN0YXR1cyA/PyBlPy5yZXNwb25zZT8uc3RhdHVzO1xuICByZXR1cm4gdHlwZW9mIHN0YXR1cyA9PT0gJ251bWJlcicgPyBzdGF0dXMgOiB1bmRlZmluZWQ7XG59XG5cbi8qKiBUaGUgcGxhdGZvcm0ncyBlcnJvciBjb2RlIG9uIGEgZmFpbGVkIHJlcXVlc3QsIHdoZW4gaXQgc2VudCBvbmUuICovXG5mdW5jdGlvbiBlcnJvckNvZGVPZihlcnI6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBkYXRhID0gKGVyciBhcyB7IHJlc3BvbnNlPzogeyBkYXRhPzogeyBlcnJvcj86IHsgY29kZT86IHN0cmluZyB9OyBjb2RlPzogc3RyaW5nIH0gfSB9KT8ucmVzcG9uc2U/LmRhdGE7XG4gIHJldHVybiBkYXRhPy5lcnJvcj8uY29kZSA/PyBkYXRhPy5jb2RlO1xufVxuXG4vKiogVW53cmFwIGFwaS1jb3JlJ3MgYHsgc3VjY2VzcywgZGF0YSB9YCBlbnZlbG9wZSAoc29tZSBwYXRocyByZXR1cm4gZGF0YSBiYXJlKS4gKi9cbmZ1bmN0aW9uIHVud3JhcDxUPihyZXNwb25zZTogdW5rbm93bik6IFQge1xuICBjb25zdCBib2R5ID0gcmVzcG9uc2UgYXMgeyBkYXRhPzogVCB9O1xuICByZXR1cm4gKGJvZHk/LmRhdGEgPz8gcmVzcG9uc2UpIGFzIFQ7XG59XG5cbi8qKlxuICogTWludCBhIHNpbmdsZS11c2Ugc3RlcC11cCB0b2tlbiBmb3IgdGhlIHNpZ25lZC1pbiBvcGVyYXRvci4gU2hvcnQtbGl2ZWQgYnlcbiAqIGRlc2lnbiwgc28gY2FsbGVycyBtaW50IG9uZSBpbW1lZGlhdGVseSBiZWZvcmUgZWFjaCBnYXRlZCB3cml0ZSByYXRoZXIgdGhhblxuICogaG9sZGluZyBvbmUgYWNyb3NzIHRoZSB3aG9sZSBjb21tYW5kLlxuICovXG5hc3luYyBmdW5jdGlvbiBzdGVwVXAoY2xpZW50OiBBcGlDbGllbnQsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNsaWVudC5wb3N0PHVua25vd24+KCcvYXBpL2F1dGgvc3RlcC11cCcsIHsgcGFzc3dvcmQgfSk7XG4gICAgY29uc3QgdG9rZW4gPSB1bndyYXA8eyBzdGVwVXBUb2tlbj86IHN0cmluZyB9PihyZXMpPy5zdGVwVXBUb2tlbjtcbiAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgRXJyb3IoJ25vIHN0ZXBVcFRva2VuIGluIHJlc3BvbnNlJyk7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQ291bGQgbm90IHJlLXZlcmlmeSB5b3VyIHBhc3N3b3JkIChzdGVwLXVwKS4gQ3JlYXRpbmcgYSBzZXJ2aWNlIGFjY291bnQgYW5kIGlzc3VpbmcgaXRzIGtleSAnXG4gICAgICArICdhcmUgYm90aCBzdGVwLXVwIGdhdGVkLiBDaGVjayB0aGUgcGFzc3dvcmQgcGFzc2VkIHZpYSAtLXBhc3N3b3JkIC8gUExBVEZPUk1fUEFTU1dPUkQuICdcbiAgICAgICsgYCgke2Vycm9yTWVzc2FnZShlcnIpfSlgLFxuICAgICk7XG4gIH1cbn1cblxuLyoqIFRoZSBvcmcgdGhlIG9wZXJhdG9yJ3MgdG9rZW4gaXMgYWN0aXZlIGluLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVPcmdhbml6YXRpb25JZChjbGllbnQ6IEFwaUNsaWVudCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGNsaWVudC5nZXQ8dW5rbm93bj4oJy9hcGkvb3JnYW5pemF0aW9uJyk7XG4gIGNvbnN0IG9yZ0lkID0gdW53cmFwPHsgb3JnYW5pemF0aW9uPzogeyBpZD86IHN0cmluZyB9IH0+KHJlcyk/Lm9yZ2FuaXphdGlvbj8uaWQ7XG4gIGlmICghb3JnSWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCByZXNvbHZlIHlvdXIgYWN0aXZlIG9yZ2FuaXphdGlvbiDigJQgdGhlIHBsYXRmb3JtIHJldHVybmVkIG5vIG9yZ2FuaXphdGlvbiBmb3IgdGhpcyB0b2tlbi4nKTtcbiAgfVxuICByZXR1cm4gb3JnSWQ7XG59XG5cbi8qKlxuICogVGhlIG9yZydzIGJ1aWx0LWluIFJvbGUgZm9yIGBidW5kbGVgIOKAlCBhIGBzeXN0ZW1gIFJvbGUgdW5kZXIgdGhlIG5hbWUgYXBpLWNvcmUnc1xuICogYFNFRURfQlVORExFU2AgZ2l2ZXMgaXQsIHdoaWNoIGV2ZXJ5IG9yZyBzZWVkcyAoYW5kIHRoZSBwbGF0Zm9ybSdzIHN0YXJ0dXBcbiAqIGJhY2tmaWxsIGNyZWF0ZXMgaW4gb3JncyBzZWVkZWQgYmVmb3JlIGl0IGV4aXN0ZWQpLiBBc3NpZ25pbmcgaXQgaXMgc3RpbGxcbiAqIHN1YmplY3QgdG8gdGhlIG9yZGluYXJ5IGNlaWxpbmcgb24gdGhlIHBsYXRmb3JtIHNpZGUsIHNvIHRoaXMgY2FuIG5ldmVyIGdyYW50XG4gKiB0aGUgYWNjb3VudCBtb3JlIHRoYW4gdGhlIG9wZXJhdG9yIGhvbGRzLlxuICovXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlQnVpbHRpblJvbGVJZChjbGllbnQ6IEFwaUNsaWVudCwgb3JnSWQ6IHN0cmluZywgYnVuZGxlOiBTZWVkQnVuZGxlSWQpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBuYW1lID0gU0VFRF9CVU5ETEVTW2J1bmRsZV0ubmFtZTtcbiAgY29uc3QgcmVzID0gYXdhaXQgY2xpZW50LmdldDx1bmtub3duPihgL2FwaS9vcmdhbml6YXRpb24vJHtvcmdJZH0vcm9sZXNgKTtcbiAgY29uc3Qgcm9sZXMgPSB1bndyYXA8eyByb2xlcz86IEFycmF5PHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBzeXN0ZW0/OiBib29sZWFuIH0+IH0+KHJlcyk/LnJvbGVzID8/IFtdO1xuICBjb25zdCByb2xlID0gcm9sZXMuZmluZCgocikgPT4gci5zeXN0ZW0gJiYgci5uYW1lID09PSBuYW1lKTtcbiAgaWYgKCFyb2xlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYE9yZ2FuaXphdGlvbiAke29yZ0lkfSBoYXMgbm8gYnVpbHQtaW4gJyR7bmFtZX0nIFJvbGUgdG8gZ3JhbnQgdGhlIHNlcnZpY2UgYWNjb3VudC4gYFxuICAgICAgKyAnVGhlIHBsYXRmb3JtIGNyZWF0ZXMgaXQgYXQgc3RhcnR1cCDigJQgdXBncmFkZS9yZXN0YXJ0IHRoZSBwbGF0Zm9ybSwgdGhlbiByZS1ydW4gdGhpcyBjb21tYW5kLicsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcm9sZS5pZDtcbn1cblxuLyoqIEZpbmQgYW4gZXhpc3RpbmcgYWNjb3VudCBieSBuYW1lICh0aGUgbmFtZSBpcyB0aGUgc3RhYmxlIG1hY2hpbmUgaWRlbnRpZmllcikuICovXG5hc3luYyBmdW5jdGlvbiBmaW5kQWNjb3VudChjbGllbnQ6IEFwaUNsaWVudCwgb3JnSWQ6IHN0cmluZywgbmFtZTogc3RyaW5nKTogUHJvbWlzZTxBY2NvdW50U3VtbWFyeSB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCByZXMgPSBhd2FpdCBjbGllbnQuZ2V0PHVua25vd24+KGAvYXBpL29yZ2FuaXphdGlvbi8ke29yZ0lkfS9zZXJ2aWNlLWFjY291bnRzYCk7XG4gIGNvbnN0IGFjY291bnRzID0gdW53cmFwPHsgc2VydmljZUFjY291bnRzPzogQWNjb3VudFN1bW1hcnlbXSB9PihyZXMpPy5zZXJ2aWNlQWNjb3VudHMgPz8gW107XG4gIHJldHVybiBhY2NvdW50cy5maW5kKChhKSA9PiBhLm5hbWUgPT09IG5hbWUpO1xufVxuXG4vKipcbiAqIENyZWF0ZSB0aGUgYWNjb3VudCBpZiBpdCBpc24ndCB0aGVyZSB5ZXQsIGFuZCByZXR1cm4gaXRzIGlkLiBJREVNUE9URU5UOiBhXG4gKiByZS1ydW4gcmV1c2VzIHRoZSBleGlzdGluZyBhY2NvdW50IChpbmNsdWRpbmcgdGhlIDQwOSByYWNlIHdoZXJlIHR3byBydW5zXG4gKiBjcmVhdGUgaXQgYXQgb25jZSksIGFuZCBuZXZlciByZS1ncmFudHMgUm9sZXMg4oCUIGFuIG9wZXJhdG9yIHdobyBuYXJyb3dlZCB0aGVcbiAqIGFjY291bnQncyBSb2xlcyBieSBoYW5kIG11c3Qgbm90IGhhdmUgdGhhdCB1bmRvbmUgYnkgdGhlIG5leHQgYHN0b3JlLXRva2VuYC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZW5zdXJlQWNjb3VudChvcHRzOiBQcm92aXNpb25LZXlPcHRpb25zLCBvcmdJZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCBmaW5kQWNjb3VudChvcHRzLmNsaWVudCwgb3JnSWQsIG9wdHMuYWNjb3VudE5hbWUpO1xuICBpZiAoZXhpc3RpbmcpIHtcbiAgICBwcmludEluZm8oJ1JldXNpbmcgdGhlIGV4aXN0aW5nIHNlcnZpY2UgYWNjb3VudCcsIHsgYWNjb3VudDogb3B0cy5hY2NvdW50TmFtZSwgaWQ6IGV4aXN0aW5nLmlkIH0pO1xuICAgIHJldHVybiBleGlzdGluZy5pZDtcbiAgfVxuXG4gIGNvbnN0IHJvbGVJZHMgPSBvcHRzLnJvbGUgPyBbYXdhaXQgcmVzb2x2ZUJ1aWx0aW5Sb2xlSWQob3B0cy5jbGllbnQsIG9yZ0lkLCBvcHRzLnJvbGUpXSA6IFtdO1xuICB0cnkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IG9wdHMuY2xpZW50LnBvc3Q8dW5rbm93bj4oXG4gICAgICBgL2FwaS9vcmdhbml6YXRpb24vJHtvcmdJZH0vc2VydmljZS1hY2NvdW50c2AsXG4gICAgICB7IG5hbWU6IG9wdHMuYWNjb3VudE5hbWUsIGRlc2NyaXB0aW9uOiBvcHRzLmRlc2NyaXB0aW9uLCByb2xlSWRzIH0sXG4gICAgICB7IFtTVEVQX1VQX0hFQURFUl06IGF3YWl0IHN0ZXBVcChvcHRzLmNsaWVudCwgb3B0cy5wYXNzd29yZCkgfSxcbiAgICApO1xuICAgIGNvbnN0IGFjY291bnQgPSB1bndyYXA8eyBzZXJ2aWNlQWNjb3VudD86IHsgaWQ/OiBzdHJpbmcgfSB9PihyZXMpPy5zZXJ2aWNlQWNjb3VudDtcbiAgICBpZiAoIWFjY291bnQ/LmlkKSB0aHJvdyBuZXcgRXJyb3IoJ3NlcnZpY2UtYWNjb3VudCBjcmVhdGUgcmV0dXJuZWQgbm8gaWQnKTtcbiAgICBwcmludFN1Y2Nlc3MoYENyZWF0ZWQgdGhlICcke29wdHMuYWNjb3VudE5hbWV9JyBzZXJ2aWNlIGFjY291bnRgKTtcbiAgICByZXR1cm4gYWNjb3VudC5pZDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKHN0YXR1c09mKGVycikgPT09IDQwOSkge1xuICAgICAgY29uc3QgcmFjZWQgPSBhd2FpdCBmaW5kQWNjb3VudChvcHRzLmNsaWVudCwgb3JnSWQsIG9wdHMuYWNjb3VudE5hbWUpO1xuICAgICAgaWYgKHJhY2VkKSByZXR1cm4gcmFjZWQuaWQ7XG4gICAgfVxuICAgIHRocm93IGVycjtcbiAgfVxufVxuXG4vKiogUmV2b2tlIG9uZSBvZiBhbiBhY2NvdW50J3Mga2V5cy4gQmVzdC1lZmZvcnQgYnkgY29udHJhY3Qg4oCUIHNlZSB0aGUgY2FsbCBzaXRlcy4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXZva2VTZXJ2aWNlQWNjb3VudEtleShcbiAgY2xpZW50OiBBcGlDbGllbnQsXG4gIHBhc3N3b3JkOiBzdHJpbmcsXG4gIG9yZ0lkOiBzdHJpbmcsXG4gIGFjY291bnRJZDogc3RyaW5nLFxuICBrZXlJZDogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGNsaWVudC5kZWxldGUoXG4gICAgYC9hcGkvb3JnYW5pemF0aW9uLyR7b3JnSWR9L3NlcnZpY2UtYWNjb3VudHMvJHthY2NvdW50SWR9L2tleXMvJHtrZXlJZH1gLFxuICAgIHsgW1NURVBfVVBfSEVBREVSXTogYXdhaXQgc3RlcFVwKGNsaWVudCwgcGFzc3dvcmQpIH0sXG4gICk7XG59XG5cbi8qKlxuICogSXNzdWUgYSBrZXksIHNlbGYtaGVhbGluZyBwYXN0IHRoZSBwZXItYWNjb3VudCBhY3RpdmUta2V5IGNhcDogYXQgdGhlIGNhcCB0aGVcbiAqIE9MREVTVCBhY3RpdmUga2V5IGlzIHJldGlyZWQgYW5kIHRoZSBtaW50IHJldHJpZWQgb25jZS4gVGhlIGNhcCBleGlzdHMgdG8gYm91bmRcbiAqIGEgY29tcHJvbWlzZSwgbm90IHRvIG1ha2UgcHJvdmlzaW9uaW5nIGZhaWwsIGFuZCB0aGUgY3JlZGVudGlhbCBhIHJlLXJ1biBpc1xuICogcmVwbGFjaW5nIGlzIHRoZSB2ZXJ5IHRoaW5nIHRoYXQgc2hvdWxkIGdvLlxuICovXG5hc3luYyBmdW5jdGlvbiBpc3N1ZUtleShcbiAgb3B0czogUHJvdmlzaW9uS2V5T3B0aW9ucyxcbiAgb3JnSWQ6IHN0cmluZyxcbiAgYWNjb3VudElkOiBzdHJpbmcsXG4pOiBQcm9taXNlPHsga2V5OiBzdHJpbmc7IGFjY2Vzc0tleTogeyBpZDogc3RyaW5nOyBleHBpcmVzQXQ6IHN0cmluZzsgc2NvcGU6IHN0cmluZyB8IG51bGwgfSB9PiB7XG4gIGNvbnN0IGJvZHkgPSB7XG4gICAgbmFtZTogb3B0cy5rZXlOYW1lLFxuICAgIGV4cGlyZXNJbjogb3B0cy5leHBpcmVzSW5TZWNvbmRzLFxuICAgIC4uLihvcHRzLnNjb3BlID8geyBzY29wZTogb3B0cy5zY29wZSB9IDoge30pLFxuICB9O1xuICBjb25zdCBtaW50ID0gYXN5bmMgKCkgPT4gdW53cmFwPHsga2V5OiBzdHJpbmc7IGFjY2Vzc0tleTogeyBpZDogc3RyaW5nOyBleHBpcmVzQXQ6IHN0cmluZzsgc2NvcGU6IHN0cmluZyB8IG51bGwgfSB9PihcbiAgICBhd2FpdCBvcHRzLmNsaWVudC5wb3N0PHVua25vd24+KFxuICAgICAgYC9hcGkvb3JnYW5pemF0aW9uLyR7b3JnSWR9L3NlcnZpY2UtYWNjb3VudHMvJHthY2NvdW50SWR9L2tleXNgLFxuICAgICAgYm9keSxcbiAgICAgIHsgW1NURVBfVVBfSEVBREVSXTogYXdhaXQgc3RlcFVwKG9wdHMuY2xpZW50LCBvcHRzLnBhc3N3b3JkKSB9LFxuICAgICksXG4gICk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgbWludCgpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoc3RhdHVzT2YoZXJyKSAhPT0gNDA5ICYmIGVycm9yQ29kZU9mKGVycikgIT09ICdTQV9LRVlfTElNSVQnKSB0aHJvdyBlcnI7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGZpbmRBY2NvdW50KG9wdHMuY2xpZW50LCBvcmdJZCwgb3B0cy5hY2NvdW50TmFtZSk7XG4gICAgY29uc3Qgb2xkZXN0ID0gKGFjY291bnQ/LmtleXMgPz8gW10pXG4gICAgICAuZmlsdGVyKChrKSA9PiBrLnN0YXR1cyA9PT0gJ2FjdGl2ZScpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5jcmVhdGVkQXQubG9jYWxlQ29tcGFyZShiLmNyZWF0ZWRBdCkpWzBdO1xuICAgIGlmICghb2xkZXN0KSB0aHJvdyBlcnI7XG4gICAgcHJpbnRXYXJuaW5nKGBTZXJ2aWNlIGFjY291bnQgJyR7b3B0cy5hY2NvdW50TmFtZX0nIGlzIGF0IGl0cyBhY3RpdmUta2V5IGxpbWl0IOKAlCByZXRpcmluZyBpdHMgb2xkZXN0IGtleSAoJHtvbGRlc3QuaWR9KS5gKTtcbiAgICBhd2FpdCByZXZva2VTZXJ2aWNlQWNjb3VudEtleShvcHRzLmNsaWVudCwgb3B0cy5wYXNzd29yZCwgb3JnSWQsIGFjY291bnRJZCwgb2xkZXN0LmlkKTtcbiAgICByZXR1cm4gbWludCgpO1xuICB9XG59XG5cbi8qKlxuICogRW5zdXJlIHRoZSBuYW1lZCBzZXJ2aWNlIGFjY291bnQgZXhpc3RzIGFuZCBpc3N1ZSBpdCBhIGZyZXNoIGtleS5cbiAqXG4gKiBEZWxpYmVyYXRlbHkgZG9lcyBOT1QgcmV2b2tlIGFueXRoaW5nIHRoZSBjYWxsZXIgd2FzIHByZXZpb3VzbHkgaG9sZGluZzogdGhlXG4gKiBjYWxsZXIgc3RvcmVzIHRoZSBuZXcga2V5IGZpcnN0IGFuZCByZXRpcmVzIHRoZSBvbGQgb25lIGFmdGVyd2FyZHMgKHNlZVxuICogYHN0b3JlLXRva2VuYCksIHNvIGEgZmFpbHVyZSBhdCBhbnkgcG9pbnQgbGVhdmVzIGEgd29ya2luZyBjcmVkZW50aWFsIGluIHRoZVxuICogc2VjcmV0IHJhdGhlciB0aGFuIGFuIGVtcHR5IG9uZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb3Zpc2lvblNlcnZpY2VBY2NvdW50S2V5KG9wdHM6IFByb3Zpc2lvbktleU9wdGlvbnMpOiBQcm9taXNlPFByb3Zpc2lvbmVkS2V5PiB7XG4gIGNvbnN0IG9yZ2FuaXphdGlvbklkID0gYXdhaXQgcmVzb2x2ZU9yZ2FuaXphdGlvbklkKG9wdHMuY2xpZW50KTtcbiAgY29uc3Qgc2VydmljZUFjY291bnRJZCA9IGF3YWl0IGVuc3VyZUFjY291bnQob3B0cywgb3JnYW5pemF0aW9uSWQpO1xuICBjb25zdCB7IGtleSwgYWNjZXNzS2V5IH0gPSBhd2FpdCBpc3N1ZUtleShvcHRzLCBvcmdhbml6YXRpb25JZCwgc2VydmljZUFjY291bnRJZCk7XG4gIHJldHVybiB7XG4gICAga2V5LFxuICAgIGtleUlkOiBhY2Nlc3NLZXkuaWQsXG4gICAgc2VydmljZUFjY291bnRJZCxcbiAgICBzZXJ2aWNlQWNjb3VudE5hbWU6IG9wdHMuYWNjb3VudE5hbWUsXG4gICAgb3JnYW5pemF0aW9uSWQsXG4gICAgZXhwaXJlc0F0OiBhY2Nlc3NLZXkuZXhwaXJlc0F0LFxuICAgIHNjb3BlOiBhY2Nlc3NLZXkuc2NvcGUgPz8gbnVsbCxcbiAgfTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -33,9 +33,9 @@
33
33
  "@aws-sdk/client-secrets-manager": "3.1160.0",
34
34
  "@aws-sdk/client-sqs": "3.1160.0",
35
35
  "@aws-sdk/client-sts": "3.1160.0",
36
- "@pipeline-builder/ai-core": "4.3.3",
37
- "@pipeline-builder/api-core": "5.2.3",
38
- "@pipeline-builder/pipeline-core": "4.4.3",
36
+ "@pipeline-builder/ai-core": "4.3.4",
37
+ "@pipeline-builder/api-core": "5.2.4",
38
+ "@pipeline-builder/pipeline-core": "4.4.4",
39
39
  "aws-cdk-lib": "2.275.0",
40
40
  "axios": "1.21.0",
41
41
  "commander": "15.0.0",
@@ -103,9 +103,10 @@
103
103
  "homepage": "https://mwashburn160.github.io/pipeline-builder/",
104
104
  "publishConfig": {
105
105
  "access": "public",
106
- "registry": "https://registry.npmjs.org/"
106
+ "registry": "https://registry.npmjs.org/",
107
+ "provenance": true
107
108
  },
108
- "version": "4.4.6",
109
+ "version": "4.4.8",
109
110
  "bugs": {
110
111
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
111
112
  },