@aws-cdk/toolkit-lib 1.19.0 → 1.19.2

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 (81) hide show
  1. package/build-info.json +2 -2
  2. package/db.json.gz +0 -0
  3. package/lib/actions/bootstrap/private/helpers.js +2 -2
  4. package/lib/actions/diff/private/helpers.js +6 -6
  5. package/lib/actions/refactor/private/mapping-helpers.js +3 -3
  6. package/lib/api/aws-auth/awscli-compatible.js +2 -2
  7. package/lib/api/aws-auth/base-credentials.js +2 -2
  8. package/lib/api/aws-auth/credential-plugins.js +3 -3
  9. package/lib/api/aws-auth/sdk-provider.js +6 -6
  10. package/lib/api/aws-auth/sdk.js +3 -3
  11. package/lib/api/bootstrap/bootstrap-environment.js +12 -12
  12. package/lib/api/cloud-assembly/context-store.js +2 -2
  13. package/lib/api/cloud-assembly/private/context-aware-source.js +2 -2
  14. package/lib/api/cloud-assembly/private/exec.d.ts +3 -0
  15. package/lib/api/cloud-assembly/private/exec.js +38 -5
  16. package/lib/api/cloud-assembly/private/helpers.js +2 -2
  17. package/lib/api/cloud-assembly/private/prepare-source.js +2 -2
  18. package/lib/api/cloud-assembly/private/stack-assembly.js +6 -6
  19. package/lib/api/cloud-assembly/source-builder.js +2 -2
  20. package/lib/api/cloud-assembly/stack-collection.js +8 -4
  21. package/lib/api/cloudformation/evaluate-cloudformation-template.js +2 -2
  22. package/lib/api/cloudformation/stack-helpers.js +2 -2
  23. package/lib/api/cloudformation/template-body-parameter.js +3 -3
  24. package/lib/api/context.js +2 -2
  25. package/lib/api/deployments/asset-publishing.js +3 -3
  26. package/lib/api/deployments/assets.js +5 -5
  27. package/lib/api/deployments/cfn-api.js +9 -9
  28. package/lib/api/deployments/checks.js +5 -5
  29. package/lib/api/deployments/deploy-stack.js +7 -7
  30. package/lib/api/deployments/deployment-result.js +2 -2
  31. package/lib/api/deployments/deployments.js +12 -12
  32. package/lib/api/drift/drift.js +3 -3
  33. package/lib/api/environment/environment-access.js +5 -5
  34. package/lib/api/environment/environment-resources.js +8 -8
  35. package/lib/api/garbage-collection/garbage-collector.js +7 -7
  36. package/lib/api/garbage-collection/progress-printer.js +2 -2
  37. package/lib/api/garbage-collection/stack-refresh.js +3 -3
  38. package/lib/api/hotswap/appsync-mapping-templates.js +2 -2
  39. package/lib/api/hotswap/bedrock-agentcore-runtimes.js +6 -6
  40. package/lib/api/hotswap/common.js +4 -4
  41. package/lib/api/hotswap/hotswap-deployments.js +16 -4
  42. package/lib/api/hotswap/lambda-functions.js +2 -2
  43. package/lib/api/notices/cached-data-source.js +2 -2
  44. package/lib/api/notices/web-data-source.js +9 -9
  45. package/lib/api/plugin/plugin.js +5 -5
  46. package/lib/api/refactoring/context.js +4 -4
  47. package/lib/api/refactoring/graph.js +3 -3
  48. package/lib/api/refactoring/index.js +5 -5
  49. package/lib/api/refactoring/stack-definitions.js +2 -2
  50. package/lib/api/resource-import/importer.js +2 -2
  51. package/lib/api/rwlock.js +3 -3
  52. package/lib/api/settings.js +3 -3
  53. package/lib/api/stack-events/stack-activity-monitor.d.ts +41 -4
  54. package/lib/api/stack-events/stack-activity-monitor.js +99 -9
  55. package/lib/api/stack-events/stack-event-poller.d.ts +5 -2
  56. package/lib/api/stack-events/stack-event-poller.js +7 -5
  57. package/lib/api/toolkit-info.js +9 -9
  58. package/lib/api/work-graph/work-graph-builder.js +3 -3
  59. package/lib/api/work-graph/work-graph.js +4 -4
  60. package/lib/context-providers/ami.js +2 -2
  61. package/lib/context-providers/cc-api-provider.js +9 -9
  62. package/lib/context-providers/hosted-zones.js +4 -4
  63. package/lib/context-providers/index.js +3 -3
  64. package/lib/context-providers/keys.js +3 -3
  65. package/lib/context-providers/load-balancers.js +10 -10
  66. package/lib/context-providers/security-groups.js +5 -5
  67. package/lib/context-providers/ssm-parameters.js +3 -3
  68. package/lib/context-providers/vpcs.js +7 -7
  69. package/lib/payloads/hotswap.d.ts +7 -0
  70. package/lib/payloads/hotswap.js +1 -1
  71. package/lib/private/activity-printer/base.js +5 -5
  72. package/lib/private/activity-printer/current.js +2 -2
  73. package/lib/toolkit/toolkit-error.d.ts +31 -5
  74. package/lib/toolkit/toolkit-error.js +54 -14
  75. package/lib/toolkit/toolkit.js +21 -16
  76. package/lib/util/cloudformation.d.ts +18 -1
  77. package/lib/util/cloudformation.js +29 -3
  78. package/lib/util/directories.js +2 -2
  79. package/lib/util/objects.js +3 -3
  80. package/lib/util/version-range.js +5 -5
  81. package/package.json +3 -3
