@pipeline-builder/api-core 4.1.22 → 5.0.1

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 (56) hide show
  1. package/lib/errors/app-errors.d.ts +4 -2
  2. package/lib/errors/app-errors.js +6 -4
  3. package/lib/helpers/content-disposition.d.ts +14 -0
  4. package/lib/helpers/content-disposition.js +22 -0
  5. package/lib/helpers/index.d.ts +1 -0
  6. package/lib/helpers/index.js +2 -1
  7. package/lib/middleware/assurance.js +2 -2
  8. package/lib/middleware/auth.js +7 -7
  9. package/lib/middleware/ecosystem-guard.js +3 -3
  10. package/lib/middleware/permission-gates.js +3 -3
  11. package/lib/middleware/service-tokens.js +2 -2
  12. package/lib/middleware/step-up.js +2 -2
  13. package/lib/services/api-key-exchange.js +2 -2
  14. package/lib/services/compliance-client.js +2 -2
  15. package/lib/services/durable-event-bus.js +3 -1
  16. package/lib/services/index.d.ts +1 -1
  17. package/lib/services/index.js +2 -2
  18. package/lib/services/jwks-cache.js +2 -2
  19. package/lib/services/leader-lock.d.ts +56 -3
  20. package/lib/services/leader-lock.js +60 -4
  21. package/lib/services/quota.js +2 -2
  22. package/lib/services/scheduler.d.ts +20 -4
  23. package/lib/services/scheduler.js +36 -6
  24. package/lib/services/service-keys.d.ts +0 -4
  25. package/lib/services/service-keys.js +1 -14
  26. package/lib/types/catalog-metadata.d.ts +0 -6
  27. package/lib/types/catalog-metadata.js +1 -1
  28. package/lib/types/ecosystem.d.ts +0 -1
  29. package/lib/types/ecosystem.js +1 -1
  30. package/lib/types/feature-flags.d.ts +1 -1
  31. package/lib/types/feature-flags.js +6 -1
  32. package/lib/types/index.d.ts +3 -2
  33. package/lib/types/index.js +3 -2
  34. package/lib/types/permissions.d.ts +16 -1
  35. package/lib/types/permissions.js +23 -2
  36. package/lib/types/plugin-scan.d.ts +26 -0
  37. package/lib/types/plugin-scan.js +1 -1
  38. package/lib/types/remote-audit-actions.d.ts +1 -1
  39. package/lib/types/remote-audit-actions.js +35 -1
  40. package/lib/types/reserved-tags.d.ts +28 -0
  41. package/lib/types/reserved-tags.js +37 -0
  42. package/lib/utils/index.d.ts +1 -1
  43. package/lib/utils/index.js +2 -2
  44. package/lib/utils/params.d.ts +33 -1
  45. package/lib/utils/params.js +54 -2
  46. package/lib/utils/response.js +2 -2
  47. package/lib/utils/secret-encryption.d.ts +0 -2
  48. package/lib/utils/secret-encryption.js +1 -5
  49. package/lib/validation/message-schemas.d.ts +0 -7
  50. package/lib/validation/message-schemas.js +3 -2
  51. package/lib/validation/pipeline-schemas.d.ts +6 -0
  52. package/lib/validation/pipeline-schemas.js +32 -2
  53. package/lib/validation/plugin-catalog-detect.d.ts +1 -1
  54. package/lib/validation/plugin-catalog-detect.js +2 -2
  55. package/lib/validation/plugin-spec-schema.js +2 -2
  56. package/package.json +2 -4
@@ -123,10 +123,6 @@ function ephemeralSigningKey(serviceName) {
123
123
  ephemeralKeys.set(serviceName, generated);
124
124
  return generated;
125
125
  }
126
- /** Whether this process signs with a mounted key (`configured`) or an in-process one. */
127
- export function serviceKeyMode() {
128
- return process.env.SERVICE_SIGNING_KEY_FILE ? 'configured' : 'ephemeral';
129
- }
130
126
  /**
131
127
  * The key `serviceName` must be signed with.
132
128
  *
@@ -241,15 +237,6 @@ export function isServiceKid(kid) {
241
237
  return false;
242
238
  }
243
239
  }
244
- /** Every service name the bundle publishes a key for. Diagnostics and tests. */
245
- export function knownServiceNames() {
246
- try {
247
- return [...new Set([...verificationKeys().values()].map((v) => v.serviceName))].sort();
248
- }
249
- catch {
250
- return [];
251
- }
252
- }
253
240
  // ---------------------------------------------------------------------------
254
241
  // Sign / verify
255
242
  // ---------------------------------------------------------------------------
@@ -353,4 +340,4 @@ export function _resetServiceKeysForTests() {
353
340
  ephemeralKeys = undefined;
354
341
  ephemeralWarned = false;
355
342
  }
