aws-cdk 2.9.0 → 2.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/CONTRIBUTING.md +1 -1
  2. package/README.md +3 -2
  3. package/bin/cdk.d.ts +1 -3
  4. package/bin/cdk.js +3 -511
  5. package/build-info.json +2 -2
  6. package/lib/api/aws-auth/sdk.d.ts +2 -0
  7. package/lib/api/aws-auth/sdk.js +4 -1
  8. package/lib/api/cloudformation-deployments.d.ts +8 -5
  9. package/lib/api/cloudformation-deployments.js +90 -38
  10. package/lib/api/cxapp/cloud-executable.js +12 -8
  11. package/lib/api/evaluate-cloudformation-template.js +34 -2
  12. package/lib/api/hotswap/appsync-mapping-templates.d.ts +3 -0
  13. package/lib/api/hotswap/appsync-mapping-templates.js +69 -0
  14. package/lib/api/hotswap/lambda-functions.js +48 -13
  15. package/lib/api/hotswap-deployments.js +3 -1
  16. package/lib/api/toolkit-info.js +5 -5
  17. package/lib/api/util/placeholders.d.ts +6 -0
  18. package/lib/api/util/placeholders.js +25 -0
  19. package/lib/assets.js +2 -1
  20. package/lib/cdk-toolkit.js +3 -3
  21. package/lib/cli.d.ts +3 -0
  22. package/lib/cli.js +545 -0
  23. package/lib/commands/context.d.ts +0 -16
  24. package/lib/commands/context.js +2 -20
  25. package/lib/commands/docs.d.ts +0 -13
  26. package/lib/commands/docs.js +2 -19
  27. package/lib/commands/doctor.d.ts +0 -5
  28. package/lib/commands/doctor.js +2 -9
  29. package/lib/context-providers/ami.d.ts +1 -1
  30. package/lib/context-providers/ami.js +3 -3
  31. package/lib/context-providers/availability-zones.d.ts +1 -1
  32. package/lib/context-providers/availability-zones.js +3 -3
  33. package/lib/context-providers/endpoint-service-availability-zones.d.ts +1 -1
  34. package/lib/context-providers/endpoint-service-availability-zones.js +3 -3
  35. package/lib/context-providers/hosted-zones.d.ts +1 -1
  36. package/lib/context-providers/hosted-zones.js +3 -3
  37. package/lib/context-providers/index.d.ts +6 -0
  38. package/lib/context-providers/index.js +18 -5
  39. package/lib/context-providers/keys.d.ts +1 -1
  40. package/lib/context-providers/keys.js +3 -3
  41. package/lib/context-providers/load-balancers.d.ts +1 -1
  42. package/lib/context-providers/load-balancers.js +4 -4
  43. package/lib/context-providers/security-groups.d.ts +1 -1
  44. package/lib/context-providers/security-groups.js +3 -3
  45. package/lib/context-providers/ssm-parameters.d.ts +1 -1
  46. package/lib/context-providers/ssm-parameters.js +3 -3
  47. package/lib/context-providers/vpcs.d.ts +1 -1
  48. package/lib/context-providers/vpcs.js +6 -3
  49. package/lib/index.d.ts +3 -0
  50. package/lib/index.js +17 -0
  51. package/lib/init-templates/v1/app/csharp/cdk.template.json +1 -1
  52. package/lib/init-templates/v1/app/fsharp/cdk.template.json +1 -1
  53. package/lib/init-templates/v1/app/javascript/README.md +5 -5
  54. package/lib/init-templates/v1/app/typescript/README.md +7 -7
  55. package/lib/init-templates/v1/lib/typescript/README.template.md +4 -4
  56. package/lib/init-templates/v1/sample-app/csharp/cdk.template.json +1 -1
  57. package/lib/init-templates/v1/sample-app/fsharp/cdk.template.json +1 -1
  58. package/lib/init-templates/v1/sample-app/javascript/README.template.md +7 -6
  59. package/lib/init-templates/v1/sample-app/typescript/README.template.md +9 -9
  60. package/lib/init-templates/v2/app/csharp/cdk.template.json +1 -1
  61. package/lib/init-templates/v2/app/fsharp/cdk.template.json +1 -1
  62. package/lib/init-templates/v2/app/javascript/README.md +5 -5
  63. package/lib/init-templates/v2/app/typescript/README.md +7 -7
  64. package/lib/init-templates/v2/lib/typescript/README.template.md +4 -4
  65. package/lib/init-templates/v2/sample-app/csharp/cdk.template.json +1 -1
  66. package/lib/init-templates/v2/sample-app/fsharp/cdk.template.json +1 -1
  67. package/lib/init-templates/v2/sample-app/javascript/README.template.md +5 -5
  68. package/lib/init-templates/v2/sample-app/typescript/README.template.md +7 -7
  69. package/lib/plugin.d.ts +15 -1
  70. package/lib/plugin.js +17 -3
  71. package/lib/util/asset-publishing.d.ts +1 -1
  72. package/lib/util/asset-publishing.js +4 -4
  73. package/npm-shrinkwrap.json +96 -52
  74. package/package.json +16 -15
  75. package/test/api/cloud-executable.test.js +57 -32
  76. package/test/api/cloudformation-deployments.test.js +643 -1
  77. package/test/api/hotswap/appsync-mapping-templates-hotswap-deployments.test.d.ts +1 -0
  78. package/test/api/hotswap/appsync-mapping-templates-hotswap-deployments.test.js +336 -0
  79. package/test/api/hotswap/hotswap-deployments.test.js +2 -2
  80. package/test/api/hotswap/hotswap-test-setup.d.ts +7 -1
  81. package/test/api/hotswap/hotswap-test-setup.js +22 -3
  82. package/test/api/hotswap/lambda-functions-docker-hotswap-deployments.test.js +59 -2
  83. package/test/api/hotswap/lambda-functions-hotswap-deployments.test.js +175 -2
  84. package/test/api/hotswap/lambda-functions-inline-hotswap-deployments.test.js +2 -2
  85. package/test/api/hotswap/lambda-versions-aliases-hotswap-deployments.test.js +2 -2
  86. package/test/api/hotswap/state-machine-hotswap-deployments.test.js +72 -1
  87. package/test/api/logs/logs-monitor.test.js +9 -13
  88. package/test/cdk-docs.test.js +4 -7
  89. package/test/cdk-doctor.test.js +3 -4
  90. package/test/context-providers/generic.test.js +7 -6
  91. package/test/context-providers/vpcs.test.js +132 -1
  92. package/test/diff-nested-stacks-templates/one-output-one-param-stack.nested.template.json +20 -0
  93. package/test/diff-nested-stacks-templates/one-resource-one-stack-stack.nested.template.json +19 -0
  94. package/test/diff-nested-stacks-templates/one-resource-stack.nested.template.json +10 -0
  95. package/test/diff-nested-stacks-templates/one-resource-two-stacks-stack.nested.template.json +28 -0
  96. package/test/diff.test.js +215 -96
  97. package/test/util/mock-sdk.d.ts +9 -1
  98. package/test/util/mock-sdk.js +13 -3
  99. package/test/util.js +18 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "app": "dotnet run -p src/%name.PascalCased%/%name.PascalCased%.csproj",