@@ -73,10 +73,10 @@ class ActivityPrinterBase {
73
73
  if (status.endsWith('_IN_PROGRESS')) {
74
74
  this.resourcesInProgress[activity.event.LogicalResourceId] = activity;
75
75
  }
76
- if ((0, util_1.stackEventHasErrorMessage)(status)) {
77
- const isCancelled = (activity.event.ResourceStatusReason ?? '').indexOf('cancelled') > -1;
78
- // Cancelled is not an interesting failure reason
79
- if (!isCancelled) {
76
+ if ((0, util_1.isErrorEvent)(activity.event)) {
77
+ // Cancelled is not an interesting failure reason, and we also don't care about root stack events
78
+ // (but we DO care about nested stack events, historically, so I will leave that behavior now)
79
+ if (!(0, util_1.isCancellationEvent)(activity.event) && !(0, util_1.isRootStackEvent)(activity.event)) {
80
80
  this.failures.push(activity);
81
81
  }
82
82
  }
@@ -117,4 +117,4 @@ class ActivityPrinterBase {
117
117
  }
118
118
  }
119
119
  exports.ActivityPrinterBase = ActivityPrinterBase;
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsa0RBQTBDO0FBRTFDLHFDQUE4RTtBQWE5RSxNQUFzQixtQkFBbUI7SUEyQlI7SUExQnJCLE1BQU0sQ0FBVSxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQ3JDLE1BQU0sQ0FBVSxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBRTVDOztPQUVHO0lBQ2dCLE1BQU0sQ0FBcUI7SUFFOUM7O09BRUc7SUFDTyx1QkFBdUIsR0FBVyxJQUFBLDRCQUFxQixFQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXRFOztPQUVHO0lBQ08sbUJBQW1CLEdBQWtDLEVBQUUsQ0FBQztJQUV4RCxhQUFhLENBQWlCO0lBRTlCLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFFWCxRQUFRLEdBQUcsSUFBSSxLQUFLLEVBQWlCLENBQUM7SUFFL0MsY0FBYyxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO0lBRWxFLFlBQStCLEtBQTJCO1FBQTNCLFVBQUssR0FBTCxLQUFLLENBQXNCO1FBQ3hELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBSUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsR0FBdUI7UUFDbkMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssWUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNyQixNQUFNO1lBQ1IsS0FBSyxZQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hCLE1BQU07WUFDUixLQUFLLFlBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsR0FB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bnQiOlsiaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGknO1xuaW1wb3J0IHR5cGUgeyBJb01lc3NhZ2UgfSBmcm9tICcuLi8uLi9hcGkvaW8nO1xuaW1wb3J0IHsgSU8gfSBmcm9tICcuLi8uLi9hcGkvaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyB0eXBlIFN0YWNrQWN0aXZpdHksIHR5cGUgU3RhY2tQcm9ncmVzcyB9IGZyb20gJy4uLy4uL3BheWxvYWRzJztcbmltcG9ydCB7IG1heFJlc291cmNlVHlwZUxlbmd0aCwgc3RhY2tFdmVudEhhc0Vycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElBY3Rpdml0eVByaW50ZXIge1xuICBub3RpZnkobXNnOiBJb01lc3NhZ2U8dW5rbm93bj4pOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2aXR5UHJpbnRlclByb3BzIHtcbiAgLyoqXG4gICAqIFN0cmVhbSB0byB3cml0ZSB0b1xuICAgKi9cbiAgcmVhZG9ubHkgc3RyZWFtOiBOb2RlSlMuV3JpdGVTdHJlYW07XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBY3Rpdml0eVByaW50ZXJCYXNlIGltcGxlbWVudHMgSUFjdGl2aXR5UHJpbnRlciB7XG4gIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgVElNRVNUQU1QX1dJRFRIID0gMTI7XG4gIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgU1RBVFVTX1dJRFRIID0gMjA7XG5cbiAgLyoqXG4gICAqIFN0cmVhbSB0byB3cml0ZSB0b1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0cmVhbTogTm9kZUpTLldyaXRlU3RyZWFtO1xuXG4gIC8qKlxuICAgKiBUaGUgd2l0aCBvZiB0aGUgXCJyZXNvdXJjZSB0eXBlXCIgY29sdW1uLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlc291cmNlVHlwZUNvbHVtbldpZHRoOiBudW1iZXIgPSBtYXhSZXNvdXJjZVR5cGVMZW5ndGgoe30pO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgcmVzb3VyY2UgSURzIHdoaWNoIGFyZSBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb3VyY2VzSW5Qcm9ncmVzczogUmVjb3JkPHN0cmluZywgU3RhY2tBY3Rpdml0eT4gPSB7fTtcblxuICBwcm90ZWN0ZWQgc3RhY2tQcm9ncmVzcz86IFN0YWNrUHJvZ3Jlc3M7XG5cbiAgcHJvdGVjdGVkIHJvbGxpbmdCYWNrID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZhaWx1cmVzID0gbmV3IEFycmF5PFN0YWNrQWN0aXZpdHk+KCk7XG5cbiAgcHJvdGVjdGVkIGhvb2tGYWlsdXJlTWFwID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIHN0cmluZz4+KCk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHByb3BzOiBBY3Rpdml0eVByaW50ZXJQcm9wcykge1xuICAgIHRoaXMuc3RyZWFtID0gcHJvcHMuc3RyZWFtO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHByaW50KCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlY2VpdmUgYSBzdGFjayBhY3Rpdml0eSBtZXNzYWdlXG4gICAqL1xuICBwdWJsaWMgbm90aWZ5KG1zZzogSW9NZXNzYWdlPHVua25vd24+KTogdm9pZCB7XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIElPLkNES19UT09MS0lUX0k1NTAxLmlzKG1zZyk6XG4gICAgICAgIHRoaXMuc3RhcnQobXNnLmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgSU8uQ0RLX1RPT0xLSVRfSTU1MDIuaXMobXNnKTpcbiAgICAgICAgdGhpcy5hY3Rpdml0eShtc2cuZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBJTy5DREtfVE9PTEtJVF9JNTUwMy5pcyhtc2cpOlxuICAgICAgICB0aGlzLnN0b3AoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBpZ25vcmUgYWxsIG90aGVyIG1lc3NhZ2VzXG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGFydCh7IHN0YWNrIH06IHsgc3RhY2s6IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCB9KSB7XG4gICAgdGhpcy5yZXNvdXJjZVR5cGVDb2x1bW5XaWR0aCA9IG1heFJlc291cmNlVHlwZUxlbmd0aChzdGFjay50ZW1wbGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZpdHkoYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHkpIHtcbiAgICAvLyBwcm9jZXNzIHRoZSBhY3Rpdml0eSBhbmQgdGhlbiBjYWxsIHByaW50XG4gICAgdGhpcy5hZGRBY3Rpdml0eShhY3Rpdml0eSk7XG4gICAgdGhpcy5wcmludCgpO1xuICB9XG5cbiAgcHVibGljIHN0b3AoKSB7XG4gICAgLy8gZmluYWwgcHJpbnQgYWZ0ZXIgdGhlIHN0YWNrIGlzIGRvbmVcbiAgICB0aGlzLnByaW50KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkQWN0aXZpdHkoYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHkpIHtcbiAgICBjb25zdCBzdGF0dXMgPSBhY3Rpdml0eS5ldmVudC5SZXNvdXJjZVN0YXR1cztcbiAgICBjb25zdCBob29rU3RhdHVzID0gYWN0aXZpdHkuZXZlbnQuSG9va1N0YXR1cztcbiAgICBjb25zdCBob29rVHlwZSA9IGFjdGl2aXR5LmV2ZW50Lkhvb2tUeXBlO1xuICAgIGlmICghc3RhdHVzIHx8ICFhY3Rpdml0eS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhY2tQcm9ncmVzcyA9IGFjdGl2aXR5LnByb2dyZXNzO1xuXG4gICAgaWYgKHN0YXR1cyA9PT0gJ1JPTExCQUNLX0lOX1BST0dSRVNTJyB8fCBzdGF0dXMgPT09ICdVUERBVEVfUk9MTEJBQ0tfSU5fUFJPR1JFU1MnKSB7XG4gICAgICAvLyBPbmx5IHRyaWdnZXJlZCBvbiB0aGUgc3RhY2sgb25jZSB3ZSd2ZSBzdGFydGVkIGRvaW5nIGEgcm9sbGJhY2tcbiAgICAgIHRoaXMucm9sbGluZ0JhY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGF0dXMuZW5kc1dpdGgoJ19JTl9QUk9HUkVTUycpKSB7XG4gICAgICB0aGlzLnJlc291cmNlc0luUHJvZ3Jlc3NbYWN0aXZpdHkuZXZlbnQuTG9naWNhbFJlc291cmNlSWRdID0gYWN0aXZpdHk7XG4gICAgfVxuXG4gICAgaWYgKHN0YWNrRXZlbnRIYXNFcnJvck1lc3NhZ2Uoc3RhdHVzKSkge1xuICAgICAgY29uc3QgaXNDYW5jZWxsZWQgPSAoYWN0aXZpdHkuZXZlbnQuUmVzb3VyY2VTdGF0dXNSZWFzb24gPz8gJycpLmluZGV4T2YoJ2NhbmNlbGxlZCcpID4gLTE7XG5cbiAgICAgIC8vIENhbmNlbGxlZCBpcyBub3QgYW4gaW50ZXJlc3RpbmcgZmFpbHVyZSByZWFzb25cbiAgICAgIGlmICghaXNDYW5jZWxsZWQpIHtcbiAgICAgICAgdGhpcy5mYWlsdXJlcy5wdXNoKGFjdGl2aXR5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdHVzLmVuZHNXaXRoKCdfQ09NUExFVEUnKSB8fCBzdGF0dXMuZW5kc1dpdGgoJ19GQUlMRUQnKSkge1xuICAgICAgZGVsZXRlIHRoaXMucmVzb3VyY2VzSW5Qcm9ncmVzc1thY3Rpdml0eS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZF07XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgaG9va1N0YXR1cyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGhvb2tTdGF0dXMuZW5kc1dpdGgoJ19DT01QTEVURV9GQUlMRUQnKSAmJlxuICAgICAgICBhY3Rpdml0eS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGhvb2tUeXBlICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLmhvb2tGYWlsdXJlTWFwLmhhcyhhY3Rpdml0eS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCkpIHtcbiAgICAgICAgdGhpcy5ob29rRmFpbHVyZU1hcC5nZXQoYWN0aXZpdHkuZXZlbnQuTG9naWNhbFJlc291cmNlSWQpPy5zZXQoaG9va1R5cGUsIGFjdGl2aXR5LmV2ZW50Lkhvb2tTdGF0dXNSZWFzb24gPz8gJycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ob29rRmFpbHVyZU1hcC5zZXQoYWN0aXZpdHkuZXZlbnQuTG9naWNhbFJlc291cmNlSWQsIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCkpO1xuICAgICAgICB0aGlzLmhvb2tGYWlsdXJlTWFwLmdldChhY3Rpdml0eS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCk/LnNldChob29rVHlwZSwgYWN0aXZpdHkuZXZlbnQuSG9va1N0YXR1c1JlYXNvbiA/PyAnJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGZhaWx1cmVSZWFzb24oYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHkpIHtcbiAgICBjb25zdCByZXNvdXJjZVN0YXR1c1JlYXNvbiA9IGFjdGl2aXR5LmV2ZW50LlJlc291cmNlU3RhdHVzUmVhc29uID8/ICcnO1xuICAgIGNvbnN0IGxvZ2ljYWxSZXNvdXJjZUlkID0gYWN0aXZpdHkuZXZlbnQuTG9naWNhbFJlc291cmNlSWQgPz8gJyc7XG4gICAgY29uc3QgaG9va0ZhaWx1cmVSZWFzb25NYXAgPSB0aGlzLmhvb2tGYWlsdXJlTWFwLmdldChsb2dpY2FsUmVzb3VyY2VJZCk7XG5cbiAgICBpZiAoaG9va0ZhaWx1cmVSZWFzb25NYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBob29rVHlwZSBvZiBob29rRmFpbHVyZVJlYXNvbk1hcC5rZXlzKCkpIHtcbiAgICAgICAgaWYgKHJlc291cmNlU3RhdHVzUmVhc29uLmluY2x1ZGVzKGhvb2tUeXBlKSkge1xuICAgICAgICAgIHJldHVybiByZXNvdXJjZVN0YXR1c1JlYXNvbiArICcgOiAnICsgaG9va0ZhaWx1cmVSZWFzb25NYXAuZ2V0KGhvb2tUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzb3VyY2VTdGF0dXNSZWFzb247XG4gIH1cblxuICAvKipcbiAgICogSXMgdGhlIGFjdGl2aXR5IGEgbWV0YSBhY3Rpdml0eSBmb3IgdGhlIHN0YWNrIGl0c2VsZi5cbiAgICovXG4gIHByb3RlY3RlZCBpc0FjdGl2aXR5Rm9yVGhlU3RhY2soYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHkpIHtcbiAgICByZXR1cm4gYWN0aXZpdHkuZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkID09PSBhY3Rpdml0eS5ldmVudC5TdGFja0lkO1xuICB9XG59XG4iXX0=
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsa0RBQTBDO0FBRTFDLHFDQUF3RztBQWF4RyxNQUFzQixtQkFBbUI7SUEyQlI7SUExQnJCLE1BQU0sQ0FBVSxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQ3JDLE1BQU0sQ0FBVSxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBRTVDOztPQUVHO0lBQ2dCLE1BQU0sQ0FBcUI7SUFFOUM7O09BRUc7SUFDTyx1QkFBdUIsR0FBVyxJQUFBLDRCQUFxQixFQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXRFOztPQUVHO0lBQ08sbUJBQW1CLEdBQWtDLEVBQUUsQ0FBQztJQUV4RCxhQUFhLENBQWlCO0lBRTlCLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFFWCxRQUFRLEdBQUcsSUFBSSxLQUFLLEVBQWlCLENBQUM7SUFFL0MsY0FBYyxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO0lBRWxFLFlBQStCLEtBQTJCO1FBQTNCLFVBQUssR0FBTCxLQUFLLENBQXNCO1FBQ3hELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBSUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsR0FBdUI7UUFDbkMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssWUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNyQixNQUFNO1lBQ1IsS0FBSyxZQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hCLE1BQU07WUFDUixLQUFLLFlBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsR0FB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IHR5cGUgeyBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGknO1xuaW1wb3J0IHR5cGUgeyBJb01lc3NhZ2UgfSBmcm9tICcuLi8uLi9hcGkvaW8nO1xuaW1wb3J0IHsgSU8gfSBmcm9tICcuLi8uLi9hcGkvaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyB0eXBlIFN0YWNrQWN0aXZpdHksIHR5cGUgU3RhY2tQcm9ncmVzcyB9IGZyb20gJy4uLy4uL3BheWxvYWRzJztcbmltcG9ydCB7IGlzQ2FuY2VsbGF0aW9uRXZlbnQsIGlzRXJyb3JFdmVudCwgaXNSb290U3RhY2tFdmVudCwgbWF4UmVzb3VyY2VUeXBlTGVuZ3RoIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFjdGl2aXR5UHJpbnRlciB7XG4gIG5vdGlmeShtc2c6IElvTWVzc2FnZTx1bmtub3duPik6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZpdHlQcmludGVyUHJvcHMge1xuICAvKipcbiAgICogU3RyZWFtIHRvIHdyaXRlIHRvXG4gICAqL1xuICByZWFkb25seSBzdHJlYW06IE5vZGVKUy5Xcml0ZVN0cmVhbTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjdGl2aXR5UHJpbnRlckJhc2UgaW1wbGVtZW50cyBJQWN0aXZpdHlQcmludGVyIHtcbiAgcHJvdGVjdGVkIHN0YXRpYyByZWFkb25seSBUSU1FU1RBTVBfV0lEVEggPSAxMjtcbiAgcHJvdGVjdGVkIHN0YXRpYyByZWFkb25seSBTVEFUVVNfV0lEVEggPSAyMDtcblxuICAvKipcbiAgICogU3RyZWFtIHRvIHdyaXRlIHRvXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RyZWFtOiBOb2RlSlMuV3JpdGVTdHJlYW07XG5cbiAgLyoqXG4gICAqIFRoZSB3aXRoIG9mIHRoZSBcInJlc291cmNlIHR5cGVcIiBjb2x1bW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb3VyY2VUeXBlQ29sdW1uV2lkdGg6IG51bWJlciA9IG1heFJlc291cmNlVHlwZUxlbmd0aCh7fSk7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiByZXNvdXJjZSBJRHMgd2hpY2ggYXJlIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWRcbiAgICovXG4gIHByb3RlY3RlZCByZXNvdXJjZXNJblByb2dyZXNzOiBSZWNvcmQ8c3RyaW5nLCBTdGFja0FjdGl2aXR5PiA9IHt9O1xuXG4gIHByb3RlY3RlZCBzdGFja1Byb2dyZXNzPzogU3RhY2tQcm9ncmVzcztcblxuICBwcm90ZWN0ZWQgcm9sbGluZ0JhY2sgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFpbHVyZXMgPSBuZXcgQXJyYXk8U3RhY2tBY3Rpdml0eT4oKTtcblxuICBwcm90ZWN0ZWQgaG9va0ZhaWx1cmVNYXAgPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgc3RyaW5nPj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgcHJvcHM6IEFjdGl2aXR5UHJpbnRlclByb3BzKSB7XG4gICAgdGhpcy5zdHJlYW0gPSBwcm9wcy5zdHJlYW07XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcHJpbnQoKTogdm9pZDtcblxuICAvKipcbiAgICogUmVjZWl2ZSBhIHN0YWNrIGFjdGl2aXR5IG1lc3NhZ2VcbiAgICovXG4gIHB1YmxpYyBub3RpZnkobXNnOiBJb01lc3NhZ2U8dW5rbm93bj4pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIGNhc2UgSU8uQ0RLX1RPT0xLSVRfSTU1MDEuaXMobXNnKTpcbiAgICAgICAgdGhpcy5zdGFydChtc2cuZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBJTy5DREtfVE9PTEtJVF9JNTUwMi5pcyhtc2cpOlxuICAgICAgICB0aGlzLmFjdGl2aXR5KG1zZy5kYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIElPLkNES19UT09MS0lUX0k1NTAzLmlzKG1zZyk6XG4gICAgICAgIHRoaXMuc3RvcCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIGlnbm9yZSBhbGwgb3RoZXIgbWVzc2FnZXNcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXJ0KHsgc3RhY2sgfTogeyBzdGFjazogQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0IH0pIHtcbiAgICB0aGlzLnJlc291cmNlVHlwZUNvbHVtbldpZHRoID0gbWF4UmVzb3VyY2VUeXBlTGVuZ3RoKHN0YWNrLnRlbXBsYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhY3Rpdml0eShhY3Rpdml0eTogU3RhY2tBY3Rpdml0eSkge1xuICAgIC8vIHByb2Nlc3MgdGhlIGFjdGl2aXR5IGFuZCB0aGVuIGNhbGwgcHJpbnRcbiAgICB0aGlzLmFkZEFjdGl2aXR5KGFjdGl2aXR5KTtcbiAgICB0aGlzLnByaW50KCk7XG4gIH1cblxuICBwdWJsaWMgc3RvcCgpIHtcbiAgICAvLyBmaW5hbCBwcmludCBhZnRlciB0aGUgc3RhY2sgaXMgZG9uZVxuICAgIHRoaXMucHJpbnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRBY3Rpdml0eShhY3Rpdml0eTogU3RhY2tBY3Rpdml0eSkge1xuICAgIGNvbnN0IHN0YXR1cyA9IGFjdGl2aXR5LmV2ZW50LlJlc291cmNlU3RhdHVzO1xuICAgIGNvbnN0IGhvb2tTdGF0dXMgPSBhY3Rpdml0eS5ldmVudC5Ib29rU3RhdHVzO1xuICAgIGNvbnN0IGhvb2tUeXBlID0gYWN0aXZpdHkuZXZlbnQuSG9va1R5cGU7XG4gICAgaWYgKCFzdGF0dXMgfHwgIWFjdGl2aXR5LmV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGFja1Byb2dyZXNzID0gYWN0aXZpdHkucHJvZ3Jlc3M7XG5cbiAgICBpZiAoc3RhdHVzID09PSAnUk9MTEJBQ0tfSU5fUFJPR1JFU1MnIHx8IHN0YXR1cyA9PT0gJ1VQREFURV9ST0xMQkFDS19JTl9QUk9HUkVTUycpIHtcbiAgICAgIC8vIE9ubHkgdHJpZ2dlcmVkIG9uIHRoZSBzdGFjayBvbmNlIHdlJ3ZlIHN0YXJ0ZWQgZG9pbmcgYSByb2xsYmFja1xuICAgICAgdGhpcy5yb2xsaW5nQmFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXR1cy5lbmRzV2l0aCgnX0lOX1BST0dSRVNTJykpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VzSW5Qcm9ncmVzc1thY3Rpdml0eS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZF0gPSBhY3Rpdml0eTtcbiAgICB9XG5cbiAgICBpZiAoaXNFcnJvckV2ZW50KGFjdGl2aXR5LmV2ZW50KSkge1xuICAgICAgLy8gQ2FuY2VsbGVkIGlzIG5vdCBhbiBpbnRlcmVzdGluZyBmYWlsdXJlIHJlYXNvbiwgYW5kIHdlIGFsc28gZG9uJ3QgY2FyZSBhYm91dCByb290IHN0YWNrIGV2ZW50c1xuICAgICAgLy8gKGJ1dCB3ZSBETyBjYXJlIGFib3V0IG5lc3RlZCBzdGFjayBldmVudHMsIGhpc3RvcmljYWxseSwgc28gSSB3aWxsIGxlYXZlIHRoYXQgYmVoYXZpb3Igbm93KVxuICAgICAgaWYgKCFpc0NhbmNlbGxhdGlvbkV2ZW50KGFjdGl2aXR5LmV2ZW50KSAmJiAhaXNSb290U3RhY2tFdmVudChhY3Rpdml0eS5ldmVudCkpIHtcbiAgICAgICAgdGhpcy5mYWlsdXJlcy5wdXNoKGFjdGl2aXR5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdHVzLmVuZHNXaXRoKCdfQ09NUExFVEUnKSB8fCBzdGF0dXMuZW5kc1dpdGgoJ19GQUlMRUQnKSkge1xuICAgICAgZGVsZXRlIHRoaXMucmVzb3VyY2VzSW5Qcm9ncmVzc1thY3Rpdml0eS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZF07XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgaG9va1N0YXR1cyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGhvb2tTdGF0dXMuZW5kc1dpdGgoJ19DT01QTEVURV9GQUlMRUQnKSAmJlxuICAgICAgICBhY3Rpdml0eS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGhvb2tUeXBlICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLmhvb2tGYWlsdXJlTWFwLmhhcyhhY3Rpdml0eS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCkpIHtcbiAgICAgICAgdGhpcy5ob29rRmFpbHVyZU1hcC5nZXQoYWN0aXZpdHkuZXZlbnQuTG9naWNhbFJlc291cmNlSWQpPy5zZXQoaG9va1R5cGUsIGFjdGl2aXR5LmV2ZW50Lkhvb2tTdGF0dXNSZWFzb24gPz8gJycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ob29rRmFpbHVyZU1hcC5zZXQoYWN0aXZpdHkuZXZlbnQuTG9naWNhbFJlc291cmNlSWQsIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCkpO1xuICAgICAgICB0aGlzLmhvb2tGYWlsdXJlTWFwLmdldChhY3Rpdml0eS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCk/LnNldChob29rVHlwZSwgYWN0aXZpdHkuZXZlbnQuSG9va1N0YXR1c1JlYXNvbiA/PyAnJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGZhaWx1cmVSZWFzb24oYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHkpIHtcbiAgICBjb25zdCByZXNvdXJjZVN0YXR1c1JlYXNvbiA9IGFjdGl2aXR5LmV2ZW50LlJlc291cmNlU3RhdHVzUmVhc29uID8/ICcnO1xuICAgIGNvbnN0IGxvZ2ljYWxSZXNvdXJjZUlkID0gYWN0aXZpdHkuZXZlbnQuTG9naWNhbFJlc291cmNlSWQgPz8gJyc7XG4gICAgY29uc3QgaG9va0ZhaWx1cmVSZWFzb25NYXAgPSB0aGlzLmhvb2tGYWlsdXJlTWFwLmdldChsb2dpY2FsUmVzb3VyY2VJZCk7XG5cbiAgICBpZiAoaG9va0ZhaWx1cmVSZWFzb25NYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBob29rVHlwZSBvZiBob29rRmFpbHVyZVJlYXNvbk1hcC5rZXlzKCkpIHtcbiAgICAgICAgaWYgKHJlc291cmNlU3RhdHVzUmVhc29uLmluY2x1ZGVzKGhvb2tUeXBlKSkge1xuICAgICAgICAgIHJldHVybiByZXNvdXJjZVN0YXR1c1JlYXNvbiArICcgOiAnICsgaG9va0ZhaWx1cmVSZWFzb25NYXAuZ2V0KGhvb2tUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzb3VyY2VTdGF0dXNSZWFzb247XG4gIH1cblxuICAvKipcbiAgICogSXMgdGhlIGFjdGl2aXR5IGEgbWV0YSBhY3Rpdml0eSBmb3IgdGhlIHN0YWNrIGl0c2VsZi5cbiAgICovXG4gIHByb3RlY3RlZCBpc0FjdGl2aXR5Rm9yVGhlU3RhY2soYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHkpIHtcbiAgICByZXR1cm4gYWN0aXZpdHkuZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkID09PSBhY3Rpdml0eS5ldmVudC5TdGFja0lkO1xuICB9XG59XG4iXX0=
@@ -82,7 +82,7 @@ class CurrentActivityPrinter extends base_1.ActivityPrinterBase {
82
82
  return '[' + color(fullChars + partialChar) + filler + `] (${this.stackProgress.completed}/${this.stackProgress.total})`;
83
83
  }
84
84
  failureReasonOnNextLine(activity) {
85
- return (0, util_1.stackEventHasErrorMessage)(activity.event.ResourceStatus ?? '')
85
+ return (0, util_1.isErrorEvent)(activity.event)
86
86
  ? `\n${' '.repeat(CurrentActivityPrinter.TIMESTAMP_WIDTH + CurrentActivityPrinter.STATUS_WIDTH + 6)}${chalk.red(this.failureReason(activity) ?? '')}`
87
87
  : '';
88
88
  }
@@ -119,4 +119,4 @@ function shorten(maxWidth, p) {
119
119
  const half = Math.floor((maxWidth - 3) / 2);
120
120
  return p.slice(0, half) + '...' + p.slice(-half);
121
121
  }
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImN1cnJlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUUvQixpQ0FBNkM7QUFDN0MsdUNBQTRDO0FBRTVDLHFDQUEwRTtBQUUxRTs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLHNCQUF1QixTQUFRLDBCQUFtQjtJQUM3RDs7T0FFRztJQUNLLEtBQUssQ0FBa0I7SUFFL0IsWUFBWSxLQUEyQjtRQUNyQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUkseUJBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVTLEtBQUs7UUFDYixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFFakIsZ0NBQWdDO1FBQ2hDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsR0FBRyx1QkFBdUIsR0FBRyxDQUFDLEVBQUUscUJBQXFCLENBQUMsRUFDdkYscUJBQXFCLENBQ3RCLENBQUM7UUFDRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELHlFQUF5RTtRQUN6RSw4RUFBOEU7UUFDOUUsd0VBQXdFO1FBQ3hFLE1BQU0sT0FBTyxHQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNoRyxPQUFP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QUMsQ0FBQztJQUM1QyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgdHlwZSB7IEFjdGl2aXR5UHJpbnRlclByb3BzIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IEFjdGl2aXR5UHJpbnRlckJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgUmV3cml0YWJsZUJsb2NrIH0gZnJvbSAnLi9kaXNwbGF5JztcbmltcG9ydCB0eXBlIHsgU3RhY2tBY3Rpdml0eSB9IGZyb20gJy4uLy4uL3BheWxvYWRzJztcbmltcG9ydCB7IHBhZExlZnQsIHBhZFJpZ2h0LCBzdGFja0V2ZW50SGFzRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5cbi8qKlxuICogQWN0aXZpdHkgUHJpbnRlciB3aGljaCBzaG93cyB0aGUgcmVzb3VyY2VzIGN1cnJlbnRseSBiZWluZyB1cGRhdGVkXG4gKlxuICogSXQgd2lsbCBjb250aW51b3VzbHkgcmUtdXBkYXRlIHRoZSB0ZXJtaW5hbCBhbmQgc2hvdyBvbmx5IHRoZSByZXNvdXJjZXNcbiAqIHRoYXQgYXJlIGN1cnJlbnRseSBiZWluZyB1cGRhdGVkLCBpbiBhZGRpdGlvbiB0byBhIHByb2dyZXNzIGJhciB3aGljaFxuICogc2hvd3MgaG93IGZhciBhbG9uZyB0aGUgZGVwbG95bWVudCBpcy5cbiAqXG4gKiBSZXNvdXJjZXMgdGhhdCBoYXZlIGZhaWxlZCB3aWxsIGFsd2F5cyBiZSBzaG93biwgYW5kIHdpbGwgYmUgcmVjYXBpdHVsYXRlZFxuICogYWxvbmcgd2l0aCB0aGVpciBzdGFjayB0cmFjZSB3aGVuIHRoZSBtb25pdG9yaW5nIGVuZHMuXG4gKlxuICogUmVzb3VyY2VzIHRoYXQgZmFpbGVkIGRlcGxveW1lbnQgYmVjYXVzZSB0aGV5IGhhdmUgYmVlbiBjYW5jZWxsZWQgYXJlXG4gKiBub3QgaW5jbHVkZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDdXJyZW50QWN0aXZpdHlQcmludGVyIGV4dGVuZHMgQWN0aXZpdHlQcmludGVyQmFzZSB7XG4gIC8qKlxuICAgKiBDb250aW51b3VzbHkgd3JpdGUgdG8gdGhlIHNhbWUgb3V0cHV0IGJsb2NrLlxuICAgKi9cbiAgcHJpdmF0ZSBibG9jazogUmV3cml0YWJsZUJsb2NrO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBBY3Rpdml0eVByaW50ZXJQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLmJsb2NrID0gbmV3IFJld3JpdGFibGVCbG9jayh0aGlzLnN0cmVhbSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJpbnQoKTogdm9pZCB7XG4gICAgY29uc3QgbGluZXMgPSBbXTtcblxuICAgIC8vIEFkZCBhIHByb2dyZXNzIGJhciBhdCB0aGUgdG9wXG4gICAgY29uc3QgcHJvZ3Jlc3NXaWR0aCA9IE1hdGgubWF4KFxuICAgICAgTWF0aC5taW4oKHRoaXMuYmxvY2sud2lkdGggPz8gODApIC0gUFJPR1JFU1NCQVJfRVhUUkFfU1BBQ0UgLSAxLCBNQVhfUFJPR1JFU1NCQVJfV0lEVEgpLFxuICAgICAgTUlOX1BST0dSRVNTQkFSX1dJRFRILFxuICAgICk7XG4gICAgY29uc3QgcHJvZyA9IHRoaXMucHJvZ3Jlc3NCYXIocHJvZ3Jlc3NXaWR0aCk7XG4gICAgaWYgKHByb2cpIHtcbiAgICAgIGxpbmVzLnB1c2goJyAgJyArIHByb2csICcnKTtcbiAgICB9XG5cbiAgICAvLyBOb3JtYWxseSB3ZSdkIG9ubHkgcHJpbnQgXCJyZXNvdXJjZXMgaW4gcHJvZ3Jlc3NcIiwgYnV0IGl0J3MgYWxzbyB1c2VmdWxcbiAgICAvLyB0byBrZWVwIGFuIGV5ZSBvbiB0aGUgZmFpbHVyZXMgYW5kIGtub3cgYWJvdXQgdGhlIHNwZWNpZmljIGVycm9ycyBhc3F1aWNrbHlcbiAgICAvLyBhcyBwb3NzaWJsZSAod2hpbGUgdGhlIHN0YWNrIGlzIHN0aWxsIHJvbGxpbmcgYmFjayksIHNvIGFkZCB0aG9zZSBpbi5cbiAgICBjb25zdCB0b1ByaW50OiBTdGFja0FjdGl2aXR5W10gPSBbLi4udGhpcy5mYWlsdXJlcywgLi4uT2JqZWN0LnZhbHVlcyh0aGlzLnJlc291cmNlc0luUHJvZ3Jlc3MpXTtcbiAgICB0b1ByaW50LnNvcnQoKGEsIGIpID0+IGEuZXZlbnQuVGltZXN0YW1wIS5nZXRUaW1lKCkgLSBiLmV2ZW50LlRpbWVzdGFtcCEuZ2V0VGltZSgpKTtcblxuICAgIGxpbmVzLnB1c2goXG4gICAgICAuLi50b1ByaW50Lm1hcCgocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbG9yID0gY29sb3JGcm9tU3RhdHVzQWN0aXZpdHkocmVzLmV2ZW50LlJlc291cmNlU3RhdHVzKTtcbiAgICAgICAgY29uc3QgcmVzb3VyY2VOYW1lID0gcmVzLm1ldGFkYXRhPy5jb25zdHJ1Y3RQYXRoID8/IHJlcy5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCA/PyAnJztcblxuICAgICAgICByZXR1cm4gdXRpbC5mb3JtYXQoXG4gICAgICAgICAgJyVzIHwgJXMgfCAlcyB8ICVzJXMnLFxuICAgICAgICAgIHBhZExlZnQoQ3VycmVudEFjdGl2aXR5UHJpbnRlci5USU1FU1RBTVBfV0lEVEgsIG5ldyBEYXRlKHJlcy5ldmVudC5UaW1lc3RhbXAhKS50b0xvY2FsZVRpbWVTdHJpbmcoKSksXG4gICAgICAgICAgY29sb3IocGFkUmlnaHQoQ3VycmVudEFjdGl2aXR5UHJpbnRlci5TVEFUVVNfV0lEVEgsIChyZXMuZXZlbnQuUmVzb3VyY2VTdGF0dXMgfHwgJycpLnNsaWNlKDAsIEN1cnJlbnRBY3Rpdml0eVByaW50ZXIuU1RBVFVTX1dJRFRIKSkpLFxuICAgICAgICAgIHBhZFJpZ2h0KHRoaXMucmVzb3VyY2VUeXBlQ29sdW1uV2lkdGgsIHJlcy5ldmVudC5SZXNvdXJjZVR5cGUgfHwgJycpLFxuICAgICAgICAgIGNvbG9yKGNoYWxrLmJvbGQoc2hvcnRlbig0MCwgcmVzb3VyY2VOYW1lKSkpLFxuICAgICAgICAgIHRoaXMuZmFpbHVyZVJlYXNvbk9uTmV4dExpbmUocmVzKSxcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICB0aGlzLmJsb2NrLmRpc3BsYXlMaW5lcyhsaW5lcyk7XG4gIH1cblxuICBwdWJsaWMgc3RvcCgpIHtcbiAgICBzdXBlci5zdG9wKCk7XG5cbiAgICAvLyBQcmludCBmYWlsdXJlcyBhdCB0aGUgZW5kXG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGZvciAoY29uc3QgZmFpbHVyZSBvZiB0aGlzLmZhaWx1cmVzKSB7XG4gICAgICAvLyBSb290IHN0YWNrIGZhaWx1cmVzIGFyZSBub3QgaW50ZXJlc3RpbmdcbiAgICAgIGlmICh0aGlzLmlzQWN0aXZpdHlGb3JUaGVTdGFjayhmYWlsdXJlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbGluZXMucHVzaChcbiAgICAgICAgdXRpbC5mb3JtYXQoXG4gICAgICAgICAgY2hhbGsucmVkKCclcyB8ICVzIHwgJXMgfCAlcyVzJykgKyAnXFxuJyxcbiAgICAgICAgICBwYWRMZWZ0KEN1cnJlbnRBY3Rpdml0eVByaW50ZXIuVElNRVNUQU1QX1dJRFRILCBuZXcgRGF0ZShmYWlsdXJlLmV2ZW50LlRpbWVzdGFtcCEpLnRvTG9jYWxlVGltZVN0cmluZygpKSxcbiAgICAgICAgICBwYWRSaWdodChDdXJyZW50QWN0aXZpdHlQcmludGVyLlNUQVRVU19XSURUSCwgKGZhaWx1cmUuZXZlbnQuUmVzb3VyY2VTdGF0dXMgfHwgJycpLnNsaWNlKDAsIEN1cnJlbnRBY3Rpdml0eVByaW50ZXIuU1RBVFVTX1dJRFRIKSksXG4gICAgICAgICAgcGFkUmlnaHQodGhpcy5yZXNvdXJjZVR5cGVDb2x1bW5XaWR0aCwgZmFpbHVyZS5ldmVudC5SZXNvdXJjZVR5cGUgfHwgJycpLFxuICAgICAgICAgIHNob3J0ZW4oNDAsIGZhaWx1cmUuZXZlbnQuTG9naWNhbFJlc291cmNlSWQgPz8gJycpLFxuICAgICAgICAgIHRoaXMuZmFpbHVyZVJlYXNvbk9uTmV4dExpbmUoZmFpbHVyZSksXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICBjb25zdCB0cmFjZSA9IGZhaWx1cmUubWV0YWRhdGE/LmVudHJ5Py50cmFjZTtcbiAgICAgIGlmICh0cmFjZSkge1xuICAgICAgICBsaW5lcy5wdXNoKGNoYWxrLnJlZChgXFx0JHt0cmFjZS5qb2luKCdcXG5cXHRcXFxcXyAnKX1cXG5gKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGlzcGxheSBpbiB0aGUgc2FtZSBibG9jayBzcGFjZSwgb3RoZXJ3aXNlIHdlJ3JlIGdvaW5nIHRvIGhhdmUgc2lsbHkgZW1wdHkgbGluZXMuXG4gICAgdGhpcy5ibG9jay5kaXNwbGF5TGluZXMobGluZXMpO1xuICAgIHRoaXMuYmxvY2sucmVtb3ZlRW1wdHlMaW5lcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9ncmVzc0Jhcih3aWR0aDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLnN0YWNrUHJvZ3Jlc3MgfHwgIXRoaXMuc3RhY2tQcm9ncmVzcy50b3RhbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCBmcmFjdGlvbiA9IE1hdGgubWluKHRoaXMuc3RhY2tQcm9ncmVzcy5jb21wbGV0ZWQgLyB0aGlzLnN0YWNrUHJvZ3Jlc3MudG90YWwsIDEpO1xuICAgIGNvbnN0IGlubmVyV2lkdGggPSBNYXRoLm1heCgxLCB3aWR0aCAtIDIpO1xuICAgIGNvbnN0IGNoYXJzID0gaW5uZXJXaWR0aCAqIGZyYWN0aW9uO1xuICAgIGNvbnN0IHJlbWFpbmRlciA9IGNoYXJzIC0gTWF0aC5mbG9vcihjaGFycyk7XG5cbiAgICBjb25zdCBmdWxsQ2hhcnMgPSBGVUxMX0JMT0NLLnJlcGVhdChNYXRoLmZsb29yKGNoYXJzKSk7XG4gICAgY29uc3QgcGFydGlhbENoYXIgPSBQQVJUSUFMX0JMT0NLW01hdGguZmxvb3IocmVtYWluZGVyICogUEFSVElBTF9CTE9DSy5sZW5ndGgpXTtcbiAgICBjb25zdCBmaWxsZXIgPSAnwrcnLnJlcGVhdChpbm5lcldpZHRoIC0gTWF0aC5mbG9vcihjaGFycykgLSAocGFydGlhbENoYXIgPyAxIDogMCkpO1xuXG4gICAgY29uc3QgY29sb3IgPSB0aGlzLnJvbGxpbmdCYWNrID8gY2hhbGsueWVsbG93IDogY2hhbGsuZ3JlZW47XG5cbiAgICByZXR1cm4gJ1snICsgY29sb3IoZnVsbENoYXJzICsgcGFydGlhbENoYXIpICsgZmlsbGVyICsgYF0gKCR7dGhpcy5zdGFja1Byb2dyZXNzLmNvbXBsZXRlZH0vJHt0aGlzLnN0YWNrUHJvZ3Jlc3MudG90YWx9KWA7XG4gIH1cblxuICBwcml2YXRlIGZhaWx1cmVSZWFzb25Pbk5leHRMaW5lKGFjdGl2aXR5OiBTdGFja0FjdGl2aXR5KSB7XG4gICAgcmV0dXJuIHN0YWNrRXZlbnRIYXNFcnJvck1lc3NhZ2UoYWN0aXZpdHkuZXZlbnQuUmVzb3VyY2VTdGF0dXMgPz8gJycpXG4gICAgICA/IGBcXG4keycgJy5yZXBlYXQoQ3VycmVudEFjdGl2aXR5UHJpbnRlci5USU1FU1RBTVBfV0lEVEggKyBDdXJyZW50QWN0aXZpdHlQcmludGVyLlNUQVRVU19XSURUSCArIDYpfSR7Y2hhbGsucmVkKHRoaXMuZmFpbHVyZVJlYXNvbihhY3Rpdml0eSkgPz8gJycpfWBcbiAgICAgIDogJyc7XG4gIH1cbn1cblxuY29uc3QgRlVMTF9CTE9DSyA9ICfilognO1xuY29uc3QgUEFSVElBTF9CTE9DSyA9IFsnJywgJ+KWjycsICfilo4nLCAn4paNJywgJ+KWjCcsICfilosnLCAn4paKJywgJ+KWiSddO1xuY29uc3QgTUFYX1BST0dSRVNTQkFSX1dJRFRIID0gNjA7XG5jb25zdCBNSU5fUFJPR1JFU1NCQVJfV0lEVEggPSAxMDtcbmNvbnN0IFBST0dSRVNTQkFSX0VYVFJBX1NQQUNFID1cbiAgICAyIC8qIGxlYWRpbmcgc3BhY2VzICovICsgMiAvKiBicmFja2V0cyAqLyArIDQgLyogcHJvZ3Jlc3MgbnVtYmVyIGRlY29yYXRpb24gKi8gKyA2OyAvKiAyIHByb2dyZXNzIG51bWJlcnMgdXAgdG8gOTk5ICovXG5cbmZ1bmN0aW9uIGNvbG9yRnJvbVN0YXR1c0FjdGl2aXR5KHN0YXR1cz86IHN0cmluZykge1xuICBpZiAoIXN0YXR1cykge1xuICAgIHJldHVybiBjaGFsay5yZXNldDtcbiAgfVxuXG4gIGlmIChzdGF0dXMuZW5kc1dpdGgoJ19GQUlMRUQnKSkge1xuICAgIHJldHVybiBjaGFsay5yZWQ7XG4gIH1cblxuICBpZiAoc3RhdHVzLnN0YXJ0c1dpdGgoJ0NSRUFURV8nKSB8fCBzdGF0dXMuc3RhcnRzV2l0aCgnVVBEQVRFXycpIHx8IHN0YXR1cy5zdGFydHNXaXRoKCdJTVBPUlRfJykpIHtcbiAgICByZXR1cm4gY2hhbGsuZ3JlZW47XG4gIH1cbiAgLy8gRm9yIHN0YWNrcywgaXQgbWF5IGFsc28gYmUgJ1VQRERBVEVfUk9MTEJBQ0tfSU5fUFJPR1JFU1MnXG4gIGlmIChzdGF0dXMuaW5kZXhPZignUk9MTEJBQ0tfJykgIT09IC0xKSB7XG4gICAgcmV0dXJuIGNoYWxrLnllbGxvdztcbiAgfVxuICBpZiAoc3RhdHVzLnN0YXJ0c1dpdGgoJ0RFTEVURV8nKSkge1xuICAgIHJldHVybiBjaGFsay55ZWxsb3c7XG4gIH1cblxuICByZXR1cm4gY2hhbGsucmVzZXQ7XG59XG5cbmZ1bmN0aW9uIHNob3J0ZW4obWF4V2lkdGg6IG51bWJlciwgcDogc3RyaW5nKSB7XG4gIGlmIChwLmxlbmd0aCA8PSBtYXhXaWR0aCkge1xuICAgIHJldHVybiBwO1xuICB9XG4gIGNvbnN0IGhhbGYgPSBNYXRoLmZsb29yKChtYXhXaWR0aCAtIDMpIC8gMik7XG4gIHJldHVybiBwLnNsaWNlKDAsIGhhbGYpICsgJy4uLicgKyBwLnNsaWNlKC1oYWxmKTtcbn1cblxuIl19
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImN1cnJlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUUvQixpQ0FBNkM7QUFDN0MsdUNBQTRDO0FBRTVDLHFDQUE2RDtBQUU3RDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLHNCQUF1QixTQUFRLDBCQUFtQjtJQUM3RDs7T0FFRztJQUNLLEtBQUssQ0FBa0I7SUFFL0IsWUFBWSxLQUEyQjtRQUNyQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUkseUJBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVTLEtBQUs7UUFDYixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFFakIsZ0NBQWdDO1FBQ2hDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsR0FBRyx1QkFBdUIsR0FBRyxDQUFDLEVBQUUscUJBQXFCLENBQUMsRUFDdkYscUJBQXFCLENBQ3RCLENBQUM7UUFDRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELHlFQUF5RTtRQUN6RSw4RUFBOEU7UUFDOUUsd0VBQXdFO1FBQ3hFLE1BQU0sT0FBTyxHQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNoRyxPQUFP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QUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgdHlwZSB7IEFjdGl2aXR5UHJpbnRlclByb3BzIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IEFjdGl2aXR5UHJpbnRlckJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgUmV3cml0YWJsZUJsb2NrIH0gZnJvbSAnLi9kaXNwbGF5JztcbmltcG9ydCB0eXBlIHsgU3RhY2tBY3Rpdml0eSB9IGZyb20gJy4uLy4uL3BheWxvYWRzJztcbmltcG9ydCB7IGlzRXJyb3JFdmVudCwgcGFkTGVmdCwgcGFkUmlnaHQgfSBmcm9tICcuLi8uLi91dGlsJztcblxuLyoqXG4gKiBBY3Rpdml0eSBQcmludGVyIHdoaWNoIHNob3dzIHRoZSByZXNvdXJjZXMgY3VycmVudGx5IGJlaW5nIHVwZGF0ZWRcbiAqXG4gKiBJdCB3aWxsIGNvbnRpbnVvdXNseSByZS11cGRhdGUgdGhlIHRlcm1pbmFsIGFuZCBzaG93IG9ubHkgdGhlIHJlc291cmNlc1xuICogdGhhdCBhcmUgY3VycmVudGx5IGJlaW5nIHVwZGF0ZWQsIGluIGFkZGl0aW9uIHRvIGEgcHJvZ3Jlc3MgYmFyIHdoaWNoXG4gKiBzaG93cyBob3cgZmFyIGFsb25nIHRoZSBkZXBsb3ltZW50IGlzLlxuICpcbiAqIFJlc291cmNlcyB0aGF0IGhhdmUgZmFpbGVkIHdpbGwgYWx3YXlzIGJlIHNob3duLCBhbmQgd2lsbCBiZSByZWNhcGl0dWxhdGVkXG4gKiBhbG9uZyB3aXRoIHRoZWlyIHN0YWNrIHRyYWNlIHdoZW4gdGhlIG1vbml0b3JpbmcgZW5kcy5cbiAqXG4gKiBSZXNvdXJjZXMgdGhhdCBmYWlsZWQgZGVwbG95bWVudCBiZWNhdXNlIHRoZXkgaGF2ZSBiZWVuIGNhbmNlbGxlZCBhcmVcbiAqIG5vdCBpbmNsdWRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEN1cnJlbnRBY3Rpdml0eVByaW50ZXIgZXh0ZW5kcyBBY3Rpdml0eVByaW50ZXJCYXNlIHtcbiAgLyoqXG4gICAqIENvbnRpbnVvdXNseSB3cml0ZSB0byB0aGUgc2FtZSBvdXRwdXQgYmxvY2suXG4gICAqL1xuICBwcml2YXRlIGJsb2NrOiBSZXdyaXRhYmxlQmxvY2s7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEFjdGl2aXR5UHJpbnRlclByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuYmxvY2sgPSBuZXcgUmV3cml0YWJsZUJsb2NrKHRoaXMuc3RyZWFtKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcmludCgpOiB2b2lkIHtcbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuXG4gICAgLy8gQWRkIGEgcHJvZ3Jlc3MgYmFyIGF0IHRoZSB0b3BcbiAgICBjb25zdCBwcm9ncmVzc1dpZHRoID0gTWF0aC5tYXgoXG4gICAgICBNYXRoLm1pbigodGhpcy5ibG9jay53aWR0aCA/PyA4MCkgLSBQUk9HUkVTU0JBUl9FWFRSQV9TUEFDRSAtIDEsIE1BWF9QUk9HUkVTU0JBUl9XSURUSCksXG4gICAgICBNSU5fUFJPR1JFU1NCQVJfV0lEVEgsXG4gICAgKTtcbiAgICBjb25zdCBwcm9nID0gdGhpcy5wcm9ncmVzc0Jhcihwcm9ncmVzc1dpZHRoKTtcbiAgICBpZiAocHJvZykge1xuICAgICAgbGluZXMucHVzaCgnICAnICsgcHJvZywgJycpO1xuICAgIH1cblxuICAgIC8vIE5vcm1hbGx5IHdlJ2Qgb25seSBwcmludCBcInJlc291cmNlcyBpbiBwcm9ncmVzc1wiLCBidXQgaXQncyBhbHNvIHVzZWZ1bFxuICAgIC8vIHRvIGtlZXAgYW4gZXllIG9uIHRoZSBmYWlsdXJlcyBhbmQga25vdyBhYm91dCB0aGUgc3BlY2lmaWMgZXJyb3JzIGFzcXVpY2tseVxuICAgIC8vIGFzIHBvc3NpYmxlICh3aGlsZSB0aGUgc3RhY2sgaXMgc3RpbGwgcm9sbGluZyBiYWNrKSwgc28gYWRkIHRob3NlIGluLlxuICAgIGNvbnN0IHRvUHJpbnQ6IFN0YWNrQWN0aXZpdHlbXSA9IFsuLi50aGlzLmZhaWx1cmVzLCAuLi5PYmplY3QudmFsdWVzKHRoaXMucmVzb3VyY2VzSW5Qcm9ncmVzcyldO1xuICAgIHRvUHJpbnQuc29ydCgoYSwgYikgPT4gYS5ldmVudC5UaW1lc3RhbXAhLmdldFRpbWUoKSAtIGIuZXZlbnQuVGltZXN0YW1wIS5nZXRUaW1lKCkpO1xuXG4gICAgbGluZXMucHVzaChcbiAgICAgIC4uLnRvUHJpbnQubWFwKChyZXMpID0+IHtcbiAgICAgICAgY29uc3QgY29sb3IgPSBjb2xvckZyb21TdGF0dXNBY3Rpdml0eShyZXMuZXZlbnQuUmVzb3VyY2VTdGF0dXMpO1xuICAgICAgICBjb25zdCByZXNvdXJjZU5hbWUgPSByZXMubWV0YWRhdGE/LmNvbnN0cnVjdFBhdGggPz8gcmVzLmV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkID8/ICcnO1xuXG4gICAgICAgIHJldHVybiB1dGlsLmZvcm1hdChcbiAgICAgICAgICAnJXMgfCAlcyB8ICVzIHwgJXMlcycsXG4gICAgICAgICAgcGFkTGVmdChDdXJyZW50QWN0aXZpdHlQcmludGVyLlRJTUVTVEFNUF9XSURUSCwgbmV3IERhdGUocmVzLmV2ZW50LlRpbWVzdGFtcCEpLnRvTG9jYWxlVGltZVN0cmluZygpKSxcbiAgICAgICAgICBjb2xvcihwYWRSaWdodChDdXJyZW50QWN0aXZpdHlQcmludGVyLlNUQVRVU19XSURUSCwgKHJlcy5ldmVudC5SZXNvdXJjZVN0YXR1cyB8fCAnJykuc2xpY2UoMCwgQ3VycmVudEFjdGl2aXR5UHJpbnRlci5TVEFUVVNfV0lEVEgpKSksXG4gICAgICAgICAgcGFkUmlnaHQodGhpcy5yZXNvdXJjZVR5cGVDb2x1bW5XaWR0aCwgcmVzLmV2ZW50LlJlc291cmNlVHlwZSB8fCAnJyksXG4gICAgICAgICAgY29sb3IoY2hhbGsuYm9sZChzaG9ydGVuKDQwLCByZXNvdXJjZU5hbWUpKSksXG4gICAgICAgICAgdGhpcy5mYWlsdXJlUmVhc29uT25OZXh0TGluZShyZXMpLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuYmxvY2suZGlzcGxheUxpbmVzKGxpbmVzKTtcbiAgfVxuXG4gIHB1YmxpYyBzdG9wKCkge1xuICAgIHN1cGVyLnN0b3AoKTtcblxuICAgIC8vIFByaW50IGZhaWx1cmVzIGF0IHRoZSBlbmRcbiAgICBjb25zdCBsaW5lcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBmYWlsdXJlIG9mIHRoaXMuZmFpbHVyZXMpIHtcbiAgICAgIC8vIFJvb3Qgc3RhY2sgZmFpbHVyZXMgYXJlIG5vdCBpbnRlcmVzdGluZ1xuICAgICAgaWYgKHRoaXMuaXNBY3Rpdml0eUZvclRoZVN0YWNrKGZhaWx1cmUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBsaW5lcy5wdXNoKFxuICAgICAgICB1dGlsLmZvcm1hdChcbiAgICAgICAgICBjaGFsay5yZWQoJyVzIHwgJXMgfCAlcyB8ICVzJXMnKSArICdcXG4nLFxuICAgICAgICAgIHBhZExlZnQoQ3VycmVudEFjdGl2aXR5UHJpbnRlci5USU1FU1RBTVBfV0lEVEgsIG5ldyBEYXRlKGZhaWx1cmUuZXZlbnQuVGltZXN0YW1wISkudG9Mb2NhbGVUaW1lU3RyaW5nKCkpLFxuICAgICAgICAgIHBhZFJpZ2h0KEN1cnJlbnRBY3Rpdml0eVByaW50ZXIuU1RBVFVTX1dJRFRILCAoZmFpbHVyZS5ldmVudC5SZXNvdXJjZVN0YXR1cyB8fCAnJykuc2xpY2UoMCwgQ3VycmVudEFjdGl2aXR5UHJpbnRlci5TVEFUVVNfV0lEVEgpKSxcbiAgICAgICAgICBwYWRSaWdodCh0aGlzLnJlc291cmNlVHlwZUNvbHVtbldpZHRoLCBmYWlsdXJlLmV2ZW50LlJlc291cmNlVHlwZSB8fCAnJyksXG4gICAgICAgICAgc2hvcnRlbig0MCwgZmFpbHVyZS5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCA/PyAnJyksXG4gICAgICAgICAgdGhpcy5mYWlsdXJlUmVhc29uT25OZXh0TGluZShmYWlsdXJlKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHRyYWNlID0gZmFpbHVyZS5tZXRhZGF0YT8uZW50cnk/LnRyYWNlO1xuICAgICAgaWYgKHRyYWNlKSB7XG4gICAgICAgIGxpbmVzLnB1c2goY2hhbGsucmVkKGBcXHQke3RyYWNlLmpvaW4oJ1xcblxcdFxcXFxfICcpfVxcbmApKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEaXNwbGF5IGluIHRoZSBzYW1lIGJsb2NrIHNwYWNlLCBvdGhlcndpc2Ugd2UncmUgZ29pbmcgdG8gaGF2ZSBzaWxseSBlbXB0eSBsaW5lcy5cbiAgICB0aGlzLmJsb2NrLmRpc3BsYXlMaW5lcyhsaW5lcyk7XG4gICAgdGhpcy5ibG9jay5yZW1vdmVFbXB0eUxpbmVzKCk7XG4gIH1cblxuICBwcml2YXRlIHByb2dyZXNzQmFyKHdpZHRoOiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuc3RhY2tQcm9ncmVzcyB8fCAhdGhpcy5zdGFja1Byb2dyZXNzLnRvdGFsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IGZyYWN0aW9uID0gTWF0aC5taW4odGhpcy5zdGFja1Byb2dyZXNzLmNvbXBsZXRlZCAvIHRoaXMuc3RhY2tQcm9ncmVzcy50b3RhbCwgMSk7XG4gICAgY29uc3QgaW5uZXJXaWR0aCA9IE1hdGgubWF4KDEsIHdpZHRoIC0gMik7XG4gICAgY29uc3QgY2hhcnMgPSBpbm5lcldpZHRoICogZnJhY3Rpb247XG4gICAgY29uc3QgcmVtYWluZGVyID0gY2hhcnMgLSBNYXRoLmZsb29yKGNoYXJzKTtcblxuICAgIGNvbnN0IGZ1bGxDaGFycyA9IEZVTExfQkxPQ0sucmVwZWF0KE1hdGguZmxvb3IoY2hhcnMpKTtcbiAgICBjb25zdCBwYXJ0aWFsQ2hhciA9IFBBUlRJQUxfQkxPQ0tbTWF0aC5mbG9vcihyZW1haW5kZXIgKiBQQVJUSUFMX0JMT0NLLmxlbmd0aCldO1xuICAgIGNvbnN0IGZpbGxlciA9ICfCtycucmVwZWF0KGlubmVyV2lkdGggLSBNYXRoLmZsb29yKGNoYXJzKSAtIChwYXJ0aWFsQ2hhciA/IDEgOiAwKSk7XG5cbiAgICBjb25zdCBjb2xvciA9IHRoaXMucm9sbGluZ0JhY2sgPyBjaGFsay55ZWxsb3cgOiBjaGFsay5ncmVlbjtcblxuICAgIHJldHVybiAnWycgKyBjb2xvcihmdWxsQ2hhcnMgKyBwYXJ0aWFsQ2hhcikgKyBmaWxsZXIgKyBgXSAoJHt0aGlzLnN0YWNrUHJvZ3Jlc3MuY29tcGxldGVkfS8ke3RoaXMuc3RhY2tQcm9ncmVzcy50b3RhbH0pYDtcbiAgfVxuXG4gIHByaXZhdGUgZmFpbHVyZVJlYXNvbk9uTmV4dExpbmUoYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHkpIHtcbiAgICByZXR1cm4gaXNFcnJvckV2ZW50KGFjdGl2aXR5LmV2ZW50KVxuICAgICAgPyBgXFxuJHsnICcucmVwZWF0KEN1cnJlbnRBY3Rpdml0eVByaW50ZXIuVElNRVNUQU1QX1dJRFRIICsgQ3VycmVudEFjdGl2aXR5UHJpbnRlci5TVEFUVVNfV0lEVEggKyA2KX0ke2NoYWxrLnJlZCh0aGlzLmZhaWx1cmVSZWFzb24oYWN0aXZpdHkpID8/ICcnKX1gXG4gICAgICA6ICcnO1xuICB9XG59XG5cbmNvbnN0IEZVTExfQkxPQ0sgPSAn4paIJztcbmNvbnN0IFBBUlRJQUxfQkxPQ0sgPSBbJycsICfilo8nLCAn4paOJywgJ+KWjScsICfilownLCAn4paLJywgJ+KWiicsICfiloknXTtcbmNvbnN0IE1BWF9QUk9HUkVTU0JBUl9XSURUSCA9IDYwO1xuY29uc3QgTUlOX1BST0dSRVNTQkFSX1dJRFRIID0gMTA7XG5jb25zdCBQUk9HUkVTU0JBUl9FWFRSQV9TUEFDRSA9XG4gICAgMiAvKiBsZWFkaW5nIHNwYWNlcyAqLyArIDIgLyogYnJhY2tldHMgKi8gKyA0IC8qIHByb2dyZXNzIG51bWJlciBkZWNvcmF0aW9uICovICsgNjsgLyogMiBwcm9ncmVzcyBudW1iZXJzIHVwIHRvIDk5OSAqL1xuXG5mdW5jdGlvbiBjb2xvckZyb21TdGF0dXNBY3Rpdml0eShzdGF0dXM/OiBzdHJpbmcpIHtcbiAgaWYgKCFzdGF0dXMpIHtcbiAgICByZXR1cm4gY2hhbGsucmVzZXQ7XG4gIH1cblxuICBpZiAoc3RhdHVzLmVuZHNXaXRoKCdfRkFJTEVEJykpIHtcbiAgICByZXR1cm4gY2hhbGsucmVkO1xuICB9XG5cbiAgaWYgKHN0YXR1cy5zdGFydHNXaXRoKCdDUkVBVEVfJykgfHwgc3RhdHVzLnN0YXJ0c1dpdGgoJ1VQREFURV8nKSB8fCBzdGF0dXMuc3RhcnRzV2l0aCgnSU1QT1JUXycpKSB7XG4gICAgcmV0dXJuIGNoYWxrLmdyZWVuO1xuICB9XG4gIC8vIEZvciBzdGFja3MsIGl0IG1heSBhbHNvIGJlICdVUEREQVRFX1JPTExCQUNLX0lOX1BST0dSRVNTJ1xuICBpZiAoc3RhdHVzLmluZGV4T2YoJ1JPTExCQUNLXycpICE9PSAtMSkge1xuICAgIHJldHVybiBjaGFsay55ZWxsb3c7XG4gIH1cbiAgaWYgKHN0YXR1cy5zdGFydHNXaXRoKCdERUxFVEVfJykpIHtcbiAgICByZXR1cm4gY2hhbGsueWVsbG93O1xuICB9XG5cbiAgcmV0dXJuIGNoYWxrLnJlc2V0O1xufVxuXG5mdW5jdGlvbiBzaG9ydGVuKG1heFdpZHRoOiBudW1iZXIsIHA6IHN0cmluZykge1xuICBpZiAocC5sZW5ndGggPD0gbWF4V2lkdGgpIHtcbiAgICByZXR1cm4gcDtcbiAgfVxuICBjb25zdCBoYWxmID0gTWF0aC5mbG9vcigobWF4V2lkdGggLSAzKSAvIDIpO1xuICByZXR1cm4gcC5zbGljZSgwLCBoYWxmKSArICcuLi4nICsgcC5zbGljZSgtaGFsZik7XG59XG5cbiJdfQ==
@@ -11,6 +11,10 @@ export declare class ToolkitError extends Error {
11
11
  * Determines if a given error is an instance of AuthenticationError.
12
12
  */
13
13
  static isAuthenticationError(x: any): x is AuthenticationError;
14
+ /**
15
+ * Determines if a given error is an instance of DeploymentError.
16
+ */
17
+ static isDeploymentError(x: any): x is DeploymentError;
14
18
  /**
15
19
  * Determines if a given error is an instance of AssemblyError.
16
20
  */
@@ -22,7 +26,7 @@ export declare class ToolkitError extends Error {
22
26
  /**
23
27
  * A ToolkitError with an original error as cause
24
28
  */
25
- static withCause(message: string, error: unknown): ToolkitError;
29
+ static withCause(errorCode: string, message: string, error: unknown): ToolkitError;
26
30
  /**
27
31
  * The type of the error, defaults to "toolkit".
28
32
  */
@@ -35,7 +39,7 @@ export declare class ToolkitError extends Error {
35
39
  * The specific original cause of the error, if available
36
40
  */
37
41
  readonly cause?: unknown;
38
- constructor(message: string, type?: string, cause?: unknown);
42
+ constructor(errorCode: string, message: string, type?: string, cause?: unknown);
39
43
  }
40
44
  /**
41
45
  * Represents an authentication-specific error in the AWS CDK Toolkit.
@@ -45,7 +49,7 @@ export declare class AuthenticationError extends ToolkitError {
45
49
  * Denotes the source of the error as user.
46
50
  */
47
51
  readonly source = "user";
48
- constructor(message: string);
52
+ constructor(errorCode: string, message: string);
49
53
  }
50
54
  /**
51
55
  * Represents an error causes by cloud assembly synthesis
@@ -72,7 +76,24 @@ export declare class AssemblyError extends ToolkitError {
72
76
  * Absence indicates synthesis didn't fully complete.
73
77
  */
74
78
  readonly stacks?: cxapi.CloudFormationStackArtifact[];
79
+ private _synthErrorCode;
75
80
  private constructor();
81
+ /**
82
+ * The synthesis error code
83
+ */
84
+ get synthErrorCode(): string | undefined;
85
+ attachSynthesisErrorCode(synthesisErrorCode: string): void;
86
+ }
87
+ /**
88
+ * Represents a deployment-related error in the AWS CDK Toolkit.
89
+ */
90
+ export declare class DeploymentError extends ToolkitError {
91
+ /**
92
+ * Denotes the source of the error as user.
93
+ */
94
+ readonly source = "user";
95
+ readonly deploymentErrorCode: string;
96
+ constructor(message: string, deploymentErrorCode: string);
76
97
  }
77
98
  /**
78
99
  * Represents an error originating from a Context Provider
@@ -85,12 +106,12 @@ export declare class ContextProviderError extends ToolkitError {
85
106
  /**
86
107
  * A ContextProviderError with an original error as cause
87
108
  */
88
- static withCause(message: string, error: unknown): ContextProviderError;
109
+ static withCause(errorCode: string, message: string, error: unknown): ContextProviderError;
89
110
  /**
90
111
  * Denotes the source of the error as user.
91
112
  */
92
113
  readonly source = "user";
93
- constructor(message: string, cause?: unknown);
114
+ constructor(errorCode: string, message: string, cause?: unknown);
94
115
  }
95
116
  /**
96
117
  * A specific context provider lookup failure indicating no results where found for a context query
@@ -98,4 +119,9 @@ export declare class ContextProviderError extends ToolkitError {
98
119
  export declare class NoResultsFoundError extends ContextProviderError {
99
120
  constructor(message: string);
100
121
  }
122
+ export declare abstract class DeploymentErrorCodes {
123
+ static readonly STACK_DISAPPEARED_ERROR_CODE = "StackDisappeared";
124
+ static readonly UNKNOWN_ERROR = "UnknownError";
125
+ static readonly PRIVATE_RESOURCE_ERROR = "PrivateResourceError";
126
+ }
101
127
  //# sourceMappingURL=toolkit-error.d.ts.map
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NoResultsFoundError = exports.ContextProviderError = exports.AssemblyError = exports.AuthenticationError = exports.ToolkitError = void 0;
3
+ exports.DeploymentErrorCodes = exports.NoResultsFoundError = exports.ContextProviderError = exports.DeploymentError = exports.AssemblyError = exports.AuthenticationError = exports.ToolkitError = void 0;
4
4
  const TOOLKIT_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit-lib.ToolkitError');
5
5
  const AUTHENTICATION_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit-lib.AuthenticationError');
6
+ const DEPLOYMENT_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit-lib.DeploymentError');
6
7
  const ASSEMBLY_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit-lib.AssemblyError');
7
8
  const CONTEXT_PROVIDER_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit-lib.ContextProviderError');
8
9
  const NO_RESULTS_FOUND_ERROR_SYMBOL = Symbol.for('@aws-cdk/toolkit-lib.NoResultsFoundError');
@@ -22,6 +23,12 @@ class ToolkitError extends Error {
22
23
  static isAuthenticationError(x) {
23
24
  return ToolkitError.isToolkitError(x) && AUTHENTICATION_ERROR_SYMBOL in x;
24
25
  }
26
+ /**
27
+ * Determines if a given error is an instance of DeploymentError.
28
+ */
29
+ static isDeploymentError(x) {
30
+ return ToolkitError.isToolkitError(x) && DEPLOYMENT_ERROR_SYMBOL in x;
31
+ }
25
32
  /**
26
33
  * Determines if a given error is an instance of AssemblyError.
27
34
  */
@@ -37,8 +44,8 @@ class ToolkitError extends Error {
37
44
  /**
38
45
  * A ToolkitError with an original error as cause
39
46
  */
40
- static withCause(message, error) {
41
- return new ToolkitError(message, 'toolkit', error);
47
+ static withCause(errorCode, message, error) {
48
+ return new ToolkitError(errorCode, message, 'toolkit', error);
42
49
  }
43
50
  /**
44
51
  * The type of the error, defaults to "toolkit".
@@ -52,11 +59,11 @@ class ToolkitError extends Error {
52
59
  * The specific original cause of the error, if available
53
60
  */
54
61
  cause;
55
- constructor(message, type = 'toolkit', cause) {
62
+ constructor(errorCode, message, type = 'toolkit', cause) {
56
63
  super(message);
64
+ this.name = errorCode;
57
65
  Object.setPrototypeOf(this, ToolkitError.prototype);
58
66
  Object.defineProperty(this, TOOLKIT_ERROR_SYMBOL, { value: true });
59
- this.name = new.target.name;
60
67
  this.type = type;
61
68
  this.source = 'toolkit';
62
69
  this.cause = cause;
@@ -71,8 +78,8 @@ class AuthenticationError extends ToolkitError {
71
78
  * Denotes the source of the error as user.
72
79
  */
73
80
  source = 'user';
74
- constructor(message) {
75
- super(message, 'authentication');
81
+ constructor(errorCode, message) {
82
+ super(errorCode, message, 'authentication');
76
83
  Object.setPrototypeOf(this, AuthenticationError.prototype);
77
84
  Object.defineProperty(this, AUTHENTICATION_ERROR_SYMBOL, { value: true });
78
85
  }
@@ -107,14 +114,41 @@ class AssemblyError extends ToolkitError {
107
114
  * Absence indicates synthesis didn't fully complete.
108
115
  */
109
116
  stacks;
117
+ _synthErrorCode;
110
118
  constructor(message, stacks, cause) {
111
- super(message, 'assembly', cause);
119
+ super('AssemblyError', message, 'assembly', cause);
112
120
  Object.setPrototypeOf(this, AssemblyError.prototype);
113
121
  Object.defineProperty(this, ASSEMBLY_ERROR_SYMBOL, { value: true });
114
122
  this.stacks = stacks;
115
123
  }
124
+ /**
125
+ * The synthesis error code
126
+ */
127
+ get synthErrorCode() {
128
+ return this._synthErrorCode;
129
+ }
130
+ attachSynthesisErrorCode(synthesisErrorCode) {
131
+ this._synthErrorCode = synthesisErrorCode;
132
+ }
116
133
  }
117
134
  exports.AssemblyError = AssemblyError;
135
+ /**
136
+ * Represents a deployment-related error in the AWS CDK Toolkit.
137
+ */
138
+ class DeploymentError extends ToolkitError {
139
+ /**
140
+ * Denotes the source of the error as user.
141
+ */
142
+ source = 'user';
143
+ deploymentErrorCode;
144
+ constructor(message, deploymentErrorCode) {
145
+ super('DeploymentError', message, 'deployment');
146
+ Object.setPrototypeOf(this, DeploymentError.prototype);
147
+ Object.defineProperty(this, DEPLOYMENT_ERROR_SYMBOL, { value: true });
148
+ this.deploymentErrorCode = deploymentErrorCode;
149
+ }
150
+ }
151
+ exports.DeploymentError = DeploymentError;
118
152
  /**
119
153
  * Represents an error originating from a Context Provider
120
154
  */
@@ -128,15 +162,15 @@ class ContextProviderError extends ToolkitError {
128
162
  /**
129
163
  * A ContextProviderError with an original error as cause
130
164
  */
131
- static withCause(message, error) {
132
- return new ContextProviderError(message, error);
165
+ static withCause(errorCode, message, error) {
166
+ return new ContextProviderError(errorCode, message, error);
133
167
  }
134
168
  /**
135
169
  * Denotes the source of the error as user.
136
170
  */
137
171
  source = 'user';
138
- constructor(message, cause) {
139
- super(message, 'context-provider', cause);
172
+ constructor(errorCode, message, cause) {
173
+ super(errorCode, message, 'context-provider', cause);
140
174
  Object.setPrototypeOf(this, ContextProviderError.prototype);
141
175
  Object.defineProperty(this, CONTEXT_PROVIDER_ERROR_SYMBOL, { value: true });
142
176
  }
@@ -147,10 +181,16 @@ exports.ContextProviderError = ContextProviderError;
147
181
  */
148
182
  class NoResultsFoundError extends ContextProviderError {
149
183
  constructor(message) {
150
- super(message);
184
+ super('NoResultsFound', message);
151
185
  Object.setPrototypeOf(this, NoResultsFoundError.prototype);
152
186
  Object.defineProperty(this, NO_RESULTS_FOUND_ERROR_SYMBOL, { value: true });
153
187
  }
154
188
  }
155
189
  exports.NoResultsFoundError = NoResultsFoundError;
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGtpdC1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRvb2xraXQtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFDN0UsTUFBTSwyQkFBMkIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7QUFDM0YsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7QUFDL0UsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7QUFDOUYsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7QUFFN0Y7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxLQUFLO0lBQ3JDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFNO1FBQ2pDLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLG9CQUFvQixJQUFJLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBTTtRQUN4QyxPQUFPLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksMkJBQTJCLElBQUksQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBTTtRQUNsQyxPQUFPLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUkscUJBQXFCLElBQUksQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFNO1FBQ3pDLE9BQU8sWUFBWSxDQUFDLGNBQWMs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QyxTQUFTLENBQUMsT0FBZSxFQUFFLEtBQWM7UUFDckQsT0FBTyxJQUFJLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDYSxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBRWhDLFlBQVksT0FBZSxFQUFFLEtBQWU7UUFDMUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7Q0FDRjtBQXpCRCxvREF5QkM7QUFFRDs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsb0JBQW9CO0lBQzNELFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7Q0FDRjtBQU5ELGtEQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGknO1xuXG5jb25zdCBUT09MS0lUX0VSUk9SX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL3Rvb2xraXQtbGliLlRvb2xraXRFcnJvcicpO1xuY29uc3QgQVVUSEVOVElDQVRJT05fRVJST1JfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvdG9vbGtpdC1saWIuQXV0aGVudGljYXRpb25FcnJvcicpO1xuY29uc3QgQVNTRU1CTFlfRVJST1JfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvdG9vbGtpdC1saWIuQXNzZW1ibHlFcnJvcicpO1xuY29uc3QgQ09OVEVYVF9QUk9WSURFUl9FUlJPUl9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay90b29sa2l0LWxpYi5Db250ZXh0UHJvdmlkZXJFcnJvcicpO1xuY29uc3QgTk9fUkVTVUxUU19GT1VORF9FUlJPUl9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay90b29sa2l0LWxpYi5Ob1Jlc3VsdHNGb3VuZEVycm9yJyk7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGdlbmVyYWwgdG9vbGtpdCBlcnJvciBpbiB0aGUgQVdTIENESyBUb29sa2l0LlxuICovXG5leHBvcnQgY2xhc3MgVG9vbGtpdEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIGVycm9yIGlzIGFuIGluc3RhbmNlIG9mIFRvb2xraXRFcnJvci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNUb29sa2l0RXJyb3IoeDogYW55KTogeCBpcyBUb29sa2l0RXJyb3Ige1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZih4KSA9PT0gJ29iamVjdCcgJiYgVE9PTEtJVF9FUlJPUl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gZXJyb3IgaXMgYW4gaW5zdGFuY2Ugb2YgQXV0aGVudGljYXRpb25FcnJvci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNBdXRoZW50aWNhdGlvbkVycm9yKHg6IGFueSk6IHggaXMgQXV0aGVudGljYXRpb25FcnJvciB7XG4gICAgcmV0dXJuIFRvb2xraXRFcnJvci5pc1Rvb2xraXRFcnJvcih4KSAmJiBBVVRIRU5USUNBVElPTl9FUlJPUl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gZXJyb3IgaXMgYW4gaW5zdGFuY2Ugb2YgQXNzZW1ibHlFcnJvci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNBc3NlbWJseUVycm9yKHg6IGFueSk6IHggaXMgQXNzZW1ibHlFcnJvciB7XG4gICAgcmV0dXJuIFRvb2xraXRFcnJvci5pc1Rvb2xraXRFcnJvcih4KSAmJiBBU1NFTUJMWV9FUlJPUl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gZXJyb3IgaXMgYW4gaW5zdGFuY2Ugb2YgQ29udGV4dFByb3ZpZGVyRXJyb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzQ29udGV4dFByb3ZpZGVyRXJyb3IoeDogYW55KTogeCBpcyBDb250ZXh0UHJvdmlkZXJFcnJvciB7XG4gICAgcmV0dXJuIFRvb2xraXRFcnJvci5pc1Rvb2xraXRFcnJvcih4KSAmJiBDT05URVhUX1BST1ZJREVSX0VSUk9SX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgVG9vbGtpdEVycm9yIHdpdGggYW4gb3JpZ2luYWwgZXJyb3IgYXMgY2F1c2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aENhdXNlKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I6IHVua25vd24pOiBUb29sa2l0RXJyb3Ige1xuICAgIHJldHVybiBuZXcgVG9vbGtpdEVycm9yKG1lc3NhZ2UsICd0b29sa2l0JywgZXJyb3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBlcnJvciwgZGVmYXVsdHMgdG8gXCJ0b29sa2l0XCIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZW5vdGVzIHRoZSBzb3VyY2Ugb2YgdGhlIGVycm9yIGFzIHRoZSB0b29sa2l0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZTogJ3Rvb2xraXQnIHwgJ3VzZXInO1xuXG4gIC8qKlxuICAgKiBUaGUgc3BlY2lmaWMgb3JpZ2luYWwgY2F1c2Ugb2YgdGhlIGVycm9yLCBpZiBhdmFpbGFibGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjYXVzZT86IHVua25vd247XG5cbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcgPSAndG9vbGtpdCcsIGNhdXNlPzogdW5rbm93bikge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBUb29sa2l0RXJyb3IucHJvdG90eXBlKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgVE9PTEtJVF9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gICAgdGhpcy5uYW1lID0gbmV3LnRhcmdldC5uYW1lO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5zb3VyY2UgPSAndG9vbGtpdCc7XG4gICAgdGhpcy5jYXVzZSA9IGNhdXNlO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBhdXRoZW50aWNhdGlvbi1zcGVjaWZpYyBlcnJvciBpbiB0aGUgQVdTIENESyBUb29sa2l0LlxuICovXG5leHBvcnQgY2xhc3MgQXV0aGVudGljYXRpb25FcnJvciBleHRlbmRzIFRvb2xraXRFcnJvciB7XG4gIC8qKlxuICAgKiBEZW5vdGVzIHRoZSBzb3VyY2Ugb2YgdGhlIGVycm9yIGFzIHVzZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlID0gJ3VzZXInO1xuXG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UsICdhdXRoZW50aWNhdGlvbicpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBBdXRoZW50aWNhdGlvbkVycm9yLnByb3RvdHlwZSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIEFVVEhFTlRJQ0FUSU9OX0VSUk9SX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gZXJyb3IgY2F1c2VzIGJ5IGNsb3VkIGFzc2VtYmx5IHN5bnRoZXNpc1xuICpcbiAqIFRoaXMgaW5jbHVkZXMgZXJyb3JzIHRocm93biBkdXJpbmcgYXBwIGV4ZWN1dGlvbiwgYXMgd2VsbCBhcyBmYWlsaW5nIGFubm90YXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgQXNzZW1ibHlFcnJvciBleHRlbmRzIFRvb2xraXRFcnJvciB7XG4gIC8qKlxuICAgKiBBbiBBc3NlbWJseUVycm9yIHdpdGggYW4gb3JpZ2luYWwgZXJyb3IgYXMgY2F1c2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aENhdXNlKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I6IHVua25vd24pOiBBc3NlbWJseUVycm9yIHtcbiAgICByZXR1cm4gbmV3IEFzc2VtYmx5RXJyb3IobWVzc2FnZSwgdW5kZWZpbmVkLCBlcnJvcik7XG4gIH1cblxuICAvKipcbiAgICogQW4gQXNzZW1ibHlFcnJvciB3aXRoIGEgbGlzdCBvZiBzdGFja3MgYXMgY2F1c2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aFN0YWNrcyhtZXNzYWdlOiBzdHJpbmcsIHN0YWNrcz86IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdFtdKTogQXNzZW1ibHlFcnJvciB7XG4gICAgcmV0dXJuIG5ldyBBc3NlbWJseUVycm9yKG1lc3NhZ2UsIHN0YWNrcyk7XG4gIH1cblxuICAvKipcbiAgICogRGVub3RlcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvciBhcyB1c2VyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZSA9ICd1c2VyJztcblxuICAvKipcbiAgICogVGhlIHN0YWNrcyB0aGF0IGNhdXNlZCB0aGUgZXJyb3IsIGlmIGF2YWlsYWJsZVxuICAgKlxuICAgKiBUaGUgYG1lc3NhZ2VzYCBwcm9wZXJ0eSBvZiBlYWNoIGBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3RgIHdpbGwgY29udGFpbiB0aGUgcmVzcGVjdGl2ZSBlcnJvcnMuXG4gICAqIEFic2VuY2UgaW5kaWNhdGVzIHN5bnRoZXNpcyBkaWRuJ3QgZnVsbHkgY29tcGxldGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhY2tzPzogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0W107XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHN0YWNrcz86IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdFtdLCBjYXVzZT86IHVua25vd24pIHtcbiAgICBzdXBlcihtZXNzYWdlLCAnYXNzZW1ibHknLCBjYXVzZSk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEFzc2VtYmx5RXJyb3IucHJvdG90eXBlKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgQVNTRU1CTFlfRVJST1JfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuICAgIHRoaXMuc3RhY2tzID0gc3RhY2tzO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBlcnJvciBvcmlnaW5hdGluZyBmcm9tIGEgQ29udGV4dCBQcm92aWRlclxuICovXG5leHBvcnQgY2xhc3MgQ29udGV4dFByb3ZpZGVyRXJyb3IgZXh0ZW5kcyBUb29sa2l0RXJyb3Ige1xuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIGVycm9yIGlzIGFuIGluc3RhbmNlIG9mIE5vUmVzdWx0c0ZvdW5kRXJyb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzTm9SZXN1bHRzRm91bmRFcnJvcih4OiBhbnkpOiB4IGlzIE5vUmVzdWx0c0ZvdW5kRXJyb3Ige1xuICAgIHJldHVybiBUb29sa2l0RXJyb3IuaXNDb250ZXh0UHJvdmlkZXJFcnJvcih4KSAmJiBOT19SRVNVTFRTX0ZPVU5EX0VSUk9SX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgQ29udGV4dFByb3ZpZGVyRXJyb3Igd2l0aCBhbiBvcmlnaW5hbCBlcnJvciBhcyBjYXVzZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoQ2F1c2UobWVzc2FnZTogc3RyaW5nLCBlcnJvcjogdW5rbm93bik6IENvbnRleHRQcm92aWRlckVycm9yIHtcbiAgICByZXR1cm4gbmV3IENvbnRleHRQcm92aWRlckVycm9yKG1lc3NhZ2UsIGVycm9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZW5vdGVzIHRoZSBzb3VyY2Ugb2YgdGhlIGVycm9yIGFzIHVzZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlID0gJ3VzZXInO1xuXG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgY2F1c2U/OiB1bmtub3duKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgJ2NvbnRleHQtcHJvdmlkZXInLCBjYXVzZSk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIENvbnRleHRQcm92aWRlckVycm9yLnByb3RvdHlwZSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIENPTlRFWFRfUFJPVklERVJfRVJST1JfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuICB9XG59XG5cbi8qKlxuICogQSBzcGVjaWZpYyBjb250ZXh0IHByb3ZpZGVyIGxvb2t1cCBmYWlsdXJlIGluZGljYXRpbmcgbm8gcmVzdWx0cyB3aGVyZSBmb3VuZCBmb3IgYSBjb250ZXh0IHF1ZXJ5XG4gKi9cbmV4cG9ydCBjbGFzcyBOb1Jlc3VsdHNGb3VuZEVycm9yIGV4dGVuZHMgQ29udGV4dFByb3ZpZGVyRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgTm9SZXN1bHRzRm91bmRFcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBOT19SRVNVTFRTX0ZPVU5EX0VSUk9SX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgfVxufVxuIl19
190
+ class DeploymentErrorCodes {
191
+ static STACK_DISAPPEARED_ERROR_CODE = 'StackDisappeared';
192
+ static UNKNOWN_ERROR = 'UnknownError';
193
+ static PRIVATE_RESOURCE_ERROR = 'PrivateResourceError';
194
+ }
195
+ exports.DeploymentErrorCodes = DeploymentErrorCodes;
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGtpdC1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRvb2xraXQtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFDN0UsTUFBTSwyQkFBMkIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7QUFDM0YsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7QUFDbkYsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7QUFDL0UsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7QUFDOUYsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7QUFFN0Y7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxLQUFLO0lBQ3JDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFNO1FBQ2pDLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLG9CQUFvQixJQUFJLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBTTtRQUN4QyxPQUFPLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksMkJBQTJCLElBQUksQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFNO1FBQ3BDLE9BQU8sWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSx1QkFBdUIsSUFBSSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVEOztP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R0FBRyxNQUFNLENBQUM7SUFFaEMsWUFBWSxTQUFpQixFQUFFLE9BQWUsRUFBRSxLQUFlO1FBQzdELEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLDZCQUE2QixFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztDQUNGO0FBekJELG9EQXlCQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxvQkFBb0I7SUFDM0QsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7Q0FDRjtBQU5ELGtEQU1DO0FBRUQsTUFBc0Isb0JBQW9CO0lBQ2pDLE1BQU0sQ0FBVSw0QkFBNEIsR0FBRyxrQkFBa0IsQ0FBQztJQUNsRSxNQUFNLENBQVUsYUFBYSxHQUFHLGNBQWMsQ0FBQztJQUMvQyxNQUFNLENBQVUsc0JBQXNCLEdBQUcsc0JBQXNCLENBQUM7O0FBSHpFLG9EQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGknO1xuXG5jb25zdCBUT09MS0lUX0VSUk9SX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL3Rvb2xraXQtbGliLlRvb2xraXRFcnJvcicpO1xuY29uc3QgQVVUSEVOVElDQVRJT05fRVJST1JfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvdG9vbGtpdC1saWIuQXV0aGVudGljYXRpb25FcnJvcicpO1xuY29uc3QgREVQTE9ZTUVOVF9FUlJPUl9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay90b29sa2l0LWxpYi5EZXBsb3ltZW50RXJyb3InKTtcbmNvbnN0IEFTU0VNQkxZX0VSUk9SX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL3Rvb2xraXQtbGliLkFzc2VtYmx5RXJyb3InKTtcbmNvbnN0IENPTlRFWFRfUFJPVklERVJfRVJST1JfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvdG9vbGtpdC1saWIuQ29udGV4dFByb3ZpZGVyRXJyb3InKTtcbmNvbnN0IE5PX1JFU1VMVFNfRk9VTkRfRVJST1JfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvdG9vbGtpdC1saWIuTm9SZXN1bHRzRm91bmRFcnJvcicpO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBnZW5lcmFsIHRvb2xraXQgZXJyb3IgaW4gdGhlIEFXUyBDREsgVG9vbGtpdC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRvb2xraXRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYSBnaXZlbiBlcnJvciBpcyBhbiBpbnN0YW5jZSBvZiBUb29sa2l0RXJyb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVG9vbGtpdEVycm9yKHg6IGFueSk6IHggaXMgVG9vbGtpdEVycm9yIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YoeCkgPT09ICdvYmplY3QnICYmIFRPT0xLSVRfRVJST1JfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIGVycm9yIGlzIGFuIGluc3RhbmNlIG9mIEF1dGhlbnRpY2F0aW9uRXJyb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzQXV0aGVudGljYXRpb25FcnJvcih4OiBhbnkpOiB4IGlzIEF1dGhlbnRpY2F0aW9uRXJyb3Ige1xuICAgIHJldHVybiBUb29sa2l0RXJyb3IuaXNUb29sa2l0RXJyb3IoeCkgJiYgQVVUSEVOVElDQVRJT05fRVJST1JfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIGVycm9yIGlzIGFuIGluc3RhbmNlIG9mIERlcGxveW1lbnRFcnJvci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNEZXBsb3ltZW50RXJyb3IoeDogYW55KTogeCBpcyBEZXBsb3ltZW50RXJyb3Ige1xuICAgIHJldHVybiBUb29sa2l0RXJyb3IuaXNUb29sa2l0RXJyb3IoeCkgJiYgREVQTE9ZTUVOVF9FUlJPUl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gZXJyb3IgaXMgYW4gaW5zdGFuY2Ugb2YgQXNzZW1ibHlFcnJvci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNBc3NlbWJseUVycm9yKHg6IGFueSk6IHggaXMgQXNzZW1ibHlFcnJvciB7XG4gICAgcmV0dXJuIFRvb2xraXRFcnJvci5pc1Rvb2xraXRFcnJvcih4KSAmJiBBU1NFTUJMWV9FUlJPUl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gZXJyb3IgaXMgYW4gaW5zdGFuY2Ugb2YgQ29udGV4dFByb3ZpZGVyRXJyb3IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzQ29udGV4dFByb3ZpZGVyRXJyb3IoeDogYW55KTogeCBpcyBDb250ZXh0UHJvdmlkZXJFcnJvciB7XG4gICAgcmV0dXJuIFRvb2xraXRFcnJvci5pc1Rvb2xraXRFcnJvcih4KSAmJiBDT05URVhUX1BST1ZJREVSX0VSUk9SX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgVG9vbGtpdEVycm9yIHdpdGggYW4gb3JpZ2luYWwgZXJyb3IgYXMgY2F1c2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aENhdXNlKGVycm9yQ29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiB1bmtub3duKTogVG9vbGtpdEVycm9yIHtcbiAgICByZXR1cm4gbmV3IFRvb2xraXRFcnJvcihlcnJvckNvZGUsIG1lc3NhZ2UsICd0b29sa2l0JywgZXJyb3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBlcnJvciwgZGVmYXVsdHMgdG8gXCJ0b29sa2l0XCIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZW5vdGVzIHRoZSBzb3VyY2Ugb2YgdGhlIGVycm9yIGFzIHRoZSB0b29sa2l0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZTogJ3Rvb2xraXQnIHwgJ3VzZXInO1xuXG4gIC8qKlxuICAgKiBUaGUgc3BlY2lmaWMgb3JpZ2luYWwgY2F1c2Ugb2YgdGhlIGVycm9yLCBpZiBhdmFpbGFibGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjYXVzZT86IHVua25vd247XG5cbiAgY29uc3RydWN0b3IoZXJyb3JDb2RlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgdHlwZTogc3RyaW5nID0gJ3Rvb2xraXQnLCBjYXVzZT86IHVua25vd24pIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSBlcnJvckNvZGU7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFRvb2xraXRFcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBUT09MS0lUX0VSUk9SX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc291cmNlID0gJ3Rvb2xraXQnO1xuICAgIHRoaXMuY2F1c2UgPSBjYXVzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gYXV0aGVudGljYXRpb24tc3BlY2lmaWMgZXJyb3IgaW4gdGhlIEFXUyBDREsgVG9vbGtpdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uRXJyb3IgZXh0ZW5kcyBUb29sa2l0RXJyb3Ige1xuICAvKipcbiAgICogRGVub3RlcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvciBhcyB1c2VyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZSA9ICd1c2VyJztcblxuICBjb25zdHJ1Y3RvcihlcnJvckNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoZXJyb3JDb2RlLCBtZXNzYWdlLCAnYXV0aGVudGljYXRpb24nKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQXV0aGVudGljYXRpb25FcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBBVVRIRU5USUNBVElPTl9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGVycm9yIGNhdXNlcyBieSBjbG91ZCBhc3NlbWJseSBzeW50aGVzaXNcbiAqXG4gKiBUaGlzIGluY2x1ZGVzIGVycm9ycyB0aHJvd24gZHVyaW5nIGFwcCBleGVjdXRpb24sIGFzIHdlbGwgYXMgZmFpbGluZyBhbm5vdGF0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFzc2VtYmx5RXJyb3IgZXh0ZW5kcyBUb29sa2l0RXJyb3Ige1xuICAvKipcbiAgICogQW4gQXNzZW1ibHlFcnJvciB3aXRoIGFuIG9yaWdpbmFsIGVycm9yIGFzIGNhdXNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGhDYXVzZShtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiB1bmtub3duKTogQXNzZW1ibHlFcnJvciB7XG4gICAgcmV0dXJuIG5ldyBBc3NlbWJseUVycm9yKG1lc3NhZ2UsIHVuZGVmaW5lZCwgZXJyb3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuIEFzc2VtYmx5RXJyb3Igd2l0aCBhIGxpc3Qgb2Ygc3RhY2tzIGFzIGNhdXNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGhTdGFja3MobWVzc2FnZTogc3RyaW5nLCBzdGFja3M/OiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3RbXSk6IEFzc2VtYmx5RXJyb3Ige1xuICAgIHJldHVybiBuZXcgQXNzZW1ibHlFcnJvcihtZXNzYWdlLCBzdGFja3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbm90ZXMgdGhlIHNvdXJjZSBvZiB0aGUgZXJyb3IgYXMgdXNlci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2UgPSAndXNlcic7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFja3MgdGhhdCBjYXVzZWQgdGhlIGVycm9yLCBpZiBhdmFpbGFibGVcbiAgICpcbiAgICogVGhlIGBtZXNzYWdlc2AgcHJvcGVydHkgb2YgZWFjaCBgY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0YCB3aWxsIGNvbnRhaW4gdGhlIHJlc3BlY3RpdmUgZXJyb3JzLlxuICAgKiBBYnNlbmNlIGluZGljYXRlcyBzeW50aGVzaXMgZGlkbid0IGZ1bGx5IGNvbXBsZXRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YWNrcz86IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdFtdO1xuXG4gIHByaXZhdGUgX3N5bnRoRXJyb3JDb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHN0YWNrcz86IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdFtdLCBjYXVzZT86IHVua25vd24pIHtcbiAgICBzdXBlcignQXNzZW1ibHlFcnJvcicsIG1lc3NhZ2UsICdhc3NlbWJseScsIGNhdXNlKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQXNzZW1ibHlFcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBBU1NFTUJMWV9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gICAgdGhpcy5zdGFja3MgPSBzdGFja3M7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN5bnRoZXNpcyBlcnJvciBjb2RlXG4gICAqL1xuICBwdWJsaWMgZ2V0IHN5bnRoRXJyb3JDb2RlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3N5bnRoRXJyb3JDb2RlO1xuICB9XG5cbiAgcHVibGljIGF0dGFjaFN5bnRoZXNpc0Vycm9yQ29kZShzeW50aGVzaXNFcnJvckNvZGU6IHN0cmluZykge1xuICAgIHRoaXMuX3N5bnRoRXJyb3JDb2RlID0gc3ludGhlc2lzRXJyb3JDb2RlO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGRlcGxveW1lbnQtcmVsYXRlZCBlcnJvciBpbiB0aGUgQVdTIENESyBUb29sa2l0LlxuICovXG5leHBvcnQgY2xhc3MgRGVwbG95bWVudEVycm9yIGV4dGVuZHMgVG9vbGtpdEVycm9yIHtcbiAgLyoqXG4gICAqIERlbm90ZXMgdGhlIHNvdXJjZSBvZiB0aGUgZXJyb3IgYXMgdXNlci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2UgPSAndXNlcic7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRlcGxveW1lbnRFcnJvckNvZGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGRlcGxveW1lbnRFcnJvckNvZGU6IHN0cmluZykge1xuICAgIHN1cGVyKCdEZXBsb3ltZW50RXJyb3InLCBtZXNzYWdlLCAnZGVwbG95bWVudCcpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBEZXBsb3ltZW50RXJyb3IucHJvdG90eXBlKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgREVQTE9ZTUVOVF9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gICAgdGhpcy5kZXBsb3ltZW50RXJyb3JDb2RlID0gZGVwbG95bWVudEVycm9yQ29kZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gZXJyb3Igb3JpZ2luYXRpbmcgZnJvbSBhIENvbnRleHQgUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGNsYXNzIENvbnRleHRQcm92aWRlckVycm9yIGV4dGVuZHMgVG9vbGtpdEVycm9yIHtcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYSBnaXZlbiBlcnJvciBpcyBhbiBpbnN0YW5jZSBvZiBOb1Jlc3VsdHNGb3VuZEVycm9yLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc05vUmVzdWx0c0ZvdW5kRXJyb3IoeDogYW55KTogeCBpcyBOb1Jlc3VsdHNGb3VuZEVycm9yIHtcbiAgICByZXR1cm4gVG9vbGtpdEVycm9yLmlzQ29udGV4dFByb3ZpZGVyRXJyb3IoeCkgJiYgTk9fUkVTVUxUU19GT1VORF9FUlJPUl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIENvbnRleHRQcm92aWRlckVycm9yIHdpdGggYW4gb3JpZ2luYWwgZXJyb3IgYXMgY2F1c2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aENhdXNlKGVycm9yQ29kZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiB1bmtub3duKTogQ29udGV4dFByb3ZpZGVyRXJyb3Ige1xuICAgIHJldHVybiBuZXcgQ29udGV4dFByb3ZpZGVyRXJyb3IoZXJyb3JDb2RlLCBtZXNzYWdlLCBlcnJvcik7XG4gIH1cblxuICAvKipcbiAgICogRGVub3RlcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvciBhcyB1c2VyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZSA9ICd1c2VyJztcblxuICBjb25zdHJ1Y3RvcihlcnJvckNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nLCBjYXVzZT86IHVua25vd24pIHtcbiAgICBzdXBlcihlcnJvckNvZGUsIG1lc3NhZ2UsICdjb250ZXh0LXByb3ZpZGVyJywgY2F1c2UpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBDb250ZXh0UHJvdmlkZXJFcnJvci5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBDT05URVhUX1BST1ZJREVSX0VSUk9SX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgc3BlY2lmaWMgY29udGV4dCBwcm92aWRlciBsb29rdXAgZmFpbHVyZSBpbmRpY2F0aW5nIG5vIHJlc3VsdHMgd2hlcmUgZm91bmQgZm9yIGEgY29udGV4dCBxdWVyeVxuICovXG5leHBvcnQgY2xhc3MgTm9SZXN1bHRzRm91bmRFcnJvciBleHRlbmRzIENvbnRleHRQcm92aWRlckVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoJ05vUmVzdWx0c0ZvdW5kJywgbWVzc2FnZSk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIE5vUmVzdWx0c0ZvdW5kRXJyb3IucHJvdG90eXBlKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgTk9fUkVTVUxUU19GT1VORF9FUlJPUl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERlcGxveW1lbnRFcnJvckNvZGVzIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTVEFDS19ESVNBUFBFQVJFRF9FUlJPUl9DT0RFID0gJ1N0YWNrRGlzYXBwZWFyZWQnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFVOS05PV05fRVJST1IgPSAnVW5rbm93bkVycm9yJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUklWQVRFX1JFU09VUkNFX0VSUk9SID0gJ1ByaXZhdGVSZXNvdXJjZUVycm9yJztcbn1cblxuIl19