@pipeline-builder/pipeline-data 4.3.5 → 4.3.7

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 (70) hide show
  1. package/lib/api/access-control-builder.js +1 -1
  2. package/lib/api/alert-destinations.js +1 -1
  3. package/lib/api/crud-service.js +1 -1
  4. package/lib/api/ecosystem-privacy.js +1 -1
  5. package/lib/api/keyset-cursor.js +1 -1
  6. package/lib/api/pipeline-step-resolution.js +1 -1
  7. package/lib/api/plugin-advisories.js +1 -1
  8. package/lib/api/plugin-consumption-policy.js +1 -1
  9. package/lib/api/plugin-resolution.js +6 -1
  10. package/lib/api/public-directory.d.ts +71 -3
  11. package/lib/api/public-directory.js +68 -22
  12. package/lib/api/query-builders.js +47 -2
  13. package/lib/api/reporting/analytics-queries.js +1 -1
  14. package/lib/api/reporting/caches.js +1 -1
  15. package/lib/api/reporting/daily-rollup.js +1 -1
  16. package/lib/api/reporting/deploy-rollup.js +1 -1
  17. package/lib/api/reporting/dora-scoring.js +1 -1
  18. package/lib/api/reporting/dora.js +1 -1
  19. package/lib/api/reporting/failure-classifier.js +1 -1
  20. package/lib/api/reporting/ingest.js +1 -1
  21. package/lib/api/reporting/last-deploy.js +1 -1
  22. package/lib/api/reporting/needs-attention.js +1 -1
  23. package/lib/api/reporting/plugin-exposure.js +1 -1
  24. package/lib/api/reporting/plugin-runtime.js +1 -1
  25. package/lib/api/reporting/query-scope.js +1 -1
  26. package/lib/api/reporting/retention-sweep.js +1 -1
  27. package/lib/api/reporting/retention.js +1 -1
  28. package/lib/api/reporting/sql-helpers.js +1 -1
  29. package/lib/api/reporting/stakeholder/compose.js +1 -1
  30. package/lib/api/reporting/stakeholder/index.js +1 -1
  31. package/lib/api/reporting/stakeholder/period.js +1 -1
  32. package/lib/api/reporting/stakeholder/report-html.js +1 -1
  33. package/lib/api/reporting/stakeholder/sections.js +1 -1
  34. package/lib/api/reporting/stakeholder/store.js +1 -1
  35. package/lib/api/reporting/stakeholder/templates.js +1 -1
  36. package/lib/api/reporting/types.js +1 -1
  37. package/lib/api/reporting-service.js +1 -1
  38. package/lib/api/semver-range.js +1 -1
  39. package/lib/api/soft-delete-sweep.js +1 -1
  40. package/lib/api/support-cases.js +1 -1
  41. package/lib/api/version-references.js +1 -1
  42. package/lib/api/viewer-context.js +1 -1
  43. package/lib/core/query-filters.d.ts +25 -0
  44. package/lib/core/query-filters.js +1 -1
  45. package/lib/database/drizzle-schema.d.ts +19 -0
  46. package/lib/database/drizzle-schema.js +1 -1
  47. package/lib/database/index.js +1 -1
  48. package/lib/database/pg-result.js +1 -1
  49. package/lib/database/postgres-connection.js +1 -1
  50. package/lib/database/public-reader.js +1 -1
  51. package/lib/database/read-connection.js +1 -1
  52. package/lib/database/read-lag.js +1 -1
  53. package/lib/database/retry-strategy.js +1 -1
  54. package/lib/database/schema/alert.js +1 -1
  55. package/lib/database/schema/compliance.js +1 -1
  56. package/lib/database/schema/dashboard.js +1 -1
  57. package/lib/database/schema/ecosystem.d.ts +17 -0
  58. package/lib/database/schema/ecosystem.js +3 -1
  59. package/lib/database/schema/message-attachment.js +1 -1
  60. package/lib/database/schema/message.d.ts +19 -0
  61. package/lib/database/schema/message.js +18 -1
  62. package/lib/database/schema/pipeline-template.js +1 -1
  63. package/lib/database/schema/pipeline.js +1 -1
  64. package/lib/database/schema/plugin.js +1 -1
  65. package/lib/database/schema/reporting-analytics.js +1 -1
  66. package/lib/database/schema/reporting-stakeholder.js +1 -1
  67. package/lib/database/schema/support.js +1 -1
  68. package/lib/database/tenancy.js +1 -1
  69. package/lib/index.js +1 -1
  70. package/package.json +8 -8