356
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3NlcnZpY2Uta2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtERztBQUVILE9BQU8sTUFBTSxFQUFFLEVBQWtCLE1BQU0sUUFBUSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzVDLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBa0IsTUFBTSxpQkFBaUIsQ0FBQztBQUNySCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFNUMsdUVBQXVFO0FBQ3ZFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE9BQU8sQ0FBQztBQUUvQyx1RkFBdUY7QUFDdkYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBRWpELGlGQUFpRjtBQUNqRixNQUFNLDBCQUEwQixHQUFHLE9BQU8sQ0FBQyxDQUFDLFlBQVk7QUFvQnhELDZFQUE2RTtBQUM3RSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxLQUFLO0lBQ3hDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7Q0FD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SUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFDN0IsT0FBTyxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx5QkFBeUI7SUFDdkMsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUNyQixNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ25CLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDMUIsZUFBZSxHQUFHLEtBQUssQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGVyLXNlcnZpY2Ugc2lnbmluZyBrZXlzIGZvciBJTlRFUk5BTCBzZXJ2aWNlLXRvLXNlcnZpY2UgdG9rZW5zLlxuICpcbiAqIEJlZm9yZSB0aGlzLCBldmVyeSBzZXJ2aWNlIGhlbGQgb25lIHNoYXJlZCBgSldUX1NFQ1JFVGAsIHNvIGFueSBzZXJ2aWNlIGNvdWxkXG4gKiBtaW50IGEgdG9rZW4gbmFtaW5nIGFueSBPVEhFUiBzZXJ2aWNlIOKAlCBcImJpbGxpbmcgc2FpZCBzb1wiIHdhcyB1bmZhbHNpZmlhYmxlLFxuICogYW5kIGEgc2luZ2xlIGNvbXByb21pc2VkIHdvcmtsb2FkIGNvdWxkIHNwZWFrIGZvciB0aGUgd2hvbGUgZmxlZXQuIE5vdyBlYWNoXG4gKiBzZXJ2aWNlIHNpZ25zIHdpdGggaXRzIE9XTiBFUzI1NiAoRUMgUC0yNTYpIGtleSBhbmQgY29uc3VtZXJzIHZlcmlmeSBhZ2FpbnN0XG4gKiB0aGUgcHVibGljIGhhbHZlcy4gVGhlIGBraWRgIGlzIGJvdW5kIHRvIHRoZSBzaWduZXIncyBOQU1FLCBzbyBhIHRva2VuIHdob3NlXG4gKiBgc3ViYCBzYXlzIGBzZXJ2aWNlOmJpbGxpbmdgIGJ1dCB3YXMgc2lnbmVkIHdpdGggY29tcGxpYW5jZSdzIGtleSBpcyBhXG4gKiBmb3JnZXJ5LCBub3QgYSB2YWxpZCB0b2tlbiB3aXRoIGEgY29uZnVzaW5nIHN1YmplY3QuXG4gKlxuICogIyMgV2h5IHB1YmxpYyBrZXlzIGFyZSBkaXN0cmlidXRlZCBieSBDT05GSUcsIG5vdCBieSBwZXItc2VydmljZSBKV0tTIGVuZHBvaW50c1xuICpcbiAqIFRoZSB1c2VyIGNoYWluIGZldGNoZXMgcGxhdGZvcm0ncyBKV0tTIG92ZXIgSFRUUCBiZWNhdXNlIHRoZXJlIGlzIGV4YWN0bHlcbiAqIG9uZSBzaWduZXIgYW5kIGl0IGlzIHRoZSBvbmUgc2VydmljZSB0aGF0IG11c3QgYmUgdXAgZm9yIGFueWJvZHkgdG8gc2lnbiBpbi5cbiAqIFRoZSBzZXJ2aWNlIGNoYWluIGlzIHRoZSBvcHBvc2l0ZSBzaGFwZSwgYW5kIHRocmVlIHByb3BlcnRpZXMgZGVjaWRlZCBpdDpcbiAqXG4gKiAgMS4gKipgdmVyaWZ5U2VydmljZVByaW5jaXBhbGAgbXVzdCBzdGF5IHN5bmNocm9ub3VzLioqIFRoZSBnbG9iYWwgcmF0ZVxuICogICAgIGxpbWl0ZXIncyBgc2tpcGAgYW5kIGFwcC1mYWN0b3J5J3MgYC93YXJtdXBgIGd1YXJkIHZlcmlmeSBhIHNlcnZpY2UgdG9rZW5cbiAqICAgICBCRUZPUkUgYHJlcXVpcmVBdXRoYCBydW5zLCBpbiBzeW5jaHJvbm91cyBFeHByZXNzIGNhbGxiYWNrcy4gQW4gSFRUUCBKV0tTXG4gKiAgICAgZmV0Y2ggd291bGQgZm9yY2UgdGhvc2UgYXN5bmMg4oCUIGEgY2hhbmdlIHRoYXQgcmVhY2hlcyBpbnRvIGV2ZXJ5XG4gKiAgICAgc2VydmljZSdzIGxpbWl0ZXIgd2lyaW5nLlxuICogIDIuICoqTm8gYXZhaWxhYmlsaXR5IGNvdXBsaW5nLioqIFdpdGggcGVyLXNlcnZpY2UgSldLUyBlbmRwb2ludHMsIHZlcmlmeWluZyBhXG4gKiAgICAgdG9rZW4gbWludGVkIGJ5IGBiaWxsaW5nYCBuZWVkcyBgYmlsbGluZ2AgdG8gYmUgcmVhY2hhYmxlIOKAlCBzbyBiaWxsaW5nXG4gKiAgICAgYmVpbmcgZG93biB3b3VsZCBzdG9wIHBsYXRmb3JtIGZyb20gYWNjZXB0aW5nIGJpbGxpbmcncyBpbi1mbGlnaHQgY2FsbHMsXG4gKiAgICAgdHVybmluZyBvbmUgb3V0YWdlIGludG8gc2V2ZXJhbC4gQSBtb3VudGVkIGZpbGUgaGFzIG5vIHN1Y2ggZWRnZS5cbiAqICAzLiAqKk5vIE7Dl04gYWRkcmVzcyBjb25maWcuKiogMTAgc2VydmljZXMgd291bGQgZWFjaCBuZWVkIGV2ZXJ5IHBlZXInc1xuICogICAgIGhvc3QvcG9ydCAoYW5kIGNvbXBvc2UsIHdoaWNoIGhhcyBubyBtZXNoLCB3b3VsZCBuZWVkIHRoZW0gdG9vKS5cbiAqXG4gKiBTbyB0aGUgZGVwbG95IGdlbmVyYXRlcyBvbmUga2V5cGFpciBwZXIgc2VydmljZSwgbW91bnRzIGVhY2ggcHJpdmF0ZSBrZXkgT05MWVxuICogaW50byBpdHMgb3duIHNlcnZpY2UsIGFuZCBtb3VudHMgT05FIHB1YmxpYyBidW5kbGUgKHJlYWQtb25seSkgZXZlcnl3aGVyZTpcbiAqXG4gKiAgIGBTRVJWSUNFX1NJR05JTkdfS0VZX0ZJTEVgICB0aGlzIHNlcnZpY2UncyBFQyBQLTI1NiBwcml2YXRlIGtleSAoUEtDUyM4IFBFTSlcbiAqICAgYFNFUlZJQ0VfS0VZX0JVTkRMRV9GSUxFYCAgIGB7IFwic2VydmljZXNcIjogeyBcIjxuYW1lPlwiOiB7IFwia2V5c1wiOiBbPGp3az7igKZdIH0gfSB9YFxuICpcbiAqIFJvdGF0aW9uIGlzIGJ5IGBraWRgLCBpbiB0aGUgc2FtZSBzaGFwZSBhcyB0aGUgdXNlciBjaGFpbjogYWRkIHRoZSBuZXcgcHVibGljXG4gKiBrZXkgdG8gdGhlIGJ1bmRsZSAodGhlIHNlcnZpY2Ugbm93IHB1Ymxpc2hlcyB0d28pLCByb2xsIHRoZSBidW5kbGUgb3V0LCBzd2FwXG4gKiB0aGF0IHNlcnZpY2UncyBwcml2YXRlIGtleSwgdGhlbiBkcm9wIHRoZSByZXRpcmVkIHB1YmxpYyBrZXkuIFRoZSBidW5kbGUgaXNcbiAqIHJlLXJlYWQgb24gYW4gaW50ZXJ2YWwgQU5EIG9uIGFuIG10aW1lIGNoYW5nZSwgc28gYSByb3RhdGlvbiBuZWVkcyBubyByZXN0YXJ0LlxuICogYGRlcGxveS9iaW4vc2VydmljZS1zaWduaW5nLWtleXMuc2hgIGdlbmVyYXRlcyBhbmQgcm90YXRlcyBib3RoIGhhbHZlcy5cbiAqXG4gKiAjIyBFcGhlbWVyYWwgbW9kZVxuICpcbiAqIFdpdGggbm8gYFNFUlZJQ0VfU0lHTklOR19LRVlfRklMRWAgY29uZmlndXJlZCwgYSBrZXlwYWlyIGlzIGdlbmVyYXRlZFxuICogSU4tUFJPQ0VTUyBwZXIgcmVxdWVzdGVkIHNlcnZpY2UgbmFtZSBhbmQgcmVnaXN0ZXJlZCBpbiB0aGUgaW4tbWVtb3J5IGJ1bmRsZS5cbiAqIFRoYXQga2VlcHMgc2luZ2xlLXByb2Nlc3Mgc3VpdGVzIGFuZCBsb2NhbCBvbmUtb2ZmIHNjcmlwdHMgd29ya2luZyB3aXRoIG5vIGtleVxuICogbWF0ZXJpYWwsIGFuZCBpdCBjYW4gbmV2ZXIgd2lkZW4gdHJ1c3Q6IHRoZSBvbmx5IHZlcmlmaWVyIHRoYXQgYWNjZXB0cyBzdWNoIGFcbiAqIHRva2VuIGlzIHRoZSBwcm9jZXNzIHRoYXQgbWludGVkIGl0LiBJdCBpcyBsb2dnZWQgb25jZSBhdCB3YXJuIGxldmVsLCBhbmRcbiAqIGNvdW50ZWQsIGJlY2F1c2UgaW4gYSByZWFsIGRlcGxveW1lbnQgaXQgbWVhbnMgdGhpcyBzZXJ2aWNlJ3MgcGVlcnMgd2lsbFxuICogcmVqZWN0IGV2ZXJ5dGhpbmcgaXQgc2VuZHMuXG4gKi9cblxuaW1wb3J0IGNyeXB0bywgeyB0eXBlIEtleU9iamVjdCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyByZWFkRmlsZVN5bmMsIHN0YXRTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IGp3dCBmcm9tICdqc29ud2VidG9rZW4nO1xuaW1wb3J0IHsgY29tcGFjdEp3cywgZW5jb2RlSndzU2lnbmluZ0lucHV0LCBwdWJsaWNKd2tGcm9tLCBwdWJsaWNLZXlGcm9tSndrLCB0eXBlIFB1YmxpY0p3ayB9IGZyb20gJy4uL3V0aWxzL2p3ay5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignc2VydmljZS1rZXlzJyk7XG5cbi8qKiBUaGUgT05MWSBhbGdvcml0aG0gYW4gaW50ZXJuYWwgc2VydmljZSB0b2tlbiBtYXkgYmUgc2lnbmVkIHdpdGguICovXG5leHBvcnQgY29uc3QgU0VSVklDRV9UT0tFTl9BTEdPUklUSE0gPSAnRVMyNTYnO1xuXG4vKiogU3ViamVjdCBwcmVmaXggbmFtaW5nIHRoZSBjYWxsaW5nIHNlcnZpY2Ugb24gYSBzZXJ2aWNlIHRva2VuIChgc2VydmljZTo8bmFtZT5gKS4gKi9cbmV4cG9ydCBjb25zdCBTRVJWSUNFX1NVQkpFQ1RfUFJFRklYID0gJ3NlcnZpY2U6JztcblxuLyoqIEhvdyBsb25nIGEgbG9hZGVkIGJ1bmRsZSBpcyBzZXJ2ZWQgYmVmb3JlIGl0IGlzIHJlLXJlYWQgKHJvdGF0aW9uIHBpY2t1cCkuICovXG5jb25zdCBCVU5ETEVfUkVGUkVTSF9JTlRFUlZBTF9NUyA9IDMwMF8wMDA7IC8vIDUgbWludXRlc1xuXG4vKiogT25lIHNlcnZpY2UncyBwdWJsaXNoZWQgdmVyaWZpY2F0aW9uIGtleXMsIGFzIHRoZXkgYXBwZWFyIGluIHRoZSBidW5kbGUgZmlsZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUtleUVudHJ5IHtcbiAga2V5czogUHVibGljSndrW107XG59XG5cbi8qKiBUaGUgZG9jdW1lbnQgYFNFUlZJQ0VfS0VZX0JVTkRMRV9GSUxFYCBob2xkczogZXZlcnkgc2VydmljZSdzIHB1YmxpYyBrZXlzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlS2V5QnVuZGxlIHtcbiAgc2VydmljZXM6IFJlY29yZDxzdHJpbmcsIFNlcnZpY2VLZXlFbnRyeT47XG59XG5cbi8qKiBBIHNpZ25pbmcga2V5IHRoaXMgcHJvY2VzcyBob2xkcywgaW4gdGhlIGZvcm1zIHNpZ25pbmcgbmVlZHMuICovXG5pbnRlcmZhY2UgTG9jYWxTaWduaW5nS2V5IHtcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAga2lkOiBzdHJpbmc7XG4gIHByaXZhdGVLZXk6IEtleU9iamVjdDtcbiAgcHVibGljSndrOiBQdWJsaWNKd2s7XG59XG5cbi8qKiBUaGUgYnVuZGxlIGNvdWxkIG5vdCBiZSBsb2FkZWQgb3IgZG9lcyBub3Qga25vdyB0aGUga2V5IGEgdG9rZW4gbmFtZXMuICovXG5leHBvcnQgY2xhc3MgU2VydmljZUtleUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnU2VydmljZUtleUVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgcHJvY2VzcydzIHNlcnZpY2UgaWRlbnRpdHkg4oCUIHRoZSBgPG5hbWU+YCBpbiBgc2VydmljZTo8bmFtZT5gIGFuZCB0aGVcbiAqIG5hbWUgaXRzIGtleSBpcyBwdWJsaXNoZWQgdW5kZXIuIGBTRVJWSUNFX05BTUVgIGlzIGFscmVhZHkgc2V0IHBlciBzZXJ2aWNlIGluXG4gKiBldmVyeSBkZXBsb3kgdGFyZ2V0IChjb21wb3NlLCBtaW5pa3ViZSwgZWMyLCBla3MpLCBhbmQgaXMgdGhlIHNhbWUgdmFsdWUgdGhlXG4gKiBhdWRpdCBhbmQgbWV0cmljIGxhYmVscyB1c2UsIHNvIHRoZXJlIGlzIG9uZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIFwid2hvIGFtIElcIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VJZGVudGl0eSgpOiBzdHJpbmcge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FIHx8ICdhcGknO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIExvY2FsIHNpZ25pbmcga2V5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxubGV0IGxvY2FsS2V5OiBMb2NhbFNpZ25pbmdLZXkgfCB1bmRlZmluZWQ7XG5sZXQgZXBoZW1lcmFsS2V5czogTWFwPHN0cmluZywgTG9jYWxTaWduaW5nS2V5PiB8IHVuZGVmaW5lZDtcbmxldCBlcGhlbWVyYWxXYXJuZWQgPSBmYWxzZTtcblxuZnVuY3Rpb24gbG9hZENvbmZpZ3VyZWRTaWduaW5nS2V5KGZpbGU6IHN0cmluZyk6IExvY2FsU2lnbmluZ0tleSB7XG4gIGNvbnN0IHNlcnZpY2VOYW1lID0gc2VydmljZUlkZW50aXR5KCk7XG4gIGxldCBwcml2YXRlS2V5OiBLZXlPYmplY3Q7XG4gIHRyeSB7XG4gICAgcHJpdmF0ZUtleSA9IGNyeXB0by5jcmVhdGVQcml2YXRlS2V5KHJlYWRGaWxlU3luYyhmaWxlLCAndXRmOCcpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgU2VydmljZUtleUVycm9yKGBDb3VsZCBub3QgcmVhZCB0aGUgc2VydmljZSBzaWduaW5nIGtleSBhdCAke2ZpbGV9OiAke2Vycm9yTWVzc2FnZShlcnJvcil9YCk7XG4gIH1cbiAgLy8gcHVibGljSndrRnJvbSByZWplY3RzIGFueXRoaW5nIGJ1dCBhbiBFQyBQLTI1NiBrZXksIHNvIGEgc2VydmljZSBjb25maWd1cmVkXG4gIC8vIHdpdGggKHNheSkgYW4gUlNBIGtleSBmYWlscyBIRVJFIHJhdGhlciB0aGFuIG1pbnRpbmcgdG9rZW5zIG5vYm9keSB2ZXJpZmllcy5cbiAgY29uc3QgcHVibGljSndrID0gcHVibGljSndrRnJvbShjcnlwdG8uY3JlYXRlUHVibGljS2V5KHByaXZhdGVLZXkpKTtcbiAgcmV0dXJuIHsgc2VydmljZU5hbWUsIGtpZDogcHVibGljSndrLmtpZCwgcHJpdmF0ZUtleSwgcHVibGljSndrIH07XG59XG5cbi8qKlxuICogVGhlIGluLXByb2Nlc3Mga2V5IGZvciBgc2VydmljZU5hbWVgIGluIGVwaGVtZXJhbCBtb2RlLCBnZW5lcmF0ZWQgb24gZmlyc3RcbiAqIHVzZSBhbmQgcmVnaXN0ZXJlZCBpbiB0aGUgaW4tbWVtb3J5IGJ1bmRsZSBzbyB0aGlzIHByb2Nlc3MgY2FuIHZlcmlmeSBpdHMgb3duXG4gKiB0b2tlbnMuIEtleWVkIGJ5IE5BTUUgKG5vdCBqdXN0IG9uZSBrZXkpIHNvIGEgc2luZ2xlLXByb2Nlc3Mgc3VpdGUgY2FuIG1pbnRcbiAqIHRva2VucyBmb3Igc2V2ZXJhbCBzZXJ2aWNlcywgYXMgdGhlIHJlYWwgZmxlZXQgZG9lcyBhY3Jvc3MgcHJvY2Vzc2VzLlxuICovXG5mdW5jdGlvbiBlcGhlbWVyYWxTaWduaW5nS2V5KHNlcnZpY2VOYW1lOiBzdHJpbmcpOiBMb2NhbFNpZ25pbmdLZXkge1xuICBlcGhlbWVyYWxLZXlzID8/PSBuZXcgTWFwKCk7XG4gIGNvbnN0IGV4aXN0aW5nID0gZXBoZW1lcmFsS2V5cy5nZXQoc2VydmljZU5hbWUpO1xuICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcblxuICBpZiAoIWVwaGVtZXJhbFdhcm5lZCkge1xuICAgIGVwaGVtZXJhbFdhcm5lZCA9IHRydWU7XG4gICAgZW1pdENvdW50ZXIoJ3NlcnZpY2Vfc2lnbmluZ19lcGhlbWVyYWxfa2V5X3RvdGFsJywgeyBzZXJ2aWNlOiBzZXJ2aWNlSWRlbnRpdHkoKSB9KTtcbiAgICBsb2dnZXIud2FybignU0VSVklDRV9TSUdOSU5HX0tFWV9GSUxFIGlzIG5vdCBzZXQg4oCUIG1pbnRpbmcgaW50ZXJuYWwgc2VydmljZSB0b2tlbnMgd2l0aCBhbiBFUEhFTUVSQUwga2V5LiBPbmx5IHRoaXMgcHJvY2VzcyB3aWxsIGFjY2VwdCB0aGVtOyBldmVyeSBwZWVyIHdpbGwgcmVqZWN0IHRoZW0uIFNldCBTRVJWSUNFX1NJR05JTkdfS0VZX0ZJTEUgKyBTRVJWSUNFX0tFWV9CVU5ETEVfRklMRSAoZGVwbG95L2Jpbi9zZXJ2aWNlLXNpZ25pbmcta2V5cy5zaCkuJyk7XG4gIH1cbiAgY29uc3QgeyBwcml2YXRlS2V5LCBwdWJsaWNLZXkgfSA9IGNyeXB0by5nZW5lcmF0ZUtleVBhaXJTeW5jKCdlYycsIHsgbmFtZWRDdXJ2ZTogJ3ByaW1lMjU2djEnIH0pO1xuICBjb25zdCBwdWJsaWNKd2sgPSBwdWJsaWNKd2tGcm9tKHB1YmxpY0tleSk7XG4gIGNvbnN0IGdlbmVyYXRlZDogTG9jYWxTaWduaW5nS2V5ID0geyBzZXJ2aWNlTmFtZSwga2lkOiBwdWJsaWNKd2sua2lkLCBwcml2YXRlS2V5LCBwdWJsaWNKd2sgfTtcbiAgZXBoZW1lcmFsS2V5cy5zZXQoc2VydmljZU5hbWUsIGdlbmVyYXRlZCk7XG4gIHJldHVybiBnZW5lcmF0ZWQ7XG59XG5cbi8qKiBXaGV0aGVyIHRoaXMgcHJvY2VzcyBzaWducyB3aXRoIGEgbW91bnRlZCBrZXkgKGBjb25maWd1cmVkYCkgb3IgYW4gaW4tcHJvY2VzcyBvbmUuICovXG5leHBvcnQgZnVuY3Rpb24gc2VydmljZUtleU1vZGUoKTogJ2NvbmZpZ3VyZWQnIHwgJ2VwaGVtZXJhbCcge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuU0VSVklDRV9TSUdOSU5HX0tFWV9GSUxFID8gJ2NvbmZpZ3VyZWQnIDogJ2VwaGVtZXJhbCc7XG59XG5cbi8qKlxuICogVGhlIGtleSBgc2VydmljZU5hbWVgIG11c3QgYmUgc2lnbmVkIHdpdGguXG4gKlxuICogSW4gYGNvbmZpZ3VyZWRgIG1vZGUgdGhlcmUgaXMgZXhhY3RseSBPTkUga2V5IOKAlCB0aGlzIHNlcnZpY2UncyDigJQgc28gYSByZXF1ZXN0XG4gKiB0byBzaWduIGFzIHNvbWUgT1RIRVIgc2VydmljZSBpcyBhIGJ1ZyBhbmQgdGhyb3dzOiBzdWNoIGEgdG9rZW4gd291bGQgYmVcbiAqIHVudmVyaWZpYWJsZSBldmVyeXdoZXJlIChpdHMgYGtpZGAgbmFtZXMgdGhpcyBzZXJ2aWNlLCBpdHMgYHN1YmAgYW5vdGhlcikuXG4gKiBGYWlsaW5nIGF0IHRoZSBtaW50IG1ha2VzIHRoYXQgYW4gaW1tZWRpYXRlLCBvYnZpb3VzIGVycm9yIGluc3RlYWQgb2YgYVxuICogcnVudGltZSA0MDEuXG4gKi9cbmZ1bmN0aW9uIHNpZ25pbmdLZXlGb3Ioc2VydmljZU5hbWU6IHN0cmluZyk6IExvY2FsU2lnbmluZ0tleSB7XG4gIGNvbnN0IGZpbGUgPSBwcm9jZXNzLmVudi5TRVJWSUNFX1NJR05JTkdfS0VZX0ZJTEU7XG4gIGlmICghZmlsZSkgcmV0dXJuIGVwaGVtZXJhbFNpZ25pbmdLZXkoc2VydmljZU5hbWUpO1xuXG4gIGlmICghbG9jYWxLZXkgfHwgbG9jYWxLZXkuc2VydmljZU5hbWUgIT09IHNlcnZpY2VJZGVudGl0eSgpKSB7XG4gICAgbG9jYWxLZXkgPSBsb2FkQ29uZmlndXJlZFNpZ25pbmdLZXkoZmlsZSk7XG4gIH1cbiAgaWYgKHNlcnZpY2VOYW1lICE9PSBsb2NhbEtleS5zZXJ2aWNlTmFtZSkge1xuICAgIHRocm93IG5ldyBTZXJ2aWNlS2V5RXJyb3IoXG4gICAgICBgVGhpcyBwcm9jZXNzIGlzICcke2xvY2FsS2V5LnNlcnZpY2VOYW1lfScgYW5kIGhvbGRzIG9ubHkgaXRzIG93biBzaWduaW5nIGtleSwgc28gaXQgY2Fubm90IG1pbnQgYSB0b2tlbiBmb3IgJyR7c2VydmljZU5hbWV9Jy4gYFxuICAgICAgKyAnTmFtZSB0aGUgY2FsbGluZyBzZXJ2aWNlIGNvcnJlY3RseSwgb3IgZ2l2ZSB0aGUgY2FsbGVyIGl0cyBvd24ga2V5LicsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gbG9jYWxLZXk7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVmVyaWZpY2F0aW9uIGJ1bmRsZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmludGVyZmFjZSBMb2FkZWRCdW5kbGUge1xuICAvKiogYGtpZGAg4oaSIHRoZSBzZXJ2aWNlIHRoYXQgcHVibGlzaGVkIGl0LCBwbHVzIHRoZSB2ZXJpZmljYXRpb24ga2V5LiAqL1xuICBieUtpZDogTWFwPHN0cmluZywgeyBzZXJ2aWNlTmFtZTogc3RyaW5nOyBrZXk6IEtleU9iamVjdCB9PjtcbiAgbG9hZGVkQXQ6IG51bWJlcjtcbiAgbXRpbWVNczogbnVtYmVyO1xufVxuXG5sZXQgYnVuZGxlOiBMb2FkZWRCdW5kbGUgfCB1bmRlZmluZWQ7XG5cbmZ1bmN0aW9uIHBhcnNlQnVuZGxlKHJhdzogc3RyaW5nLCBmaWxlOiBzdHJpbmcpOiBNYXA8c3RyaW5nLCB7IHNlcnZpY2VOYW1lOiBzdHJpbmc7IGtleTogS2V5T2JqZWN0IH0+IHtcbiAgbGV0IGRvY3VtZW50OiB1bmtub3duO1xuICB0cnkge1xuICAgIGRvY3VtZW50ID0gSlNPTi5wYXJzZShyYXcpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IG5ldyBTZXJ2aWNlS2V5RXJyb3IoYCR7ZmlsZX0gaXMgbm90IHZhbGlkIEpTT046ICR7ZXJyb3JNZXNzYWdlKGVycm9yKX1gKTtcbiAgfVxuICBjb25zdCBzZXJ2aWNlcyA9IChkb2N1bWVudCBhcyBQYXJ0aWFsPFNlcnZpY2VLZXlCdW5kbGU+KT8uc2VydmljZXM7XG4gIGlmICghc2VydmljZXMgfHwgdHlwZW9mIHNlcnZpY2VzICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBTZXJ2aWNlS2V5RXJyb3IoYCR7ZmlsZX0gaGFzIG5vIFwic2VydmljZXNcIiBvYmplY3RgKTtcbiAgfVxuICBjb25zdCBieUtpZCA9IG5ldyBNYXA8c3RyaW5nLCB7IHNlcnZpY2VOYW1lOiBzdHJpbmc7IGtleTogS2V5T2JqZWN0IH0+KCk7XG4gIGZvciAoY29uc3QgW3NlcnZpY2VOYW1lLCBlbnRyeV0gb2YgT2JqZWN0LmVudHJpZXMoc2VydmljZXMpKSB7XG4gICAgZm9yIChjb25zdCBqd2sgb2YgZW50cnk/LmtleXMgPz8gW10pIHtcbiAgICAgIGlmICghandrPy5raWQpIGNvbnRpbnVlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYnlLaWQuc2V0KGp3ay5raWQsIHsgc2VydmljZU5hbWUsIGtleTogcHVibGljS2V5RnJvbUp3ayhqd2spIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gT25lIHVudXNhYmxlIGVudHJ5IG11c3Qgbm90IGRpc2NhcmQgdGhlIHJlc3Qgb2YgdGhlIGJ1bmRsZSDigJQgdGhlIHNhbWVcbiAgICAgICAgLy8gcnVsZSB0aGUgSldLUyBjYWNoZSBhcHBsaWVzIHRvIHBsYXRmb3JtJ3MgcHVibGlzaGVkIHNldC5cbiAgICAgICAgbG9nZ2VyLndhcm4oJ1NraXBwaW5nIHVudXNhYmxlIHNlcnZpY2Uga2V5JywgeyBzZXJ2aWNlTmFtZSwga2lkOiBqd2sua2lkLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycm9yKSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGJ5S2lkLnNpemUgPT09IDApIHRocm93IG5ldyBTZXJ2aWNlS2V5RXJyb3IoYCR7ZmlsZX0gY29udGFpbmVkIG5vIHVzYWJsZSBzZXJ2aWNlIGtleXNgKTtcbiAgcmV0dXJuIGJ5S2lkO1xufVxuXG4vKipcbiAqIFRoZSBga2lkYCDihpIgc2VydmljZSBtYXAsIHJlLXJlYWQgd2hlbiB0aGUgcmVmcmVzaCBpbnRlcnZhbCBoYXMgcGFzc2VkIG9yIHRoZVxuICogZmlsZSdzIG10aW1lIGNoYW5nZWQgKHNvIGEgcm90YXRpb24gaXMgcGlja2VkIHVwIHdpdGhvdXQgYSByZXN0YXJ0KS5cbiAqXG4gKiBJbiBlcGhlbWVyYWwgbW9kZSB0aGUgXCJidW5kbGVcIiBpcyB3aGF0ZXZlciB0aGlzIHByb2Nlc3MgZ2VuZXJhdGVkIGZvciBpdHNlbGYuXG4gKiBOZXZlciB0aHJvd3MgZm9yIGEgbWlzc2luZyBmaWxlIGluIHRoYXQgbW9kZSDigJQgaXQganVzdCBob2xkcyB0aG9zZSBrZXlzLlxuICovXG5mdW5jdGlvbiB2ZXJpZmljYXRpb25LZXlzKCk6IE1hcDxzdHJpbmcsIHsgc2VydmljZU5hbWU6IHN0cmluZzsga2V5OiBLZXlPYmplY3QgfT4ge1xuICBjb25zdCBmaWxlID0gcHJvY2Vzcy5lbnYuU0VSVklDRV9LRVlfQlVORExFX0ZJTEU7XG4gIGlmICghZmlsZSkge1xuICAgIGNvbnN0IGxvY2FsID0gbmV3IE1hcDxzdHJpbmcsIHsgc2VydmljZU5hbWU6IHN0cmluZzsga2V5OiBLZXlPYmplY3QgfT4oKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBlcGhlbWVyYWxLZXlzPy52YWx1ZXMoKSA/PyBbXSkge1xuICAgICAgbG9jYWwuc2V0KGtleS5raWQsIHsgc2VydmljZU5hbWU6IGtleS5zZXJ2aWNlTmFtZSwga2V5OiBjcnlwdG8uY3JlYXRlUHVibGljS2V5KGtleS5wcml2YXRlS2V5KSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxvY2FsO1xuICB9XG5cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgbGV0IG10aW1lTXMgPSAwO1xuICB0cnkge1xuICAgIG10aW1lTXMgPSBzdGF0U3luYyhmaWxlKS5tdGltZU1zO1xuICB9IGNhdGNoIHtcbiAgICAvLyBVbnJlYWRhYmxlIG5vdzoga2VlcCBzZXJ2aW5nIGEgYnVuZGxlIGFscmVhZHkgaW4gaGFuZCAocHVibGljIGtleXMgZG9uJ3RcbiAgICAvLyBleHBpcmUsIGFuZCByZWZ1c2luZyBldmVyeSBpbnRlcm5hbCBjYWxsIGJlY2F1c2UgYSBtb3VudCBibGlwcGVkIHdvdWxkIGJlXG4gICAgLy8gYSBzZWxmLWluZmxpY3RlZCBvdXRhZ2UpLiBXaXRoIG5vdGhpbmcgaW4gaGFuZCwgZmFpbCBjbG9zZWQgYmVsb3cuXG4gICAgaWYgKGJ1bmRsZSkgcmV0dXJuIGJ1bmRsZS5ieUtpZDtcbiAgfVxuICBpZiAoYnVuZGxlICYmIGJ1bmRsZS5tdGltZU1zID09PSBtdGltZU1zICYmIG5vdyAtIGJ1bmRsZS5sb2FkZWRBdCA8IEJVTkRMRV9SRUZSRVNIX0lOVEVSVkFMX01TKSB7XG4gICAgcmV0dXJuIGJ1bmRsZS5ieUtpZDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgYnlLaWQgPSBwYXJzZUJ1bmRsZShyZWFkRmlsZVN5bmMoZmlsZSwgJ3V0ZjgnKSwgZmlsZSk7XG4gICAgYnVuZGxlID0geyBieUtpZCwgbG9hZGVkQXQ6IG5vdywgbXRpbWVNcyB9O1xuICAgIHJldHVybiBieUtpZDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoYnVuZGxlKSB7XG4gICAgICBsb2dnZXIud2FybignU2VydmljZSBrZXkgYnVuZGxlIHJlbG9hZCBmYWlsZWQ7IGNvbnRpbnVpbmcgb24gdGhlIGxvYWRlZCBjb3B5JywgeyBmaWxlLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycm9yKSB9KTtcbiAgICAgIHJldHVybiBidW5kbGUuYnlLaWQ7XG4gICAgfVxuICAgIHRocm93IGVycm9yIGluc3RhbmNlb2YgU2VydmljZUtleUVycm9yID8gZXJyb3IgOiBuZXcgU2VydmljZUtleUVycm9yKFN0cmluZyhlcnJvcikpO1xuICB9XG59XG5cbi8qKlxuICogV2hldGhlciBga2lkYCBiZWxvbmdzIHRvIGFuIGludGVybmFsIFNFUlZJQ0Uga2V5LiBUaGlzIGlzIGhvdyBhIGJlYXJlciB0b2tlblxuICogaXMgcm91dGVkIGJldHdlZW4gdGhlIHR3byBFUzI1NiBjaGFpbnM6IGJvdGggdXNlciBhbmQgc2VydmljZSB0b2tlbnMgYXJlXG4gKiBFUzI1NiB3aXRoIGEgYGtpZGAsIGFuZCBga2lkYCBpcyBhbiBSRkMgNzYzOCB0aHVtYnByaW50LCBzbyBvd25lcnNoaXAgb2YgdGhlXG4gKiBpZCDigJQgbm90IGEgY2xhaW0gaW5zaWRlIHRoZSB0b2tlbiDigJQgZGVjaWRlcyB3aGljaCBrZXkgc2V0IG1heSB2ZXJpZnkgaXQuXG4gKiBSZXR1cm5zIGBmYWxzZWAgKG5ldmVyIHRocm93cykgd2hlbiBubyBidW5kbGUgY2FuIGJlIHJlYWQ7IHRoZSB0b2tlbiB0aGVuXG4gKiB0YWtlcyB0aGUgdXNlciBjaGFpbiBhbmQgaXMgcmVqZWN0ZWQgdGhlcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NlcnZpY2VLaWQoa2lkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdmVyaWZpY2F0aW9uS2V5cygpLmhhcyhraWQpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqIEV2ZXJ5IHNlcnZpY2UgbmFtZSB0aGUgYnVuZGxlIHB1Ymxpc2hlcyBhIGtleSBmb3IuIERpYWdub3N0aWNzIGFuZCB0ZXN0cy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrbm93blNlcnZpY2VOYW1lcygpOiBzdHJpbmdbXSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIFsuLi5uZXcgU2V0KFsuLi52ZXJpZmljYXRpb25LZXlzKCkudmFsdWVzKCldLm1hcCgodikgPT4gdi5zZXJ2aWNlTmFtZSkpXS5zb3J0KCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNpZ24gLyB2ZXJpZnlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFNpZ24gYGNsYWltc2AgYXMgdGhpcyBzZXJ2aWNlJ3MgaW50ZXJuYWwgdG9rZW46IEVTMjU2LCBga2lkYCA9IHRoZSBzaWduZXInc1xuICogdGh1bWJwcmludCwgYHN1YmAgPSBgc2VydmljZTo8c2VydmljZU5hbWU+YC4gYGlhdGAvYGV4cGAgYW5kIHRoZSBvcHRpb25hbFxuICogaXNzdWVyL2F1ZGllbmNlIGFyZSBzdGFtcGVkIGhlcmUgc28gdGhlcmUgaXMgb25lIHBsYWNlIHRoYXQgZGVjaWRlcyB3aGF0IGFcbiAqIHNlcnZpY2UgdG9rZW4gc2F5cy5cbiAqXG4gKiBIYW5kLXJvbGxlZCAocmF0aGVyIHRoYW4gYGp3dC5zaWduYCkgb25seSBzbyB0aGUgaGVhZGVyIGNhcnJpZXMgdGhlIGBraWRgIGluXG4gKiB0aGUgc2FtZSBzaGFwZSBwbGF0Zm9ybSdzIHNpZ25lciBwcm9kdWNlcyDigJQgYGNyeXB0by5zaWduYCBpcyBzeW5jaHJvbm91cywgc29cbiAqIHVubGlrZSB0aGUgS01TIHBhdGggdGhpcyBjb3N0cyBub3RoaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnblNlcnZpY2VKd3QoXG4gIGNsYWltczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIG9wdGlvbnM6IHsgc2VydmljZU5hbWU6IHN0cmluZzsgZXhwaXJlc0luU2Vjb25kczogbnVtYmVyOyBpc3N1ZXI/OiBzdHJpbmc7IGF1ZGllbmNlPzogc3RyaW5nIH0sXG4pOiBzdHJpbmcge1xuICBjb25zdCBrZXkgPSBzaWduaW5nS2V5Rm9yKG9wdGlvbnMuc2VydmljZU5hbWUpO1xuICBjb25zdCBub3cgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcbiAgY29uc3QgYm9keSA9IHtcbiAgICAuLi5jbGFpbXMsXG4gICAgc3ViOiBgJHtTRVJWSUNFX1NVQkpFQ1RfUFJFRklYfSR7b3B0aW9ucy5zZXJ2aWNlTmFtZX1gLFxuICAgIGlhdDogbm93LFxuICAgIGV4cDogbm93ICsgb3B0aW9ucy5leHBpcmVzSW5TZWNvbmRzLFxuICAgIC4uLihvcHRpb25zLmlzc3VlciA/IHsgaXNzOiBvcHRpb25zLmlzc3VlciB9IDoge30pLFxuICAgIC4uLihvcHRpb25zLmF1ZGllbmNlID8geyBhdWQ6IG9wdGlvbnMuYXVkaWVuY2UgfSA6IHt9KSxcbiAgfTtcbiAgY29uc3Qgc2lnbmluZ0lucHV0ID0gZW5jb2RlSndzU2lnbmluZ0lucHV0KGtleS5raWQsIGJvZHkpO1xuICBjb25zdCBzaWduYXR1cmUgPSBjcnlwdG8uc2lnbignc2hhMjU2JywgQnVmZmVyLmZyb20oc2lnbmluZ0lucHV0LCAndXRmLTgnKSwge1xuICAgIGtleToga2V5LnByaXZhdGVLZXksXG4gICAgZHNhRW5jb2Rpbmc6ICdpZWVlLXAxMzYzJyxcbiAgfSk7XG4gIHJldHVybiBjb21wYWN0SndzKHNpZ25pbmdJbnB1dCwgc2lnbmF0dXJlKTtcbn1cblxuLyoqXG4gKiBWZXJpZnkgYW4gaW50ZXJuYWwgc2VydmljZSB0b2tlbiwgU1lOQ0hST05PVVNMWSwgYW5kIHJldHVybiBpdHMgY2xhaW1zLlxuICpcbiAqIFRoZSBzZWN1cml0eSBwcm9wZXJ0eSB0aGlzIGZ1bmN0aW9uIGV4aXN0cyBmb3I6IHRoZSBga2lkYCBzZWxlY3RzIHRoZSBrZXlcbiAqIEFORCBuYW1lcyB0aGUgc2lnbmVyLCBhbmQgdGhlIHRva2VuJ3MgYHN1YmAgbXVzdCBhZ3JlZS4gU28gYGJpbGxpbmdgIGNhbm5vdFxuICogYmUgaW1wZXJzb25hdGVkIGJ5IGFueSBvdGhlciBzZXJ2aWNlIOKAlCBub3QgZXZlbiBvbmUgdGhhdCBob2xkcyBhIHZhbGlkIGtleSBvZlxuICogaXRzIG93biDigJQgYSBndWFyYW50ZWUgbm8gc2hhcmVkIHNlY3JldCBjYW4gZ2l2ZS5cbiAqXG4gKiBAdGhyb3dzIHtqd3QuSnNvbldlYlRva2VuRXJyb3J9IHVua25vd24gYGtpZGAsIHdyb25nIGFsZ29yaXRobSwgYmFkXG4gKiAgICAgICAgIHNpZ25hdHVyZSwgZXhwaXJlZCwgb3IgYSBgc3ViYCB0aGF0IGRpc2FncmVlcyB3aXRoIHRoZSBzaWduaW5nIGtleS5cbiAqIEB0aHJvd3Mge1NlcnZpY2VLZXlFcnJvcn0gbm8gdmVyaWZpY2F0aW9uIGJ1bmRsZSBjb3VsZCBiZSByZWFkIGF0IGFsbCDigJQgdGhlXG4gKiAgICAgICAgIHRva2VuJ3MgdmFsaWRpdHkgaXMgVU5LTk9XTiBhbmQgdGhlIGNhbGxlciBtdXN0IG5vdCB0cmVhdCBpdCBhcyB2YWxpZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVNlcnZpY2VKd3Q8VCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgdG9rZW46IHN0cmluZyxcbiAgb3B0aW9uczogeyBraWQ6IHN0cmluZzsgaXNzdWVyPzogc3RyaW5nOyBhdWRpZW5jZT86IHN0cmluZyB9LFxuKTogVCB7XG4gIGNvbnN0IGVudHJ5ID0gdmVyaWZpY2F0aW9uS2V5cygpLmdldChvcHRpb25zLmtpZCk7XG4gIC8vIEVWRVJZIGVtaXNzaW9uIG9mIHRoaXMgY291bnRlciBjYXJyaWVzIHRoZSBzYW1lIGxhYmVsIEtFWVMuIFRoZSBQcm9tZXRoZXVzXG4gIC8vIGNvdW50ZXIgaXMgcmVnaXN0ZXJlZCBsYXppbHkgd2l0aCB3aGF0ZXZlciBrZXlzIGl0cyBmaXJzdCBlbWlzc2lvbiB1c2VkLFxuICAvLyBhbmQgYW4gaW5jcmVtZW50IHdpdGggYSBkaWZmZXJlbnQgc2V0IHRocm93cyDigJQgd2hpY2ggYGVtaXRDb3VudGVyYFxuICAvLyBzd2FsbG93cy4gU28gd2hlbiB0aGUgZmlyc3QgdG9rZW4gYSBwb2QgdmVyaWZpZWQgd2FzIGJhZCAoYHsgcmVzdWx0IH1gXG4gIC8vIGFsb25lKSwgZXZlcnkgbGF0ZXIgYG9rYCBhbmQgYHN1YmplY3RfbWlzbWF0Y2hgIChgeyByZXN1bHQsIHNlcnZpY2UgfWApIHdhc1xuICAvLyBzaWxlbnRseSBkcm9wcGVkIGZvciB0aGUgbGlmZSBvZiB0aGUgcHJvY2VzczogdGhlIG1ldHJpYyB0aGF0IHRlbGxzIHlvdVxuICAvLyBzZXJ2aWNlLXRvLXNlcnZpY2UgYXV0aCBpcyBoZWFsdGh5IHdlbnQgcXVpZXQgZXhhY3RseSB3aGVuIGl0IG1hdHRlcmVkLlxuICBpZiAoIWVudHJ5KSB7XG4gICAgZW1pdENvdW50ZXIoJ3NlcnZpY2VfdG9rZW5fdmVyaWZ5X3RvdGFsJywgeyByZXN1bHQ6ICd1bmtub3duX2tpZCcsIHNlcnZpY2U6ICd1bmtub3duJyB9KTtcbiAgICB0aHJvdyBuZXcgand0Lkpzb25XZWJUb2tlbkVycm9yKGBObyBwdWJsaXNoZWQgc2VydmljZSBrZXkgZm9yIGtpZCAke29wdGlvbnMua2lkfWApO1xuICB9XG4gIGxldCBjbGFpbXM6IFQgJiB7IHN1Yj86IHVua25vd24gfTtcbiAgdHJ5IHtcbiAgICBjbGFpbXMgPSBqd3QudmVyaWZ5KHRva2VuLCBlbnRyeS5rZXksIHtcbiAgICAgIGFsZ29yaXRobXM6IFtTRVJWSUNFX1RPS0VOX0FMR09SSVRITV0sXG4gICAgICAuLi4ob3B0aW9ucy5pc3N1ZXIgPyB7IGlzc3Vlcjogb3B0aW9ucy5pc3N1ZXIgfSA6IHt9KSxcbiAgICAgIC4uLihvcHRpb25zLmF1ZGllbmNlID8geyBhdWRpZW5jZTogb3B0aW9ucy5hdWRpZW5jZSB9IDoge30pLFxuICAgIH0pIGFzIFQgJiB7IHN1Yj86IHVua25vd24gfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBlbWl0Q291bnRlcignc2VydmljZV90b2tlbl92ZXJpZnlfdG90YWwnLCB7IHJlc3VsdDogJ2ludmFsaWQnLCBzZXJ2aWNlOiBlbnRyeS5zZXJ2aWNlTmFtZSB9KTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuICBpZiAoY2xhaW1zLnN1YiAhPT0gYCR7U0VSVklDRV9TVUJKRUNUX1BSRUZJWH0ke2VudHJ5LnNlcnZpY2VOYW1lfWApIHtcbiAgICAvLyBBIHZhbGlkIHNpZ25hdHVyZSBieSB0aGUgV1JPTkcgc2VydmljZTogdGhlIGtleSBiZWxvbmdzIHRvIGBlbnRyeS5zZXJ2aWNlTmFtZWBcbiAgICAvLyBidXQgdGhlIHRva2VuIHNwZWFrcyBmb3Igc29tZW9uZSBlbHNlOiBhIGNyb3NzLXNlcnZpY2UgZm9yZ2VyeS5cbiAgICBlbWl0Q291bnRlcignc2VydmljZV90b2tlbl92ZXJpZnlfdG90YWwnLCB7IHJlc3VsdDogJ3N1YmplY3RfbWlzbWF0Y2gnLCBzZXJ2aWNlOiBlbnRyeS5zZXJ2aWNlTmFtZSB9KTtcbiAgICB0aHJvdyBuZXcgand0Lkpzb25XZWJUb2tlbkVycm9yKGBTZXJ2aWNlIHRva2VuIHN1YmplY3QgJHtTdHJpbmcoY2xhaW1zLnN1Yil9IHdhcyBzaWduZWQgYnkgJHtlbnRyeS5zZXJ2aWNlTmFtZX1gKTtcbiAgfVxuICBlbWl0Q291bnRlcignc2VydmljZV90b2tlbl92ZXJpZnlfdG90YWwnLCB7IHJlc3VsdDogJ29rJywgc2VydmljZTogZW50cnkuc2VydmljZU5hbWUgfSk7XG4gIHJldHVybiBjbGFpbXM7XG59XG5cbi8qKlxuICogVHJ1ZSB3aGlsZSB0aGlzIHNlcnZpY2Ugc3RpbGwgcHVibGlzaGVzIG1vcmUgdGhhbiBvbmUgdmVyaWZpY2F0aW9uIGtleSDigJQgaS5lLlxuICogYSBzaWduaW5nLWtleSByb3RhdGlvbiBpcyBvcGVuIGFuZCB0aGUgcmV0aXJpbmcga2V5IGlzIHN0aWxsIHRydXN0ZWQuIEZlZWRzXG4gKiB0aGUgYHNlY3JldF9yb3RhdGlvbl9wcmV2aW91c19zZXR7c2VjcmV0PVwiU0VSVklDRV9TSUdOSU5HX0tFWVwifWAgZ2F1Z2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JldGlyaW5nU2VydmljZUtleVB1Ymxpc2hlZCgpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBtZSA9IHNlcnZpY2VJZGVudGl0eSgpO1xuICAgIHJldHVybiBbLi4udmVyaWZpY2F0aW9uS2V5cygpLnZhbHVlcygpXS5maWx0ZXIoKHYpID0+IHYuc2VydmljZU5hbWUgPT09IG1lKS5sZW5ndGggPiAxO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBUZXN0IHNlYW06IGRyb3AgdGhlIGxvYWRlZCBzaWduaW5nIGtleSwgdGhlIGJ1bmRsZSBhbmQgYW55IGVwaGVtZXJhbCBrZXlzIHNvXG4gKiB0aGUgbmV4dCBzaWduL3ZlcmlmeSByZS1yZWFkcyB0aGUgZW52aXJvbm1lbnQuIERvbid0IGNhbGwgZnJvbSBwcm9kdWN0aW9uIGNvZGVcbiAqIOKAlCByb3RhdGlvbiBpcyBwaWNrZWQgdXAgYnkgdGhlIHJlZnJlc2ggaW50ZXJ2YWwgYW5kIHRoZSBtdGltZSBjaGVjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9yZXNldFNlcnZpY2VLZXlzRm9yVGVzdHMoKTogdm9pZCB7XG4gIGxvY2FsS2V5ID0gdW5kZWZpbmVkO1xuICBidW5kbGUgPSB1bmRlZmluZWQ7XG4gIGVwaGVtZXJhbEtleXMgPSB1bmRlZmluZWQ7XG4gIGVwaGVtZXJhbFdhcm5lZCA9IGZhbHNlO1xufVxuIl19
343
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3NlcnZpY2Uta2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtERztBQUVILE9BQU8sTUFBTSxFQUFFLEVBQWtCLE1BQU0sUUFBUSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzVDLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBa0IsTUFBTSxpQkFBaUIsQ0FBQztBQUNySCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFNUMsdUVBQXVFO0FBQ3ZFLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE9BQU8sQ0FBQztBQUUvQyx1RkFBdUY7QUFDdkYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBRWpELGlGQUFpRjtBQUNqRixNQUFNLDBCQUEwQixHQUFHLE9BQU8sQ0FBQyxDQUFDLFlBQVk7QUFvQnhELDZFQUE2RTtBQUM3RSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxLQUFLO0lBQ3hDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7Q0FD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c291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGVyLXNlcnZpY2Ugc2lnbmluZyBrZXlzIGZvciBJTlRFUk5BTCBzZXJ2aWNlLXRvLXNlcnZpY2UgdG9rZW5zLlxuICpcbiAqIEJlZm9yZSB0aGlzLCBldmVyeSBzZXJ2aWNlIGhlbGQgb25lIHNoYXJlZCBgSldUX1NFQ1JFVGAsIHNvIGFueSBzZXJ2aWNlIGNvdWxkXG4gKiBtaW50IGEgdG9rZW4gbmFtaW5nIGFueSBPVEhFUiBzZXJ2aWNlIOKAlCBcImJpbGxpbmcgc2FpZCBzb1wiIHdhcyB1bmZhbHNpZmlhYmxlLFxuICogYW5kIGEgc2luZ2xlIGNvbXByb21pc2VkIHdvcmtsb2FkIGNvdWxkIHNwZWFrIGZvciB0aGUgd2hvbGUgZmxlZXQuIE5vdyBlYWNoXG4gKiBzZXJ2aWNlIHNpZ25zIHdpdGggaXRzIE9XTiBFUzI1NiAoRUMgUC0yNTYpIGtleSBhbmQgY29uc3VtZXJzIHZlcmlmeSBhZ2FpbnN0XG4gKiB0aGUgcHVibGljIGhhbHZlcy4gVGhlIGBraWRgIGlzIGJvdW5kIHRvIHRoZSBzaWduZXIncyBOQU1FLCBzbyBhIHRva2VuIHdob3NlXG4gKiBgc3ViYCBzYXlzIGBzZXJ2aWNlOmJpbGxpbmdgIGJ1dCB3YXMgc2lnbmVkIHdpdGggY29tcGxpYW5jZSdzIGtleSBpcyBhXG4gKiBmb3JnZXJ5LCBub3QgYSB2YWxpZCB0b2tlbiB3aXRoIGEgY29uZnVzaW5nIHN1YmplY3QuXG4gKlxuICogIyMgV2h5IHB1YmxpYyBrZXlzIGFyZSBkaXN0cmlidXRlZCBieSBDT05GSUcsIG5vdCBieSBwZXItc2VydmljZSBKV0tTIGVuZHBvaW50c1xuICpcbiAqIFRoZSB1c2VyIGNoYWluIGZldGNoZXMgcGxhdGZvcm0ncyBKV0tTIG92ZXIgSFRUUCBiZWNhdXNlIHRoZXJlIGlzIGV4YWN0bHlcbiAqIG9uZSBzaWduZXIgYW5kIGl0IGlzIHRoZSBvbmUgc2VydmljZSB0aGF0IG11c3QgYmUgdXAgZm9yIGFueWJvZHkgdG8gc2lnbiBpbi5cbiAqIFRoZSBzZXJ2aWNlIGNoYWluIGlzIHRoZSBvcHBvc2l0ZSBzaGFwZSwgYW5kIHRocmVlIHByb3BlcnRpZXMgZGVjaWRlZCBpdDpcbiAqXG4gKiAgMS4gKipgdmVyaWZ5U2VydmljZVByaW5jaXBhbGAgbXVzdCBzdGF5IHN5bmNocm9ub3VzLioqIFRoZSBnbG9iYWwgcmF0ZVxuICogICAgIGxpbWl0ZXIncyBgc2tpcGAgYW5kIGFwcC1mYWN0b3J5J3MgYC93YXJtdXBgIGd1YXJkIHZlcmlmeSBhIHNlcnZpY2UgdG9rZW5cbiAqICAgICBCRUZPUkUgYHJlcXVpcmVBdXRoYCBydW5zLCBpbiBzeW5jaHJvbm91cyBFeHByZXNzIGNhbGxiYWNrcy4gQW4gSFRUUCBKV0tTXG4gKiAgICAgZmV0Y2ggd291bGQgZm9yY2UgdGhvc2UgYXN5bmMg4oCUIGEgY2hhbmdlIHRoYXQgcmVhY2hlcyBpbnRvIGV2ZXJ5XG4gKiAgICAgc2VydmljZSdzIGxpbWl0ZXIgd2lyaW5nLlxuICogIDIuICoqTm8gYXZhaWxhYmlsaXR5IGNvdXBsaW5nLioqIFdpdGggcGVyLXNlcnZpY2UgSldLUyBlbmRwb2ludHMsIHZlcmlmeWluZyBhXG4gKiAgICAgdG9rZW4gbWludGVkIGJ5IGBiaWxsaW5nYCBuZWVkcyBgYmlsbGluZ2AgdG8gYmUgcmVhY2hhYmxlIOKAlCBzbyBiaWxsaW5nXG4gKiAgICAgYmVpbmcgZG93biB3b3VsZCBzdG9wIHBsYXRmb3JtIGZyb20gYWNjZXB0aW5nIGJpbGxpbmcncyBpbi1mbGlnaHQgY2FsbHMsXG4gKiAgICAgdHVybmluZyBvbmUgb3V0YWdlIGludG8gc2V2ZXJhbC4gQSBtb3VudGVkIGZpbGUgaGFzIG5vIHN1Y2ggZWRnZS5cbiAqICAzLiAqKk5vIE7Dl04gYWRkcmVzcyBjb25maWcuKiogMTAgc2VydmljZXMgd291bGQgZWFjaCBuZWVkIGV2ZXJ5IHBlZXInc1xuICogICAgIGhvc3QvcG9ydCAoYW5kIGNvbXBvc2UsIHdoaWNoIGhhcyBubyBtZXNoLCB3b3VsZCBuZWVkIHRoZW0gdG9vKS5cbiAqXG4gKiBTbyB0aGUgZGVwbG95IGdlbmVyYXRlcyBvbmUga2V5cGFpciBwZXIgc2VydmljZSwgbW91bnRzIGVhY2ggcHJpdmF0ZSBrZXkgT05MWVxuICogaW50byBpdHMgb3duIHNlcnZpY2UsIGFuZCBtb3VudHMgT05FIHB1YmxpYyBidW5kbGUgKHJlYWQtb25seSkgZXZlcnl3aGVyZTpcbiAqXG4gKiAgIGBTRVJWSUNFX1NJR05JTkdfS0VZX0ZJTEVgICB0aGlzIHNlcnZpY2UncyBFQyBQLTI1NiBwcml2YXRlIGtleSAoUEtDUyM4IFBFTSlcbiAqICAgYFNFUlZJQ0VfS0VZX0JVTkRMRV9GSUxFYCAgIGB7IFwic2VydmljZXNcIjogeyBcIjxuYW1lPlwiOiB7IFwia2V5c1wiOiBbPGp3az7igKZdIH0gfSB9YFxuICpcbiAqIFJvdGF0aW9uIGlzIGJ5IGBraWRgLCBpbiB0aGUgc2FtZSBzaGFwZSBhcyB0aGUgdXNlciBjaGFpbjogYWRkIHRoZSBuZXcgcHVibGljXG4gKiBrZXkgdG8gdGhlIGJ1bmRsZSAodGhlIHNlcnZpY2Ugbm93IHB1Ymxpc2hlcyB0d28pLCByb2xsIHRoZSBidW5kbGUgb3V0LCBzd2FwXG4gKiB0aGF0IHNlcnZpY2UncyBwcml2YXRlIGtleSwgdGhlbiBkcm9wIHRoZSByZXRpcmVkIHB1YmxpYyBrZXkuIFRoZSBidW5kbGUgaXNcbiAqIHJlLXJlYWQgb24gYW4gaW50ZXJ2YWwgQU5EIG9uIGFuIG10aW1lIGNoYW5nZSwgc28gYSByb3RhdGlvbiBuZWVkcyBubyByZXN0YXJ0LlxuICogYGRlcGxveS9iaW4vc2VydmljZS1zaWduaW5nLWtleXMuc2hgIGdlbmVyYXRlcyBhbmQgcm90YXRlcyBib3RoIGhhbHZlcy5cbiAqXG4gKiAjIyBFcGhlbWVyYWwgbW9kZVxuICpcbiAqIFdpdGggbm8gYFNFUlZJQ0VfU0lHTklOR19LRVlfRklMRWAgY29uZmlndXJlZCwgYSBrZXlwYWlyIGlzIGdlbmVyYXRlZFxuICogSU4tUFJPQ0VTUyBwZXIgcmVxdWVzdGVkIHNlcnZpY2UgbmFtZSBhbmQgcmVnaXN0ZXJlZCBpbiB0aGUgaW4tbWVtb3J5IGJ1bmRsZS5cbiAqIFRoYXQga2VlcHMgc2luZ2xlLXByb2Nlc3Mgc3VpdGVzIGFuZCBsb2NhbCBvbmUtb2ZmIHNjcmlwdHMgd29ya2luZyB3aXRoIG5vIGtleVxuICogbWF0ZXJpYWwsIGFuZCBpdCBjYW4gbmV2ZXIgd2lkZW4gdHJ1c3Q6IHRoZSBvbmx5IHZlcmlmaWVyIHRoYXQgYWNjZXB0cyBzdWNoIGFcbiAqIHRva2VuIGlzIHRoZSBwcm9jZXNzIHRoYXQgbWludGVkIGl0LiBJdCBpcyBsb2dnZWQgb25jZSBhdCB3YXJuIGxldmVsLCBhbmRcbiAqIGNvdW50ZWQsIGJlY2F1c2UgaW4gYSByZWFsIGRlcGxveW1lbnQgaXQgbWVhbnMgdGhpcyBzZXJ2aWNlJ3MgcGVlcnMgd2lsbFxuICogcmVqZWN0IGV2ZXJ5dGhpbmcgaXQgc2VuZHMuXG4gKi9cblxuaW1wb3J0IGNyeXB0bywgeyB0eXBlIEtleU9iamVjdCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyByZWFkRmlsZVN5bmMsIHN0YXRTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IGp3dCBmcm9tICdqc29ud2VidG9rZW4nO1xuaW1wb3J0IHsgY29tcGFjdEp3cywgZW5jb2RlSndzU2lnbmluZ0lucHV0LCBwdWJsaWNKd2tGcm9tLCBwdWJsaWNLZXlGcm9tSndrLCB0eXBlIFB1YmxpY0p3ayB9IGZyb20gJy4uL3V0aWxzL2p3ay5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignc2VydmljZS1rZXlzJyk7XG5cbi8qKiBUaGUgT05MWSBhbGdvcml0aG0gYW4gaW50ZXJuYWwgc2VydmljZSB0b2tlbiBtYXkgYmUgc2lnbmVkIHdpdGguICovXG5leHBvcnQgY29uc3QgU0VSVklDRV9UT0tFTl9BTEdPUklUSE0gPSAnRVMyNTYnO1xuXG4vKiogU3ViamVjdCBwcmVmaXggbmFtaW5nIHRoZSBjYWxsaW5nIHNlcnZpY2Ugb24gYSBzZXJ2aWNlIHRva2VuIChgc2VydmljZTo8bmFtZT5gKS4gKi9cbmV4cG9ydCBjb25zdCBTRVJWSUNFX1NVQkpFQ1RfUFJFRklYID0gJ3NlcnZpY2U6JztcblxuLyoqIEhvdyBsb25nIGEgbG9hZGVkIGJ1bmRsZSBpcyBzZXJ2ZWQgYmVmb3JlIGl0IGlzIHJlLXJlYWQgKHJvdGF0aW9uIHBpY2t1cCkuICovXG5jb25zdCBCVU5ETEVfUkVGUkVTSF9JTlRFUlZBTF9NUyA9IDMwMF8wMDA7IC8vIDUgbWludXRlc1xuXG4vKiogT25lIHNlcnZpY2UncyBwdWJsaXNoZWQgdmVyaWZpY2F0aW9uIGtleXMsIGFzIHRoZXkgYXBwZWFyIGluIHRoZSBidW5kbGUgZmlsZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUtleUVudHJ5IHtcbiAga2V5czogUHVibGljSndrW107XG59XG5cbi8qKiBUaGUgZG9jdW1lbnQgYFNFUlZJQ0VfS0VZX0JVTkRMRV9GSUxFYCBob2xkczogZXZlcnkgc2VydmljZSdzIHB1YmxpYyBrZXlzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlS2V5QnVuZGxlIHtcbiAgc2VydmljZXM6IFJlY29yZDxzdHJpbmcsIFNlcnZpY2VLZXlFbnRyeT47XG59XG5cbi8qKiBBIHNpZ25pbmcga2V5IHRoaXMgcHJvY2VzcyBob2xkcywgaW4gdGhlIGZvcm1zIHNpZ25pbmcgbmVlZHMuICovXG5pbnRlcmZhY2UgTG9jYWxTaWduaW5nS2V5IHtcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAga2lkOiBzdHJpbmc7XG4gIHByaXZhdGVLZXk6IEtleU9iamVjdDtcbiAgcHVibGljSndrOiBQdWJsaWNKd2s7XG59XG5cbi8qKiBUaGUgYnVuZGxlIGNvdWxkIG5vdCBiZSBsb2FkZWQgb3IgZG9lcyBub3Qga25vdyB0aGUga2V5IGEgdG9rZW4gbmFtZXMuICovXG5leHBvcnQgY2xhc3MgU2VydmljZUtleUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnU2VydmljZUtleUVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgcHJvY2VzcydzIHNlcnZpY2UgaWRlbnRpdHkg4oCUIHRoZSBgPG5hbWU+YCBpbiBgc2VydmljZTo8bmFtZT5gIGFuZCB0aGVcbiAqIG5hbWUgaXRzIGtleSBpcyBwdWJsaXNoZWQgdW5kZXIuIGBTRVJWSUNFX05BTUVgIGlzIGFscmVhZHkgc2V0IHBlciBzZXJ2aWNlIGluXG4gKiBldmVyeSBkZXBsb3kgdGFyZ2V0IChjb21wb3NlLCBtaW5pa3ViZSwgZWMyLCBla3MpLCBhbmQgaXMgdGhlIHNhbWUgdmFsdWUgdGhlXG4gKiBhdWRpdCBhbmQgbWV0cmljIGxhYmVscyB1c2UsIHNvIHRoZXJlIGlzIG9uZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIFwid2hvIGFtIElcIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VJZGVudGl0eSgpOiBzdHJpbmcge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FIHx8ICdhcGknO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIExvY2FsIHNpZ25pbmcga2V5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxubGV0IGxvY2FsS2V5OiBMb2NhbFNpZ25pbmdLZXkgfCB1bmRlZmluZWQ7XG5sZXQgZXBoZW1lcmFsS2V5czogTWFwPHN0cmluZywgTG9jYWxTaWduaW5nS2V5PiB8IHVuZGVmaW5lZDtcbmxldCBlcGhlbWVyYWxXYXJuZWQgPSBmYWxzZTtcblxuZnVuY3Rpb24gbG9hZENvbmZpZ3VyZWRTaWduaW5nS2V5KGZpbGU6IHN0cmluZyk6IExvY2FsU2lnbmluZ0tleSB7XG4gIGNvbnN0IHNlcnZpY2VOYW1lID0gc2VydmljZUlkZW50aXR5KCk7XG4gIGxldCBwcml2YXRlS2V5OiBLZXlPYmplY3Q7XG4gIHRyeSB7XG4gICAgcHJpdmF0ZUtleSA9IGNyeXB0by5jcmVhdGVQcml2YXRlS2V5KHJlYWRGaWxlU3luYyhmaWxlLCAndXRmOCcpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgU2VydmljZUtleUVycm9yKGBDb3VsZCBub3QgcmVhZCB0aGUgc2VydmljZSBzaWduaW5nIGtleSBhdCAke2ZpbGV9OiAke2Vycm9yTWVzc2FnZShlcnJvcil9YCk7XG4gIH1cbiAgLy8gcHVibGljSndrRnJvbSByZWplY3RzIGFueXRoaW5nIGJ1dCBhbiBFQyBQLTI1NiBrZXksIHNvIGEgc2VydmljZSBjb25maWd1cmVkXG4gIC8vIHdpdGggKHNheSkgYW4gUlNBIGtleSBmYWlscyBIRVJFIHJhdGhlciB0aGFuIG1pbnRpbmcgdG9rZW5zIG5vYm9keSB2ZXJpZmllcy5cbiAgY29uc3QgcHVibGljSndrID0gcHVibGljSndrRnJvbShjcnlwdG8uY3JlYXRlUHVibGljS2V5KHByaXZhdGVLZXkpKTtcbiAgcmV0dXJuIHsgc2VydmljZU5hbWUsIGtpZDogcHVibGljSndrLmtpZCwgcHJpdmF0ZUtleSwgcHVibGljSndrIH07XG59XG5cbi8qKlxuICogVGhlIGluLXByb2Nlc3Mga2V5IGZvciBgc2VydmljZU5hbWVgIGluIGVwaGVtZXJhbCBtb2RlLCBnZW5lcmF0ZWQgb24gZmlyc3RcbiAqIHVzZSBhbmQgcmVnaXN0ZXJlZCBpbiB0aGUgaW4tbWVtb3J5IGJ1bmRsZSBzbyB0aGlzIHByb2Nlc3MgY2FuIHZlcmlmeSBpdHMgb3duXG4gKiB0b2tlbnMuIEtleWVkIGJ5IE5BTUUgKG5vdCBqdXN0IG9uZSBrZXkpIHNvIGEgc2luZ2xlLXByb2Nlc3Mgc3VpdGUgY2FuIG1pbnRcbiAqIHRva2VucyBmb3Igc2V2ZXJhbCBzZXJ2aWNlcywgYXMgdGhlIHJlYWwgZmxlZXQgZG9lcyBhY3Jvc3MgcHJvY2Vzc2VzLlxuICovXG5mdW5jdGlvbiBlcGhlbWVyYWxTaWduaW5nS2V5KHNlcnZpY2VOYW1lOiBzdHJpbmcpOiBMb2NhbFNpZ25pbmdLZXkge1xuICBlcGhlbWVyYWxLZXlzID8/PSBuZXcgTWFwKCk7XG4gIGNvbnN0IGV4aXN0aW5nID0gZXBoZW1lcmFsS2V5cy5nZXQoc2VydmljZU5hbWUpO1xuICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcblxuICBpZiAoIWVwaGVtZXJhbFdhcm5lZCkge1xuICAgIGVwaGVtZXJhbFdhcm5lZCA9IHRydWU7XG4gICAgZW1pdENvdW50ZXIoJ3NlcnZpY2Vfc2lnbmluZ19lcGhlbWVyYWxfa2V5X3RvdGFsJywgeyBzZXJ2aWNlOiBzZXJ2aWNlSWRlbnRpdHkoKSB9KTtcbiAgICBsb2dnZXIud2FybignU0VSVklDRV9TSUdOSU5HX0tFWV9GSUxFIGlzIG5vdCBzZXQg4oCUIG1pbnRpbmcgaW50ZXJuYWwgc2VydmljZSB0b2tlbnMgd2l0aCBhbiBFUEhFTUVSQUwga2V5LiBPbmx5IHRoaXMgcHJvY2VzcyB3aWxsIGFjY2VwdCB0aGVtOyBldmVyeSBwZWVyIHdpbGwgcmVqZWN0IHRoZW0uIFNldCBTRVJWSUNFX1NJR05JTkdfS0VZX0ZJTEUgKyBTRVJWSUNFX0tFWV9CVU5ETEVfRklMRSAoZGVwbG95L2Jpbi9zZXJ2aWNlLXNpZ25pbmcta2V5cy5zaCkuJyk7XG4gIH1cbiAgY29uc3QgeyBwcml2YXRlS2V5LCBwdWJsaWNLZXkgfSA9IGNyeXB0by5nZW5lcmF0ZUtleVBhaXJTeW5jKCdlYycsIHsgbmFtZWRDdXJ2ZTogJ3ByaW1lMjU2djEnIH0pO1xuICBjb25zdCBwdWJsaWNKd2sgPSBwdWJsaWNKd2tGcm9tKHB1YmxpY0tleSk7XG4gIGNvbnN0IGdlbmVyYXRlZDogTG9jYWxTaWduaW5nS2V5ID0geyBzZXJ2aWNlTmFtZSwga2lkOiBwdWJsaWNKd2sua2lkLCBwcml2YXRlS2V5LCBwdWJsaWNKd2sgfTtcbiAgZXBoZW1lcmFsS2V5cy5zZXQoc2VydmljZU5hbWUsIGdlbmVyYXRlZCk7XG4gIHJldHVybiBnZW5lcmF0ZWQ7XG59XG5cbi8qKlxuICogVGhlIGtleSBgc2VydmljZU5hbWVgIG11c3QgYmUgc2lnbmVkIHdpdGguXG4gKlxuICogSW4gYGNvbmZpZ3VyZWRgIG1vZGUgdGhlcmUgaXMgZXhhY3RseSBPTkUga2V5IOKAlCB0aGlzIHNlcnZpY2UncyDigJQgc28gYSByZXF1ZXN0XG4gKiB0byBzaWduIGFzIHNvbWUgT1RIRVIgc2VydmljZSBpcyBhIGJ1ZyBhbmQgdGhyb3dzOiBzdWNoIGEgdG9rZW4gd291bGQgYmVcbiAqIHVudmVyaWZpYWJsZSBldmVyeXdoZXJlIChpdHMgYGtpZGAgbmFtZXMgdGhpcyBzZXJ2aWNlLCBpdHMgYHN1YmAgYW5vdGhlcikuXG4gKiBGYWlsaW5nIGF0IHRoZSBtaW50IG1ha2VzIHRoYXQgYW4gaW1tZWRpYXRlLCBvYnZpb3VzIGVycm9yIGluc3RlYWQgb2YgYVxuICogcnVudGltZSA0MDEuXG4gKi9cbmZ1bmN0aW9uIHNpZ25pbmdLZXlGb3Ioc2VydmljZU5hbWU6IHN0cmluZyk6IExvY2FsU2lnbmluZ0tleSB7XG4gIGNvbnN0IGZpbGUgPSBwcm9jZXNzLmVudi5TRVJWSUNFX1NJR05JTkdfS0VZX0ZJTEU7XG4gIGlmICghZmlsZSkgcmV0dXJuIGVwaGVtZXJhbFNpZ25pbmdLZXkoc2VydmljZU5hbWUpO1xuXG4gIGlmICghbG9jYWxLZXkgfHwgbG9jYWxLZXkuc2VydmljZU5hbWUgIT09IHNlcnZpY2VJZGVudGl0eSgpKSB7XG4gICAgbG9jYWxLZXkgPSBsb2FkQ29uZmlndXJlZFNpZ25pbmdLZXkoZmlsZSk7XG4gIH1cbiAgaWYgKHNlcnZpY2VOYW1lICE9PSBsb2NhbEtleS5zZXJ2aWNlTmFtZSkge1xuICAgIHRocm93IG5ldyBTZXJ2aWNlS2V5RXJyb3IoXG4gICAgICBgVGhpcyBwcm9jZXNzIGlzICcke2xvY2FsS2V5LnNlcnZpY2VOYW1lfScgYW5kIGhvbGRzIG9ubHkgaXRzIG93biBzaWduaW5nIGtleSwgc28gaXQgY2Fubm90IG1pbnQgYSB0b2tlbiBmb3IgJyR7c2VydmljZU5hbWV9Jy4gYFxuICAgICAgKyAnTmFtZSB0aGUgY2FsbGluZyBzZXJ2aWNlIGNvcnJlY3RseSwgb3IgZ2l2ZSB0aGUgY2FsbGVyIGl0cyBvd24ga2V5LicsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gbG9jYWxLZXk7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVmVyaWZpY2F0aW9uIGJ1bmRsZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmludGVyZmFjZSBMb2FkZWRCdW5kbGUge1xuICAvKiogYGtpZGAg4oaSIHRoZSBzZXJ2aWNlIHRoYXQgcHVibGlzaGVkIGl0LCBwbHVzIHRoZSB2ZXJpZmljYXRpb24ga2V5LiAqL1xuICBieUtpZDogTWFwPHN0cmluZywgeyBzZXJ2aWNlTmFtZTogc3RyaW5nOyBrZXk6IEtleU9iamVjdCB9PjtcbiAgbG9hZGVkQXQ6IG51bWJlcjtcbiAgbXRpbWVNczogbnVtYmVyO1xufVxuXG5sZXQgYnVuZGxlOiBMb2FkZWRCdW5kbGUgfCB1bmRlZmluZWQ7XG5cbmZ1bmN0aW9uIHBhcnNlQnVuZGxlKHJhdzogc3RyaW5nLCBmaWxlOiBzdHJpbmcpOiBNYXA8c3RyaW5nLCB7IHNlcnZpY2VOYW1lOiBzdHJpbmc7IGtleTogS2V5T2JqZWN0IH0+IHtcbiAgbGV0IGRvY3VtZW50OiB1bmtub3duO1xuICB0cnkge1xuICAgIGRvY3VtZW50ID0gSlNPTi5wYXJzZShyYXcpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IG5ldyBTZXJ2aWNlS2V5RXJyb3IoYCR7ZmlsZX0gaXMgbm90IHZhbGlkIEpTT046ICR7ZXJyb3JNZXNzYWdlKGVycm9yKX1gKTtcbiAgfVxuICBjb25zdCBzZXJ2aWNlcyA9IChkb2N1bWVudCBhcyBQYXJ0aWFsPFNlcnZpY2VLZXlCdW5kbGU+KT8uc2VydmljZXM7XG4gIGlmICghc2VydmljZXMgfHwgdHlwZW9mIHNlcnZpY2VzICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBTZXJ2aWNlS2V5RXJyb3IoYCR7ZmlsZX0gaGFzIG5vIFwic2VydmljZXNcIiBvYmplY3RgKTtcbiAgfVxuICBjb25zdCBieUtpZCA9IG5ldyBNYXA8c3RyaW5nLCB7IHNlcnZpY2VOYW1lOiBzdHJpbmc7IGtleTogS2V5T2JqZWN0IH0+KCk7XG4gIGZvciAoY29uc3QgW3NlcnZpY2VOYW1lLCBlbnRyeV0gb2YgT2JqZWN0LmVudHJpZXMoc2VydmljZXMpKSB7XG4gICAgZm9yIChjb25zdCBqd2sgb2YgZW50cnk/LmtleXMgPz8gW10pIHtcbiAgICAgIGlmICghandrPy5raWQpIGNvbnRpbnVlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYnlLaWQuc2V0KGp3ay5raWQsIHsgc2VydmljZU5hbWUsIGtleTogcHVibGljS2V5RnJvbUp3ayhqd2spIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gT25lIHVudXNhYmxlIGVudHJ5IG11c3Qgbm90IGRpc2NhcmQgdGhlIHJlc3Qgb2YgdGhlIGJ1bmRsZSDigJQgdGhlIHNhbWVcbiAgICAgICAgLy8gcnVsZSB0aGUgSldLUyBjYWNoZSBhcHBsaWVzIHRvIHBsYXRmb3JtJ3MgcHVibGlzaGVkIHNldC5cbiAgICAgICAgbG9nZ2VyLndhcm4oJ1NraXBwaW5nIHVudXNhYmxlIHNlcnZpY2Uga2V5JywgeyBzZXJ2aWNlTmFtZSwga2lkOiBqd2sua2lkLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycm9yKSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGJ5S2lkLnNpemUgPT09IDApIHRocm93IG5ldyBTZXJ2aWNlS2V5RXJyb3IoYCR7ZmlsZX0gY29udGFpbmVkIG5vIHVzYWJsZSBzZXJ2aWNlIGtleXNgKTtcbiAgcmV0dXJuIGJ5S2lkO1xufVxuXG4vKipcbiAqIFRoZSBga2lkYCDihpIgc2VydmljZSBtYXAsIHJlLXJlYWQgd2hlbiB0aGUgcmVmcmVzaCBpbnRlcnZhbCBoYXMgcGFzc2VkIG9yIHRoZVxuICogZmlsZSdzIG10aW1lIGNoYW5nZWQgKHNvIGEgcm90YXRpb24gaXMgcGlja2VkIHVwIHdpdGhvdXQgYSByZXN0YXJ0KS5cbiAqXG4gKiBJbiBlcGhlbWVyYWwgbW9kZSB0aGUgXCJidW5kbGVcIiBpcyB3aGF0ZXZlciB0aGlzIHByb2Nlc3MgZ2VuZXJhdGVkIGZvciBpdHNlbGYuXG4gKiBOZXZlciB0aHJvd3MgZm9yIGEgbWlzc2luZyBmaWxlIGluIHRoYXQgbW9kZSDigJQgaXQganVzdCBob2xkcyB0aG9zZSBrZXlzLlxuICovXG5mdW5jdGlvbiB2ZXJpZmljYXRpb25LZXlzKCk6IE1hcDxzdHJpbmcsIHsgc2VydmljZU5hbWU6IHN0cmluZzsga2V5OiBLZXlPYmplY3QgfT4ge1xuICBjb25zdCBmaWxlID0gcHJvY2Vzcy5lbnYuU0VSVklDRV9LRVlfQlVORExFX0ZJTEU7XG4gIGlmICghZmlsZSkge1xuICAgIGNvbnN0IGxvY2FsID0gbmV3IE1hcDxzdHJpbmcsIHsgc2VydmljZU5hbWU6IHN0cmluZzsga2V5OiBLZXlPYmplY3QgfT4oKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBlcGhlbWVyYWxLZXlzPy52YWx1ZXMoKSA/PyBbXSkge1xuICAgICAgbG9jYWwuc2V0KGtleS5raWQsIHsgc2VydmljZU5hbWU6IGtleS5zZXJ2aWNlTmFtZSwga2V5OiBjcnlwdG8uY3JlYXRlUHVibGljS2V5KGtleS5wcml2YXRlS2V5KSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxvY2FsO1xuICB9XG5cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgbGV0IG10aW1lTXMgPSAwO1xuICB0cnkge1xuICAgIG10aW1lTXMgPSBzdGF0U3luYyhmaWxlKS5tdGltZU1zO1xuICB9IGNhdGNoIHtcbiAgICAvLyBVbnJlYWRhYmxlIG5vdzoga2VlcCBzZXJ2aW5nIGEgYnVuZGxlIGFscmVhZHkgaW4gaGFuZCAocHVibGljIGtleXMgZG9uJ3RcbiAgICAvLyBleHBpcmUsIGFuZCByZWZ1c2luZyBldmVyeSBpbnRlcm5hbCBjYWxsIGJlY2F1c2UgYSBtb3VudCBibGlwcGVkIHdvdWxkIGJlXG4gICAgLy8gYSBzZWxmLWluZmxpY3RlZCBvdXRhZ2UpLiBXaXRoIG5vdGhpbmcgaW4gaGFuZCwgZmFpbCBjbG9zZWQgYmVsb3cuXG4gICAgaWYgKGJ1bmRsZSkgcmV0dXJuIGJ1bmRsZS5ieUtpZDtcbiAgfVxuICBpZiAoYnVuZGxlICYmIGJ1bmRsZS5tdGltZU1zID09PSBtdGltZU1zICYmIG5vdyAtIGJ1bmRsZS5sb2FkZWRBdCA8IEJVTkRMRV9SRUZSRVNIX0lOVEVSVkFMX01TKSB7XG4gICAgcmV0dXJuIGJ1bmRsZS5ieUtpZDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgYnlLaWQgPSBwYXJzZUJ1bmRsZShyZWFkRmlsZVN5bmMoZmlsZSwgJ3V0ZjgnKSwgZmlsZSk7XG4gICAgYnVuZGxlID0geyBieUtpZCwgbG9hZGVkQXQ6IG5vdywgbXRpbWVNcyB9O1xuICAgIHJldHVybiBieUtpZDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoYnVuZGxlKSB7XG4gICAgICBsb2dnZXIud2FybignU2VydmljZSBrZXkgYnVuZGxlIHJlbG9hZCBmYWlsZWQ7IGNvbnRpbnVpbmcgb24gdGhlIGxvYWRlZCBjb3B5JywgeyBmaWxlLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycm9yKSB9KTtcbiAgICAgIHJldHVybiBidW5kbGUuYnlLaWQ7XG4gICAgfVxuICAgIHRocm93IGVycm9yIGluc3RhbmNlb2YgU2VydmljZUtleUVycm9yID8gZXJyb3IgOiBuZXcgU2VydmljZUtleUVycm9yKFN0cmluZyhlcnJvcikpO1xuICB9XG59XG5cbi8qKlxuICogV2hldGhlciBga2lkYCBiZWxvbmdzIHRvIGFuIGludGVybmFsIFNFUlZJQ0Uga2V5LiBUaGlzIGlzIGhvdyBhIGJlYXJlciB0b2tlblxuICogaXMgcm91dGVkIGJldHdlZW4gdGhlIHR3byBFUzI1NiBjaGFpbnM6IGJvdGggdXNlciBhbmQgc2VydmljZSB0b2tlbnMgYXJlXG4gKiBFUzI1NiB3aXRoIGEgYGtpZGAsIGFuZCBga2lkYCBpcyBhbiBSRkMgNzYzOCB0aHVtYnByaW50LCBzbyBvd25lcnNoaXAgb2YgdGhlXG4gKiBpZCDigJQgbm90IGEgY2xhaW0gaW5zaWRlIHRoZSB0b2tlbiDigJQgZGVjaWRlcyB3aGljaCBrZXkgc2V0IG1heSB2ZXJpZnkgaXQuXG4gKiBSZXR1cm5zIGBmYWxzZWAgKG5ldmVyIHRocm93cykgd2hlbiBubyBidW5kbGUgY2FuIGJlIHJlYWQ7IHRoZSB0b2tlbiB0aGVuXG4gKiB0YWtlcyB0aGUgdXNlciBjaGFpbiBhbmQgaXMgcmVqZWN0ZWQgdGhlcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NlcnZpY2VLaWQoa2lkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdmVyaWZpY2F0aW9uS2V5cygpLmhhcyhraWQpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNpZ24gLyB2ZXJpZnlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFNpZ24gYGNsYWltc2AgYXMgdGhpcyBzZXJ2aWNlJ3MgaW50ZXJuYWwgdG9rZW46IEVTMjU2LCBga2lkYCA9IHRoZSBzaWduZXInc1xuICogdGh1bWJwcmludCwgYHN1YmAgPSBgc2VydmljZTo8c2VydmljZU5hbWU+YC4gYGlhdGAvYGV4cGAgYW5kIHRoZSBvcHRpb25hbFxuICogaXNzdWVyL2F1ZGllbmNlIGFyZSBzdGFtcGVkIGhlcmUgc28gdGhlcmUgaXMgb25lIHBsYWNlIHRoYXQgZGVjaWRlcyB3aGF0IGFcbiAqIHNlcnZpY2UgdG9rZW4gc2F5cy5cbiAqXG4gKiBIYW5kLXJvbGxlZCAocmF0aGVyIHRoYW4gYGp3dC5zaWduYCkgb25seSBzbyB0aGUgaGVhZGVyIGNhcnJpZXMgdGhlIGBraWRgIGluXG4gKiB0aGUgc2FtZSBzaGFwZSBwbGF0Zm9ybSdzIHNpZ25lciBwcm9kdWNlcyDigJQgYGNyeXB0by5zaWduYCBpcyBzeW5jaHJvbm91cywgc29cbiAqIHVubGlrZSB0aGUgS01TIHBhdGggdGhpcyBjb3N0cyBub3RoaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnblNlcnZpY2VKd3QoXG4gIGNsYWltczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIG9wdGlvbnM6IHsgc2VydmljZU5hbWU6IHN0cmluZzsgZXhwaXJlc0luU2Vjb25kczogbnVtYmVyOyBpc3N1ZXI/OiBzdHJpbmc7IGF1ZGllbmNlPzogc3RyaW5nIH0sXG4pOiBzdHJpbmcge1xuICBjb25zdCBrZXkgPSBzaWduaW5nS2V5Rm9yKG9wdGlvbnMuc2VydmljZU5hbWUpO1xuICBjb25zdCBub3cgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcbiAgY29uc3QgYm9keSA9IHtcbiAgICAuLi5jbGFpbXMsXG4gICAgc3ViOiBgJHtTRVJWSUNFX1NVQkpFQ1RfUFJFRklYfSR7b3B0aW9ucy5zZXJ2aWNlTmFtZX1gLFxuICAgIGlhdDogbm93LFxuICAgIGV4cDogbm93ICsgb3B0aW9ucy5leHBpcmVzSW5TZWNvbmRzLFxuICAgIC4uLihvcHRpb25zLmlzc3VlciA/IHsgaXNzOiBvcHRpb25zLmlzc3VlciB9IDoge30pLFxuICAgIC4uLihvcHRpb25zLmF1ZGllbmNlID8geyBhdWQ6IG9wdGlvbnMuYXVkaWVuY2UgfSA6IHt9KSxcbiAgfTtcbiAgY29uc3Qgc2lnbmluZ0lucHV0ID0gZW5jb2RlSndzU2lnbmluZ0lucHV0KGtleS5raWQsIGJvZHkpO1xuICBjb25zdCBzaWduYXR1cmUgPSBjcnlwdG8uc2lnbignc2hhMjU2JywgQnVmZmVyLmZyb20oc2lnbmluZ0lucHV0LCAndXRmLTgnKSwge1xuICAgIGtleToga2V5LnByaXZhdGVLZXksXG4gICAgZHNhRW5jb2Rpbmc6ICdpZWVlLXAxMzYzJyxcbiAgfSk7XG4gIHJldHVybiBjb21wYWN0SndzKHNpZ25pbmdJbnB1dCwgc2lnbmF0dXJlKTtcbn1cblxuLyoqXG4gKiBWZXJpZnkgYW4gaW50ZXJuYWwgc2VydmljZSB0b2tlbiwgU1lOQ0hST05PVVNMWSwgYW5kIHJldHVybiBpdHMgY2xhaW1zLlxuICpcbiAqIFRoZSBzZWN1cml0eSBwcm9wZXJ0eSB0aGlzIGZ1bmN0aW9uIGV4aXN0cyBmb3I6IHRoZSBga2lkYCBzZWxlY3RzIHRoZSBrZXlcbiAqIEFORCBuYW1lcyB0aGUgc2lnbmVyLCBhbmQgdGhlIHRva2VuJ3MgYHN1YmAgbXVzdCBhZ3JlZS4gU28gYGJpbGxpbmdgIGNhbm5vdFxuICogYmUgaW1wZXJzb25hdGVkIGJ5IGFueSBvdGhlciBzZXJ2aWNlIOKAlCBub3QgZXZlbiBvbmUgdGhhdCBob2xkcyBhIHZhbGlkIGtleSBvZlxuICogaXRzIG93biDigJQgYSBndWFyYW50ZWUgbm8gc2hhcmVkIHNlY3JldCBjYW4gZ2l2ZS5cbiAqXG4gKiBAdGhyb3dzIHtqd3QuSnNvbldlYlRva2VuRXJyb3J9IHVua25vd24gYGtpZGAsIHdyb25nIGFsZ29yaXRobSwgYmFkXG4gKiAgICAgICAgIHNpZ25hdHVyZSwgZXhwaXJlZCwgb3IgYSBgc3ViYCB0aGF0IGRpc2FncmVlcyB3aXRoIHRoZSBzaWduaW5nIGtleS5cbiAqIEB0aHJvd3Mge1NlcnZpY2VLZXlFcnJvcn0gbm8gdmVyaWZpY2F0aW9uIGJ1bmRsZSBjb3VsZCBiZSByZWFkIGF0IGFsbCDigJQgdGhlXG4gKiAgICAgICAgIHRva2VuJ3MgdmFsaWRpdHkgaXMgVU5LTk9XTiBhbmQgdGhlIGNhbGxlciBtdXN0IG5vdCB0cmVhdCBpdCBhcyB2YWxpZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVNlcnZpY2VKd3Q8VCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgdG9rZW46IHN0cmluZyxcbiAgb3B0aW9uczogeyBraWQ6IHN0cmluZzsgaXNzdWVyPzogc3RyaW5nOyBhdWRpZW5jZT86IHN0cmluZyB9LFxuKTogVCB7XG4gIGNvbnN0IGVudHJ5ID0gdmVyaWZpY2F0aW9uS2V5cygpLmdldChvcHRpb25zLmtpZCk7XG4gIC8vIEVWRVJZIGVtaXNzaW9uIG9mIHRoaXMgY291bnRlciBjYXJyaWVzIHRoZSBzYW1lIGxhYmVsIEtFWVMuIFRoZSBQcm9tZXRoZXVzXG4gIC8vIGNvdW50ZXIgaXMgcmVnaXN0ZXJlZCBsYXppbHkgd2l0aCB3aGF0ZXZlciBrZXlzIGl0cyBmaXJzdCBlbWlzc2lvbiB1c2VkLFxuICAvLyBhbmQgYW4gaW5jcmVtZW50IHdpdGggYSBkaWZmZXJlbnQgc2V0IHRocm93cyDigJQgd2hpY2ggYGVtaXRDb3VudGVyYFxuICAvLyBzd2FsbG93cy4gU28gd2hlbiB0aGUgZmlyc3QgdG9rZW4gYSBwb2QgdmVyaWZpZWQgd2FzIGJhZCAoYHsgcmVzdWx0IH1gXG4gIC8vIGFsb25lKSwgZXZlcnkgbGF0ZXIgYG9rYCBhbmQgYHN1YmplY3RfbWlzbWF0Y2hgIChgeyByZXN1bHQsIHNlcnZpY2UgfWApIHdhc1xuICAvLyBzaWxlbnRseSBkcm9wcGVkIGZvciB0aGUgbGlmZSBvZiB0aGUgcHJvY2VzczogdGhlIG1ldHJpYyB0aGF0IHRlbGxzIHlvdVxuICAvLyBzZXJ2aWNlLXRvLXNlcnZpY2UgYXV0aCBpcyBoZWFsdGh5IHdlbnQgcXVpZXQgZXhhY3RseSB3aGVuIGl0IG1hdHRlcmVkLlxuICBpZiAoIWVudHJ5KSB7XG4gICAgZW1pdENvdW50ZXIoJ3NlcnZpY2VfdG9rZW5fdmVyaWZ5X3RvdGFsJywgeyByZXN1bHQ6ICd1bmtub3duX2tpZCcsIHNlcnZpY2U6ICd1bmtub3duJyB9KTtcbiAgICB0aHJvdyBuZXcgand0Lkpzb25XZWJUb2tlbkVycm9yKGBObyBwdWJsaXNoZWQgc2VydmljZSBrZXkgZm9yIGtpZCAke29wdGlvbnMua2lkfWApO1xuICB9XG4gIGxldCBjbGFpbXM6IFQgJiB7IHN1Yj86IHVua25vd24gfTtcbiAgdHJ5IHtcbiAgICBjbGFpbXMgPSBqd3QudmVyaWZ5KHRva2VuLCBlbnRyeS5rZXksIHtcbiAgICAgIGFsZ29yaXRobXM6IFtTRVJWSUNFX1RPS0VOX0FMR09SSVRITV0sXG4gICAgICAuLi4ob3B0aW9ucy5pc3N1ZXIgPyB7IGlzc3Vlcjogb3B0aW9ucy5pc3N1ZXIgfSA6IHt9KSxcbiAgICAgIC4uLihvcHRpb25zLmF1ZGllbmNlID8geyBhdWRpZW5jZTogb3B0aW9ucy5hdWRpZW5jZSB9IDoge30pLFxuICAgIH0pIGFzIFQgJiB7IHN1Yj86IHVua25vd24gfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBlbWl0Q291bnRlcignc2VydmljZV90b2tlbl92ZXJpZnlfdG90YWwnLCB7IHJlc3VsdDogJ2ludmFsaWQnLCBzZXJ2aWNlOiBlbnRyeS5zZXJ2aWNlTmFtZSB9KTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuICBpZiAoY2xhaW1zLnN1YiAhPT0gYCR7U0VSVklDRV9TVUJKRUNUX1BSRUZJWH0ke2VudHJ5LnNlcnZpY2VOYW1lfWApIHtcbiAgICAvLyBBIHZhbGlkIHNpZ25hdHVyZSBieSB0aGUgV1JPTkcgc2VydmljZTogdGhlIGtleSBiZWxvbmdzIHRvIGBlbnRyeS5zZXJ2aWNlTmFtZWBcbiAgICAvLyBidXQgdGhlIHRva2VuIHNwZWFrcyBmb3Igc29tZW9uZSBlbHNlOiBhIGNyb3NzLXNlcnZpY2UgZm9yZ2VyeS5cbiAgICBlbWl0Q291bnRlcignc2VydmljZV90b2tlbl92ZXJpZnlfdG90YWwnLCB7IHJlc3VsdDogJ3N1YmplY3RfbWlzbWF0Y2gnLCBzZXJ2aWNlOiBlbnRyeS5zZXJ2aWNlTmFtZSB9KTtcbiAgICB0aHJvdyBuZXcgand0Lkpzb25XZWJUb2tlbkVycm9yKGBTZXJ2aWNlIHRva2VuIHN1YmplY3QgJHtTdHJpbmcoY2xhaW1zLnN1Yil9IHdhcyBzaWduZWQgYnkgJHtlbnRyeS5zZXJ2aWNlTmFtZX1gKTtcbiAgfVxuICBlbWl0Q291bnRlcignc2VydmljZV90b2tlbl92ZXJpZnlfdG90YWwnLCB7IHJlc3VsdDogJ29rJywgc2VydmljZTogZW50cnkuc2VydmljZU5hbWUgfSk7XG4gIHJldHVybiBjbGFpbXM7XG59XG5cbi8qKlxuICogVHJ1ZSB3aGlsZSB0aGlzIHNlcnZpY2Ugc3RpbGwgcHVibGlzaGVzIG1vcmUgdGhhbiBvbmUgdmVyaWZpY2F0aW9uIGtleSDigJQgaS5lLlxuICogYSBzaWduaW5nLWtleSByb3RhdGlvbiBpcyBvcGVuIGFuZCB0aGUgcmV0aXJpbmcga2V5IGlzIHN0aWxsIHRydXN0ZWQuIEZlZWRzXG4gKiB0aGUgYHNlY3JldF9yb3RhdGlvbl9wcmV2aW91c19zZXR7c2VjcmV0PVwiU0VSVklDRV9TSUdOSU5HX0tFWVwifWAgZ2F1Z2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JldGlyaW5nU2VydmljZUtleVB1Ymxpc2hlZCgpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBtZSA9IHNlcnZpY2VJZGVudGl0eSgpO1xuICAgIHJldHVybiBbLi4udmVyaWZpY2F0aW9uS2V5cygpLnZhbHVlcygpXS5maWx0ZXIoKHYpID0+IHYuc2VydmljZU5hbWUgPT09IG1lKS5sZW5ndGggPiAxO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBUZXN0IHNlYW06IGRyb3AgdGhlIGxvYWRlZCBzaWduaW5nIGtleSwgdGhlIGJ1bmRsZSBhbmQgYW55IGVwaGVtZXJhbCBrZXlzIHNvXG4gKiB0aGUgbmV4dCBzaWduL3ZlcmlmeSByZS1yZWFkcyB0aGUgZW52aXJvbm1lbnQuIERvbid0IGNhbGwgZnJvbSBwcm9kdWN0aW9uIGNvZGVcbiAqIOKAlCByb3RhdGlvbiBpcyBwaWNrZWQgdXAgYnkgdGhlIHJlZnJlc2ggaW50ZXJ2YWwgYW5kIHRoZSBtdGltZSBjaGVjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9yZXNldFNlcnZpY2VLZXlzRm9yVGVzdHMoKTogdm9pZCB7XG4gIGxvY2FsS2V5ID0gdW5kZWZpbmVkO1xuICBidW5kbGUgPSB1bmRlZmluZWQ7XG4gIGVwaGVtZXJhbEtleXMgPSB1bmRlZmluZWQ7XG4gIGVwaGVtZXJhbFdhcm5lZCA9IGZhbHNlO1xufVxuIl19
@@ -26,9 +26,3 @@ export interface EntityLink {
26
26
  }