2
+ "app": "dotnet run --project src/%name.PascalCased%/%name.PascalCased%.csproj",
3
3
  "watch": {
4
4
  "include": ["**"],
5
5
  "exclude": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "app": "dotnet run -p src/%name.PascalCased%/%name.PascalCased%.fsproj",
2
+ "app": "dotnet run --project src/%name.PascalCased%/%name.PascalCased%.fsproj",
3
3
  "watch": {
4
4
  "include": ["**"],
5
5
  "exclude": [
@@ -1,16 +1,17 @@
1
- # Welcome to your CDK JavaScript project!
1
+ # Welcome to your CDK JavaScript project
2
2
 
3
3
  You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PascalCased%Stack`)
4
4
  which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic.
5
5
 
6
6
  The `cdk.json` file tells the CDK Toolkit how to execute your app. The build step is not required when using JavaScript.
7
7
 
8
- ## Tutorial
8
+ ## Tutorial
9
+
9
10
  See [this useful workshop](https://cdkworkshop.com/20-typescript.html) on working with the AWS CDK for Typescript projects.
10
11
 
11
12
  ## Useful commands
12
13
 
13
- * `npm run test` perform the jest unit tests
14
- * `cdk deploy` deploy this stack to your default AWS account/region
15
- * `cdk diff` compare deployed stack with current state
16
- * `cdk synth` emits the synthesized CloudFormation template
14
+ * `npm run test` perform the jest unit tests
15
+ * `cdk deploy` deploy this stack to your default AWS account/region
16
+ * `cdk diff` compare deployed stack with current state
17
+ * `cdk synth` emits the synthesized CloudFormation template
@@ -1,19 +1,19 @@
1
- # Welcome to your CDK TypeScript project!
1
+ # Welcome to your CDK TypeScript project
2
2
 
3
3
  You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PascalCased%Stack`)
4
4
  which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic.
5
5
 
6
6
  The `cdk.json` file tells the CDK Toolkit how to execute your app.
7
7
 
8
- ## Tutorial
9
- See [this useful workshop](https://cdkworkshop.com/20-typescript.html) on working with the AWS CDK for Typescript projects.
8
+ ## Tutorial
10
9
 
10
+ See [this useful workshop](https://cdkworkshop.com/20-typescript.html) on working with the AWS CDK for Typescript projects.
11
11
 
12
12
  ## Useful commands
13
13
 
14
- * `npm run build` compile typescript to js
15
- * `npm run watch` watch for changes and compile
16
- * `npm run test` perform the jest unit tests
17
- * `cdk deploy` deploy this stack to your default AWS account/region
18
- * `cdk diff` compare deployed stack with current state
19
- * `cdk synth` emits the synthesized CloudFormation template
14
+ * `npm run build` compile typescript to js
15
+ * `npm run watch` watch for changes and compile
16
+ * `npm run test` perform the jest unit tests
17
+ * `cdk deploy` deploy this stack to your default AWS account/region
18
+ * `cdk diff` compare deployed stack with current state
19
+ * `cdk synth` emits the synthesized CloudFormation template
@@ -1,5 +1,5 @@
1
1
  {
2
- "app": "dotnet run -p src/%name.PascalCased%/%name.PascalCased%.csproj",
2
+ "app": "dotnet run --project src/%name.PascalCased%/%name.PascalCased%.csproj",
3
3
  "watch": {
4
4
  "include": ["**"],
5
5
  "exclude": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "app": "dotnet run -p src/%name.PascalCased%/%name.PascalCased%.fsproj",
2
+ "app": "dotnet run --project src/%name.PascalCased%/%name.PascalCased%.fsproj",
3
3
  "watch": {
4
4
  "include": ["**"],
5
5
  "exclude": [
@@ -1,4 +1,4 @@
1
- # Welcome to your CDK JavaScript project!
1
+ # Welcome to your CDK JavaScript project
2
2
 
3
3
  This is a blank project for JavaScript development with CDK.
4
4
 
@@ -6,7 +6,7 @@ The `cdk.json` file tells the CDK Toolkit how to execute your app. The build ste
6
6
 
7
7
  ## Useful commands
8
8
 
9
- * `npm run test` perform the jest unit tests
10
- * `cdk deploy` deploy this stack to your default AWS account/region
11
- * `cdk diff` compare deployed stack with current state
12
- * `cdk synth` emits the synthesized CloudFormation template
9
+ * `npm run test` perform the jest unit tests
10
+ * `cdk deploy` deploy this stack to your default AWS account/region
11
+ * `cdk diff` compare deployed stack with current state
12
+ * `cdk synth` emits the synthesized CloudFormation template
@@ -1,4 +1,4 @@
1
- # Welcome to your CDK TypeScript project!
1
+ # Welcome to your CDK TypeScript project
2
2
 
3
3
  This is a blank project for TypeScript development with CDK.
4
4
 
@@ -6,9 +6,9 @@ The `cdk.json` file tells the CDK Toolkit how to execute your app.
6
6
 
7
7
  ## Useful commands
8
8
 
9
- * `npm run build` compile typescript to js
10
- * `npm run watch` watch for changes and compile
11
- * `npm run test` perform the jest unit tests
12
- * `cdk deploy` deploy this stack to your default AWS account/region
13
- * `cdk diff` compare deployed stack with current state
14
- * `cdk synth` emits the synthesized CloudFormation template
9
+ * `npm run build` compile typescript to js
10
+ * `npm run watch` watch for changes and compile
11
+ * `npm run test` perform the jest unit tests
12
+ * `cdk deploy` deploy this stack to your default AWS account/region
13
+ * `cdk diff` compare deployed stack with current state
14
+ * `cdk synth` emits the synthesized CloudFormation template
@@ -1,4 +1,4 @@
1
- # Welcome to your CDK TypeScript Construct Library project!
1
+ # Welcome to your CDK TypeScript Construct Library project
2
2
 
3
3
  You should explore the contents of this project. It demonstrates a CDK Construct Library that includes a construct (`%name.PascalCased%`)
4
4
  which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic.
@@ -7,6 +7,6 @@ The construct defines an interface (`%name.PascalCased%Props`) to configure the
7
7
 
8
8
  ## Useful commands
9
9
 
10
- * `npm run build` compile typescript to js
11
- * `npm run watch` watch for changes and compile
12
- * `npm run test` perform the jest unit tests
10
+ * `npm run build` compile typescript to js
11
+ * `npm run watch` watch for changes and compile
12
+ * `npm run test` perform the jest unit tests
@@ -1,5 +1,5 @@
1
1
  {
2
- "app": "dotnet run -p src/%name.PascalCased%/%name.PascalCased%.csproj",
2
+ "app": "dotnet run --project src/%name.PascalCased%/%name.PascalCased%.csproj",
3
3
  "watch": {
4
4
  "include": ["**"],
5
5
  "exclude": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "app": "dotnet run -p src/%name.PascalCased%/%name.PascalCased%.fsproj",
2
+ "app": "dotnet run --project src/%name.PascalCased%/%name.PascalCased%.fsproj",
3
3
  "watch": {
4
4
  "include": ["**"],
5
5
  "exclude": [
@@ -1,4 +1,4 @@
1
- # Welcome to your CDK JavaScript project!
1
+ # Welcome to your CDK JavaScript project
2
2
 
3
3
  You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PascalCased%Stack`)
4
4
  which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic.
@@ -7,7 +7,7 @@ The `cdk.json` file tells the CDK Toolkit how to execute your app. The build ste
7
7
 
8
8
  ## Useful commands
9
9
 
10
- * `npm run test` perform the jest unit tests
11
- * `cdk deploy` deploy this stack to your default AWS account/region
12
- * `cdk diff` compare deployed stack with current state
13
- * `cdk synth` emits the synthesized CloudFormation template
10
+ * `npm run test` perform the jest unit tests
11
+ * `cdk deploy` deploy this stack to your default AWS account/region
12
+ * `cdk diff` compare deployed stack with current state
13
+ * `cdk synth` emits the synthesized CloudFormation template
@@ -1,4 +1,4 @@
1
- # Welcome to your CDK TypeScript project!
1
+ # Welcome to your CDK TypeScript project
2
2
 
3
3
  You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PascalCased%Stack`)
4
4
  which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic.
@@ -7,9 +7,9 @@ The `cdk.json` file tells the CDK Toolkit how to execute your app.
7
7
 
8
8
  ## Useful commands
9
9
 
10
- * `npm run build` compile typescript to js
11
- * `npm run watch` watch for changes and compile
12
- * `npm run test` perform the jest unit tests
13
- * `cdk deploy` deploy this stack to your default AWS account/region
14
- * `cdk diff` compare deployed stack with current state
15
- * `cdk synth` emits the synthesized CloudFormation template
10
+ * `npm run build` compile typescript to js
11
+ * `npm run watch` watch for changes and compile
12
+ * `npm run test` perform the jest unit tests
13
+ * `cdk deploy` deploy this stack to your default AWS account/region
14
+ * `cdk diff` compare deployed stack with current state
15
+ * `cdk synth` emits the synthesized CloudFormation template
package/lib/plugin.d.ts CHANGED
@@ -69,7 +69,21 @@ export declare class PluginHost {
69
69
  * This feature is experimental, and only intended to be used internally at Amazon
70
70
  * as a trial.
71
71
  *
72
+ * After registering with 'my-plugin-name', the provider must be addressed as follows:
73
+ *
74
+ * ```ts
75
+ * const value = ContextProvider.getValue(this, {
76
+ * providerName: 'plugin',
77
+ * props: {
78
+ * pluginName: 'my-plugin-name',
79
+ * myParameter1: 'xyz',
80
+ * },
81
+ * includeEnvironment: true | false,
82
+ * dummyValue: 'what-to-return-on-the-first-pass',
83
+ * })
84
+ * ```
85
+ *
72
86
  * @experimental
73
87
  */
74
- registerContextProviderAlpha(providerName: string, provider: ContextProviderPlugin): void;
88
+ registerContextProviderAlpha(pluginProviderName: string, provider: ContextProviderPlugin): void;
75
89
  }
package/lib/plugin.js CHANGED
@@ -71,15 +71,29 @@ class PluginHost {
71
71
  * This feature is experimental, and only intended to be used internally at Amazon
72
72
  * as a trial.
73
73
  *
74
+ * After registering with 'my-plugin-name', the provider must be addressed as follows:
75
+ *
76
+ * ```ts
77
+ * const value = ContextProvider.getValue(this, {
78
+ * providerName: 'plugin',
79
+ * props: {
80
+ * pluginName: 'my-plugin-name',
81
+ * myParameter1: 'xyz',
82
+ * },
83
+ * includeEnvironment: true | false,
84
+ * dummyValue: 'what-to-return-on-the-first-pass',
85
+ * })
86
+ * ```
87
+ *
74
88
  * @experimental
75
89
  */
76
- registerContextProviderAlpha(providerName, provider) {
90
+ registerContextProviderAlpha(pluginProviderName, provider) {
77
91
  if (!provider_1.isContextProviderPlugin(provider)) {
78
92
  throw new Error(`Object you gave me does not look like a ContextProviderPlugin: ${util_1.inspect(provider)}`);
79
93
  }
80
- context_providers_1.registerContextProvider(providerName, provider);
94
+ context_providers_1.registerPluginContextProvider(pluginProviderName, provider);
81
95
  }
82
96
  }
83
97
  exports.PluginHost = PluginHost;
84
98
  PluginHost.instance = new PluginHost();
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFHL0IsMkRBQThEO0FBQzlELDJEQUE4RjtBQUM5Rix1Q0FBa0M7QUFpQ2xDOzs7R0FHRztBQUNILE1BQWEsVUFBVTtJQVNyQjtRQU5BOzs7V0FHRztRQUNhLDhCQUF5QixHQUFHLElBQUksS0FBSyxFQUE0QixDQUFDO1FBR2hGLElBQUksVUFBVSxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLGlGQUFpRixDQUFDLENBQUM7U0FDcEc7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBQyxVQUFrQjtRQUM1QixJQUFJO1lBQ0YsMERBQTBEO1lBQzFELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuQyxtQkFBbUI7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDckIsZUFBSyxDQUFDLFVBQVUsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMseURBQXlELENBQUMsQ0FBQztnQkFDbEcsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLFVBQVUsbUNBQW1DLENBQUMsQ0FBQzthQUMxRTtZQUNELElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtnQkFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUFFO1NBQ3ZEO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixlQUFLLENBQUMsa0JBQWtCLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsVUFBVSxFQUFFLENBQUMsQ0FBQztTQUMxRDtRQUVELFNBQVMsUUFBUSxDQUFDLENBQU07WUFDdEIsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGdDQUFnQyxDQUFDLE1BQWdDO1FBQ3RFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNJLDRCQUE0QixDQUFDLFlBQW9CLEVBQUUsUUFBK0I7UUFDdkYsSUFBSSxDQUFDLGtDQUF1QixDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0VBQWtFLGNBQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEc7UUFDRCwyQ0FBdUIsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7QUF4RUgsZ0NBeUVDO0FBeEVlLG1CQUFRLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICd1dGlsJztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcblxuaW1wb3J0IHsgQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlIH0gZnJvbSAnLi9hcGkvYXdzLWF1dGgvY3JlZGVudGlhbHMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJDb250ZXh0UHJvdmlkZXIgfSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXJzJztcbmltcG9ydCB7IENvbnRleHRQcm92aWRlclBsdWdpbiwgaXNDb250ZXh0UHJvdmlkZXJQbHVnaW4gfSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXJzL3Byb3ZpZGVyJztcbmltcG9ydCB7IGVycm9yIH0gZnJvbSAnLi9sb2dnaW5nJztcblxuLyoqXG4gKiBUaGUgYmFzaWMgY29udHJhY3QgZm9yIHBsdWctaW5zIHRvIGFkaGVyZSB0bzo6XG4gKlxuICogICBpbXBvcnQgeyBQbHVnaW4sIFBsdWdpbkhvc3QgfSBmcm9tICdhd3MtY2RrJztcbiAqICAgaW1wb3J0IHsgQ3VzdG9tQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlIH0gZnJvbSAnLi9jdXN0b20tY3JlZGVudGlhbC1wcm92aWRlci1zb3VyY2UnO1xuICpcbiAqICAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9vQ0RLUGx1Z0luIGltcGxlbWVudHMgUGx1Z2luSG9zdCB7XG4gKiAgICAgcHVibGljIHJlYWRvbmx5IHZlcnNpb24gPSAnMSc7XG4gKlxuICogICAgIHB1YmxpYyBpbml0KGhvc3Q6IFBsdWdpbkhvc3QpIHtcbiAqICAgICBob3N0LnJlZ2lzdGVyQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlKG5ldyBDdXN0b21DcmVkZW50aWFsUHJvdmlkZXJTb3VyY2UoKSk7XG4gKiAgICAgfVxuICogICB9XG4gKlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbiB7XG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgcGx1Zy1pbiBpbnRlcmZhY2UgdXNlZCBieSB0aGUgcGx1Zy1pbi4gVGhpcyB3aWxsIGJlIHVzZWQgYnlcbiAgICogdGhlIHBsdWctaW4gaG9zdCB0byBoYW5kbGUgdmVyc2lvbiBjaGFuZ2VzLlxuICAgKi9cbiAgdmVyc2lvbjogJzEnO1xuXG4gIC8qKlxuICAgKiBXaGVuIGRlZmluZWQsIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCByaWdodCBhZnRlciB0aGUgcGx1Zy1pbiBoYXMgYmVlbiBsb2FkZWQsXG4gICAqIHNvIHRoYXQgdGhlIHBsdWctaW4gaXMgYWJsZSB0byBpbml0aWFsaXplIGl0c2VsZi4gSXQgbWF5IGNhbGwgbWV0aG9kcyBvZiB0aGVcbiAgICogYGBQbHVnaW5Ib3N0YGAgaW5zdGFuY2UgaXQgcmVjZWl2ZXMgdG8gcmVnaXN0ZXIgbmV3IGBgQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlYGBcbiAgICogaW5zdGFuY2VzLlxuICAgKi9cbiAgaW5pdD86IChob3N0OiBQbHVnaW5Ib3N0KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEEgdXRpbGl0eSB0byBtYW5hZ2UgcGx1Zy1pbnMuXG4gKlxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luSG9zdCB7XG4gIHB1YmxpYyBzdGF0aWMgaW5zdGFuY2UgPSBuZXcgUGx1Z2luSG9zdCgpO1xuXG4gIC8qKlxuICAgKiBBY2Nlc3MgdGhlIGN1cnJlbnRseSByZWdpc3RlcmVkIENyZWRlbnRpYWxQcm92aWRlclNvdXJjZXMuIE5ldyBzb3VyY2VzIGNhblxuICAgKiBiZSByZWdpc3RlcmVkIHVzaW5nIHRoZSArcmVnaXN0ZXJDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2UrIG1ldGhvZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXJTb3VyY2VzID0gbmV3IEFycmF5PENyZWRlbnRpYWxQcm92aWRlclNvdXJjZT4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoUGx1Z2luSG9zdC5pbnN0YW5jZSAmJiBQbHVnaW5Ib3N0Lmluc3RhbmNlICE9PSB0aGlzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05ldyBpbnN0YW5jZXMgb2YgUGx1Z2luSG9zdCBtdXN0IG5vdCBiZSBidWlsdC4gVXNlIFBsdWdpbkhvc3QuaW5zdGFuY2UgaW5zdGVhZCEnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYSBwbHVnLWluIGludG8gdGhpcyBQbHVnaW5Ib3N0LlxuICAgKlxuICAgKiBAcGFyYW0gbW9kdWxlU3BlYyB0aGUgc3BlY2lmaWNhdGlvbiAocGF0aCBvciBuYW1lKSBvZiB0aGUgcGx1Zy1pbiBtb2R1bGUgdG8gYmUgbG9hZGVkLlxuICAgKi9cbiAgcHVibGljIGxvYWQobW9kdWxlU3BlYzogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMgKi9cbiAgICAgIGNvbnN0IHBsdWdpbiA9IHJlcXVpcmUobW9kdWxlU3BlYyk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlICovXG4gICAgICBpZiAoIWlzUGx1Z2luKHBsdWdpbikpIHtcbiAgICAgICAgZXJyb3IoYE1vZHVsZSAke2NoYWxrLmdyZWVuKG1vZHVsZVNwZWMpfSBpcyBub3QgYSB2YWxpZCBwbHVnLWluLCBvciBoYXMgYW4gdW5zdXBwb3J0ZWQgdmVyc2lvbi5gKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb2R1bGUgJHttb2R1bGVTcGVjfSBkb2VzIG5vdCBkZWZpbmUgYSB2YWxpZCBwbHVnLWluLmApO1xuICAgICAgfVxuICAgICAgaWYgKHBsdWdpbi5pbml0KSB7IHBsdWdpbi5pbml0KFBsdWdpbkhvc3QuaW5zdGFuY2UpOyB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZXJyb3IoYFVuYWJsZSB0byBsb2FkICR7Y2hhbGsuZ3JlZW4obW9kdWxlU3BlYyl9OiAke2Uuc3RhY2t9YCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBsb2FkIHBsdWctaW46ICR7bW9kdWxlU3BlY31gKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1BsdWdpbih4OiBhbnkpOiB4IGlzIFBsdWdpbiB7XG4gICAgICByZXR1cm4geCAhPSBudWxsICYmIHgudmVyc2lvbiA9PT0gJzEnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgcGx1Zy1pbnMgdG8gcmVnaXN0ZXIgbmV3IENyZWRlbnRpYWxQcm92aWRlclNvdXJjZXMuXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2UgYSBuZXcgQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlIHRvIHJlZ2lzdGVyLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlKHNvdXJjZTogQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlKSB7XG4gICAgdGhpcy5jcmVkZW50aWFsUHJvdmlkZXJTb3VyY2VzLnB1c2goc291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAoRVhQRVJJTUVOVEFMKSBBbGxvdyBwbHVnaW5zIHRvIHJlZ2lzdGVyIGNvbnRleHQgcHJvdmlkZXJzXG4gICAqXG4gICAqIENvbnRleHQgcHJvdmlkZXJzIGFyZSBvYmplY3RzIHdpdGggdGhlIGZvbGxvd2luZyBtZXRob2Q6XG4gICAqXG4gICAqIGBgYHRzXG4gICAqICAgZ2V0VmFsdWUoYXJnczoge1trZXk6IHN0cmluZ106IGFueX0pOiBQcm9taXNlPGFueT47XG4gICAqIGBgYFxuICAgKlxuICAgKiBDdXJyZW50bHksIHRoZXkgY2Fubm90IHJldXNlIHRoZSBDREsncyBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc21zLCBzbyB0aGV5XG4gICAqIG11c3QgYmUgcHJlcGFyZWQgdG8gZWl0aGVyIG5vdCBtYWtlIEFXUyBjYWxscyBvciB1c2UgdGhlaXIgb3duIHNvdXJjZSBvZlxuICAgKiBBV1MgY3JlZGVudGlhbHMuXG4gICAqXG4gICAqIFRoaXMgZmVhdHVyZSBpcyBleHBlcmltZW50YWwsIGFuZCBvbmx5IGludGVuZGVkIHRvIGJlIHVzZWQgaW50ZXJuYWxseSBhdCBBbWF6b25cbiAgICogYXMgYSB0cmlhbC5cbiAgICpcbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQ29udGV4dFByb3ZpZGVyQWxwaGEocHJvdmlkZXJOYW1lOiBzdHJpbmcsIHByb3ZpZGVyOiBDb250ZXh0UHJvdmlkZXJQbHVnaW4pIHtcbiAgICBpZiAoIWlzQ29udGV4dFByb3ZpZGVyUGx1Z2luKHByb3ZpZGVyKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBPYmplY3QgeW91IGdhdmUgbWUgZG9lcyBub3QgbG9vayBsaWtlIGEgQ29udGV4dFByb3ZpZGVyUGx1Z2luOiAke2luc3BlY3QocHJvdmlkZXIpfWApO1xuICAgIH1cbiAgICByZWdpc3RlckNvbnRleHRQcm92aWRlcihwcm92aWRlck5hbWUsIHByb3ZpZGVyKTtcbiAgfVxufVxuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFHL0IsMkRBQW9FO0FBQ3BFLDJEQUE4RjtBQUM5Rix1Q0FBa0M7QUFpQ2xDOzs7R0FHRztBQUNILE1BQWEsVUFBVTtJQVNyQjtRQU5BOzs7V0FHRztRQUNhLDhCQUF5QixHQUFHLElBQUksS0FBSyxFQUE0QixDQUFDO1FBR2hGLElBQUksVUFBVSxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLGlGQUFpRixDQUFDLENBQUM7U0FDcEc7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBQyxVQUFrQjtRQUM1QixJQUFJO1lBQ0YsMERBQTBEO1lBQzFELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuQyxtQkFBbUI7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDckIsZUFBSyxDQUFDLFVBQVUsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMseURBQXlELENBQUMsQ0FBQztnQkFDbEcsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLFVBQVUsbUNBQW1DLENBQUMsQ0FBQzthQUMxRTtZQUNELElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtnQkFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUFFO1NBQ3ZEO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixlQUFLLENBQUMsa0JBQWtCLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsVUFBVSxFQUFFLENBQUMsQ0FBQztTQUMxRDtRQUVELFNBQVMsUUFBUSxDQUFDLENBQU07WUFDdEIsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGdDQUFnQyxDQUFDLE1BQWdDO1FBQ3RFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BK0JHO0lBQ0ksNEJBQTRCLENBQUMsa0JBQTBCLEVBQUUsUUFBK0I7UUFDN0YsSUFBSSxDQUFDLGtDQUF1QixDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0VBQWtFLGNBQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEc7UUFDRCxpREFBNkIsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RCxDQUFDOztBQXRGSCxnQ0F1RkM7QUF0RmUsbUJBQVEsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5pbXBvcnQgeyBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2UgfSBmcm9tICcuL2FwaS9hd3MtYXV0aC9jcmVkZW50aWFscyc7XG5pbXBvcnQgeyByZWdpc3RlclBsdWdpbkNvbnRleHRQcm92aWRlciB9IGZyb20gJy4vY29udGV4dC1wcm92aWRlcnMnO1xuaW1wb3J0IHsgQ29udGV4dFByb3ZpZGVyUGx1Z2luLCBpc0NvbnRleHRQcm92aWRlclBsdWdpbiB9IGZyb20gJy4vY29udGV4dC1wcm92aWRlcnMvcHJvdmlkZXInO1xuaW1wb3J0IHsgZXJyb3IgfSBmcm9tICcuL2xvZ2dpbmcnO1xuXG4vKipcbiAqIFRoZSBiYXNpYyBjb250cmFjdCBmb3IgcGx1Zy1pbnMgdG8gYWRoZXJlIHRvOjpcbiAqXG4gKiAgIGltcG9ydCB7IFBsdWdpbiwgUGx1Z2luSG9zdCB9IGZyb20gJ2F3cy1jZGsnO1xuICogICBpbXBvcnQgeyBDdXN0b21DcmVkZW50aWFsUHJvdmlkZXJTb3VyY2UgfSBmcm9tICcuL2N1c3RvbS1jcmVkZW50aWFsLXByb3ZpZGVyLXNvdXJjZSc7XG4gKlxuICogICBleHBvcnQgZGVmYXVsdCBjbGFzcyBGb29DREtQbHVnSW4gaW1wbGVtZW50cyBQbHVnaW5Ib3N0IHtcbiAqICAgICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbiA9ICcxJztcbiAqXG4gKiAgICAgcHVibGljIGluaXQoaG9zdDogUGx1Z2luSG9zdCkge1xuICogICAgIGhvc3QucmVnaXN0ZXJDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2UobmV3IEN1c3RvbUNyZWRlbnRpYWxQcm92aWRlclNvdXJjZSgpKTtcbiAqICAgICB9XG4gKiAgIH1cbiAqXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luIHtcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBwbHVnLWluIGludGVyZmFjZSB1c2VkIGJ5IHRoZSBwbHVnLWluLiBUaGlzIHdpbGwgYmUgdXNlZCBieVxuICAgKiB0aGUgcGx1Zy1pbiBob3N0IHRvIGhhbmRsZSB2ZXJzaW9uIGNoYW5nZXMuXG4gICAqL1xuICB2ZXJzaW9uOiAnMSc7XG5cbiAgLyoqXG4gICAqIFdoZW4gZGVmaW5lZCwgdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIHJpZ2h0IGFmdGVyIHRoZSBwbHVnLWluIGhhcyBiZWVuIGxvYWRlZCxcbiAgICogc28gdGhhdCB0aGUgcGx1Zy1pbiBpcyBhYmxlIHRvIGluaXRpYWxpemUgaXRzZWxmLiBJdCBtYXkgY2FsbCBtZXRob2RzIG9mIHRoZVxuICAgKiBgYFBsdWdpbkhvc3RgYCBpbnN0YW5jZSBpdCByZWNlaXZlcyB0byByZWdpc3RlciBuZXcgYGBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2VgYFxuICAgKiBpbnN0YW5jZXMuXG4gICAqL1xuICBpbml0PzogKGhvc3Q6IFBsdWdpbkhvc3QpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQSB1dGlsaXR5IHRvIG1hbmFnZSBwbHVnLWlucy5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBQbHVnaW5Ib3N0IHtcbiAgcHVibGljIHN0YXRpYyBpbnN0YW5jZSA9IG5ldyBQbHVnaW5Ib3N0KCk7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyB0aGUgY3VycmVudGx5IHJlZ2lzdGVyZWQgQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlcy4gTmV3IHNvdXJjZXMgY2FuXG4gICAqIGJlIHJlZ2lzdGVyZWQgdXNpbmcgdGhlICtyZWdpc3RlckNyZWRlbnRpYWxQcm92aWRlclNvdXJjZSsgbWV0aG9kLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlclNvdXJjZXMgPSBuZXcgQXJyYXk8Q3JlZGVudGlhbFByb3ZpZGVyU291cmNlPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmIChQbHVnaW5Ib3N0Lmluc3RhbmNlICYmIFBsdWdpbkhvc3QuaW5zdGFuY2UgIT09IHRoaXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTmV3IGluc3RhbmNlcyBvZiBQbHVnaW5Ib3N0IG11c3Qgbm90IGJlIGJ1aWx0LiBVc2UgUGx1Z2luSG9zdC5pbnN0YW5jZSBpbnN0ZWFkIScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhIHBsdWctaW4gaW50byB0aGlzIFBsdWdpbkhvc3QuXG4gICAqXG4gICAqIEBwYXJhbSBtb2R1bGVTcGVjIHRoZSBzcGVjaWZpY2F0aW9uIChwYXRoIG9yIG5hbWUpIG9mIHRoZSBwbHVnLWluIG1vZHVsZSB0byBiZSBsb2FkZWQuXG4gICAqL1xuICBwdWJsaWMgbG9hZChtb2R1bGVTcGVjOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqL1xuICAgICAgY29uc3QgcGx1Z2luID0gcmVxdWlyZShtb2R1bGVTcGVjKTtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgKi9cbiAgICAgIGlmICghaXNQbHVnaW4ocGx1Z2luKSkge1xuICAgICAgICBlcnJvcihgTW9kdWxlICR7Y2hhbGsuZ3JlZW4obW9kdWxlU3BlYyl9IGlzIG5vdCBhIHZhbGlkIHBsdWctaW4sIG9yIGhhcyBhbiB1bnN1cHBvcnRlZCB2ZXJzaW9uLmApO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZHVsZSAke21vZHVsZVNwZWN9IGRvZXMgbm90IGRlZmluZSBhIHZhbGlkIHBsdWctaW4uYCk7XG4gICAgICB9XG4gICAgICBpZiAocGx1Z2luLmluaXQpIHsgcGx1Z2luLmluaXQoUGx1Z2luSG9zdC5pbnN0YW5jZSk7IH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJvcihgVW5hYmxlIHRvIGxvYWQgJHtjaGFsay5ncmVlbihtb2R1bGVTcGVjKX06ICR7ZS5zdGFja31gKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgcGx1Zy1pbjogJHttb2R1bGVTcGVjfWApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUGx1Z2luKHg6IGFueSk6IHggaXMgUGx1Z2luIHtcbiAgICAgIHJldHVybiB4ICE9IG51bGwgJiYgeC52ZXJzaW9uID09PSAnMSc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyBwbHVnLWlucyB0byByZWdpc3RlciBuZXcgQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlcy5cbiAgICpcbiAgICogQHBhcmFtIHNvdXJjZSBhIG5ldyBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2UgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2Uoc291cmNlOiBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2UpIHtcbiAgICB0aGlzLmNyZWRlbnRpYWxQcm92aWRlclNvdXJjZXMucHVzaChzb3VyY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIChFWFBFUklNRU5UQUwpIEFsbG93IHBsdWdpbnMgdG8gcmVnaXN0ZXIgY29udGV4dCBwcm92aWRlcnNcbiAgICpcbiAgICogQ29udGV4dCBwcm92aWRlcnMgYXJlIG9iamVjdHMgd2l0aCB0aGUgZm9sbG93aW5nIG1ldGhvZDpcbiAgICpcbiAgICogYGBgdHNcbiAgICogICBnZXRWYWx1ZShhcmdzOiB7W2tleTogc3RyaW5nXTogYW55fSk6IFByb21pc2U8YW55PjtcbiAgICogYGBgXG4gICAqXG4gICAqIEN1cnJlbnRseSwgdGhleSBjYW5ub3QgcmV1c2UgdGhlIENESydzIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbXMsIHNvIHRoZXlcbiAgICogbXVzdCBiZSBwcmVwYXJlZCB0byBlaXRoZXIgbm90IG1ha2UgQVdTIGNhbGxzIG9yIHVzZSB0aGVpciBvd24gc291cmNlIG9mXG4gICAqIEFXUyBjcmVkZW50aWFscy5cbiAgICpcbiAgICogVGhpcyBmZWF0dXJlIGlzIGV4cGVyaW1lbnRhbCwgYW5kIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbnRlcm5hbGx5IGF0IEFtYXpvblxuICAgKiBhcyBhIHRyaWFsLlxuICAgKlxuICAgKiBBZnRlciByZWdpc3RlcmluZyB3aXRoICdteS1wbHVnaW4tbmFtZScsIHRoZSBwcm92aWRlciBtdXN0IGJlIGFkZHJlc3NlZCBhcyBmb2xsb3dzOlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBjb25zdCB2YWx1ZSA9IENvbnRleHRQcm92aWRlci5nZXRWYWx1ZSh0aGlzLCB7XG4gICAqICAgcHJvdmlkZXJOYW1lOiAncGx1Z2luJyxcbiAgICogICBwcm9wczoge1xuICAgKiAgICAgcGx1Z2luTmFtZTogJ215LXBsdWdpbi1uYW1lJyxcbiAgICogICAgIG15UGFyYW1ldGVyMTogJ3h5eicsXG4gICAqICAgfSxcbiAgICogICBpbmNsdWRlRW52aXJvbm1lbnQ6IHRydWUgfCBmYWxzZSxcbiAgICogICBkdW1teVZhbHVlOiAnd2hhdC10by1yZXR1cm4tb24tdGhlLWZpcnN0LXBhc3MnLFxuICAgKiB9KVxuICAgKiBgYGBcbiAgICpcbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQ29udGV4dFByb3ZpZGVyQWxwaGEocGx1Z2luUHJvdmlkZXJOYW1lOiBzdHJpbmcsIHByb3ZpZGVyOiBDb250ZXh0UHJvdmlkZXJQbHVnaW4pIHtcbiAgICBpZiAoIWlzQ29udGV4dFByb3ZpZGVyUGx1Z2luKHByb3ZpZGVyKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBPYmplY3QgeW91IGdhdmUgbWUgZG9lcyBub3QgbG9vayBsaWtlIGEgQ29udGV4dFByb3ZpZGVyUGx1Z2luOiAke2luc3BlY3QocHJvdmlkZXIpfWApO1xuICAgIH1cbiAgICByZWdpc3RlclBsdWdpbkNvbnRleHRQcm92aWRlcihwbHVnaW5Qcm92aWRlck5hbWUsIHByb3ZpZGVyKTtcbiAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
1
  import * as cxapi from '@aws-cdk/cx-api';
2
2
  import * as cdk_assets from 'cdk-assets';
3
- import { SdkProvider } from '../api';
3
+ import { SdkProvider } from '../api/aws-auth/sdk-provider';
4
4
  /**
5
5
  * Use cdk-assets to publish all assets in the given manifest.
6
6
  */
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.publishAssets = void 0;
4
4
  const cxapi = require("@aws-cdk/cx-api");
5
5
  const cdk_assets = require("cdk-assets");
6
- const api_1 = require("../api");
6
+ const credentials_1 = require("../api/aws-auth/credentials");
7
7
  const logging_1 = require("../logging");
8
8
  /**
9
9
  * Use cdk-assets to publish all assets in the given manifest.
@@ -42,7 +42,7 @@ class PublishingAws {
42
42
  }
43
43
  async discoverPartition() {
44
44
  var _a;
45
- return (_a = (await this.aws.baseCredentialsPartition(this.targetEnv, api_1.Mode.ForWriting))) !== null && _a !== void 0 ? _a : 'aws';
45
+ return (_a = (await this.aws.baseCredentialsPartition(this.targetEnv, credentials_1.Mode.ForWriting))) !== null && _a !== void 0 ? _a : 'aws';
46
46
  }
47
47
  async discoverDefaultRegion() {
48
48
  return this.targetEnv.region;
@@ -84,7 +84,7 @@ class PublishingAws {
84
84
  if (maybeSdk) {
85
85
  return maybeSdk;
86
86
  }
87
- const sdk = (await this.aws.forEnvironment(env, api_1.Mode.ForWriting, {
87
+ const sdk = (await this.aws.forEnvironment(env, credentials_1.Mode.ForWriting, {
88
88
  assumeRoleArn: options.assumeRoleArn,
89
89
  assumeRoleExternalId: options.assumeRoleExternalId,
90
90
  })).sdk;
@@ -108,4 +108,4 @@ class PublishingProgressListener {
108
108
  EVENT_TO_LOGGER[type](`[${event.percentComplete}%] ${type}: ${event.message}`);
109
109
  }
110
110
  }
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcHVibGlzaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFzc2V0LXB1Ymxpc2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXlDO0FBRXpDLHlDQUF5QztBQUN6QyxnQ0FBaUQ7QUFDakQsd0NBQWlEO0FBRWpEOztHQUVHO0FBQ0ksS0FBSyxVQUFVLGFBQWEsQ0FBQyxRQUFrQyxFQUFFLEdBQWdCLEVBQUUsU0FBNEI7SUFDcEgsNkVBQTZFO0lBQzdFLCtFQUErRTtJQUMvRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLGVBQWU7V0FDN0UsU0FBUyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksU0FBUyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsY0FBYyxFQUFFO1FBQ2pGLE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQzVHO0lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRTtRQUN6RCxHQUFHLEVBQUUsSUFBSSxhQUFhLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQztRQUN0QyxnQkFBZ0IsRUFBRSxJQUFJLDBCQUEwQixFQUFFO1FBQ2xELFlBQVksRUFBRSxLQUFLO0tBQ3BCLENBQUMsQ0FBQztJQUNILE1BQU0sU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzFCLElBQUksU0FBUyxDQUFDLFdBQVcsRUFBRTtRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLDBGQUEwRixDQUFDLENBQUM7S0FDN0c7QUFDSCxDQUFDO0FBakJELHNDQWlCQztBQUVELE1BQU0sYUFBYTtJQUdqQjtJQUNFOztPQUVHO0lBQ2MsR0FBZ0I7SUFFakM7O09BRUc7SUFDYyxTQUE0QjtRQUw1QixRQUFHLEdBQUgsR0FBRyxD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WixLQUFLLEVBQUUsZUFBSztJQUNaLE9BQU8sRUFBRSxlQUFLO0lBQ2QsTUFBTSxFQUFFLGVBQUs7Q0FDZCxDQUFDO0FBRUYsTUFBTSwwQkFBMEI7SUFDdkIsY0FBYyxDQUFDLElBQTBCLEVBQUUsS0FBa0M7UUFDbEYsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLGVBQWUsTUFBTSxJQUFJLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCAqIGFzIEFXUyBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCAqIGFzIGNka19hc3NldHMgZnJvbSAnY2RrLWFzc2V0cyc7XG5pbXBvcnQgeyBJU0RLLCBNb2RlLCBTZGtQcm92aWRlciB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBkZWJ1ZywgZXJyb3IsIHByaW50IH0gZnJvbSAnLi4vbG9nZ2luZyc7XG5cbi8qKlxuICogVXNlIGNkay1hc3NldHMgdG8gcHVibGlzaCBhbGwgYXNzZXRzIGluIHRoZSBnaXZlbiBtYW5pZmVzdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHB1Ymxpc2hBc3NldHMobWFuaWZlc3Q6IGNka19hc3NldHMuQXNzZXRNYW5pZmVzdCwgc2RrOiBTZGtQcm92aWRlciwgdGFyZ2V0RW52OiBjeGFwaS5FbnZpcm9ubWVudCkge1xuICAvLyBUaGlzIHNob3VsZG4ndCByZWFsbHkgaGFwcGVuIChpdCdzIGEgcHJvZ3JhbW1pbmcgZXJyb3IpLCBidXQgd2UgZG9uJ3QgaGF2ZVxuICAvLyB0aGUgdHlwZXMgaGVyZSB0byBndWlkZSB1cy4gRG8gYW4gcnVudGltZSB2YWxpZGF0aW9uIHRvIGJlIHN1cGVyIHN1cGVyIHN1cmUuXG4gIGlmICh0YXJnZXRFbnYuYWNjb3VudCA9PT0gdW5kZWZpbmVkIHx8IHRhcmdldEVudi5hY2NvdW50ID09PSBjeGFwaS5VTktOT1dOX0FDQ09VTlRcbiAgICB8fCB0YXJnZXRFbnYucmVnaW9uID09PSB1bmRlZmluZWQgfHwgdGFyZ2V0RW52LmFjY291bnQgPT09IGN4YXBpLlVOS05PV05fUkVHSU9OKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBBc3NldCBwdWJsaXNoaW5nIHJlcXVpcmVzIHJlc29sdmVkIGFjY291bnQgYW5kIHJlZ2lvbiwgZ290ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0RW52KX1gKTtcbiAgfVxuXG4gIGNvbnN0IHB1Ymxpc2hlciA9IG5ldyBjZGtfYXNzZXRzLkFzc2V0UHVibGlzaGluZyhtYW5pZmVzdCwge1xuICAgIGF3czogbmV3IFB1Ymxpc2hpbmdBd3Moc2RrLCB0YXJnZXRFbnYpLFxuICAgIHByb2dyZXNzTGlzdGVuZXI6IG5ldyBQdWJsaXNoaW5nUHJvZ3Jlc3NMaXN0ZW5lcigpLFxuICAgIHRocm93T25FcnJvcjogZmFsc2UsXG4gIH0pO1xuICBhd2FpdCBwdWJsaXNoZXIucHVibGlzaCgpO1xuICBpZiAocHVibGlzaGVyLmhhc0ZhaWx1cmVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gcHVibGlzaCBvbmUgb3IgbW9yZSBhc3NldHMuIFNlZSB0aGUgZXJyb3IgbWVzc2FnZXMgYWJvdmUgZm9yIG1vcmUgaW5mb3JtYXRpb24uJyk7XG4gIH1cbn1cblxuY2xhc3MgUHVibGlzaGluZ0F3cyBpbXBsZW1lbnRzIGNka19hc3NldHMuSUF3cyB7XG4gIHByaXZhdGUgc2RrQ2FjaGU6IE1hcDxTdHJpbmcsIElTREs+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIFNESyB0byB3b3JrIHdpdGhcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGF3czogU2RrUHJvdmlkZXIsXG5cbiAgICAvKipcbiAgICAgKiBFbnZpcm9ubWVudCB3aGVyZSB0aGUgc3RhY2sgd2UncmUgZGVwbG95aW5nIGlzIGdvaW5nXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXRFbnY6IGN4YXBpLkVudmlyb25tZW50KSB7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGlzY292ZXJQYXJ0aXRpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuYXdzLmJhc2VDcmVkZW50aWFsc1BhcnRpdGlvbih0aGlzLnRhcmdldEVudiwgTW9kZS5Gb3JXcml0aW5nKSkgPz8gJ2F3cyc7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGlzY292ZXJEZWZhdWx0UmVnaW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMudGFyZ2V0RW52LnJlZ2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkaXNjb3ZlckN1cnJlbnRBY2NvdW50KCk6IFByb21pc2U8Y2RrX2Fzc2V0cy5BY2NvdW50PiB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IHRoaXMuYXdzLmRlZmF1bHRBY2NvdW50KCk7XG4gICAgcmV0dXJuIGFjY291bnQgPz8ge1xuICAgICAgYWNjb3VudElkOiAnPHVua25vd24gYWNjb3VudD4nLFxuICAgICAgcGFydGl0aW9uOiAnYXdzJyxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRpc2NvdmVyVGFyZ2V0QWNjb3VudChvcHRpb25zOiBjZGtfYXNzZXRzLkNsaWVudE9wdGlvbnMpOiBQcm9taXNlPGNka19hc3NldHMuQWNjb3VudD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zZGsob3B0aW9ucykpLmN1cnJlbnRBY2NvdW50KCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgczNDbGllbnQob3B0aW9uczogY2RrX2Fzc2V0cy5DbGllbnRPcHRpb25zKTogUHJvbWlzZTxBV1MuUzM+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuc2RrKG9wdGlvbnMpKS5zMygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVjckNsaWVudChvcHRpb25zOiBjZGtfYXNzZXRzLkNsaWVudE9wdGlvbnMpOiBQcm9taXNlPEFXUy5FQ1I+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuc2RrKG9wdGlvbnMpKS5lY3IoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZWNyZXRzTWFuYWdlckNsaWVudChvcHRpb25zOiBjZGtfYXNzZXRzLkNsaWVudE9wdGlvbnMpOiBQcm9taXNlPEFXUy5TZWNyZXRzTWFuYWdlcj4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zZGsob3B0aW9ucykpLnNlY3JldHNNYW5hZ2VyKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIFNESyBhcHByb3ByaWF0ZSBmb3IgdGhlIGdpdmVuIGNsaWVudCBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHNkayhvcHRpb25zOiBjZGtfYXNzZXRzLkNsaWVudE9wdGlvbnMpOiBQcm9taXNlPElTREs+IHtcbiAgICBjb25zdCBlbnYgPSB7XG4gICAgICAuLi50aGlzLnRhcmdldEVudixcbiAgICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24gPz8gdGhpcy50YXJnZXRFbnYucmVnaW9uLCAvLyBEZWZhdWx0OiBzYW1lIHJlZ2lvbiBhcyB0aGUgc3RhY2tcbiAgICB9O1xuXG4gICAgY29uc3QgY2FjaGVLZXkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBlbnYsIC8vIHJlZ2lvbiwgbmFtZSwgYWNjb3VudFxuICAgICAgYXNzdW1lUnVsZUFybjogb3B0aW9ucy5hc3N1bWVSb2xlQXJuLFxuICAgICAgYXNzdW1lUm9sZUV4dGVybmFsSWQ6IG9wdGlvbnMuYXNzdW1lUm9sZUV4dGVybmFsSWQsXG4gICAgfSk7XG5cbiAgICBjb25zdCBtYXliZVNkayA9IHRoaXMuc2RrQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICBpZiAobWF5YmVTZGspIHtcbiAgICAgIHJldHVybiBtYXliZVNkaztcbiAgICB9XG5cbiAgICBjb25zdCBzZGsgPSAoYXdhaXQgdGhpcy5hd3MuZm9yRW52aXJvbm1lbnQoZW52LCBNb2RlLkZvcldyaXRpbmcsIHtcbiAgICAgIGFzc3VtZVJvbGVBcm46IG9wdGlvbnMuYXNzdW1lUm9sZUFybixcbiAgICAgIGFzc3VtZVJvbGVFeHRlcm5hbElkOiBvcHRpb25zLmFzc3VtZVJvbGVFeHRlcm5hbElkLFxuICAgIH0pKS5zZGs7XG4gICAgdGhpcy5zZGtDYWNoZS5zZXQoY2FjaGVLZXksIHNkayk7XG5cbiAgICByZXR1cm4gc2RrO1xuICB9XG59XG5cbmNvbnN0IEVWRU5UX1RPX0xPR0dFUjogUmVjb3JkPGNka19hc3NldHMuRXZlbnRUeXBlLCAoeDogc3RyaW5nKSA9PiB2b2lkPiA9IHtcbiAgYnVpbGQ6IGRlYnVnLFxuICBjYWNoZWQ6IGRlYnVnLFxuICBjaGVjazogZGVidWcsXG4gIGRlYnVnLFxuICBmYWlsOiBlcnJvcixcbiAgZm91bmQ6IGRlYnVnLFxuICBzdGFydDogcHJpbnQsXG4gIHN1Y2Nlc3M6IHByaW50LFxuICB1cGxvYWQ6IGRlYnVnLFxufTtcblxuY2xhc3MgUHVibGlzaGluZ1Byb2dyZXNzTGlzdGVuZXIgaW1wbGVtZW50cyBjZGtfYXNzZXRzLklQdWJsaXNoUHJvZ3Jlc3NMaXN0ZW5lciB7XG4gIHB1YmxpYyBvblB1Ymxpc2hFdmVudCh0eXBlOiBjZGtfYXNzZXRzLkV2ZW50VHlwZSwgZXZlbnQ6IGNka19hc3NldHMuSVB1Ymxpc2hQcm9ncmVzcyk6IHZvaWQge1xuICAgIEVWRU5UX1RPX0xPR0dFUlt0eXBlXShgWyR7ZXZlbnQucGVyY2VudENvbXBsZXRlfSVdICR7dHlwZX06ICR7ZXZlbnQubWVzc2FnZX1gKTtcbiAgfVxufVxuIl19
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcHVibGlzaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFzc2V0LXB1Ymxpc2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXlDO0FBRXpDLHlDQUF5QztBQUN6Qyw2REFBbUQ7QUFHbkQsd0NBQWlEO0FBRWpEOztHQUVHO0FBQ0ksS0FBSyxVQUFVLGFBQWEsQ0FBQyxRQUFrQyxFQUFFLEdBQWdCLEVBQUUsU0FBNEI7SUFDcEgsNkVBQTZFO0lBQzdFLCtFQUErRTtJQUMvRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLGVBQWU7V0FDN0UsU0FBUyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksU0FBUyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsY0FBYyxFQUFFO1FBQ2pGLE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQzVHO0lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRTtRQUN6RCxHQUFHLEVBQUUsSUFBSSxhQUFhLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQztRQUN0QyxnQkFBZ0IsRUFBRSxJQUFJLDBCQUEwQixFQUFFO1FBQ2xELFlBQVksRUFBRSxLQUFLO0tBQ3BCLENBQUMsQ0FBQztJQUNILE1BQU0sU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzFCLElBQUksU0FBUyxDQUFDLFdBQVcsRUFBRTtRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLDBGQUEwRixDQUFDLENBQUM7S0FDN0c7QUFDSCxDQUFDO0FBakJELHNDQWlCQztBQUVELE1BQU0sYUFBYTtJQUdqQjtJQUNFOztPQUVHO0lBQ2MsR0FBZ0I7SUFFakM7O09BRUc7SUFDYyxTQUE0QjtRQUw1QixRQUFHLEdBQUgsR0FBRyxD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QUNaLEtBQUssRUFBRSxlQUFLO0lBQ1osT0FBTyxFQUFFLGVBQUs7SUFDZCxNQUFNLEVBQUUsZUFBSztDQUNkLENBQUM7QUFFRixNQUFNLDBCQUEwQjtJQUN2QixjQUFjLENBQUMsSUFBMEIsRUFBRSxLQUFrQztRQUNsRixlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsZUFBZSxNQUFNLElBQUksS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNqRixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0ICogYXMgY2RrX2Fzc2V0cyBmcm9tICdjZGstYXNzZXRzJztcbmltcG9ydCB7IE1vZGUgfSBmcm9tICcuLi9hcGkvYXdzLWF1dGgvY3JlZGVudGlhbHMnO1xuaW1wb3J0IHsgSVNESyB9IGZyb20gJy4uL2FwaS9hd3MtYXV0aC9zZGsnO1xuaW1wb3J0IHsgU2RrUHJvdmlkZXIgfSBmcm9tICcuLi9hcGkvYXdzLWF1dGgvc2RrLXByb3ZpZGVyJztcbmltcG9ydCB7IGRlYnVnLCBlcnJvciwgcHJpbnQgfSBmcm9tICcuLi9sb2dnaW5nJztcblxuLyoqXG4gKiBVc2UgY2RrLWFzc2V0cyB0byBwdWJsaXNoIGFsbCBhc3NldHMgaW4gdGhlIGdpdmVuIG1hbmlmZXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVibGlzaEFzc2V0cyhtYW5pZmVzdDogY2RrX2Fzc2V0cy5Bc3NldE1hbmlmZXN0LCBzZGs6IFNka1Byb3ZpZGVyLCB0YXJnZXRFbnY6IGN4YXBpLkVudmlyb25tZW50KSB7XG4gIC8vIFRoaXMgc2hvdWxkbid0IHJlYWxseSBoYXBwZW4gKGl0J3MgYSBwcm9ncmFtbWluZyBlcnJvciksIGJ1dCB3ZSBkb24ndCBoYXZlXG4gIC8vIHRoZSB0eXBlcyBoZXJlIHRvIGd1aWRlIHVzLiBEbyBhbiBydW50aW1lIHZhbGlkYXRpb24gdG8gYmUgc3VwZXIgc3VwZXIgc3VyZS5cbiAgaWYgKHRhcmdldEVudi5hY2NvdW50ID09PSB1bmRlZmluZWQgfHwgdGFyZ2V0RW52LmFjY291bnQgPT09IGN4YXBpLlVOS05PV05fQUNDT1VOVFxuICAgIHx8IHRhcmdldEVudi5yZWdpb24gPT09IHVuZGVmaW5lZCB8fCB0YXJnZXRFbnYuYWNjb3VudCA9PT0gY3hhcGkuVU5LTk9XTl9SRUdJT04pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2V0IHB1Ymxpc2hpbmcgcmVxdWlyZXMgcmVzb2x2ZWQgYWNjb3VudCBhbmQgcmVnaW9uLCBnb3QgJHtKU09OLnN0cmluZ2lmeSh0YXJnZXRFbnYpfWApO1xuICB9XG5cbiAgY29uc3QgcHVibGlzaGVyID0gbmV3IGNka19hc3NldHMuQXNzZXRQdWJsaXNoaW5nKG1hbmlmZXN0LCB7XG4gICAgYXdzOiBuZXcgUHVibGlzaGluZ0F3cyhzZGssIHRhcmdldEVudiksXG4gICAgcHJvZ3Jlc3NMaXN0ZW5lcjogbmV3IFB1Ymxpc2hpbmdQcm9ncmVzc0xpc3RlbmVyKCksXG4gICAgdGhyb3dPbkVycm9yOiBmYWxzZSxcbiAgfSk7XG4gIGF3YWl0IHB1Ymxpc2hlci5wdWJsaXNoKCk7XG4gIGlmIChwdWJsaXNoZXIuaGFzRmFpbHVyZXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoIG9uZSBvciBtb3JlIGFzc2V0cy4gU2VlIHRoZSBlcnJvciBtZXNzYWdlcyBhYm92ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKTtcbiAgfVxufVxuXG5jbGFzcyBQdWJsaXNoaW5nQXdzIGltcGxlbWVudHMgY2RrX2Fzc2V0cy5JQXdzIHtcbiAgcHJpdmF0ZSBzZGtDYWNoZTogTWFwPFN0cmluZywgSVNESz4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgU0RLIHRvIHdvcmsgd2l0aFxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXdzOiBTZGtQcm92aWRlcixcblxuICAgIC8qKlxuICAgICAqIEVudmlyb25tZW50IHdoZXJlIHRoZSBzdGFjayB3ZSdyZSBkZXBsb3lpbmcgaXMgZ29pbmdcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldEVudjogY3hhcGkuRW52aXJvbm1lbnQpIHtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkaXNjb3ZlclBhcnRpdGlvbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5hd3MuYmFzZUNyZWRlbnRpYWxzUGFydGl0aW9uKHRoaXMudGFyZ2V0RW52LCBNb2RlLkZvcldyaXRpbmcpKSA/PyAnYXdzJztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkaXNjb3ZlckRlZmF1bHRSZWdpb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy50YXJnZXRFbnYucmVnaW9uO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRpc2NvdmVyQ3VycmVudEFjY291bnQoKTogUHJvbWlzZTxjZGtfYXNzZXRzLkFjY291bnQ+IHtcbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgdGhpcy5hd3MuZGVmYXVsdEFjY291bnQoKTtcbiAgICByZXR1cm4gYWNjb3VudCA/PyB7XG4gICAgICBhY2NvdW50SWQ6ICc8dW5rbm93biBhY2NvdW50PicsXG4gICAgICBwYXJ0aXRpb246ICdhd3MnLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGlzY292ZXJUYXJnZXRBY2NvdW50KG9wdGlvbnM6IGNka19hc3NldHMuQ2xpZW50T3B0aW9ucyk6IFByb21pc2U8Y2RrX2Fzc2V0cy5BY2NvdW50PiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnNkayhvcHRpb25zKSkuY3VycmVudEFjY291bnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzM0NsaWVudChvcHRpb25zOiBjZGtfYXNzZXRzLkNsaWVudE9wdGlvbnMpOiBQcm9taXNlPEFXUy5TMz4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zZGsob3B0aW9ucykpLnMzKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZWNyQ2xpZW50KG9wdGlvbnM6IGNka19hc3NldHMuQ2xpZW50T3B0aW9ucyk6IFByb21pc2U8QVdTLkVDUj4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zZGsob3B0aW9ucykpLmVjcigpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlY3JldHNNYW5hZ2VyQ2xpZW50KG9wdGlvbnM6IGNka19hc3NldHMuQ2xpZW50T3B0aW9ucyk6IFByb21pc2U8QVdTLlNlY3JldHNNYW5hZ2VyPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnNkayhvcHRpb25zKSkuc2VjcmV0c01hbmFnZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gU0RLIGFwcHJvcHJpYXRlIGZvciB0aGUgZ2l2ZW4gY2xpZW50IG9wdGlvbnNcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgc2RrKG9wdGlvbnM6IGNka19hc3NldHMuQ2xpZW50T3B0aW9ucyk6IFByb21pc2U8SVNESz4ge1xuICAgIGNvbnN0IGVudiA9IHtcbiAgICAgIC4uLnRoaXMudGFyZ2V0RW52LFxuICAgICAgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbiA/PyB0aGlzLnRhcmdldEVudi5yZWdpb24sIC8vIERlZmF1bHQ6IHNhbWUgcmVnaW9uIGFzIHRoZSBzdGFja1xuICAgIH07XG5cbiAgICBjb25zdCBjYWNoZUtleSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGVudiwgLy8gcmVnaW9uLCBuYW1lLCBhY2NvdW50XG4gICAgICBhc3N1bWVSdWxlQXJuOiBvcHRpb25zLmFzc3VtZVJvbGVBcm4sXG4gICAgICBhc3N1bWVSb2xlRXh0ZXJuYWxJZDogb3B0aW9ucy5hc3N1bWVSb2xlRXh0ZXJuYWxJZCxcbiAgICB9KTtcblxuICAgIGNvbnN0IG1heWJlU2RrID0gdGhpcy5zZGtDYWNoZS5nZXQoY2FjaGVLZXkpO1xuICAgIGlmIChtYXliZVNkaykge1xuICAgICAgcmV0dXJuIG1heWJlU2RrO1xuICAgIH1cblxuICAgIGNvbnN0IHNkayA9IChhd2FpdCB0aGlzLmF3cy5mb3JFbnZpcm9ubWVudChlbnYsIE1vZGUuRm9yV3JpdGluZywge1xuICAgICAgYXNzdW1lUm9sZUFybjogb3B0aW9ucy5hc3N1bWVSb2xlQXJuLFxuICAgICAgYXNzdW1lUm9sZUV4dGVybmFsSWQ6IG9wdGlvbnMuYXNzdW1lUm9sZUV4dGVybmFsSWQsXG4gICAgfSkpLnNkaztcbiAgICB0aGlzLnNka0NhY2hlLnNldChjYWNoZUtleSwgc2RrKTtcblxuICAgIHJldHVybiBzZGs7XG4gIH1cbn1cblxuY29uc3QgRVZFTlRfVE9fTE9HR0VSOiBSZWNvcmQ8Y2RrX2Fzc2V0cy5FdmVudFR5cGUsICh4OiBzdHJpbmcpID0+IHZvaWQ+ID0ge1xuICBidWlsZDogZGVidWcsXG4gIGNhY2hlZDogZGVidWcsXG4gIGNoZWNrOiBkZWJ1ZyxcbiAgZGVidWcsXG4gIGZhaWw6IGVycm9yLFxuICBmb3VuZDogZGVidWcsXG4gIHN0YXJ0OiBwcmludCxcbiAgc3VjY2VzczogcHJpbnQsXG4gIHVwbG9hZDogZGVidWcsXG59O1xuXG5jbGFzcyBQdWJsaXNoaW5nUHJvZ3Jlc3NMaXN0ZW5lciBpbXBsZW1lbnRzIGNka19hc3NldHMuSVB1Ymxpc2hQcm9ncmVzc0xpc3RlbmVyIHtcbiAgcHVibGljIG9uUHVibGlzaEV2ZW50KHR5cGU6IGNka19hc3NldHMuRXZlbnRUeXBlLCBldmVudDogY2RrX2Fzc2V0cy5JUHVibGlzaFByb2dyZXNzKTogdm9pZCB7XG4gICAgRVZFTlRfVE9fTE9HR0VSW3R5cGVdKGBbJHtldmVudC5wZXJjZW50Q29tcGxldGV9JV0gJHt0eXBlfTogJHtldmVudC5tZXNzYWdlfWApO1xuICB9XG59XG4iXX0=