@@ -205,4 +205,4 @@ export function reportFileName(title, periodLabel, version) {
205
205
  const base = `${title} ${periodLabel}${version > 1 ? ` v${version}` : ''}`;
206
206
  return `${base.trim()}.pdf`;
207
207
  }
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWh0bWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL3JlcG9ydGluZy9zdGFrZWhvbGRlci9yZXBvcnQtaHRtbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBa0V0QywwRUFBMEU7QUFDMUUsU0FBUyxHQUFHLENBQUMsS0FBYztJQUN6QixPQUFPLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1NBQ3ZCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO1NBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO1NBQ3ZCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDNUIsQ0FBQztBQUVELGtFQUFrRTtBQUNsRSxTQUFTLEdBQUcsQ0FBQyxHQUE4QjtJQUN6QyxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ3JCLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUMxQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUF3QjtJQUNwRCxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNyQyxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUztRQUFFLE9BQU8sSUFB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SUFBSSxFQUFFLENBQUMsR0FBRyxNQUFNLGdCQUFnQixDQUFDO0FBQy9HLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFhLEVBQUUsV0FBbUIsRUFBRSxPQUFlO0lBQ2hGLE1BQU0sSUFBSSxHQUFHLEdBQUcsS0FBSyxJQUFJLFdBQVcsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMzRSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBzbmFwc2hvdCwgYXMgb25lIHNlbGYtY29udGFpbmVkIEhUTUwgZG9jdW1lbnQg4oCUIHRoZSBpbnB1dCB0aGUgUERGIHJlbmRlcmVyIHByaW50cy5cbiAqXG4gKiBXSFkgSFRNTCBBTkQgTk9UIEEgUERGIExJQlJBUlkuIEEgbGF5b3V0IGVuZ2luZSB3ZSB3b3VsZCBoYXZlIHRvIHRlYWNoIGFib3V0IHBhZ2VcbiAqIGJyZWFrcywgdGFibGUgd2lkdGhzIGFuZCBmb250IG1ldHJpY3MgaXMgYSBzZWNvbmQgcmVuZGVyZXIgdG8gbWFpbnRhaW47IENocm9taXVtXG4gKiBhbHJlYWR5IGhhcyBvbmUuIFNvIHRoZSBwaXBlbGluZSBpcyBzbmFwc2hvdCAtPiBIVE1MIC0+IGBQYWdlLnByaW50VG9QREZgLCBhbmQgdGhpc1xuICogZmlsZSBvd25zIHRoZSBmaXJzdCBhcnJvdy4gSXQgaXMgcHVyZTogYSBzdHJpbmcgaW4sIGEgc3RyaW5nIG91dCwgbm8gSS9PLCBubyBjbG9jaywgbm9cbiAqIGRhdGFiYXNlLiBUaGF0IGlzIHdoYXQgbWFrZXMgdGhlIFBERidzIGNvbnRlbnQgdGVzdGFibGUgd2l0aG91dCBhIGJyb3dzZXIuXG4gKlxuICogU0VMRi1DT05UQUlORUQsIEFORCBUSEFUIElTIEEgU0VDVVJJVFkgUFJPUEVSVFksIG5vdCB0aWRpbmVzcy4gTm8gPHNjcmlwdD4sIG5vXG4gKiBzdHlsZXNoZWV0IGxpbmssIG5vIHdlYiBmb250LCBubyBpbWFnZSBVUkwg4oCUIGV2ZXJ5dGhpbmcgaXMgaW5saW5lLiBUaGUgcmVuZGVyZXIgbG9hZHNcbiAqIHRoaXMgdGhyb3VnaCBgc2V0Q29udGVudGAgd2l0aCB0aGUgcGFnZSBvZmZsaW5lLCBzbyBhIGRvY3VtZW50IHRoYXQgcmVmZXJlbmNlZCBhbnl0aGluZ1xuICogZXh0ZXJuYWwgd291bGQgZWl0aGVyIGhhbmcgb3IgcXVpZXRseSByZW5kZXIgd2l0aG91dCBpdC4gU3RhdGVkIGhlcmUgYmVjYXVzZSB0aGVcbiAqIHRlbXB0YXRpb24gdG8gYWRkIGEgbG9nbyBieSBVUkwgd2lsbCBjb21lIHVwLCBhbmQgaXQgd291bGQgYmUgdGhlIG9uZSBjaGFuZ2UgdGhhdCBnaXZlc1xuICogdGhlIHJlbmRlcmVyIGEgcmVhc29uIHRvIHRhbGsgdG8gdGhlIG5ldHdvcmsuXG4gKlxuICogRVZFUlkgSU5URVJQT0xBVElPTiBJUyBFU0NBUEVELiBUaGUgc25hcHNob3QgY2FycmllcyBvcmctY29udHJvbGxlZCB0ZXh0IOKAlCBwaXBlbGluZVxuICogbmFtZXMsIGEgbGVhZCdzIG5vdGVzLCBhIHNlY3Rpb24gdGl0bGUg4oCUIGludG8gbWFya3VwIHRoYXQgYSBicm93c2VyIHRoZW4gcGFyc2VzLiBUaGF0XG4gKiBpcyB0aGUgc2FtZSBib3VuZGFyeSBhcyBhbnkgWFNTIHNpbmssIGFuZCBpdCBkb2VzIG5vdCBzdG9wIG1hdHRlcmluZyBiZWNhdXNlIHRoZSBvdXRwdXRcbiAqIGlzIGEgUERGOiB1bmVzY2FwZWQgbm90ZXMgY291bGQgY2xvc2UgYSB0YWcgYW5kIHJld3JpdGUgdGhlIHJlc3Qgb2YgdGhlIHJlcG9ydCwgd2hpY2ggaXNcbiAqIGEgZG9jdW1lbnQtZm9yZ2VyeSBidWcgaW4gYSBkb2N1bWVudCBwZW9wbGUgbWFrZSBkZWNpc2lvbnMgZnJvbS4gYGVzYygpYCBpcyBhcHBsaWVkIGF0XG4gKiBldmVyeSBzaW5nbGUgaW5zZXJ0aW9uIHBvaW50IGFuZCB0aGVyZSBpcyBubyBcInRydXN0ZWRcIiBjYWxsZXIuXG4gKlxuICogTk8gQ09MT1VSLU9OTFkgTUVBTklORywgYW5kIG5vIGJhcmUgZ2x5cGggY2FycnlpbmcgaW5mb3JtYXRpb24gKFdDQUcgMS40LjEgLyAxLjEuMSkuIEFcbiAqIGxvY2tlZCBwYW5lbCBzYXlzIFwiTm90IG9uIHlvdXIgcGxhblwiIGluIHdvcmRzOyBhIHRyZW5kIHNheXMgXCJkb3duIDMgcG9pbnRzXCIgaW4gd29yZHNcbiAqIHJhdGhlciB0aGFuIGxlYW5pbmcgb24gYW4gYXJyb3cuIFRoZXJlIGFyZSBubyBjaGFydHMgaW4gYSBzbmFwc2hvdCB0b2RheSDigJQgZXZlcnkgc2VjdGlvblxuICogcmVuZGVycyBhcyBhIG51bWJlciwgYSB3b3JkIGFuZCBhIHRhYmxlIHJvdyDigJQgc28gdGhlIHBsYW4ncyBcImFsdCB0ZXh0IG9uIGNoYXJ0c1wiIGhhc1xuICogbm90aGluZyB0byBhdHRhY2ggdG8geWV0LiBUaGUgcnVsZSB0aGF0IHJlcGxhY2VzIGl0IGlzIHN0cmljdGVyIGFuZCBzdXJ2aXZlcyBhIGNoYXJ0XG4gKiBiZWluZyBhZGRlZCBsYXRlcjogaWYgYSByZWFkZXIgd2l0aCBubyBjb2xvdXIgdmlzaW9uLCBubyBpbWFnZXMgYW5kIGEgc2NyZWVuIHJlYWRlclxuICogY2Fubm90IGdldCBhIGZhY3Qgb3V0IG9mIHRoaXMgZG9jdW1lbnQsIHRoZSBmYWN0IGlzIG5vdCBpbiBpdC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvbXBvc2VkU2VjdGlvbiwgRGF0YVF1YWxpdHlOb3RlLCBSZXBvcnRTbmFwc2hvdCB9IGZyb20gJy4vY29tcG9zZS5qcyc7XG5cbi8qKiBXaGF0IHRoZSByZW5kZXJlciBuZWVkcyB0byBwcm9kdWNlIG9uZSByZXBvcnQgZG9jdW1lbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEh0bWxJbnB1dCB7XG4gIC8qKiBUaGUgZGVmaW5pdGlvbidzIG5hbWUuIEhlYWRzIHRoZSBkb2N1bWVudC4gKi9cbiAgdGl0bGU6IHN0cmluZztcbiAgcGVyaW9kTGFiZWw6IHN0cmluZztcbiAgcGVyaW9kU3RhcnQ6IHN0cmluZztcbiAgcGVyaW9kRW5kOiBzdHJpbmc7XG4gIC8qKiBSZWdlbmVyYXRpb25zIGFyZSBub3JtYWw7IGEgcmVhZGVyIG11c3QgYmUgYWJsZSB0byB0ZWxsIHdoaWNoIG9uZSB0aGV5IGhvbGQuICovXG4gIHZlcnNpb246IG51bWJlcjtcbiAgcHVibGlzaGVkQXQ/OiBzdHJpbmcgfCBudWxsO1xuICAvKiogVGhlIGxlYWQncyBvd24gd29yZHMuIFJlbmRlcmVkIEFCT1ZFIHRoZSBudW1iZXJzIOKAlCBzZWUgdGhlIG9yZGVyaW5nIG5vdGUgYmVsb3cuICovXG4gIGxlYWROb3Rlcz86IHN0cmluZyB8IG51bGw7XG4gIC8qKlxuICAgKiBUaGUgQUktZHJhZnRlZCBleGVjdXRpdmUgc3VtbWFyeSwgd2hlbiB0aGUgcnVuIGhhcyBvbmUgYW5kIHRoZSBjYWxsZXIgaXMgYWxsb3dlZCB0b1xuICAgKiBzZWUgaXQuIE5ldmVyIGZldGNoZWQgaGVyZTogYSBjYWxsZXIgdGhhdCBzaG91bGQgbm90IGRpc2Nsb3NlIGl0IHNpbXBseSBvbWl0cyBpdC5cbiAgICovXG4gIGV4ZWN1dGl2ZVN1bW1hcnk/OiBzdHJpbmcgfCBudWxsO1xuICBzbmFwc2hvdDogUmVwb3J0U25hcHNob3QgfCBudWxsO1xuICAvKiogVHJ1ZSB3aGVuIHBpcGVsaW5lL3Byb2plY3QgbmFtZXMgd2VyZSByZXBsYWNlZCDigJQgc2FpZCBpbiB0aGUgZG9jdW1lbnQsIG5vdCBpbXBsaWVkLiAqL1xuICBuYW1lc1JlZGFjdGVkPzogYm9vbGVhbjtcbiAgLyoqIFNob3duIGluIHRoZSBmb290ZXIgb2YgYSBzaGFyZWQgY29weSwgc28gYSBib29rbWFya2VkIGxpbmsncyBkZWF0aCBpcyBub3QgYSBzdXJwcmlzZS4gKi9cbiAgZXhwaXJlc0F0Pzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqXG4gICAqIFN0YW1wZWQgaW4gdGhlIGZvb3RlciBhcyB0aGUgbW9tZW50IHRoZSBGSUxFIHdhcyBtYWRlLCBkaXN0aW5jdCBmcm9tIHRoZSBzbmFwc2hvdCdzXG4gICAqIG93biBgZ2VuZXJhdGVkQXRgLiBUd28gZGF0ZXMgYmVjYXVzZSB0aGV5IGFuc3dlciBkaWZmZXJlbnQgcXVlc3Rpb25zOiBcImlzIHRoaXMgcmVwb3J0XG4gICAqIGN1cnJlbnQ/XCIgYW5kIFwiaXMgdGhpcyB0aGUgY29weSBJIHdhcyBzZW50P1wiLlxuICAgKi9cbiAgcmVuZGVyZWRBdDogc3RyaW5nO1xufVxuXG4vKiogSFRNTC1lc2NhcGUuIEFwcGxpZWQgYXQgZXZlcnkgaW5zZXJ0aW9uIHBvaW50OyBzZWUgdGhlIGZpbGUgaGVhZGVyLiAqL1xuZnVuY3Rpb24gZXNjKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSA/PyAnJylcbiAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxuICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JylcbiAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpXG4gICAgLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKVxuICAgIC5yZXBsYWNlKC8nL2csICcmIzM5OycpO1xufVxuXG4vKiogQSBkYXRlIGFzIGEgcGxhaW4gY2FsZW5kYXIgZGF5LCBpbiBVVEMsIG9yIGDigJRgIHdoZW4gYWJzZW50LiAqL1xuZnVuY3Rpb24gZGF5KGlzbzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIGlmICghaXNvKSByZXR1cm4gJ+KAlCc7XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZShpc28pO1xuICBpZiAoTnVtYmVyLmlzTmFOKGQuZ2V0VGltZSgpKSkgcmV0dXJuICfigJQnO1xuICByZXR1cm4gZC50b0lTT1N0cmluZygpLnNsaWNlKDAsIDEwKTtcbn1cblxuLyoqXG4gKiBUaGUgdHJlbmQsIElOIFdPUkRTLlxuICpcbiAqIFwiZG93biAzIHBvaW50c1wiIHJhdGhlciB0aGFuIGEgcmVkIGFycm93LCBiZWNhdXNlIHRoZSBhcnJvdyBpcyB0aGUgd2hvbGUgZmFjdCBmb3IgYVxuICogc2VjdGlvbiB3aG9zZSBoZWFkbGluZSBiYXJlbHkgbW92ZWQsIGFuZCBhbiBhcnJvdyBpcyBpbnZpc2libGUgdG8gYSBzY3JlZW4gcmVhZGVyIGFuZFxuICogYW1iaWd1b3VzIGluIGdyZXlzY2FsZS4gYHVua25vd25gIHJlbmRlcnMgbm90aGluZyBhdCBhbGwgcmF0aGVyIHRoYW4gXCJmbGF0XCIg4oCUIGEgc2VjdGlvblxuICogd2l0aCBubyBjb21wYXJhYmxlIHByZXZpb3VzIHBlcmlvZCBoYXMgbm90IGhlbGQgc3RlYWR5LCB3ZSBqdXN0IGNhbm5vdCBzYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmVuZFNlbnRlbmNlKHNlY3Rpb246IENvbXBvc2VkU2VjdGlvbik6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCB7IGNoYW5nZSwgaGVhZGxpbmUgfSA9IHNlY3Rpb247XG4gIGlmICghY2hhbmdlIHx8IGNoYW5nZS5kaXJlY3Rpb24gPT09ICd1bmtub3duJykgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHVuaXQgPSBoZWFkbGluZT8udW5pdCA9PT0gJyUnID8gJ3BvaW50cycgOiBudWxsO1xuICBjb25zdCBtYWduaXR1ZGUgPSBNYXRoLmFicyhjaGFuZ2UuYWJzb2x1dGUpO1xuICBpZiAoY2hhbmdlLmRpcmVjdGlvbiA9PT0gJ2ZsYXQnKSByZXR1cm4gJ3VuY2hhbmdlZCBmcm9tIHRoZSBwcmV2aW91cyBwZXJpb2QnO1xuICBjb25zdCB3b3JkID0gY2hhbmdlLmRpcmVjdGlvbiA9PT0gJ3VwJyA/ICd1cCcgOiAnZG93bic7XG4gIGNvbnN0IHBjdCA9IGNoYW5nZS5wZXJjZW50ICE9PSBudWxsICYmIGNoYW5nZS5wZXJjZW50ICE9PSB1bmRlZmluZWRcbiAgICA/IGAgKCR7Y2hhbmdlLnBlcmNlbnQgPiAwID8gJysnIDogJyd9JHtjaGFuZ2UucGVyY2VudH0lKWBcbiAgICA6ICcnO1xuICByZXR1cm4gYCR7d29yZH0gJHttYWduaXR1ZGV9JHt1bml0ID8gYCAke3VuaXR9YCA6ICcnfSR7cGN0fSBmcm9tIHRoZSBwcmV2aW91cyBwZXJpb2RgO1xufVxuXG4vKipcbiAqIE9uZSBzZWN0aW9uIGFzIGEgdGFibGUgcm93LlxuICpcbiAqIEEgVEFCTEUsIG5vdCBhIGdyaWQgb2YgY2FyZHMsIGJlY2F1c2UgdGhhdCBpcyB3aGF0IG1ha2VzIHRoZSBQREYncyBzdHJ1Y3R1cmUgdHJlZVxuICogbmF2aWdhYmxlOiBhIHNjcmVlbiByZWFkZXIgYW5ub3VuY2VzIFwiQnVpbGQgc3VjY2VzcyByYXRlLCA5MSUsIGRvd24gMyBwb2ludHMgZnJvbSB0aGVcbiAqIHByZXZpb3VzIHBlcmlvZFwiIGZyb20gdGhlIHJvdydzIGFzc29jaWF0aW9uIHdpdGggaXRzIGhlYWRlcnMuIENhcmRzIHdvdWxkIHByaW50IHRoZVxuICogc2FtZSBpbmsgYW5kIGNhcnJ5IG5vbmUgb2YgdGhhdC5cbiAqL1xuZnVuY3Rpb24gc2VjdGlvblJvdyhzZWN0aW9uOiBDb21wb3NlZFNlY3Rpb24pOiBzdHJpbmcge1xuICBjb25zdCB0aXRsZSA9IGVzYyhzZWN0aW9uLnRpdGxlKTtcbiAgaWYgKHNlY3Rpb24uc3RhdGUgPT09ICdsb2NrZWQnKSB7XG4gICAgY29uc3QgZmVhdHVyZSA9IHNlY3Rpb24ucmVxdWlyZXNGZWF0dXJlID8gZXNjKHNlY3Rpb24ucmVxdWlyZXNGZWF0dXJlKSA6ICdhbiBhZGQtb24nO1xuICAgIHJldHVybiBgPHRyPjx0aCBzY29wZT1cInJvd1wiPiR7dGl0bGV9PC90aD5gXG4gICAgICArICc8dGQgY2xhc3M9XCJtdXRlZFwiPk5vdCBpbmNsdWRlZDwvdGQ+J1xuICAgICAgKyBgPHRkIGNsYXNzPVwibXV0ZWRcIj5Ob3Qgb24geW91ciBwbGFuIOKAlCBuZWVkcyAke2ZlYXR1cmV9LiBUaGUgcmVzdCBvZiB0aGlzIHJlcG9ydCBpcyB1bmFmZmVjdGVkLjwvdGQ+PC90cj5gO1xuICB9XG4gIGlmIChzZWN0aW9uLnN0YXRlID09PSAnZmFpbGVkJykge1xuICAgIHJldHVybiBgPHRyPjx0aCBzY29wZT1cInJvd1wiPiR7dGl0bGV9PC90aD5gXG4gICAgICArICc8dGQgY2xhc3M9XCJtdXRlZFwiPlVuYXZhaWxhYmxlPC90ZD4nXG4gICAgICArICc8dGQgY2xhc3M9XCJtdXRlZFwiPkNvdWxkIG5vdCBiZSBjb21wdXRlZCBmb3IgdGhpcyBwZXJpb2QuPC90ZD48L3RyPic7XG4gIH1cbiAgY29uc3QgeyBoZWFkbGluZSB9ID0gc2VjdGlvbjtcbiAgLy8gQSBzZWN0aW9uIHdpdGggbm8gc2luZ2xlIG51bWJlciBpcyBub3QgYW4gZXJyb3IgYW5kIG11c3Qgbm90IHJlYWQgbGlrZSBvbmU6IHNldmVyYWxcbiAgLy8gbGVnaXRpbWF0ZWx5IGhhdmUgbm9uZSAoYSBicmVha2Rvd24sIGEgbGlzdCBvZiBvZmZlbmRlcnMpLlxuICBjb25zdCB2YWx1ZSA9IGhlYWRsaW5lXG4gICAgPyBgJHtlc2MoaGVhZGxpbmUudmFsdWUpfSR7ZXNjKGhlYWRsaW5lLnVuaXQgPz8gJycpfWBcbiAgICA6ICfigJQnO1xuICBjb25zdCBsYWJlbCA9IGhlYWRsaW5lPy5sYWJlbCA/IGVzYyhoZWFkbGluZS5sYWJlbCkgOiAnTm8gc2luZ2xlIGhlYWRsaW5lIGZvciB0aGlzIHNlY3Rpb24nO1xuICBjb25zdCB0cmVuZCA9IHRyZW5kU2VudGVuY2Uoc2VjdGlvbik7XG4gIGNvbnN0IG5vdGUgPSB0cmVuZCA/IGAke2xhYmVsfSDCtyAke2VzYyh0cmVuZCl9YCA6IGxhYmVsO1xuICByZXR1cm4gYDx0cj48dGggc2NvcGU9XCJyb3dcIj4ke3RpdGxlfTwvdGg+PHRkIGNsYXNzPVwidmFsdWVcIj4ke3ZhbHVlfTwvdGQ+PHRkPiR7bm90ZX08L3RkPjwvdHI+YDtcbn1cblxuLyoqIFRoZSBkYXRhLXF1YWxpdHkgbm90ZXMsIHdoaWNoIGFyZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFwiMCBkZXBsb3lzXCIgYW5kIFwid2UgY2Fubm90IHNlZSB5b3VyIGRlcGxveXNcIi4gKi9cbmZ1bmN0aW9uIG5vdGVzTGlzdChub3RlczogcmVhZG9ubHkgRGF0YVF1YWxpdHlOb3RlW10pOiBzdHJpbmcge1xuICBpZiAobm90ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIGNvbnN0IGl0ZW1zID0gbm90ZXMubWFwKChuKSA9PiBgPGxpPiR7ZXNjKG4ubWVzc2FnZSl9PC9saT5gKS5qb2luKCcnKTtcbiAgcmV0dXJuICc8c2VjdGlvbiBjbGFzcz1cImJsb2NrXCI+PGgyPldoYXQgdG8ga25vdyBhYm91dCB0aGVzZSBudW1iZXJzPC9oMj4nXG4gICAgKyBgPHVsIGNsYXNzPVwibm90ZXNcIj4ke2l0ZW1zfTwvdWw+PC9zZWN0aW9uPmA7XG59XG5cbi8qKlxuICogUGFyYWdyYXBocyBmcm9tIGZyZWUgdGV4dC5cbiAqXG4gKiBCbGFuay1saW5lIHNlcGFyYXRlZCwgYW5kIE5PVCBhIHNpbmdsZSBgPHA+YCB3aXRoIG5ld2xpbmVzOiBhIGxlYWQgd2hvIHdyb3RlIHRocmVlXG4gKiBwYXJhZ3JhcGhzIGdldHMgdGhyZWUsIGFuZCB0aGUgUERGJ3Mgc3RydWN0dXJlIHRyZWUgZ2V0cyB0aHJlZSwgaW5zdGVhZCBvZiBvbmUgd2FsbFxuICogdGhhdCBhIHNjcmVlbiByZWFkZXIgcmVhZHMgYXMgYSBzaW5nbGUgdXR0ZXJhbmNlLlxuICovXG5mdW5jdGlvbiBwYXJhZ3JhcGhzKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0XG4gICAgLnNwbGl0KC9cXG57Mix9LylcbiAgICAubWFwKChwKSA9PiBwLnRyaW0oKSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgLm1hcCgocCkgPT4gYDxwPiR7ZXNjKHApLnJlcGxhY2UoL1xcbi9nLCAnPGJyIC8+Jyl9PC9wPmApXG4gICAgLmpvaW4oJycpO1xufVxuXG4vKipcbiAqIFRoZSBwcmludCBzdHlsZXNoZWV0LlxuICpcbiAqIERlbGliZXJhdGVseSBzbWFsbCBhbmQgZGVsaWJlcmF0ZWx5IG5vdCB0aGUgcHJvZHVjdCdzIGRlc2lnbiBzeXN0ZW06IHRoaXMgZG9jdW1lbnQgaXNcbiAqIHByaW50ZWQgb25jZSwgdG8gcGFwZXIgc2l6ZSwgYnkgb25lIGVuZ2luZS4gSW1wb3J0aW5nIHRoZSBhcHAncyBDU1Mgd291bGQgZHJhZyBpbiBhIHdlYlxuICogZm9udCAoYSBuZXR3b3JrIGZldGNoIHRoZSByZW5kZXJlciBmb3JiaWRzKSBhbmQgYSBkYXJrLW1vZGUgYmxvY2sgdGhhdCB3b3VsZCByZW5kZXIgYVxuICogbWFuYWdlcidzIFBERiBibGFjay5cbiAqXG4gKiBgQHBhZ2VgIG93bnMgdGhlIG1hcmdpbnMgc28gQ2hyb21pdW0ncyBvd24gYG1hcmdpbmAgb3B0aW9uIGRvZXMgbm90IGhhdmUgdG8sIHdoaWNoIGtlZXBzXG4gKiB0aGUgcGFnZSBnZW9tZXRyeSBpbiB0aGUgZG9jdW1lbnQgcmF0aGVyIHRoYW4gc3BsaXQgYWNyb3NzIHR3byBwbGFjZXMuXG4gKi9cbmNvbnN0IFNUWUxFID0gYFxuOnJvb3QgeyBjb2xvci1zY2hlbWU6IG9ubHkgbGlnaHQ7IH1cbiogeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG5AcGFnZSB7IHNpemU6IEE0OyBtYXJnaW46IDE4bW0gMTZtbSAyMG1tOyB9XG5ib2R5IHtcbiAgbWFyZ2luOiAwOyBiYWNrZ3JvdW5kOiAjZmZmZmZmOyBjb2xvcjogIzExMTgyNztcbiAgZm9udDogMTFwdC8xLjQ1IC1hcHBsZS1zeXN0ZW0sIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xufVxuaDEgeyBmb250LXNpemU6IDIwcHQ7IG1hcmdpbjogMCAwIDJtbTsgfVxuaDIgeyBmb250LXNpemU6IDEycHQ7IG1hcmdpbjogMCAwIDJtbTsgfVxucCB7IG1hcmdpbjogMCAwIDIuNW1tOyB9XG4uc3ViIHsgY29sb3I6ICM0YjU1NjM7IGZvbnQtc2l6ZTogOS41cHQ7IG1hcmdpbjogMCAwIDZtbTsgfVxuLmJsb2NrIHsgbWFyZ2luOiAwIDAgN21tOyBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7IH1cbnRhYmxlIHsgd2lkdGg6IDEwMCU7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IGZvbnQtc2l6ZTogMTBwdDsgfVxuY2FwdGlvbiB7IHRleHQtYWxpZ246IGxlZnQ7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTJwdDsgcGFkZGluZzogMCAwIDJtbTsgfVxudGgsIHRkIHsgdGV4dC1hbGlnbjogbGVmdDsgdmVydGljYWwtYWxpZ246IHRvcDsgcGFkZGluZzogMm1tIDJtbSAybW0gMDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU3ZWI7IH1cbnRoZWFkIHRoIHsgYm9yZGVyLWJvdHRvbTogMS41cHggc29saWQgIzljYTNhZjsgZm9udC1zaXplOiA5cHQ7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOiAuMDRlbTsgfVxudGJvZHkgdGggeyBmb250LXdlaWdodDogNjAwOyB3aWR0aDogNDIlOyB9XG50ZC52YWx1ZSB7IGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7IGZvbnQtd2VpZ2h0OiA2MDA7IHdoaXRlLXNwYWNlOiBub3dyYXA7IHdpZHRoOiAxOCU7IH1cbi5tdXRlZCB7IGNvbG9yOiAjNGI1NTYzOyB9XG4ubm90ZXMgeyBtYXJnaW46IDA7IHBhZGRpbmctbGVmdDogNW1tOyB9XG4ubm90ZXMgbGkgeyBtYXJnaW46IDAgMCAxLjVtbTsgfVxuLmZvb3RlciB7IG1hcmdpbi10b3A6IDhtbTsgcGFkZGluZy10b3A6IDNtbTsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNWU3ZWI7IGNvbG9yOiAjNGI1NTYzOyBmb250LXNpemU6IDguNXB0OyB9XG4uZm9vdGVyIHAgeyBtYXJnaW46IDAgMCAxbW07IH1cbnRyIHsgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOyB9XG5gO1xuXG4vKipcbiAqIFJlbmRlciBvbmUgcmVwb3J0IGFzIGEgY29tcGxldGUgSFRNTCBkb2N1bWVudC5cbiAqXG4gKiBPUkRFUiBJUyBNRUFOSU5HLCBhbmQgaXQgaXMgdGhlIHNhbWUgb3JkZXIgdGhlIHNoYXJlZCB3ZWIgcGFnZSB1c2VzOiB0aGUgbGVhZCdzIHdvcmRzLFxuICogdGhlbiB0aGUgZXhlY3V0aXZlIHN1bW1hcnksIHRoZW4gdGhlIG51bWJlcnMuIEEgcmVhZGVyIHdobyBtZWV0cyB0aGUgdGFibGUgZmlyc3QgaGFzXG4gKiBhbHJlYWR5IGZvcm1lZCBhIHZpZXcgb2YgdGhlIGRpcCBieSB0aGUgdGltZSB0aGV5IHJlYWNoIHRoZSBzZW50ZW5jZSBleHBsYWluaW5nIGl0LCBzb1xuICogdGhlIGNvbnRleHQgdGhlIGRhdGEgY2Fubm90IHN1cHBseSBoYXMgdG8gY29tZSBmaXJzdC4gYGExMXktc3Rha2Vob2xkZXItcmVwb3J0cy50ZXN0LnRzeGBcbiAqIHBpbnMgdGhhdCBvcmRlcmluZyBmb3IgdGhlIHBhZ2U7IGByZXBvcnQtaHRtbC50ZXN0LnRzYCBwaW5zIGl0IGhlcmUuXG4gKlxuICogQSBOVUxMIFNOQVBTSE9UIFNUSUxMIFJFTkRFUlMuIEEgcnVuIGNhbiBiZSByZWFkIGJlZm9yZSBvciB3aXRob3V0IGEgc25hcHNob3QgKGEgZmFpbGVkXG4gKiBjb21wb3NlLCBhIGRyYWZ0KSwgYW5kIGFuc3dlcmluZyBhbiBlbXB0eSBmaWxlIHdvdWxkIGxvb2sgbGlrZSBhIGJyb2tlbiBkb3dubG9hZC4gVGhlXG4gKiBkb2N1bWVudCBzYXlzIHRoZXJlIGlzIG5vdGhpbmcgdG8gc2hvdyBpbnN0ZWFkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyUmVwb3J0SHRtbChpbnB1dDogUmVwb3J0SHRtbElucHV0KTogc3RyaW5nIHtcbiAgY29uc3Qgc25hcHNob3QgPSBpbnB1dC5zbmFwc2hvdDtcbiAgY29uc3Qgc2VjdGlvbnMgPSBzbmFwc2hvdD8uc2VjdGlvbnMgPz8gW107XG4gIGNvbnN0IGxhbmcgPSAnZW4nO1xuXG4gIGNvbnN0IGhlYWQgPSBbXG4gICAgJzwhRE9DVFlQRSBodG1sPicsXG4gICAgYDxodG1sIGxhbmc9XCIke2xhbmd9XCI+PGhlYWQ+PG1ldGEgY2hhcnNldD1cInV0Zi04XCIgLz5gLFxuICAgIC8vIE5vIGV4dGVybmFsIGFueXRoaW5nOiB0aGUgb25lIGRpcmVjdGl2ZSB0aGF0IG1ha2VzIHRoZSBwcm9taXNlIGluIHRoZSBmaWxlIGhlYWRlclxuICAgIC8vIGVuZm9yY2VhYmxlIGJ5IHRoZSBlbmdpbmUgcmF0aGVyIHRoYW4gYnkgcmV2aWV3LlxuICAgICc8bWV0YSBodHRwLWVxdWl2PVwiQ29udGVudC1TZWN1cml0eS1Qb2xpY3lcIiBjb250ZW50PVwiZGVmYXVsdC1zcmMgXFwnbm9uZVxcJzsgc3R5bGUtc3JjIFxcJ3Vuc2FmZS1pbmxpbmVcXCdcIiAvPicsXG4gICAgYDx0aXRsZT4ke2VzYyhpbnB1dC50aXRsZSl9IOKAlCAke2VzYyhpbnB1dC5wZXJpb2RMYWJlbCl9PC90aXRsZT5gLFxuICAgIGA8c3R5bGU+JHtTVFlMRX08L3N0eWxlPmAsXG4gICAgJzwvaGVhZD48Ym9keT4nLFxuICBdLmpvaW4oJycpO1xuXG4gIGNvbnN0IHZlcnNpb24gPSBpbnB1dC52ZXJzaW9uID4gMSA/IGAgwrcgcmV2aXNpb24gJHtlc2MoaW5wdXQudmVyc2lvbil9YCA6ICcnO1xuICBjb25zdCBwdWJsaXNoZWQgPSBpbnB1dC5wdWJsaXNoZWRBdCA/IGAgwrcgcHVibGlzaGVkICR7ZXNjKGRheShpbnB1dC5wdWJsaXNoZWRBdCkpfWAgOiAnJztcbiAgY29uc3QgaGVhZGVyID0gYDxoMT4ke2VzYyhpbnB1dC50aXRsZSl9PC9oMT5gXG4gICAgKyBgPHAgY2xhc3M9XCJzdWJcIj4ke2VzYyhpbnB1dC5wZXJpb2RMYWJlbCl9IMK3ICR7ZXNjKGRheShpbnB1dC5wZXJpb2RTdGFydCkpfSB0byBgXG4gICAgKyBgJHtlc2MoZGF5KGlucHV0LnBlcmlvZEVuZCkpfSR7dmVyc2lvbn0ke3B1Ymxpc2hlZH08L3A+YDtcblxuICBjb25zdCBzdW1tYXJ5ID0gaW5wdXQuZXhlY3V0aXZlU3VtbWFyeVxuICAgID8gYDxzZWN0aW9uIGNsYXNzPVwiYmxvY2tcIj48aDI+RXhlY3V0aXZlIHN1bW1hcnk8L2gyPiR7cGFyYWdyYXBocyhpbnB1dC5leGVjdXRpdmVTdW1tYXJ5KX08L3NlY3Rpb24+YFxuICAgIDogJyc7XG5cbiAgY29uc3Qgbm90ZXMgPSBpbnB1dC5sZWFkTm90ZXNcbiAgICA/IGA8c2VjdGlvbiBjbGFzcz1cImJsb2NrXCI+PGgyPk5vdGVzIGZyb20gdGhlIHRlYW08L2gyPiR7cGFyYWdyYXBocyhpbnB1dC5sZWFkTm90ZXMpfTwvc2VjdGlvbj5gXG4gICAgOiAnJztcblxuICBjb25zdCBib2R5ID0gc2VjdGlvbnMubGVuZ3RoID4gMFxuICAgID8gJzxzZWN0aW9uIGNsYXNzPVwiYmxvY2tcIj48dGFibGU+J1xuICAgICAgKyBgPGNhcHRpb24+RGVsaXZlcnkgbWVhc3VyZXMgZm9yICR7ZXNjKGlucHV0LnBlcmlvZExhYmVsKX08L2NhcHRpb24+YFxuICAgICAgKyAnPHRoZWFkPjx0cj48dGggc2NvcGU9XCJjb2xcIj5NZWFzdXJlPC90aD48dGggc2NvcGU9XCJjb2xcIj5WYWx1ZTwvdGg+PHRoIHNjb3BlPVwiY29sXCI+RGV0YWlsPC90aD48L3RyPjwvdGhlYWQ+J1xuICAgICAgKyBgPHRib2R5PiR7c2VjdGlvbnMubWFwKHNlY3Rpb25Sb3cpLmpvaW4oJycpfTwvdGJvZHk+PC90YWJsZT48L3NlY3Rpb24+YFxuICAgIDogJzxzZWN0aW9uIGNsYXNzPVwiYmxvY2tcIj48aDI+Tm8gbWVhc3VyZXM8L2gyPidcbiAgICAgICsgJzxwIGNsYXNzPVwibXV0ZWRcIj5UaGlzIHJlcG9ydCBoYXMgbm8gY29tcHV0ZWQgc2VjdGlvbnMuIE5vdGhpbmcgd2FzIG1lYXN1cmVkIGZvciB0aGlzIHBlcmlvZC48L3A+PC9zZWN0aW9uPic7XG5cbiAgY29uc3QgZm9vdGVyTGluZXM6IHN0cmluZ1tdID0gW107XG4gIGlmIChpbnB1dC5uYW1lc1JlZGFjdGVkKSB7XG4gICAgZm9vdGVyTGluZXMucHVzaCgnUHJvamVjdCBhbmQgcGlwZWxpbmUgbmFtZXMgaGF2ZSBiZWVuIHJlcGxhY2VkIGluIHRoaXMgY29weS4nKTtcbiAgfVxuICBpZiAoc25hcHNob3Q/Lm1ldGhvZG9sb2d5KSBmb290ZXJMaW5lcy5wdXNoKHNuYXBzaG90Lm1ldGhvZG9sb2d5KTtcbiAgaWYgKHNuYXBzaG90Py5nZW5lcmF0ZWRBdCkge1xuICAgIGZvb3RlckxpbmVzLnB1c2goYEZpZ3VyZXMgY29tcHV0ZWQgJHtkYXkoc25hcHNob3QuZ2VuZXJhdGVkQXQpfSBhbmQgZnJvemVuIGZvciB0aGUgcGVyaW9kIHNob3duLmApO1xuICB9XG4gIGlmIChpbnB1dC5leHBpcmVzQXQpIHtcbiAgICBmb290ZXJMaW5lcy5wdXNoKGBUaGUgbGluayB0aGlzIGNvcHkgY2FtZSBmcm9tIGV4cGlyZXMgb24gJHtkYXkoaW5wdXQuZXhwaXJlc0F0KX0uYCk7XG4gIH1cbiAgZm9vdGVyTGluZXMucHVzaChgVGhpcyBmaWxlIHdhcyBjcmVhdGVkICR7ZGF5KGlucHV0LnJlbmRlcmVkQXQpfS5gKTtcbiAgY29uc3QgZm9vdGVyID0gYDxmb290ZXIgY2xhc3M9XCJmb290ZXJcIj4ke2Zvb3RlckxpbmVzLm1hcCgobCkgPT4gYDxwPiR7ZXNjKGwpfTwvcD5gKS5qb2luKCcnKX08L2Zvb3Rlcj5gO1xuXG4gIHJldHVybiBgJHtoZWFkfSR7aGVhZGVyfSR7bm90ZXN9JHtzdW1tYXJ5fSR7Ym9keX0ke25vdGVzTGlzdChzbmFwc2hvdD8ubm90ZXMgPz8gW10pfSR7Zm9vdGVyfTwvYm9keT48L2h0bWw+YDtcbn1cblxuLyoqXG4gKiBUaGUgZG93bmxvYWQncyBmaWxlIG5hbWUuXG4gKlxuICogQnVpbHQgZnJvbSB0aGUgcGVyaW9kIGFuZCB0aGUgdmVyc2lvbiByYXRoZXIgdGhhbiB0aGUgcnVuIGlkLCBiZWNhdXNlIHRoZSBwZXJzb24gc2F2aW5nXG4gKiBpdCBpcyBmaWxpbmcgaXQgbmV4dCB0byBsYXN0IG1vbnRoJ3MsIGFuZCBgcmVwb3J0LTIwMjYtVzM4LXYyLnBkZmAgc29ydHMgYW5kIHJlYWRzIHdoaWxlXG4gKiBhIHV1aWQgZG9lcyBub3QuIFNhbml0aXppbmcgaXMgdGhlIFJPVVRFJ3Mgam9iIChgYXR0YWNobWVudERpc3Bvc2l0aW9uYCkg4oCUIHRoaXMgb25seVxuICogY2hvb3NlcyB0aGUgd29yZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRGaWxlTmFtZSh0aXRsZTogc3RyaW5nLCBwZXJpb2RMYWJlbDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBiYXNlID0gYCR7dGl0bGV9ICR7cGVyaW9kTGFiZWx9JHt2ZXJzaW9uID4gMSA/IGAgdiR7dmVyc2lvbn1gIDogJyd9YDtcbiAgcmV0dXJuIGAke2Jhc2UudHJpbSgpfS5wZGZgO1xufVxuIl19
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWh0bWwuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvcmVwb3J0aW5nL3N0YWtlaG9sZGVyL3JlcG9ydC1odG1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFrRXRDLDBFQUEwRTtBQUMxRSxTQUFTLEdBQUcsQ0FBQyxLQUFjO0lBQ3pCLE9BQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7U0FDdkIsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7U0FDdEIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7U0FDckIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7U0FDckIsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7U0FDdkIsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQsa0VBQWtFO0FBQ2xFLFNBQVMsR0FBRyxDQUFDLEdBQThCO0lBQ3pDLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDckIsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQzFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLE9BQXdCO0lBQ3BELE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3JDLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxTQUFTO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDM0QsTUFB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QUFHLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0csQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWEsRUFBRSxXQUFtQixFQUFFLE9BQWU7SUFDaEYsTUFBTSxJQUFJLEdBQUcsR0FBRyxLQUFLLElBQUksV0FBVyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzNFLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGhlIHNuYXBzaG90LCBhcyBvbmUgc2VsZi1jb250YWluZWQgSFRNTCBkb2N1bWVudCDigJQgdGhlIGlucHV0IHRoZSBQREYgcmVuZGVyZXIgcHJpbnRzLlxuICpcbiAqIFdIWSBIVE1MIEFORCBOT1QgQSBQREYgTElCUkFSWS4gQSBsYXlvdXQgZW5naW5lIHdlIHdvdWxkIGhhdmUgdG8gdGVhY2ggYWJvdXQgcGFnZVxuICogYnJlYWtzLCB0YWJsZSB3aWR0aHMgYW5kIGZvbnQgbWV0cmljcyBpcyBhIHNlY29uZCByZW5kZXJlciB0byBtYWludGFpbjsgQ2hyb21pdW1cbiAqIGFscmVhZHkgaGFzIG9uZS4gU28gdGhlIHBpcGVsaW5lIGlzIHNuYXBzaG90IC0+IEhUTUwgLT4gYFBhZ2UucHJpbnRUb1BERmAsIGFuZCB0aGlzXG4gKiBmaWxlIG93bnMgdGhlIGZpcnN0IGFycm93LiBJdCBpcyBwdXJlOiBhIHN0cmluZyBpbiwgYSBzdHJpbmcgb3V0LCBubyBJL08sIG5vIGNsb2NrLCBub1xuICogZGF0YWJhc2UuIFRoYXQgaXMgd2hhdCBtYWtlcyB0aGUgUERGJ3MgY29udGVudCB0ZXN0YWJsZSB3aXRob3V0IGEgYnJvd3Nlci5cbiAqXG4gKiBTRUxGLUNPTlRBSU5FRCwgQU5EIFRIQVQgSVMgQSBTRUNVUklUWSBQUk9QRVJUWSwgbm90IHRpZGluZXNzLiBObyA8c2NyaXB0Piwgbm9cbiAqIHN0eWxlc2hlZXQgbGluaywgbm8gd2ViIGZvbnQsIG5vIGltYWdlIFVSTCDigJQgZXZlcnl0aGluZyBpcyBpbmxpbmUuIFRoZSByZW5kZXJlciBsb2Fkc1xuICogdGhpcyB0aHJvdWdoIGBzZXRDb250ZW50YCB3aXRoIHRoZSBwYWdlIG9mZmxpbmUsIHNvIGEgZG9jdW1lbnQgdGhhdCByZWZlcmVuY2VkIGFueXRoaW5nXG4gKiBleHRlcm5hbCB3b3VsZCBlaXRoZXIgaGFuZyBvciBxdWlldGx5IHJlbmRlciB3aXRob3V0IGl0LiBTdGF0ZWQgaGVyZSBiZWNhdXNlIHRoZVxuICogdGVtcHRhdGlvbiB0byBhZGQgYSBsb2dvIGJ5IFVSTCB3aWxsIGNvbWUgdXAsIGFuZCBpdCB3b3VsZCBiZSB0aGUgb25lIGNoYW5nZSB0aGF0IGdpdmVzXG4gKiB0aGUgcmVuZGVyZXIgYSByZWFzb24gdG8gdGFsayB0byB0aGUgbmV0d29yay5cbiAqXG4gKiBFVkVSWSBJTlRFUlBPTEFUSU9OIElTIEVTQ0FQRUQuIFRoZSBzbmFwc2hvdCBjYXJyaWVzIG9yZy1jb250cm9sbGVkIHRleHQg4oCUIHBpcGVsaW5lXG4gKiBuYW1lcywgYSBsZWFkJ3Mgbm90ZXMsIGEgc2VjdGlvbiB0aXRsZSDigJQgaW50byBtYXJrdXAgdGhhdCBhIGJyb3dzZXIgdGhlbiBwYXJzZXMuIFRoYXRcbiAqIGlzIHRoZSBzYW1lIGJvdW5kYXJ5IGFzIGFueSBYU1Mgc2luaywgYW5kIGl0IGRvZXMgbm90IHN0b3AgbWF0dGVyaW5nIGJlY2F1c2UgdGhlIG91dHB1dFxuICogaXMgYSBQREY6IHVuZXNjYXBlZCBub3RlcyBjb3VsZCBjbG9zZSBhIHRhZyBhbmQgcmV3cml0ZSB0aGUgcmVzdCBvZiB0aGUgcmVwb3J0LCB3aGljaCBpc1xuICogYSBkb2N1bWVudC1mb3JnZXJ5IGJ1ZyBpbiBhIGRvY3VtZW50IHBlb3BsZSBtYWtlIGRlY2lzaW9ucyBmcm9tLiBgZXNjKClgIGlzIGFwcGxpZWQgYXRcbiAqIGV2ZXJ5IHNpbmdsZSBpbnNlcnRpb24gcG9pbnQgYW5kIHRoZXJlIGlzIG5vIFwidHJ1c3RlZFwiIGNhbGxlci5cbiAqXG4gKiBOTyBDT0xPVVItT05MWSBNRUFOSU5HLCBhbmQgbm8gYmFyZSBnbHlwaCBjYXJyeWluZyBpbmZvcm1hdGlvbiAoV0NBRyAxLjQuMSAvIDEuMS4xKS4gQVxuICogbG9ja2VkIHBhbmVsIHNheXMgXCJOb3Qgb24geW91ciBwbGFuXCIgaW4gd29yZHM7IGEgdHJlbmQgc2F5cyBcImRvd24gMyBwb2ludHNcIiBpbiB3b3Jkc1xuICogcmF0aGVyIHRoYW4gbGVhbmluZyBvbiBhbiBhcnJvdy4gVGhlcmUgYXJlIG5vIGNoYXJ0cyBpbiBhIHNuYXBzaG90IHRvZGF5IOKAlCBldmVyeSBzZWN0aW9uXG4gKiByZW5kZXJzIGFzIGEgbnVtYmVyLCBhIHdvcmQgYW5kIGEgdGFibGUgcm93IOKAlCBzbyB0aGUgcGxhbidzIFwiYWx0IHRleHQgb24gY2hhcnRzXCIgaGFzXG4gKiBub3RoaW5nIHRvIGF0dGFjaCB0byB5ZXQuIFRoZSBydWxlIHRoYXQgcmVwbGFjZXMgaXQgaXMgc3RyaWN0ZXIgYW5kIHN1cnZpdmVzIGEgY2hhcnRcbiAqIGJlaW5nIGFkZGVkIGxhdGVyOiBpZiBhIHJlYWRlciB3aXRoIG5vIGNvbG91ciB2aXNpb24sIG5vIGltYWdlcyBhbmQgYSBzY3JlZW4gcmVhZGVyXG4gKiBjYW5ub3QgZ2V0IGEgZmFjdCBvdXQgb2YgdGhpcyBkb2N1bWVudCwgdGhlIGZhY3QgaXMgbm90IGluIGl0LlxuICovXG5cbmltcG9ydCB0eXBlIHsgQ29tcG9zZWRTZWN0aW9uLCBEYXRhUXVhbGl0eU5vdGUsIFJlcG9ydFNuYXBzaG90IH0gZnJvbSAnLi9jb21wb3NlLmpzJztcblxuLyoqIFdoYXQgdGhlIHJlbmRlcmVyIG5lZWRzIHRvIHByb2R1Y2Ugb25lIHJlcG9ydCBkb2N1bWVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0SHRtbElucHV0IHtcbiAgLyoqIFRoZSBkZWZpbml0aW9uJ3MgbmFtZS4gSGVhZHMgdGhlIGRvY3VtZW50LiAqL1xuICB0aXRsZTogc3RyaW5nO1xuICBwZXJpb2RMYWJlbDogc3RyaW5nO1xuICBwZXJpb2RTdGFydDogc3RyaW5nO1xuICBwZXJpb2RFbmQ6IHN0cmluZztcbiAgLyoqIFJlZ2VuZXJhdGlvbnMgYXJlIG5vcm1hbDsgYSByZWFkZXIgbXVzdCBiZSBhYmxlIHRvIHRlbGwgd2hpY2ggb25lIHRoZXkgaG9sZC4gKi9cbiAgdmVyc2lvbjogbnVtYmVyO1xuICBwdWJsaXNoZWRBdD86IHN0cmluZyB8IG51bGw7XG4gIC8qKiBUaGUgbGVhZCdzIG93biB3b3Jkcy4gUmVuZGVyZWQgQUJPVkUgdGhlIG51bWJlcnMg4oCUIHNlZSB0aGUgb3JkZXJpbmcgbm90ZSBiZWxvdy4gKi9cbiAgbGVhZE5vdGVzPzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqXG4gICAqIFRoZSBBSS1kcmFmdGVkIGV4ZWN1dGl2ZSBzdW1tYXJ5LCB3aGVuIHRoZSBydW4gaGFzIG9uZSBhbmQgdGhlIGNhbGxlciBpcyBhbGxvd2VkIHRvXG4gICAqIHNlZSBpdC4gTmV2ZXIgZmV0Y2hlZCBoZXJlOiBhIGNhbGxlciB0aGF0IHNob3VsZCBub3QgZGlzY2xvc2UgaXQgc2ltcGx5IG9taXRzIGl0LlxuICAgKi9cbiAgZXhlY3V0aXZlU3VtbWFyeT86IHN0cmluZyB8IG51bGw7XG4gIHNuYXBzaG90OiBSZXBvcnRTbmFwc2hvdCB8IG51bGw7XG4gIC8qKiBUcnVlIHdoZW4gcGlwZWxpbmUvcHJvamVjdCBuYW1lcyB3ZXJlIHJlcGxhY2VkIOKAlCBzYWlkIGluIHRoZSBkb2N1bWVudCwgbm90IGltcGxpZWQuICovXG4gIG5hbWVzUmVkYWN0ZWQ/OiBib29sZWFuO1xuICAvKiogU2hvd24gaW4gdGhlIGZvb3RlciBvZiBhIHNoYXJlZCBjb3B5LCBzbyBhIGJvb2ttYXJrZWQgbGluaydzIGRlYXRoIGlzIG5vdCBhIHN1cnByaXNlLiAqL1xuICBleHBpcmVzQXQ/OiBzdHJpbmcgfCBudWxsO1xuICAvKipcbiAgICogU3RhbXBlZCBpbiB0aGUgZm9vdGVyIGFzIHRoZSBtb21lbnQgdGhlIEZJTEUgd2FzIG1hZGUsIGRpc3RpbmN0IGZyb20gdGhlIHNuYXBzaG90J3NcbiAgICogb3duIGBnZW5lcmF0ZWRBdGAuIFR3byBkYXRlcyBiZWNhdXNlIHRoZXkgYW5zd2VyIGRpZmZlcmVudCBxdWVzdGlvbnM6IFwiaXMgdGhpcyByZXBvcnRcbiAgICogY3VycmVudD9cIiBhbmQgXCJpcyB0aGlzIHRoZSBjb3B5IEkgd2FzIHNlbnQ/XCIuXG4gICAqL1xuICByZW5kZXJlZEF0OiBzdHJpbmc7XG59XG5cbi8qKiBIVE1MLWVzY2FwZS4gQXBwbGllZCBhdCBldmVyeSBpbnNlcnRpb24gcG9pbnQ7IHNlZSB0aGUgZmlsZSBoZWFkZXIuICovXG5mdW5jdGlvbiBlc2ModmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICByZXR1cm4gU3RyaW5nKHZhbHVlID8/ICcnKVxuICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKVxuICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7JylcbiAgICAucmVwbGFjZSgvXCIvZywgJyZxdW90OycpXG4gICAgLnJlcGxhY2UoLycvZywgJyYjMzk7Jyk7XG59XG5cbi8qKiBBIGRhdGUgYXMgYSBwbGFpbiBjYWxlbmRhciBkYXksIGluIFVUQywgb3IgYOKAlGAgd2hlbiBhYnNlbnQuICovXG5mdW5jdGlvbiBkYXkoaXNvOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgaWYgKCFpc28pIHJldHVybiAn4oCUJztcbiAgY29uc3QgZCA9IG5ldyBEYXRlKGlzbyk7XG4gIGlmIChOdW1iZXIuaXNOYU4oZC5nZXRUaW1lKCkpKSByZXR1cm4gJ+KAlCc7XG4gIHJldHVybiBkLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgMTApO1xufVxuXG4vKipcbiAqIFRoZSB0cmVuZCwgSU4gV09SRFMuXG4gKlxuICogXCJkb3duIDMgcG9pbnRzXCIgcmF0aGVyIHRoYW4gYSByZWQgYXJyb3csIGJlY2F1c2UgdGhlIGFycm93IGlzIHRoZSB3aG9sZSBmYWN0IGZvciBhXG4gKiBzZWN0aW9uIHdob3NlIGhlYWRsaW5lIGJhcmVseSBtb3ZlZCwgYW5kIGFuIGFycm93IGlzIGludmlzaWJsZSB0byBhIHNjcmVlbiByZWFkZXIgYW5kXG4gKiBhbWJpZ3VvdXMgaW4gZ3JleXNjYWxlLiBgdW5rbm93bmAgcmVuZGVycyBub3RoaW5nIGF0IGFsbCByYXRoZXIgdGhhbiBcImZsYXRcIiDigJQgYSBzZWN0aW9uXG4gKiB3aXRoIG5vIGNvbXBhcmFibGUgcHJldmlvdXMgcGVyaW9kIGhhcyBub3QgaGVsZCBzdGVhZHksIHdlIGp1c3QgY2Fubm90IHNheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyZW5kU2VudGVuY2Uoc2VjdGlvbjogQ29tcG9zZWRTZWN0aW9uKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHsgY2hhbmdlLCBoZWFkbGluZSB9ID0gc2VjdGlvbjtcbiAgaWYgKCFjaGFuZ2UgfHwgY2hhbmdlLmRpcmVjdGlvbiA9PT0gJ3Vua25vd24nKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgdW5pdCA9IGhlYWRsaW5lPy51bml0ID09PSAnJScgPyAncG9pbnRzJyA6IG51bGw7XG4gIGNvbnN0IG1hZ25pdHVkZSA9IE1hdGguYWJzKGNoYW5nZS5hYnNvbHV0ZSk7XG4gIGlmIChjaGFuZ2UuZGlyZWN0aW9uID09PSAnZmxhdCcpIHJldHVybiAndW5jaGFuZ2VkIGZyb20gdGhlIHByZXZpb3VzIHBlcmlvZCc7XG4gIGNvbnN0IHdvcmQgPSBjaGFuZ2UuZGlyZWN0aW9uID09PSAndXAnID8gJ3VwJyA6ICdkb3duJztcbiAgY29uc3QgcGN0ID0gY2hhbmdlLnBlcmNlbnQgIT09IG51bGwgJiYgY2hhbmdlLnBlcmNlbnQgIT09IHVuZGVmaW5lZFxuICAgID8gYCAoJHtjaGFuZ2UucGVyY2VudCA+IDAgPyAnKycgOiAnJ30ke2NoYW5nZS5wZXJjZW50fSUpYFxuICAgIDogJyc7XG4gIHJldHVybiBgJHt3b3JkfSAke21hZ25pdHVkZX0ke3VuaXQgPyBgICR7dW5pdH1gIDogJyd9JHtwY3R9IGZyb20gdGhlIHByZXZpb3VzIHBlcmlvZGA7XG59XG5cbi8qKlxuICogT25lIHNlY3Rpb24gYXMgYSB0YWJsZSByb3cuXG4gKlxuICogQSBUQUJMRSwgbm90IGEgZ3JpZCBvZiBjYXJkcywgYmVjYXVzZSB0aGF0IGlzIHdoYXQgbWFrZXMgdGhlIFBERidzIHN0cnVjdHVyZSB0cmVlXG4gKiBuYXZpZ2FibGU6IGEgc2NyZWVuIHJlYWRlciBhbm5vdW5jZXMgXCJCdWlsZCBzdWNjZXNzIHJhdGUsIDkxJSwgZG93biAzIHBvaW50cyBmcm9tIHRoZVxuICogcHJldmlvdXMgcGVyaW9kXCIgZnJvbSB0aGUgcm93J3MgYXNzb2NpYXRpb24gd2l0aCBpdHMgaGVhZGVycy4gQ2FyZHMgd291bGQgcHJpbnQgdGhlXG4gKiBzYW1lIGluayBhbmQgY2Fycnkgbm9uZSBvZiB0aGF0LlxuICovXG5mdW5jdGlvbiBzZWN0aW9uUm93KHNlY3Rpb246IENvbXBvc2VkU2VjdGlvbik6IHN0cmluZyB7XG4gIGNvbnN0IHRpdGxlID0gZXNjKHNlY3Rpb24udGl0bGUpO1xuICBpZiAoc2VjdGlvbi5zdGF0ZSA9PT0gJ2xvY2tlZCcpIHtcbiAgICBjb25zdCBmZWF0dXJlID0gc2VjdGlvbi5yZXF1aXJlc0ZlYXR1cmUgPyBlc2Moc2VjdGlvbi5yZXF1aXJlc0ZlYXR1cmUpIDogJ2FuIGFkZC1vbic7XG4gICAgcmV0dXJuIGA8dHI+PHRoIHNjb3BlPVwicm93XCI+JHt0aXRsZX08L3RoPmBcbiAgICAgICsgJzx0ZCBjbGFzcz1cIm11dGVkXCI+Tm90IGluY2x1ZGVkPC90ZD4nXG4gICAgICArIGA8dGQgY2xhc3M9XCJtdXRlZFwiPk5vdCBvbiB5b3VyIHBsYW4g4oCUIG5lZWRzICR7ZmVhdHVyZX0uIFRoZSByZXN0IG9mIHRoaXMgcmVwb3J0IGlzIHVuYWZmZWN0ZWQuPC90ZD48L3RyPmA7XG4gIH1cbiAgaWYgKHNlY3Rpb24uc3RhdGUgPT09ICdmYWlsZWQnKSB7XG4gICAgcmV0dXJuIGA8dHI+PHRoIHNjb3BlPVwicm93XCI+JHt0aXRsZX08L3RoPmBcbiAgICAgICsgJzx0ZCBjbGFzcz1cIm11dGVkXCI+VW5hdmFpbGFibGU8L3RkPidcbiAgICAgICsgJzx0ZCBjbGFzcz1cIm11dGVkXCI+Q291bGQgbm90IGJlIGNvbXB1dGVkIGZvciB0aGlzIHBlcmlvZC48L3RkPjwvdHI+JztcbiAgfVxuICBjb25zdCB7IGhlYWRsaW5lIH0gPSBzZWN0aW9uO1xuICAvLyBBIHNlY3Rpb24gd2l0aCBubyBzaW5nbGUgbnVtYmVyIGlzIG5vdCBhbiBlcnJvciBhbmQgbXVzdCBub3QgcmVhZCBsaWtlIG9uZTogc2V2ZXJhbFxuICAvLyBsZWdpdGltYXRlbHkgaGF2ZSBub25lIChhIGJyZWFrZG93biwgYSBsaXN0IG9mIG9mZmVuZGVycykuXG4gIGNvbnN0IHZhbHVlID0gaGVhZGxpbmVcbiAgICA/IGAke2VzYyhoZWFkbGluZS52YWx1ZSl9JHtlc2MoaGVhZGxpbmUudW5pdCA/PyAnJyl9YFxuICAgIDogJ+KAlCc7XG4gIGNvbnN0IGxhYmVsID0gaGVhZGxpbmU/LmxhYmVsID8gZXNjKGhlYWRsaW5lLmxhYmVsKSA6ICdObyBzaW5nbGUgaGVhZGxpbmUgZm9yIHRoaXMgc2VjdGlvbic7XG4gIGNvbnN0IHRyZW5kID0gdHJlbmRTZW50ZW5jZShzZWN0aW9uKTtcbiAgY29uc3Qgbm90ZSA9IHRyZW5kID8gYCR7bGFiZWx9IMK3ICR7ZXNjKHRyZW5kKX1gIDogbGFiZWw7XG4gIHJldHVybiBgPHRyPjx0aCBzY29wZT1cInJvd1wiPiR7dGl0bGV9PC90aD48dGQgY2xhc3M9XCJ2YWx1ZVwiPiR7dmFsdWV9PC90ZD48dGQ+JHtub3RlfTwvdGQ+PC90cj5gO1xufVxuXG4vKiogVGhlIGRhdGEtcXVhbGl0eSBub3Rlcywgd2hpY2ggYXJlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gXCIwIGRlcGxveXNcIiBhbmQgXCJ3ZSBjYW5ub3Qgc2VlIHlvdXIgZGVwbG95c1wiLiAqL1xuZnVuY3Rpb24gbm90ZXNMaXN0KG5vdGVzOiByZWFkb25seSBEYXRhUXVhbGl0eU5vdGVbXSk6IHN0cmluZyB7XG4gIGlmIChub3Rlcy5sZW5ndGggPT09IDApIHJldHVybiAnJztcbiAgY29uc3QgaXRlbXMgPSBub3Rlcy5tYXAoKG4pID0+IGA8bGk+JHtlc2Mobi5tZXNzYWdlKX08L2xpPmApLmpvaW4oJycpO1xuICByZXR1cm4gJzxzZWN0aW9uIGNsYXNzPVwiYmxvY2tcIj48aDI+V2hhdCB0byBrbm93IGFib3V0IHRoZXNlIG51bWJlcnM8L2gyPidcbiAgICArIGA8dWwgY2xhc3M9XCJub3Rlc1wiPiR7aXRlbXN9PC91bD48L3NlY3Rpb24+YDtcbn1cblxuLyoqXG4gKiBQYXJhZ3JhcGhzIGZyb20gZnJlZSB0ZXh0LlxuICpcbiAqIEJsYW5rLWxpbmUgc2VwYXJhdGVkLCBhbmQgTk9UIGEgc2luZ2xlIGA8cD5gIHdpdGggbmV3bGluZXM6IGEgbGVhZCB3aG8gd3JvdGUgdGhyZWVcbiAqIHBhcmFncmFwaHMgZ2V0cyB0aHJlZSwgYW5kIHRoZSBQREYncyBzdHJ1Y3R1cmUgdHJlZSBnZXRzIHRocmVlLCBpbnN0ZWFkIG9mIG9uZSB3YWxsXG4gKiB0aGF0IGEgc2NyZWVuIHJlYWRlciByZWFkcyBhcyBhIHNpbmdsZSB1dHRlcmFuY2UuXG4gKi9cbmZ1bmN0aW9uIHBhcmFncmFwaHModGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHRcbiAgICAuc3BsaXQoL1xcbnsyLH0vKVxuICAgIC5tYXAoKHApID0+IHAudHJpbSgpKVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAubWFwKChwKSA9PiBgPHA+JHtlc2MocCkucmVwbGFjZSgvXFxuL2csICc8YnIgLz4nKX08L3A+YClcbiAgICAuam9pbignJyk7XG59XG5cbi8qKlxuICogVGhlIHByaW50IHN0eWxlc2hlZXQuXG4gKlxuICogRGVsaWJlcmF0ZWx5IHNtYWxsIGFuZCBkZWxpYmVyYXRlbHkgbm90IHRoZSBwcm9kdWN0J3MgZGVzaWduIHN5c3RlbTogdGhpcyBkb2N1bWVudCBpc1xuICogcHJpbnRlZCBvbmNlLCB0byBwYXBlciBzaXplLCBieSBvbmUgZW5naW5lLiBJbXBvcnRpbmcgdGhlIGFwcCdzIENTUyB3b3VsZCBkcmFnIGluIGEgd2ViXG4gKiBmb250IChhIG5ldHdvcmsgZmV0Y2ggdGhlIHJlbmRlcmVyIGZvcmJpZHMpIGFuZCBhIGRhcmstbW9kZSBibG9jayB0aGF0IHdvdWxkIHJlbmRlciBhXG4gKiBtYW5hZ2VyJ3MgUERGIGJsYWNrLlxuICpcbiAqIGBAcGFnZWAgb3ducyB0aGUgbWFyZ2lucyBzbyBDaHJvbWl1bSdzIG93biBgbWFyZ2luYCBvcHRpb24gZG9lcyBub3QgaGF2ZSB0bywgd2hpY2gga2VlcHNcbiAqIHRoZSBwYWdlIGdlb21ldHJ5IGluIHRoZSBkb2N1bWVudCByYXRoZXIgdGhhbiBzcGxpdCBhY3Jvc3MgdHdvIHBsYWNlcy5cbiAqL1xuY29uc3QgU1RZTEUgPSBgXG46cm9vdCB7IGNvbG9yLXNjaGVtZTogb25seSBsaWdodDsgfVxuKiB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbkBwYWdlIHsgc2l6ZTogQTQ7IG1hcmdpbjogMThtbSAxNm1tIDIwbW07IH1cbmJvZHkge1xuICBtYXJnaW46IDA7IGJhY2tncm91bmQ6ICNmZmZmZmY7IGNvbG9yOiAjMTExODI3O1xuICBmb250OiAxMXB0LzEuNDUgLWFwcGxlLXN5c3RlbSwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XG59XG5oMSB7IGZvbnQtc2l6ZTogMjBwdDsgbWFyZ2luOiAwIDAgMm1tOyB9XG5oMiB7IGZvbnQtc2l6ZTogMTJwdDsgbWFyZ2luOiAwIDAgMm1tOyB9XG5wIHsgbWFyZ2luOiAwIDAgMi41bW07IH1cbi5zdWIgeyBjb2xvcjogIzRiNTU2MzsgZm9udC1zaXplOiA5LjVwdDsgbWFyZ2luOiAwIDAgNm1tOyB9XG4uYmxvY2sgeyBtYXJnaW46IDAgMCA3bW07IHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfVxudGFibGUgeyB3aWR0aDogMTAwJTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgZm9udC1zaXplOiAxMHB0OyB9XG5jYXB0aW9uIHsgdGV4dC1hbGlnbjogbGVmdDsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxMnB0OyBwYWRkaW5nOiAwIDAgMm1tOyB9XG50aCwgdGQgeyB0ZXh0LWFsaWduOiBsZWZ0OyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyBwYWRkaW5nOiAybW0gMm1tIDJtbSAwOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTdlYjsgfVxudGhlYWQgdGggeyBib3JkZXItYm90dG9tOiAxLjVweCBzb2xpZCAjOWNhM2FmOyBmb250LXNpemU6IDlwdDsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgbGV0dGVyLXNwYWNpbmc6IC4wNGVtOyB9XG50Ym9keSB0aCB7IGZvbnQtd2VpZ2h0OiA2MDA7IHdpZHRoOiA0MiU7IH1cbnRkLnZhbHVlIHsgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsgZm9udC13ZWlnaHQ6IDYwMDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgd2lkdGg6IDE4JTsgfVxuLm11dGVkIHsgY29sb3I6ICM0YjU1NjM7IH1cbi5ub3RlcyB7IG1hcmdpbjogMDsgcGFkZGluZy1sZWZ0OiA1bW07IH1cbi5ub3RlcyBsaSB7IG1hcmdpbjogMCAwIDEuNW1tOyB9XG4uZm9vdGVyIHsgbWFyZ2luLXRvcDogOG1tOyBwYWRkaW5nLXRvcDogM21tOyBib3JkZXItdG9wOiAxcHggc29saWQgI2U1ZTdlYjsgY29sb3I6ICM0YjU1NjM7IGZvbnQtc2l6ZTogOC41cHQ7IH1cbi5mb290ZXIgcCB7IG1hcmdpbjogMCAwIDFtbTsgfVxudHIgeyBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7IH1cbmA7XG5cbi8qKlxuICogUmVuZGVyIG9uZSByZXBvcnQgYXMgYSBjb21wbGV0ZSBIVE1MIGRvY3VtZW50LlxuICpcbiAqIE9SREVSIElTIE1FQU5JTkcsIGFuZCBpdCBpcyB0aGUgc2FtZSBvcmRlciB0aGUgc2hhcmVkIHdlYiBwYWdlIHVzZXM6IHRoZSBsZWFkJ3Mgd29yZHMsXG4gKiB0aGVuIHRoZSBleGVjdXRpdmUgc3VtbWFyeSwgdGhlbiB0aGUgbnVtYmVycy4gQSByZWFkZXIgd2hvIG1lZXRzIHRoZSB0YWJsZSBmaXJzdCBoYXNcbiAqIGFscmVhZHkgZm9ybWVkIGEgdmlldyBvZiB0aGUgZGlwIGJ5IHRoZSB0aW1lIHRoZXkgcmVhY2ggdGhlIHNlbnRlbmNlIGV4cGxhaW5pbmcgaXQsIHNvXG4gKiB0aGUgY29udGV4dCB0aGUgZGF0YSBjYW5ub3Qgc3VwcGx5IGhhcyB0byBjb21lIGZpcnN0LiBgYTExeS1zdGFrZWhvbGRlci1yZXBvcnRzLnRlc3QudHN4YFxuICogcGlucyB0aGF0IG9yZGVyaW5nIGZvciB0aGUgcGFnZTsgYHJlcG9ydC1odG1sLnRlc3QudHNgIHBpbnMgaXQgaGVyZS5cbiAqXG4gKiBBIE5VTEwgU05BUFNIT1QgU1RJTEwgUkVOREVSUy4gQSBydW4gY2FuIGJlIHJlYWQgYmVmb3JlIG9yIHdpdGhvdXQgYSBzbmFwc2hvdCAoYSBmYWlsZWRcbiAqIGNvbXBvc2UsIGEgZHJhZnQpLCBhbmQgYW5zd2VyaW5nIGFuIGVtcHR5IGZpbGUgd291bGQgbG9vayBsaWtlIGEgYnJva2VuIGRvd25sb2FkLiBUaGVcbiAqIGRvY3VtZW50IHNheXMgdGhlcmUgaXMgbm90aGluZyB0byBzaG93IGluc3RlYWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJSZXBvcnRIdG1sKGlucHV0OiBSZXBvcnRIdG1sSW5wdXQpOiBzdHJpbmcge1xuICBjb25zdCBzbmFwc2hvdCA9IGlucHV0LnNuYXBzaG90O1xuICBjb25zdCBzZWN0aW9ucyA9IHNuYXBzaG90Py5zZWN0aW9ucyA/PyBbXTtcbiAgY29uc3QgbGFuZyA9ICdlbic7XG5cbiAgY29uc3QgaGVhZCA9IFtcbiAgICAnPCFET0NUWVBFIGh0bWw+JyxcbiAgICBgPGh0bWwgbGFuZz1cIiR7bGFuZ31cIj48aGVhZD48bWV0YSBjaGFyc2V0PVwidXRmLThcIiAvPmAsXG4gICAgLy8gTm8gZXh0ZXJuYWwgYW55dGhpbmc6IHRoZSBvbmUgZGlyZWN0aXZlIHRoYXQgbWFrZXMgdGhlIHByb21pc2UgaW4gdGhlIGZpbGUgaGVhZGVyXG4gICAgLy8gZW5mb3JjZWFibGUgYnkgdGhlIGVuZ2luZSByYXRoZXIgdGhhbiBieSByZXZpZXcuXG4gICAgJzxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LVNlY3VyaXR5LVBvbGljeVwiIGNvbnRlbnQ9XCJkZWZhdWx0LXNyYyBcXCdub25lXFwnOyBzdHlsZS1zcmMgXFwndW5zYWZlLWlubGluZVxcJ1wiIC8+JyxcbiAgICBgPHRpdGxlPiR7ZXNjKGlucHV0LnRpdGxlKX0g4oCUICR7ZXNjKGlucHV0LnBlcmlvZExhYmVsKX08L3RpdGxlPmAsXG4gICAgYDxzdHlsZT4ke1NUWUxFfTwvc3R5bGU+YCxcbiAgICAnPC9oZWFkPjxib2R5PicsXG4gIF0uam9pbignJyk7XG5cbiAgY29uc3QgdmVyc2lvbiA9IGlucHV0LnZlcnNpb24gPiAxID8gYCDCtyByZXZpc2lvbiAke2VzYyhpbnB1dC52ZXJzaW9uKX1gIDogJyc7XG4gIGNvbnN0IHB1Ymxpc2hlZCA9IGlucHV0LnB1Ymxpc2hlZEF0ID8gYCDCtyBwdWJsaXNoZWQgJHtlc2MoZGF5KGlucHV0LnB1Ymxpc2hlZEF0KSl9YCA6ICcnO1xuICBjb25zdCBoZWFkZXIgPSBgPGgxPiR7ZXNjKGlucHV0LnRpdGxlKX08L2gxPmBcbiAgICArIGA8cCBjbGFzcz1cInN1YlwiPiR7ZXNjKGlucHV0LnBlcmlvZExhYmVsKX0gwrcgJHtlc2MoZGF5KGlucHV0LnBlcmlvZFN0YXJ0KSl9IHRvIGBcbiAgICArIGAke2VzYyhkYXkoaW5wdXQucGVyaW9kRW5kKSl9JHt2ZXJzaW9ufSR7cHVibGlzaGVkfTwvcD5gO1xuXG4gIGNvbnN0IHN1bW1hcnkgPSBpbnB1dC5leGVjdXRpdmVTdW1tYXJ5XG4gICAgPyBgPHNlY3Rpb24gY2xhc3M9XCJibG9ja1wiPjxoMj5FeGVjdXRpdmUgc3VtbWFyeTwvaDI+JHtwYXJhZ3JhcGhzKGlucHV0LmV4ZWN1dGl2ZVN1bW1hcnkpfTwvc2VjdGlvbj5gXG4gICAgOiAnJztcblxuICBjb25zdCBub3RlcyA9IGlucHV0LmxlYWROb3Rlc1xuICAgID8gYDxzZWN0aW9uIGNsYXNzPVwiYmxvY2tcIj48aDI+Tm90ZXMgZnJvbSB0aGUgdGVhbTwvaDI+JHtwYXJhZ3JhcGhzKGlucHV0LmxlYWROb3Rlcyl9PC9zZWN0aW9uPmBcbiAgICA6ICcnO1xuXG4gIGNvbnN0IGJvZHkgPSBzZWN0aW9ucy5sZW5ndGggPiAwXG4gICAgPyAnPHNlY3Rpb24gY2xhc3M9XCJibG9ja1wiPjx0YWJsZT4nXG4gICAgICArIGA8Y2FwdGlvbj5EZWxpdmVyeSBtZWFzdXJlcyBmb3IgJHtlc2MoaW5wdXQucGVyaW9kTGFiZWwpfTwvY2FwdGlvbj5gXG4gICAgICArICc8dGhlYWQ+PHRyPjx0aCBzY29wZT1cImNvbFwiPk1lYXN1cmU8L3RoPjx0aCBzY29wZT1cImNvbFwiPlZhbHVlPC90aD48dGggc2NvcGU9XCJjb2xcIj5EZXRhaWw8L3RoPjwvdHI+PC90aGVhZD4nXG4gICAgICArIGA8dGJvZHk+JHtzZWN0aW9ucy5tYXAoc2VjdGlvblJvdykuam9pbignJyl9PC90Ym9keT48L3RhYmxlPjwvc2VjdGlvbj5gXG4gICAgOiAnPHNlY3Rpb24gY2xhc3M9XCJibG9ja1wiPjxoMj5ObyBtZWFzdXJlczwvaDI+J1xuICAgICAgKyAnPHAgY2xhc3M9XCJtdXRlZFwiPlRoaXMgcmVwb3J0IGhhcyBubyBjb21wdXRlZCBzZWN0aW9ucy4gTm90aGluZyB3YXMgbWVhc3VyZWQgZm9yIHRoaXMgcGVyaW9kLjwvcD48L3NlY3Rpb24+JztcblxuICBjb25zdCBmb290ZXJMaW5lczogc3RyaW5nW10gPSBbXTtcbiAgaWYgKGlucHV0Lm5hbWVzUmVkYWN0ZWQpIHtcbiAgICBmb290ZXJMaW5lcy5wdXNoKCdQcm9qZWN0IGFuZCBwaXBlbGluZSBuYW1lcyBoYXZlIGJlZW4gcmVwbGFjZWQgaW4gdGhpcyBjb3B5LicpO1xuICB9XG4gIGlmIChzbmFwc2hvdD8ubWV0aG9kb2xvZ3kpIGZvb3RlckxpbmVzLnB1c2goc25hcHNob3QubWV0aG9kb2xvZ3kpO1xuICBpZiAoc25hcHNob3Q/LmdlbmVyYXRlZEF0KSB7XG4gICAgZm9vdGVyTGluZXMucHVzaChgRmlndXJlcyBjb21wdXRlZCAke2RheShzbmFwc2hvdC5nZW5lcmF0ZWRBdCl9IGFuZCBmcm96ZW4gZm9yIHRoZSBwZXJpb2Qgc2hvd24uYCk7XG4gIH1cbiAgaWYgKGlucHV0LmV4cGlyZXNBdCkge1xuICAgIGZvb3RlckxpbmVzLnB1c2goYFRoZSBsaW5rIHRoaXMgY29weSBjYW1lIGZyb20gZXhwaXJlcyBvbiAke2RheShpbnB1dC5leHBpcmVzQXQpfS5gKTtcbiAgfVxuICBmb290ZXJMaW5lcy5wdXNoKGBUaGlzIGZpbGUgd2FzIGNyZWF0ZWQgJHtkYXkoaW5wdXQucmVuZGVyZWRBdCl9LmApO1xuICBjb25zdCBmb290ZXIgPSBgPGZvb3RlciBjbGFzcz1cImZvb3RlclwiPiR7Zm9vdGVyTGluZXMubWFwKChsKSA9PiBgPHA+JHtlc2MobCl9PC9wPmApLmpvaW4oJycpfTwvZm9vdGVyPmA7XG5cbiAgcmV0dXJuIGAke2hlYWR9JHtoZWFkZXJ9JHtub3Rlc30ke3N1bW1hcnl9JHtib2R5fSR7bm90ZXNMaXN0KHNuYXBzaG90Py5ub3RlcyA/PyBbXSl9JHtmb290ZXJ9PC9ib2R5PjwvaHRtbD5gO1xufVxuXG4vKipcbiAqIFRoZSBkb3dubG9hZCdzIGZpbGUgbmFtZS5cbiAqXG4gKiBCdWlsdCBmcm9tIHRoZSBwZXJpb2QgYW5kIHRoZSB2ZXJzaW9uIHJhdGhlciB0aGFuIHRoZSBydW4gaWQsIGJlY2F1c2UgdGhlIHBlcnNvbiBzYXZpbmdcbiAqIGl0IGlzIGZpbGluZyBpdCBuZXh0IHRvIGxhc3QgbW9udGgncywgYW5kIGByZXBvcnQtMjAyNi1XMzgtdjIucGRmYCBzb3J0cyBhbmQgcmVhZHMgd2hpbGVcbiAqIGEgdXVpZCBkb2VzIG5vdC4gU2FuaXRpemluZyBpcyB0aGUgUk9VVEUncyBqb2IgKGBhdHRhY2htZW50RGlzcG9zaXRpb25gKSDigJQgdGhpcyBvbmx5XG4gKiBjaG9vc2VzIHRoZSB3b3Jkcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcG9ydEZpbGVOYW1lKHRpdGxlOiBzdHJpbmcsIHBlcmlvZExhYmVsOiBzdHJpbmcsIHZlcnNpb246IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGJhc2UgPSBgJHt0aXRsZX0gJHtwZXJpb2RMYWJlbH0ke3ZlcnNpb24gPiAxID8gYCB2JHt2ZXJzaW9ufWAgOiAnJ31gO1xuICByZXR1cm4gYCR7YmFzZS50cmltKCl9LnBkZmA7XG59XG4iXX0=
@@ -246,4 +246,4 @@ registerSection({
246
246
  ? s.getCompliancePosture(scopeOf(c))
247
247
  : Promise.resolve({ unavailable: 'compliance posture is not available in this context' })),
248
248
  });
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL3JlcG9ydGluZy9zdGFrZWhvbGRlci9zZWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBeUd0Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUUzSCxpREFBaUQ7QUFDakQsU0FBUyxrQkFBa0IsQ0FBQyxFQUFVO0lBQ3BDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1IsTUFBTSxJQUFJLEtBQUssQ0FDYix3Q0FBd0MsRUFBRSw0QkFBNEIsR0FBRyxNQUFNO2NBQzdFLG1GQUFtRjtjQUNuRixrRkFBa0YsQ0FDckYsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQsdUVBQXVFO0FBQ3ZFLFNBQVMsT0FBTyxDQUFDLENBQWlCO0lBQ2hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQy9GLENBQUM7QUFFRCxp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QyxDQUFDLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztDQUMxRCxDQUFDLENBQUM7QUFFSCxlQUFlLENBQUM7SUFDZCxFQUFFLEVBQUUsVUFBVTtJQUNkLEtBQUssRUFBRSx1QkFBdUI7SUFDOUIsVUFBVSxFQUFFLEtBQUs7SUFDakIsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDekMsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7O0dBUUc7QUFDSCxlQUFlLENBQUM7SUFDZCxFQUFFLEVBQUUsb0JBQW9CO0lBQ3hCLEtBQUssRUFBRSwrQkFBK0I7SUFDdEMsVUFBVSxFQUFFLEtBQUs7SUFDakIsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CO1FBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUFFLHFEQUFxRCxFQUFFLENBQUMsQ0FBQztDQUM3RixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgc2VjdGlvbiByZWdpc3RyeTogdGhlIG9uZSBwbGFjZSB0aGF0IG1hcHMgYSByZXBvcnQgc2VjdGlvbiBpZCB0byB0aGVcbiAqIFJlcG9ydGluZ1NlcnZpY2UgbWV0aG9kIHRoYXQgY29tcHV0ZXMgaXQuXG4gKlxuICogV2h5IGEgcmVnaXN0cnkgcmF0aGVyIHRoYW4gZWFjaCB0ZW1wbGF0ZSBjYWxsaW5nIHRoZSBzZXJ2aWNlIGRpcmVjdGx5OlxuICpcbiAqICAtIFRoZSBudW1iZXJzIGluIGEgcmVwb3J0IE1VU1QgbWF0Y2ggdGhlIGRhc2hib2FyZC4gQSBtYW5hZ2VyIHdobyBjb21wYXJlcyB0aGVcbiAqICAgIHR3byBhbmQgZmluZHMgYSBkaWZmZXJlbmNlIHN0b3BzIHRydXN0aW5nIGJvdGgsIHNvIGJvdGggcmVhZCB0aGUgc2FtZSBxdWVyeSDigJRcbiAqICAgIHRoZXJlIGlzIG5vIHNlcGFyYXRlIFwicmVwb3J0XCIgaW1wbGVtZW50YXRpb24gb2Ygc3VjY2VzcyByYXRlLlxuICogIC0gRmVhdHVyZSBnYXRpbmcgYmVsb25ncyB3aXRoIHRoZSBzZWN0aW9uLCBub3QgdGhlIHJvdXRlLiBET1JBIHNlY3Rpb25zIG5lZWRcbiAqICAgIGBhZHZhbmNlZF9yZXBvcnRpbmdgOyBhIHJlcG9ydCB0aGF0IGluY2x1ZGVzIG9uZSB3aXRob3V0IHRoZSBhZGQtb24gcmVuZGVycyBhXG4gKiAgICBMT0NLRUQgc2VjdGlvbiBhbmQgc3RpbGwgZGVsaXZlcnMsIHJhdGhlciB0aGFuIGZhaWxpbmcgdGhlIHdob2xlIHJ1bi4gQSBydW5cbiAqICAgIHRoYXQgZGllcyBiZWNhdXNlIG9mIG9uZSBnYXRlZCBzZWN0aW9uIGlzIGEgc3VwcG9ydCB0aWNrZXQ7IGEgbG9ja2VkIHBhbmVsIGlzXG4gKiAgICBhbiB1cHNlbGwuXG4gKiAgLSBQZXItcGVyc29uIG1ldHJpY3MgYXJlIHJlZnVzZWQgSEVSRSwgYXQgcmVnaXN0cmF0aW9uLiBSYW5raW5nIGluZGl2aWR1YWxcbiAqICAgIGRldmVsb3BlcnMgZGVzdHJveXMgdHJ1c3QgaW4gdGhlIHdob2xlIHJlcG9ydCwgYW5kIGEgZ3VpZGVsaW5lIGluIGEgZG9jdW1lbnRcbiAqICAgIGRvZXMgbm90IHN0b3Agc29tZW9uZSBhZGRpbmcgYHRvcENvbW1pdHRlcnNgIGxhdGVyIOKAlCBhIHRocm93aW5nIHJlZ2lzdHJ5IGRvZXMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBGZWF0dXJlRmxhZyB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgQW5hbHl0aWNzU2NvcGUgfSBmcm9tICcuLi9hbmFseXRpY3MtcXVlcmllcy5qcyc7XG5cbi8qKiBXaGF0IGEgc2VjdGlvbiBuZWVkcyB0byBydW4gb25lIHBlcmlvZCdzIHF1ZXJ5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWN0aW9uQ29udGV4dCB7XG4gIG9yZ0lkOiBzdHJpbmc7XG4gIC8qKiBSb2xsdXAgb3JnIGlkcywgd2hlbiB0aGUgZGVmaW5pdGlvbidzIHNjb3BlIGlzIGEgdGVhbSByb2xsdXAuICovXG4gIG9yZ0lkcz86IHN0cmluZ1tdO1xuICAvKiogUGVyaW9kIGJvdW5kcyBhcyBJU08gc3RyaW5ncywgd2hpY2ggaXMgd2hhdCBldmVyeSBzZXJ2aWNlIG1ldGhvZCB0YWtlcy4gKi9cbiAgZnJvbTogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xuICAvKiogVGhlIHJlcG9ydCdzIGJ1Y2tldGluZyBzZXR0aW5ncywgZm9yIHRoZSB0aW1lLXNlcmllcyBzZWN0aW9ucy4gKi9cbiAgdHo6IHN0cmluZztcbiAgd2Vla1N0YXJ0OiAnbW9uZGF5JyB8ICdzdW5kYXknO1xuICAvKipcbiAgICogVGhlIFBSRVZJT1VTIHBlcmlvZCdzIGJvdW5kcywgZm9yIHRoZSBzZWN0aW9ucyB0aGF0IGNvbXB1dGUgdGhlaXIgb3duIHRyZW5kXG4gICAqIGludGVybmFsbHkgcmF0aGVyIHRoYW4gYmVpbmcgcnVuIHR3aWNlLlxuICAgKlxuICAgKiBNb3N0IHNlY3Rpb25zIGFyZSBzaW1wbHkgcmUtcnVuIG92ZXIgdGhlIHByZXZpb3VzIHdpbmRvdyBieSB0aGUgY29tcG9zZXIgYW5kXG4gICAqIGNvbXBhcmVkIG9uIGEgc2luZ2xlIGhlYWRsaW5lLiBUaGUgYW5hbHl0aWNzIHNlY3Rpb25zIGNhbm5vdCBiZTogdGhlaXIgdHJlbmQgaXNcbiAgICogcGVyIGNhdGVnb3J5LCBwZXIgc3RhZ2Ugb3IgcGVyIHBpcGVsaW5lLCBhbmQgY29tcGFyaW5nIHR3byB3aG9sZSByZXN1bHQgc2V0c1xuICAgKiBhZnRlcndhcmRzIHdvdWxkIG1lYW4gcmUtaW1wbGVtZW50aW5nIHRoZSBqb2luIGluIHRoZSBjb21wb3Nlci5cbiAgICovXG4gIHByZXZpb3VzRnJvbT86IHN0cmluZztcbiAgcHJldmlvdXNUbz86IHN0cmluZztcbn1cblxuLyoqIFRoZSBzZXJ2aWNlIHN1cmZhY2UgYSBzZWN0aW9uIGlzIGFsbG93ZWQgdG8gY2FsbC4gU3RydWN0dXJhbCBvbiBwdXJwb3NlOiB0aGVcbiAqICByZWdpc3RyeSBuZXZlciBpbXBvcnRzIHRoZSBzZXJ2aWNlLCBzbyBpdCBzdGF5cyB0ZXN0YWJsZSB3aXRoIGEgc3R1Yi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdGlvbkRhdGFTb3VyY2Uge1xuICBnZXRFeGVjdXRpb25Db3VudChvcmdJZDogc3RyaW5nLCBvcmdJZHM/OiBzdHJpbmdbXSwgcmFuZ2U/OiB7IGZyb20/OiBzdHJpbmc7IHRvPzogc3RyaW5nIH0pOiBQcm9taXNlPHVua25vd24+O1xuICBnZXRTdWNjZXNzUmF0ZShvcmdJZDogc3RyaW5nLCBpbnRlcnZhbDogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIG9yZ0lkcz86IHN0cmluZ1tdLCBidWNrZXQ/OiB7IHR6Pzogc3RyaW5nOyB3ZWVrU3RhcnQ/OiAnbW9uZGF5JyB8ICdzdW5kYXknIH0pOiBQcm9taXNlPHVua25vd24+O1xuICBnZXRBdmVyYWdlRHVyYXRpb24ob3JnSWQ6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBvcmdJZHM/OiBzdHJpbmdbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldFN0YWdlRmFpbHVyZXMob3JnSWQ6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBvcmdJZHM/OiBzdHJpbmdbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldFN0YWdlQm90dGxlbmVja3Mob3JnSWQ6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBvcmdJZHM/OiBzdHJpbmdbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldEFjdGlvbkZhaWx1cmVzKG9yZ0lkOiBzdHJpbmcsIGZyb206IHN0cmluZywgdG86IHN0cmluZywgb3JnSWRzPzogc3RyaW5nW10pOiBQcm9taXNlPHVua25vd24+O1xuICBnZXRFcnJvcnMob3JnSWQ6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBsaW1pdD86IG51bWJlciwgb3JnSWRzPzogc3RyaW5nW10pOiBQcm9taXNlPHVua25vd24+O1xuICBnZXRQbHVnaW5TdW1tYXJ5KG9yZ0lkOiBzdHJpbmcpOiBQcm9taXNlPHVua25vd24+O1xuICBnZXRQbHVnaW5EaXN0cmlidXRpb24ob3JnSWQ6IHN0cmluZyk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldFBsdWdpblZlcnNpb25zKG9yZ0lkOiBzdHJpbmcpOiBQcm9taXNlPHVua25vd24+O1xuICBnZXRCdWlsZFN1Y2Nlc3NSYXRlKG9yZ0lkOiBzdHJpbmcsIGludGVydmFsOiBzdHJpbmcsIGZyb206IHN0cmluZywgdG86IHN0cmluZywgb3JnSWRzPzogc3RyaW5nW10sIGJ1Y2tldD86IHsgdHo/OiBzdHJpbmc7IHdlZWtTdGFydD86ICdtb25kYXknIHwgJ3N1bmRheScgfSk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldEJ1aWxkRHVyYXRpb24ob3JnSWQ6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBvcmdJZHM/OiBzdHJpbmdbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldEJ1aWxkRmFpbHVyZXMob3JnSWQ6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBsaW1pdD86IG51bWJlciwgb3JnSWRzPzogc3RyaW5nW10pOiBQcm9taXNlPHVua25vd24+O1xuICBnZXREb3JhTWV0cmljcyhvcmdJZDogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIG9yZ0lkcz86IHN0cmluZ1tdLCBvcHRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNlPHVua25vd24+O1xuICBnZXREb3JhVHJlbmQob3JnSWQ6IHN0cmluZywgaW50ZXJ2YWw6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBvcmdJZHM/OiBzdHJpbmdbXSwgb3B0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUHJvbWlzZTx1bmtub3duPjtcbiAgZ2V0QnVpbGRIZWFsdGgob3JnSWQ6IHN0cmluZywgcGlwZWxpbmVJZDogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpOiBQcm9taXNlPHVua25vd24+O1xuICBnZXRSZXBvcnRFbnZpcm9ubWVudHMob3JnSWQ6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBvcmdJZHM/OiBzdHJpbmdbXSk6IFByb21pc2U8dW5rbm93bj47XG5cbiAgLy8g4pSA4pSAIFRoZSBBTkFMWVRJQ1MgcmVhZHMgKHRoZSByb2xsdXAgdGFibGVzLCBub3QgcmF3IGV2ZW50cykg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gIC8vIFNlcGFyYXRlIGZyb20gdGhlIG9uLWRlbWFuZCBkYXNoYm9hcmQgbWV0aG9kcyBhYm92ZSBiZWNhdXNlIHRoZXkgYW5zd2VyXG4gIC8vIHF1ZXN0aW9ucyB0aGUgZGFzaGJvYXJkIG5ldmVyIGFza2VkOiB3aGljaCBwaXBlbGluZSBuZWVkcyBhdHRlbnRpb24sIHdoYXRcbiAgLy8ga2luZCBvZiB0aGluZyBpcyBicmVha2luZywgd2hlcmUgYnVpbGQgdGltZSB3ZW50LCB3aGljaCBjb21taXRzIGFyZSBzdHVjay5cbiAgLy8gRXZlcnkgb25lIHJlYWRzIGEgcHJlLWFnZ3JlZ2F0ZWQgdGFibGUsIHNvIGEgcXVhcnRlcmx5IHJlcG9ydCBzdGF5cyBhXG4gIC8vIGZldy1odW5kcmVkLXJvdyBxdWVyeSBhbmQga2VlcHMgd29ya2luZyBhZnRlciByZXRlbnRpb24gc3dlZXBzIHRoZSBldmVudHMuXG4gIGdldFBpcGVsaW5lQnJlYWtkb3duKHNjb3BlOiBBbmFseXRpY3NTY29wZSwgbGltaXQ/OiBudW1iZXIpOiBQcm9taXNlPHVua25vd24+O1xuICBnZXRGYWlsdXJlQW5hbHlzaXMoc2NvcGU6IEFuYWx5dGljc1Njb3BlLCBwcmV2aW91cz86IHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nIH0pOiBQcm9taXNlPHVua25vd24+O1xuICBnZXRTdGFnZVBlcmZvcm1hbmNlKHNjb3BlOiBBbmFseXRpY3NTY29wZSwgcGlwZWxpbmVJZDogc3RyaW5nLCBwcmV2aW91cz86IHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nIH0pOiBQcm9taXNlPHVua25vd24+O1xuICBnZXRSZXNvdXJjZUNvbnN1bXB0aW9uKHNjb3BlOiBBbmFseXRpY3NTY29wZSwgbGltaXQ/OiBudW1iZXIpOiBQcm9taXNlPHVua25vd24+O1xuICBnZXRQcm9tb3Rpb25WaWV3KHNjb3BlOiBBbmFseXRpY3NTY29wZSwgcHJvZHVjdGlvbkVudj86IHN0cmluZywgbGltaXQ/OiBudW1iZXIpOiBQcm9taXNlPHVua25vd24+O1xuICBnZXRPdXRkYXRlZFBsdWdpbnMoc2NvcGU6IEFuYWx5dGljc1Njb3BlLCBsaW1pdD86IG51bWJlcik6IFByb21pc2U8dW5rbm93bj47XG4gIGdldFBsdWdpblZ1bG5lcmFiaWxpdGllcyhzY29wZTogQW5hbHl0aWNzU2NvcGUsIGxpbWl0PzogbnVtYmVyKTogUHJvbWlzZTx1bmtub3duPjtcbiAgZ2V0QWRvcHRpb24oc2NvcGU6IEFuYWx5dGljc1Njb3BlLCB0aW1lU2F2ZWRNaW51dGVzPzogbnVtYmVyIHwgbnVsbCk6IFByb21pc2U8dW5rbm93bj47XG4gIC8qKiBDb21wbGlhbmNlICsgYWNjZXNzIHBvc3R1cmUsIG92ZXIgYSBzZXJ2aWNlLXRvLXNlcnZpY2UgcmVhZC4gRGVncmFkZXMuICovXG4gIGdldENvbXBsaWFuY2VQb3N0dXJlPyhzY29wZTogQW5hbHl0aWNzU2NvcGUpOiBQcm9taXNlPHVua25vd24+O1xuICAvKiogVGhlIGV2YWx1YXRlZCBuZWVkcy1hdHRlbnRpb24gZmluZGluZ3MgZm9yIHRoZSBwZXJpb2QuICovXG4gIGdldE5lZWRzQXR0ZW50aW9uPyhzY29wZTogQW5hbHl0aWNzU2NvcGUsIHByZXZpb3VzPzogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmcgfSk6IFByb21pc2U8dW5rbm93bj47XG59XG5cbi8qKiBPbmUgcmVnaXN0ZXJlZCBzZWN0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWN0aW9uU3BlYyB7XG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBNYW5hZ2VyLWZhY2luZyB0aXRsZS4gTm90IGEgbWV0cmljIG5hbWUg4oCUIFwiRGVwbG95c1wiLCBub3QgXCJkZXBsb3ltZW50X2ZyZXF1ZW5jeVwiLiAqL1xuICB0aXRsZTogc3RyaW5nO1xuICAvKiogRmVhdHVyZSB0aGUgb3JnIG11c3QgaG9sZCwgb3IgdW5kZWZpbmVkIGZvciBhIGZyZWUgc2VjdGlvbi4gKi9cbiAgcmVxdWlyZXNGZWF0dXJlPzogRmVhdHVyZUZsYWc7XG4gIC8qKlxuICAgKiBUcnVlIHdoZW4gdGhpcyBzZWN0aW9uJ3MgdmFsdWUgaXMgYSBzaW5nbGUgY29tcGFyYWJsZSBudW1iZXIsIHNvIHRoZSBjb21wb3NlclxuICAgKiBjYW4gY29tcHV0ZSBwZXJpb2Qtb3Zlci1wZXJpb2QgY2hhbmdlLiBBIGxpc3Qgc2VjdGlvbiAodG9wIGZhaWx1cmVzKSBoYXMgbm9cbiAgICogbWVhbmluZ2Z1bCBcImNoYW5nZVwiLCBhbmQgcHJldGVuZGluZyBvdGhlcndpc2UgcHJvZHVjZXMgbm9uc2Vuc2UgYXJyb3dzLlxuICAgKi9cbiAgY29tcGFyYWJsZTogYm9vbGVhbjtcbiAgcnVuKHNvdXJjZTogU2VjdGlvbkRhdGFTb3VyY2UsIGN0eDogU2VjdGlvbkNvbnRleHQpOiBQcm9taXNlPHVua25vd24+O1xufVxuXG4vKipcbiAqIElkcyB0aGF0IHdvdWxkIHJhbmsgb3IgY29tcGFyZSBJTkRJVklEVUFMIHBlb3BsZS4gUmVmdXNlZCBhdCByZWdpc3RyYXRpb24uXG4gKlxuICogVGVhbS1sZXZlbCBtZXRyaWNzIGRlc2NyaWJlIGEgc3lzdGVtOyBwZXItcGVyc29uIG1ldHJpY3MgZGVzY3JpYmUgYSBwZXJzb24sIGFuZFxuICogYSByZXBvcnQgYSBtYW5hZ2VyIHJlYWRzIGlzIHRoZSB3b3JzdCBwb3NzaWJsZSBwbGFjZSBmb3IgdGhlIHNlY29uZC4gT25jZSBhXG4gKiBkZXZlbG9wZXIgYmVsaWV2ZXMgdGhlIHdlZWtseSByZXBvcnQgcmFua3MgdGhlbSwgdGhlIG51bWJlcnMgc3RhcnQgYmVpbmcgZ2FtZWRcbiAqIGFuZCB0aGUgcmVwb3J0IHN0b3BzIGRlc2NyaWJpbmcgcmVhbGl0eS5cbiAqL1xuY29uc3QgUEVSX1BFUlNPTl9NQVJLRVJTID0gWydhdXRob3InLCAnY29tbWl0dGVyJywgJ2RldmVsb3BlcicsICdwZXJzb24nLCAndXNlcicsICdpbmRpdmlkdWFsJywgJ2J5X21lbWJlcicsICdwZXJfbWVtYmVyJ107XG5cbi8qKiBUaHJvd3Mgd2hlbiBhIHNlY3Rpb24gaWQgbG9va3MgcGVyLXBlcnNvbi4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vdFBlclBlcnNvbihpZDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGxvd2VyZWQgPSBpZC50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBoaXQgPSBQRVJfUEVSU09OX01BUktFUlMuZmluZCgobSkgPT4gbG93ZXJlZC5pbmNsdWRlcyhtKSk7XG4gIGlmIChoaXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgUmVmdXNpbmcgdG8gcmVnaXN0ZXIgcmVwb3J0IHNlY3Rpb24gXCIke2lkfVwiOiBpdCBsb29rcyBwZXItcGVyc29uIChcIiR7aGl0fVwiKS4gYFxuICAgICAgKyAnU3Rha2Vob2xkZXIgcmVwb3J0cyBhcmUgdGVhbS1sZXZlbCBieSBkZXNpZ24g4oCUIHJhbmtpbmcgaW5kaXZpZHVhbHMgaW4gYSByZXBvcnQgYSAnXG4gICAgICArICdtYW5hZ2VyIHJlYWRzIGRlc3Ryb3lzIHRydXN0IGluIGV2ZXJ5IG90aGVyIG51bWJlciBpbiBpdC4gQWdncmVnYXRlIHRvIHRoZSB0ZWFtLicsXG4gICAgKTtcbiAgfVxufVxuXG4vKiogVGhlIHNjb3BlIGV2ZXJ5IGFuYWx5dGljcyBxdWVyeSB0YWtlcywgZnJvbSB0aGUgc2VjdGlvbiBjb250ZXh0LiAqL1xuZnVuY3Rpb24gc2NvcGVPZihjOiBTZWN0aW9uQ29udGV4dCk6IEFuYWx5dGljc1Njb3BlIHtcbiAgcmV0dXJuIHsgb3JnSWQ6IGMub3JnSWQsIC4uLihjLm9yZ0lkcyA/IHsgb3JnSWRzOiBjLm9yZ0lkcyB9IDoge30pLCBmcm9tOiBjLmZyb20sIHRvOiBjLnRvIH07XG59XG5cbi8qKiBUaGUgcHJldmlvdXMgcGVyaW9kLCB3aGVuIHRoZSBjb250ZXh0IGNhcnJpZXMgb25lIChmb3IgdGhlIHRyZW5kIGNvbHVtbnMpLiAqL1xuZnVuY3Rpb24gcHJldmlvdXNPZihjOiBTZWN0aW9uQ29udGV4dCk6IHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICByZXR1cm4gYy5wcmV2aW91c0Zyb20gJiYgYy5wcmV2aW91c1RvID8geyBmcm9tOiBjLnByZXZpb3VzRnJvbSwgdG86IGMucHJldmlvdXNUbyB9IDogdW5kZWZpbmVkO1xufVxuXG5jb25zdCBSRUdJU1RSWSA9IG5ldyBNYXA8c3RyaW5nLCBTZWN0aW9uU3BlYz4oKTtcblxuLyoqIFJlZ2lzdGVyIGEgc2VjdGlvbi4gVGhyb3dzIG9uIGEgZHVwbGljYXRlIGlkIG9yIGEgcGVyLXBlcnNvbiBvbmUuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJTZWN0aW9uKHNwZWM6IFNlY3Rpb25TcGVjKTogU2VjdGlvblNwZWMge1xuICBhc3NlcnROb3RQZXJQZXJzb24oc3BlYy5pZCk7XG4gIGlmIChSRUdJU1RSWS5oYXMoc3BlYy5pZCkpIHRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIHJlcG9ydCBzZWN0aW9uIGlkOiAke3NwZWMuaWR9YCk7XG4gIFJFR0lTVFJZLnNldChzcGVjLmlkLCBzcGVjKTtcbiAgcmV0dXJuIHNwZWM7XG59XG5cbi8qKiBMb29rIGEgc2VjdGlvbiB1cDsgdW5kZWZpbmVkIHdoZW4gdGhlIGlkIGlzIHVua25vd24uICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VjdGlvbihpZDogc3RyaW5nKTogU2VjdGlvblNwZWMgfCB1bmRlZmluZWQge1xuICByZXR1cm4gUkVHSVNUUlkuZ2V0KGlkKTtcbn1cblxuLyoqIEV2ZXJ5IHJlZ2lzdGVyZWQgc2VjdGlvbiwgaW4gcmVnaXN0cmF0aW9uIG9yZGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFsbFNlY3Rpb25zKCk6IFNlY3Rpb25TcGVjW10ge1xuICByZXR1cm4gWy4uLlJFR0lTVFJZLnZhbHVlcygpXTtcbn1cblxuLyoqIFRoZSBpZHMgYSBjYWxsZXIgbWF5IHB1dCBpbiBhIGRlZmluaXRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gc2VjdGlvbklkcygpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBbLi4uUkVHSVNUUlkua2V5cygpXTtcbn1cblxuLy8g4pSA4pSAIERlbGl2ZXJ5IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ2V4ZWN1dGlvbl9jb3VudCcsXG4gIHRpdGxlOiAnUGlwZWxpbmUgcnVucycsXG4gIGNvbXBhcmFibGU6IHRydWUsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0RXhlY3V0aW9uQ291bnQoYy5vcmdJZCwgYy5vcmdJZHMsIHsgZnJvbTogYy5mcm9tLCB0bzogYy50byB9KSxcbn0pO1xuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ3N1Y2Nlc3NfcmF0ZScsXG4gIHRpdGxlOiAnU3VjY2VzcyByYXRlJyxcbiAgY29tcGFyYWJsZTogdHJ1ZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXRTdWNjZXNzUmF0ZShjLm9yZ0lkLCAnd2VlaycsIGMuZnJvbSwgYy50bywgYy5vcmdJZHMsIHsgdHo6IGMudHosIHdlZWtTdGFydDogYy53ZWVrU3RhcnQgfSksXG59KTtcblxucmVnaXN0ZXJTZWN0aW9uKHtcbiAgaWQ6ICdkdXJhdGlvbicsXG4gIHRpdGxlOiAnUnVuIGR1cmF0aW9uJyxcbiAgY29tcGFyYWJsZTogdHJ1ZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXRBdmVyYWdlRHVyYXRpb24oYy5vcmdJZCwgYy5mcm9tLCBjLnRvLCBjLm9yZ0lkcyksXG59KTtcblxuLy8g4pSA4pSAIFdoYXQgaXMgYmxvY2tpbmcgdXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAnc3RhZ2VfZmFpbHVyZXMnLFxuICB0aXRsZTogJ1RvcCBmYWlsaW5nIHN0YWdlcycsXG4gIC8vIEEgbGlzdCwgbm90IGEgbnVtYmVyOiBcImNoYW5nZVwiIG9uIGEgdG9wLU4gbGlzdCBpcyBtZWFuaW5nbGVzcy5cbiAgY29tcGFyYWJsZTogZmFsc2UsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0U3RhZ2VGYWlsdXJlcyhjLm9yZ0lkLCBjLmZyb20sIGMudG8sIGMub3JnSWRzKSxcbn0pO1xuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ3N0YWdlX2JvdHRsZW5lY2tzJyxcbiAgdGl0bGU6ICdTbG93ZXN0IHN0YWdlcycsXG4gIGNvbXBhcmFibGU6IGZhbHNlLFxuICBydW46IChzLCBjKSA9PiBzLmdldFN0YWdlQm90dGxlbmVja3MoYy5vcmdJZCwgYy5mcm9tLCBjLnRvLCBjLm9yZ0lkcyksXG59KTtcblxucmVnaXN0ZXJTZWN0aW9uKHtcbiAgaWQ6ICdhY3Rpb25fZmFpbHVyZXMnLFxuICB0aXRsZTogJ1RvcCBmYWlsaW5nIHN0ZXBzJyxcbiAgY29tcGFyYWJsZTogZmFsc2UsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0QWN0aW9uRmFpbHVyZXMoYy5vcmdJZCwgYy5mcm9tLCBjLnRvLCBjLm9yZ0lkcyksXG59KTtcblxucmVnaXN0ZXJTZWN0aW9uKHtcbiAgaWQ6ICdlcnJvcnMnLFxuICB0aXRsZTogJ1JlY2VudCBmYWlsdXJlcycsXG4gIGNvbXBhcmFibGU6IGZhbHNlLFxuICAvLyBDYXBwZWQ6IGEgbWFuYWdlciByZWFkcyB0aGUgdG9wIGZldywgYW5kIHRoZSBzbmFwc2hvdCBpcyBzdG9yZWQgZm9yZXZlci5cbiAgcnVuOiAocywgYykgPT4gcy5nZXRFcnJvcnMoYy5vcmdJZCwgYy5mcm9tLCBjLnRvLCAxMCwgYy5vcmdJZHMpLFxufSk7XG5cbi8vIOKUgOKUgCBQbHVnaW4gLyBzdXBwbHktY2hhaW4gcG9zdHVyZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxucmVnaXN0ZXJTZWN0aW9uKHtcbiAgaWQ6ICdwbHVnaW5fc3VtbWFyeScsXG4gIHRpdGxlOiAnUGx1Z2lucyBpbiB1c2UnLFxuICBjb21wYXJhYmxlOiB0cnVlLFxuICBydW46IChzLCBjKSA9PiBzLmdldFBsdWdpblN1bW1hcnkoYy5vcmdJZCksXG59KTtcblxucmVnaXN0ZXJTZWN0aW9uKHtcbiAgaWQ6ICdwbHVnaW5fZGlzdHJpYnV0aW9uJyxcbiAgdGl0bGU6ICdQbHVnaW4gbWl4JyxcbiAgY29tcGFyYWJsZTogZmFsc2UsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0UGx1Z2luRGlzdHJpYnV0aW9uKGMub3JnSWQpLFxufSk7XG5cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAncGx1Z2luX3ZlcnNpb25zJyxcbiAgdGl0bGU6ICdPdXRkYXRlZCBwbHVnaW5zJyxcbiAgY29tcGFyYWJsZTogdHJ1ZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXRQbHVnaW5WZXJzaW9ucyhjLm9yZ0lkKSxcbn0pO1xuXG4vLyDilIDilIAgQnVpbGQgaGVhbHRoIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ2J1aWxkX3N1Y2Nlc3NfcmF0ZScsXG4gIHRpdGxlOiAnUGx1Z2luIGJ1aWxkIHN1Y2Nlc3MnLFxuICBjb21wYXJhYmxlOiB0cnVlLFxuICBydW46IChzLCBjKSA9PiBzLmdldEJ1aWxkU3VjY2Vzc1JhdGUoYy5vcmdJZCwgJ3dlZWsnLCBjLmZyb20sIGMudG8sIGMub3JnSWRzLCB7IHR6OiBjLnR6LCB3ZWVrU3RhcnQ6IGMud2Vla1N0YXJ0IH0pLFxufSk7XG5cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAnYnVpbGRfZHVyYXRpb24nLFxuICB0aXRsZTogJ1BsdWdpbiBidWlsZCBkdXJhdGlvbicsXG4gIGNvbXBhcmFibGU6IHRydWUsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0QnVpbGREdXJhdGlvbihjLm9yZ0lkLCBjLmZyb20sIGMudG8sIGMub3JnSWRzKSxcbn0pO1xuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ2J1aWxkX2ZhaWx1cmVzJyxcbiAgdGl0bGU6ICdQbHVnaW4gYnVpbGQgZmFpbHVyZXMnLFxuICBjb21wYXJhYmxlOiBmYWxzZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXRCdWlsZEZhaWx1cmVzKGMub3JnSWQsIGMuZnJvbSwgYy50bywgMTAsIGMub3JnSWRzKSxcbn0pO1xuXG4vLyDilIDilIAgRGVwbG95IC8gRE9SQSAocGFpZCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBUaGVzZSBuZWVkIGBhZHZhbmNlZF9yZXBvcnRpbmdgLiBXaXRob3V0IGl0IHRoZSBjb21wb3NlciByZW5kZXJzIGEgbG9ja2VkXG4vLyBzZWN0aW9uIGFuZCB0aGUgcmVzdCBvZiB0aGUgcmVwb3J0IHN0aWxsIGRlbGl2ZXJzLlxuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ2RvcmEnLFxuICB0aXRsZTogJ0RlbGl2ZXJ5IG1ldHJpY3MgKERPUkEpJyxcbiAgcmVxdWlyZXNGZWF0dXJlOiAnYWR2YW5jZWRfcmVwb3J0aW5nJyxcbiAgY29tcGFyYWJsZTogdHJ1ZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXREb3JhTWV0cmljcyhjLm9yZ0lkLCBjLmZyb20sIGMudG8sIGMub3JnSWRzKSxcbn0pO1xuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ2RvcmFfdHJlbmQnLFxuICB0aXRsZTogJ0RlbGl2ZXJ5IHRyZW5kJyxcbiAgcmVxdWlyZXNGZWF0dXJlOiAnYWR2YW5jZWRfcmVwb3J0aW5nJyxcbiAgY29tcGFyYWJsZTogZmFsc2UsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0RG9yYVRyZW5kKGMub3JnSWQsICd3ZWVrJywgYy5mcm9tLCBjLnRvLCBjLm9yZ0lkcywgeyB0ejogYy50eiwgd2Vla1N0YXJ0OiBjLndlZWtTdGFydCB9KSxcbn0pO1xuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ2Vudmlyb25tZW50cycsXG4gIHRpdGxlOiAnRGVwbG95IGVudmlyb25tZW50cycsXG4gIGNvbXBhcmFibGU6IGZhbHNlLFxuICBydW46IChzLCBjKSA9PiBzLmdldFJlcG9ydEVudmlyb25tZW50cyhjLm9yZ0lkLCBjLmZyb20sIGMudG8sIGMub3JnSWRzKSxcbn0pO1xuXG4vLyDilIDilIAgVGhlIGFuYWx5dGljcyBzZWN0aW9ucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEVhY2ggcmVhZHMgYSBwcmUtYWdncmVnYXRlZCB0YWJsZSByYXRoZXIgdGhhbiByYXcgZXZlbnRzLCBhbmQgZWFjaCBhbnN3ZXJzIGFcbi8vIHF1ZXN0aW9uIHRoZSBvbi1kZW1hbmQgZGFzaGJvYXJkcyBkbyBub3Q6IG5vdCBcImhvdyBhcmUgd2UgZG9pbmdcIiBidXQgXCJ3aGF0XG4vLyBzaG91bGQgc29tZWJvZHkgZG8gYWJvdXQgaXRcIi5cblxucmVnaXN0ZXJTZWN0aW9uKHtcbiAgaWQ6ICdwaXBlbGluZV9icmVha2Rvd24nLFxuICB0aXRsZTogJ1BpcGVsaW5lcyBuZWVkaW5nIHRoZSBtb3N0IGF0dGVudGlvbicsXG4gIGNvbXBhcmFibGU6IGZhbHNlLFxuICBydW46IChzLCBjKSA9PiBzLmdldFBpcGVsaW5lQnJlYWtkb3duKHNjb3BlT2YoYyksIDEwKSxcbn0pO1xuXG4vKipcbiAqIFRoZSBzZWN0aW9uIHRoYXQgREVDSURFUyByYXRoZXIgdGhhbiBkZXNjcmliZXMuIEl0cyBmaW5kaW5ncyBjYXJyeSB0aGUgbnVtYmVyXG4gKiBiZWhpbmQgdGhlbSwgYmVjYXVzZSBhIGZsYWcgd2l0aG91dCBldmlkZW5jZSBpcyBhbiBvcGluaW9uIHRoZSByZWFkZXIgaGFzIHRvIHRha2VcbiAqIG9uIHRydXN0IOKAlCBhbmQgdGhlIGZpcnN0IHRpbWUgb25lIGlzIHdyb25nIHRoZSBzZWN0aW9uIHN0b3BzIGJlaW5nIHJlYWQuXG4gKi9cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAnbmVlZHNfYXR0ZW50aW9uJyxcbiAgdGl0bGU6ICdOZWVkcyBhdHRlbnRpb24nLFxuICBjb21wYXJhYmxlOiBmYWxzZSxcbiAgcnVuOiAocywgYykgPT4gKHMuZ2V0TmVlZHNBdHRlbnRpb25cbiAgICA/IHMuZ2V0TmVlZHNBdHRlbnRpb24oc2NvcGVPZihjKSwgcHJldmlvdXNPZihjKSlcbiAgICA6IFByb21pc2UucmVzb2x2ZSh7IGl0ZW1zOiBbXSwgdW5hdmFpbGFibGU6ICduZWVkcy1hdHRlbnRpb24gZXZhbHVhdGlvbiBpcyBub3Qgd2lyZWQgaW4gdGhpcyBjb250ZXh0JyB9KSksXG59KTtcblxucmVnaXN0ZXJTZWN0aW9uKHtcbiAgaWQ6ICdmYWlsdXJlX2FuYWx5c2lzJyxcbiAgdGl0bGU6ICdXaGF0IGlzIGJyZWFraW5nJyxcbiAgY29tcGFyYWJsZTogZmFsc2UsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0RmFpbHVyZUFuYWx5c2lzKHNjb3BlT2YoYyksIHByZXZpb3VzT2YoYykpLFxufSk7XG5cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAnc3RhZ2VfcGVyZm9ybWFuY2UnLFxuICB0aXRsZTogJ1Nsb3dlc3Qgc3RhZ2VzJyxcbiAgY29tcGFyYWJsZTogZmFsc2UsXG4gIC8vIFRoZSB3b3JzdCBwaXBlbGluZSBmcm9tIHRoZSBicmVha2Rvd24gaXMgdGhlIG9uZSB3b3J0aCBkcmlsbGluZyBpbnRvOyBhXG4gIC8vIHNlY3Rpb24gdGhhdCBhc2tlZCBmb3IgYSBwaXBlbGluZSBpZCB3b3VsZCBoYXZlIG5vdGhpbmcgdG8gcHV0IGluIGl0IG9uIGFcbiAgLy8gc2NoZWR1bGVkIHJ1biwgd2hlcmUgdGhlcmUgaXMgbm8gdXNlciB0byBwaWNrIG9uZS5cbiAgcnVuOiBhc3luYyAocywgYykgPT4ge1xuICAgIGNvbnN0IGJyZWFrZG93biA9IGF3YWl0IHMuZ2V0UGlwZWxpbmVCcmVha2Rvd24oc2NvcGVPZihjKSwgMSkgYXMgQXJyYXk8eyBwaXBlbGluZUlkPzogc3RyaW5nIH0+O1xuICAgIGNvbnN0IHdvcnN0ID0gYnJlYWtkb3duWzBdPy5waXBlbGluZUlkO1xuICAgIGlmICghd29yc3QpIHJldHVybiB7IHN0YWdlczogW10sIHBpcGVsaW5lSWQ6IG51bGwgfTtcbiAgICByZXR1cm4geyBwaXBlbGluZUlkOiB3b3JzdCwgc3RhZ2VzOiBhd2FpdCBzLmdldFN0YWdlUGVyZm9ybWFuY2Uoc2NvcGVPZihjKSwgd29yc3QsIHByZXZpb3VzT2YoYykpIH07XG4gIH0sXG59KTtcblxucmVnaXN0ZXJTZWN0aW9uKHtcbiAgaWQ6ICdwcm9tb3Rpb24nLFxuICB0aXRsZTogJ1doYXQgcmVhY2hlZCBwcm9kdWN0aW9uLCBhbmQgd2hhdCBkaWQgbm90JyxcbiAgY29tcGFyYWJsZTogZmFsc2UsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0UHJvbW90aW9uVmlldyhzY29wZU9mKGMpKSxcbn0pO1xuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ3Jlc291cmNlX2NvbnN1bXB0aW9uJyxcbiAgdGl0bGU6ICdXaGVyZSB0aGUgYnVpbGQgdGltZSB3ZW50JyxcbiAgY29tcGFyYWJsZTogZmFsc2UsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0UmVzb3VyY2VDb25zdW1wdGlvbihzY29wZU9mKGMpLCAyMCksXG59KTtcblxucmVnaXN0ZXJTZWN0aW9uKHtcbiAgaWQ6ICdvdXRkYXRlZF9wbHVnaW5zJyxcbiAgdGl0bGU6ICdQbHVnaW5zIGJlaGluZCB0aGVpciBsYXRlc3QgdmVyc2lvbicsXG4gIGNvbXBhcmFibGU6IGZhbHNlLFxuICBydW46IChzLCBjKSA9PiBzLmdldE91dGRhdGVkUGx1Z2lucyhzY29wZU9mKGMpLCA1MCksXG59KTtcblxucmVnaXN0ZXJTZWN0aW9uKHtcbiAgaWQ6ICdwbHVnaW5fdnVsbmVyYWJpbGl0aWVzJyxcbiAgdGl0bGU6ICdQbHVnaW4gdnVsbmVyYWJpbGl0aWVzJyxcbiAgY29tcGFyYWJsZTogZmFsc2UsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0UGx1Z2luVnVsbmVyYWJpbGl0aWVzKHNjb3BlT2YoYyksIDUwKSxcbn0pO1xuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ2Fkb3B0aW9uJyxcbiAgdGl0bGU6ICdBZG9wdGlvbiBhbmQgY292ZXJhZ2UnLFxuICBjb21wYXJhYmxlOiBmYWxzZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXRBZG9wdGlvbihzY29wZU9mKGMpKSxcbn0pO1xuXG4vKipcbiAqIENvbXBsaWFuY2UgYW5kIGFjY2VzcyBwb3N0dXJlLCByZWFkIGZyb20gdGhlIGNvbXBsaWFuY2UgYW5kIHBsYXRmb3JtIHNlcnZpY2VzXG4gKiBvdmVyIGEgc2VydmljZS10by1zZXJ2aWNlIGNhbGwuXG4gKlxuICogREVHUkFERVMgcmF0aGVyIHRoYW4gZmFpbGluZyB0aGUgcnVuOiBpZiBjb21wbGlhbmNlIGlzIHVucmVhY2hhYmxlIHRoZSBzZWN0aW9uXG4gKiBzYXlzIFwidW5hdmFpbGFibGVcIiBhbmQgdGhlIHJlc3Qgb2YgdGhlIHJlcG9ydCBzdGlsbCByZWFjaGVzIHRoZSBsZWFkLiBBIHdlZWtseVxuICogcmVwb3J0IHRoYXQgZGlkIG5vdCBhcnJpdmUgYmVjYXVzZSBvbmUgb3B0aW9uYWwgcGFuZWwncyB1cHN0cmVhbSB3YXMgZG93biBpcyBhXG4gKiBzdXBwb3J0IHRpY2tldDsgYSBwYW5lbCB0aGF0IHNheXMgaXQgY291bGQgbm90IGJlIGNvbXB1dGVkIGlzIGluZm9ybWF0aW9uLlxuICovXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ2NvbXBsaWFuY2VfcG9zdHVyZScsXG4gIHRpdGxlOiAnQ29tcGxpYW5jZSBhbmQgYWNjZXNzIHBvc3R1cmUnLFxuICBjb21wYXJhYmxlOiBmYWxzZSxcbiAgcnVuOiAocywgYykgPT4gKHMuZ2V0Q29tcGxpYW5jZVBvc3R1cmVcbiAgICA/IHMuZ2V0Q29tcGxpYW5jZVBvc3R1cmUoc2NvcGVPZihjKSlcbiAgICA6IFByb21pc2UucmVzb2x2ZSh7IHVuYXZhaWxhYmxlOiAnY29tcGxpYW5jZSBwb3N0dXJlIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBjb250ZXh0JyB9KSksXG59KTtcbiJdfQ==
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvcmVwb3J0aW5nL3N0YWtlaG9sZGVyL3NlY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUF5R3RDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLGtCQUFrQixHQUFHLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBRTNILGlEQUFpRDtBQUNqRCxTQUFTLGtCQUFrQixDQUFDLEVBQVU7SUFDcEMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLElBQUksR0FBRyxFQUFFLENBQUM7UUFDUixNQUFNLElBQUksS0FBSyxDQUNiLHdDQUF3QyxFQUFFLDRCQUE0QixHQUFHLE1BQU07Y0FDN0UsbUZBQW1GO2NBQ25GLGtGQUFrRixDQUNyRixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRCx1RUFBdUU7QUFDdkUsU0FBUyxPQUFPLENBQUMsQ0FBaUI7SUFDaEMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDL0YsQ0FBQztBQUVELGlGQUFpRjtBQUNqRixTQUFTLFVBQVUsQ0FBQyxDQUFpQjtJQUNuQyxPQUFPLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDakcsQ0FBQztBQUVELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO0FBRWhELHdFQUF3RTtBQUN4RSxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQWlCO0lBQy9DLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QixPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCwyREFBMkQ7QUFDM0QsTUFBTSxVQUFVLFVBQVUsQ0FBQyxFQUFVO0lBQ25DLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBRUQsdURBQXVEO0FBQ3ZELE1BQU0sVUFBVSxXQUFXO0lBQ3pCLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxnREFBZ0Q7QUFDaEQsTUFBTSxVQUFVLFVBQVU7SUFDeEIsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVELCtFQUErRTtBQUUvRSxlQUFlLENBQUM7SUFDZCxFQUFFLEVBQUUsaUJBQWlCO0lBQ3JCLEtBQUssRUFBRSxlQUFlO0lBQ3RCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0NBQ2xGLENBQUMsQ0FBQztBQUVILGVBQWUsQ0FBQztJQUNkLEVBQUUsRUFBRSxjQUFjO0lBQ2xCLEtBQUssRUFBRSxjQUFjO0lBQ3JCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0NBQy9HLENBQUMsQ0FBQztBQUVILGVBQWUsQ0FBQztJQUNkLEVBQUUsRUFBRSxVQUFVO0lBQ2QsS0FBSyxFQUFFLGNBQWM7SUFDckIsVUFBVSxFQUFFLElBQUk7SUFDaEIsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7Q0FDckUsQ0FBQyxDQUFDO0FBRUgsK0VBQStFO0FBRS9FLGVBQWUsQ0FBQztJQUNkLEVBQUUsRUFBRSxnQkFBZ0I7SUFDcEIsS0FBSyxFQUFFLG9CQUFvQjtJQUMzQixpRUFBaUU7SUFDakUsVUFBVSxFQUFFLEtBQUs7SUFDakIsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7Q0FDbkUsQ0FBQyxDQUFDO0FBRUgsZUFBZSxDQUFDO0lBQ2QsRUFBRSxFQUFFLG1CQUFtQjtJQUN2QixLQUFLLEVBQUUsZ0JBQWdCO0lBQ3ZCLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0NBQ3RFLENBQUMsQ0FBQztBQUVILGVBQWUsQ0FBQztJQUNkLEVBQUUsRUFBRSxpQkFBaUI7SUFDckIsS0FBSyxFQUFFLG1CQUFtQjtJQUMxQixVQUFVLEVBQUUsS0FBSztJQUNqQixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztDQUNwRSxDQUFDLENBQUM7QUFFSCxlQUFlLENBQUM7SUFDZCxFQUFFLEVBQUUsUUFBUTtJQUNaLEtBQUssRUFBRSxpQkFBaUI7SUFDeEIsVUFBVSxFQUFFLEtBQUs7SUFDakIsMkVBQTJFO0lBQzNFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7Q0FDaEUsQ0FBQyxDQUFDO0FBRUgsK0VBQStFO0FBRS9FLGVBQWUsQ0FBQztJQUNkLEVBQUUsRUFBRSxnQkFBZ0I7SUFDcEIsS0FBSyxFQUFFLGdCQUFnQjtJQUN2QixVQUFVLEVBQUUsSUFBSTtJQUNoQixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztDQUMzQyxDQUFDLENBQUM7QUFFSCxlQUFlLENBQUM7SUFDZCxFQUFFLEVBQUUscUJBQXFCO0lBQ3pCLEtBQUssRUFBRSxZQUFZO0lBQ25CLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0NBQ2hELENBQUMsQ0FBQztBQUVILGVBQWUsQ0FBQztJQUNkLEVBQUUsRUFBRSxpQkFBaUI7SUFDckIsS0FBSyxFQUFFLGtCQUFrQjtJQUN6QixVQUFVLEVBQUUsSUFBSTtJQUNoQixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztDQUM1QyxDQUFDLENBQUM7QUFFSCwrRUFBK0U7QUFFL0UsZUFBZSxDQUFDO0lBQ2QsRUFBRSxFQUFFLG9CQUFvQjtJQUN4QixLQUFLLEVBQUUsc0JBQXNCO0lBQzdCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7Q0FDcEgsQ0FBQyxDQUFDO0FBRUgsZUFBZSxDQUFDO0lBQ2QsRUFBRSxFQUFFLGdCQUFnQjtJQUNwQixLQUFLLEVBQUUsdUJBQXVCO0lBQzlCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0NBQ25FLENBQUMsQ0FBQztBQUVILGVBQWUsQ0FBQztJQUNkLEVBQUUsRUFBRSxnQkFBZ0I7SUFDcEIsS0FBSyxFQUFFLHVCQUF1QjtJQUM5QixVQUFVLEVBQUUsS0FBSztJQUNqQixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7Q0FDdkUsQ0FBQyxDQUFDO0FBRUgsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUM1RSxxREFBcUQ7QUFFckQsZUFBZSxDQUFDO0lBQ2QsRUFBRSxFQUFFLE1BQU07SUFDVixLQUFLLEVBQUUseUJBQXlCO0lBQ2hDLGVBQWUsRUFBRSxvQkFBb0I7SUFDckMsVUFBVSxFQUFFLElBQUk7SUFDaEIsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0NBQ2pFLENBQUMsQ0FBQztBQUVILGVBQWUsQ0FBQztJQUNkLEVBQUUsRUFBRSxZQUFZO0lBQ2hCLEtBQUssRUFBRSxnQkFBZ0I7SUFDdkIsZUFBZSxFQUFFLG9CQUFvQjtJQUNyQyxVQUFVLEVBQUUsS0FBSztJQUNqQixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztDQUM3RyxDQUFDLENBQUM7QUFFSCxlQUFlLENBQUM7SUFDZCxFQUFFLEVBQUUsY0FBYztJQUNsQixLQUFLLEVBQUUscUJBQXFCO0lBQzVCLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0NBQ3hFLENBQUMsQ0FBQztBQUVILCtFQUErRTtBQUMvRSwrRUFBK0U7QUFDL0UsNkVBQTZFO0FBQzdFLGdDQUFnQztBQUVoQyxlQUFlLENBQUM7SUFDZCxFQUFFLEVBQUUsb0JBQW9CO0lBQ3hCLEtBQUssRUFBRSxzQ0FBc0M7SUFDN0MsVUFBVSxFQUFFLEtBQUs7SUFDakIsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7Q0FDdEQsQ0FBQyxDQUFDO0FBRUg7Ozs7R0FJRztBQUNILGVBQWUsQ0FBQztJQUNkLEVBQUUsRUFBRSxpQkFBaUI7SUFDckIsS0FBSyxFQUFFLGlCQUFpQjtJQUN4QixVQUFVLEVBQUUsS0FBSztJQUNqQixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUI7UUFDakMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUseURBQXlELEVBQUUsQ0FBQyxDQUFDO0NBQzVHLENBQUMsQ0FBQztBQUVILGVBQWUsQ0FBQztJQUNkLEVBQUUsRUFBRSxrQkFBa0I7SUFDdEIsS0FBSyxFQUFFLGtCQUFrQjtJQUN6QixVQUFVLEVBQUUsS0FBSztJQUNqQixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUMvRCxDQUFDLENBQUM7QUFFSCxlQUFlLENBQUM7SUFDZCxFQUFFLEVBQUUsbUJBQW1CO0lBQ3ZCLEtBQUssRUFBRSxnQkFBZ0I7SUFDdkIsVUFBVSxFQUFFLEtBQUs7SUFDakIsMEVBQTBFO0lBQzFFLDRFQUE0RTtJQUM1RSxxREFBcUQ7SUFDckQsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBbUMsQ0FBQztRQUNoRyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdEcsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILGVBQWUsQ0FBQztJQUNkLEVBQUUsRUFBRSxXQUFXO0lBQ2YsS0FBSyxFQUFFLDJDQUEyQztJQUNsRCxVQUFVLEVBQUUsS0FBSztJQUNqQixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzlDLENBQUMsQ0FBQztBQUVILGVBQWUsQ0FBQztJQUNkLEVBQUUsRUFBRSxzQkFBc0I7SUFDMUIsS0FBSyxFQUFFLDJCQUEyQjtJQUNsQyxVQUFVLEVBQUUsS0FBSztJQUNqQixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztDQUN4RCxDQUFDLENBQUM7QUFFSCxlQUFlLENBQUM7SUFDZCxFQUFFLEVBQUUsa0JBQWtCO0lBQ3RCLEtBQUssRUFBRSxxQ0FBcUM7SUFDNUMsVUFBVSxFQUFFLEtBQUs7SUFDakIsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7Q0FDcEQsQ0FBQyxDQUFDO0FBRUgsZUFBZSxDQUFDO0lBQ2QsRUFBRSxFQUFFLHdCQUF3QjtJQUM1QixLQUFLLEVBQUUsd0JBQXdCO0lBQy9CLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0NBQzFELENBQUMsQ0FBQztBQUVILGVBQWUsQ0FBQztJQUNkLEVBQUUsRUFBRSxVQUFVO0lBQ2QsS0FBSyxFQUFFLHVCQUF1QjtJQUM5QixVQUFVLEVBQUUsS0FBSztJQUNqQixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN6QyxDQUFDLENBQUM7QUFFSDs7Ozs7Ozs7R0FRRztBQUNILGVBQWUsQ0FBQztJQUNkLEVBQUUsRUFBRSxvQkFBb0I7SUFDeEIsS0FBSyxFQUFFLCtCQUErQjtJQUN0QyxVQUFVLEVBQUUsS0FBSztJQUNqQixHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7UUFDcEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXLEVBQUUscURBQXFELEVBQUUsQ0FBQyxDQUFDO0NBQzdGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBzZWN0aW9uIHJlZ2lzdHJ5OiB0aGUgb25lIHBsYWNlIHRoYXQgbWFwcyBhIHJlcG9ydCBzZWN0aW9uIGlkIHRvIHRoZVxuICogUmVwb3J0aW5nU2VydmljZSBtZXRob2QgdGhhdCBjb21wdXRlcyBpdC5cbiAqXG4gKiBXaHkgYSByZWdpc3RyeSByYXRoZXIgdGhhbiBlYWNoIHRlbXBsYXRlIGNhbGxpbmcgdGhlIHNlcnZpY2UgZGlyZWN0bHk6XG4gKlxuICogIC0gVGhlIG51bWJlcnMgaW4gYSByZXBvcnQgTVVTVCBtYXRjaCB0aGUgZGFzaGJvYXJkLiBBIG1hbmFnZXIgd2hvIGNvbXBhcmVzIHRoZVxuICogICAgdHdvIGFuZCBmaW5kcyBhIGRpZmZlcmVuY2Ugc3RvcHMgdHJ1c3RpbmcgYm90aCwgc28gYm90aCByZWFkIHRoZSBzYW1lIHF1ZXJ5IOKAlFxuICogICAgdGhlcmUgaXMgbm8gc2VwYXJhdGUgXCJyZXBvcnRcIiBpbXBsZW1lbnRhdGlvbiBvZiBzdWNjZXNzIHJhdGUuXG4gKiAgLSBGZWF0dXJlIGdhdGluZyBiZWxvbmdzIHdpdGggdGhlIHNlY3Rpb24sIG5vdCB0aGUgcm91dGUuIERPUkEgc2VjdGlvbnMgbmVlZFxuICogICAgYGFkdmFuY2VkX3JlcG9ydGluZ2A7IGEgcmVwb3J0IHRoYXQgaW5jbHVkZXMgb25lIHdpdGhvdXQgdGhlIGFkZC1vbiByZW5kZXJzIGFcbiAqICAgIExPQ0tFRCBzZWN0aW9uIGFuZCBzdGlsbCBkZWxpdmVycywgcmF0aGVyIHRoYW4gZmFpbGluZyB0aGUgd2hvbGUgcnVuLiBBIHJ1blxuICogICAgdGhhdCBkaWVzIGJlY2F1c2Ugb2Ygb25lIGdhdGVkIHNlY3Rpb24gaXMgYSBzdXBwb3J0IHRpY2tldDsgYSBsb2NrZWQgcGFuZWwgaXNcbiAqICAgIGFuIHVwc2VsbC5cbiAqICAtIFBlci1wZXJzb24gbWV0cmljcyBhcmUgcmVmdXNlZCBIRVJFLCBhdCByZWdpc3RyYXRpb24uIFJhbmtpbmcgaW5kaXZpZHVhbFxuICogICAgZGV2ZWxvcGVycyBkZXN0cm95cyB0cnVzdCBpbiB0aGUgd2hvbGUgcmVwb3J0LCBhbmQgYSBndWlkZWxpbmUgaW4gYSBkb2N1bWVudFxuICogICAgZG9lcyBub3Qgc3RvcCBzb21lb25lIGFkZGluZyBgdG9wQ29tbWl0dGVyc2AgbGF0ZXIg4oCUIGEgdGhyb3dpbmcgcmVnaXN0cnkgZG9lcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVGbGFnIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBBbmFseXRpY3NTY29wZSB9IGZyb20gJy4uL2FuYWx5dGljcy1xdWVyaWVzLmpzJztcblxuLyoqIFdoYXQgYSBzZWN0aW9uIG5lZWRzIHRvIHJ1biBvbmUgcGVyaW9kJ3MgcXVlcnkuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3Rpb25Db250ZXh0IHtcbiAgb3JnSWQ6IHN0cmluZztcbiAgLyoqIFJvbGx1cCBvcmcgaWRzLCB3aGVuIHRoZSBkZWZpbml0aW9uJ3Mgc2NvcGUgaXMgYSB0ZWFtIHJvbGx1cC4gKi9cbiAgb3JnSWRzPzogc3RyaW5nW107XG4gIC8qKiBQZXJpb2QgYm91bmRzIGFzIElTTyBzdHJpbmdzLCB3aGljaCBpcyB3aGF0IGV2ZXJ5IHNlcnZpY2UgbWV0aG9kIHRha2VzLiAqL1xuICBmcm9tOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIC8qKiBUaGUgcmVwb3J0J3MgYnVja2V0aW5nIHNldHRpbmdzLCBmb3IgdGhlIHRpbWUtc2VyaWVzIHNlY3Rpb25zLiAqL1xuICB0ejogc3RyaW5nO1xuICB3ZWVrU3RhcnQ6ICdtb25kYXknIHwgJ3N1bmRheSc7XG4gIC8qKlxuICAgKiBUaGUgUFJFVklPVVMgcGVyaW9kJ3MgYm91bmRzLCBmb3IgdGhlIHNlY3Rpb25zIHRoYXQgY29tcHV0ZSB0aGVpciBvd24gdHJlbmRcbiAgICogaW50ZXJuYWxseSByYXRoZXIgdGhhbiBiZWluZyBydW4gdHdpY2UuXG4gICAqXG4gICAqIE1vc3Qgc2VjdGlvbnMgYXJlIHNpbXBseSByZS1ydW4gb3ZlciB0aGUgcHJldmlvdXMgd2luZG93IGJ5IHRoZSBjb21wb3NlciBhbmRcbiAgICogY29tcGFyZWQgb24gYSBzaW5nbGUgaGVhZGxpbmUuIFRoZSBhbmFseXRpY3Mgc2VjdGlvbnMgY2Fubm90IGJlOiB0aGVpciB0cmVuZCBpc1xuICAgKiBwZXIgY2F0ZWdvcnksIHBlciBzdGFnZSBvciBwZXIgcGlwZWxpbmUsIGFuZCBjb21wYXJpbmcgdHdvIHdob2xlIHJlc3VsdCBzZXRzXG4gICAqIGFmdGVyd2FyZHMgd291bGQgbWVhbiByZS1pbXBsZW1lbnRpbmcgdGhlIGpvaW4gaW4gdGhlIGNvbXBvc2VyLlxuICAgKi9cbiAgcHJldmlvdXNGcm9tPzogc3RyaW5nO1xuICBwcmV2aW91c1RvPzogc3RyaW5nO1xufVxuXG4vKiogVGhlIHNlcnZpY2Ugc3VyZmFjZSBhIHNlY3Rpb24gaXMgYWxsb3dlZCB0byBjYWxsLiBTdHJ1Y3R1cmFsIG9uIHB1cnBvc2U6IHRoZVxuICogIHJlZ2lzdHJ5IG5ldmVyIGltcG9ydHMgdGhlIHNlcnZpY2UsIHNvIGl0IHN0YXlzIHRlc3RhYmxlIHdpdGggYSBzdHViLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWN0aW9uRGF0YVNvdXJjZSB7XG4gIGdldEV4ZWN1dGlvbkNvdW50KG9yZ0lkOiBzdHJpbmcsIG9yZ0lkcz86IHN0cmluZ1tdLCByYW5nZT86IHsgZnJvbT86IHN0cmluZzsgdG8/OiBzdHJpbmcgfSk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldFN1Y2Nlc3NSYXRlKG9yZ0lkOiBzdHJpbmcsIGludGVydmFsOiBzdHJpbmcsIGZyb206IHN0cmluZywgdG86IHN0cmluZywgb3JnSWRzPzogc3RyaW5nW10sIGJ1Y2tldD86IHsgdHo/OiBzdHJpbmc7IHdlZWtTdGFydD86ICdtb25kYXknIHwgJ3N1bmRheScgfSk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldEF2ZXJhZ2VEdXJhdGlvbihvcmdJZDogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIG9yZ0lkcz86IHN0cmluZ1tdKTogUHJvbWlzZTx1bmtub3duPjtcbiAgZ2V0U3RhZ2VGYWlsdXJlcyhvcmdJZDogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIG9yZ0lkcz86IHN0cmluZ1tdKTogUHJvbWlzZTx1bmtub3duPjtcbiAgZ2V0U3RhZ2VCb3R0bGVuZWNrcyhvcmdJZDogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIG9yZ0lkcz86IHN0cmluZ1tdKTogUHJvbWlzZTx1bmtub3duPjtcbiAgZ2V0QWN0aW9uRmFpbHVyZXMob3JnSWQ6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBvcmdJZHM/OiBzdHJpbmdbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldEVycm9ycyhvcmdJZDogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyLCBvcmdJZHM/OiBzdHJpbmdbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldFBsdWdpblN1bW1hcnkob3JnSWQ6IHN0cmluZyk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldFBsdWdpbkRpc3RyaWJ1dGlvbihvcmdJZDogc3RyaW5nKTogUHJvbWlzZTx1bmtub3duPjtcbiAgZ2V0UGx1Z2luVmVyc2lvbnMob3JnSWQ6IHN0cmluZyk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldEJ1aWxkU3VjY2Vzc1JhdGUob3JnSWQ6IHN0cmluZywgaW50ZXJ2YWw6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBvcmdJZHM/OiBzdHJpbmdbXSwgYnVja2V0PzogeyB0ej86IHN0cmluZzsgd2Vla1N0YXJ0PzogJ21vbmRheScgfCAnc3VuZGF5JyB9KTogUHJvbWlzZTx1bmtub3duPjtcbiAgZ2V0QnVpbGREdXJhdGlvbihvcmdJZDogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIG9yZ0lkcz86IHN0cmluZ1tdKTogUHJvbWlzZTx1bmtub3duPjtcbiAgZ2V0QnVpbGRGYWlsdXJlcyhvcmdJZDogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyLCBvcmdJZHM/OiBzdHJpbmdbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldERvcmFNZXRyaWNzKG9yZ0lkOiBzdHJpbmcsIGZyb206IHN0cmluZywgdG86IHN0cmluZywgb3JnSWRzPzogc3RyaW5nW10sIG9wdHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFByb21pc2U8dW5rbm93bj47XG4gIGdldERvcmFUcmVuZChvcmdJZDogc3RyaW5nLCBpbnRlcnZhbDogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIG9yZ0lkcz86IHN0cmluZ1tdLCBvcHRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNlPHVua25vd24+O1xuICBnZXRCdWlsZEhlYWx0aChvcmdJZDogc3RyaW5nLCBwaXBlbGluZUlkOiBzdHJpbmcsIGZyb206IHN0cmluZywgdG86IHN0cmluZyk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldFJlcG9ydEVudmlyb25tZW50cyhvcmdJZDogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIG9yZ0lkcz86IHN0cmluZ1tdKTogUHJvbWlzZTx1bmtub3duPjtcblxuICAvLyDilIDilIAgVGhlIEFOQUxZVElDUyByZWFkcyAodGhlIHJvbGx1cCB0YWJsZXMsIG5vdCByYXcgZXZlbnRzKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgLy8gU2VwYXJhdGUgZnJvbSB0aGUgb24tZGVtYW5kIGRhc2hib2FyZCBtZXRob2RzIGFib3ZlIGJlY2F1c2UgdGhleSBhbnN3ZXJcbiAgLy8gcXVlc3Rpb25zIHRoZSBkYXNoYm9hcmQgbmV2ZXIgYXNrZWQ6IHdoaWNoIHBpcGVsaW5lIG5lZWRzIGF0dGVudGlvbiwgd2hhdFxuICAvLyBraW5kIG9mIHRoaW5nIGlzIGJyZWFraW5nLCB3aGVyZSBidWlsZCB0aW1lIHdlbnQsIHdoaWNoIGNvbW1pdHMgYXJlIHN0dWNrLlxuICAvLyBFdmVyeSBvbmUgcmVhZHMgYSBwcmUtYWdncmVnYXRlZCB0YWJsZSwgc28gYSBxdWFydGVybHkgcmVwb3J0IHN0YXlzIGFcbiAgLy8gZmV3LWh1bmRyZWQtcm93IHF1ZXJ5IGFuZCBrZWVwcyB3b3JraW5nIGFmdGVyIHJldGVudGlvbiBzd2VlcHMgdGhlIGV2ZW50cy5cbiAgZ2V0UGlwZWxpbmVCcmVha2Rvd24oc2NvcGU6IEFuYWx5dGljc1Njb3BlLCBsaW1pdD86IG51bWJlcik6IFByb21pc2U8dW5rbm93bj47XG4gIGdldEZhaWx1cmVBbmFseXNpcyhzY29wZTogQW5hbHl0aWNzU2NvcGUsIHByZXZpb3VzPzogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmcgfSk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldFN0YWdlUGVyZm9ybWFuY2Uoc2NvcGU6IEFuYWx5dGljc1Njb3BlLCBwaXBlbGluZUlkOiBzdHJpbmcsIHByZXZpb3VzPzogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmcgfSk6IFByb21pc2U8dW5rbm93bj47XG4gIGdldFJlc291cmNlQ29uc3VtcHRpb24oc2NvcGU6IEFuYWx5dGljc1Njb3BlLCBsaW1pdD86IG51bWJlcik6IFByb21pc2U8dW5rbm93bj47XG4gIGdldFByb21vdGlvblZpZXcoc2NvcGU6IEFuYWx5dGljc1Njb3BlLCBwcm9kdWN0aW9uRW52Pzogc3RyaW5nLCBsaW1pdD86IG51bWJlcik6IFByb21pc2U8dW5rbm93bj47XG4gIGdldE91dGRhdGVkUGx1Z2lucyhzY29wZTogQW5hbHl0aWNzU2NvcGUsIGxpbWl0PzogbnVtYmVyKTogUHJvbWlzZTx1bmtub3duPjtcbiAgZ2V0UGx1Z2luVnVsbmVyYWJpbGl0aWVzKHNjb3BlOiBBbmFseXRpY3NTY29wZSwgbGltaXQ/OiBudW1iZXIpOiBQcm9taXNlPHVua25vd24+O1xuICBnZXRBZG9wdGlvbihzY29wZTogQW5hbHl0aWNzU2NvcGUsIHRpbWVTYXZlZE1pbnV0ZXM/OiBudW1iZXIgfCBudWxsKTogUHJvbWlzZTx1bmtub3duPjtcbiAgLyoqIENvbXBsaWFuY2UgKyBhY2Nlc3MgcG9zdHVyZSwgb3ZlciBhIHNlcnZpY2UtdG8tc2VydmljZSByZWFkLiBEZWdyYWRlcy4gKi9cbiAgZ2V0Q29tcGxpYW5jZVBvc3R1cmU/KHNjb3BlOiBBbmFseXRpY3NTY29wZSk6IFByb21pc2U8dW5rbm93bj47XG4gIC8qKiBUaGUgZXZhbHVhdGVkIG5lZWRzLWF0dGVudGlvbiBmaW5kaW5ncyBmb3IgdGhlIHBlcmlvZC4gKi9cbiAgZ2V0TmVlZHNBdHRlbnRpb24/KHNjb3BlOiBBbmFseXRpY3NTY29wZSwgcHJldmlvdXM/OiB7IGZyb206IHN0cmluZzsgdG86IHN0cmluZyB9KTogUHJvbWlzZTx1bmtub3duPjtcbn1cblxuLyoqIE9uZSByZWdpc3RlcmVkIHNlY3Rpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3Rpb25TcGVjIHtcbiAgaWQ6IHN0cmluZztcbiAgLyoqIE1hbmFnZXItZmFjaW5nIHRpdGxlLiBOb3QgYSBtZXRyaWMgbmFtZSDigJQgXCJEZXBsb3lzXCIsIG5vdCBcImRlcGxveW1lbnRfZnJlcXVlbmN5XCIuICovXG4gIHRpdGxlOiBzdHJpbmc7XG4gIC8qKiBGZWF0dXJlIHRoZSBvcmcgbXVzdCBob2xkLCBvciB1bmRlZmluZWQgZm9yIGEgZnJlZSBzZWN0aW9uLiAqL1xuICByZXF1aXJlc0ZlYXR1cmU/OiBGZWF0dXJlRmxhZztcbiAgLyoqXG4gICAqIFRydWUgd2hlbiB0aGlzIHNlY3Rpb24ncyB2YWx1ZSBpcyBhIHNpbmdsZSBjb21wYXJhYmxlIG51bWJlciwgc28gdGhlIGNvbXBvc2VyXG4gICAqIGNhbiBjb21wdXRlIHBlcmlvZC1vdmVyLXBlcmlvZCBjaGFuZ2UuIEEgbGlzdCBzZWN0aW9uICh0b3AgZmFpbHVyZXMpIGhhcyBub1xuICAgKiBtZWFuaW5nZnVsIFwiY2hhbmdlXCIsIGFuZCBwcmV0ZW5kaW5nIG90aGVyd2lzZSBwcm9kdWNlcyBub25zZW5zZSBhcnJvd3MuXG4gICAqL1xuICBjb21wYXJhYmxlOiBib29sZWFuO1xuICBydW4oc291cmNlOiBTZWN0aW9uRGF0YVNvdXJjZSwgY3R4OiBTZWN0aW9uQ29udGV4dCk6IFByb21pc2U8dW5rbm93bj47XG59XG5cbi8qKlxuICogSWRzIHRoYXQgd291bGQgcmFuayBvciBjb21wYXJlIElORElWSURVQUwgcGVvcGxlLiBSZWZ1c2VkIGF0IHJlZ2lzdHJhdGlvbi5cbiAqXG4gKiBUZWFtLWxldmVsIG1ldHJpY3MgZGVzY3JpYmUgYSBzeXN0ZW07IHBlci1wZXJzb24gbWV0cmljcyBkZXNjcmliZSBhIHBlcnNvbiwgYW5kXG4gKiBhIHJlcG9ydCBhIG1hbmFnZXIgcmVhZHMgaXMgdGhlIHdvcnN0IHBvc3NpYmxlIHBsYWNlIGZvciB0aGUgc2Vjb25kLiBPbmNlIGFcbiAqIGRldmVsb3BlciBiZWxpZXZlcyB0aGUgd2Vla2x5IHJlcG9ydCByYW5rcyB0aGVtLCB0aGUgbnVtYmVycyBzdGFydCBiZWluZyBnYW1lZFxuICogYW5kIHRoZSByZXBvcnQgc3RvcHMgZGVzY3JpYmluZyByZWFsaXR5LlxuICovXG5jb25zdCBQRVJfUEVSU09OX01BUktFUlMgPSBbJ2F1dGhvcicsICdjb21taXR0ZXInLCAnZGV2ZWxvcGVyJywgJ3BlcnNvbicsICd1c2VyJywgJ2luZGl2aWR1YWwnLCAnYnlfbWVtYmVyJywgJ3Blcl9tZW1iZXInXTtcblxuLyoqIFRocm93cyB3aGVuIGEgc2VjdGlvbiBpZCBsb29rcyBwZXItcGVyc29uLiAqL1xuZnVuY3Rpb24gYXNzZXJ0Tm90UGVyUGVyc29uKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgbG93ZXJlZCA9IGlkLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IGhpdCA9IFBFUl9QRVJTT05fTUFSS0VSUy5maW5kKChtKSA9PiBsb3dlcmVkLmluY2x1ZGVzKG0pKTtcbiAgaWYgKGhpdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBSZWZ1c2luZyB0byByZWdpc3RlciByZXBvcnQgc2VjdGlvbiBcIiR7aWR9XCI6IGl0IGxvb2tzIHBlci1wZXJzb24gKFwiJHtoaXR9XCIpLiBgXG4gICAgICArICdTdGFrZWhvbGRlciByZXBvcnRzIGFyZSB0ZWFtLWxldmVsIGJ5IGRlc2lnbiDigJQgcmFua2luZyBpbmRpdmlkdWFscyBpbiBhIHJlcG9ydCBhICdcbiAgICAgICsgJ21hbmFnZXIgcmVhZHMgZGVzdHJveXMgdHJ1c3QgaW4gZXZlcnkgb3RoZXIgbnVtYmVyIGluIGl0LiBBZ2dyZWdhdGUgdG8gdGhlIHRlYW0uJyxcbiAgICApO1xuICB9XG59XG5cbi8qKiBUaGUgc2NvcGUgZXZlcnkgYW5hbHl0aWNzIHF1ZXJ5IHRha2VzLCBmcm9tIHRoZSBzZWN0aW9uIGNvbnRleHQuICovXG5mdW5jdGlvbiBzY29wZU9mKGM6IFNlY3Rpb25Db250ZXh0KTogQW5hbHl0aWNzU2NvcGUge1xuICByZXR1cm4geyBvcmdJZDogYy5vcmdJZCwgLi4uKGMub3JnSWRzID8geyBvcmdJZHM6IGMub3JnSWRzIH0gOiB7fSksIGZyb206IGMuZnJvbSwgdG86IGMudG8gfTtcbn1cblxuLyoqIFRoZSBwcmV2aW91cyBwZXJpb2QsIHdoZW4gdGhlIGNvbnRleHQgY2FycmllcyBvbmUgKGZvciB0aGUgdHJlbmQgY29sdW1ucykuICovXG5mdW5jdGlvbiBwcmV2aW91c09mKGM6IFNlY3Rpb25Db250ZXh0KTogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBjLnByZXZpb3VzRnJvbSAmJiBjLnByZXZpb3VzVG8gPyB7IGZyb206IGMucHJldmlvdXNGcm9tLCB0bzogYy5wcmV2aW91c1RvIH0gOiB1bmRlZmluZWQ7XG59XG5cbmNvbnN0IFJFR0lTVFJZID0gbmV3IE1hcDxzdHJpbmcsIFNlY3Rpb25TcGVjPigpO1xuXG4vKiogUmVnaXN0ZXIgYSBzZWN0aW9uLiBUaHJvd3Mgb24gYSBkdXBsaWNhdGUgaWQgb3IgYSBwZXItcGVyc29uIG9uZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclNlY3Rpb24oc3BlYzogU2VjdGlvblNwZWMpOiBTZWN0aW9uU3BlYyB7XG4gIGFzc2VydE5vdFBlclBlcnNvbihzcGVjLmlkKTtcbiAgaWYgKFJFR0lTVFJZLmhhcyhzcGVjLmlkKSkgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgcmVwb3J0IHNlY3Rpb24gaWQ6ICR7c3BlYy5pZH1gKTtcbiAgUkVHSVNUUlkuc2V0KHNwZWMuaWQsIHNwZWMpO1xuICByZXR1cm4gc3BlYztcbn1cblxuLyoqIExvb2sgYSBzZWN0aW9uIHVwOyB1bmRlZmluZWQgd2hlbiB0aGUgaWQgaXMgdW5rbm93bi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWN0aW9uKGlkOiBzdHJpbmcpOiBTZWN0aW9uU3BlYyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBSRUdJU1RSWS5nZXQoaWQpO1xufVxuXG4vKiogRXZlcnkgcmVnaXN0ZXJlZCBzZWN0aW9uLCBpbiByZWdpc3RyYXRpb24gb3JkZXIuICovXG5leHBvcnQgZnVuY3Rpb24gYWxsU2VjdGlvbnMoKTogU2VjdGlvblNwZWNbXSB7XG4gIHJldHVybiBbLi4uUkVHSVNUUlkudmFsdWVzKCldO1xufVxuXG4vKiogVGhlIGlkcyBhIGNhbGxlciBtYXkgcHV0IGluIGEgZGVmaW5pdGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWN0aW9uSWRzKCk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIFsuLi5SRUdJU1RSWS5rZXlzKCldO1xufVxuXG4vLyDilIDilIAgRGVsaXZlcnkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAnZXhlY3V0aW9uX2NvdW50JyxcbiAgdGl0bGU6ICdQaXBlbGluZSBydW5zJyxcbiAgY29tcGFyYWJsZTogdHJ1ZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXRFeGVjdXRpb25Db3VudChjLm9yZ0lkLCBjLm9yZ0lkcywgeyBmcm9tOiBjLmZyb20sIHRvOiBjLnRvIH0pLFxufSk7XG5cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAnc3VjY2Vzc19yYXRlJyxcbiAgdGl0bGU6ICdTdWNjZXNzIHJhdGUnLFxuICBjb21wYXJhYmxlOiB0cnVlLFxuICBydW46IChzLCBjKSA9PiBzLmdldFN1Y2Nlc3NSYXRlKGMub3JnSWQsICd3ZWVrJywgYy5mcm9tLCBjLnRvLCBjLm9yZ0lkcywgeyB0ejogYy50eiwgd2Vla1N0YXJ0OiBjLndlZWtTdGFydCB9KSxcbn0pO1xuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ2R1cmF0aW9uJyxcbiAgdGl0bGU6ICdSdW4gZHVyYXRpb24nLFxuICBjb21wYXJhYmxlOiB0cnVlLFxuICBydW46IChzLCBjKSA9PiBzLmdldEF2ZXJhZ2VEdXJhdGlvbihjLm9yZ0lkLCBjLmZyb20sIGMudG8sIGMub3JnSWRzKSxcbn0pO1xuXG4vLyDilIDilIAgV2hhdCBpcyBibG9ja2luZyB1cyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxucmVnaXN0ZXJTZWN0aW9uKHtcbiAgaWQ6ICdzdGFnZV9mYWlsdXJlcycsXG4gIHRpdGxlOiAnVG9wIGZhaWxpbmcgc3RhZ2VzJyxcbiAgLy8gQSBsaXN0LCBub3QgYSBudW1iZXI6IFwiY2hhbmdlXCIgb24gYSB0b3AtTiBsaXN0IGlzIG1lYW5pbmdsZXNzLlxuICBjb21wYXJhYmxlOiBmYWxzZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXRTdGFnZUZhaWx1cmVzKGMub3JnSWQsIGMuZnJvbSwgYy50bywgYy5vcmdJZHMpLFxufSk7XG5cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAnc3RhZ2VfYm90dGxlbmVja3MnLFxuICB0aXRsZTogJ1Nsb3dlc3Qgc3RhZ2VzJyxcbiAgY29tcGFyYWJsZTogZmFsc2UsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0U3RhZ2VCb3R0bGVuZWNrcyhjLm9yZ0lkLCBjLmZyb20sIGMudG8sIGMub3JnSWRzKSxcbn0pO1xuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ2FjdGlvbl9mYWlsdXJlcycsXG4gIHRpdGxlOiAnVG9wIGZhaWxpbmcgc3RlcHMnLFxuICBjb21wYXJhYmxlOiBmYWxzZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXRBY3Rpb25GYWlsdXJlcyhjLm9yZ0lkLCBjLmZyb20sIGMudG8sIGMub3JnSWRzKSxcbn0pO1xuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ2Vycm9ycycsXG4gIHRpdGxlOiAnUmVjZW50IGZhaWx1cmVzJyxcbiAgY29tcGFyYWJsZTogZmFsc2UsXG4gIC8vIENhcHBlZDogYSBtYW5hZ2VyIHJlYWRzIHRoZSB0b3AgZmV3LCBhbmQgdGhlIHNuYXBzaG90IGlzIHN0b3JlZCBmb3JldmVyLlxuICBydW46IChzLCBjKSA9PiBzLmdldEVycm9ycyhjLm9yZ0lkLCBjLmZyb20sIGMudG8sIDEwLCBjLm9yZ0lkcyksXG59KTtcblxuLy8g4pSA4pSAIFBsdWdpbiAvIHN1cHBseS1jaGFpbiBwb3N0dXJlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ3BsdWdpbl9zdW1tYXJ5JyxcbiAgdGl0bGU6ICdQbHVnaW5zIGluIHVzZScsXG4gIGNvbXBhcmFibGU6IHRydWUsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0UGx1Z2luU3VtbWFyeShjLm9yZ0lkKSxcbn0pO1xuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ3BsdWdpbl9kaXN0cmlidXRpb24nLFxuICB0aXRsZTogJ1BsdWdpbiBtaXgnLFxuICBjb21wYXJhYmxlOiBmYWxzZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXRQbHVnaW5EaXN0cmlidXRpb24oYy5vcmdJZCksXG59KTtcblxucmVnaXN0ZXJTZWN0aW9uKHtcbiAgaWQ6ICdwbHVnaW5fdmVyc2lvbnMnLFxuICB0aXRsZTogJ091dGRhdGVkIHBsdWdpbnMnLFxuICBjb21wYXJhYmxlOiB0cnVlLFxuICBydW46IChzLCBjKSA9PiBzLmdldFBsdWdpblZlcnNpb25zKGMub3JnSWQpLFxufSk7XG5cbi8vIOKUgOKUgCBCdWlsZCBoZWFsdGgg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAnYnVpbGRfc3VjY2Vzc19yYXRlJyxcbiAgdGl0bGU6ICdQbHVnaW4gYnVpbGQgc3VjY2VzcycsXG4gIGNvbXBhcmFibGU6IHRydWUsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0QnVpbGRTdWNjZXNzUmF0ZShjLm9yZ0lkLCAnd2VlaycsIGMuZnJvbSwgYy50bywgYy5vcmdJZHMsIHsgdHo6IGMudHosIHdlZWtTdGFydDogYy53ZWVrU3RhcnQgfSksXG59KTtcblxucmVnaXN0ZXJTZWN0aW9uKHtcbiAgaWQ6ICdidWlsZF9kdXJhdGlvbicsXG4gIHRpdGxlOiAnUGx1Z2luIGJ1aWxkIGR1cmF0aW9uJyxcbiAgY29tcGFyYWJsZTogdHJ1ZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXRCdWlsZER1cmF0aW9uKGMub3JnSWQsIGMuZnJvbSwgYy50bywgYy5vcmdJZHMpLFxufSk7XG5cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAnYnVpbGRfZmFpbHVyZXMnLFxuICB0aXRsZTogJ1BsdWdpbiBidWlsZCBmYWlsdXJlcycsXG4gIGNvbXBhcmFibGU6IGZhbHNlLFxuICBydW46IChzLCBjKSA9PiBzLmdldEJ1aWxkRmFpbHVyZXMoYy5vcmdJZCwgYy5mcm9tLCBjLnRvLCAxMCwgYy5vcmdJZHMpLFxufSk7XG5cbi8vIOKUgOKUgCBEZXBsb3kgLyBET1JBIChwYWlkKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFRoZXNlIG5lZWQgYGFkdmFuY2VkX3JlcG9ydGluZ2AuIFdpdGhvdXQgaXQgdGhlIGNvbXBvc2VyIHJlbmRlcnMgYSBsb2NrZWRcbi8vIHNlY3Rpb24gYW5kIHRoZSByZXN0IG9mIHRoZSByZXBvcnQgc3RpbGwgZGVsaXZlcnMuXG5cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAnZG9yYScsXG4gIHRpdGxlOiAnRGVsaXZlcnkgbWV0cmljcyAoRE9SQSknLFxuICByZXF1aXJlc0ZlYXR1cmU6ICdhZHZhbmNlZF9yZXBvcnRpbmcnLFxuICBjb21wYXJhYmxlOiB0cnVlLFxuICBydW46IChzLCBjKSA9PiBzLmdldERvcmFNZXRyaWNzKGMub3JnSWQsIGMuZnJvbSwgYy50bywgYy5vcmdJZHMpLFxufSk7XG5cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAnZG9yYV90cmVuZCcsXG4gIHRpdGxlOiAnRGVsaXZlcnkgdHJlbmQnLFxuICByZXF1aXJlc0ZlYXR1cmU6ICdhZHZhbmNlZF9yZXBvcnRpbmcnLFxuICBjb21wYXJhYmxlOiBmYWxzZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXREb3JhVHJlbmQoYy5vcmdJZCwgJ3dlZWsnLCBjLmZyb20sIGMudG8sIGMub3JnSWRzLCB7IHR6OiBjLnR6LCB3ZWVrU3RhcnQ6IGMud2Vla1N0YXJ0IH0pLFxufSk7XG5cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAnZW52aXJvbm1lbnRzJyxcbiAgdGl0bGU6ICdEZXBsb3kgZW52aXJvbm1lbnRzJyxcbiAgY29tcGFyYWJsZTogZmFsc2UsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0UmVwb3J0RW52aXJvbm1lbnRzKGMub3JnSWQsIGMuZnJvbSwgYy50bywgYy5vcmdJZHMpLFxufSk7XG5cbi8vIOKUgOKUgCBUaGUgYW5hbHl0aWNzIHNlY3Rpb25zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gRWFjaCByZWFkcyBhIHByZS1hZ2dyZWdhdGVkIHRhYmxlIHJhdGhlciB0aGFuIHJhdyBldmVudHMsIGFuZCBlYWNoIGFuc3dlcnMgYVxuLy8gcXVlc3Rpb24gdGhlIG9uLWRlbWFuZCBkYXNoYm9hcmRzIGRvIG5vdDogbm90IFwiaG93IGFyZSB3ZSBkb2luZ1wiIGJ1dCBcIndoYXRcbi8vIHNob3VsZCBzb21lYm9keSBkbyBhYm91dCBpdFwiLlxuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ3BpcGVsaW5lX2JyZWFrZG93bicsXG4gIHRpdGxlOiAnUGlwZWxpbmVzIG5lZWRpbmcgdGhlIG1vc3QgYXR0ZW50aW9uJyxcbiAgY29tcGFyYWJsZTogZmFsc2UsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0UGlwZWxpbmVCcmVha2Rvd24oc2NvcGVPZihjKSwgMTApLFxufSk7XG5cbi8qKlxuICogVGhlIHNlY3Rpb24gdGhhdCBERUNJREVTIHJhdGhlciB0aGFuIGRlc2NyaWJlcy4gSXRzIGZpbmRpbmdzIGNhcnJ5IHRoZSBudW1iZXJcbiAqIGJlaGluZCB0aGVtLCBiZWNhdXNlIGEgZmxhZyB3aXRob3V0IGV2aWRlbmNlIGlzIGFuIG9waW5pb24gdGhlIHJlYWRlciBoYXMgdG8gdGFrZVxuICogb24gdHJ1c3Qg4oCUIGFuZCB0aGUgZmlyc3QgdGltZSBvbmUgaXMgd3JvbmcgdGhlIHNlY3Rpb24gc3RvcHMgYmVpbmcgcmVhZC5cbiAqL1xucmVnaXN0ZXJTZWN0aW9uKHtcbiAgaWQ6ICduZWVkc19hdHRlbnRpb24nLFxuICB0aXRsZTogJ05lZWRzIGF0dGVudGlvbicsXG4gIGNvbXBhcmFibGU6IGZhbHNlLFxuICBydW46IChzLCBjKSA9PiAocy5nZXROZWVkc0F0dGVudGlvblxuICAgID8gcy5nZXROZWVkc0F0dGVudGlvbihzY29wZU9mKGMpLCBwcmV2aW91c09mKGMpKVxuICAgIDogUHJvbWlzZS5yZXNvbHZlKHsgaXRlbXM6IFtdLCB1bmF2YWlsYWJsZTogJ25lZWRzLWF0dGVudGlvbiBldmFsdWF0aW9uIGlzIG5vdCB3aXJlZCBpbiB0aGlzIGNvbnRleHQnIH0pKSxcbn0pO1xuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ2ZhaWx1cmVfYW5hbHlzaXMnLFxuICB0aXRsZTogJ1doYXQgaXMgYnJlYWtpbmcnLFxuICBjb21wYXJhYmxlOiBmYWxzZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXRGYWlsdXJlQW5hbHlzaXMoc2NvcGVPZihjKSwgcHJldmlvdXNPZihjKSksXG59KTtcblxucmVnaXN0ZXJTZWN0aW9uKHtcbiAgaWQ6ICdzdGFnZV9wZXJmb3JtYW5jZScsXG4gIHRpdGxlOiAnU2xvd2VzdCBzdGFnZXMnLFxuICBjb21wYXJhYmxlOiBmYWxzZSxcbiAgLy8gVGhlIHdvcnN0IHBpcGVsaW5lIGZyb20gdGhlIGJyZWFrZG93biBpcyB0aGUgb25lIHdvcnRoIGRyaWxsaW5nIGludG87IGFcbiAgLy8gc2VjdGlvbiB0aGF0IGFza2VkIGZvciBhIHBpcGVsaW5lIGlkIHdvdWxkIGhhdmUgbm90aGluZyB0byBwdXQgaW4gaXQgb24gYVxuICAvLyBzY2hlZHVsZWQgcnVuLCB3aGVyZSB0aGVyZSBpcyBubyB1c2VyIHRvIHBpY2sgb25lLlxuICBydW46IGFzeW5jIChzLCBjKSA9PiB7XG4gICAgY29uc3QgYnJlYWtkb3duID0gYXdhaXQgcy5nZXRQaXBlbGluZUJyZWFrZG93bihzY29wZU9mKGMpLCAxKSBhcyBBcnJheTx7IHBpcGVsaW5lSWQ/OiBzdHJpbmcgfT47XG4gICAgY29uc3Qgd29yc3QgPSBicmVha2Rvd25bMF0/LnBpcGVsaW5lSWQ7XG4gICAgaWYgKCF3b3JzdCkgcmV0dXJuIHsgc3RhZ2VzOiBbXSwgcGlwZWxpbmVJZDogbnVsbCB9O1xuICAgIHJldHVybiB7IHBpcGVsaW5lSWQ6IHdvcnN0LCBzdGFnZXM6IGF3YWl0IHMuZ2V0U3RhZ2VQZXJmb3JtYW5jZShzY29wZU9mKGMpLCB3b3JzdCwgcHJldmlvdXNPZihjKSkgfTtcbiAgfSxcbn0pO1xuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ3Byb21vdGlvbicsXG4gIHRpdGxlOiAnV2hhdCByZWFjaGVkIHByb2R1Y3Rpb24sIGFuZCB3aGF0IGRpZCBub3QnLFxuICBjb21wYXJhYmxlOiBmYWxzZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXRQcm9tb3Rpb25WaWV3KHNjb3BlT2YoYykpLFxufSk7XG5cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAncmVzb3VyY2VfY29uc3VtcHRpb24nLFxuICB0aXRsZTogJ1doZXJlIHRoZSBidWlsZCB0aW1lIHdlbnQnLFxuICBjb21wYXJhYmxlOiBmYWxzZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXRSZXNvdXJjZUNvbnN1bXB0aW9uKHNjb3BlT2YoYyksIDIwKSxcbn0pO1xuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ291dGRhdGVkX3BsdWdpbnMnLFxuICB0aXRsZTogJ1BsdWdpbnMgYmVoaW5kIHRoZWlyIGxhdGVzdCB2ZXJzaW9uJyxcbiAgY29tcGFyYWJsZTogZmFsc2UsXG4gIHJ1bjogKHMsIGMpID0+IHMuZ2V0T3V0ZGF0ZWRQbHVnaW5zKHNjb3BlT2YoYyksIDUwKSxcbn0pO1xuXG5yZWdpc3RlclNlY3Rpb24oe1xuICBpZDogJ3BsdWdpbl92dWxuZXJhYmlsaXRpZXMnLFxuICB0aXRsZTogJ1BsdWdpbiB2dWxuZXJhYmlsaXRpZXMnLFxuICBjb21wYXJhYmxlOiBmYWxzZSxcbiAgcnVuOiAocywgYykgPT4gcy5nZXRQbHVnaW5WdWxuZXJhYmlsaXRpZXMoc2NvcGVPZihjKSwgNTApLFxufSk7XG5cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAnYWRvcHRpb24nLFxuICB0aXRsZTogJ0Fkb3B0aW9uIGFuZCBjb3ZlcmFnZScsXG4gIGNvbXBhcmFibGU6IGZhbHNlLFxuICBydW46IChzLCBjKSA9PiBzLmdldEFkb3B0aW9uKHNjb3BlT2YoYykpLFxufSk7XG5cbi8qKlxuICogQ29tcGxpYW5jZSBhbmQgYWNjZXNzIHBvc3R1cmUsIHJlYWQgZnJvbSB0aGUgY29tcGxpYW5jZSBhbmQgcGxhdGZvcm0gc2VydmljZXNcbiAqIG92ZXIgYSBzZXJ2aWNlLXRvLXNlcnZpY2UgY2FsbC5cbiAqXG4gKiBERUdSQURFUyByYXRoZXIgdGhhbiBmYWlsaW5nIHRoZSBydW46IGlmIGNvbXBsaWFuY2UgaXMgdW5yZWFjaGFibGUgdGhlIHNlY3Rpb25cbiAqIHNheXMgXCJ1bmF2YWlsYWJsZVwiIGFuZCB0aGUgcmVzdCBvZiB0aGUgcmVwb3J0IHN0aWxsIHJlYWNoZXMgdGhlIGxlYWQuIEEgd2Vla2x5XG4gKiByZXBvcnQgdGhhdCBkaWQgbm90IGFycml2ZSBiZWNhdXNlIG9uZSBvcHRpb25hbCBwYW5lbCdzIHVwc3RyZWFtIHdhcyBkb3duIGlzIGFcbiAqIHN1cHBvcnQgdGlja2V0OyBhIHBhbmVsIHRoYXQgc2F5cyBpdCBjb3VsZCBub3QgYmUgY29tcHV0ZWQgaXMgaW5mb3JtYXRpb24uXG4gKi9cbnJlZ2lzdGVyU2VjdGlvbih7XG4gIGlkOiAnY29tcGxpYW5jZV9wb3N0dXJlJyxcbiAgdGl0bGU6ICdDb21wbGlhbmNlIGFuZCBhY2Nlc3MgcG9zdHVyZScsXG4gIGNvbXBhcmFibGU6IGZhbHNlLFxuICBydW46IChzLCBjKSA9PiAocy5nZXRDb21wbGlhbmNlUG9zdHVyZVxuICAgID8gcy5nZXRDb21wbGlhbmNlUG9zdHVyZShzY29wZU9mKGMpKVxuICAgIDogUHJvbWlzZS5yZXNvbHZlKHsgdW5hdmFpbGFibGU6ICdjb21wbGlhbmNlIHBvc3R1cmUgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGNvbnRleHQnIH0pKSxcbn0pO1xuIl19