27
27
  /** Free-form typed classification labels: `{ team: 'payments', tier: 'gold' }`. */
28
28
  export type EntityLabels = Record<string, string>;
29
- /** Owner reference for a catalog entity. */
30
- export interface CatalogOwnership {
31
- /** User id (ownerType='user') or team/org id (ownerType='team'). */
32
- readonly ownerId?: string | null;
33
- readonly ownerType?: OwnerType | null;
34
- }
@@ -16,4 +16,4 @@ export const LIFECYCLE_STAGES = ['experimental', 'production', 'deprecated'];
16
16
  export const CRITICALITY_LEVELS = ['low', 'medium', 'high', 'critical'];
17
17
  /** Whether an owner reference points at an individual user or a team/org. */
18
18
  export const OWNER_TYPES = ['user', 'team'];
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1tZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9jYXRhbG9nLW1ldGFkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7OztHQVNHO0FBRUgsMkNBQTJDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxZQUFZLENBQVUsQ0FBQztBQUd0RiwrRUFBK0U7QUFDL0UsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQVUsQ0FBQztBQUdqRiw2RUFBNkU7QUFDN0UsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogRGV2ZWxvcGVyLXBvcnRhbCBjYXRhbG9nIG1ldGFkYXRhIHNoYXJlZCBhY3Jvc3MgY2F0YWxvZyBlbnRpdGllc1xuICogKHBpcGVsaW5lcyBhbmQgcGx1Z2lucyB0b2RheTsgYW55IGZ1dHVyZSBjYXRhbG9nYWJsZSBlbnRpdHkgbmV4dCkuXG4gKlxuICogVGhlc2UgYXJlIHRoZSBvd25lcnNoaXAvbGlmZWN5Y2xlL2NsYXNzaWZpY2F0aW9uIGZpZWxkcyBhbiBpbnRlcm5hbFxuICogZGV2ZWxvcGVyIHBvcnRhbCBrZXlzIGl0cyBjYXRhbG9nLCBcIm15IHNlcnZpY2VzXCIgdmlld3MsIGFuZCBzY29yZWNhcmRzXG4gKiBvZmYgb2Yg4oCUIHRoZSBjb3VudGVycGFydCB0byBCYWNrc3RhZ2UncyBgbWV0YWRhdGFgL2BzcGVjLm93bmVyYC9cbiAqIGBzcGVjLmxpZmVjeWNsZWAuIEtlcHQgaGVyZSAobm90IHBlci1zY2hlbWEpIHNvIHRoZSBEQiBzY2hlbWEsIHRoZSBab2RcbiAqIHZhbGlkYXRpb24sIGFuZCB0aGUgQVBJIGFsbCBkcmF3IGZyb20gb25lIHNvdXJjZSBvZiB0cnV0aC5cbiAqL1xuXG4vKiogTGlmZWN5Y2xlIHN0YWdlIG9mIGEgY2F0YWxvZyBlbnRpdHkuICovXG5leHBvcnQgY29uc3QgTElGRUNZQ0xFX1NUQUdFUyA9IFsnZXhwZXJpbWVudGFsJywgJ3Byb2R1Y3Rpb24nLCAnZGVwcmVjYXRlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTGlmZWN5Y2xlID0gKHR5cGVvZiBMSUZFQ1lDTEVfU1RBR0VTKVtudW1iZXJdO1xuXG4vKiogT3BlcmF0aW9uYWwgY3JpdGljYWxpdHkgb2YgYSBjYXRhbG9nIGVudGl0eSAob3B0aW9uYWwvdW5zZXQgYnkgZGVmYXVsdCkuICovXG5leHBvcnQgY29uc3QgQ1JJVElDQUxJVFlfTEVWRUxTID0gWydsb3cnLCAnbWVkaXVtJywgJ2hpZ2gnLCAnY3JpdGljYWwnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIENyaXRpY2FsaXR5ID0gKHR5cGVvZiBDUklUSUNBTElUWV9MRVZFTFMpW251bWJlcl07XG5cbi8qKiBXaGV0aGVyIGFuIG93bmVyIHJlZmVyZW5jZSBwb2ludHMgYXQgYW4gaW5kaXZpZHVhbCB1c2VyIG9yIGEgdGVhbS9vcmcuICovXG5leHBvcnQgY29uc3QgT1dORVJfVFlQRVMgPSBbJ3VzZXInLCAndGVhbSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgT3duZXJUeXBlID0gKHR5cGVvZiBPV05FUl9UWVBFUylbbnVtYmVyXTtcblxuLyoqIEEgdGl0bGVkIGV4dGVybmFsIGxpbmsgYXR0YWNoZWQgdG8gYSBjYXRhbG9nIGVudGl0eSAoZG9jcywgZGFzaGJvYXJkLCBydW5ib29rLCDigKYpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlMaW5rIHtcbiAgcmVhZG9ubHkgdGl0bGU6IHN0cmluZztcbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBpY29uIGhpbnQgdGhlIFVJIG1heSBtYXAgdG8gYSBnbHlwaCAoZS5nLiAnZG9jcycsICdkYXNoYm9hcmQnKS4gKi9cbiAgcmVhZG9ubHkgaWNvbj86IHN0cmluZztcbn1cblxuLyoqIEZyZWUtZm9ybSB0eXBlZCBjbGFzc2lmaWNhdGlvbiBsYWJlbHM6IGB7IHRlYW06ICdwYXltZW50cycsIHRpZXI6ICdnb2xkJyB9YC4gKi9cbmV4cG9ydCB0eXBlIEVudGl0eUxhYmVscyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbi8qKiBPd25lciByZWZlcmVuY2UgZm9yIGEgY2F0YWxvZyBlbnRpdHkuICovXG5leHBvcnQgaW50ZXJmYWNlIENhdGFsb2dPd25lcnNoaXAge1xuICAvKiogVXNlciBpZCAob3duZXJUeXBlPSd1c2VyJykgb3IgdGVhbS9vcmcgaWQgKG93bmVyVHlwZT0ndGVhbScpLiAqL1xuICByZWFkb25seSBvd25lcklkPzogc3RyaW5nIHwgbnVsbDtcbiAgcmVhZG9ubHkgb3duZXJUeXBlPzogT3duZXJUeXBlIHwgbnVsbDtcbn1cbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1tZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9jYXRhbG9nLW1ldGFkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7OztHQVNHO0FBRUgsMkNBQTJDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxZQUFZLENBQVUsQ0FBQztBQUd0RiwrRUFBK0U7QUFDL0UsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQVUsQ0FBQztBQUdqRiw2RUFBNkU7QUFDN0UsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogRGV2ZWxvcGVyLXBvcnRhbCBjYXRhbG9nIG1ldGFkYXRhIHNoYXJlZCBhY3Jvc3MgY2F0YWxvZyBlbnRpdGllc1xuICogKHBpcGVsaW5lcyBhbmQgcGx1Z2lucyB0b2RheTsgYW55IGZ1dHVyZSBjYXRhbG9nYWJsZSBlbnRpdHkgbmV4dCkuXG4gKlxuICogVGhlc2UgYXJlIHRoZSBvd25lcnNoaXAvbGlmZWN5Y2xlL2NsYXNzaWZpY2F0aW9uIGZpZWxkcyBhbiBpbnRlcm5hbFxuICogZGV2ZWxvcGVyIHBvcnRhbCBrZXlzIGl0cyBjYXRhbG9nLCBcIm15IHNlcnZpY2VzXCIgdmlld3MsIGFuZCBzY29yZWNhcmRzXG4gKiBvZmYgb2Yg4oCUIHRoZSBjb3VudGVycGFydCB0byBCYWNrc3RhZ2UncyBgbWV0YWRhdGFgL2BzcGVjLm93bmVyYC9cbiAqIGBzcGVjLmxpZmVjeWNsZWAuIEtlcHQgaGVyZSAobm90IHBlci1zY2hlbWEpIHNvIHRoZSBEQiBzY2hlbWEsIHRoZSBab2RcbiAqIHZhbGlkYXRpb24sIGFuZCB0aGUgQVBJIGFsbCBkcmF3IGZyb20gb25lIHNvdXJjZSBvZiB0cnV0aC5cbiAqL1xuXG4vKiogTGlmZWN5Y2xlIHN0YWdlIG9mIGEgY2F0YWxvZyBlbnRpdHkuICovXG5leHBvcnQgY29uc3QgTElGRUNZQ0xFX1NUQUdFUyA9IFsnZXhwZXJpbWVudGFsJywgJ3Byb2R1Y3Rpb24nLCAnZGVwcmVjYXRlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTGlmZWN5Y2xlID0gKHR5cGVvZiBMSUZFQ1lDTEVfU1RBR0VTKVtudW1iZXJdO1xuXG4vKiogT3BlcmF0aW9uYWwgY3JpdGljYWxpdHkgb2YgYSBjYXRhbG9nIGVudGl0eSAob3B0aW9uYWwvdW5zZXQgYnkgZGVmYXVsdCkuICovXG5leHBvcnQgY29uc3QgQ1JJVElDQUxJVFlfTEVWRUxTID0gWydsb3cnLCAnbWVkaXVtJywgJ2hpZ2gnLCAnY3JpdGljYWwnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIENyaXRpY2FsaXR5ID0gKHR5cGVvZiBDUklUSUNBTElUWV9MRVZFTFMpW251bWJlcl07XG5cbi8qKiBXaGV0aGVyIGFuIG93bmVyIHJlZmVyZW5jZSBwb2ludHMgYXQgYW4gaW5kaXZpZHVhbCB1c2VyIG9yIGEgdGVhbS9vcmcuICovXG5leHBvcnQgY29uc3QgT1dORVJfVFlQRVMgPSBbJ3VzZXInLCAndGVhbSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgT3duZXJUeXBlID0gKHR5cGVvZiBPV05FUl9UWVBFUylbbnVtYmVyXTtcblxuLyoqIEEgdGl0bGVkIGV4dGVybmFsIGxpbmsgYXR0YWNoZWQgdG8gYSBjYXRhbG9nIGVudGl0eSAoZG9jcywgZGFzaGJvYXJkLCBydW5ib29rLCDigKYpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlMaW5rIHtcbiAgcmVhZG9ubHkgdGl0bGU6IHN0cmluZztcbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBpY29uIGhpbnQgdGhlIFVJIG1heSBtYXAgdG8gYSBnbHlwaCAoZS5nLiAnZG9jcycsICdkYXNoYm9hcmQnKS4gKi9cbiAgcmVhZG9ubHkgaWNvbj86IHN0cmluZztcbn1cblxuLyoqIEZyZWUtZm9ybSB0eXBlZCBjbGFzc2lmaWNhdGlvbiBsYWJlbHM6IGB7IHRlYW06ICdwYXltZW50cycsIHRpZXI6ICdnb2xkJyB9YC4gKi9cbmV4cG9ydCB0eXBlIEVudGl0eUxhYmVscyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4iXX0=
@@ -37,7 +37,6 @@ export declare const BUILTIN_RESERVED_HANDLES: readonly string[];
37
37
  * publishes it (approving the request) or withdraws it.
38
38
  */
39
39
  export declare const TENANT_REQUEST_KINDS: readonly ['new_listing', 'new_version', 'listing_update', 'yank', 'unpause', 'transfer', 'claim', 'profile_change', 'verify', 'advisory'];
40
- export type TenantRequestKind = (typeof TENANT_REQUEST_KINDS)[number];
41
40
  /** Kinds submitted under `plugins:publish` (the rest need `publishers:manage`). */
42
41
  export declare const PUBLISH_PERMISSION_REQUEST_KINDS: readonly string[];
43
42
  /** Kinds DECIDED with `publishers:verify` (the rest need `plugins:moderate`). */
@@ -116,4 +116,4 @@ export function isAnonymousSubmissionsEnabled() {
116
116
  export function isPluginReviewsEnabled() {
117
117
  return flag('PLUGIN_REVIEWS_ENABLED', true);
118
118
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2Vjb3N5c3RlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFcEQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyx5QkFBeUIsQ0FBQztBQUV6RTs7aURBRWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLFlBQVksQ0FBQztBQUU1RCw2REFBNkQ7QUFDN0QsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0QsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsK0JBQStCLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyw0QkFBNEIsQ0FBQztBQUNyRSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFDdEMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBRXZDLHVFQUF1RTtBQUN2RSxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBYztJQUNuRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2pGLE9BQU8sV0FBVyxvQkFBb0IsSUFBSSxvQkFBb0IsYUFBYSxDQUFDO0lBQzlFLENBQUM7SUFDRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDM0MsT0FBTyw4RUFBOEUsQ0FBQztJQUN4RixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBc0I7SUFDekQsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxlQUFlO0lBQzNGLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxTQUFTO0lBQ3JGLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLO0lBQ3BGLHFGQUFxRjtJQUNyRixRQUFRLEVBQUUsVUFBVTtDQUNyQixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLGFBQWEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLFNBQVM7SUFDakUsVUFBVSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsVUFBVTtDQUNuRCxDQUFDO0FBR1gsbUZBQW1GO0FBQ25GLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFzQjtJQUNqRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxTQUFTO0NBQ2xFLENBQUM7QUFFRixpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQXNCLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUV6RywrR0FBK0c7QUFDL0csTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQXNCLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBRWhJLDJGQUEyRjtBQUMzRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBVyxDQUFDO0FBRXhFLFNBQVMsSUFBSSxDQUFDLElBQVksRUFBRSxJQUFhO0lBQ3ZDLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzRCxJQUFJLEdBQUcsS0FBSyxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDNUIsT0FBTyxHQUFHLEtBQUssT0FBTyxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxLQUFLLEtBQUssSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDO0FBQ3pFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QjtJQUMzQyxPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUseUJBQXlCO0lBQ3ZDLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsNkJBQTZCO0lBQzNDLE9BQU8sSUFBSSxDQUFDLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQjtJQUNwQyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGx1Z2luLWVjb3N5c3RlbSBjb25zdGFudHMgc2hhcmVkIGJ5IHRoZSBwbHVnaW4gc2VydmljZSAocHVibGlzaGVycywgdGhlXG4gKiBwdWJsaXNoLXJlcXVlc3QgcXVldWUsIGF1dG8tYXBwcm92YWwpIGFuZCBpdHMgY2FsbGVyc1xuICogKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLiBEZXBlbmRlbmN5LWZyZWUgc29cbiAqIHRoZSBmcm9udGVuZCBhbmQgdGhlIENMSSBjYW4gaW1wb3J0IGl0IHRvby5cbiAqL1xuXG5pbXBvcnQgeyBpc0JpbGxpbmdFbmFibGVkIH0gZnJvbSAnLi9xdW90YS10aWVycy5qcyc7XG5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHN5c3RlbS1vcmcgU0VSVklDRSBBQ0NPVU5UIHRoZSBPZmZpY2lhbCBjYXRhbG9nIGxvYWRlclxuICogKGBkZXBsb3kvYmluL2xvYWQtcGx1Z2lucy5zaGAsIGRyaXZlbiBieSBgaW5pdC1wbGF0Zm9ybS5zaGApIHJ1bnMgYXMuIE9ubHkgYVxuICogcmVxdWVzdCBzdWJtaXR0ZWQgYnkgdGhpcyBpZGVudGl0eSwgZnJvbSB0aGUgc3lzdGVtIG9yZywgY2FuIHJpZGUgdGhlXG4gKiBib290c3RyYXAgZXhjZXB0aW9uIG9yIHRoZSBPZmZpY2lhbCBjYXRhbG9nIGF1dG8tYXBwcm92YWwgcnVsZSDigJRcbiAqIG5ldmVyIGEgcGVyc29uLCB3aGljaCBrZWVwcyBcImEgc3VwZXJhZG1pbiB1cGxvYWRzIGFuZCBhcHByb3ZlcyBhbG9uZVwiIGNsb3NlZC5cbiAqIFNlcnZpY2UtYWNjb3VudCBuYW1lcyBhcmUgdW5pcXVlIHBlciBvcmcgYW5kIG9ubHkgc3lzdGVtLW9yZyBhZG1pbnNcbiAqIGNhbiBjcmVhdGUgb25lIHRoZXJlLlxuICovXG5leHBvcnQgY29uc3QgT0ZGSUNJQUxfQ0FUQUxPR19MT0FERVJfQUNDT1VOVCA9ICdvZmZpY2lhbC1jYXRhbG9nLWxvYWRlcic7XG5cbi8qKiBUaGUgcHVibGlzaGVyIHRlcm1zIHZlcnNpb24gaW4gZm9yY2Ugd2hlbiB0aGUgb3BlcmF0b3Igc2V0cyBub25lLiBCdW1waW5nIGl0XG4gKiAgKGBQVUJMSVNIRVJfVEVSTVNfVkVSU0lPTmApIG1ha2VzIGV2ZXJ5IHB1Ymxpc2hlciByZS1hY2NlcHQgYmVmb3JlIGl0cyBuZXh0XG4gKiAgcmVxdWVzdDsgZXhpc3RpbmcgbGlzdGluZ3MgYXJlIHVuYWZmZWN0ZWQuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9QVUJMSVNIRVJfVEVSTVNfVkVSU0lPTiA9ICcyMDI2LTA5LTIxJztcblxuLyoqIFRoZSBwdWJsaXNoZXIgdGVybXMgdmVyc2lvbiBpbiBmb3JjZSBvbiB0aGlzIGluc3RhbmNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1Ymxpc2hlclRlcm1zVmVyc2lvbigpOiBzdHJpbmcge1xuICBjb25zdCB2ID0gKHByb2Nlc3MuZW52LlBVQkxJU0hFUl9URVJNU19WRVJTSU9OID8/ICcnKS50cmltKCk7XG4gIHJldHVybiB2ICE9PSAnJyA/IHYuc2xpY2UoMCwgNTApIDogREVGQVVMVF9QVUJMSVNIRVJfVEVSTVNfVkVSU0lPTjtcbn1cblxuLyoqXG4gKiBBIHB1Ymxpc2hlciBoYW5kbGU6IG9uZSBsb3dlcmNhc2UgcmVnaXN0cnkgcGF0aCBjb21wb25lbnQsIGJlY2F1c2UgaXQgbmFtZXNcbiAqIHRoZSBgcHVibGljLzxoYW5kbGU+LzxuYW1lPmAgcmVwb3NpdG9yeSDigJQgbGV0dGVycywgZGlnaXRzIGFuZCBzaW5nbGVcbiAqIGh5cGhlbnMgYmV0d2VlbiB0aGVtLCAy4oCTMzkgY2hhcmFjdGVycy5cbiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hFUl9IQU5ETEVfUEFUVEVSTiA9IC9eW2EtejAtOV0rKD86LVthLXowLTldKykqJC87XG5leHBvcnQgY29uc3QgUFVCTElTSEVSX0hBTkRMRV9NSU4gPSAyO1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hFUl9IQU5ETEVfTUFYID0gMzk7XG5cbi8qKiBXaHkgYGhhbmRsZWAgaXNuJ3QgYSB2YWxpZCBwdWJsaXNoZXIgaGFuZGxlLCBvciBudWxsIHdoZW4gaXQgaXMuICovXG5leHBvcnQgZnVuY3Rpb24gcHVibGlzaGVySGFuZGxlUHJvYmxlbShoYW5kbGU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBpZiAoaGFuZGxlLmxlbmd0aCA8IFBVQkxJU0hFUl9IQU5ETEVfTUlOIHx8IGhhbmRsZS5sZW5ndGggPiBQVUJMSVNIRVJfSEFORExFX01BWCkge1xuICAgIHJldHVybiBgbXVzdCBiZSAke1BVQkxJU0hFUl9IQU5ETEVfTUlOfS0ke1BVQkxJU0hFUl9IQU5ETEVfTUFYfSBjaGFyYWN0ZXJzYDtcbiAgfVxuICBpZiAoIVBVQkxJU0hFUl9IQU5ETEVfUEFUVEVSTi50ZXN0KGhhbmRsZSkpIHtcbiAgICByZXR1cm4gJ211c3QgYmUgbG93ZXJjYXNlIGxldHRlcnMgYW5kIGRpZ2l0cywgb3B0aW9uYWxseSBzZXBhcmF0ZWQgYnkgc2luZ2xlIGh5cGhlbnMnO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgbm8gdGVuYW50IG1heSBjbGFpbSBkaXJlY3RseSwgb24gdG9wIG9mIHRoZSBzeXN0ZW0gb3JnJ3NcbiAqIGBlY29zeXN0ZW1fcmVzZXJ2ZWRfbmFtZXNgIHRhYmxlOiB0aGUgcGxhdGZvcm0ncyBvd24gcHVibGlzaGVycywgd29yZHMgdGhhdFxuICogd291bGQgcmVhZCBhcyBhbiBlbmRvcnNlbWVudCwgYW5kIGluZnJhc3RydWN0dXJlIG5hbWVzLiBBIHJlc2VydmVkIGhhbmRsZSBjYW5cbiAqIHN0aWxsIGJlIHJlcXVlc3RlZCB0aHJvdWdoIGEgYGNsYWltYCByZXF1ZXN0LCBkZWNpZGVkIGJ5IHRoZSBzeXN0ZW0gb3JnLlxuICovXG5leHBvcnQgY29uc3QgQlVJTFRJTl9SRVNFUlZFRF9IQU5ETEVTOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgJ3BpcGVsaW5lLWJ1aWxkZXInLCAnY29tbXVuaXR5JywgJ29mZmljaWFsJywgJ3ZlcmlmaWVkJywgJ3N5c3RlbScsICdhZG1pbicsICdhZG1pbmlzdHJhdG9yJyxcbiAgJ3Jvb3QnLCAnc3VwcG9ydCcsICdzZWN1cml0eScsICdzdGFmZicsICdtb2RlcmF0b3InLCAnZWNvc3lzdGVtJywgJ3B1YmxpYycsICdsaWJyYXJ5JyxcbiAgJ2Fub255bW91cycsICd1bnZlcmlmaWVkJywgJ3BsYXRmb3JtJywgJ3JlZ2lzdHJ5JywgJ3BsdWdpbnMnLCAncGx1Z2luJywgJ2FwaScsICd3d3cnLFxuICAvLyBTdGF0aWMgc2VnbWVudHMgb2YgdGhlIHB1YmxpYyBkaXJlY3RvcnkncyBgL3BsdWdpbnMvPHB1Ymxpc2hlcj4vPG5hbWU+YCBVUkwgc3BhY2UuXG4gICdzdWJtaXQnLCAnY2F0ZWdvcnknLFxuXTtcblxuLyoqXG4gKiBSZXF1ZXN0IGtpbmRzIGEgVEVOQU5UIG1heSBzdWJtaXQgKGBtb2RlcmF0aW9uYCBpcyBzeXN0ZW0tb3JnLWNyZWF0ZWQpLiBBblxuICogYGFkdmlzb3J5YCByZXF1ZXN0IGNhcnJpZXMgYSBzZWN1cml0eS1hZHZpc29yeSBEUkFGVDsgb25seSB0aGUgc3lzdGVtIG9yZ1xuICogcHVibGlzaGVzIGl0IChhcHByb3ZpbmcgdGhlIHJlcXVlc3QpIG9yIHdpdGhkcmF3cyBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRFTkFOVF9SRVFVRVNUX0tJTkRTID0gW1xuICAnbmV3X2xpc3RpbmcnLCAnbmV3X3ZlcnNpb24nLCAnbGlzdGluZ191cGRhdGUnLCAneWFuaycsICd1bnBhdXNlJyxcbiAgJ3RyYW5zZmVyJywgJ2NsYWltJywgJ3Byb2ZpbGVfY2hhbmdlJywgJ3ZlcmlmeScsICdhZHZpc29yeScsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgVGVuYW50UmVxdWVzdEtpbmQgPSAodHlwZW9mIFRFTkFOVF9SRVFVRVNUX0tJTkRTKVtudW1iZXJdO1xuXG4vKiogS2luZHMgc3VibWl0dGVkIHVuZGVyIGBwbHVnaW5zOnB1Ymxpc2hgICh0aGUgcmVzdCBuZWVkIGBwdWJsaXNoZXJzOm1hbmFnZWApLiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hfUEVSTUlTU0lPTl9SRVFVRVNUX0tJTkRTOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgJ25ld19saXN0aW5nJywgJ25ld192ZXJzaW9uJywgJ2xpc3RpbmdfdXBkYXRlJywgJ3lhbmsnLCAndW5wYXVzZScsXG5dO1xuXG4vKiogS2luZHMgREVDSURFRCB3aXRoIGBwdWJsaXNoZXJzOnZlcmlmeWAgKHRoZSByZXN0IG5lZWQgYHBsdWdpbnM6bW9kZXJhdGVgKS4gKi9cbmV4cG9ydCBjb25zdCBWRVJJRllfUkVRVUVTVF9LSU5EUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbJ3RyYW5zZmVyJywgJ2NsYWltJywgJ3Byb2ZpbGVfY2hhbmdlJywgJ3ZlcmlmeSddO1xuXG4vKiogS2luZHMgd2hvc2UgZGVjaXNpb24gcmVxdWlyZXMgYSBzdGVwLXVwIChzdXNwZW5kL3lhbmsvdGFrZWRvd24sIGFuZCBldmVyeSBgcHVibGlzaGVyczp2ZXJpZnlgIGRlY2lzaW9uKS4gKi9cbmV4cG9ydCBjb25zdCBTVEVQX1VQX1JFUVVFU1RfS0lORFM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWyd5YW5rJywgJ3RyYW5zZmVyJywgJ2NsYWltJywgJ3Byb2ZpbGVfY2hhbmdlJywgJ3ZlcmlmeScsICdtb2RlcmF0aW9uJ107XG5cbi8qKiBNb2RlcmF0aW9uLXF1ZXVlIFNMQSBwZXIgbGFuZSwgaW4gaG91cnMgKDIgYnVzaW5lc3MgZGF5cyDiiYggNDggaDsgc2VjdXJpdHkgbGFuZSA0IGgpLiAqL1xuZXhwb3J0IGNvbnN0IFJFUVVFU1RfU0xBX0hPVVJTID0geyBzdGFuZGFyZDogNDgsIHNlY3VyaXR5OiA0IH0gYXMgY29uc3Q7XG5cbmZ1bmN0aW9uIGZsYWcobmFtZTogc3RyaW5nLCBkZmx0OiBib29sZWFuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHJhdyA9IChwcm9jZXNzLmVudltuYW1lXSA/PyAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChyYXcgPT09ICcnKSByZXR1cm4gZGZsdDtcbiAgcmV0dXJuIHJhdyAhPT0gJ2ZhbHNlJyAmJiByYXcgIT09ICcwJyAmJiByYXcgIT09ICdvZmYnICYmIHJhdyAhPT0gJ25vJztcbn1cblxuLyoqXG4gKiBgT0ZGSUNJQUxfQVVUT19BUFBST1ZBTF9FTkFCTEVEYCAoZGVmYXVsdCBPTik6IHdoZW4gb2ZmLCB0aGUgc2VlZGVkXG4gKiBPZmZpY2lhbCBjYXRhbG9nIGF1dG8tYXBwcm92YWwgcnVsZSBuZXZlciBmaXJlcyBhbmQgZXZlcnkgT2ZmaWNpYWwgdXBkYXRlXG4gKiB3YWl0cyBmb3IgdHdvLXBlcnNvbiBhcHByb3ZhbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2ZmaWNpYWxBdXRvQXBwcm92YWxFbmFibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmxhZygnT0ZGSUNJQUxfQVVUT19BUFBST1ZBTF9FTkFCTEVEJywgdHJ1ZSk7XG59XG5cbi8qKlxuICogYFBMVUdJTl9QVUJMSVNISU5HX0VOQUJMRURgOiB3aGV0aGVyIFRFTkFOVCBvcmdzIG1heSBzdWJtaXQgcHVibGlzaFxuICogcmVxdWVzdHMuIERlZmF1bHRzIG9uIGZvciB0aGUgaG9zdGVkIGluc3RhbmNlIChiaWxsaW5nIG9uKSBhbmQgb2ZmIGZvciBhXG4gKiBzZWxmLWhvc3RlZCBvbmUgKGJpbGxpbmcgb2ZmKS4gVGhlIHN5c3RlbSBvcmcncyBPZmZpY2lhbCBjYXRhbG9nIGlzIG5ldmVyXG4gKiBhZmZlY3RlZCDigJQgaXQgaXMgdGhlIGluc3RhbmNlJ3Mgb3duIGNhdGFsb2cuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1BsdWdpblB1Ymxpc2hpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmxhZygnUExVR0lOX1BVQkxJU0hJTkdfRU5BQkxFRCcsIGlzQmlsbGluZ0VuYWJsZWQoKSk7XG59XG5cbi8qKlxuICogYEFOT05ZTU9VU19TVUJNSVNTSU9OU19FTkFCTEVEYCAoZGVmYXVsdCBPRkYpOiB3aGV0aGVyIHRoZVxuICogbm90LWxvZ2dlZC1pbiBwbHVnaW4gc3VibWlzc2lvbiBBUEkgaXMgc2VydmVkLiBFdmVuIHdoZW4gb24sIHN1Ym1pc3Npb25zXG4gKiBzdGF5IHVuYXZhaWxhYmxlIHdoaWxlIG91dGJvdW5kIGVtYWlsIGlzIG5vdCBjb25maWd1cmVkICh0aGUgbWFnaWMgbGluayBpc1xuICogdGhlIHN1Ym1pdHRlcidzIG9ubHkgdmVyaWZpY2F0aW9uKSDigJQgdGhlIHBsdWdpbiBzZXJ2aWNlIGNoZWNrcyB0aGF0IHRvby5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQW5vbnltb3VzU3VibWlzc2lvbnNFbmFibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmxhZygnQU5PTllNT1VTX1NVQk1JU1NJT05TX0VOQUJMRUQnLCBmYWxzZSk7XG59XG5cbi8qKlxuICogYFBMVUdJTl9SRVZJRVdTX0VOQUJMRURgIChkZWZhdWx0IE9OKTogd2hlbiBvZmYsIHJldmlld3MgYXJlIFJFQUQtT05MWSDigJRcbiAqIHdyaXRpbmcsIGVkaXRpbmcsIHZvdGluZywgcmVwb3J0aW5nIGFuZCByZXBseWluZyBhbnN3ZXJcbiAqIGBQTFVHSU5fUkVWSUVXU19ESVNBQkxFRGA7IG1vZGVyYXRpb24ga2VlcHMgd29ya2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGx1Z2luUmV2aWV3c0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gIHJldHVybiBmbGFnKCdQTFVHSU5fUkVWSUVXU19FTkFCTEVEJywgdHJ1ZSk7XG59XG4iXX0=
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2Vjb3N5c3RlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFcEQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyx5QkFBeUIsQ0FBQztBQUV6RTs7aURBRWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLFlBQVksQ0FBQztBQUU1RCw2REFBNkQ7QUFDN0QsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0QsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsK0JBQStCLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyw0QkFBNEIsQ0FBQztBQUNyRSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFDdEMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBRXZDLHVFQUF1RTtBQUN2RSxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBYztJQUNuRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2pGLE9BQU8sV0FBVyxvQkFBb0IsSUFBSSxvQkFBb0IsYUFBYSxDQUFDO0lBQzlFLENBQUM7SUFDRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDM0MsT0FBTyw4RUFBOEUsQ0FBQztJQUN4RixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBc0I7SUFDekQsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxlQUFlO0lBQzNGLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxTQUFTO0lBQ3JGLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLO0lBQ3BGLHFGQUFxRjtJQUNyRixRQUFRLEVBQUUsVUFBVTtDQUNyQixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLGFBQWEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLFNBQVM7SUFDakUsVUFBVSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsVUFBVTtDQUNuRCxDQUFDO0FBRVgsbUZBQW1GO0FBQ25GLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFzQjtJQUNqRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxTQUFTO0NBQ2xFLENBQUM7QUFFRixpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQXNCLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUV6RywrR0FBK0c7QUFDL0csTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQXNCLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBRWhJLDJGQUEyRjtBQUMzRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBVyxDQUFDO0FBRXhFLFNBQVMsSUFBSSxDQUFDLElBQVksRUFBRSxJQUFhO0lBQ3ZDLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzRCxJQUFJLEdBQUcsS0FBSyxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDNUIsT0FBTyxHQUFHLEtBQUssT0FBTyxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxLQUFLLEtBQUssSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDO0FBQ3pFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QjtJQUMzQyxPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUseUJBQXlCO0lBQ3ZDLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsNkJBQTZCO0lBQzNDLE9BQU8sSUFBSSxDQUFDLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQjtJQUNwQyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGx1Z2luLWVjb3N5c3RlbSBjb25zdGFudHMgc2hhcmVkIGJ5IHRoZSBwbHVnaW4gc2VydmljZSAocHVibGlzaGVycywgdGhlXG4gKiBwdWJsaXNoLXJlcXVlc3QgcXVldWUsIGF1dG8tYXBwcm92YWwpIGFuZCBpdHMgY2FsbGVyc1xuICogKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLiBEZXBlbmRlbmN5LWZyZWUgc29cbiAqIHRoZSBmcm9udGVuZCBhbmQgdGhlIENMSSBjYW4gaW1wb3J0IGl0IHRvby5cbiAqL1xuXG5pbXBvcnQgeyBpc0JpbGxpbmdFbmFibGVkIH0gZnJvbSAnLi9xdW90YS10aWVycy5qcyc7XG5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHN5c3RlbS1vcmcgU0VSVklDRSBBQ0NPVU5UIHRoZSBPZmZpY2lhbCBjYXRhbG9nIGxvYWRlclxuICogKGBkZXBsb3kvYmluL2xvYWQtcGx1Z2lucy5zaGAsIGRyaXZlbiBieSBgaW5pdC1wbGF0Zm9ybS5zaGApIHJ1bnMgYXMuIE9ubHkgYVxuICogcmVxdWVzdCBzdWJtaXR0ZWQgYnkgdGhpcyBpZGVudGl0eSwgZnJvbSB0aGUgc3lzdGVtIG9yZywgY2FuIHJpZGUgdGhlXG4gKiBib290c3RyYXAgZXhjZXB0aW9uIG9yIHRoZSBPZmZpY2lhbCBjYXRhbG9nIGF1dG8tYXBwcm92YWwgcnVsZSDigJRcbiAqIG5ldmVyIGEgcGVyc29uLCB3aGljaCBrZWVwcyBcImEgc3VwZXJhZG1pbiB1cGxvYWRzIGFuZCBhcHByb3ZlcyBhbG9uZVwiIGNsb3NlZC5cbiAqIFNlcnZpY2UtYWNjb3VudCBuYW1lcyBhcmUgdW5pcXVlIHBlciBvcmcgYW5kIG9ubHkgc3lzdGVtLW9yZyBhZG1pbnNcbiAqIGNhbiBjcmVhdGUgb25lIHRoZXJlLlxuICovXG5leHBvcnQgY29uc3QgT0ZGSUNJQUxfQ0FUQUxPR19MT0FERVJfQUNDT1VOVCA9ICdvZmZpY2lhbC1jYXRhbG9nLWxvYWRlcic7XG5cbi8qKiBUaGUgcHVibGlzaGVyIHRlcm1zIHZlcnNpb24gaW4gZm9yY2Ugd2hlbiB0aGUgb3BlcmF0b3Igc2V0cyBub25lLiBCdW1waW5nIGl0XG4gKiAgKGBQVUJMSVNIRVJfVEVSTVNfVkVSU0lPTmApIG1ha2VzIGV2ZXJ5IHB1Ymxpc2hlciByZS1hY2NlcHQgYmVmb3JlIGl0cyBuZXh0XG4gKiAgcmVxdWVzdDsgZXhpc3RpbmcgbGlzdGluZ3MgYXJlIHVuYWZmZWN0ZWQuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9QVUJMSVNIRVJfVEVSTVNfVkVSU0lPTiA9ICcyMDI2LTA5LTIxJztcblxuLyoqIFRoZSBwdWJsaXNoZXIgdGVybXMgdmVyc2lvbiBpbiBmb3JjZSBvbiB0aGlzIGluc3RhbmNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1Ymxpc2hlclRlcm1zVmVyc2lvbigpOiBzdHJpbmcge1xuICBjb25zdCB2ID0gKHByb2Nlc3MuZW52LlBVQkxJU0hFUl9URVJNU19WRVJTSU9OID8/ICcnKS50cmltKCk7XG4gIHJldHVybiB2ICE9PSAnJyA/IHYuc2xpY2UoMCwgNTApIDogREVGQVVMVF9QVUJMSVNIRVJfVEVSTVNfVkVSU0lPTjtcbn1cblxuLyoqXG4gKiBBIHB1Ymxpc2hlciBoYW5kbGU6IG9uZSBsb3dlcmNhc2UgcmVnaXN0cnkgcGF0aCBjb21wb25lbnQsIGJlY2F1c2UgaXQgbmFtZXNcbiAqIHRoZSBgcHVibGljLzxoYW5kbGU+LzxuYW1lPmAgcmVwb3NpdG9yeSDigJQgbGV0dGVycywgZGlnaXRzIGFuZCBzaW5nbGVcbiAqIGh5cGhlbnMgYmV0d2VlbiB0aGVtLCAy4oCTMzkgY2hhcmFjdGVycy5cbiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hFUl9IQU5ETEVfUEFUVEVSTiA9IC9eW2EtejAtOV0rKD86LVthLXowLTldKykqJC87XG5leHBvcnQgY29uc3QgUFVCTElTSEVSX0hBTkRMRV9NSU4gPSAyO1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hFUl9IQU5ETEVfTUFYID0gMzk7XG5cbi8qKiBXaHkgYGhhbmRsZWAgaXNuJ3QgYSB2YWxpZCBwdWJsaXNoZXIgaGFuZGxlLCBvciBudWxsIHdoZW4gaXQgaXMuICovXG5leHBvcnQgZnVuY3Rpb24gcHVibGlzaGVySGFuZGxlUHJvYmxlbShoYW5kbGU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBpZiAoaGFuZGxlLmxlbmd0aCA8IFBVQkxJU0hFUl9IQU5ETEVfTUlOIHx8IGhhbmRsZS5sZW5ndGggPiBQVUJMSVNIRVJfSEFORExFX01BWCkge1xuICAgIHJldHVybiBgbXVzdCBiZSAke1BVQkxJU0hFUl9IQU5ETEVfTUlOfS0ke1BVQkxJU0hFUl9IQU5ETEVfTUFYfSBjaGFyYWN0ZXJzYDtcbiAgfVxuICBpZiAoIVBVQkxJU0hFUl9IQU5ETEVfUEFUVEVSTi50ZXN0KGhhbmRsZSkpIHtcbiAgICByZXR1cm4gJ211c3QgYmUgbG93ZXJjYXNlIGxldHRlcnMgYW5kIGRpZ2l0cywgb3B0aW9uYWxseSBzZXBhcmF0ZWQgYnkgc2luZ2xlIGh5cGhlbnMnO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgbm8gdGVuYW50IG1heSBjbGFpbSBkaXJlY3RseSwgb24gdG9wIG9mIHRoZSBzeXN0ZW0gb3JnJ3NcbiAqIGBlY29zeXN0ZW1fcmVzZXJ2ZWRfbmFtZXNgIHRhYmxlOiB0aGUgcGxhdGZvcm0ncyBvd24gcHVibGlzaGVycywgd29yZHMgdGhhdFxuICogd291bGQgcmVhZCBhcyBhbiBlbmRvcnNlbWVudCwgYW5kIGluZnJhc3RydWN0dXJlIG5hbWVzLiBBIHJlc2VydmVkIGhhbmRsZSBjYW5cbiAqIHN0aWxsIGJlIHJlcXVlc3RlZCB0aHJvdWdoIGEgYGNsYWltYCByZXF1ZXN0LCBkZWNpZGVkIGJ5IHRoZSBzeXN0ZW0gb3JnLlxuICovXG5leHBvcnQgY29uc3QgQlVJTFRJTl9SRVNFUlZFRF9IQU5ETEVTOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgJ3BpcGVsaW5lLWJ1aWxkZXInLCAnY29tbXVuaXR5JywgJ29mZmljaWFsJywgJ3ZlcmlmaWVkJywgJ3N5c3RlbScsICdhZG1pbicsICdhZG1pbmlzdHJhdG9yJyxcbiAgJ3Jvb3QnLCAnc3VwcG9ydCcsICdzZWN1cml0eScsICdzdGFmZicsICdtb2RlcmF0b3InLCAnZWNvc3lzdGVtJywgJ3B1YmxpYycsICdsaWJyYXJ5JyxcbiAgJ2Fub255bW91cycsICd1bnZlcmlmaWVkJywgJ3BsYXRmb3JtJywgJ3JlZ2lzdHJ5JywgJ3BsdWdpbnMnLCAncGx1Z2luJywgJ2FwaScsICd3d3cnLFxuICAvLyBTdGF0aWMgc2VnbWVudHMgb2YgdGhlIHB1YmxpYyBkaXJlY3RvcnkncyBgL3BsdWdpbnMvPHB1Ymxpc2hlcj4vPG5hbWU+YCBVUkwgc3BhY2UuXG4gICdzdWJtaXQnLCAnY2F0ZWdvcnknLFxuXTtcblxuLyoqXG4gKiBSZXF1ZXN0IGtpbmRzIGEgVEVOQU5UIG1heSBzdWJtaXQgKGBtb2RlcmF0aW9uYCBpcyBzeXN0ZW0tb3JnLWNyZWF0ZWQpLiBBblxuICogYGFkdmlzb3J5YCByZXF1ZXN0IGNhcnJpZXMgYSBzZWN1cml0eS1hZHZpc29yeSBEUkFGVDsgb25seSB0aGUgc3lzdGVtIG9yZ1xuICogcHVibGlzaGVzIGl0IChhcHByb3ZpbmcgdGhlIHJlcXVlc3QpIG9yIHdpdGhkcmF3cyBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRFTkFOVF9SRVFVRVNUX0tJTkRTID0gW1xuICAnbmV3X2xpc3RpbmcnLCAnbmV3X3ZlcnNpb24nLCAnbGlzdGluZ191cGRhdGUnLCAneWFuaycsICd1bnBhdXNlJyxcbiAgJ3RyYW5zZmVyJywgJ2NsYWltJywgJ3Byb2ZpbGVfY2hhbmdlJywgJ3ZlcmlmeScsICdhZHZpc29yeScsXG5dIGFzIGNvbnN0O1xuXG4vKiogS2luZHMgc3VibWl0dGVkIHVuZGVyIGBwbHVnaW5zOnB1Ymxpc2hgICh0aGUgcmVzdCBuZWVkIGBwdWJsaXNoZXJzOm1hbmFnZWApLiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hfUEVSTUlTU0lPTl9SRVFVRVNUX0tJTkRTOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgJ25ld19saXN0aW5nJywgJ25ld192ZXJzaW9uJywgJ2xpc3RpbmdfdXBkYXRlJywgJ3lhbmsnLCAndW5wYXVzZScsXG5dO1xuXG4vKiogS2luZHMgREVDSURFRCB3aXRoIGBwdWJsaXNoZXJzOnZlcmlmeWAgKHRoZSByZXN0IG5lZWQgYHBsdWdpbnM6bW9kZXJhdGVgKS4gKi9cbmV4cG9ydCBjb25zdCBWRVJJRllfUkVRVUVTVF9LSU5EUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbJ3RyYW5zZmVyJywgJ2NsYWltJywgJ3Byb2ZpbGVfY2hhbmdlJywgJ3ZlcmlmeSddO1xuXG4vKiogS2luZHMgd2hvc2UgZGVjaXNpb24gcmVxdWlyZXMgYSBzdGVwLXVwIChzdXNwZW5kL3lhbmsvdGFrZWRvd24sIGFuZCBldmVyeSBgcHVibGlzaGVyczp2ZXJpZnlgIGRlY2lzaW9uKS4gKi9cbmV4cG9ydCBjb25zdCBTVEVQX1VQX1JFUVVFU1RfS0lORFM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWyd5YW5rJywgJ3RyYW5zZmVyJywgJ2NsYWltJywgJ3Byb2ZpbGVfY2hhbmdlJywgJ3ZlcmlmeScsICdtb2RlcmF0aW9uJ107XG5cbi8qKiBNb2RlcmF0aW9uLXF1ZXVlIFNMQSBwZXIgbGFuZSwgaW4gaG91cnMgKDIgYnVzaW5lc3MgZGF5cyDiiYggNDggaDsgc2VjdXJpdHkgbGFuZSA0IGgpLiAqL1xuZXhwb3J0IGNvbnN0IFJFUVVFU1RfU0xBX0hPVVJTID0geyBzdGFuZGFyZDogNDgsIHNlY3VyaXR5OiA0IH0gYXMgY29uc3Q7XG5cbmZ1bmN0aW9uIGZsYWcobmFtZTogc3RyaW5nLCBkZmx0OiBib29sZWFuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHJhdyA9IChwcm9jZXNzLmVudltuYW1lXSA/PyAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChyYXcgPT09ICcnKSByZXR1cm4gZGZsdDtcbiAgcmV0dXJuIHJhdyAhPT0gJ2ZhbHNlJyAmJiByYXcgIT09ICcwJyAmJiByYXcgIT09ICdvZmYnICYmIHJhdyAhPT0gJ25vJztcbn1cblxuLyoqXG4gKiBgT0ZGSUNJQUxfQVVUT19BUFBST1ZBTF9FTkFCTEVEYCAoZGVmYXVsdCBPTik6IHdoZW4gb2ZmLCB0aGUgc2VlZGVkXG4gKiBPZmZpY2lhbCBjYXRhbG9nIGF1dG8tYXBwcm92YWwgcnVsZSBuZXZlciBmaXJlcyBhbmQgZXZlcnkgT2ZmaWNpYWwgdXBkYXRlXG4gKiB3YWl0cyBmb3IgdHdvLXBlcnNvbiBhcHByb3ZhbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2ZmaWNpYWxBdXRvQXBwcm92YWxFbmFibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmxhZygnT0ZGSUNJQUxfQVVUT19BUFBST1ZBTF9FTkFCTEVEJywgdHJ1ZSk7XG59XG5cbi8qKlxuICogYFBMVUdJTl9QVUJMSVNISU5HX0VOQUJMRURgOiB3aGV0aGVyIFRFTkFOVCBvcmdzIG1heSBzdWJtaXQgcHVibGlzaFxuICogcmVxdWVzdHMuIERlZmF1bHRzIG9uIGZvciB0aGUgaG9zdGVkIGluc3RhbmNlIChiaWxsaW5nIG9uKSBhbmQgb2ZmIGZvciBhXG4gKiBzZWxmLWhvc3RlZCBvbmUgKGJpbGxpbmcgb2ZmKS4gVGhlIHN5c3RlbSBvcmcncyBPZmZpY2lhbCBjYXRhbG9nIGlzIG5ldmVyXG4gKiBhZmZlY3RlZCDigJQgaXQgaXMgdGhlIGluc3RhbmNlJ3Mgb3duIGNhdGFsb2cuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1BsdWdpblB1Ymxpc2hpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmxhZygnUExVR0lOX1BVQkxJU0hJTkdfRU5BQkxFRCcsIGlzQmlsbGluZ0VuYWJsZWQoKSk7XG59XG5cbi8qKlxuICogYEFOT05ZTU9VU19TVUJNSVNTSU9OU19FTkFCTEVEYCAoZGVmYXVsdCBPRkYpOiB3aGV0aGVyIHRoZVxuICogbm90LWxvZ2dlZC1pbiBwbHVnaW4gc3VibWlzc2lvbiBBUEkgaXMgc2VydmVkLiBFdmVuIHdoZW4gb24sIHN1Ym1pc3Npb25zXG4gKiBzdGF5IHVuYXZhaWxhYmxlIHdoaWxlIG91dGJvdW5kIGVtYWlsIGlzIG5vdCBjb25maWd1cmVkICh0aGUgbWFnaWMgbGluayBpc1xuICogdGhlIHN1Ym1pdHRlcidzIG9ubHkgdmVyaWZpY2F0aW9uKSDigJQgdGhlIHBsdWdpbiBzZXJ2aWNlIGNoZWNrcyB0aGF0IHRvby5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQW5vbnltb3VzU3VibWlzc2lvbnNFbmFibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmxhZygnQU5PTllNT1VTX1NVQk1JU1NJT05TX0VOQUJMRUQnLCBmYWxzZSk7XG59XG5cbi8qKlxuICogYFBMVUdJTl9SRVZJRVdTX0VOQUJMRURgIChkZWZhdWx0IE9OKTogd2hlbiBvZmYsIHJldmlld3MgYXJlIFJFQUQtT05MWSDigJRcbiAqIHdyaXRpbmcsIGVkaXRpbmcsIHZvdGluZywgcmVwb3J0aW5nIGFuZCByZXBseWluZyBhbnN3ZXJcbiAqIGBQTFVHSU5fUkVWSUVXU19ESVNBQkxFRGA7IG1vZGVyYXRpb24ga2VlcHMgd29ya2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGx1Z2luUmV2aWV3c0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gIHJldHVybiBmbGFnKCdQTFVHSU5fUkVWSUVXU19FTkFCTEVEJywgdHJ1ZSk7XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import type { QuotaTier } from './quota-tiers.js';
2
2
  /** Canonical feature flag identifiers. */
3
- export type FeatureFlag = 'priority_support' | 'custom_integrations' | 'ai_generation' | 'bulk_operations' | 'sso' | 'advanced_reporting' | 'team_usage_analytics' | 'compliance_standard' | 'compliance_advanced' | 'verified_publisher';
3
+ export type FeatureFlag = 'priority_support' | 'custom_integrations' | 'ai_generation' | 'bulk_operations' | 'sso' | 'advanced_reporting' | 'team_usage_analytics' | 'compliance_standard' | 'compliance_advanced' | 'stakeholder_reports' | 'verified_publisher';
4
4
  /** All valid feature flags (order determines display order). */
5
5
  export declare const ALL_FEATURE_FLAGS: readonly FeatureFlag[];
6
6
  /** Check whether a string is a valid FeatureFlag. */
@@ -11,6 +11,7 @@ export const ALL_FEATURE_FLAGS = [
11
11
  'team_usage_analytics',
12
12
  'compliance_standard',
13
13
  'compliance_advanced',
14
+ 'stakeholder_reports',
14
15
  'verified_publisher',
15
16
  ];
16
17
  /** Check whether a string is a valid FeatureFlag. */
@@ -71,6 +72,10 @@ export const FEATURE_METADATA = {
71
72
  label: 'Advanced Compliance',
72
73
  description: 'Curated framework compliance libraries (SOC2 / PCI-DSS / CIS)',
73
74
  },
75
+ stakeholder_reports: {
76
+ label: 'Stakeholder Reports',
77
+ description: 'Scheduled team reports for managers — snapshots, review and publish, PDF/email delivery and share links',
78
+ },
74
79
  verified_publisher: {
75
80
  label: 'Verified Publisher Eligibility',
76
81
  description: 'Apply for the Verified badge on your plugin-ecosystem publisher (awarded by system-org review)',
@@ -154,4 +159,4 @@ export function complianceFeatureForTags(tags) {
154
159
  }
155
160
  return null;
156
161
  }
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1mbGFncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9mZWF0dXJlLWZsYWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUF1Q3RDLGdFQUFnRTtBQUNoRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBMkI7SUFDdkQsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIscUJBQXFCO0lBQ3JCLEtBQUs7SUFDTCxvQkFBb0I7SUFDcEIsc0JBQXNCO0lBQ3RCLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsb0JBQW9CO0NBQ3JCLENBQUM7QUFFRixxREFBcUQ7QUFDckQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQWE7SUFDOUMsT0FBUSxpQkFBdUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELDBCQUEwQjtBQUUxQixpREFBaUQ7QUFDakQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUE4QztJQUN0RSxTQUFTLEVBQUUsRUFBRTtJQUNiLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQztJQUM3RCxpRkFBaUY7SUFDakYsZ0ZBQWdGO0lBQ2hGLDhEQUE4RDtJQUM5RCxpREFBaUQ7SUFDakQsMkVBQTJFO0lBQzNFLElBQUksRUFBRSxDQUFDLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLENBQUM7SUFDM0YsVUFBVSxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztJQUNsQywrRUFBK0U7SUFDL0UsU0FBUyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztDQUNsQyxDQUFDO0FBRUYsaUNBQWlDO0FBRWpDLHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBZ0U7SUFDM0YsZ0JBQWdCLEVBQUU7UUFDaEIsS0FBSyxF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QkFBdUIsQ0FBMkIsQ0FBQztBQUV0Ryx5RUFBeUU7QUFDekUsTUFBTSxVQUFVLHlCQUF5QixDQUFDLFFBQTJCO0lBQ25FLE9BQU8sdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxJQUFhO0lBQ3BELE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzFDLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLHVCQUF1QixDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUFFLE9BQU8sdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFF1b3RhVGllciB9IGZyb20gJy4vcXVvdGEtdGllcnMuanMnO1xuXG4vLyBGZWF0dXJlIGZsYWcgaWRlbnRpZmllcnNcblxuLyoqIENhbm9uaWNhbCBmZWF0dXJlIGZsYWcgaWRlbnRpZmllcnMuICovXG5leHBvcnQgdHlwZSBGZWF0dXJlRmxhZyA9XG4gIC8vIGBwcmlvcml0eV9zdXBwb3J0YCBhbmQgYGN1c3RvbV9pbnRlZ3JhdGlvbnNgIGFyZSBFTlRFUlBSSVNFLUVYQ0xVU0lWRVxuICAvLyBtYXJrZXRpbmcvZW50aXRsZW1lbnQgZmxhZ3M6IGdyYW50ZWQgb25seSBieSB0aGUgZW50ZXJwcmlzZSB0aWVyIChubyBhZGQtb25cbiAgLy8gYnVuZGxlIHNlbGxzIHRoZW0gdG8gYSBsb3dlciB0aWVyIOKAlCBpbnRlbnRpb25hbCwgdGhleSBhbmNob3IgdGhlIEVudGVycHJpc2VcbiAgLy8gcGxhbikgYW5kIG5vdCBjdXJyZW50bHkgYHJlcXVpcmVGZWF0dXJlYC1nYXRlZCBvbiBhbnkgcm91dGUgKHRoZXkgc3VyZmFjZSBpblxuICAvLyBwbGFuIG1hcmtldGluZyArIHRoZSBlbnRpdGxlbWVudCBzZXQ7IGVuZm9yY2VtZW50IGlzIGEgZnV0dXJlIGhvb2spLiBUaGlzIGlzXG4gIC8vIGJ5IGRlc2lnbiwgbm90IGRlYWQgY29kZSDigJQgZG8gbm90IFwiZml4XCIgYnkgd2lyaW5nIGEgYnVuZGxlIHdpdGhvdXQgYSBwcmljaW5nXG4gIC8vIGRlY2lzaW9uLiBDb250cmFzdCBgc3NvYC9gYWR2YW5jZWRfcmVwb3J0aW5nYCwgd2hpY2ggQVJFIHNvbGQgYXNcbiAgLy8gYWRkLW9uIGJ1bmRsZXMgYW5kIGdhdGVkIChzZWUgYmlsbGluZy1jb25maWcgYGxvYWRCdW5kbGVzYCArIGByZXF1aXJlRmVhdHVyZWApLlxuICB8ICdwcmlvcml0eV9zdXBwb3J0J1xuICB8ICdjdXN0b21faW50ZWdyYXRpb25zJ1xuICB8ICdhaV9nZW5lcmF0aW9uJ1xuICB8ICdidWxrX29wZXJhdGlvbnMnXG4gIHwgJ3NzbydcbiAgLy8gRE9SQSAvIGFkdmFuY2VkIGRlbGl2ZXJ5IGFuYWx5dGljcyAocGFpZCB0aWVycyBvbmx5KS5cbiAgfCAnYWR2YW5jZWRfcmVwb3J0aW5nJ1xuICAvLyBQZXItdGVhbSB1c2FnZSBicmVha2Rvd24gYWNyb3NzIHRoZSBvcmfihpJ0ZWFtIHN1YnRyZWUuIElOQ0xVREVEIGluIEVudGVycHJpc2U7XG4gIC8vIHNvbGQgYXMgYW4gYWRkLW9uIGJ1bmRsZSB0byBQcm8vVGVhbSAoc2VlIGJpbGxpbmctY29uZmlnIGB0ZWFtX3VzYWdlX2FuYWx5dGljc2ApLlxuICB8ICd0ZWFtX3VzYWdlX2FuYWx5dGljcydcbiAgLy8gQ3VyYXRlZCBjb21wbGlhbmNlIHJ1bGUgbGlicmFyaWVzIHNvbGQgYXMgYWRkLW9uIGJ1bmRsZXMuIGBjb21wbGlhbmNlX3N0YW5kYXJkYFxuICAvLyA9IENJL0NEIGJlc3QtcHJhY3RpY2Ugc2V0OyBgY29tcGxpYW5jZV9hZHZhbmNlZGAgPSBTT0MyL1BDSS9DSVMgZnJhbWV3b3JrXG4gIC8vIGxpYnJhcmllcyAocmVxdWlyZXMgU3RhbmRhcmQpLiBUaGVzZSBnYXRlIFNVQlNDUklCSU5HIHRvIHRoZSBzZXQncyBzeXN0ZW0tb3JnXG4gIC8vIHB1Ymxpc2hlZCBydWxlczsgSU5DTFVERUQgaW4gRW50ZXJwcmlzZS9VbmxpbWl0ZWQgKHZpYSBBTExfRkVBVFVSRV9GTEFHUyksXG4gIC8vIHNvbGQgdG8gRGV2ZWxvcGVyL1Byby9UZWFtIChzZWUgYmlsbGluZy1jb25maWcgYGNvbXBsaWFuY2Vfc3RhbmRhcmQvYWR2YW5jZWRgKS5cbiAgfCAnY29tcGxpYW5jZV9zdGFuZGFyZCdcbiAgfCAnY29tcGxpYW5jZV9hZHZhbmNlZCdcbiAgLy8gUGx1Z2luIGVjb3N5c3RlbTogdGhlIG9yZydzIHB1Ymxpc2hlciBpcyBFTElHSUJMRSB0byBhcHBseSBmb3IgVmVyaWZpZWRcbiAgLy8gc3RhdHVzIChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKS4gRWxpZ2liaWxpdHkgb25seSDigJQgdGhlIGJhZGdlXG4gIC8vIGlzIGF3YXJkZWQgKGFuZCB3aXRoZHJhd24pIGJ5IHN5c3RlbS1vcmcgcmV2aWV3LCBuZXZlciBib3VnaHQuIFRlYW0gYW5kIHVwO1xuICAvLyBubyBhZGQtb24gYnVuZGxlIHNlbGxzIGl0LlxuICB8ICd2ZXJpZmllZF9wdWJsaXNoZXInO1xuXG4vKiogQWxsIHZhbGlkIGZlYXR1cmUgZmxhZ3MgKG9yZGVyIGRldGVybWluZXMgZGlzcGxheSBvcmRlcikuICovXG5leHBvcnQgY29uc3QgQUxMX0ZFQVRVUkVfRkxBR1M6IHJlYWRvbmx5IEZlYXR1cmVGbGFnW10gPSBbXG4gICdwcmlvcml0eV9zdXBwb3J0JyxcbiAgJ2FpX2dlbmVyYXRpb24nLFxuICAnYnVsa19vcGVyYXRpb25zJyxcbiAgJ2N1c3RvbV9pbnRlZ3JhdGlvbnMnLFxuICAnc3NvJyxcbiAgJ2FkdmFuY2VkX3JlcG9ydGluZycsXG4gICd0ZWFtX3VzYWdlX2FuYWx5dGljcycsXG4gICdjb21wbGlhbmNlX3N0YW5kYXJkJyxcbiAgJ2NvbXBsaWFuY2VfYWR2YW5jZWQnLFxuICAndmVyaWZpZWRfcHVibGlzaGVyJyxcbl07XG5cbi8qKiBDaGVjayB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgRmVhdHVyZUZsYWcuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEZlYXR1cmVGbGFnKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBGZWF0dXJlRmxhZyB7XG4gIHJldHVybiAoQUxMX0ZFQVRVUkVfRkxBR1MgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKHZhbHVlKTtcbn1cblxuLy8gVGllci10by1mZWF0dXJlIG1hcHBpbmdcblxuLyoqIEZlYXR1cmVzIGVuYWJsZWQgYnkgZGVmYXVsdCBmb3IgZWFjaCB0aWVyLiAqL1xuZXhwb3J0IGNvbnN0IFRJRVJfRkVBVFVSRVM6IFJlY29yZDxRdW90YVRpZXIsIHJlYWRvbmx5IEZlYXR1cmVGbGFnW10+ID0ge1xuICBkZXZlbG9wZXI6IFtdLFxuICBwcm86IFsncHJpb3JpdHlfc3VwcG9ydCcsICdhaV9nZW5lcmF0aW9uJywgJ2J1bGtfb3BlcmF0aW9ucyddLFxuICAvLyBUZWFtIGFkZHMgc3NvIChTU08vSWRQIGlzIElOQ0xVREVEIGluIFRlYW0sIG5vdCBhbiBhZGQtb24pLiBhZHZhbmNlZF9yZXBvcnRpbmdcbiAgLy8gKERPUkEpIGlzIE5PVCBhIFRlYW0gdGllciBmZWF0dXJlIOKAlCBpdCdzIElOQ0xVREVEIG9ubHkgaW4gRW50ZXJwcmlzZSBhbmQgc29sZFxuICAvLyBhcyBhbiBhZGQtb24gYnVuZGxlIHRvIGV2ZXJ5IG90aGVyIHRpZXIgKHNlZSBiaWxsaW5nLWNvbmZpZ1xuICAvLyBgYWR2YW5jZWRfcmVwb3J0aW5nYCkuIEVudGVycHJpc2UgdW5sb2NrcyBhbGwuXG4gIC8vIGB2ZXJpZmllZF9wdWJsaXNoZXJgIChlbGlnaWJpbGl0eSB0byBhcHBseSBmb3IgVmVyaWZpZWQpIHN0YXJ0cyBhdCBUZWFtLlxuICB0ZWFtOiBbJ3ByaW9yaXR5X3N1cHBvcnQnLCAnYWlfZ2VuZXJhdGlvbicsICdidWxrX29wZXJhdGlvbnMnLCAnc3NvJywgJ3ZlcmlmaWVkX3B1Ymxpc2hlciddLFxuICBlbnRlcnByaXNlOiBbLi4uQUxMX0ZFQVRVUkVfRkxBR1NdLFxuICAvLyBVbmxpbWl0ZWQgaW5jbHVkZXMgZXZlcnkgZmVhdHVyZSAvIGFkZC1vbiBidW5kbGUgKGJpbGxpbmctZGlzYWJsZWQgZGVmYXVsdCkuXG4gIHVubGltaXRlZDogWy4uLkFMTF9GRUFUVVJFX0ZMQUdTXSxcbn07XG5cbi8vIEZlYXR1cmUgbWV0YWRhdGEgKGZvciBkaXNwbGF5KVxuXG4vKiogSHVtYW4tcmVhZGFibGUgbWV0YWRhdGEgZm9yIGVhY2ggZmVhdHVyZSBmbGFnLiAqL1xuZXhwb3J0IGNvbnN0IEZFQVRVUkVfTUVUQURBVEE6IFJlY29yZDxGZWF0dXJlRmxhZywgeyBsYWJlbDogc3RyaW5nOyBkZXNjcmlwdGlvbjogc3RyaW5nIH0+ID0ge1xuICBwcmlvcml0eV9zdXBwb3J0OiB7XG4gICAgbGFiZWw6ICdQcmlvcml0eSBTdXBwb3J0JyxcbiAgICBkZXNjcmlwdGlvbjogJ0Zhc3RlciByZXNwb25zZSB0aW1lcyBhbmQgZGVkaWNhdGVkIHN1cHBvcnQgY2hhbm5lbHMnLFxuICB9LFxuICBhaV9nZW5lcmF0aW9uOiB7XG4gICAgbGFiZWw6ICdBSSBHZW5lcmF0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FJLXBvd2VyZWQgcGlwZWxpbmUgYW5kIHBsdWdpbiBnZW5lcmF0aW9uJyxcbiAgfSxcbiAgYnVsa19vcGVyYXRpb25zOiB7XG4gICAgbGFiZWw6ICdCdWxrIE9wZXJhdGlvbnMnLFxuICAgIGRlc2NyaXB0aW9uOiAnQmF0Y2ggY3JlYXRlLCB1cGRhdGUsIGFuZCBkZWxldGUgZm9yIHBpcGVsaW5lcyBhbmQgcGx1Z2lucycsXG4gIH0sXG4gIGN1c3RvbV9pbnRlZ3JhdGlvbnM6IHtcbiAgICBsYWJlbDogJ0N1c3RvbSBJbnRlZ3JhdGlvbnMnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29ubmVjdCB0byBleHRlcm5hbCBzZXJ2aWNlcyBhbmQgY3VzdG9tIHdlYmhvb2sgZW5kcG9pbnRzJyxcbiAgfSxcbiAgc3NvOiB7XG4gICAgbGFiZWw6ICdTU08gLyBJZFAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU2luZ2xlIHNpZ24tb24gYW5kIGV4dGVybmFsIGlkZW50aXR5LXByb3ZpZGVyIGNvbmZpZ3VyYXRpb25zJyxcbiAgfSxcbiAgYWR2YW5jZWRfcmVwb3J0aW5nOiB7XG4gICAgbGFiZWw6ICdBZHZhbmNlZCBSZXBvcnRpbmcnLFxuICAgIGRlc2NyaXB0aW9uOiAnRE9SQSAvIGFkdmFuY2VkIGRlbGl2ZXJ5IGFuYWx5dGljcycsXG4gIH0sXG4gIHRlYW1fdXNhZ2VfYW5hbHl0aWNzOiB7XG4gICAgbGFiZWw6ICdUZWFtIFVzYWdlIEFuYWx5dGljcycsXG4gICAgZGVzY3JpcHRpb246ICdQZXItdGVhbSB1c2FnZSBicmVha2Rvd24gYWNyb3NzIHRoZSBvcmcg4oaSIHRlYW0gc3VidHJlZScsXG4gIH0sXG4gIGNvbXBsaWFuY2Vfc3RhbmRhcmQ6IHtcbiAgICBsYWJlbDogJ1N0YW5kYXJkIENvbXBsaWFuY2UnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ3VyYXRlZCBDSS9DRCBiZXN0LXByYWN0aWNlIGNvbXBsaWFuY2UgcnVsZSBsaWJyYXJ5JyxcbiAgfSxcbiAgY29tcGxpYW5jZV9hZHZhbmNlZDoge1xuICAgIGxhYmVsOiAnQWR2YW5jZWQgQ29tcGxpYW5jZScsXG4gICAgZGVzY3JpcHRpb246ICdDdXJhdGVkIGZyYW1ld29yayBjb21wbGlhbmNlIGxpYnJhcmllcyAoU09DMiAvIFBDSS1EU1MgLyBDSVMpJyxcbiAgfSxcbiAgdmVyaWZpZWRfcHVibGlzaGVyOiB7XG4gICAgbGFiZWw6ICdWZXJpZmllZCBQdWJsaXNoZXIgRWxpZ2liaWxpdHknLFxuICAgIGRlc2NyaXB0aW9uOiAnQXBwbHkgZm9yIHRoZSBWZXJpZmllZCBiYWRnZSBvbiB5b3VyIHBsdWdpbi1lY29zeXN0ZW0gcHVibGlzaGVyIChhd2FyZGVkIGJ5IHN5c3RlbS1vcmcgcmV2aWV3KScsXG4gIH0sXG59O1xuXG4vLyBSZXNvbHV0aW9uIGxvZ2ljXG5cbi8qKlxuICogUmVzb2x2ZSBhIHVzZXIncyBlZmZlY3RpdmUgZmVhdHVyZSBzZXQuXG4gKlxuICogMS4gU3lzYWRtaW5zIChpc1N1cGVyQWRtaW4pIGFsd2F5cyBnZXQgQUxMIGZlYXR1cmVzLlxuICogMi4gU3RhcnQgd2l0aCB0aGUgdGllcidzIGRlZmF1bHQgZmVhdHVyZXMuXG4gKiAzLiBBcHBseSBwZXItdXNlciBvdmVycmlkZXM6IGB0cnVlYCBhZGRzIGEgZmVhdHVyZSwgYGZhbHNlYCByZW1vdmVzIGl0LlxuICogNC4gSW52YWxpZCBvdmVycmlkZSBrZXlzIGFyZSBzaWxlbnRseSBpZ25vcmVkLlxuICpcbiAqIEBwYXJhbSB0aWVyIC0gVGhlIG9yZ2FuaXphdGlvbidzIHF1b3RhIHRpZXJcbiAqIEBwYXJhbSBvcHRzIC0gUmVzb2x1dGlvbiBvcHRpb25zOlxuICogICAtIGBvdmVycmlkZXNgOiBwZXItdXNlciBvdmVycmlkZXMgKGtleSA9IGZlYXR1cmUgZmxhZywgdmFsdWUgPSBlbmFibGVkKVxuICogICAtIGBpc1N1cGVyQWRtaW5gOiB3aGV0aGVyIHRoZSB1c2VyIGhhcyB0aGUgZ2xvYmFsIHN1cGVyLWFkbWluIGZsYWdcbiAqICAgLSBgYWNjb3VudEZlYXR1cmVzYDogYWNjb3VudC1sZXZlbCBlbnRpdGxlbWVudHMgKGUuZy4gcHVyY2hhc2VkIGFkZC1vblxuICogICAgIGJ1bmRsZXMpLiBBIE5BTUVEIGZpZWxkIHNvIGl0IGNhbiBuZXZlciBiZSBzaWxlbnRseSBkcm9wcGVkIGJ5IGEgY2FsbGVyXG4gKiAgICAgdGhhdCBvbWl0cyBhIHRyYWlsaW5nIHBvc2l0aW9uYWwgYXJnLlxuICogQHJldHVybnMgU29ydGVkIGFycmF5IG9mIGVuYWJsZWQgZmVhdHVyZSBmbGFnc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVVzZXJGZWF0dXJlcyhcbiAgdGllcjogUXVvdGFUaWVyLFxuICBvcHRzPzoge1xuICAgIG92ZXJyaWRlcz86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+IHwgbnVsbDtcbiAgICBpc1N1cGVyQWRtaW4/OiBib29sZWFuO1xuICAgIGFjY291bnRGZWF0dXJlcz86IHJlYWRvbmx5IHN0cmluZ1tdIHwgbnVsbDtcbiAgfSxcbik6IEZlYXR1cmVGbGFnW10ge1xuICBjb25zdCB7IG92ZXJyaWRlczogZmVhdHVyZU92ZXJyaWRlcywgaXNTdXBlckFkbWluLCBhY2NvdW50RmVhdHVyZXMgfSA9IG9wdHMgPz8ge307XG5cbiAgLy8gU3lzYWRtaW5zIGdldCBldmVyeXRoaW5nIHJlZ2FyZGxlc3Mgb2YgdGllci5cbiAgaWYgKGlzU3VwZXJBZG1pbikgcmV0dXJuIFsuLi5BTExfRkVBVFVSRV9GTEFHU107XG5cbiAgLy8gU3RhcnQgd2l0aCB0aWVyIGRlZmF1bHRzXG4gIGNvbnN0IGZlYXR1cmVzID0gbmV3IFNldDxGZWF0dXJlRmxhZz4oVElFUl9GRUFUVVJFU1t0aWVyXSA/PyBbXSk7XG5cbiAgLy8gQWNjb3VudC1sZXZlbCBlbnRpdGxlbWVudHMgKHB1cmNoYXNlZCBmZWF0dXJlIGJ1bmRsZXMg4oCUIGUuZy4gYXVkaXRfbG9nLCBzc28sXG4gIC8vIGFkdmFuY2VkX3JlcG9ydGluZywgdGVhbV91c2FnZV9hbmFseXRpY3MsIGNvbXBsaWFuY2Vfc3RhbmRhcmQvYWR2YW5jZWQpLlxuICAvLyBBcHBsaWVkIGJlZm9yZSBwZXItdXNlciBvdmVycmlkZXMgc28gYW4gZXhwbGljaXQgdXNlciBvdmVycmlkZSBzdGlsbCB3aW5zLlxuICBpZiAoYWNjb3VudEZlYXR1cmVzKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgYWNjb3VudEZlYXR1cmVzKSB7XG4gICAgICBpZiAoaXNWYWxpZEZlYXR1cmVGbGFnKGtleSkpIGZlYXR1cmVzLmFkZChrZXkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFwcGx5IHBlci11c2VyIG92ZXJyaWRlc1xuICBpZiAoZmVhdHVyZU92ZXJyaWRlcykge1xuICAgIGZvciAoY29uc3QgW2tleSwgZW5hYmxlZF0gb2YgT2JqZWN0LmVudHJpZXMoZmVhdHVyZU92ZXJyaWRlcykpIHtcbiAgICAgIGlmICghaXNWYWxpZEZlYXR1cmVGbGFnKGtleSkpIGNvbnRpbnVlO1xuICAgICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgICAgZmVhdHVyZXMuYWRkKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmZWF0dXJlcy5kZWxldGUoa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm4gaW4gY2Fub25pY2FsIG9yZGVyXG4gIHJldHVybiBBTExfRkVBVFVSRV9GTEFHUy5maWx0ZXIoZiA9PiBmZWF0dXJlcy5oYXMoZikpO1xufVxuXG4vKipcbiAqIEN1cmF0ZWQgY29tcGxpYW5jZSBjb250ZW50IHNldHMgYW5kIHRoZSBmZWF0dXJlIGZsYWcgZWFjaCBvbmUgaXMgc29sZCB1bmRlci5cbiAqIEEgc2V0IGB4YCBpcyB0aGUgcHVibGlzaGVkIHJ1bGVzIHRhZ2dlZCBgc2V0Ojx4PmA7IGFuIG9yZyBob2xkaW5nIHRoZSBmbGFnIGlzXG4gKiBlbnRpdGxlZCB0byB0aGVtLiBPcmRlcmVkIGZyb20gdGhlIGxvd2VzdCBlbnRpdGxlbWVudCB0byB0aGUgaGlnaGVzdC5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTVBMSUFOQ0VfU0VUX0ZFQVRVUkVTID0ge1xuICBzdGFuZGFyZDogJ2NvbXBsaWFuY2Vfc3RhbmRhcmQnLFxuICBhZHZhbmNlZDogJ2NvbXBsaWFuY2VfYWR2YW5jZWQnLFxufSBhcyBjb25zdCBzYXRpc2ZpZXMgUmVjb3JkPHN0cmluZywgRmVhdHVyZUZsYWc+O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlQ29udGVudFNldCA9IGtleW9mIHR5cGVvZiBDT01QTElBTkNFX1NFVF9GRUFUVVJFUztcblxuLyoqIEV2ZXJ5IGN1cmF0ZWQgc2V0IG5hbWUsIGxvd2VzdCBlbnRpdGxlbWVudCBmaXJzdC4gKi9cbmV4cG9ydCBjb25zdCBDT01QTElBTkNFX0NPTlRFTlRfU0VUUyA9IE9iamVjdC5rZXlzKENPTVBMSUFOQ0VfU0VUX0ZFQVRVUkVTKSBhcyBDb21wbGlhbmNlQ29udGVudFNldFtdO1xuXG4vKiogVGhlIGN1cmF0ZWQgc2V0cyBhbiBlZmZlY3RpdmUgZmVhdHVyZSBzZXQgZW50aXRsZXMgKHN0YWJsZSBvcmRlcikuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGxpYW5jZVNldHNGb3JGZWF0dXJlcyhmZWF0dXJlczogcmVhZG9ubHkgc3RyaW5nW10pOiBDb21wbGlhbmNlQ29udGVudFNldFtdIHtcbiAgcmV0dXJuIENPTVBMSUFOQ0VfQ09OVEVOVF9TRVRTLmZpbHRlcigoc2V0KSA9PiBmZWF0dXJlcy5pbmNsdWRlcyhDT01QTElBTkNFX1NFVF9GRUFUVVJFU1tzZXRdKSk7XG59XG5cbi8qKlxuICogVGhlIGZlYXR1cmUgYSBwdWJsaXNoZWQgcnVsZSdzIGBzZXQ6PHg+YCB0YWdzIHJlcXVpcmUsIG9yIGBudWxsYCBmb3IgYW5cbiAqIHVudGFnZ2VkIChiYXNlbGluZSkgcnVsZS4gVGhlIGhpZ2hlc3QgZW50aXRsZW1lbnQgd2lucyB3aGVuIGEgcnVsZSBjYXJyaWVzXG4gKiBzZXZlcmFsLiBBY2NlcHRzIGEgcmF3IGpzb25iIGB0YWdzYCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBsaWFuY2VGZWF0dXJlRm9yVGFncyh0YWdzOiB1bmtub3duKTogRmVhdHVyZUZsYWcgfCBudWxsIHtcbiAgY29uc3QgdCA9IEFycmF5LmlzQXJyYXkodGFncykgPyB0YWdzIDogW107XG4gIGZvciAoY29uc3Qgc2V0IG9mIFsuLi5DT01QTElBTkNFX0NPTlRFTlRfU0VUU10ucmV2ZXJzZSgpKSB7XG4gICAgaWYgKHQuaW5jbHVkZXMoYHNldDoke3NldH1gKSkgcmV0dXJuIENPTVBMSUFOQ0VfU0VUX0ZFQVRVUkVTW3NldF07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG4iXX0=
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1mbGFncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9mZWF0dXJlLWZsYWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUE2Q3RDLGdFQUFnRTtBQUNoRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBMkI7SUFDdkQsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIscUJBQXFCO0lBQ3JCLEtBQUs7SUFDTCxvQkFBb0I7SUFDcEIsc0JBQXNCO0lBQ3RCLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLG9CQUFvQjtDQUNyQixDQUFDO0FBRUYscURBQXFEO0FBQ3JELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFhO0lBQzlDLE9BQVEsaUJBQXVDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRCwwQkFBMEI7QUFFMUIsaURBQWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBOEM7SUFDdEUsU0FBUyxFQUFFLEVBQUU7SUFDYixHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLENBQUM7SUFDN0QsaUZBQWlGO0lBQ2pGLGdGQUFnRjtJQUNoRiw4REFBOEQ7SUFDOUQsaURBQWlEO0lBQ2pELDJFQUEyRTtJQUMzRSxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixDQUFDO0lBQzNGLFVBQVUsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7SUFDbEMsK0VBQStFO0lBQy9FLFNBQVMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7Q0FDbEMsQ0FBQztBQUVGLGlDQUFpQztBQUVqQyxxREFBcUQ7QUFDckQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQWdFO0lBQzNGLGdCQUFnQixFQUFF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QUFxQjtDQUNlLENBQUM7QUFJakQsd0RBQXdEO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQTJCLENBQUM7QUFFdEcseUVBQXlFO0FBQ3pFLE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxRQUEyQjtJQUNuRSxPQUFPLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEcsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsSUFBYTtJQUNwRCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxQyxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFBRSxPQUFPLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBRdW90YVRpZXIgfSBmcm9tICcuL3F1b3RhLXRpZXJzLmpzJztcblxuLy8gRmVhdHVyZSBmbGFnIGlkZW50aWZpZXJzXG5cbi8qKiBDYW5vbmljYWwgZmVhdHVyZSBmbGFnIGlkZW50aWZpZXJzLiAqL1xuZXhwb3J0IHR5cGUgRmVhdHVyZUZsYWcgPVxuICAvLyBgcHJpb3JpdHlfc3VwcG9ydGAgYW5kIGBjdXN0b21faW50ZWdyYXRpb25zYCBhcmUgRU5URVJQUklTRS1FWENMVVNJVkVcbiAgLy8gbWFya2V0aW5nL2VudGl0bGVtZW50IGZsYWdzOiBncmFudGVkIG9ubHkgYnkgdGhlIGVudGVycHJpc2UgdGllciAobm8gYWRkLW9uXG4gIC8vIGJ1bmRsZSBzZWxscyB0aGVtIHRvIGEgbG93ZXIgdGllciDigJQgaW50ZW50aW9uYWwsIHRoZXkgYW5jaG9yIHRoZSBFbnRlcnByaXNlXG4gIC8vIHBsYW4pIGFuZCBub3QgY3VycmVudGx5IGByZXF1aXJlRmVhdHVyZWAtZ2F0ZWQgb24gYW55IHJvdXRlICh0aGV5IHN1cmZhY2UgaW5cbiAgLy8gcGxhbiBtYXJrZXRpbmcgKyB0aGUgZW50aXRsZW1lbnQgc2V0OyBlbmZvcmNlbWVudCBpcyBhIGZ1dHVyZSBob29rKS4gVGhpcyBpc1xuICAvLyBieSBkZXNpZ24sIG5vdCBkZWFkIGNvZGUg4oCUIGRvIG5vdCBcImZpeFwiIGJ5IHdpcmluZyBhIGJ1bmRsZSB3aXRob3V0IGEgcHJpY2luZ1xuICAvLyBkZWNpc2lvbi4gQ29udHJhc3QgYHNzb2AvYGFkdmFuY2VkX3JlcG9ydGluZ2AsIHdoaWNoIEFSRSBzb2xkIGFzXG4gIC8vIGFkZC1vbiBidW5kbGVzIGFuZCBnYXRlZCAoc2VlIGJpbGxpbmctY29uZmlnIGBsb2FkQnVuZGxlc2AgKyBgcmVxdWlyZUZlYXR1cmVgKS5cbiAgfCAncHJpb3JpdHlfc3VwcG9ydCdcbiAgfCAnY3VzdG9tX2ludGVncmF0aW9ucydcbiAgfCAnYWlfZ2VuZXJhdGlvbidcbiAgfCAnYnVsa19vcGVyYXRpb25zJ1xuICB8ICdzc28nXG4gIC8vIERPUkEgLyBhZHZhbmNlZCBkZWxpdmVyeSBhbmFseXRpY3MgKHBhaWQgdGllcnMgb25seSkuXG4gIHwgJ2FkdmFuY2VkX3JlcG9ydGluZydcbiAgLy8gUGVyLXRlYW0gdXNhZ2UgYnJlYWtkb3duIGFjcm9zcyB0aGUgb3Jn4oaSdGVhbSBzdWJ0cmVlLiBJTkNMVURFRCBpbiBFbnRlcnByaXNlO1xuICAvLyBzb2xkIGFzIGFuIGFkZC1vbiBidW5kbGUgdG8gUHJvL1RlYW0gKHNlZSBiaWxsaW5nLWNvbmZpZyBgdGVhbV91c2FnZV9hbmFseXRpY3NgKS5cbiAgfCAndGVhbV91c2FnZV9hbmFseXRpY3MnXG4gIC8vIEN1cmF0ZWQgY29tcGxpYW5jZSBydWxlIGxpYnJhcmllcyBzb2xkIGFzIGFkZC1vbiBidW5kbGVzLiBgY29tcGxpYW5jZV9zdGFuZGFyZGBcbiAgLy8gPSBDSS9DRCBiZXN0LXByYWN0aWNlIHNldDsgYGNvbXBsaWFuY2VfYWR2YW5jZWRgID0gU09DMi9QQ0kvQ0lTIGZyYW1ld29ya1xuICAvLyBsaWJyYXJpZXMgKHJlcXVpcmVzIFN0YW5kYXJkKS4gVGhlc2UgZ2F0ZSBTVUJTQ1JJQklORyB0byB0aGUgc2V0J3Mgc3lzdGVtLW9yZ1xuICAvLyBwdWJsaXNoZWQgcnVsZXM7IElOQ0xVREVEIGluIEVudGVycHJpc2UvVW5saW1pdGVkICh2aWEgQUxMX0ZFQVRVUkVfRkxBR1MpLFxuICAvLyBzb2xkIHRvIERldmVsb3Blci9Qcm8vVGVhbSAoc2VlIGJpbGxpbmctY29uZmlnIGBjb21wbGlhbmNlX3N0YW5kYXJkL2FkdmFuY2VkYCkuXG4gIHwgJ2NvbXBsaWFuY2Vfc3RhbmRhcmQnXG4gIHwgJ2NvbXBsaWFuY2VfYWR2YW5jZWQnXG4gIC8vIFNjaGVkdWxlZCwgbWFuYWdlci1mYWNpbmcgcmVwb3J0czogc2F2ZWQgZGVmaW5pdGlvbnMsIGZyb3plbiBzbmFwc2hvdHMsXG4gIC8vIHJldmlldy1hbmQtcHVibGlzaCwgUERGL2VtYWlsIGRlbGl2ZXJ5IGFuZCBzaGFyZSBsaW5rcy4gSU5DTFVERUQgaW5cbiAgLy8gRW50ZXJwcmlzZS9VbmxpbWl0ZWQ7IHNvbGQgYXMgYW4gYWRkLW9uIGJ1bmRsZSB0byBQcm8vVGVhbSAoc2VlXG4gIC8vIGJpbGxpbmctY29uZmlnIGBzdGFrZWhvbGRlcl9yZXBvcnRzYCkuIE9uLWRlbWFuZCBkYXNoYm9hcmRzIHN0YXkgRlJFRSB1bmRlclxuICAvLyBgcmVwb3J0czpyZWFkYCDigJQgdGhpcyBnYXRlcyBzYXZpbmcsIHNjaGVkdWxpbmcgYW5kIHB1Ymxpc2hpbmcsIG5vdCBsb29raW5nLlxuICB8ICdzdGFrZWhvbGRlcl9yZXBvcnRzJ1xuICAvLyBQbHVnaW4gZWNvc3lzdGVtOiB0aGUgb3JnJ3MgcHVibGlzaGVyIGlzIEVMSUdJQkxFIHRvIGFwcGx5IGZvciBWZXJpZmllZFxuICAvLyBzdGF0dXMgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLiBFbGlnaWJpbGl0eSBvbmx5IOKAlCB0aGUgYmFkZ2VcbiAgLy8gaXMgYXdhcmRlZCAoYW5kIHdpdGhkcmF3bikgYnkgc3lzdGVtLW9yZyByZXZpZXcsIG5ldmVyIGJvdWdodC4gVGVhbSBhbmQgdXA7XG4gIC8vIG5vIGFkZC1vbiBidW5kbGUgc2VsbHMgaXQuXG4gIHwgJ3ZlcmlmaWVkX3B1Ymxpc2hlcic7XG5cbi8qKiBBbGwgdmFsaWQgZmVhdHVyZSBmbGFncyAob3JkZXIgZGV0ZXJtaW5lcyBkaXNwbGF5IG9yZGVyKS4gKi9cbmV4cG9ydCBjb25zdCBBTExfRkVBVFVSRV9GTEFHUzogcmVhZG9ubHkgRmVhdHVyZUZsYWdbXSA9IFtcbiAgJ3ByaW9yaXR5X3N1cHBvcnQnLFxuICAnYWlfZ2VuZXJhdGlvbicsXG4gICdidWxrX29wZXJhdGlvbnMnLFxuICAnY3VzdG9tX2ludGVncmF0aW9ucycsXG4gICdzc28nLFxuICAnYWR2YW5jZWRfcmVwb3J0aW5nJyxcbiAgJ3RlYW1fdXNhZ2VfYW5hbHl0aWNzJyxcbiAgJ2NvbXBsaWFuY2Vfc3RhbmRhcmQnLFxuICAnY29tcGxpYW5jZV9hZHZhbmNlZCcsXG4gICdzdGFrZWhvbGRlcl9yZXBvcnRzJyxcbiAgJ3ZlcmlmaWVkX3B1Ymxpc2hlcicsXG5dO1xuXG4vKiogQ2hlY2sgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEZlYXR1cmVGbGFnLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRGZWF0dXJlRmxhZyh2YWx1ZTogc3RyaW5nKTogdmFsdWUgaXMgRmVhdHVyZUZsYWcge1xuICByZXR1cm4gKEFMTF9GRUFUVVJFX0ZMQUdTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyh2YWx1ZSk7XG59XG5cbi8vIFRpZXItdG8tZmVhdHVyZSBtYXBwaW5nXG5cbi8qKiBGZWF0dXJlcyBlbmFibGVkIGJ5IGRlZmF1bHQgZm9yIGVhY2ggdGllci4gKi9cbmV4cG9ydCBjb25zdCBUSUVSX0ZFQVRVUkVTOiBSZWNvcmQ8UXVvdGFUaWVyLCByZWFkb25seSBGZWF0dXJlRmxhZ1tdPiA9IHtcbiAgZGV2ZWxvcGVyOiBbXSxcbiAgcHJvOiBbJ3ByaW9yaXR5X3N1cHBvcnQnLCAnYWlfZ2VuZXJhdGlvbicsICdidWxrX29wZXJhdGlvbnMnXSxcbiAgLy8gVGVhbSBhZGRzIHNzbyAoU1NPL0lkUCBpcyBJTkNMVURFRCBpbiBUZWFtLCBub3QgYW4gYWRkLW9uKS4gYWR2YW5jZWRfcmVwb3J0aW5nXG4gIC8vIChET1JBKSBpcyBOT1QgYSBUZWFtIHRpZXIgZmVhdHVyZSDigJQgaXQncyBJTkNMVURFRCBvbmx5IGluIEVudGVycHJpc2UgYW5kIHNvbGRcbiAgLy8gYXMgYW4gYWRkLW9uIGJ1bmRsZSB0byBldmVyeSBvdGhlciB0aWVyIChzZWUgYmlsbGluZy1jb25maWdcbiAgLy8gYGFkdmFuY2VkX3JlcG9ydGluZ2ApLiBFbnRlcnByaXNlIHVubG9ja3MgYWxsLlxuICAvLyBgdmVyaWZpZWRfcHVibGlzaGVyYCAoZWxpZ2liaWxpdHkgdG8gYXBwbHkgZm9yIFZlcmlmaWVkKSBzdGFydHMgYXQgVGVhbS5cbiAgdGVhbTogWydwcmlvcml0eV9zdXBwb3J0JywgJ2FpX2dlbmVyYXRpb24nLCAnYnVsa19vcGVyYXRpb25zJywgJ3NzbycsICd2ZXJpZmllZF9wdWJsaXNoZXInXSxcbiAgZW50ZXJwcmlzZTogWy4uLkFMTF9GRUFUVVJFX0ZMQUdTXSxcbiAgLy8gVW5saW1pdGVkIGluY2x1ZGVzIGV2ZXJ5IGZlYXR1cmUgLyBhZGQtb24gYnVuZGxlIChiaWxsaW5nLWRpc2FibGVkIGRlZmF1bHQpLlxuICB1bmxpbWl0ZWQ6IFsuLi5BTExfRkVBVFVSRV9GTEFHU10sXG59O1xuXG4vLyBGZWF0dXJlIG1ldGFkYXRhIChmb3IgZGlzcGxheSlcblxuLyoqIEh1bWFuLXJlYWRhYmxlIG1ldGFkYXRhIGZvciBlYWNoIGZlYXR1cmUgZmxhZy4gKi9cbmV4cG9ydCBjb25zdCBGRUFUVVJFX01FVEFEQVRBOiBSZWNvcmQ8RmVhdHVyZUZsYWcsIHsgbGFiZWw6IHN0cmluZzsgZGVzY3JpcHRpb246IHN0cmluZyB9PiA9IHtcbiAgcHJpb3JpdHlfc3VwcG9ydDoge1xuICAgIGxhYmVsOiAnUHJpb3JpdHkgU3VwcG9ydCcsXG4gICAgZGVzY3JpcHRpb246ICdGYXN0ZXIgcmVzcG9uc2UgdGltZXMgYW5kIGRlZGljYXRlZCBzdXBwb3J0IGNoYW5uZWxzJyxcbiAgfSxcbiAgYWlfZ2VuZXJhdGlvbjoge1xuICAgIGxhYmVsOiAnQUkgR2VuZXJhdGlvbicsXG4gICAgZGVzY3JpcHRpb246ICdBSS1wb3dlcmVkIHBpcGVsaW5lIGFuZCBwbHVnaW4gZ2VuZXJhdGlvbicsXG4gIH0sXG4gIGJ1bGtfb3BlcmF0aW9uczoge1xuICAgIGxhYmVsOiAnQnVsayBPcGVyYXRpb25zJyxcbiAgICBkZXNjcmlwdGlvbjogJ0JhdGNoIGNyZWF0ZSwgdXBkYXRlLCBhbmQgZGVsZXRlIGZvciBwaXBlbGluZXMgYW5kIHBsdWdpbnMnLFxuICB9LFxuICBjdXN0b21faW50ZWdyYXRpb25zOiB7XG4gICAgbGFiZWw6ICdDdXN0b20gSW50ZWdyYXRpb25zJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Nvbm5lY3QgdG8gZXh0ZXJuYWwgc2VydmljZXMgYW5kIGN1c3RvbSB3ZWJob29rIGVuZHBvaW50cycsXG4gIH0sXG4gIHNzbzoge1xuICAgIGxhYmVsOiAnU1NPIC8gSWRQJyxcbiAgICBkZXNjcmlwdGlvbjogJ1NpbmdsZSBzaWduLW9uIGFuZCBleHRlcm5hbCBpZGVudGl0eS1wcm92aWRlciBjb25maWd1cmF0aW9ucycsXG4gIH0sXG4gIGFkdmFuY2VkX3JlcG9ydGluZzoge1xuICAgIGxhYmVsOiAnQWR2YW5jZWQgUmVwb3J0aW5nJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RPUkEgLyBhZHZhbmNlZCBkZWxpdmVyeSBhbmFseXRpY3MnLFxuICB9LFxuICB0ZWFtX3VzYWdlX2FuYWx5dGljczoge1xuICAgIGxhYmVsOiAnVGVhbSBVc2FnZSBBbmFseXRpY3MnLFxuICAgIGRlc2NyaXB0aW9uOiAnUGVyLXRlYW0gdXNhZ2UgYnJlYWtkb3duIGFjcm9zcyB0aGUgb3JnIOKGkiB0ZWFtIHN1YnRyZWUnLFxuICB9LFxuICBjb21wbGlhbmNlX3N0YW5kYXJkOiB7XG4gICAgbGFiZWw6ICdTdGFuZGFyZCBDb21wbGlhbmNlJyxcbiAgICBkZXNjcmlwdGlvbjogJ0N1cmF0ZWQgQ0kvQ0QgYmVzdC1wcmFjdGljZSBjb21wbGlhbmNlIHJ1bGUgbGlicmFyeScsXG4gIH0sXG4gIGNvbXBsaWFuY2VfYWR2YW5jZWQ6IHtcbiAgICBsYWJlbDogJ0FkdmFuY2VkIENvbXBsaWFuY2UnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ3VyYXRlZCBmcmFtZXdvcmsgY29tcGxpYW5jZSBsaWJyYXJpZXMgKFNPQzIgLyBQQ0ktRFNTIC8gQ0lTKScsXG4gIH0sXG4gIHN0YWtlaG9sZGVyX3JlcG9ydHM6IHtcbiAgICBsYWJlbDogJ1N0YWtlaG9sZGVyIFJlcG9ydHMnLFxuICAgIGRlc2NyaXB0aW9uOiAnU2NoZWR1bGVkIHRlYW0gcmVwb3J0cyBmb3IgbWFuYWdlcnMg4oCUIHNuYXBzaG90cywgcmV2aWV3IGFuZCBwdWJsaXNoLCBQREYvZW1haWwgZGVsaXZlcnkgYW5kIHNoYXJlIGxpbmtzJyxcbiAgfSxcbiAgdmVyaWZpZWRfcHVibGlzaGVyOiB7XG4gICAgbGFiZWw6ICdWZXJpZmllZCBQdWJsaXNoZXIgRWxpZ2liaWxpdHknLFxuICAgIGRlc2NyaXB0aW9uOiAnQXBwbHkgZm9yIHRoZSBWZXJpZmllZCBiYWRnZSBvbiB5b3VyIHBsdWdpbi1lY29zeXN0ZW0gcHVibGlzaGVyIChhd2FyZGVkIGJ5IHN5c3RlbS1vcmcgcmV2aWV3KScsXG4gIH0sXG59O1xuXG4vLyBSZXNvbHV0aW9uIGxvZ2ljXG5cbi8qKlxuICogUmVzb2x2ZSBhIHVzZXIncyBlZmZlY3RpdmUgZmVhdHVyZSBzZXQuXG4gKlxuICogMS4gU3lzYWRtaW5zIChpc1N1cGVyQWRtaW4pIGFsd2F5cyBnZXQgQUxMIGZlYXR1cmVzLlxuICogMi4gU3RhcnQgd2l0aCB0aGUgdGllcidzIGRlZmF1bHQgZmVhdHVyZXMuXG4gKiAzLiBBcHBseSBwZXItdXNlciBvdmVycmlkZXM6IGB0cnVlYCBhZGRzIGEgZmVhdHVyZSwgYGZhbHNlYCByZW1vdmVzIGl0LlxuICogNC4gSW52YWxpZCBvdmVycmlkZSBrZXlzIGFyZSBzaWxlbnRseSBpZ25vcmVkLlxuICpcbiAqIEBwYXJhbSB0aWVyIC0gVGhlIG9yZ2FuaXphdGlvbidzIHF1b3RhIHRpZXJcbiAqIEBwYXJhbSBvcHRzIC0gUmVzb2x1dGlvbiBvcHRpb25zOlxuICogICAtIGBvdmVycmlkZXNgOiBwZXItdXNlciBvdmVycmlkZXMgKGtleSA9IGZlYXR1cmUgZmxhZywgdmFsdWUgPSBlbmFibGVkKVxuICogICAtIGBpc1N1cGVyQWRtaW5gOiB3aGV0aGVyIHRoZSB1c2VyIGhhcyB0aGUgZ2xvYmFsIHN1cGVyLWFkbWluIGZsYWdcbiAqICAgLSBgYWNjb3VudEZlYXR1cmVzYDogYWNjb3VudC1sZXZlbCBlbnRpdGxlbWVudHMgKGUuZy4gcHVyY2hhc2VkIGFkZC1vblxuICogICAgIGJ1bmRsZXMpLiBBIE5BTUVEIGZpZWxkIHNvIGl0IGNhbiBuZXZlciBiZSBzaWxlbnRseSBkcm9wcGVkIGJ5IGEgY2FsbGVyXG4gKiAgICAgdGhhdCBvbWl0cyBhIHRyYWlsaW5nIHBvc2l0aW9uYWwgYXJnLlxuICogQHJldHVybnMgU29ydGVkIGFycmF5IG9mIGVuYWJsZWQgZmVhdHVyZSBmbGFnc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVVzZXJGZWF0dXJlcyhcbiAgdGllcjogUXVvdGFUaWVyLFxuICBvcHRzPzoge1xuICAgIG92ZXJyaWRlcz86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+IHwgbnVsbDtcbiAgICBpc1N1cGVyQWRtaW4/OiBib29sZWFuO1xuICAgIGFjY291bnRGZWF0dXJlcz86IHJlYWRvbmx5IHN0cmluZ1tdIHwgbnVsbDtcbiAgfSxcbik6IEZlYXR1cmVGbGFnW10ge1xuICBjb25zdCB7IG92ZXJyaWRlczogZmVhdHVyZU92ZXJyaWRlcywgaXNTdXBlckFkbWluLCBhY2NvdW50RmVhdHVyZXMgfSA9IG9wdHMgPz8ge307XG5cbiAgLy8gU3lzYWRtaW5zIGdldCBldmVyeXRoaW5nIHJlZ2FyZGxlc3Mgb2YgdGllci5cbiAgaWYgKGlzU3VwZXJBZG1pbikgcmV0dXJuIFsuLi5BTExfRkVBVFVSRV9GTEFHU107XG5cbiAgLy8gU3RhcnQgd2l0aCB0aWVyIGRlZmF1bHRzXG4gIGNvbnN0IGZlYXR1cmVzID0gbmV3IFNldDxGZWF0dXJlRmxhZz4oVElFUl9GRUFUVVJFU1t0aWVyXSA/PyBbXSk7XG5cbiAgLy8gQWNjb3VudC1sZXZlbCBlbnRpdGxlbWVudHMgKHB1cmNoYXNlZCBmZWF0dXJlIGJ1bmRsZXMg4oCUIGUuZy4gYXVkaXRfbG9nLCBzc28sXG4gIC8vIGFkdmFuY2VkX3JlcG9ydGluZywgdGVhbV91c2FnZV9hbmFseXRpY3MsIGNvbXBsaWFuY2Vfc3RhbmRhcmQvYWR2YW5jZWQpLlxuICAvLyBBcHBsaWVkIGJlZm9yZSBwZXItdXNlciBvdmVycmlkZXMgc28gYW4gZXhwbGljaXQgdXNlciBvdmVycmlkZSBzdGlsbCB3aW5zLlxuICBpZiAoYWNjb3VudEZlYXR1cmVzKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgYWNjb3VudEZlYXR1cmVzKSB7XG4gICAgICBpZiAoaXNWYWxpZEZlYXR1cmVGbGFnKGtleSkpIGZlYXR1cmVzLmFkZChrZXkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFwcGx5IHBlci11c2VyIG92ZXJyaWRlc1xuICBpZiAoZmVhdHVyZU92ZXJyaWRlcykge1xuICAgIGZvciAoY29uc3QgW2tleSwgZW5hYmxlZF0gb2YgT2JqZWN0LmVudHJpZXMoZmVhdHVyZU92ZXJyaWRlcykpIHtcbiAgICAgIGlmICghaXNWYWxpZEZlYXR1cmVGbGFnKGtleSkpIGNvbnRpbnVlO1xuICAgICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgICAgZmVhdHVyZXMuYWRkKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmZWF0dXJlcy5kZWxldGUoa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm4gaW4gY2Fub25pY2FsIG9yZGVyXG4gIHJldHVybiBBTExfRkVBVFVSRV9GTEFHUy5maWx0ZXIoZiA9PiBmZWF0dXJlcy5oYXMoZikpO1xufVxuXG4vKipcbiAqIEN1cmF0ZWQgY29tcGxpYW5jZSBjb250ZW50IHNldHMgYW5kIHRoZSBmZWF0dXJlIGZsYWcgZWFjaCBvbmUgaXMgc29sZCB1bmRlci5cbiAqIEEgc2V0IGB4YCBpcyB0aGUgcHVibGlzaGVkIHJ1bGVzIHRhZ2dlZCBgc2V0Ojx4PmA7IGFuIG9yZyBob2xkaW5nIHRoZSBmbGFnIGlzXG4gKiBlbnRpdGxlZCB0byB0aGVtLiBPcmRlcmVkIGZyb20gdGhlIGxvd2VzdCBlbnRpdGxlbWVudCB0byB0aGUgaGlnaGVzdC5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTVBMSUFOQ0VfU0VUX0ZFQVRVUkVTID0ge1xuICBzdGFuZGFyZDogJ2NvbXBsaWFuY2Vfc3RhbmRhcmQnLFxuICBhZHZhbmNlZDogJ2NvbXBsaWFuY2VfYWR2YW5jZWQnLFxufSBhcyBjb25zdCBzYXRpc2ZpZXMgUmVjb3JkPHN0cmluZywgRmVhdHVyZUZsYWc+O1xuXG5leHBvcnQgdHlwZSBDb21wbGlhbmNlQ29udGVudFNldCA9IGtleW9mIHR5cGVvZiBDT01QTElBTkNFX1NFVF9GRUFUVVJFUztcblxuLyoqIEV2ZXJ5IGN1cmF0ZWQgc2V0IG5hbWUsIGxvd2VzdCBlbnRpdGxlbWVudCBmaXJzdC4gKi9cbmV4cG9ydCBjb25zdCBDT01QTElBTkNFX0NPTlRFTlRfU0VUUyA9IE9iamVjdC5rZXlzKENPTVBMSUFOQ0VfU0VUX0ZFQVRVUkVTKSBhcyBDb21wbGlhbmNlQ29udGVudFNldFtdO1xuXG4vKiogVGhlIGN1cmF0ZWQgc2V0cyBhbiBlZmZlY3RpdmUgZmVhdHVyZSBzZXQgZW50aXRsZXMgKHN0YWJsZSBvcmRlcikuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGxpYW5jZVNldHNGb3JGZWF0dXJlcyhmZWF0dXJlczogcmVhZG9ubHkgc3RyaW5nW10pOiBDb21wbGlhbmNlQ29udGVudFNldFtdIHtcbiAgcmV0dXJuIENPTVBMSUFOQ0VfQ09OVEVOVF9TRVRTLmZpbHRlcigoc2V0KSA9PiBmZWF0dXJlcy5pbmNsdWRlcyhDT01QTElBTkNFX1NFVF9GRUFUVVJFU1tzZXRdKSk7XG59XG5cbi8qKlxuICogVGhlIGZlYXR1cmUgYSBwdWJsaXNoZWQgcnVsZSdzIGBzZXQ6PHg+YCB0YWdzIHJlcXVpcmUsIG9yIGBudWxsYCBmb3IgYW5cbiAqIHVudGFnZ2VkIChiYXNlbGluZSkgcnVsZS4gVGhlIGhpZ2hlc3QgZW50aXRsZW1lbnQgd2lucyB3aGVuIGEgcnVsZSBjYXJyaWVzXG4gKiBzZXZlcmFsLiBBY2NlcHRzIGEgcmF3IGpzb25iIGB0YWdzYCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBsaWFuY2VGZWF0dXJlRm9yVGFncyh0YWdzOiB1bmtub3duKTogRmVhdHVyZUZsYWcgfCBudWxsIHtcbiAgY29uc3QgdCA9IEFycmF5LmlzQXJyYXkodGFncykgPyB0YWdzIDogW107XG4gIGZvciAoY29uc3Qgc2V0IG9mIFsuLi5DT01QTElBTkNFX0NPTlRFTlRfU0VUU10ucmV2ZXJzZSgpKSB7XG4gICAgaWYgKHQuaW5jbHVkZXMoYHNldDoke3NldH1gKSkgcmV0dXJuIENPTVBMSUFOQ0VfU0VUX0ZFQVRVUkVTW3NldF07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG4iXX0=
@@ -4,13 +4,14 @@ export * from './pipeline.js';
4
4
  export { type Lifecycle, type Criticality, type OwnerType, type EntityLink, type EntityLabels, } from './catalog-metadata.js';
5
5
  export { type TemplateInput, } from './pipeline-template.js';
6
6
  export * from './visibility.js';
7
+ export * from './reserved-tags.js';
7
8
  export * from './wire-vocabulary.js';
8
9
  export { type ComplianceExemptionRequest } from './compliance-exemption.js';
9
10
  export { PLUGIN_SUMMARY_MAX, PLUGIN_README_MAX_BYTES, PLUGIN_CHANGELOG_MAX_BYTES, PLUGIN_CATEGORIES, type PluginCatalogCategory, PLUGIN_CATALOG_FIELDS, type PluginCatalogField, PLUGIN_CATALOG_LINK_FIELDS, METADATA_SOURCES, type MetadataSource, type MetadataSources, } from './plugin-catalog.js';
10
11
  export { type HttpRequest, } from './http.js';
11
12
  export { tierAllowsTeams, isBillingEnabled, isValidTier, getTierLimits, type QuotaTier, type QuotaTierLimits, QUOTA_TIERS, VALID_TIERS, STANDARD_TIERS, TEAM_CAPABLE_TIERS, DEFAULT_TIER, QUOTA_RESET_DAYS, nextQuotaResetDate, } from './quota-tiers.js';
12
13
  export * from './feature-flags.js';
13
- export { permissionLabel, isValidPermission, isSystemOrgOnlyPermission, isOrgAssignablePermission, normalizePermissionSubset, intersectPermissions, resolveUserPermissions, confinePermissionsToOrg, hasPermission, type Permission, ALL_PERMISSIONS, PERMISSION_GATES, PERMISSION_CATALOG, SUPERADMIN_ONLY_PERMISSIONS, SYSTEM_ORG_ONLY_PERMISSIONS, ORG_ASSIGNABLE_PERMISSIONS, ORG_ASSIGNABLE_CATEGORIES, READ_ONLY_PERMISSIONS, ROLE_PERMISSIONS, ECOSYSTEM_MANAGER_PERMISSIONS, } from './permissions.js';
14
+ export { permissionLabel, isValidPermission, isSystemOrgOnlyPermission, isOrgAssignablePermission, normalizePermissionSubset, intersectPermissions, resolveUserPermissions, confinePermissionsToOrg, hasPermission, type Permission, ALL_PERMISSIONS, PERMISSION_GATES, PERMISSION_CATALOG, SUPERADMIN_ONLY_PERMISSIONS, SYSTEM_ORG_ONLY_PERMISSIONS, ORG_ASSIGNABLE_PERMISSIONS, ORG_ASSIGNABLE_CATEGORIES, READ_ONLY_PERMISSIONS, ROLE_PERMISSIONS, ECOSYSTEM_MANAGER_PERMISSIONS, TEAM_LEAD_PERMISSIONS, } from './permissions.js';
14
15
  export { METADATA_KEY_CATALOG, MetadataKeys, type MetadataKey, type MetadataKeyOption, METADATA_KEY_GROUPS, } from './metadata-keys.js';
15
16
  export { type AuditEvent, } from './audit-events.js';
16
17
  export { REMOTE_AUDIT_ACTIONS, isRemoteAuditAction, type RemoteAuditAction, } from './remote-audit-actions.js';
@@ -18,4 +19,4 @@ export { ASK_AGENT_PROPOSER, ASK_PROPOSED_BY_HEADER, PROPOSED_BY_DETAIL_KEY, ask
18
19
  export { isEcosystemNotificationEvent, parseEcosystemNotifyRequest, nextEcosystemDigestTime, renderEcosystemManagerChange, renderEcosystemDigest, type EcosystemNotificationEventId, type EcosystemNotificationChannel, ECOSYSTEM_EMAIL_PREFERENCE_FIELDS, type EcosystemEmailPreferenceField, ECOSYSTEM_EMAIL_PREFERENCE_FIELD_NAMES, ECOSYSTEM_NOTIFICATION_EVENTS, type EcosystemRecipientSpec, type EcosystemNotifyRequest, } from './ecosystem-notifications.js';
19
20
  export { publisherTermsVersion, publisherHandleProblem, isOfficialAutoApprovalEnabled, isPluginPublishingEnabled, isAnonymousSubmissionsEnabled, isPluginReviewsEnabled, OFFICIAL_CATALOG_LOADER_ACCOUNT, DEFAULT_PUBLISHER_TERMS_VERSION, BUILTIN_RESERVED_HANDLES, TENANT_REQUEST_KINDS, PUBLISH_PERMISSION_REQUEST_KINDS, VERIFY_REQUEST_KINDS, STEP_UP_REQUEST_KINDS, REQUEST_SLA_HOURS, } from './ecosystem.js';
20
21
  export { ageScore, vulnScore, computeHealthScore, publisherHealthScore, publisherSuccessRate, healthBand, HEALTH_COMPONENTS, HEALTH_WEIGHTS, type HealthBreakdown, type HealthComponentScore, type HealthResult, type HealthInputs, type HealthBand, } from './plugin-health.js';
21
- export { asScanFlag, blockOnNewCritical, describeFindings, describeFix, exceedsVulnFloor, pluginVulnMaxCritical, SCAN_FLAG_TOP_FINDINGS, vulnBlockedMessage, vulnFlaggedMessage, vulnFlaggedWarning, type PluginScanFinding, type PluginScanFlag, type VulnFlaggedWarning, } from './plugin-scan.js';
22
+ export { asScanFlag, blockOnNewCritical, describeFindings, describeFix, exceedsVulnFloor, pluginVulnMaxCritical, SCAN_FLAG_TOP_FINDINGS, vulnBlockedMessage, vulnFlaggedMessage, vulnFlaggedWarning, type PluginScanFinding, type PluginScanFlag, type PluginScanSummary, type VulnFlaggedWarning, } from './plugin-scan.js';
@@ -6,13 +6,14 @@ export * from './pipeline.js';
6
6
  export {} from './catalog-metadata.js';
7
7
  export {} from './pipeline-template.js';
8
8
  export * from './visibility.js';
9
+ export * from './reserved-tags.js';
9
10
  export * from './wire-vocabulary.js';
10
11
  export {} from './compliance-exemption.js';
11
12
  export { PLUGIN_SUMMARY_MAX, PLUGIN_README_MAX_BYTES, PLUGIN_CHANGELOG_MAX_BYTES, PLUGIN_CATEGORIES, PLUGIN_CATALOG_FIELDS, PLUGIN_CATALOG_LINK_FIELDS, METADATA_SOURCES, } from './plugin-catalog.js';
12
13
  export {} from './http.js';
13
14
  export { tierAllowsTeams, isBillingEnabled, isValidTier, getTierLimits, QUOTA_TIERS, VALID_TIERS, STANDARD_TIERS, TEAM_CAPABLE_TIERS, DEFAULT_TIER, QUOTA_RESET_DAYS, nextQuotaResetDate, } from './quota-tiers.js';
14
15
  export * from './feature-flags.js';
15
- export { permissionLabel, isValidPermission, isSystemOrgOnlyPermission, isOrgAssignablePermission, normalizePermissionSubset, intersectPermissions, resolveUserPermissions, confinePermissionsToOrg, hasPermission, ALL_PERMISSIONS, PERMISSION_GATES, PERMISSION_CATALOG, SUPERADMIN_ONLY_PERMISSIONS, SYSTEM_ORG_ONLY_PERMISSIONS, ORG_ASSIGNABLE_PERMISSIONS, ORG_ASSIGNABLE_CATEGORIES, READ_ONLY_PERMISSIONS, ROLE_PERMISSIONS, ECOSYSTEM_MANAGER_PERMISSIONS, } from './permissions.js';
16
+ export { permissionLabel, isValidPermission, isSystemOrgOnlyPermission, isOrgAssignablePermission, normalizePermissionSubset, intersectPermissions, resolveUserPermissions, confinePermissionsToOrg, hasPermission, ALL_PERMISSIONS, PERMISSION_GATES, PERMISSION_CATALOG, SUPERADMIN_ONLY_PERMISSIONS, SYSTEM_ORG_ONLY_PERMISSIONS, ORG_ASSIGNABLE_PERMISSIONS, ORG_ASSIGNABLE_CATEGORIES, READ_ONLY_PERMISSIONS, ROLE_PERMISSIONS, ECOSYSTEM_MANAGER_PERMISSIONS, TEAM_LEAD_PERMISSIONS, } from './permissions.js';
16
17
  export { METADATA_KEY_CATALOG, MetadataKeys, METADATA_KEY_GROUPS, } from './metadata-keys.js';
17
18
  export {} from './audit-events.js';
18
19
  export { REMOTE_AUDIT_ACTIONS, isRemoteAuditAction, } from './remote-audit-actions.js';
@@ -21,4 +22,4 @@ export { isEcosystemNotificationEvent, parseEcosystemNotifyRequest, nextEcosyste
21
22
  export { publisherTermsVersion, publisherHandleProblem, isOfficialAutoApprovalEnabled, isPluginPublishingEnabled, isAnonymousSubmissionsEnabled, isPluginReviewsEnabled, OFFICIAL_CATALOG_LOADER_ACCOUNT, DEFAULT_PUBLISHER_TERMS_VERSION, BUILTIN_RESERVED_HANDLES, TENANT_REQUEST_KINDS, PUBLISH_PERMISSION_REQUEST_KINDS, VERIFY_REQUEST_KINDS, STEP_UP_REQUEST_KINDS, REQUEST_SLA_HOURS, } from './ecosystem.js';
22
23
  export { ageScore, vulnScore, computeHealthScore, publisherHealthScore, publisherSuccessRate, healthBand, HEALTH_COMPONENTS, HEALTH_WEIGHTS, } from './plugin-health.js';
23
24
  export { asScanFlag, blockOnNewCritical, describeFindings, describeFix, exceedsVulnFloor, pluginVulnMaxCritical, SCAN_FLAG_TOP_FINDINGS, vulnBlockedMessage, vulnFlaggedMessage, vulnFlaggedWarning, } from './plugin-scan.js';
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEUsT0FBTyxFQUNMLGdCQUFnQixFQUVoQixZQUFZLEVBTVosaUJBQWlCLEdBTWxCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLE9BQU8sRUFNTixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFFTixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxPQUFPLEVBQW1DLE1BQU0sMkJBQTJCLENBQUM7QUFDNUUsT0FBTyxFQUNMLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUVqQixxQkFBcUIsRUFFckIsMEJBQTBCLEVBQzFCLGdCQUFnQixHQUdqQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFFTixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQ0wsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsYUFBYSxFQUdiLFdBQVcsRUFDWCxXQUFXLEVBQ1gsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGtCQUFrQixHQUNuQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsT0FBTyxFQUNMLGVBQWUsRUFDZixpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsYUFBYSxFQUViLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLDJCQUEyQixFQUMzQiwyQkFBMkIsRUFDM0IsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6QixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLDZCQUE2QixHQUM5QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsWUFBWSxFQUdaLG1CQUFtQixHQUNwQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFFTixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsbUJBQW1CLEdBRXBCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLDhCQUE4QixFQUM5QiwrQkFBK0IsRUFDL0IseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsY0FBYyxFQUNkLFdBQVcsRUFDWCxlQUFlLEVBQ2Ysa0JBQWtCLEdBWW5CLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNMLDRCQUE0QixFQUM1QiwyQkFBMkIsRUFDM0IsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1QixxQkFBcUIsRUFHckIsaUNBQWlDLEVBRWpDLHNDQUFzQyxFQUN0Qyw2QkFBNkIsR0FHOUIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qiw2QkFBNkIsRUFDN0IseUJBQXlCLEVBQ3pCLDZCQUE2QixFQUM3QixzQkFBc0IsRUFDdEIsK0JBQStCLEVBQy9CLCtCQUErQixFQUMvQix3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLGdDQUFnQyxFQUNoQyxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLGlCQUFpQixHQUNsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsY0FBYyxHQU1mLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNMLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixHQUluQixNQUFNLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmV4cG9ydCB7IEVycm9yQ29kZSwgZ2V0U3RhdHVzRm9yRXJyb3JDb2RlIH0gZnJvbSAnLi9lcnJvci1jb2Rlcy5qcyc7XG5leHBvcnQge1xuICBpc1ZhbGlkUXVvdGFUeXBlLFxuICB0eXBlIFRva2VuU2NvcGUsXG4gIFRPS0VOX1NDT1BFUyxcbiAgdHlwZSBQcmluY2lwYWxUeXBlLFxuICB0eXBlIFRva2VuVXNlLFxuICB0eXBlIEF1dGhNZXRob2QsXG4gIHR5cGUgQXNzdXJhbmNlTGV2ZWwsXG4gIHR5cGUgUXVvdGFUeXBlLFxuICBWQUxJRF9RVU9UQV9UWVBFUyxcbiAgdHlwZSBRdW90YUNoZWNrUmVzdWx0LFxuICB0eXBlIFF1b3RhSW5mbyxcbiAgdHlwZSBBcGlSZXNwb25zZSxcbiAgdHlwZSBKd3RQYXlsb2FkLFxuICB0eXBlIEhlYWx0aENoZWNrUmVzcG9uc2UsXG59IGZyb20gJy4vY29tbW9uLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUuanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBMaWZlY3ljbGUsXG4gIHR5cGUgQ3JpdGljYWxpdHksXG4gIHR5cGUgT3duZXJUeXBlLFxuICB0eXBlIEVudGl0eUxpbmssXG4gIHR5cGUgRW50aXR5TGFiZWxzLFxufSBmcm9tICcuL2NhdGFsb2ctbWV0YWRhdGEuanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBUZW1wbGF0ZUlucHV0LFxufSBmcm9tICcuL3BpcGVsaW5lLXRlbXBsYXRlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlzaWJpbGl0eS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3dpcmUtdm9jYWJ1bGFyeS5qcyc7XG5leHBvcnQgeyB0eXBlIENvbXBsaWFuY2VFeGVtcHRpb25SZXF1ZXN0IH0gZnJvbSAnLi9jb21wbGlhbmNlLWV4ZW1wdGlvbi5qcyc7XG5leHBvcnQge1xuICBQTFVHSU5fU1VNTUFSWV9NQVgsXG4gIFBMVUdJTl9SRUFETUVfTUFYX0JZVEVTLFxuICBQTFVHSU5fQ0hBTkdFTE9HX01BWF9CWVRFUyxcbiAgUExVR0lOX0NBVEVHT1JJRVMsXG4gIHR5cGUgUGx1Z2luQ2F0YWxvZ0NhdGVnb3J5LFxuICBQTFVHSU5fQ0FUQUxPR19GSUVMRFMsXG4gIHR5cGUgUGx1Z2luQ2F0YWxvZ0ZpZWxkLFxuICBQTFVHSU5fQ0FUQUxPR19MSU5LX0ZJRUxEUyxcbiAgTUVUQURBVEFfU09VUkNFUyxcbiAgdHlwZSBNZXRhZGF0YVNvdXJjZSxcbiAgdHlwZSBNZXRhZGF0YVNvdXJjZXMsXG59IGZyb20gJy4vcGx1Z2luLWNhdGFsb2cuanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBIdHRwUmVxdWVzdCxcbn0gZnJvbSAnLi9odHRwLmpzJztcbmV4cG9ydCB7XG4gIHRpZXJBbGxvd3NUZWFtcyxcbiAgaXNCaWxsaW5nRW5hYmxlZCxcbiAgaXNWYWxpZFRpZXIsXG4gIGdldFRpZXJMaW1pdHMsXG4gIHR5cGUgUXVvdGFUaWVyLFxuICB0eXBlIFF1b3RhVGllckxpbWl0cyxcbiAgUVVPVEFfVElFUlMsXG4gIFZBTElEX1RJRVJTLFxuICBTVEFOREFSRF9USUVSUyxcbiAgVEVBTV9DQVBBQkxFX1RJRVJTLFxuICBERUZBVUxUX1RJRVIsXG4gIFFVT1RBX1JFU0VUX0RBWVMsXG4gIG5leHRRdW90YVJlc2V0RGF0ZSxcbn0gZnJvbSAnLi9xdW90YS10aWVycy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2ZlYXR1cmUtZmxhZ3MuanMnO1xuZXhwb3J0IHtcbiAgcGVybWlzc2lvbkxhYmVsLFxuICBpc1ZhbGlkUGVybWlzc2lvbixcbiAgaXNTeXN0ZW1PcmdPbmx5UGVybWlzc2lvbixcbiAgaXNPcmdBc3NpZ25hYmxlUGVybWlzc2lvbixcbiAgbm9ybWFsaXplUGVybWlzc2lvblN1YnNldCxcbiAgaW50ZXJzZWN0UGVybWlzc2lvbnMsXG4gIHJlc29sdmVVc2VyUGVybWlzc2lvbnMsXG4gIGNvbmZpbmVQZXJtaXNzaW9uc1RvT3JnLFxuICBoYXNQZXJtaXNzaW9uLFxuICB0eXBlIFBlcm1pc3Npb24sXG4gIEFMTF9QRVJNSVNTSU9OUyxcbiAgUEVSTUlTU0lPTl9HQVRFUyxcbiAgUEVSTUlTU0lPTl9DQVRBTE9HLFxuICBTVVBFUkFETUlOX09OTFlfUEVSTUlTU0lPTlMsXG4gIFNZU1RFTV9PUkdfT05MWV9QRVJNSVNTSU9OUyxcbiAgT1JHX0FTU0lHTkFCTEVfUEVSTUlTU0lPTlMsXG4gIE9SR19BU1NJR05BQkxFX0NBVEVHT1JJRVMsXG4gIFJFQURfT05MWV9QRVJNSVNTSU9OUyxcbiAgUk9MRV9QRVJNSVNTSU9OUyxcbiAgRUNPU1lTVEVNX01BTkFHRVJfUEVSTUlTU0lPTlMsXG59IGZyb20gJy4vcGVybWlzc2lvbnMuanMnO1xuZXhwb3J0IHtcbiAgTUVUQURBVEFfS0VZX0NBVEFMT0csXG4gIE1ldGFkYXRhS2V5cyxcbiAgdHlwZSBNZXRhZGF0YUtleSxcbiAgdHlwZSBNZXRhZGF0YUtleU9wdGlvbixcbiAgTUVUQURBVEFfS0VZX0dST1VQUyxcbn0gZnJvbSAnLi9tZXRhZGF0YS1rZXlzLmpzJztcbmV4cG9ydCB7XG4gIHR5cGUgQXVkaXRFdmVudCxcbn0gZnJvbSAnLi9hdWRpdC1ldmVudHMuanMnO1xuZXhwb3J0IHtcbiAgUkVNT1RFX0FVRElUX0FDVElPTlMsXG4gIGlzUmVtb3RlQXVkaXRBY3Rpb24sXG4gIHR5cGUgUmVtb3RlQXVkaXRBY3Rpb24sXG59IGZyb20gJy4vcmVtb3RlLWF1ZGl0LWFjdGlvbnMuanMnO1xuZXhwb3J0IHtcbiAgQVNLX0FHRU5UX1BST1BPU0VSLFxuICBBU0tfUFJPUE9TRURfQllfSEVBREVSLFxuICBQUk9QT1NFRF9CWV9ERVRBSUxfS0VZLFxuICBhc2tQcm9wb3NhbEF1ZGl0RGV0YWlscyxcbiAgcmVhZFByb3Bvc2VyQ2xhaW0sXG4gIHdpdGhQcm9wb3NhbFByb3ZlbmFuY2UsXG4gIE9SR19TRVRUSU5HX1BST1BPU0FMX0FMTE9XTElTVCxcbiAgT1JHX1NFVFRJTkdfUFJPUE9TQUxfRVhDTFVTSU9OUyxcbiAgT1JHX1NFVFRJTkdfUFJPUE9TQUxfS0VZUyxcbiAgaXNQcm9wb3NhYmxlT3JnU2V0dGluZyxcbiAgaXNWYWxpZE9yZ1NldHRpbmdWYWx1ZSxcbiAgb3JnU2V0dGluZ1NwZWMsXG4gIHBpY2tBbGxvd2VkLFxuICBkaWZmT3JnU2V0dGluZ3MsXG4gIG9yZ1NldHRpbmdSZXF1ZXN0cyxcbiAgdHlwZSBBc2tQcm9wb3NhbFByb3ZlbmFuY2UsXG4gIHR5cGUgUHJvcG9zZXJDbGFpbSxcbiAgdHlwZSBPcmdTZXR0aW5nQ2hhbmdlLFxuICB0eXBlIE9yZ1NldHRpbmdLZXksXG4gIHR5cGUgT3JnU2V0dGluZ1BhdGNoLFxuICB0eXBlIE9yZ1NldHRpbmdSZXF1ZXN0LFxuICB0eXBlIE9yZ1NldHRpbmdTaGFwZSxcbiAgdHlwZSBPcmdTZXR0aW5nU3BlYyxcbiAgdHlwZSBPcmdTZXR0aW5nU3VyZmFjZSxcbiAgdHlwZSBPcmdTZXR0aW5nVmFsdWUsXG4gIHR5cGUgUGlja0FsbG93ZWRSZXN1bHQsXG59IGZyb20gJy4vYXNrLXByb3Bvc2Fscy5qcyc7XG5leHBvcnQge1xuICBpc0Vjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50LFxuICBwYXJzZUVjb3N5c3RlbU5vdGlmeVJlcXVlc3QsXG4gIG5leHRFY29zeXN0ZW1EaWdlc3RUaW1lLFxuICByZW5kZXJFY29zeXN0ZW1NYW5hZ2VyQ2hhbmdlLFxuICByZW5kZXJFY29zeXN0ZW1EaWdlc3QsXG4gIHR5cGUgRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnRJZCxcbiAgdHlwZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25DaGFubmVsLFxuICBFQ09TWVNURU1fRU1BSUxfUFJFRkVSRU5DRV9GSUVMRFMsXG4gIHR5cGUgRWNvc3lzdGVtRW1haWxQcmVmZXJlbmNlRmllbGQsXG4gIEVDT1NZU1RFTV9FTUFJTF9QUkVGRVJFTkNFX0ZJRUxEX05BTUVTLFxuICBFQ09TWVNURU1fTk9USUZJQ0FUSU9OX0VWRU5UUyxcbiAgdHlwZSBFY29zeXN0ZW1SZWNpcGllbnRTcGVjLFxuICB0eXBlIEVjb3N5c3RlbU5vdGlmeVJlcXVlc3QsXG59IGZyb20gJy4vZWNvc3lzdGVtLW5vdGlmaWNhdGlvbnMuanMnO1xuZXhwb3J0IHtcbiAgcHVibGlzaGVyVGVybXNWZXJzaW9uLFxuICBwdWJsaXNoZXJIYW5kbGVQcm9ibGVtLFxuICBpc09mZmljaWFsQXV0b0FwcHJvdmFsRW5hYmxlZCxcbiAgaXNQbHVnaW5QdWJsaXNoaW5nRW5hYmxlZCxcbiAgaXNBbm9ueW1vdXNTdWJtaXNzaW9uc0VuYWJsZWQsXG4gIGlzUGx1Z2luUmV2aWV3c0VuYWJsZWQsXG4gIE9GRklDSUFMX0NBVEFMT0dfTE9BREVSX0FDQ09VTlQsXG4gIERFRkFVTFRfUFVCTElTSEVSX1RFUk1TX1ZFUlNJT04sXG4gIEJVSUxUSU5fUkVTRVJWRURfSEFORExFUyxcbiAgVEVOQU5UX1JFUVVFU1RfS0lORFMsXG4gIFBVQkxJU0hfUEVSTUlTU0lPTl9SRVFVRVNUX0tJTkRTLFxuICBWRVJJRllfUkVRVUVTVF9LSU5EUyxcbiAgU1RFUF9VUF9SRVFVRVNUX0tJTkRTLFxuICBSRVFVRVNUX1NMQV9IT1VSUyxcbn0gZnJvbSAnLi9lY29zeXN0ZW0uanMnO1xuZXhwb3J0IHtcbiAgYWdlU2NvcmUsXG4gIHZ1bG5TY29yZSxcbiAgY29tcHV0ZUhlYWx0aFNjb3JlLFxuICBwdWJsaXNoZXJIZWFsdGhTY29yZSxcbiAgcHVibGlzaGVyU3VjY2Vzc1JhdGUsXG4gIGhlYWx0aEJhbmQsXG4gIEhFQUxUSF9DT01QT05FTlRTLFxuICBIRUFMVEhfV0VJR0hUUyxcbiAgdHlwZSBIZWFsdGhCcmVha2Rvd24sXG4gIHR5cGUgSGVhbHRoQ29tcG9uZW50U2NvcmUsXG4gIHR5cGUgSGVhbHRoUmVzdWx0LFxuICB0eXBlIEhlYWx0aElucHV0cyxcbiAgdHlwZSBIZWFsdGhCYW5kLFxufSBmcm9tICcuL3BsdWdpbi1oZWFsdGguanMnO1xuZXhwb3J0IHtcbiAgYXNTY2FuRmxhZyxcbiAgYmxvY2tPbk5ld0NyaXRpY2FsLFxuICBkZXNjcmliZUZpbmRpbmdzLFxuICBkZXNjcmliZUZpeCxcbiAgZXhjZWVkc1Z1bG5GbG9vcixcbiAgcGx1Z2luVnVsbk1heENyaXRpY2FsLFxuICBTQ0FOX0ZMQUdfVE9QX0ZJTkRJTkdTLFxuICB2dWxuQmxvY2tlZE1lc3NhZ2UsXG4gIHZ1bG5GbGFnZ2VkTWVzc2FnZSxcbiAgdnVsbkZsYWdnZWRXYXJuaW5nLFxuICB0eXBlIFBsdWdpblNjYW5GaW5kaW5nLFxuICB0eXBlIFBsdWdpblNjYW5GbGFnLFxuICB0eXBlIFZ1bG5GbGFnZ2VkV2FybmluZyxcbn0gZnJvbSAnLi9wbHVnaW4tc2Nhbi5qcyc7XG4iXX0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEUsT0FBTyxFQUNMLGdCQUFnQixFQUVoQixZQUFZLEVBTVosaUJBQWlCLEdBTWxCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLE9BQU8sRUFNTixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFFTixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLE9BQU8sRUFBbUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsaUJBQWlCLEVBRWpCLHFCQUFxQixFQUVyQiwwQkFBMEIsRUFDMUIsZ0JBQWdCLEdBR2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUVOLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxhQUFhLEVBR2IsV0FBVyxFQUNYLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsa0JBQWtCLEdBQ25CLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGlCQUFpQixFQUNqQix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixhQUFhLEVBRWIsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsNkJBQTZCLEVBQzdCLHFCQUFxQixHQUN0QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsWUFBWSxFQUdaLG1CQUFtQixHQUNwQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFFTixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsbUJBQW1CLEdBRXBCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLDhCQUE4QixFQUM5QiwrQkFBK0IsRUFDL0IseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsY0FBYyxFQUNkLFdBQVcsRUFDWCxlQUFlLEVBQ2Ysa0JBQWtCLEdBWW5CLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNMLDRCQUE0QixFQUM1QiwyQkFBMkIsRUFDM0IsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1QixxQkFBcUIsRUFHckIsaUNBQWlDLEVBRWpDLHNDQUFzQyxFQUN0Qyw2QkFBNkIsR0FHOUIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qiw2QkFBNkIsRUFDN0IseUJBQXlCLEVBQ3pCLDZCQUE2QixFQUM3QixzQkFBc0IsRUFDdEIsK0JBQStCLEVBQy9CLCtCQUErQixFQUMvQix3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLGdDQUFnQyxFQUNoQyxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLGlCQUFpQixHQUNsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsY0FBYyxHQU1mLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNMLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixHQUtuQixNQUFNLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmV4cG9ydCB7IEVycm9yQ29kZSwgZ2V0U3RhdHVzRm9yRXJyb3JDb2RlIH0gZnJvbSAnLi9lcnJvci1jb2Rlcy5qcyc7XG5leHBvcnQge1xuICBpc1ZhbGlkUXVvdGFUeXBlLFxuICB0eXBlIFRva2VuU2NvcGUsXG4gIFRPS0VOX1NDT1BFUyxcbiAgdHlwZSBQcmluY2lwYWxUeXBlLFxuICB0eXBlIFRva2VuVXNlLFxuICB0eXBlIEF1dGhNZXRob2QsXG4gIHR5cGUgQXNzdXJhbmNlTGV2ZWwsXG4gIHR5cGUgUXVvdGFUeXBlLFxuICBWQUxJRF9RVU9UQV9UWVBFUyxcbiAgdHlwZSBRdW90YUNoZWNrUmVzdWx0LFxuICB0eXBlIFF1b3RhSW5mbyxcbiAgdHlwZSBBcGlSZXNwb25zZSxcbiAgdHlwZSBKd3RQYXlsb2FkLFxuICB0eXBlIEhlYWx0aENoZWNrUmVzcG9uc2UsXG59IGZyb20gJy4vY29tbW9uLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUuanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBMaWZlY3ljbGUsXG4gIHR5cGUgQ3JpdGljYWxpdHksXG4gIHR5cGUgT3duZXJUeXBlLFxuICB0eXBlIEVudGl0eUxpbmssXG4gIHR5cGUgRW50aXR5TGFiZWxzLFxufSBmcm9tICcuL2NhdGFsb2ctbWV0YWRhdGEuanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBUZW1wbGF0ZUlucHV0LFxufSBmcm9tICcuL3BpcGVsaW5lLXRlbXBsYXRlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlzaWJpbGl0eS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc2VydmVkLXRhZ3MuanMnO1xuZXhwb3J0ICogZnJvbSAnLi93aXJlLXZvY2FidWxhcnkuanMnO1xuZXhwb3J0IHsgdHlwZSBDb21wbGlhbmNlRXhlbXB0aW9uUmVxdWVzdCB9IGZyb20gJy4vY29tcGxpYW5jZS1leGVtcHRpb24uanMnO1xuZXhwb3J0IHtcbiAgUExVR0lOX1NVTU1BUllfTUFYLFxuICBQTFVHSU5fUkVBRE1FX01BWF9CWVRFUyxcbiAgUExVR0lOX0NIQU5HRUxPR19NQVhfQllURVMsXG4gIFBMVUdJTl9DQVRFR09SSUVTLFxuICB0eXBlIFBsdWdpbkNhdGFsb2dDYXRlZ29yeSxcbiAgUExVR0lOX0NBVEFMT0dfRklFTERTLFxuICB0eXBlIFBsdWdpbkNhdGFsb2dGaWVsZCxcbiAgUExVR0lOX0NBVEFMT0dfTElOS19GSUVMRFMsXG4gIE1FVEFEQVRBX1NPVVJDRVMsXG4gIHR5cGUgTWV0YWRhdGFTb3VyY2UsXG4gIHR5cGUgTWV0YWRhdGFTb3VyY2VzLFxufSBmcm9tICcuL3BsdWdpbi1jYXRhbG9nLmpzJztcbmV4cG9ydCB7XG4gIHR5cGUgSHR0cFJlcXVlc3QsXG59IGZyb20gJy4vaHR0cC5qcyc7XG5leHBvcnQge1xuICB0aWVyQWxsb3dzVGVhbXMsXG4gIGlzQmlsbGluZ0VuYWJsZWQsXG4gIGlzVmFsaWRUaWVyLFxuICBnZXRUaWVyTGltaXRzLFxuICB0eXBlIFF1b3RhVGllcixcbiAgdHlwZSBRdW90YVRpZXJMaW1pdHMsXG4gIFFVT1RBX1RJRVJTLFxuICBWQUxJRF9USUVSUyxcbiAgU1RBTkRBUkRfVElFUlMsXG4gIFRFQU1fQ0FQQUJMRV9USUVSUyxcbiAgREVGQVVMVF9USUVSLFxuICBRVU9UQV9SRVNFVF9EQVlTLFxuICBuZXh0UXVvdGFSZXNldERhdGUsXG59IGZyb20gJy4vcXVvdGEtdGllcnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9mZWF0dXJlLWZsYWdzLmpzJztcbmV4cG9ydCB7XG4gIHBlcm1pc3Npb25MYWJlbCxcbiAgaXNWYWxpZFBlcm1pc3Npb24sXG4gIGlzU3lzdGVtT3JnT25seVBlcm1pc3Npb24sXG4gIGlzT3JnQXNzaWduYWJsZVBlcm1pc3Npb24sXG4gIG5vcm1hbGl6ZVBlcm1pc3Npb25TdWJzZXQsXG4gIGludGVyc2VjdFBlcm1pc3Npb25zLFxuICByZXNvbHZlVXNlclBlcm1pc3Npb25zLFxuICBjb25maW5lUGVybWlzc2lvbnNUb09yZyxcbiAgaGFzUGVybWlzc2lvbixcbiAgdHlwZSBQZXJtaXNzaW9uLFxuICBBTExfUEVSTUlTU0lPTlMsXG4gIFBFUk1JU1NJT05fR0FURVMsXG4gIFBFUk1JU1NJT05fQ0FUQUxPRyxcbiAgU1VQRVJBRE1JTl9PTkxZX1BFUk1JU1NJT05TLFxuICBTWVNURU1fT1JHX09OTFlfUEVSTUlTU0lPTlMsXG4gIE9SR19BU1NJR05BQkxFX1BFUk1JU1NJT05TLFxuICBPUkdfQVNTSUdOQUJMRV9DQVRFR09SSUVTLFxuICBSRUFEX09OTFlfUEVSTUlTU0lPTlMsXG4gIFJPTEVfUEVSTUlTU0lPTlMsXG4gIEVDT1NZU1RFTV9NQU5BR0VSX1BFUk1JU1NJT05TLFxuICBURUFNX0xFQURfUEVSTUlTU0lPTlMsXG59IGZyb20gJy4vcGVybWlzc2lvbnMuanMnO1xuZXhwb3J0IHtcbiAgTUVUQURBVEFfS0VZX0NBVEFMT0csXG4gIE1ldGFkYXRhS2V5cyxcbiAgdHlwZSBNZXRhZGF0YUtleSxcbiAgdHlwZSBNZXRhZGF0YUtleU9wdGlvbixcbiAgTUVUQURBVEFfS0VZX0dST1VQUyxcbn0gZnJvbSAnLi9tZXRhZGF0YS1rZXlzLmpzJztcbmV4cG9ydCB7XG4gIHR5cGUgQXVkaXRFdmVudCxcbn0gZnJvbSAnLi9hdWRpdC1ldmVudHMuanMnO1xuZXhwb3J0IHtcbiAgUkVNT1RFX0FVRElUX0FDVElPTlMsXG4gIGlzUmVtb3RlQXVkaXRBY3Rpb24sXG4gIHR5cGUgUmVtb3RlQXVkaXRBY3Rpb24sXG59IGZyb20gJy4vcmVtb3RlLWF1ZGl0LWFjdGlvbnMuanMnO1xuZXhwb3J0IHtcbiAgQVNLX0FHRU5UX1BST1BPU0VSLFxuICBBU0tfUFJPUE9TRURfQllfSEVBREVSLFxuICBQUk9QT1NFRF9CWV9ERVRBSUxfS0VZLFxuICBhc2tQcm9wb3NhbEF1ZGl0RGV0YWlscyxcbiAgcmVhZFByb3Bvc2VyQ2xhaW0sXG4gIHdpdGhQcm9wb3NhbFByb3ZlbmFuY2UsXG4gIE9SR19TRVRUSU5HX1BST1BPU0FMX0FMTE9XTElTVCxcbiAgT1JHX1NFVFRJTkdfUFJPUE9TQUxfRVhDTFVTSU9OUyxcbiAgT1JHX1NFVFRJTkdfUFJPUE9TQUxfS0VZUyxcbiAgaXNQcm9wb3NhYmxlT3JnU2V0dGluZyxcbiAgaXNWYWxpZE9yZ1NldHRpbmdWYWx1ZSxcbiAgb3JnU2V0dGluZ1NwZWMsXG4gIHBpY2tBbGxvd2VkLFxuICBkaWZmT3JnU2V0dGluZ3MsXG4gIG9yZ1NldHRpbmdSZXF1ZXN0cyxcbiAgdHlwZSBBc2tQcm9wb3NhbFByb3ZlbmFuY2UsXG4gIHR5cGUgUHJvcG9zZXJDbGFpbSxcbiAgdHlwZSBPcmdTZXR0aW5nQ2hhbmdlLFxuICB0eXBlIE9yZ1NldHRpbmdLZXksXG4gIHR5cGUgT3JnU2V0dGluZ1BhdGNoLFxuICB0eXBlIE9yZ1NldHRpbmdSZXF1ZXN0LFxuICB0eXBlIE9yZ1NldHRpbmdTaGFwZSxcbiAgdHlwZSBPcmdTZXR0aW5nU3BlYyxcbiAgdHlwZSBPcmdTZXR0aW5nU3VyZmFjZSxcbiAgdHlwZSBPcmdTZXR0aW5nVmFsdWUsXG4gIHR5cGUgUGlja0FsbG93ZWRSZXN1bHQsXG59IGZyb20gJy4vYXNrLXByb3Bvc2Fscy5qcyc7XG5leHBvcnQge1xuICBpc0Vjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50LFxuICBwYXJzZUVjb3N5c3RlbU5vdGlmeVJlcXVlc3QsXG4gIG5leHRFY29zeXN0ZW1EaWdlc3RUaW1lLFxuICByZW5kZXJFY29zeXN0ZW1NYW5hZ2VyQ2hhbmdlLFxuICByZW5kZXJFY29zeXN0ZW1EaWdlc3QsXG4gIHR5cGUgRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnRJZCxcbiAgdHlwZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25DaGFubmVsLFxuICBFQ09TWVNURU1fRU1BSUxfUFJFRkVSRU5DRV9GSUVMRFMsXG4gIHR5cGUgRWNvc3lzdGVtRW1haWxQcmVmZXJlbmNlRmllbGQsXG4gIEVDT1NZU1RFTV9FTUFJTF9QUkVGRVJFTkNFX0ZJRUxEX05BTUVTLFxuICBFQ09TWVNURU1fTk9USUZJQ0FUSU9OX0VWRU5UUyxcbiAgdHlwZSBFY29zeXN0ZW1SZWNpcGllbnRTcGVjLFxuICB0eXBlIEVjb3N5c3RlbU5vdGlmeVJlcXVlc3QsXG59IGZyb20gJy4vZWNvc3lzdGVtLW5vdGlmaWNhdGlvbnMuanMnO1xuZXhwb3J0IHtcbiAgcHVibGlzaGVyVGVybXNWZXJzaW9uLFxuICBwdWJsaXNoZXJIYW5kbGVQcm9ibGVtLFxuICBpc09mZmljaWFsQXV0b0FwcHJvdmFsRW5hYmxlZCxcbiAgaXNQbHVnaW5QdWJsaXNoaW5nRW5hYmxlZCxcbiAgaXNBbm9ueW1vdXNTdWJtaXNzaW9uc0VuYWJsZWQsXG4gIGlzUGx1Z2luUmV2aWV3c0VuYWJsZWQsXG4gIE9GRklDSUFMX0NBVEFMT0dfTE9BREVSX0FDQ09VTlQsXG4gIERFRkFVTFRfUFVCTElTSEVSX1RFUk1TX1ZFUlNJT04sXG4gIEJVSUxUSU5fUkVTRVJWRURfSEFORExFUyxcbiAgVEVOQU5UX1JFUVVFU1RfS0lORFMsXG4gIFBVQkxJU0hfUEVSTUlTU0lPTl9SRVFVRVNUX0tJTkRTLFxuICBWRVJJRllfUkVRVUVTVF9LSU5EUyxcbiAgU1RFUF9VUF9SRVFVRVNUX0tJTkRTLFxuICBSRVFVRVNUX1NMQV9IT1VSUyxcbn0gZnJvbSAnLi9lY29zeXN0ZW0uanMnO1xuZXhwb3J0IHtcbiAgYWdlU2NvcmUsXG4gIHZ1bG5TY29yZSxcbiAgY29tcHV0ZUhlYWx0aFNjb3JlLFxuICBwdWJsaXNoZXJIZWFsdGhTY29yZSxcbiAgcHVibGlzaGVyU3VjY2Vzc1JhdGUsXG4gIGhlYWx0aEJhbmQsXG4gIEhFQUxUSF9DT01QT05FTlRTLFxuICBIRUFMVEhfV0VJR0hUUyxcbiAgdHlwZSBIZWFsdGhCcmVha2Rvd24sXG4gIHR5cGUgSGVhbHRoQ29tcG9uZW50U2NvcmUsXG4gIHR5cGUgSGVhbHRoUmVzdWx0LFxuICB0eXBlIEhlYWx0aElucHV0cyxcbiAgdHlwZSBIZWFsdGhCYW5kLFxufSBmcm9tICcuL3BsdWdpbi1oZWFsdGguanMnO1xuZXhwb3J0IHtcbiAgYXNTY2FuRmxhZyxcbiAgYmxvY2tPbk5ld0NyaXRpY2FsLFxuICBkZXNjcmliZUZpbmRpbmdzLFxuICBkZXNjcmliZUZpeCxcbiAgZXhjZWVkc1Z1bG5GbG9vcixcbiAgcGx1Z2luVnVsbk1heENyaXRpY2FsLFxuICBTQ0FOX0ZMQUdfVE9QX0ZJTkRJTkdTLFxuICB2dWxuQmxvY2tlZE1lc3NhZ2UsXG4gIHZ1bG5GbGFnZ2VkTWVzc2FnZSxcbiAgdnVsbkZsYWdnZWRXYXJuaW5nLFxuICB0eXBlIFBsdWdpblNjYW5GaW5kaW5nLFxuICB0eXBlIFBsdWdpblNjYW5GbGFnLFxuICB0eXBlIFBsdWdpblNjYW5TdW1tYXJ5LFxuICB0eXBlIFZ1bG5GbGFnZ2VkV2FybmluZyxcbn0gZnJvbSAnLi9wbHVnaW4tc2Nhbi5qcyc7XG4iXX0=
@@ -12,7 +12,7 @@ import type { OrgRole } from './common.js';
12
12
  * global `isSuperAdmin` flag, not a per-org permission; and `requireStepUp`
13
13
  * (MFA) / `requireFeature` (plan entitlements) remain orthogonal gates.
14
14
  */
15
- export type Permission = 'pipelines:read' | 'pipelines:write' | 'pipelines:publish' | 'templates:read' | 'templates:write' | 'templates:publish' | 'plugins:read' | 'plugins:write' | 'plugins:publish' | 'plugins:install' | 'plugin_installs:manage' | 'publishers:manage' | 'plugins:moderate' | 'publishers:verify' | 'compliance:read' | 'compliance:write' | 'members:manage' | 'roles:manage' | 'invitations:manage' | 'service_accounts:manage' | 'dashboards:read' | 'dashboards:write' | 'observability:read' | 'observability:write' | 'logs:export' | 'reports:read' | 'reports:rollup' | 'messages:read' | 'messages:write' | 'billing:read' | 'billing:manage' | 'quotas:read' | 'registry:read' | 'registry:write' | 'org:settings' | 'org:idp' | 'org:kms' | 'org:impersonation';
15
+ export type Permission = 'pipelines:read' | 'pipelines:write' | 'pipelines:publish' | 'templates:read' | 'templates:write' | 'templates:publish' | 'plugins:read' | 'plugins:write' | 'plugins:publish' | 'plugins:install' | 'plugin_installs:manage' | 'publishers:manage' | 'plugins:moderate' | 'publishers:verify' | 'compliance:read' | 'compliance:write' | 'members:manage' | 'roles:manage' | 'invitations:manage' | 'service_accounts:manage' | 'dashboards:read' | 'dashboards:write' | 'observability:read' | 'observability:write' | 'logs:export' | 'reports:read' | 'reports:rollup' | 'reports:author' | 'reports:share' | 'messages:read' | 'messages:write' | 'billing:read' | 'billing:manage' | 'quotas:read' | 'registry:read' | 'registry:write' | 'org:settings' | 'org:idp' | 'org:kms' | 'org:impersonation';
16
16
  /** All valid permissions (order determines display order in the picker). */
17
17
  export declare const ALL_PERMISSIONS: readonly Permission[];
18
18
  /**
@@ -141,6 +141,21 @@ export declare const ROLE_PERMISSIONS: Record<OrgRole, readonly Permission[]>;
141
141
  * coarse `member` label and never sets `isSuperAdmin`.
142
142
  */
143
143
  export declare const ECOSYSTEM_MANAGER_PERMISSIONS: readonly Permission[];
144
+ /**
145
+ * Seed bundle for the built-in "Team Lead" Role — the person who reports UPWARD.
146
+ *
147
+ * Exists because the target user for stakeholder reports is a lead, not an admin,
148
+ * and granting `reports:author` only through the admin bundle would have forced
149
+ * every reporting lead to be an org admin (members:manage, roles:manage,
150
+ * org:settings, billing) to send their manager a weekly summary.
151
+ *
152
+ * Deliberately NOT included: `reports:rollup`. Rolling a report up over descendant
153
+ * teams is downward visibility across the org tree, which is a granted capability
154
+ * in this model, not something a team's own lead gets by default — a lead of a
155
+ * PARENT org is granted it explicitly. The Role grants the coarse `member` label
156
+ * and never sets `isSuperAdmin`.
157
+ */
158
+ export declare const TEAM_LEAD_PERMISSIONS: readonly Permission[];
144
159
  /**
145
160
  * Resolve a user's effective org permissions from the Roles assigned to them.
146
161
  *